NETLOGO TOY MODEL

TODO

Producing csv outputs

You could produce csv outputs of Netlogo MeatModel using Netlogo interface by opening the ./toy/PicSaintLoup/MeatModel-V5 model, running some experiments, and when you’re donne, clic on the button save-csv.

If you have sbt build engine installed on your computer you could also run this headless script by running this chunk directly from R/RStudio.

./toy/PicSaintLoup/MeatModel-V5 folder.

Producing explorations

TO LONG DATA AGE

TO LONG DATA EDU

TO LONG DATA SEX

FAT MODEL

Exploring scenarii

random residential scenario 1

maxProbaToSwitch constraintsStrength inertiaCoefficient healthyDietReward seed
0.8 0.05 0.5 0.4 42

survey residential scenario 2

maxProbaToSwitch constraintsStrength inertiaCoefficient healthyDietReward seed
0.8 0.05 0.5 0.4 42

random activity scenario 3

maxProbaToSwitch constraintsStrength inertiaCoefficient healthyDietReward seed
0.8 0.5 0.5 0.4 42

survey activity scenario 4

maxProbaToSwitch constraintsStrength inertiaCoefficient healthyDietReward seed
0.8 0.05 0.5 0.4 42
LS0tCnRpdGxlOiAiRXhwbG9yaW5nIE1lYXQgdG95IG1vZGVsIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KHJlc2hhcGUyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KG1hZ3JpdHRyKQpsaWJyYXJ5KHBseXIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShtYWdyaXR0cikKYGBgCgogCiMgTkVUTE9HTyBUT1kgTU9ERUwKCl9fVE9ET19fCgotIGNoYW5nZXIgbGUgc2NyaXB0IHNjYWxhIHBvdXIgcGFzc2VyIGRlcyBwYXJhbWV0cmVzIGRpcmVjdGVtZW50IGRlcHVpcyBsZSBub3RlYm9vayAhCi0gcHJlbmRyZSBlbiBzb3J0ZSBsZSBmYWl0IHF1J29uIGEgMyBkb25uw6llcyBwYXIgcGFzIGRlIHRlbXBzIGRhbnMgbGUgZ3JhcGhpcXVlIAoKIyMgUHJvZHVjaW5nIGNzdiBvdXRwdXRzCgpZb3UgY291bGQgcHJvZHVjZSBjc3Ygb3V0cHV0cyBvZiBOZXRsb2dvIE1lYXRNb2RlbCB1c2luZyBOZXRsb2dvIGludGVyZmFjZSBieSBvcGVuaW5nIHRoZSBgLi90b3kvUGljU2FpbnRMb3VwL01lYXRNb2RlbC1WNWAgbW9kZWwsIHJ1bm5pbmcgc29tZSBleHBlcmltZW50cywgYW5kIHdoZW4geW91J3JlIGRvbm5lLCBjbGljIG9uIHRoZSBidXR0b24gc2F2ZS1jc3YuIAoKSWYgeW91IGhhdmUgYHNidGAgYnVpbGQgZW5naW5lIGluc3RhbGxlZCBvbiB5b3VyIGNvbXB1dGVyIHlvdSBjb3VsZCBhbHNvIHJ1biB0aGlzIGhlYWRsZXNzIHNjcmlwdCBieSBydW5uaW5nIHRoaXMgY2h1bmsgZGlyZWN0bHkgZnJvbSBSL1JTdHVkaW8uIAoKYC4vdG95L1BpY1NhaW50TG91cC9NZWF0TW9kZWwtVjVgIGZvbGRlci4gCmBgYHtiYXNoLCBpbmNsdWRlPUZBTFNFfQpjZCAuLi90b3kvUGljU2FpbnRMb3VwLwpzYnQgcnVuCmBgYAoKIyMgUHJvZHVjaW5nIGV4cGxvcmF0aW9ucwoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CmFwcGFyaWUgPC0gcmVhZF9jc3YoIi4uL3RveS9QaWNTYWludExvdXAvbW9kZWxzL291dHB1dHMvYXBwYXJpZS5jc3YiLGNvbF9uYW1lcyA9IEZBTFNFKSAKdm9pc2lucyA8LSByZWFkX2NzdigiLi4vdG95L1BpY1NhaW50TG91cC9tb2RlbHMvb3V0cHV0cy92b2lzaW5zLmNzdiIsY29sX25hbWVzID0gRkFMU0UpIApvcGluaW9uIDwtIHJlYWRfY3N2KCIuLi90b3kvUGljU2FpbnRMb3VwL21vZGVscy9vdXRwdXRzL29waW5pb24uY3N2Iixjb2xfbmFtZXMgPSBGQUxTRSkgCgphcHBhcmllJFg1IDwtICBnc3ViKCJcXFt8XFxdIiwgIiIsIGFwcGFyaWUkWDUpCnZvaXNpbnMkWDUgPC0gZ3N1YigiXFxbfFxcXSIsICIiLCB2b2lzaW5zJFg1KQpvcGluaW9uJFg1IDwtIGdzdWIoIlxcW3xcXF0iLCAiIiwgb3BpbmlvbiRYNSkKCmwgPC0gc3Ryc3BsaXQoZmlyc3QoYXBwYXJpZSRYNSksIiAiICkKc2l6ZVNlcSA8LSBzZXEobGVuZ3RocyhsKSkKCmRmQXBwYXJpZSA8LSB3aXRoKGFwcGFyaWUsIGNiaW5kKFgxLFgyLFgzLFg0LCBjb2xzcGxpdChhcHBhcmllJFg1LCAiICIsIG5hbWVzID0gc2l6ZVNlcSkgKSkKCmRmVm9pc2lucyA8LSB3aXRoKHZvaXNpbnMsIGNiaW5kKFgxLFgyLFgzLFg0LCBjb2xzcGxpdCh2b2lzaW5zJFg1LCAiICIsIG5hbWVzID0gc2l6ZVNlcSkgKSkKCmRmT3BpbmlvbiA8LSB3aXRoKG9waW5pb24sIGNiaW5kKFgxLFgyLFgzLFg0LCBjb2xzcGxpdChvcGluaW9uJFg1LCAiICIsIG5hbWVzID0gc2l6ZVNlcSkgKSkKCm5hbWVzKGRmQXBwYXJpZSlbMV0gPC0gcGFzdGUoIndobyIpCm5hbWVzKGRmQXBwYXJpZSlbMl0gPC0gcGFzdGUoImFnZSIpCm5hbWVzKGRmQXBwYXJpZSlbM10gPC0gcGFzdGUoInNleCIpCm5hbWVzKGRmQXBwYXJpZSlbNF0gPC0gcGFzdGUoImVkdSIpCgpuYW1lcyhkZlZvaXNpbnMpWzFdIDwtIHBhc3RlKCJ3aG8iKQpuYW1lcyhkZlZvaXNpbnMpWzJdIDwtIHBhc3RlKCJhZ2UiKQpuYW1lcyhkZlZvaXNpbnMpWzNdIDwtIHBhc3RlKCJzZXgiKQpuYW1lcyhkZlZvaXNpbnMpWzRdIDwtIHBhc3RlKCJlZHUiKQoKbmFtZXMoZGZPcGluaW9uKVsxXSA8LSBwYXN0ZSgid2hvIikKbmFtZXMoZGZPcGluaW9uKVsyXSA8LSBwYXN0ZSgiYWdlIikKbmFtZXMoZGZPcGluaW9uKVszXSA8LSBwYXN0ZSgic2V4IikKbmFtZXMoZGZPcGluaW9uKVs0XSA8LSBwYXN0ZSgiZWR1IikKCmdEZkFwcGFyaWUgPC0gZ2F0aGVyKGRhdGEgPSBkZkFwcGFyaWUsIGtleSA9IHRpbWUsIHZhbHVlPSBuYiwgIGMoNTozNCkpCmdEZk9waW5pb24gPC0gZ2F0aGVyKGRmT3BpbmlvbiwgdGltZSwgVmFsdWVPcGluaW9uLCBjKDU6MzQpKQpnRGZWb2lzaW5zIDwtIGdhdGhlcihkZlZvaXNpbnMsIHRpbWUsIG5iVm9pc2lucywgYyg1OjM0KSkgCgpnZGZGaW5hbCA8LSBqb2luKGdEZkFwcGFyaWUsIGdEZk9waW5pb24sIGJ5PWMoIndobyIsImFnZSIsInNleCIsImVkdSIsInRpbWUiKSwgdHlwZT0iaW5uZXIiKQpnZGZGaW5hbCA8LSBqb2luKGdkZkZpbmFsLCBnRGZWb2lzaW5zLCBieT1jKCJ3aG8iLCJhZ2UiLCJzZXgiLCJlZHUiLCJ0aW1lIiksIHR5cGU9ImlubmVyIikKZ2RmRmluYWwkdGltZSA8LSBhcy5udW1lcmljKGdkZkZpbmFsJHRpbWUpCiAgCiNnZEZpbmFsU3Vic2V0IDwtIGdkZkZpbmFsW2dkZkZpbmFsJHRpbWUgPCAyMC4wLF0KCmdkRmluYWxCeUFnZV92YWx1ZU9waW5pb24gPC0gZ2RmRmluYWwgJT4lIGdyb3VwX2J5KGFnZSx0aW1lKSAlPiUKICBzdW1tYXJpc2VfZWFjaChmdW5zKG1lYW4pLCBWYWx1ZU9waW5pb24pCgpnZEZpbmFsQnlTZXhfdmFsdWVPcGluaW9uIDwtIGdkZkZpbmFsICU+JSBncm91cF9ieShzZXgsdGltZSkgJT4lCiAgc3VtbWFyaXNlX2VhY2goZnVucyhtZWFuKSwgVmFsdWVPcGluaW9uKQoKZ2RGaW5hbEJ5RWR1X3ZhbHVlT3BpbmlvbiA8LSBnZGZGaW5hbCAlPiUgZ3JvdXBfYnkoZWR1LHRpbWUpICU+JQogIHN1bW1hcmlzZV9lYWNoKGZ1bnMobWVhbiksIFZhbHVlT3BpbmlvbikKCgpnZEZpbmFsQnlBZ2VfbmJWb2lzaW4gPC0gZ2RmRmluYWwgJT4lIGdyb3VwX2J5KGFnZSx0aW1lKSAlPiUKICBzdW1tYXJpc2VfZWFjaChmdW5zKG1lYW4pLCBuYlZvaXNpbnMpCgpnZEZpbmFsQnlTZXhfbmJWb2lzaW4gPC0gZ2RmRmluYWwgJT4lIGdyb3VwX2J5KHNleCx0aW1lKSAlPiUKICBzdW1tYXJpc2VfZWFjaChmdW5zKG1lYW4pLCBuYlZvaXNpbnMpCgpnZEZpbmFsQnlFZHVfbmJWb2lzaW4gPC0gZ2RmRmluYWwgJT4lIGdyb3VwX2J5KGVkdSx0aW1lKSAlPiUKICBzdW1tYXJpc2VfZWFjaChmdW5zKG1lYW4pLCBuYlZvaXNpbnMpCgoKZ2RGaW5hbEJ5QWdlX2FwcGFyaWUgPC0gZ2RmRmluYWwgJT4lIGdyb3VwX2J5KGFnZSx0aW1lKSAlPiUKICBzdW1tYXJpc2VfZWFjaChmdW5zKG1lYW4pLCBuYikKCmdkRmluYWxCeVNleF9hcHBhcmllIDwtIGdkZkZpbmFsICU+JSBncm91cF9ieShzZXgsdGltZSkgJT4lCiAgc3VtbWFyaXNlX2VhY2goZnVucyhtZWFuKSwgbmIpCgpnZEZpbmFsQnlFZHVfYXBwYXJpZSA8LSBnZGZGaW5hbCAlPiUgZ3JvdXBfYnkoZWR1LHRpbWUpICU+JQogIHN1bW1hcmlzZV9lYWNoKGZ1bnMobWVhbiksIG5iKQpgYGAKCiMjIyBUTyBMT05HIERBVEEgQUdFCgpgYGB7ciwgd2FybmluZz1GQUxTRX0KZ2RmRmluYWxBZ2UgPC0gbWVyZ2UoZ2RGaW5hbEJ5QWdlX3ZhbHVlT3BpbmlvbiwgZ2RGaW5hbEJ5QWdlX25iVm9pc2luLCBieT1jKCJhZ2UiLCJ0aW1lIiksIHR5cGU9ImlubmVyIikKZ2RmRmluYWxBZ2UgPC0gbWVyZ2UoZ2RmRmluYWxBZ2UsIGdkRmluYWxCeUFnZV9hcHBhcmllLCBieT1jKCJhZ2UiLCJ0aW1lIiksIHR5cGU9ImlubmVyIikKCmdEZlRvTG9uZ0FnZSA8LSBnYXRoZXIoZ2RmRmluYWxBZ2UsIGZhY3RldXIsIHZhbHVlICwgYnk9YyhWYWx1ZU9waW5pb24sbmIsbmJWb2lzaW5zKSkKCnAgPC0gZ2dwbG90KGRhdGE9Z0RmVG9Mb25nQWdlLCBhZXMoeD10aW1lLCB5PXZhbHVlLCBncm91cD1hZ2UsIGZpbGw9YWdlLCBjb2xvdXI9YXMuY2hhcmFjdGVyKGFnZSkpKQpwIDwtIHAgKyBnZW9tX2xpbmUoc2l6ZT0xKSArIGZhY2V0X2dyaWQoZmFjdGV1ciB+IC4pICNzaG93LmxlZ2VuZCA9IEZBTFNFCnAKYGBgCgojIyMgVE8gTE9ORyBEQVRBIEVEVQoKYGBge3IsIHdhcm5pbmc9RkFMU0V9CmdkZkZpbmFsRWR1IDwtIG1lcmdlKGdkRmluYWxCeUVkdV92YWx1ZU9waW5pb24sIGdkRmluYWxCeUVkdV9uYlZvaXNpbiwgYnk9YygiZWR1IiwgInRpbWUiKSwgdHlwZT0iaW5uZXIiKQpnZGZGaW5hbEVkdSA8LSBtZXJnZShnZGZGaW5hbEVkdSwgZ2RGaW5hbEJ5RWR1X2FwcGFyaWUsIGJ5PWMoImVkdSIsInRpbWUiKSwgdHlwZT0iaW5uZXIiKQoKZ0RmVG9Mb25nRWR1IDwtIGdhdGhlcihnZGZGaW5hbEVkdSwgZmFjdGV1ciwgdmFsdWUgLCBieT1jKFZhbHVlT3BpbmlvbixuYixuYlZvaXNpbnMpKQoKcCA8LSBnZ3Bsb3QoZGF0YT1nRGZUb0xvbmdFZHUsIGFlcyh4PXRpbWUsIHk9dmFsdWUsIGdyb3VwPWVkdSwgZmlsbD1lZHUsIGNvbG91cj1hcy5jaGFyYWN0ZXIoZWR1KSkpCnAgPC0gcCArIGdlb21fbGluZShzaXplPTEpICsgZmFjZXRfZ3JpZChmYWN0ZXVyIH4gLikgI3Nob3cubGVnZW5kID0gRkFMU0UKcApgYGAKCiMjIyBUTyBMT05HIERBVEEgU0VYCgpgYGB7ciwgd2FybmluZz1GQUxTRX0KZ2RmRmluYWxTZXggPC0gbWVyZ2UoZ2RGaW5hbEJ5U2V4X3ZhbHVlT3BpbmlvbiwgZ2RGaW5hbEJ5U2V4X25iVm9pc2luLCBieT1jKCJzZXgiLCAidGltZSIpLCB0eXBlPSJpbm5lciIpCmdkZkZpbmFsU2V4IDwtIG1lcmdlKGdkZkZpbmFsU2V4LCBnZEZpbmFsQnlTZXhfYXBwYXJpZSwgYnk9Yygic2V4IiwidGltZSIpLCB0eXBlPSJpbm5lciIpCgpnRGZUb0xvbmdTZXggPC0gZ2F0aGVyKGdkZkZpbmFsU2V4LCBmYWN0ZXVyLCB2YWx1ZSAsIGJ5PWMoVmFsdWVPcGluaW9uLG5iLG5iVm9pc2lucykpCgpwIDwtIGdncGxvdChkYXRhPWdEZlRvTG9uZ1NleCwgYWVzKHg9dGltZSwgeT12YWx1ZSwgZ3JvdXA9c2V4LCBmaWxsPXNleCwgY29sb3VyPWFzLmNoYXJhY3RlcihzZXgpKSkKcCA8LSBwICsgZ2VvbV9saW5lKHNpemU9MSkgKyBmYWNldF9ncmlkKGZhY3RldXIgfiAuKSAjc2hvdy5sZWdlbmQgPSBGQUxTRQpwCmBgYAoKIyBGQVQgTU9ERUwgCgojIyBFeHBsb3Jpbmcgc2NlbmFyaWkKCiMgcmFuZG9tIHJlc2lkZW50aWFsIHNjZW5hcmlvIDEKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBtYXhQcm9iYVRvU3dpdGNoICAgIGNvbnN0cmFpbnRzU3RyZW5ndGggICAgICAgICBpbmVydGlhQ29lZmZpY2llbnQgICAgICAgICBoZWFsdGh5RGlldFJld2FyZCAgICAgICAgIHNlZWQKLS0tLS0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLQowLjggICAgICAgICAgICAgICAgICAwLjA1ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNSAgICAgICAgICAgICAgICAgICAgICAgIDAuNCAgICAgICAgICAgICAgICAgICAgICAgNDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgpgYGB7ciwgZmlnLndpZHRoPTEwfQpzb3J0aWVfc2MxIDwtIHJlYWRfY3N2KCIuLi9kYXRhL0NJU1QyMDE4L3JhbmRvbV9yZXNpZGVudGlhbF9zY2VuYXJpbzEvY3N2L2NhdGVnb3JpZXMuY3N2Iixjb2xfbmFtZXMgPSBUUlVFLCBjb2xfdHlwZXM9ICJubm5ubm5ubiIpCnNvcnRpZV9zYzEkcHJvcEhlYWx0aHkgPC0gc29ydGllX3NjMSRoZWFsdGh5IC8gc29ydGllX3NjMSRlZmZlY3RpdmUgCiAgCnNvcnRpZUxvbmdfc2MxIDwtIGdhdGhlcihzb3J0aWVfc2MxLCBmYWN0ZXVyLCB2YWxldXIsIGJ5PWMocHJvcEhlYWx0aHksYXZnT3BpbmlvbikgKSAKCnNvcnRpZUxvbmdfc2MxIDwtIG11dGF0ZShzb3J0aWVMb25nX3NjMSwgImRzIiA9IGdzdWIoIiAiLCAiIiwgcGFzdGUocGFzdGUoIlsiLHBhc3RlKHNvcnRpZUxvbmdfc2MxJGRheSwgc29ydGllTG9uZ19zYzEkc2xpY2UpKSwiXSIpKSkKCnAgPC0gZ2dwbG90KGRhdGE9c29ydGllTG9uZ19zYzEsIGFlcyh4PWRzLCB5PXZhbGV1ciwgZ3JvdXA9ZWR1YywgZmlsbD1lZHVjLCBjb2xvdXI9YXMuY2hhcmFjdGVyKGVkdWMpKSkKcCA8LSBwICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKQpwIDwtIHAgKyBnZW9tX2xpbmUoc2l6ZT0wLjUpICsgZmFjZXRfZ3JpZChmYWN0ZXVyIH4gc2V4IH4gYWdlKSAjc2hvdy5sZWdlbmQgPSBGQUxTRQpwCmBgYAoKIyBzdXJ2ZXkgcmVzaWRlbnRpYWwgc2NlbmFyaW8gMgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG1heFByb2JhVG9Td2l0Y2ggICAgY29uc3RyYWludHNTdHJlbmd0aCAgICAgICAgIGluZXJ0aWFDb2VmZmljaWVudCAgICAgICAgIGhlYWx0aHlEaWV0UmV3YXJkICAgICAgICAgc2VlZAotLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0tCjAuOCAgICAgICAgICAgICAgICAgIDAuMDUgICAgICAgICAgICAgICAgICAgICAgICAgMC41ICAgICAgICAgICAgICAgICAgICAgICAgMC40ICAgICAgICAgICAgICAgICAgICAgICA0MgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgpgYGB7ciwgZmlnLndpZHRoPTEwfQpzb3J0aWVfc2MyIDwtIHJlYWRfY3N2KCIuLi9kYXRhL0NJU1QyMDE4L3N1cnZleV9yZXNpZGVudGlhbF9zY2VuYXJpbzIvY3N2L2NhdGVnb3JpZXMuY3N2Iixjb2xfbmFtZXMgPSBUUlVFLCBjb2xfdHlwZXM9ICJubm5ubm5ubiIpCnNvcnRpZV9zYzIkcHJvcEhlYWx0aHkgPC0gc29ydGllX3NjMiRoZWFsdGh5IC8gc29ydGllX3NjMiRlZmZlY3RpdmUgCiAgCnNvcnRpZUxvbmdfc2MyIDwtIGdhdGhlcihzb3J0aWVfc2MyLCBmYWN0ZXVyLCB2YWxldXIsIGJ5PWMocHJvcEhlYWx0aHksYXZnT3BpbmlvbikgKSAKCnNvcnRpZUxvbmdfc2MyIDwtIG11dGF0ZShzb3J0aWVMb25nX3NjMiwgImRzIiA9IGdzdWIoIiAiLCAiIiwgcGFzdGUocGFzdGUoIlsiLHBhc3RlKHNvcnRpZUxvbmdfc2MyJGRheSwgc29ydGllTG9uZ19zYzIkc2xpY2UpKSwiXSIpKSkKCnAgPC0gZ2dwbG90KGRhdGE9c29ydGllTG9uZ19zYzIsIGFlcyh4PWRzLCB5PXZhbGV1ciwgZ3JvdXA9ZWR1YywgZmlsbD1lZHVjLCBjb2xvdXI9YXMuY2hhcmFjdGVyKGVkdWMpKSkKcCA8LSBwICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKQpwIDwtIHAgKyBnZW9tX2xpbmUoc2l6ZT0wLjUpICsgZmFjZXRfZ3JpZChmYWN0ZXVyIH4gc2V4IH4gYWdlKSAjc2hvdy5sZWdlbmQgPSBGQUxTRQpwCmBgYAoKIyByYW5kb20gYWN0aXZpdHkgc2NlbmFyaW8gMwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG1heFByb2JhVG9Td2l0Y2ggICAgY29uc3RyYWludHNTdHJlbmd0aCAgICAgICAgIGluZXJ0aWFDb2VmZmljaWVudCAgICAgICAgIGhlYWx0aHlEaWV0UmV3YXJkICAgICAgICAgc2VlZAotLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0tCjAuOCAgICAgICAgICAgICAgICAgIDAuNSAgICAgICAgICAgICAgICAgICAgICAgICAwLjUgICAgICAgICAgICAgICAgICAgICAgICAwLjQgICAgICAgICAgICAgICAgICAgICAgIDQyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpgYGB7ciwgZmlnLndpZHRoPTEwfQpzb3J0aWVfc2MzIDwtIHJlYWRfY3N2KCIuLi9kYXRhL0NJU1QyMDE4L3JhbmRvbV9hY3Rpdml0eV9zY2VuYXJpbzMvY3N2L2NhdGVnb3JpZXMuY3N2Iixjb2xfbmFtZXMgPSBUUlVFLCBjb2xfdHlwZXM9ICJubm5ubm5ubiIpCnNvcnRpZV9zYzMkcHJvcEhlYWx0aHkgPC0gc29ydGllX3NjMyRoZWFsdGh5IC8gc29ydGllX3NjMyRlZmZlY3RpdmUgCiAgCnNvcnRpZUxvbmdfc2MzIDwtIGdhdGhlcihzb3J0aWVfc2MzLCBmYWN0ZXVyLCB2YWxldXIsIGJ5PWMocHJvcEhlYWx0aHksYXZnT3BpbmlvbikgKSAKCnNvcnRpZUxvbmdfc2MzIDwtIG11dGF0ZShzb3J0aWVMb25nX3NjMywgImRzIiA9IGdzdWIoIiAiLCAiIiwgcGFzdGUocGFzdGUoIlsiLHBhc3RlKHNvcnRpZUxvbmdfc2MzJGRheSwgc29ydGllTG9uZ19zYzMkc2xpY2UpKSwiXSIpKSkKCnAgPC0gZ2dwbG90KGRhdGE9c29ydGllTG9uZ19zYzMsIGFlcyh4PWRzLCB5PXZhbGV1ciwgZ3JvdXA9ZWR1YywgZmlsbD1lZHVjLCBjb2xvdXI9YXMuY2hhcmFjdGVyKGVkdWMpKSkKcCA8LSBwICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKQpwIDwtIHAgKyBnZW9tX2xpbmUoc2l6ZT0wLjUpICsgZmFjZXRfZ3JpZChmYWN0ZXVyIH4gc2V4IH4gYWdlKSAjc2hvdy5sZWdlbmQgPSBGQUxTRQpwCmBgYAoKIyBzdXJ2ZXkgYWN0aXZpdHkgc2NlbmFyaW8gNAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG1heFByb2JhVG9Td2l0Y2ggICAgY29uc3RyYWludHNTdHJlbmd0aCAgICAgICAgIGluZXJ0aWFDb2VmZmljaWVudCAgICAgICAgIGhlYWx0aHlEaWV0UmV3YXJkICAgICAgICAgc2VlZAotLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0tCjAuOCAgICAgICAgICAgICAgICAgIDAuMDUgICAgICAgICAgICAgICAgICAgICAgICAwLjUgICAgICAgICAgICAgICAgICAgICAgICAwLjQgICAgICAgICAgICAgICAgICAgICAgIDQyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpgYGB7ciwgZmlnLndpZHRoPTEwfQpzb3J0aWVfc2M0IDwtIHJlYWRfY3N2KCIuLi9kYXRhL0NJU1QyMDE4L3N1cnZleV9hY3Rpdml0eV9zY2VuYXJpbzQvY3N2L2NhdGVnb3JpZXMuY3N2Iixjb2xfbmFtZXMgPSBUUlVFLCBjb2xfdHlwZXM9ICJubm5ubm5ubiIpCnNvcnRpZV9zYzQkcHJvcEhlYWx0aHkgPC0gc29ydGllX3NjNCRoZWFsdGh5IC8gc29ydGllX3NjNCRlZmZlY3RpdmUgCiAgCnNvcnRpZUxvbmdfc2M0IDwtIGdhdGhlcihzb3J0aWVfc2M0LCBmYWN0ZXVyLCB2YWxldXIsIGJ5PWMocHJvcEhlYWx0aHksYXZnT3BpbmlvbikgKSAKc29ydGllTG9uZ19zYzQgPC0gbXV0YXRlKHNvcnRpZUxvbmdfc2M0LCAiZHMiID0gZ3N1YigiICIsICIiLCBwYXN0ZShwYXN0ZSgiWyIscGFzdGUoc29ydGllTG9uZ19zYzQkZGF5LCBzb3J0aWVMb25nX3NjNCRzbGljZSkpLCJdIikpKQoKcCA8LSBnZ3Bsb3QoZGF0YT1zb3J0aWVMb25nX3NjNCwgYWVzKHg9ZHMsIHk9dmFsZXVyLCBncm91cD1lZHVjLCBmaWxsPWVkdWMsIGNvbG91cj1hcy5jaGFyYWN0ZXIoZWR1YykpKQpwIDwtIHAgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSkpCnAgPC0gcCArIGdlb21fbGluZShzaXplPTAuNSkgKyBmYWNldF9ncmlkKGZhY3RldXIgfiBzZXggfiBhZ2UpICNzaG93LmxlZ2VuZCA9IEZBTFNFCnAKYGBgCgoKCg==