[1] "/Users/jornbrouwer/Onedrive/Programeren/the_big_five/thebigfive/RScript/SpaandersBV_dataset_2"
[1] 576000
[1] "20d 0H 0M 0S"

Simulatie informatie

1.0 Logbestand: ../LogFiles/logfile-v8_minimale_productie.csv

1.1 aantal gemaakte budget-tafels: 15381

1.2 aantal gemaakte luxe-tafels: 1820

1.3 Gesimuleerde tijd: 260d 0H 2M 0S

1.4 aantal reparaties: 7

1.5 Aantal keer dat machines zijn omgesteld tussen luxe- en budgettafels: 51



Productielijnen

Budget-bladen

  • Rendered time period is: 20d 0H 0M 0S

Machine 1 - (Hout) zaagmachine


Machine 4 - Voorboormachine


Machine 5 - Schuurmachine


Machine 6 - Verfmachine


Budget-poten

  • Rendered time period is: 20d 0H 0M 0S

Machine 7 - IJzerzaag-machine


Machine 9 - Lasmachine


Machine 10 - Poedercoat-machine


Luxe-bladen

Render time

  • Rendered time period is: 20d 0H 0M 0S

Machine 1 - (Hout) zaagmachine

Machine 2 - (Hout) lijmmachine

Machine 3 - (Hout) Freezemachine

Machine 4 - (Hout) Voorboormachine

Machine 5 - (Hout) Schuurmachine

Machine 6 - (Hout) Verfmachine

Luxe-poten

  • Rendered time period is: 20d 0H 0M 0S

Machine 7 - IJzerzaag-machine

Machine 8 - (IJzer) buigmachine

Machine 9 - Lasmachine

Machine 11 - polijstmachine


LS0tCnRpdGxlOiAiU2ltdWxhdGlvbiBSZXBvcnQiCmF1dGhvcjogIlNwYWFuZGVycyBCLlYuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyAxLjEgTG9hZCBsaWJyYXJpZXMKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikgIyBMaWJyYXJ5IGZvciBmaWx0ZXJpbmcgZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgIyBMaWJyYXJ5IGZvciBjb252ZXJ0aW5nIHRpbWVzdGFtcHMgKHNlY29uZHMgaW4gb3VyIGNhc2UpIHRvIGZvcm1hdHRlZCBkYXRldGltZXMKbGlicmFyeSh0aWR5cikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoZ2dwbG90MikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMgLjIgU2V0IFdvcmtpbmcgRGlyZWN0b3J5CiNzZXR3ZCgifi9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0LyIpCiNwcmludChnZXR3ZCkKcHJpbnQoZ2V0d2QoKSkKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCJMb2dGaWxlcy9sb2dmaWxlLTE2LTAxLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgIyBSZWFkIGxvZyBmaWxlCiMgbG9nZmlsZSA8LSByZWFkLmNzdigifi9Vc2Vycy9qb3JuYnJvdXdlci9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0L0xvZ0ZpbGVzL2xvZ2ZpbGUtMTctMDEuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjIFJlYWQgbG9nIGZpbGUKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9TcGFhbmRlcnNCVl8xamFhcl9nb2Vka29wZU1hY2hpbmVzX29tc3RlbGxlbl8xX3dlZWsuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjJfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12Ml9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYzX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjRfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12NV9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXY2X21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjdfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12OC0xX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2ltX25hbWUgPC0gYygiLi4vTG9nRmlsZXMvbG9nZmlsZS12OF9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IikKI3ByaW50KHNpbV9uYW1lKQp0aW1lc3RhbXBzX1YgPC0gYyhsb2dmaWxlJFRpbWVzdGFtcCkKbWFjaGluZXNfViA8LSBjKGxvZ2ZpbGUkTWFjaGluZUlEKQpzZW5kZXJfViA8LSBjKGxvZ2ZpbGUkU2VuZGVyKQptZXNzYWdlc19WIDwtIGMobG9nZmlsZSRNZXNzYWdlKQppbnB1dF9WIDwtIGMobG9nZmlsZSRJbnB1dEJ1ZmZlcikKb3V0cHV0X1YgPC0gYyhsb2dmaWxlJE91dHB1dEJ1ZmZlcikKd29ya2xvYWRfViA8LSBjKGxvZ2ZpbGUkV29ya2xvYWQpCml0ZW10eXBlX1YgPC0gYyhsb2dmaWxlJEl0ZW1UeXBlKQpgYGAKCmBgYHtyIGVjaG89RkFMU0V9CnNvdXJjZSgiUE9TX3RpbWVfY29udmVydGVyLlIiKQoKIyBzaG93VGltZSA8LSAocmVuZGVyVGltZVtzaG93dGltZV0pKjMKIyByZW5kZXJpbmdUaW1lIDwtIHNob3dUaW1lCiMgcHJpbnQocmVuZGVyVGltZSkKI3ByaW50KHJlbmRlcmluZ1RpbWUpCnNob3dUaW1lIDwtIHNlY29uZHNfdG9fcGVyaW9kKHJlbmRlcmluZ1RpbWUqMykKc2hvd1RpbWUgPC0gYXMuY2hhcmFjdGVyLlBPU0lYdChzaG93VGltZSkKcHJpbnQoc2hvd1RpbWUpCmBgYAoKYGBge3IgaW5jbHVkZT1GQUxTRX0KIyBUZXN0IHRpbWVzdGFtcHMgZm9yIGNvbnZlcnRpZQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoMjk5NTIwMDApKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoNzQ4ODAwMCozKjQpKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoODk4NTYwMDApKQpgYGAKCgpgYGB7ciBTZXR1cCwgaW5jbHVkZT1GQUxTRX0KcHJpbnQoZ2V0d2QoKSkKCnNvdXJjZSgiSW5pdGlhbGl6ZS5SIikKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQojcHJpbnQodGFpbChsb2dmaWxlLCBuPTIwMCkpCm5HZXByb2R1Y2VlcmRlVGFmZWxzIDwtIHRhaWwobG9nZmlsZSRNYWNoaW5lSUQsbj0yKQpuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVscyA8LSBuR2Vwcm9kdWNlZXJkZVRhZmVsc1sxXQojcHJpbnQobkdlcHJvZHVjZWVyZGVCdWRnZXRUYWZlbHMpCm5HZXByb2R1Y2VlcmRlTHV4ZVRhZmVscyA8LSBuR2Vwcm9kdWNlZXJkZVRhZmVsc1syXQpgYGAKCi0tLQoKIyMjIFNpbXVsYXRpZSBpbmZvcm1hdGllCgoxLjAgTG9nYmVzdGFuZDogX19gciBzaW1fbmFtZWBfXwoKMS4xIGFhbnRhbCBnZW1hYWt0ZSBidWRnZXQtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlQnVkZ2V0VGFmZWxzYF9fCgoxLjIgIGFhbnRhbCBnZW1hYWt0ZSBsdXhlLXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHNgX18KCjEuMyBHZXNpbXVsZWVyZGUgdGlqZDogX19gciBmaW5hbFNpbVRpbWVgX18KCjEuNCBhYW50YWwgcmVwYXJhdGllczogX19gciBuTWFjaGluZXNCcm9rZW5gX18KCmBgYHtyIGVjaG89RkFMU0V9Cm5UaW1lc0Jyb2tlbiA8LSBmaWx0ZXIobG9nZmlsZSwgbG9nZmlsZSRNZXNzYWdlPT0iUkVQQUlSIikKblRpbWVzdGFtcHNCcm9rZW4gPC0gYXMubnVtZXJpYyhuVGltZXNCcm9rZW4kVGltZXN0YW1wKQojcHJpbnQoaGVhZChuVGltZXNCcm9rZW4pKQpoaXN0KHN1bW1hcnkoblRpbWVzdGFtcHNCcm9rZW4pKQpgYGAKCjEuNSBBYW50YWwga2VlciBkYXQgbWFjaGluZXMgemlqbiBvbWdlc3RlbGQgdHVzc2VuIGx1eGUtIGVuIGJ1ZGdldHRhZmVsczogX19gciBtYWNoaW5lX2NvbmZpZ3NfVWBfXwoKYGBge3IgZWNobz1GQUxTRX0KblRpbWVzUmVjb25maWd1cmVkIDwtIGZpbHRlcihsb2dmaWxlLCBsb2dmaWxlJE1lc3NhZ2U9PSJDT05GSUciKQojcHJpbnQoaGVhZChuVGltZXNSZWNvbmZpZ3VyZWQpKQpgYGAKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CgojIE0gPC0gc3Vic2V0KGxvZ2ZpbGUsIHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpCiMgICAgICAgICAgICAgLHN1YnNldD0odGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3Nob3dUaW1lXSkpCiMgCiMgblRpbWVzUmVjb25maWd1cmVkIDwtIGZpbHRlcihNLCBNJE1lc3NhZ2U9PSJDT05GSUciKQojICNwcmludChoZWFkKG5UaW1lc1JlY29uZmlndXJlZCkpCiMgblRpbWVzUmVjb25maWd1cmVkIDwtIHVuaXF1ZShuVGltZXNSZWNvbmZpZ3VyZWQkVGltZXN0YW1wKQojIG5UaW1lc1JlY29uZmlndXJlZCA8LSBhcy5udW1lcmljKG5UaW1lc1JlY29uZmlndXJlZCkKIyBzdW1tYXJ5KG5UaW1lc1JlY29uZmlndXJlZCkKIyAKIyBwYXIobWZyb3cgPSBjKDEsIDIpKSAjIENyZWF0ZSBhIHggZ3JpZCBmb3IgZGlhZ3JhbXMKIyBoaXN0KG5UaW1lc1JlY29uZmlndXJlZCwgbWFpbj0iSGlzdG9ncmFtIHZhbiBhYW50YWwgQ09ORklHUyB2YW4gTWFjaGluZSAxIiwgeGxhYj0iVGltZXN0YW1wIix5bGFiPSJGcmVxdWVuY3kiKQojICNib3hwbG90KG5UaW1lc1JlY29uZmlndXJlZCRUaW1lc3RhbXApCiMgCiMgcGxvdChuVGltZXNSZWNvbmZpZ3VyZWQpCiMgbGluZXMoblRpbWVzUmVjb25maWd1cmVkKQoKIzEuNiBnZW1pZGRlbGRlIGJlemV0dGluZ3NncmFhZCB0dXNzZW5saWdnZW5kZSBidWZmZXJzOiBfX2ByIHRvdGFsQmV6ZXR0aW5nc0dyYWFkYF9fCmBgYAoKLS0tCgpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQojc291cmNlKCJleHBlbnNpdmVJdGVtcy5SIikKIyMjIDEgLSBHZW5lcmFsIFNpbXVsYXRpb24gVmFyaWFibGVzCgojIDEuMSBhYW50YWwgZ2VtYWFrdGUgYnVkZ2V0LXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVsc2BfXwojIAojIDEuMiAgYWFudGFsIGdlbWFha3RlIGx1eGUtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlTHV4ZVRhZmVsc2BfXwojIAojIDEuMyBHZXNpbXVsZWVyZGUgdGlqZDogX19gciBmaW5hbFNpbVRpbWVgX18KIyAKIyAxLjQgYWFudGFsIHJlcGFyYXRpZXM6IF9fYHIgbk1hY2hpbmVzQnJva2VuYF9fCiMgCiMgMS41IEFhbnRhbCBrZWVyIGRhdCBtYWNoaW5lcyB6aWpuIG9tZ2VzdGVsZCB0dXNzZW4gbHV4ZS0gZW4gYnVkZ2V0dGFmZWxzOiBfX2ByIG1hY2hpbmVfY29uZmlnc19VYF9fCiMgCiMgMS42IGdlbWlkZGVsZGUgYmV6ZXR0aW5nc2dyYWFkIHR1c3NlbmxpZ2dlbmRlIGJ1ZmZlcnM6IF9fYHIgdG90YWxCZXpldHRpbmdzR3JhYWRgX18KCmBgYAoKLS0tCgojICBQcm9kdWN0aWVsaWpuZW4gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgpgYGB7ciBlY2hvPUZBTFNFfQojIHBhcihtZnJvdyA9IGMoMSwgMikpICMgQ3JlYXRlIGEgeCBncmlkIGZvciBkaWFncmFtcwojIAojIGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMgPC0gYyhtMV9tZWFuLG00X21lYW4sbTVfbWVhbikKIyBiYXJwbG90KGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMsIG1haW49ImdlbWlkZGVsZGUgdmFuIGRlIGJ1ZmZlcnMgWzFdWzRdWzVdIikKIyAKIyBiZXpldHRpbnNncmFhZFRhZmVscG90ZW4gPC1jKG03X21lYW4sIG05X21lYW4pCiMgCiMgYmFycGxvdChiZXpldHRpbnNncmFhZFRhZmVscG90ZW4sIG1haW49ImdlbWlkZGVsZGUgdmFuIGRlIGJ1ZmZlcnMgWzddWzldIikKIyAKIyB0b3RhbEJlemV0dGluZ3NHcmFhZCA8LSBjKGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMsYmV6ZXR0aW5zZ3JhYWRUYWZlbHBvdGVuKQojIHRvdGFsQmV6ZXR0aW5nc0dyYWFkIDwtIG1lYW4odG90YWxCZXpldHRpbmdzR3JhYWQpCmBgYAoKCiMjIEJ1ZGdldC1ibGFkZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDEgLSAoSG91dCkgemFhZ21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xKSYoaXRlbXR5cGVfVj09IkMiKSkpCm0xX3QgPC0gYXMubnVtZXJpYyhNMV8kVGltZXN0YW1wKQpNMSA8LSBzdWJzZXQoTTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xX3QgPCByZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlciwgbWFpbj0iSG91dHphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVCbGFkZW4gPC0gTTEkT3V0cHV0QnVmZmVyCmdlemFhZ2RlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVCbGFkZW4pCgpoaXN0KGdlemFhZ2RlQmxhZGVuLG1haW49IkdlemFhZ2RlIGJ1ZGdldCB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2V6YWFnZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlemFhZ2RlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBidWRnZXQgdGFmZWxibGFkZW4iLCB5bGFiPSJuR2V6YWFnZGVCbGFkZW4iKQoKbTFfbWVhbiA8LSBtZWFuKGdlemFhZ2RlQmxhZGVuKQojcHJpbnQobTFfbWVhbikKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKCm0xQ29uZmlncyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlJFQ09ORklHVVJFIikpCm0xX2NvbmZpZ3NfdGltZXN0YW1wcyA8LSBtMUNvbmZpZ3MkVGltZXN0YW1wCm0xQ29uZmlncyA8LSBsZW5ndGgodW5pcXVlKG0xQ29uZmlncyRUaW1lc3RhbXApKQoKYGBgCgpgYGB7ciBwaWUxLCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNMV9jb25maWcgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJDT05GSUciKSkKTTFfY29uZmlnIDwtIE0xX2NvbmZpZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTFfaWRsZSA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNMV9pZGxlIDwtIE0xX2lkbGUkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk0xX3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTFfcHJvY2Vzc2luZyA8LSBNMV9wcm9jZXNzaW5nJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNMV9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNMV9wcm9jZXNzZWQgPC0gTTFfcHJvY2Vzc2VkJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojcHJpbnQobGVuZ3RoKE0xX2lkbGUpKQojcHJpbnQobGVuZ3RoKE0xX3Byb2Nlc3NlZCkpCiNwcmludChsZW5ndGgoTTFfcHJvY2Vzc2luZykpCiNwcmludChNMV9wcm9jZXNzaW5nWzJdIC0gTTFfaWRsZVsyXSkKI3ByaW50KE0xX3Byb2Nlc3NlZFsyXSAtIE0xX3Byb2Nlc3NpbmdbMl0pCiNwcmludChNMV9pZGxlWzNdIC0gTTFfcHJvY2Vzc2VkWzJdKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwoKI3ByaW50KGNvX3RpbWUpIApuQ29uZmlncyA8LSBsZW5ndGgoTTFfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwICNldmVyeSBjb25maWcgdGFrZXMgMzAwcyAoNW1pbnV0ZXMpCgojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwoKCiNuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE0xX3Byb2Nlc3NpbmcpIC0xCiNuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE0xX3Byb2Nlc3NlZCkgLTEKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfaWRsZSkgLTEgCgpwcmludChuUHJvY2Vzc2luZ3MpCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNMV9wcm9jZXNzaW5nW2ldIC0gTTFfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTFfcHJvY2Vzc2VkW2ldIC0gTTFfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNMV9pZGxlW2krMV0gLSBNMV9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgp9CiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUscGRfdGltZSkKCgoKI3ByaW50KGlkX3RpbWUpIAojcHJpbnQocGdfdGltZSlcCgpsYWJlbHMgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVscyA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGxhcz0xLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgNCAtIFZvb3Jib29ybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KCk00XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT00KSYoaXRlbXR5cGVfVj09IkMiKSkpCm00X3QgPC0gYXMubnVtZXJpYyhNNF8kVGltZXN0YW1wKQoKTTQgPC0gc3Vic2V0KE00XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG00X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKaGlzdChnZWJvb3JkZVBsYXRlbikKYm94cGxvdChnZWJvb3JkZVBsYXRlbikKCm00X21lYW4gPC0gbWVhbihnZWJvb3JkZVBsYXRlbikKI3ByaW50KG00X21lYW4pCiNwcmludCh1bmlxdWUoZ2Vib29yZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZWJvb3JkZVBsYXRlbikpCmBgYAoKCmBgYHtyIHBpZTQsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck00X2NvbmZpZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IkNPTkZJRyIpKQpNNF9jb25maWcgPC0gTTRfY29uZmlnJFRpbWVzdGFtcAojcHJpbnQoTTRfY29uZmlnKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNF9pZGxlIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk00X2lkbGUgPC0gTTRfaWRsZSRUaW1lc3RhbXAKI3ByaW50KGxlbmd0aChNNF9pZGxlKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTRfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNF9wcm9jZXNzaW5nIDwtIE00X3Byb2Nlc3NpbmckVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2luZykpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk00X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk00X3Byb2Nlc3NlZCA8LSBNNF9wcm9jZXNzZWQkVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2VkKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbkNvbmZpZ3MgPC0gbGVuZ3RoKE00X2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMApuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE00X3Byb2Nlc3NpbmcpLTEKI3ByaW50KG5Qcm9jZXNzaW5ncykKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE00X3Byb2Nlc3NpbmdbaV0gLSBNNF9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNNF9wcm9jZXNzZWRbaV0gLSBNNF9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE00X2lkbGVbaSsxXSAtIE00X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCiAgI3ByaW50KHBkX3RpbWVfdGFrZW4pCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSwgcGRfdGltZSkKCmxhYmVsIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbCA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCgotLS0KCiMjIyBNYWNoaW5lIDUgLSBTY2h1dXJtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CgpNNV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJDIikpKQptNV90IDwtIGFzLm51bWVyaWMoTTVfJFRpbWVzdGFtcCkKCk01IDwtIHN1YnNldChNNV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtNV90PD1yZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIsIG1haW49IlNjaHV1cm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjNyZG91dHB1dGJ1ZmZlciIpCmxpbmVzKE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlc2NodXVyZGVQbGF0ZW4gPC0gTTUkT3V0cHV0QnVmZmVyCmdlc2NodXVyZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXNjaHV1cmRlUGxhdGVuKQpoaXN0KGdlc2NodXVyZGVQbGF0ZW4pCmJveHBsb3QoZ2VzY2h1dXJkZVBsYXRlbikKCm01X21lYW4gPC0gbWVhbihnZXNjaHV1cmRlUGxhdGVuKQojcHJpbnQobTVfbWVhbikKI3ByaW50KHVuaXF1ZShnZXNjaHV1cmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2VzY2h1dXJkZVBsYXRlbikpCmBgYAoKCmBgYHtyIHBpZTUsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck01X2NvbmZpZyA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IkNPTkZJRyIpKQpNNV9jb25maWcgPC0gTTVfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNV9pZGxlIDwtIGMoZmlsdGVyKE01LCBNNSRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk01X2lkbGUgPC0gTTVfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTVfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNV9wcm9jZXNzaW5nIDwtIE01X3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk01X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk01X3Byb2Nlc3NlZCA8LSBNNV9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNV9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNV9wcm9jZXNzaW5nKS0xCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNNV9wcm9jZXNzaW5nW2ldIC0gTTVfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTVfcHJvY2Vzc2VkW2ldIC0gTTVfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNNV9pZGxlW2krMV0gLSBNNV9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgogICNwcmludChwZF90aW1lX3Rha2VuKQp9CiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUsIHBkX3RpbWUpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0KCiMjIyBNYWNoaW5lIDYgLSBWZXJmbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE02IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNNl8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NikmKGl0ZW10eXBlX1Y9PSJDIikpKQptNl90IDwtIGFzLm51bWVyaWMoTTZfJFRpbWVzdGFtcCkKCk02IDwtIHN1YnNldChNNl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtNl90PD1yZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIsbWFpbj0iVmVyZm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsb3V0cHV0YnVmZmVyIikKbGluZXMoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V2ZXJmZGVQbGF0ZW4gPC0gTTYkT3V0cHV0QnVmZmVyCmdldmVyZmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2V2ZXJmZGVQbGF0ZW4pCmhpc3QoZ2V2ZXJmZGVQbGF0ZW4pCmJveHBsb3QoZ2V2ZXJmZGVQbGF0ZW4pCgojcHJpbnQodW5pcXVlKGdldmVyZmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2V2ZXJmZGVQbGF0ZW4pKQpgYGAKCmBgYHtyIHBpZTYsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck02X2NvbmZpZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IkNPTkZJRyIpKQpNNl9jb25maWcgPC0gTTZfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNl9pZGxlIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk02X2lkbGUgPC0gTTZfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTZfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNl9wcm9jZXNzaW5nIDwtIE02X3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk02X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk02X3Byb2Nlc3NlZCA8LSBNNl9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNl9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNl9wcm9jZXNzZWQpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiMgcHJpbnQobGVuZ3RoKE02X2lkbGUpKQojIAojIHByaW50KGxlbmd0aChNNl9wcm9jZXNzaW5nKSkKIyBwcmludChsZW5ndGgoTTZfcHJvY2Vzc2VkKSkKIyB4IDwtIGxlbmd0aChNNl9pZGxlKQojIHkgPC0gbGVuZ3RoKE02X3Byb2Nlc3NpbmcpCiMgeiA8LSBsZW5ndGgoTTZfcHJvY2Vzc2VkKQojIHByaW50KHRhaWwoTTZfaWRsZSkpCiMgcHJpbnQodGFpbChNNl9wcm9jZXNzaW5nKSkKIyBwcmludCh0YWlsKE02X3Byb2Nlc3NlZCkpCiMgcHJpbnQoTTZfcHJvY2Vzc2luZ1syXSAtIE02X2lkbGVbMl0pCiMgcHJpbnQoTTZfcHJvY2Vzc2VkWzJdIC0gTTZfcHJvY2Vzc2luZ1syXSkKIHByaW50KE02X2lkbGVbMTAwMV0gLSBNNl9wcm9jZXNzZWRbMTAwMF0pCgpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTZfcHJvY2Vzc2luZ1tpXSAtIE02X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE02X3Byb2Nlc3NlZFtpXSAtIE02X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTZfaWRsZVtpXSAtIE02X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgcHJpbnQocGRfdGltZV90YWtlbikKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KfQogCiNwcmludChpZF90aW1lKQojcHJpbnQocGdfdGltZSkKI3ByaW50KHBkX3RpbWUpCgojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBhYnMocGRfdGltZSkpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0tCgojIyBCdWRnZXQtcG90ZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDcgLSBJSnplcnphYWctbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE03IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT03KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNN18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJDIikpKQptN190IDwtIGFzLm51bWVyaWMoTTdfJFRpbWVzdGFtcCkKCk03IDwtIHN1YnNldChNN18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtN190PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbikKYm94cGxvdChnZXphYWdkZVBvdGVuKQoKbTdfbWVhbiA8LSBtZWFuKGdlemFhZ2RlUG90ZW4pCiNwcmludChtN19tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVQb3RlbikpCmBgYAoKLS0tCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE05IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNOV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OSkmKGl0ZW10eXBlX1Y9PSJDIikpKQptOV90IDwtIGFzLm51bWVyaWMoTTlfJFRpbWVzdGFtcCkKCk05IDwtIHN1YnNldChNOV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtOV90PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcixtYWluPSJMYXNtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcikKcGFyKG1mcm93ID0gYygxLDIpKQpnZWxhc2RlUG90ZW4gPC0gTTkkT3V0cHV0QnVmZmVyCmdlbGFzZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlbGFzZGVQb3RlbikKaGlzdChnZWxhc2RlUG90ZW4pCmJveHBsb3QoZ2VsYXNkZVBvdGVuKQoKbTlfbWVhbiA8LSBtZWFuKGdlbGFzZGVQb3RlbikKI3ByaW50KG05X21lYW4pCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgMTAgLSBQb2VkZXJjb2F0LW1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KIyBNMTAgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xMCkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTEwXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xMCkmKGl0ZW10eXBlX1Y9PSJDIikpKQptMTBfdCA8LSBhcy5udW1lcmljKE0xMF8kVGltZXN0YW1wKQoKTTEwIDwtIHN1YnNldChNMTBfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTEwX3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMTAkVGltZXN0YW1wLE0xMCRPdXRwdXRCdWZmZXIsbWFpbj0iUG9lZGVyY29hdG1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xMCRUaW1lc3RhbXAsTTEwJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vjb2F0ZVBvdGVuIDwtIE0xMCRPdXRwdXRCdWZmZXIKZ2Vjb2F0ZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2Vjb2F0ZVBvdGVuKQpoaXN0KGdlY29hdGVQb3RlbikKYm94cGxvdChnZWNvYXRlUG90ZW4pCgojbTEwX21lYW4gPC0gbWVhbihnZWNvYXRlUG90ZW4pCiNwcmludChtMTBfbWVhbikKCiNwcmludChzdW1tYXJ5KGdlY29hdGVQb3RlbikpCmBgYAoKLS0tCgojIyBMdXhlLWJsYWRlbgoKUmVuZGVyIHRpbWUKCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDEgLSAoSG91dCkgemFhZ21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xKSYoaXRlbXR5cGVfVj09IkUiKSkpCm0xX3QgPC0gYXMubnVtZXJpYyhNMV8kVGltZXN0YW1wKQpNMSA8LSBzdWJzZXQoTTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xX3QgPCByZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlciwgbWFpbj0iSG91dHphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVCbGFkZW4gPC0gTTEkT3V0cHV0QnVmZmVyCmdlemFhZ2RlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVCbGFkZW4pCmhpc3QoZ2V6YWFnZGVCbGFkZW4sbWFpbj0iR2V6YWFnZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2V6YWFnZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlemFhZ2RlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0ibkdlemFhZ2RlQmxhZGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKIyMjIE1hY2hpbmUgMiAtIChIb3V0KSBsaWptbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNMiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MikmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTJfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTIpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTJfdCA8LSBhcy5udW1lcmljKE0yXyRUaW1lc3RhbXApCk0yIDwtIHN1YnNldChNMl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTJfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTIkVGltZXN0YW1wLE0yJE91dHB1dEJ1ZmZlciwgbWFpbj0iTGlqbW1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMiRUaW1lc3RhbXAsTTIkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWxpam1kZUJsYWRlbiA8LSBNMiRPdXRwdXRCdWZmZXIKZ2VsaWptZGVCbGFkZW4gPC0gYXMubnVtZXJpYyhnZWxpam1kZUJsYWRlbikKaGlzdChnZWxpam1kZUJsYWRlbixtYWluPSJHZWxpam1kZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZWxpam1kZWJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlbGlqbWRlQmxhZGVuKSkKYm94cGxvdCh4ID0gZ2VsaWptZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJHZWxpam1kZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iZ2VsaWptZGVCbGFkZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgoKIyMjIE1hY2hpbmUgMyAtIChIb3V0KSBGcmVlemVtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE0zIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0zKSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNM18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MykmKGl0ZW10eXBlX1Y9PSJFIikpKQptM190IDwtIGFzLm51bWVyaWMoTTNfJFRpbWVzdGFtcCkKTTMgPC0gc3Vic2V0KE0zXyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtM190IDwgcmVuZGVyaW5nVGltZSkpKQoKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTMkVGltZXN0YW1wLE0zJE91dHB1dEJ1ZmZlciwgbWFpbj0iRnJlZXplbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0zJFRpbWVzdGFtcCxNMyRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlZnJlZXpkZUJsYWRlbiA8LSBNMyRPdXRwdXRCdWZmZXIKZ2VmcmVlemRlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2VmcmVlemRlQmxhZGVuKQpoaXN0KGdlZnJlZXpkZUJsYWRlbixtYWluPSJHZWZyZWV6ZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VmcmVlemRlIGJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlZnJlZXpkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlZnJlZXpkZUJsYWRlbix5ID0geGF4aXMsIG1haW49IkdlZnJlZXpkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgZ2VmcmVlemRlIGJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDQgLSAoSG91dCkgVm9vcmJvb3JtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE00IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT00KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNNF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJFIikpKQptNF90IDwtIGFzLm51bWVyaWMoTTRfJFRpbWVzdGFtcCkKTTQgPC0gc3Vic2V0KE00XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtNF90IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKCmhpc3QoZ2Vib29yZGVQbGF0ZW4sbWFpbj0iVm9vcmdlYm9vcmRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIHZvb3JnZWJvb3JkZSBwbGF0ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlYm9vcmRlUGxhdGVuKSkKYm94cGxvdChnZWJvb3JkZVBsYXRlbix5ID0geGF4aXMsIG1haW49IlZvb3JnZWJvb3JkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgVm9vcmdlYm9vcmRlIGJsYWRlbiIpCgojcHJpbnQodW5pcXVlKGdlYm9vcmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2Vib29yZGVQbGF0ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDUgLSAoSG91dCkgU2NodXVybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQpNNV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJFIikpKQptNV90IDwtIGFzLm51bWVyaWMoTTVfJFRpbWVzdGFtcCkKTTUgPC0gc3Vic2V0KE01XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtNV90IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyLCBtYWluPSJTY2h1dXJtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIzcmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VzY2h1dXJkZVBsYXRlbiA8LSBNNSRPdXRwdXRCdWZmZXIKZ2VzY2h1dXJkZVBsYXRlbiA8LSBhcy5udW1lcmljKGdlc2NodXVyZGVQbGF0ZW4pCmhpc3QoZ2VzY2h1dXJkZVBsYXRlbixtYWluPSJHZXNjaHV1cmRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlc2NodXVyZGUgcGxhdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXNjaHV1cmRlUGxhdGVuKSkKYm94cGxvdChnZXNjaHV1cmRlUGxhdGVuLHkgPSB4YXhpcywgbWFpbj0iR2VzY2h1dXJkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgZ2VzY2h1dXJkZSBibGFkZW4iKQoKI3ByaW50KHVuaXF1ZShnZXNjaHV1cmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2VzY2h1dXJkZVBsYXRlbikpCmBgYAoKIyMjIE1hY2hpbmUgNiAtIChIb3V0KSBWZXJmbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NikmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTZfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTZfdCA8LSBhcy5udW1lcmljKE02XyRUaW1lc3RhbXApCk02IDwtIHN1YnNldChNNl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTZfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcixtYWluPSJWZXJmbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWxvdXRwdXRidWZmZXIiKQpsaW5lcyhNNiRUaW1lc3RhbXAsTTYkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXZlcmZkZVBsYXRlbiA8LSBNNiRPdXRwdXRCdWZmZXIKZ2V2ZXJmZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXZlcmZkZVBsYXRlbikKaGlzdChnZXZlcmZkZVBsYXRlbikKYm94cGxvdChnZXZlcmZkZVBsYXRlbikKCiNwcmludCh1bmlxdWUoZ2V2ZXJmZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXZlcmZkZVBsYXRlbikpCmBgYAoKIyMgTHV4ZS1wb3RlbgoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgNyAtIElKemVyemFhZy1tYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE03IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT03KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNN18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJFIikpKQptN190IDwtIGFzLm51bWVyaWMoTTdfJFRpbWVzdGFtcCkKTTcgPC0gc3Vic2V0KE03XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtN190IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyLG1haW49IklKemVyemFhZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXphYWdkZVBvdGVuIDwtIE03JE91dHB1dEJ1ZmZlcgpnZXphYWdkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVQb3RlbikKaGlzdChnZXphYWdkZVBvdGVuLG1haW49IkdlemFhZ2RlIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGx1eGUgZ2V6YWFnZGUgcG90ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlemFhZ2RlUG90ZW4pKQpib3hwbG90KGdlemFhZ2RlUG90ZW4sIHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBsdXhlIGdlemFhZ2RlIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZXphYWdkZSBwb3RlbiIpCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlUG90ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDggLSAoSUp6ZXIpIGJ1aWdtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE04IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQsSXRlbVR5cGUpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT04KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNOF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09OCkmKGl0ZW10eXBlX1Y9PSJFIikpKQptOF90IDwtIGFzLm51bWVyaWMoTThfJFRpbWVzdGFtcCkKTTggPC0gc3Vic2V0KE04XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtOF90IDwgcmVuZGVyaW5nVGltZSkpKQoKCiNwcmludChoZWFkKE04JE91dHB1dEJ1ZmZlcikpCiNwcmludCh1bmlxdWUoTTgkT3V0cHV0QnVmZmVyKSkKI3ByaW50KGNvdW50KChNOCRPdXRwdXRCdWZmZXIpKSkKI2NsYXNzKE04JE91dHB1dEJ1ZmZlcikKI291dHB1dCA8LSBhYnMoTTgkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE04JFRpbWVzdGFtcCwgTTgkT3V0cHV0QnVmZmVyLCBtYWluPSJCdWlnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE04JFRpbWVzdGFtcCxNOCRPdXRwdXRCdWZmZXIpCgojcHJpbnQoaGVhZChNOCwgbj01MCkpCiNwcmludCh0YWlsKE04LCBuPTUwKSkKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vib2dlblBvdGVuIDwtIE04JE91dHB1dEJ1ZmZlcgpnZWJvZ2VuUG90ZW4gPC0gYXMubnVtZXJpYyhnZWJvZ2VuUG90ZW4pCmhpc3QoZ2Vib2dlblBvdGVuLG1haW49IkdlYm9nZW4gbHV4ZSBwb3RlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgbHV4ZSBnZWJvZ2VuIHBvdGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2Vib2dlblBvdGVuKSkKYm94cGxvdCh4ID0gZ2Vib2dlblBvdGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBsdXhlIGdlYm9nZW4gcG90ZW4iLCB5bGFiPSJIb2V2ZWVsaGVpZCBsdXhlIGdlYm9nZW4gcG90ZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNOSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OSkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTlfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTlfdCA8LSBhcy5udW1lcmljKE05XyRUaW1lc3RhbXApCk05IDwtIHN1YnNldChNOV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTlfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcixtYWluPSJMYXNtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VsYXNkZVBvdGVuIDwtIE05JE91dHB1dEJ1ZmZlcgpnZWxhc2RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZWxhc2RlUG90ZW4pCmhpc3QoZ2VsYXNkZVBvdGVuLG1haW49IkdlbGFzZGUgbHV4ZSBwb3RlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VsYXNkZSBsdXhlIHBvdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWxhc2RlUG90ZW4pKQpib3hwbG90KGdlbGFzZGVQb3Rlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZWxhc2RlIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZWxhc2RlIHBvdGVuIikKCiNwcmludChzdW1tYXJ5KGdlbGFzZGVQb3RlbikpCmBgYAoKIyMjIE1hY2hpbmUgMTEgLSBwb2xpanN0bWFjaGluZQoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTExXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xMSkmKGl0ZW10eXBlX1Y9PSJFIikpKQptMTFfdCA8LSBhcy5udW1lcmljKE0xMV8kVGltZXN0YW1wKQpNMTEgPC0gc3Vic2V0KE0xMV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTExX3QgPCByZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTExJFRpbWVzdGFtcCxNMTEkT3V0cHV0QnVmZmVyLG1haW49IlBvbGlqc3RtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSJmaW5hbCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMTEkVGltZXN0YW1wLE0xMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlcG9saWpzdGVQb3RlbiA8LSBNMTEkT3V0cHV0QnVmZmVyCmdlcG9saWpzdGVQb3RlbiA8LSBhcy5udW1lcmljKGdlcG9saWpzdGVQb3RlbikKaGlzdChnZXBvbGlqc3RlUG90ZW4pCmJveHBsb3QoZ2Vwb2xpanN0ZVBvdGVuKQoKI3ByaW50KHN1bW1hcnkoZ2Vjb2F0ZVBvdGVuKSkKYGBgCgotLS0K