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c2V0IHhsYWJlbCAiT2Zmc2V0IGluIGZpbGUgKEtCKSIKc2V0IHlsYWJlbCAiTGF0ZW5jeSBpbiBNaWNyb3NlY29uZHMiCnBsb3QgJ3J3b2wuZGF0JyB1c2luZyAxOjIgdGl0bGUgIkxhdGVuY3kgUGxvdCIgd2l0aCBsaW5lcwpwYXVzZSAtMSAiSGl0IHJldHVybiB0byBjb250aW51ZSIKCiMKIyAkSWQ6IFBsb3Qgb2YgbGF0ZW5jeSB2ZXJzdXMgb2Zmc2V0IGluIGEgZmlsZQojCiMgUmVxdWlyZXMgZGF0YSBmaWxlICJyb2wuZGF0IiBmcm9tIHRoaXMgZGlyZWN0b3J5LAojIHNvIGNoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBydW5uaW5nLgojCgpzZXQgdGl0bGUgIkZpbGUgc3lzdGVtIHJlYWQgbGF0ZW5jeSAiCnNldCBhdXRvc2NhbGUgeApzZXQgeHRpY3MKc2V0IHhsYWJlbCAiT2Zmc2V0IGluIGZpbGUgKEtCKSIKc2V0IHlsYWJlbCAiTGF0ZW5jeSBpbiBNaWNyb3NlY29uZHMiCnBsb3QgJ3JvbC5kYXQnIHVzaW5nIDE6MiB0aXRsZSAiTGF0ZW5jeSBQbG90IiB3aXRoIGxpbmVzCnBhdXNlIC0xICJIaXQgcmV0dXJuIHRvIGNvbnRpbnVlIgoKIwojICRJZDogUGxvdCBvZiBsYXRlbmN5IHZlcnN1cyBvZmZzZXQgaW4gYSBmaWxlCiMKIyBSZXF1aXJlcyBkYXRhIGZpbGUgInJyb2wuZGF0IiBmcm9tIHRoaXMgZGlyZWN0b3J5LAojIHNvIGNoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBydW5uaW5nLgojCgpzZXQgdGl0bGUgIkZpbGUgc3lzdGVtIHJlLXJlYWQgbGF0ZW5jeSAiCnNldCBhdXRvc2NhbGUgeApzZXQgeHRpY3MKc2V0IHhsYWJlbCAiT2Zmc2V0IGluIGZpbGUgKEtCKSIKc2V0IHlsYWJlbCAiTGF0ZW5jeSBpbiBNaWNyb3NlY29uZHMiCnBsb3QgJ3Jyb2wuZGF0JyB1c2luZyAxOjIgdGl0bGUgIkxhdGVuY3kgUGxvdCIgd2l0aCBsaW5lcwpwYXVzZSAtMSAiSGl0IHJldHVybiB0byBjb250aW51ZSIKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlvem9uZTNfMzQ3L3NyYy9jdXJyZW50L2xpYmJpZi5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNDQ0ADAzMjYzMjYAMDAxMTYxMAAwMDAwMDAyNDAzMgAxMTM1NTY0MDQyMQAwMTU2NzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzaGVuaGFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyogCiAqIEhlcmUgaXMgYSB2ZXJ5IHNpbXBsZSBzZXQgb2Ygcm91dGluZXMgdG8gd3JpdGUgYW4gRXhjZWwgd29ya3NoZWV0IAogKiBNaWNyb3NvZnQgQklGRiBmb3JtYXQuIFRoZSBFeGNlbCB2ZXJzaW9uIGlzIHNldCB0byAyLjAgc28gdGhhdCBpdCAKICogd2lsbCB3b3JrIHdpdGggYWxsIHZlcnNpb25zIG9mIEV4Y2VsLgogKgogKiBBdXRob3I6IERvbiBDYXBwcyAKICovCgovKiAKICogTm90ZTogcm93cyBhbmQgY29sdW1zIHNob3VsZCBub3QgZXhjZWVkIDI1NSBvciB0aGlzIGNvZGUgd2lsbCAKICogYWN0IHBvb3JseQogKi8KCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvZmlsZS5oPgojaWYgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiNpbmNsdWRlIDxmY250bC5oPgojZWxzZQojaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQoT1NWNSkgfHwgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19ic2RpX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiNpbmNsdWRlIDxzdHJpbmcuaD4KI2VuZGlmCgojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKG1hY29zeCkKI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNlbmRpZgoKI2lmICgoZGVmaW5lZChzb2xhcmlzKSAmJiBkZWZpbmVkKCBfX0xQNjRfXyApKSB8fCBkZWZpbmVkKF9fczM5MHhfXykpCi8qIElmIHdlIGFyZSBidWlsZGluZyBmb3IgNjQtYml0IFNvbGFyaXMsIGFsbCBmdW5jdGlvbnMgdGhhdCByZXR1cm4gcG9pbnRlcnMKICogbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUgdGhleSBhcmUgdXNlZDsgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIGFzc3VtZQogKiB0aGF0IHRoZXkgcmV0dXJuIGludHMgYW5kIHRoZSB0b3AgMzIgYml0cyBvZiB0aGUgcG9pbnRlciB3aWxsIGJlIGxvc3QsCiAqIGNhdXNpbmcgc2VnbWVudGF0aW9uIGZhdWx0cy4gIFRoZSBmb2xsb3dpbmcgaW5jbHVkZXMgdGFrZSBjYXJlIG9mIHRoaXMuCiAqIEl0IHNob3VsZCBiZSBzYWZlIHRvIGFkZCB0aGVzZSBmb3IgYWxsIG90aGVyIE9TcyB0b28sIGJ1dCB3ZSdyZSBvbmx5CiAqIGRvaW5nIGl0IGZvciBTb2xhcmlzIG5vdyBpbiBjYXNlIGFub3RoZXIgT1MgdHVybnMgb3V0IHRvIGJlIGEgc3BlY2lhbCBjYXNlLgogKi8KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojZW5kaWYKLyogTGl0dGxlIEVuZGlhbiAqLwojZGVmaW5lIEVORElBTl8xICAxCi8qIEJpZyBFbmRpYW4gICAgKi8KI2RlZmluZSBFTkRJQU5fMiAgMgovKiBNaWRkbGUgRW5kaWFuICovCiNkZWZpbmUgRU5ESUFOXzMgIDMKLyogTWlkZGxlIEVuZGlhbiAqLwojZGVmaW5lIEVORElBTl80ICA0CgoKI2lmZGVmIEhBVkVfQU5TSUNfQwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBIZXJlIGlzIHRoZSBBUEkuLi4gRW5qb3kgCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogQ3JlYXRlIHdvcmtzaGVldCAJCQkJCQkJKi8KaW50IGNyZWF0ZV94bHMoY2hhciAqKTsJCQkKLyogICAgQXJnczogRmlsZW5hbWUJCQkJCQkJKi8KLyogICAgCQkJCQkJCQkJKi8KLyogQ2xvc2Ugd29ya3NoZWV0IAkJCQkJCQkqLwp2b2lkIGNsb3NlX3hscyhpbnQpOwkJCQovKiAgIEFyZ3M6IGZpbGUgZGVzY3JpcHRvcgkJCQkJCSovCi8qICAgIAkJCQkJCQkJCSovCi8qIFB1dCBhIDE2IGJpdCBpbnRlZ2VyIGluIHdvcmtzaGVldCAJCQkJCSovCnZvaWQgZG9faW50KGludCxpbnQsaW50LGludCk7CQkKLyogICAgQXJnczogZmlsZSBkZXNjcmlwdG9yLAkJCQkJCSovCi8qICAgIAkgIHZhbHVlLAkJCQkJCQkqLwovKgkgIHJvdywJCQkJCQkJCSovCi8qCSAgY29sdW1uCQkJCQkJCSovCgovKiBQdXQgYSBkb3VibGUgaW4gOCBieXRlIGZsb2F0IAkJCQkJKi8Kdm9pZCBkb19mbG9hdChpbnQsZG91YmxlLGludCxpbnQpOyAJCi8qICAgIEFyZ3M6IGZpbGUgZGVzY3JpcHRvciwJCQkJCQkqLwovKiAgICAJICB2YWx1ZSwJCQkJCQkJKi8KLyoJICByb3csCQkJCQkJCQkqLwovKgkgIGNvbHVtbgkJCQkJCQkqLwovKiBQdXQgYSBzdHJpbmcgaW4gd29ya3NoZWV0IAkJCQkJCSovCnZvaWQgZG9fbGFiZWwoaW50LGNoYXIgKixpbnQsaW50KTsJCi8qICAgIEFyZ3M6IGZpbGUgZGVzY3JpcHRvciwJCQkJCQkqLwovKiAgIAkgIHN0cmluZywJCQkJCQkJKi8KLyoJICByb3csCQkJCQkJCQkqLwovKgkgIGNvbHVtbgkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKY2hhciBsaWJiaWZfdmVyc2lvbltdID0gIkxpYmJpZiBWZXJzaW9uICRSZXZpc2lvbjogMy4yMiAkIjsKdm9pZCBkb19lb2YoaW50ICk7CQkvKiBVc2VkIGludGVybmFsbHkgKi8Kdm9pZCBkb19oZWFkZXIoaW50ICk7CQkvKiBVc2VkIGludGVybmFsbHkgKi8KaW50IGVuZGlhbih2b2lkKTsKI2VuZGlmCgojZGVmaW5lIEJPRiAweDkKI2RlZmluZSBJTlRFR0VSIDB4MgojZGVmaW5lIEZMT0FUIDB4MwojZGVmaW5lIExBQkVMIDB4NAojZGVmaW5lIEVYQ0VMX1ZFUlMgMHgyCiNkZWZpbmUgV09SS1NIRUVUIDB4MTAKCnN0cnVjdCBib2ZfcmVjb3JkeyAJCS8qIEJlZ2lubmluZyBvZiBmaWxlICovCgljaGFyIGhpX29wY29kZTsKCWNoYXIgbG9fb3Bjb2RlOwoJY2hhciBoaV9sZW5ndGg7CgljaGFyIGxvX2xlbmd0aDsKCWNoYXIgaGlfdmVyc2lvbjsJLyogRXhjZWwgdmVyc2lvbiAqLwoJY2hhciBsb192ZXJzaW9uOwoJY2hhciBoaV9maWxldHlwZTsKCWNoYXIgbG9fZmlsZXR5cGU7Cgl9OwpzdHJ1Y3QgaW50X3JlY29yZCB7CgljaGFyIGhpX29wY29kZTsJCS8qIFR5cGUgMiBvZiByZWNvcmQgKi8KCWNoYXIgbG9fb3Bjb2RlOwoJY2hhciBoaV9sZW5ndGg7CgljaGFyIGxvX2xlbmd0aDsKCWNoYXIgaGlfcm93OwoJY2hhciBsb19yb3c7CgljaGFyIGhpX2NvbHVtbjsKCWNoYXIgbG9fY29sdW1uOwoJY2hhciByZ2JoaTsKCWNoYXIgcmdibWVkOwoJY2hhciByZ2JsbzsKCWNoYXIgaGlfZGF0YTsKCWNoYXIgbG9fZGF0YTsKCX07CnN0cnVjdCBsYWJlbF9yZWNvcmQgewoJY2hhciBoaV9vcGNvZGU7CQkvKiBUeXBlIDQgb2YgcmVjb3JkICovCgljaGFyIGxvX29wY29kZTsKCWNoYXIgaGlfbGVuZ3RoOwoJY2hhciBsb19sZW5ndGg7CgljaGFyIGhpX3JvdzsKCWNoYXIgbG9fcm93OwoJY2hhciBoaV9jb2x1bW47CgljaGFyIGxvX2NvbHVtbjsKCWNoYXIgcmdiaGk7CgljaGFyIHJnYm1lZDsKCWNoYXIgcmdibG87CgljaGFyIHN0cmluZ19sZW5ndGg7CgljaGFyIHN0cl9hcnJheVsyNTZdOwoJfTsKc3RydWN0IGZsb2F0X3JlY29yZCB7CQkvKiBUeXBlIDMgcmVjb3JkICovCgljaGFyIGhpX29wY29kZTsKCWNoYXIgbG9fb3Bjb2RlOwoJY2hhciBoaV9sZW5ndGg7CgljaGFyIGxvX2xlbmd0aDsKCWNoYXIgaGlfcm93OwoJY2hhciBsb19yb3c7CgljaGFyIGhpX2NvbHVtbjsKCWNoYXIgbG9fY29sdW1uOwoJY2hhciByZ2JoaTsKCWNoYXIgcmdibWVkOwoJY2hhciByZ2JsbzsKCWRvdWJsZSBkYXRhOwoJfTsKLyoKICogV3JpdGUgdGhlIEVPRiBhbmQgY2xvc2UgdGhlIGZpbGUgCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKY2xvc2VfeGxzKGludCBmZCkKewojZWxzZQpjbG9zZV94bHMoZmQpCmludCBmZDsKewojZW5kaWYKCWRvX2VvZihmZCk7CgljbG9zZShmZCk7Cn0KCi8qCiAqIENyZWF0ZSB4bHMgd29ya3NoZWV0LiBDcmVhdGUgZmlsZSBhbmQgcHV0IHRoZSBCT0YgcmVjb3JkIGluIGl0LgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKY3JlYXRlX3hscyhjaGFyICpuYW1lKQp7CiNlbHNlCmNyZWF0ZV94bHMobmFtZSkKY2hhciAqbmFtZTsKewojZW5kaWYKCWludCBmZDsKCXVubGluayhuYW1lKTsKI2lmZGVmIFdpbmRvd3MKCWZkPW9wZW4obmFtZSxPX0JJTkFSWXxPX0NSRUFUfE9fUkRXUiwwNjY2KTsKI2Vsc2UKCWZkPW9wZW4obmFtZSxPX0NSRUFUfE9fUkRXUiwwNjY2KTsKI2VuZGlmCglpZihmZDwwKQoJewoJCXByaW50ZigiRXJyb3Igb3BlbmluZyBmaWxlICVzXG4iLG5hbWUpOwoJCWV4aXQoLTEpOwoJfQoJZG9faGVhZGVyKGZkKTsKCXJldHVybihmZCk7Cn0KCQojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZG9faGVhZGVyKGludCBmZCkgLyogU3RpY2sgdGhlIEJPRiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlICovCnsKI2Vsc2UKZG9faGVhZGVyKGZkKSAKaW50IGZkOwp7CiNlbmRpZgoJc3RydWN0IGJvZl9yZWNvcmQgYm9mOwoJYm9mLmhpX29wY29kZT1CT0Y7Cglib2YubG9fb3Bjb2RlID0gMHgwOwoJYm9mLmhpX2xlbmd0aD0weDQ7Cglib2YubG9fbGVuZ3RoPTB4MDsKCWJvZi5oaV92ZXJzaW9uPUVYQ0VMX1ZFUlM7Cglib2YubG9fdmVyc2lvbj0weDA7Cglib2YuaGlfZmlsZXR5cGU9V09SS1NIRUVUOwoJYm9mLmxvX2ZpbGV0eXBlPTB4MDsKCXdyaXRlKGZkLCZib2Ysc2l6ZW9mKHN0cnVjdCBib2ZfcmVjb3JkKSk7Cn0KCi8qCiAqIFB1dCBhbiBpbnRlZ2VyICgxNiBiaXQpIGluIHRoZSB3b3Jrc2hlZXQgCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZG9faW50KGludCBmZCxpbnQgdmFsLCBpbnQgcm93LCBpbnQgY29sdW1uKQp7CiNlbHNlCmRvX2ludChmZCx2YWwscm93LGNvbHVtbikKaW50IGZkLHZhbCxyb3csY29sdW1uOwp7CiNlbmRpZgoJc3RydWN0IGludF9yZWNvcmQgaW50cmVjOwoJc2hvcnQgc19yb3csc19jb2x1bW47CglzX3Jvdz0oc2hvcnQpcm93OwoJc19jb2x1bW49KHNob3J0KWNvbHVtbjsKICAgICAgICBpbnRyZWMuaGlfb3Bjb2RlPUlOVEVHRVI7CiAgICAgICAgaW50cmVjLmxvX29wY29kZT0weDAwOwogICAgICAgIGludHJlYy5oaV9sZW5ndGg9MHgwOTsKICAgICAgICBpbnRyZWMubG9fbGVuZ3RoPTB4MDA7CiAgICAgICAgaW50cmVjLnJnYmhpPTB4MDsKICAgICAgICBpbnRyZWMucmdibWVkPTB4MDsKICAgICAgICBpbnRyZWMucmdibG89MHgwOwogICAgICAgIGludHJlYy5oaV9yb3c9KGNoYXIpc19yb3cmMHhmZjsKICAgICAgICBpbnRyZWMubG9fcm93PShjaGFyKShzX3Jvdz4+OCkmMHhmZjsKICAgICAgICBpbnRyZWMuaGlfY29sdW1uPShjaGFyKShzX2NvbHVtbiYweGZmKTsKICAgICAgICBpbnRyZWMubG9fY29sdW1uPShjaGFyKShzX2NvbHVtbj4+OCkmMHhmZjsKICAgICAgICBpbnRyZWMuaGlfZGF0YT0odmFsICYgMHhmZik7CiAgICAgICAgaW50cmVjLmxvX2RhdGE9KHZhbCAmIDB4ZmYwMCk+Pjg7Cgl3cml0ZShmZCwmaW50cmVjLDEzKTsKfQoKLyogTm90ZTogVGhpcyByb3V0aW5lIGNvbnZlcnRzIEJpZyBFbmRpYW4gdG8gTGl0dGxlIEVuZGlhbiAKICogYW5kIHdyaXRlcyB0aGUgcmVjb3JkIG91dC4KICovCgovKiAKICogUHV0IGEgZG91YmxlIGluIHRoZSB3b3Jrc2hlZXQgYXMgOCBieXRlIGZsb2F0IGluIElFRUUgZm9ybWF0LgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmRvX2Zsb2F0KGludCBmZCwgZG91YmxlIHZhbHVlLCBpbnQgcm93LCBpbnQgY29sdW1uKQp7CiNlbHNlCmRvX2Zsb2F0KGZkLCB2YWx1ZSwgcm93LCBjb2x1bW4pCmludCBmZDsKZG91YmxlIHZhbHVlOwppbnQgcm93LGNvbHVtbjsKewojZW5kaWYKCXN0cnVjdCBmbG9hdF9yZWNvcmQgZmxvYXRyZWM7CglzaG9ydCBzX3JvdyxzX2NvbHVtbjsKCXVuc2lnbmVkIGNoYXIgKnNwdHIsKmRwdHI7CglzX3Jvdz0oc2hvcnQpcm93OwoJc19jb2x1bW49KHNob3J0KWNvbHVtbjsKICAgICAgICBmbG9hdHJlYy5oaV9vcGNvZGU9RkxPQVQ7CiAgICAgICAgZmxvYXRyZWMubG9fb3Bjb2RlPTB4MDA7CiAgICAgICAgZmxvYXRyZWMuaGlfbGVuZ3RoPTB4ZjsKICAgICAgICBmbG9hdHJlYy5sb19sZW5ndGg9MHgwMDsKICAgICAgICBmbG9hdHJlYy5yZ2JoaT0weDA7CiAgICAgICAgZmxvYXRyZWMucmdibWVkPTB4MDsKICAgICAgICBmbG9hdHJlYy5yZ2Jsbz0weDA7CiAgICAgICAgZmxvYXRyZWMuaGlfcm93PShjaGFyKShzX3JvdyYweGZmKTsKICAgICAgICBmbG9hdHJlYy5sb19yb3c9KGNoYXIpKChzX3Jvdz4+OCkmMHhmZik7CiAgICAgICAgZmxvYXRyZWMuaGlfY29sdW1uPShjaGFyKShzX2NvbHVtbiYweGZmKTsKICAgICAgICBmbG9hdHJlYy5sb19jb2x1bW49KGNoYXIpKChzX2NvbHVtbj4+OCkmMHhmZik7CglzcHRyID0odW5zaWduZWQgY2hhciAqKSAmdmFsdWU7CglkcHRyID0odW5zaWduZWQgY2hhciAqKSAmZmxvYXRyZWMuZGF0YTsKCglpZihlbmRpYW4oKT09RU5ESUFOXzIpIC8qIEJpZyBFbmRpYW4gKi8KCXsKCSAgIGRwdHJbMF09c3B0cls3XTsgLyogQ29udmVydCB0byBMaXR0bGUgRW5kaWFuICovCgkgICBkcHRyWzFdPXNwdHJbNl07CgkgICBkcHRyWzJdPXNwdHJbNV07CgkgICBkcHRyWzNdPXNwdHJbNF07CgkgICBkcHRyWzRdPXNwdHJbM107CgkgICBkcHRyWzVdPXNwdHJbMl07CgkgICBkcHRyWzZdPXNwdHJbMV07CgkgICBkcHRyWzddPXNwdHJbMF07Cgl9CglpZihlbmRpYW4oKT09RU5ESUFOXzMpICAvKiBNaWRkbGUgRW5kaWFuICovCgl7CgkgICBkcHRyWzBdPXNwdHJbNF07IC8qIDE2IGJpdCBzd2FwcGVkIEFSTSAqLwoJICAgZHB0clsxXT1zcHRyWzVdOwoJICAgZHB0clsyXT1zcHRyWzZdOwoJICAgZHB0clszXT1zcHRyWzddOwoJICAgZHB0cls0XT1zcHRyWzBdOwoJICAgZHB0cls1XT1zcHRyWzFdOwoJICAgZHB0cls2XT1zcHRyWzJdOwoJICAgZHB0cls3XT1zcHRyWzNdOwoJfQoKCWlmKGVuZGlhbigpPT1FTkRJQU5fMSkgLyogTGl0dGxlIEVuZGlhbiAqLwoJewoJICAgZHB0clswXT1zcHRyWzBdOyAvKiBEbyBub3QgY29udmVydCB0byBMaXR0bGUgRW5kaWFuICovCgkgICBkcHRyWzFdPXNwdHJbMV07CgkgICBkcHRyWzJdPXNwdHJbMl07CgkgICBkcHRyWzNdPXNwdHJbM107CgkgICBkcHRyWzRdPXNwdHJbNF07CgkgICBkcHRyWzVdPXNwdHJbNV07CgkgICBkcHRyWzZdPXNwdHJbNl07CgkgICBkcHRyWzddPXNwdHJbN107Cgl9CglpZihlbmRpYW4oKT09LTEpIC8qIFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSAqLwoJewoJICAgZHB0clswXT0wOwoJICAgZHB0clsxXT0wOwoJICAgZHB0clsyXT0wOwoJICAgZHB0clszXT0wOwoJICAgZHB0cls0XT0wOwoJICAgZHB0cls1XT0wOwoJICAgZHB0cls2XT0wOwoJICAgZHB0cls3XT0wOwoJICAgcHJpbnRmKCJFeGNlbCBvdXRwdXQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZS5cbiIpOwoJfQoJd3JpdGUoZmQsJmZsb2F0cmVjLDExKTsgLyogRG9uJ3Qgd3JpdGUgZmxvYXRyZWMuIFBhZGRpbmcgcHJvYmxlbXMgKi8KCXdyaXRlKGZkLCZmbG9hdHJlYy5kYXRhLDgpOyAvKiBXcml0ZSB2YWx1ZSBzZXBlcmF0ZWx5ICovCn0KCi8qCiAqIFB1dCBhIHN0cmluZyBhcyBhIGxhYmVsIGluIHRoZSB3b3Jrc2hlZXQuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZG9fbGFiZWwoaW50IGZkLCBjaGFyICpzdHJpbmcsIGludCByb3csIGludCBjb2x1bW4pCnsKI2Vsc2UKZG9fbGFiZWwoZmQsIHN0cmluZywgcm93LCBjb2x1bW4pCmludCBmZDsKY2hhciAqc3RyaW5nOwppbnQgcm93LGNvbHVtbjsKewojZW5kaWYKCXN0cnVjdCBsYWJlbF9yZWNvcmQgbGFiZWxyZWM7CglzaG9ydCBzX3JvdyxzX2NvbHVtbjsKCWludCBpOwoJZm9yKGk9MDtpPDI1NTtpKyspCgkJbGFiZWxyZWMuc3RyX2FycmF5W2ldPTA7CglzX3Jvdz0oc2hvcnQpcm93OwoJc19jb2x1bW49KHNob3J0KWNvbHVtbjsKCWk9c3RybGVuKHN0cmluZyk7CiAgICAgICAgbGFiZWxyZWMuaGlfb3Bjb2RlPUxBQkVMOwogICAgICAgIGxhYmVscmVjLmxvX29wY29kZT0weDAwOwogICAgICAgIGxhYmVscmVjLmhpX2xlbmd0aD0weDA4OyAvKiAyNjQgdG90YWwgYnl0ZXMgKi8KICAgICAgICBsYWJlbHJlYy5sb19sZW5ndGg9MHgwMTsKICAgICAgICBsYWJlbHJlYy5yZ2Jsbz0weDA7CiAgICAgICAgbGFiZWxyZWMucmdibWVkPTB4MDsKICAgICAgICBsYWJlbHJlYy5yZ2JoaT0weDA7CiAgICAgICAgbGFiZWxyZWMuaGlfcm93PShjaGFyKShzX3JvdyYweGZmKTsKICAgICAgICBsYWJlbHJlYy5sb19yb3c9KGNoYXIpKChzX3Jvdz4+OCkmMHhmZik7CiAgICAgICAgbGFiZWxyZWMuaGlfY29sdW1uPShjaGFyKShzX2NvbHVtbiYweGZmKTsKICAgICAgICBsYWJlbHJlYy5sb19jb2x1bW49KGNoYXIpKChzX2NvbHVtbj4+OCkmMHhmZik7CglsYWJlbHJlYy5zdHJpbmdfbGVuZ3RoPWk7CglpZihpID4gMjU1KSAvKiBJZiB0b28gbG9uZyB0aGVuIHRlcm1pbmF0ZSBpdCBlYXJseSAqLwoJCXN0cmluZ1syNTRdPTA7CglpPXN0cmxlbihzdHJpbmcpOwoJc3RyY3B5KGxhYmVscmVjLnN0cl9hcnJheSxzdHJpbmcpOwoKCXdyaXRlKGZkLCZsYWJlbHJlYyxzaXplb2Yoc3RydWN0IGxhYmVsX3JlY29yZCkpOwoKfQoKLyogCiAqIFdyaXRlIHRoZSBFT0YgaW4gdGhlIGZpbGUgCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZG9fZW9mKGludCBmZCkgCnsKI2Vsc2UKZG9fZW9mKGZkKSAKaW50IGZkOwp7CiNlbmRpZgoJY2hhciBidWZbXT17MHgwYSwweDAwLDB4MDAsMHgwMH07Cgl3cml0ZShmZCxidWYsNCk7Cn0KCQovKiAKICogUm91dGluZSB0byBkZXRlcm1pbmUgdGhlIEVuZGlhbi1uZXNzIG9mIHRoZSBzeXN0ZW0uIFRoaXMKICogaXMgbmVlZGVkIGZvciBJb3pvbmUgdG8gY29udmVydCBkb3VibGVzIChmbG9hdHMpIGludG8KICogTGl0dGxlLWVuZGlhbiBmb3JtYXQuIFRoaXMgaXMgbmVlZGVkIGZvciBFeGNlbCB0byBiZSAKICogYWJsZSB0byBpbnRlcnByZXQgdGhlIGZpbGUgCiAqLwppbnQKZW5kaWFuKHZvaWQpCnsKCWxvbmcgbG9uZyBmb28gPSAweDAxMDIwMzA0MDUwNjA3MDhMTDsKCWxvbmcgZm9vMSA9IDB4MDEyMzQ1Njc4OwoJdW5zaWduZWQgY2hhciAqYyxjMSxjMixjMyxjNCxjNSxjNixjNyxjODsKCWM9KHVuc2lnbmVkIGNoYXIgKikmZm9vOwoJYzE9KmMrKzsKCWMyPSpjKys7CgljMz0qYysrOwoJYzQ9KmMrKzsKCWM1PSpjKys7CgljNj0qYysrOwoJYzc9KmMrKzsKCWM4PSpjOwoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJLyogcHJpbnRmKCIleCAleCAleCAleCAleCAleCAleCAleFxuIixjMSxjMixjMyxjNCxjNSxjNixjNyxjOCk7ICovCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgkvKiBMaXR0bGUgRW5kaWFuIGZvcm1hdCA/ICggSW50ZWwgKSAqLwoJaWYoIChjMT09MHgwOCkgJiYgKGMyPT0weDA3KSAmJiAoYzM9PTB4MDYpICYmIChjND09MHgwNSkgJiYKCQkoYzU9PTB4MDQpICYmIChjNj09MHgwMykgJiYgKGM3PT0weDAyKSAmJiAoYzg9PTB4MDEpICkKCQlyZXR1cm4oRU5ESUFOXzEpOwoJLyogQmlnIEVuZGlhbiBmb3JtYXQgPyAgICAoIFNwYXJjLCBSaXNjLi4uICovCglpZiggKGMxPT0weDAxKSAmJiAoYzI9PTB4MDIpICYmIChjMz09MHgwMykgJiYgKGM0PT0weDA0KSAm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byBvciBtb3JlIGRpZmZlcmVudCBzZXR1cHMsIGZvciB0dW5pbmcgZmlsZXN5c3RlbXMgb3IgDQojIGNvbXBhcmluZyBkaWZmZXJlbnQgcGllY2VzIG9mIGhhcmR3YXJlLg0KIw0KIyBUaGlzIHNjcmlwdCBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwgdG9vIHNob3J0IGFuZCB0b28gdHJpdmlhbA0KIyB0byBkZXNlcnZlIGEgY29weXJpZ2h0Lg0KIw0KIyBTaW1wbHkgcnVuIGlvem9uZSBsaWtlLCBmb3IgZXhhbXBsZSwgLi9pb3pvbmUgLWEgLWcgNEcgPiBjb25maWcxLm91dCAoaWYgeW91ciBtYWNoaW5lIGhhcyA0R0IpDQojIGFuZCB0aGVuIHJ1biBwZXJsIHJlcG9ydC5wbCBjb25maWcxLm91dA0KIyBvciBnZXQgYW5vdGhlciByZXBvcnQgZnJvbSBhbm90aGVyIGJveCBpbnRvIGNvbmZpZzIub3V0IGFuZCBydW4NCiMgcGVybCByZXBvcnQucGwgY29uZmlnMS5vdXQgY29uZmlnMi5vdXQNCiMgdGhlIGxvb2sgaW4gdGhlIHJlcG9ydF8qIGRpcmVjdG9yeSBmb3IgLnBuZw0KIw0KIyBJZiB5b3UgZG9uJ3QgbGlrZSBwbmcgb3IgdGhlIGdyYXBoaWMgc2l6ZSwgc2VhcmNoIGZvciAic2V0IHRlcm1pbmFsIiBpbiB0aGlzIGZpbGUgYW5kIHB1dCB3aGF0ZXZlciBnbnVwbG90DQojIHRlcm1pbmFsIHlvdSB3YW50LiBOb3RlIEkndmUgYWxzbyBub3RpY2VkIHRoYXQgZ251cGxvdCBzd2l0Y2hlZCB0aGUgc2V0IHRlcm1pbmFsIHBuZyBzeW50YXgNCiMgYSB3aGlsZSBiYWNrLCB5b3UgbWlnaHQgbmVlZCAic2V0IHRlcm1pbmFsIHBuZyBzbWFsbCBzaXplIDkwMCw3MDAiDQojDQoNCg0KQFJlcG9ydHM9QEFSR1Y7DQoNCmRpZSAidXNhZ2U6ICQwIDxpb3pvbmUub3V0PiBbPGlvem9uZTIub3V0Pi4uLl1cbiIgaWYgbm90IEBSZXBvcnRzIG9yIGdyZXAgKG18Xi18LCBAUmVwb3J0cyk7DQoNCmRpZSAicmVwb3J0IGZpbGVzIG11c3QgYmUgaW4gY3VycmVudCBkaXJlY3RvcnkiIGlmIGdyZXAgKG18L3wsIEBSZXBvcnRzKTsNCg0KJWNvbHVtbnM9KA0KICAgICAgICAgJ3dyaXRlJyAgICAgPT4zLA0KICAgICAgICAgJ3JlYWQnICAgICAgPT41LA0KICAgICAgICAgJ3Jld3JpdGUnICAgPT40LA0KICAgICAgICAgJ3JlcmVhZCcgICAgPT42LA0KICAgICAgICAgJ3JhbmRyZWFkJyAgPT43LA0KICAgICAgICAgJ3JhbmR3cml0ZScgPT44LA0KICAgICAgICAgJ2Jrd2RyZWFkJyAgPT45LA0KICAgICAgICAgJ3JlY3Jld3JpdGUnPT4xMCwNCiAgICAgICAgICdzdHJpZGVyZWFkJz0+MTEsDQogICAgICAgICAnZndyaXRlJyAgICA9PjEyLA0KICAgICAgICAgJ2ZyZXdyaXRlJyAgPT4xMywNCiAgICAgICAgICdmcmVhZCcgICAgID0+MTQsDQogICAgICAgICAnZnJlcmVhZCcgICA9PjE1LA0KICAgICAgICAgKTsNCg0KIw0KIyBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeS4gdGhlIG5hbWUgaXMgdGhlIGNvbmNhdGVuYXRpb24NCiMgb2YgYWxsIHJlcG9ydCBmaWxlIG5hbWVzIChtaW51cyB0aGUgZmlsZSBleHRlbnNpb24sIHBsdXMNCiMgcHJlZml4IHJlcG9ydF8pDQojDQokb3V0ZGlyPSJyZXBvcnRfIi5qb2luKCJfIixtYXB7LyhbXlwuXSspKFwuLiopPy8gJiYgJDF9KEBSZXBvcnRzKSk7DQoNCnByaW50IFNUREVSUiAiT3V0cHV0IGRpcmVjdG9yeTogJG91dGRpciAiOw0KDQppZiAoIC1kICRvdXRkaXIgKSANCnsNCiAgICBwcmludCBTVERFUlIgIihyZW1vdmluZyBvbGQgZGlyZWN0b3J5KSAiOyANCiAgICBzeXN0ZW0gInJtIC1yZiAkb3V0ZGlyIjsNCn0NCg0KbWtkaXIgJG91dGRpciBvciBkaWUgImNhbm5vdCBtYWtlIGRpcmVjdG9yeSAkb3V0ZGlyIjsNCg0KcHJpbnQgU1RERVJSICJkb25lLlxuUHJlcGFyaW5nIGRhdGEgZmlsZXMuLi4iOw0KDQpmb3JlYWNoICRyZXBvcnQgKEBSZXBvcnRzKQ0Kew0KICAgIG9wZW4oSSwgJHJlcG9ydCkgb3IgZGllICJjYW5ub3Qgb3BlbiAkcmVwb3J0IGZvciByZWFkaW5nIjsNCiAgICAkcmVwb3J0PX4vXihbXlwuXSspLzsNCiAgICAkZGF0YWZpbGU9IiQxLmRhdCI7DQogICAgcHVzaCBAZGF0YWZpbGVzLCAkZGF0YWZpbGU7DQogICAgb3BlbihPLCAiPiRvdXRkaXIvJGRhdGFmaWxlIikgb3IgZGllICJjYW5ub3Qgb3BlbiAkb3V0ZGlyLyRkYXRhZmlsZSBmb3Igd3JpdGluZyI7DQogICAgb3BlbihPMiwgIj4kb3V0ZGlyLzJkLSRkYXRhZmlsZSIpIG9yIGRpZSAiY2Fubm90IG9wZW4gJG91dGRpci8kZGF0YWZpbGUgZm9yIHdyaXRpbmciOw0KICAgIHdoaWxlKDxJPikNCiAgICB7DQogICAgICAgIG5leHQgdW5sZXNzICggL15bXHNcZF0rJC8gKTsNCiAgICAgICAgQHNwbGl0ID0gc3BsaXQoKTsNCiAgICAgICAgbmV4dCB1bmxlc3MgKCBAc3BsaXQgPT0gMTUgKTsNCiAgICAgICAgcHJpbnQgTzsNCiAgICAgICAgcHJpbnQgTzIgaWYgJHNwbGl0WzFdID09IDE2Mzg0IG9yICRzcGxpdFswXSA9PSAkc3BsaXRbMV07DQogICAgfQ0KICAgIGNsb3NlIEksIE8sIE8yOw0KfQ0KDQpwcmludCBTVERFUlIgImRvbmUuXG5HZW5lcmF0aW5nIGdyYXBoczoiOw0KDQpmb3JlYWNoICRjb2x1bW4gKGtleXMgJWNvbHVtbnMpDQp7DQogICAgcHJpbnQgU1RERVJSICIgJGNvbHVtbiI7DQogICAgDQogICAgb3BlbihHLCAiPiRvdXRkaXIvJGNvbHVtbi5kbyIpIG9yIGRpZSAiY2Fubm90IG9wZW4gJG91dGRpci8kY29sdW1uLmRvIGZvciB3cml0aW5nIjsNCiAgICBwcmludCBHIHFxew0Kc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2U6ICRjb2x1bW4iDQpzZXQgZ3JpZCBsdCAyIGx3IDENCnNldCBzdXJmYWNlDQpzZXQgcGFyYW1ldHJpYw0Kc2V0IHh0aWNzDQpzZXQgeXRpY3MNCnNldCBsb2dzY2FsZSB4IDINCnNldCBsb2dzY2FsZSB5IDINCnNldCBhdXRvc2NhbGUgeg0Kc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQ0Kc2V0IHhsYWJlbCAiRmlsZSBzaXplIGluIEtCeXRlcyINCnNldCB5bGFiZWwgIlJlY29yZCBzaXplIGluIEtieXRlcyINCnNldCB6bGFiZWwgIktieXRlcy9zZWMiDQpzZXQgZGF0YSBzdHlsZSBsaW5lcw0Kc2V0IGRncmlkM2QgODAsODAsMw0KI3NldCB0ZXJtaW5hbCBwbmcgc21hbGwgcGljc2l6ZSA5MDAgNzAwDQpzZXQgdGVybWluYWwgcG5nIHNtYWxsIHNpemUgOTAwIDcwMA0Kc2V0IG91dHB1dCAiJGNvbHVtbi5wbmciDQp9Ow0KDQogICAgcHJpbnQgRyAic3Bsb3QgIi4gam9pbigiLCAiLCBtYXB7cXF7IiRfIiB1c2luZyAxOjI6JGNvbHVtbnN7JGNvbHVtbn0gdGl0bGUgIiRfIn19KEBkYXRhZmlsZXMpKTsNCg0KICAgIHByaW50IEcgIlxuIjsNCg0KICAgIGNsb3NlIEc7DQoNCiAgICBvcGVuKEcsICI+JG91dGRpci8yZC0kY29sdW1uLmRvIikgb3IgZGllICJjYW5ub3Qgb3BlbiAkb3V0ZGlyLyRjb2x1bW4uZG8gZm9yIHdyaXRpbmciOw0KICAgIHByaW50IEcgcXF7DQpzZXQgdGl0bGUgIklvem9uZSBwZXJmb3JtYW5jZTogJGNvbHVtbiINCiNzZXQgdGVybWluYWwgcG5nIHNtYWxsIHBpY3NpemUgNDUwIDM1MA0Kc2V0IHRlcm1pbmFsIHBuZyBzbWFsbCBzaXplIDQ1MCAzNTANCnNldCBsb2dzY2FsZSB4DQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gS0J5dGVzIg0Kc2V0IHlsYWJlbCAiS2J5dGVzL3NlYyINCnNldCBvdXRwdXQgIjJkLSRjb2x1bW4ucG5nIg0KfTsNCg0KICAgIHByaW50IEcgInBsb3QgIi4gam9pbigi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XSBbLWhdCiAgICAgICAtZiAjICAgICAgRm9yY2UgZmFjdG9yLiBYXjMgZmlsZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCByZW1vdmVkLgogICAgICAgLWwgIyAgICAgIExvd2VyIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiB0aGUgRm9yY2UgZmFjdG9yLgogICAgICAgLXUgIyAgICAgIFVwcGVyIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiB0aGUgRm9yY2UgZmFjdG9yLgogICAgICAgLXMgIyAgICAgIE9wdGlvbmFsLiBTZXRzIGZpbGVzaXplIGZvciB0aGUgY3JlYXRlL3dyaXRlLiBNYXkgdXNlIHN1ZmZpeCAnSycgb3IgJ00nLgogICAgICAgLWUgICAgICAgIEV4Y2VsIGltcG9ydGFibGUgZm9ybWF0LgogICAgICAgLWIgICAgICAgIE91dHB1dCBiZXN0IGNhc2UuCiAgICAgICAtdyAgICAgICAgT3V0cHV0IHdvcnN0IGNhc2UuCiAgICAgICAtZCA8ZGlyPiAgU3BlY2lmeSBzdGFydGluZyBkaXJlY3RvcnkuCiAgICAgICAtVSA8ZGlyPiAgTW91bnQgcG9pbnQgdG8gcmVtb3VudCBiZXR3ZWVuIHRlc3RzLgogICAgICAgLXQgICAgICAgIFZlcmJvc2Ugb3V0cHV0IG9wdGlvbi4KICAgICAgIC12ICAgICAgICBWZXJzaW9uIGluZm9ybWF0aW9uLgogICAgICAgLWggICAgICAgIEhlbHAgdGV4dC4KICoKICogWCBpcyBhIGZvcmNlIGZhY3Rvci4gVGhlIHRvdGFsIG51bWJlciBvZiBmaWxlcyB3aWxsCiAqICAgYmUgWCAqIFggKiBYICAgKCBYIF4gMyApCiAqICAgVGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSB0cmVlIGlzOgogKiAgIFggbnVtYmVyIG9mIExldmVsIDEgZGlyZWN0b3JpZXMsIHdpdGggWCBudW1iZXIgb2YKICogICBsZXZlbCAyIGRpcmVjdG9yaWVzLCB3aXRoIFggbnVtYmVyIG9mIGZpbGVzIGluIGVhY2gKICogICBvZiB0aGUgbGV2ZWwgMiBkaXJlY3Rvcmllcy4KICoKICogICBFeGFtcGxlOiAgZmlsZW9wIDIKICoKICogICAgICAgICAgIGRpcl8xICAgICAgICAgICAgICAgICAgICAgICAgZGlyXzIKICogICAgICAgICAgLyAgICAgXCAgICAgICAgICAgICAgICAgICAgICAvICAgICBcCiAqICAgIHNkaXJfMSAgICAgICBzZGlyXzIgICAgICAgICAgc2Rpcl8xICAgICAgIHNkaXJfMgogKiAgICAvICAgICBcICAgICAvICAgICBcICAgICAgICAgIC8gICAgIFwgICAgICAvICAgICBcCiAqIGZpbGVfMSBmaWxlXzIgZmlsZV8xIGZpbGVfMiAgIGZpbGVfMSBmaWxlXzIgZmlsZV8xIGZpbGVfMgogKgogKiBFYWNoIGZpbGUgd2lsbCBiZSBjcmVhdGVkLCBhbmQgdGhlbiAxIGJ5dGUgaXMgd3JpdHRlbiB0byB0aGUgZmlsZS4KICoKICovCgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc3RhdC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZGlyZW50Lmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNpbmNsdWRlIDxsaW1pdHMuaD4KCiNpZiBkZWZpbmVkKFdpbmRvd3MpCiNpbmNsdWRlIDxXaW5kb3dzLmg+CiNlbmRpZgojaWYgIWRlZmluZWQoUEFUSF9NQVgpCiNkZWZpbmUgUEFUSF9NQVggMjU1CiNlbmRpZgoKaW50IHgsZXhjZWw7CmludCB2ZXJib3NlID0gMDsKaW50IHN6ID0gMTsKY2hhciAqbWJ1ZmZlcjsKI2RlZmluZSBfU1RBVF9DUkVBVEUgMAojZGVmaW5lIF9TVEFUX1dSSVRFIDEKI2RlZmluZSBfU1RBVF9DTE9TRSAyCiNkZWZpbmUgX1NUQVRfTElOSyAzCiNkZWZpbmUgX1NUQVRfVU5MSU5LIDQKI2RlZmluZSBfU1RBVF9ERUxFVEUgNQojZGVmaW5lIF9TVEFUX1NUQVQgNgojZGVmaW5lIF9TVEFUX0FDQ0VTUyA3CiNkZWZpbmUgX1NUQVRfQ0hNT0QgOAojZGVmaW5lIF9TVEFUX1JFQURESVIgOQojZGVmaW5lIF9TVEFUX0RJUl9DUkVBVEUgMTAKI2RlZmluZSBfU1RBVF9ESVJfREVMRVRFIDExCiNkZWZpbmUgX1NUQVRfUkVBRCAxMgojZGVmaW5lIF9TVEFUX09QRU4gMTMKI2RlZmluZSBfU1RBVF9ESVJfVFJBVkVSU0UgMTQKI2RlZmluZSBfTlVNX1NUQVRTIDE1CnN0cnVjdCBzdGF0X3N0cnVjdCB7Cglkb3VibGUgc3RhcnR0aW1lOwoJZG91YmxlIGVuZHRpbWU7Cglkb3VibGUgc3BlZWQ7Cglkb3VibGUgYmVzdDsKCWRvdWJsZSB3b3JzdDsKCWRvdWJsZSBkdW1teTsKCWRvdWJsZSB0b3RhbF90aW1lOwoJZG91YmxlIGR1bW15MTsKCWxvbmcgbG9uZyBjb3VudGVyOwp9IHZvbGF0aWxlIHN0YXRzW19OVU1fU1RBVFNdOwoKCnN0YXRpYyBkb3VibGUgdGltZV9zb19mYXIodm9pZCk7CnZvaWQgZGlyX2NyZWF0ZShpbnQpOwp2b2lkIGRpcl90cmF2ZXJzZShpbnQpOwp2b2lkIGRpcl9kZWxldGUoaW50KTsKdm9pZCBmaWxlX2NyZWF0ZShpbnQpOwp2b2lkIGZpbGVfc3RhdChpbnQpOwp2b2lkIGZpbGVfYWNjZXNzKGludCk7CnZvaWQgZmlsZV9jaG1vZChpbnQpOwp2b2lkIGZpbGVfcmVhZGRpcihpbnQpOwp2b2lkIGZpbGVfZGVsZXRlKGludCk7CnZvaWQgZmlsZV9saW5rKGludCk7CnZvaWQgZmlsZV91bmxpbmsoaW50KTsKdm9pZCBmaWxlX3JlYWQoaW50KTsKdm9pZCBzcGxhc2godm9pZCk7CnZvaWQgdXNhZ2Uodm9pZCk7CnZvaWQgYnplcm8oKTsKdm9pZCBjbGVhcl9zdGF0cygpOwppbnQgdmFsaWRhdGUoY2hhciAqLCBpbnQgLCBjaGFyICk7CgojZGVmaW5lIFRISVNWRVJTSU9OICIgICAgICAgICRSZXZpc2lvbjogMS41MyAkIgovKiNkZWZpbmUgTlVMTCAwKi8KCmNoYXIgdmVyc2lvbltdPVRISVNWRVJTSU9OOwpjaGFyIHRoZWRpcltQQVRIX01BWF09Ii4iOyAvKiBEZWZhdWx0IGlzIHRvIHVzZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgKi8KY29uc3QgY2hhciAqbW91bnRuYW1lPU5VTEw7IC8qIERlZmF1bHQgaXMgbm90IHRvIHVubW91bnQgYW55dGhpbmcgYmV0d2VlbiB0aGUgdGVzdHMgKi8KCmludCBjcmV0OwppbnQgbG93ZXIsIHVwcGVyLHJhbmdlOwppbnQgaTsKaW50IGJlc3QsIHdvcnN0OwppbnQgZGlybGVuOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogUm91dGluZSB0byBwdXJnZSB0aGUgYnVmZmVyIGNhY2hlIGJ5IHVubW91bnRpbmcgZHJpdmUuCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwp2b2lkIHB1cmdlX2J1ZmZlcl9jYWNoZSgpCnsKCWlmICghbW91bnRuYW1lKQoJCXJldHVybjsKCgljaGFyIGN3ZFtQQVRIX01BWF07CgljaGFyIGNvbW1hbmRbMTAyNF07CglpbnQgcmV0LGk7CgoJZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOwoJY2hkaXIoIi8iKTsKCXN0cmNweShjb21tYW5kLCJ1bW91bnQgIik7CglzdHJjYXQoY29tbWFuZCwgbW91bnRuYW1lKTsKICAgICAgICAvKgogICAgICAgICAgIHVtb3VudCBtaWdodCBmYWlsIGlmIHRoZSBkZXZpY2UgaXMgc3RpbGwgYnVzeSwgc28KICAgICAgICAgICByZXRyeSB1bm1vdW50aW5nIHNldmVyYWwgdGltZXMgd2l0aCBpbmNyZWFzaW5nIGRlbGF5cwogICAgICAgICovCiAgICAgICAgZm9yIChpID0gMTsgaSA8IDEwOyArK2kpIHsKICAgICAgICAgICAgICAgcmV0ID0gc3lzdGVtKGNvbW1hbmQpOwogICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIHNsZWVwKGkpOyAvLyBzZWNvbmRzCiAgICAgICAgfQoJc3RyY3B5KGNvbW1hbmQsIm1vdW50ICIpOwoJc3RyY2F0KGNvbW1hbmQsIG1vdW50bmFtZSk7CglzeXN0ZW0oY29tbWFuZCk7CgljaGRpcihjd2QpOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKCWlmKGFyZ2MgPT0gMSkKCXsKCQl1c2FnZSgpOwoJCWV4aXQoMSk7Cgl9Cgl3aGlsZSgoY3JldCA9IGdldG9wdChhcmdjLGFyZ3YsImhid2V0dmY6czpsOnU6ZDpVOiAiKSkgIT0gRU9GKXsKCQlzd2l0Y2goY3JldCl7CiAgICAgICAgICAgICAgICBjYXNlICdoJzoKICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdkJyA6CiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmxlbj1zdHJsZW4ob3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGFyZ1tkaXJsZW4tMV09PScvJykKICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpcmxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNweSh0aGVkaXIsIG9wdGFyZywgZGlybGVuKTsKCQkJdGhlZGlyW2Rpcmxlbl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCQljYXNlICdVJzoKCQkJbW91bnRuYW1lID0gb3B0YXJnOwoJCQlicmVhazsKCQljYXNlICdmJzoJLyogRm9yY2UgZmFjdG9yICovCgkJCXg9YXRvaShvcHRhcmcpOwoJCQlpZih4IDwgMCkKCQkJCXg9MTsKCQkJYnJlYWs7CgkJY2FzZSAncyc6CS8qIFNpemUgb2YgZmlsZXMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgc3o9YXRvaShvcHRhcmcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdrJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0snKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeiA9ICgxMDI0ICogYXRvaShvcHRhcmcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdtJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J00nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeiA9ICgxMDI0ICogMTAyNCAqIGF0b2kob3B0YXJnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJaWYoc3ogPCAwKQoJCQkJc3o9MTsKCQkJYnJlYWs7CgkJY2FzZSAnbCc6CS8qIGxvd2VyIGZvcmNlIHZhbHVlICovCgkJCWxvd2VyPWF0b2kob3B0YXJnKTsKCQkJcmFuZ2U9MTsKCQkJaWYobG93ZXIgPCAwKQoJCQkJbG93ZXI9MTsKCQkJYnJlYWs7CgkJY2FzZSAndic6CS8qIHZlcnNpb24gKi8KCQkJc3BsYXNoKCk7CgkJCWV4aXQoMCk7CgkJCWJyZWFrOwoJCWNhc2UgJ3UnOgkvKiB1cHBlciBmb3JjZSB2YWx1ZSAqLwoJCQl1cHBlcj1hdG9pKG9wdGFyZyk7CgkJCXJhbmdlPTE7CgkJCWlmKHVwcGVyIDwgMCkKCQkJCXVwcGVyPTE7CgkJCWJyZWFrOwoJCWNhc2UgJ3QnOgkvKiB2ZXJib3NlICovCgkJCXZlcmJvc2U9MTsKCQkJYnJlYWs7CgkJY2FzZSAnZSc6CS8qIEV4Y2VsICovCgkJCWV4Y2VsPTE7CgkJCWJyZWFrOwoJCWNhc2UgJ2InOgkvKiBCZXN0ICovCgkJCWJlc3Q9MTsKCQkJYnJlYWs7CgkJY2FzZSAndyc6CS8qIFdvcnN0ICovCgkJCXdvcnN0PTE7CgkJCWJyZWFrOwoJCX0KCX0KCW1idWZmZXI9KGNoYXIgKiltYWxsb2Moc3opOwoJbWVtc2V0KG1idWZmZXIsJ2EnLHN6KTsKCWlmKCFleGNlbCkKCSAgcHJpbnRmKCJcbkZpbGVvcDogIFdvcmtpbmcgaW4gJXMsIEZpbGUgc2l6ZSBpcyAlZCwgIE91dHB1dCBpcyBpbiBPcHMvc2VjLiAoQT1BdmcsIEI9QmVzdCwgVz1Xb3JzdClcbiIsIHRoZWRpciwgc3opOwoJaWYoIXZlcmJvc2UpCgl7CiNpZmRlZiBXaW5kb3dzCgkgICAJcHJpbnRmKCIgLiAgICAgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICUxMHNcbiIsCiAgICAgICAJICAgCSJta2RpciIsImNoZGlyIiwicm1kaXIiLCJjcmVhdGUiLCJvcGVuIiwicmVhZCIsIndyaXRlIiwiY2xvc2UiLCJzdGF0IiwKCQkiYWNjZXNzIiwiY2htb2QiLCJyZWFkZGlyIiwiZGVsZXRlIiwiIFRvdGFsX2ZpbGVzIik7CiNlbHNlCgoJICAgCXByaW50ZigiIC4gICAgICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICU3cyAlN3MgJTdzICUxMHNcbiIsCiAgICAgICAJICAgCSJta2RpciIsImNoZGlyIiwicm1kaXIiLCJjcmVhdGUiLCJvcGVuIiwgInJlYWQiLCJ3cml0ZSIsImNsb3NlIiwic3RhdCIsCgkJImFjY2VzcyIsImNobW9kIiwicmVhZGRpciIsImxpbmsgICIsInVubGluayIsImRlbGV0ZSIsCgkJIiBUb3RhbF9maWxlcyIpOwojZW5kaWYKCX0KCWNoZGlyKHRoZWRpcik7IC8qIGNoYW5nZSBzdGFydGluZyBwb2ludCAqLwoJaWYoeD09MCkKCQl4PTE7CglpZihyYW5nZT09MCkKCQlsb3dlcj11cHBlcj14OwoJZm9yKGk9bG93ZXI7aTw9dXBwZXI7aSsrKQoJewoJCWNsZWFyX3N0YXRzKCk7CgkJeD1pOwoJICAgLyoKCSAgICAqIERpciBDcmVhdGUgdGVzdCAKCSAgICAqLwoJICAgcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkgICBkaXJfY3JlYXRlKHgpOwoKCSAgIGlmKHZlcmJvc2UpCgkgICB7CgkgICAgICBwcmludGYoIm1rZGlyOiAgIERpcnMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsIHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnRvdGFsX3RpbWUpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBBdmcgbWtkaXIocykvc2VjICAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQlzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnRvdGFsX3RpbWUvc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgbWtkaXIocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsMS9zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5iZXN0LHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBta2RpcihzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsMS9zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdCxzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdCk7CgkgICB9CgoJICAgLyoKCSAgICAqIERpciBUcmF2ZXJzZSB0ZXN0CgkgICAgKi8KCSAgIHB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJICAgZGlyX3RyYXZlcnNlKHgpOwoKCSAgIGlmKHZlcmJvc2UpCgkgICB7CgkgICAgICBwcmludGYoImNoZGlyOiAgIERpcnMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uY291bnRlcik7CgkgICAgICBwcmludGYoIlRvdGFsIFRpbWUgPSAlMTIuOWYgc2Vjb25kc1xuIiwgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS50b3RhbF90aW1lKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQXZnIGNoZGlyKHMpL3NlYyAgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5jb3VudGVyL3N0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS50b3RhbF90aW1lL3N0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgY2hkaXIocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsMS9zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmJlc3Qsc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5iZXN0KTsKCSAgICAgIHByaW50ZigiICAgICAgICAgV29yc3QgY2hkaXIocykvc2VjICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuXG4iLDEvc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS53b3JzdCxzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLndvcnN0KTsKCSAgIH0KCgkgICAvKgoJICAgICogRGlyIGRlbGV0ZSB0ZXN0CgkgICAgKi8KCSAgIHB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJICAgZGlyX2RlbGV0ZSh4KTsKCgkgICBpZih2ZXJib3NlKQoJICAgewoJICAgcHJpbnRmKCJybWRpcjogICBEaXJzID0gJTlsbGQgIixzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5jb3VudGVyKTsKCSAgIHByaW50ZigiVG90YWwgVGltZSA9ICUxMi45ZiBzZWNvbmRzXG4iLHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnRvdGFsX3RpbWUpOwoJICAgcHJpbnRmKCIgICAgICAgICBBdmcgcm1kaXIocykvc2VjICAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQlzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnRvdGFsX3RpbWUvc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uY291bnRlcik7CgkgICBwcmludGYoIiAgICAgICAgIEJlc3Qgcm1kaXIocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsMS9zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5iZXN0LHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLmJlc3QpOwoJICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBybWRpcihzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsMS9zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS53b3JzdCxzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS53b3JzdCk7CgkgICB9CgoJICAgLyoKCSAgICAqIENyZWF0ZSB0ZXN0IAoJICAgICovCgkgICBwdXJnZV9idWZmZXJfY2FjaGUoKTsKCSAgIGZpbGVfY3JlYXRlKHgpOwoJICAgaWYodmVyYm9zZSkKCSAgIHsKCSAgICAgIHByaW50ZigiY3JlYXRlOiAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0NSRUFURV0uY291bnRlcik7CgkgICAgICBwcmludGYoIlRvdGFsIFRpbWUgPSAlMTIuOWYgc2Vjb25kc1xuIiwgc3RhdHNbX1NUQVRfQ1JFQVRFXS50b3RhbF90aW1lKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQXZnIGNyZWF0ZShzKS9zZWMgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJc3RhdHNbX1NUQVRfQ1JFQVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0NSRUFURV0udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfQ1JFQVRFXS50b3RhbF90aW1lL3N0YXRzW19TVEFUX0NSRUFURV0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgY3JlYXRlKHMpL3NlYyAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCTEvc3RhdHNbX1NUQVRfQ1JFQVRFXS5iZXN0LHN0YXRzW19TVEFUX0NSRUFURV0uYmVzdCk7CgkgICAgICBwcmludGYoIiAgICAgICAgIFdvcnN0IGNyZWF0ZShzKS9zZWMgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcblxuIiwKCQkJMS9zdGF0c1tfU1RBVF9DUkVBVEVdLndvcnN0LHN0YXRzW19TVEFUX0NSRUFURV0ud29yc3QpOwoJICAgICAgcHJpbnRmKCJ3cml0ZTogICBGaWxlcyA9ICU5bGxkICIsc3RhdHNbX1NUQVRfV1JJVEVdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsIHN0YXRzW19TVEFUX1dSSVRFXS50b3RhbF90aW1lKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQXZnIHdyaXRlKHMpL3NlYyAgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJc3RhdHNbX1NUQVRfV1JJVEVdLmNvdW50ZXIvc3RhdHNbX1NUQVRfV1JJVEVdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX1dSSVRFXS50b3RhbF90aW1lL3N0YXRzW19TVEFUX1dSSVRFXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQmVzdCB3cml0ZShzKS9zZWMgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJMS9zdGF0c1tfU1RBVF9XUklURV0uYmVzdCxzdGF0c1tfU1RBVF9XUklURV0uYmVzdCk7CiAgIAkgICAgICBwcmludGYoIiAgICAgICAgIFdvcnN0IHdyaXRlKHMpL3NlYyAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcblxuIiwKCQkJMS9zdGF0c1tfU1RBVF9XUklURV0ud29yc3Qsc3RhdHNbX1NUQVRfV1JJVEVdLndvcnN0KTsKCSAgICAgIHByaW50ZigiY2xvc2U6ICAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0NMT1NFXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiVG90YWwgVGltZSA9ICUxMi45ZiBzZWNvbmRzXG4iLCBzdGF0c1tfU1RBVF9DTE9TRV0udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyBjbG9zZShzKS9zZWMgICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX0NMT1NFXS5jb3VudGVyL3N0YXRzW19TVEFUX0NMT1NFXS50b3RhbF90aW1lLAoJCQlzdGF0c1tfU1RBVF9DTE9TRV0udG90YWxfdGltZS9zdGF0c1tfU1RBVF9DTE9TRV0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgY2xvc2Uocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCTEvc3RhdHNbX1NUQVRfQ0xPU0VdLmJlc3Qsc3RhdHNbX1NUQVRfQ0xPU0VdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBjbG9zZShzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfQ0xPU0VdLndvcnN0LHN0YXRzW19TVEFUX0NMT1NFXS53b3JzdCk7CgkgICB9CgoJICAgLyoKCSAgICAqIFN0YXQgdGVzdCAKCSAgICAqLwoJICAgcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkgICBmaWxlX3N0YXQoeCk7CgoJICAgaWYodmVyYm9zZSkKCSAgIHsKCSAgICAgIHByaW50Zigic3RhdDogICAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX1NUQVRdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsIHN0YXRzW19TVEFUX1NUQVRdLnRvdGFsX3RpbWUpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBBdmcgc3RhdChzKS9zZWMgICAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQlzdGF0c1tfU1RBVF9TVEFUXS5jb3VudGVyL3N0YXRzW19TVEFUX1NUQVRdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX1NUQVRdLnRvdGFsX3RpbWUvc3RhdHNbX1NUQVRfU1RBVF0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3Qgc3RhdChzKS9zZWMgICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCTEvc3RhdHNbX1NUQVRfU1RBVF0uYmVzdCxzdGF0c1tfU1RBVF9TVEFUXS5iZXN0KTsKCSAgICAgIHByaW50ZigiICAgICAgICAgV29yc3Qgc3RhdChzKS9zZWMgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuXG4iLAoJCQkxL3N0YXRzW19TVEFUX1NUQVRdLndvcnN0LHN0YXRzW19TVEFUX1NUQVRdLndvcnN0KTsKCSAgIH0KCSAgIC8qCgkgICAgKiBSZWFkIHRlc3QgCgkgICAgKi8KCSAgIHB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJICAgZmlsZV9yZWFkKHgpOwoKCSAgIGlmKHZlcmJvc2UpCgkgICB7CgkgICAgICBwcmludGYoIm9wZW46ICAgIEZpbGVzID0gJTlsbGQgIixzdGF0c1tfU1RBVF9PUEVOXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiVG90YWwgVGltZSA9ICUxMi45ZiBzZWNvbmRzXG4iLCBzdGF0c1tfU1RBVF9PUEVOXS50b3RhbF90aW1lKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQXZnIG9wZW4ocykvc2VjICAgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJc3RhdHNbX1NUQVRfT1BFTl0uY291bnRlci9zdGF0c1tfU1RBVF9PUEVOXS50b3RhbF90aW1lLAoJCQlzdGF0c1tfU1RBVF9PUEVOXS50b3RhbF90aW1lL3N0YXRzW19TVEFUX09QRU5dLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBCZXN0IG9wZW4ocykvc2VjICAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQkxL3N0YXRzW19TVEFUX09QRU5dLmJlc3Qsc3RhdHNbX1NUQVRfT1BFTl0uYmVzdCk7CgkgICAgICBwcmludGYoIiAgICAgICAgIFdvcnN0IG9wZW4ocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcblxuIiwKCQkJMS9zdGF0c1tfU1RBVF9PUEVOXS53b3JzdCxzdGF0c1tfU1RBVF9PUEVOXS53b3JzdCk7CgoJICAgICAgcHJpbnRmKCJyZWFkOiAgICBGaWxlcyA9ICU5bGxkICIsc3RhdHNbX1NUQVRfUkVBRF0uY291bnRlcik7CgkgICAgICBwcmludGYoIlRvdGFsIFRpbWUgPSAlMTIuOWYgc2Vjb25kc1xuIiwgc3RhdHNbX1NUQVRfUkVBRF0udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyByZWFkKHMpL3NlYyAgICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX1JFQURdLmNvdW50ZXIvc3RhdHNbX1NUQVRfUkVBRF0udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfUkVBRF0udG90YWxfdGltZS9zdGF0c1tfU1RBVF9SRUFEXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQmVzdCByZWFkKHMpL3NlYyAgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJMS9zdGF0c1tfU1RBVF9SRUFEXS5iZXN0LHN0YXRzW19TVEFUX1JFQURdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCByZWFkKHMpL3NlYyAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfUkVBRF0ud29yc3Qsc3RhdHNbX1NUQVRfUkVBRF0ud29yc3QpOwoJICAgfQoKCSAgIC8qCgkgICAgKiBBY2Nlc3MgdGVzdCAKCSAgICAqLwoJICAgcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkgICBmaWxlX2FjY2Vzcyh4KTsKCSAgIGlmKHZlcmJvc2UpCgkgICB7CgkgICAgICBwcmludGYoImFjY2VzczogIEZpbGVzID0gJTlsbGQgIixzdGF0c1tfU1RBVF9BQ0NFU1NdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsIHN0YXRzW19TVEFUX0FDQ0VTU10udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyBhY2Nlc3Mocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX0FDQ0VTU10uY291bnRlci9zdGF0c1tfU1RBVF9BQ0NFU1NdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX0FDQ0VTU10udG90YWxfdGltZS9zdGF0c1tfU1RBVF9BQ0NFU1NdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBCZXN0IGFjY2VzcyhzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQkxL3N0YXRzW19TVEFUX0FDQ0VTU10uYmVzdCxzdGF0c1tfU1RBVF9BQ0NFU1NdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBhY2Nlc3Mocykvc2VjICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfQUNDRVNTXS53b3JzdCxzdGF0c1tfU1RBVF9BQ0NFU1NdLndvcnN0KTsKCSAgIH0KCSAgIC8qCgkgICAgKiBDaG1vZCB0ZXN0IAoJICAgICovCgkgICBwdXJnZV9idWZmZXJfY2FjaGUoKTsKCSAgIGZpbGVfY2htb2QoeCk7CgoJICAgaWYodmVyYm9zZSkKCSAgIHsKCSAgICAgIHByaW50ZigiY2htb2Q6ICAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0NITU9EXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiVG90YWwgVGltZSA9ICUxMi45ZiBzZWNvbmRzXG4iLCBzdGF0c1tfU1RBVF9DSE1PRF0udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyBjaG1vZChzKS9zZWMgICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX0NITU9EXS5jb3VudGVyL3N0YXRzW19TVEFUX0NITU9EXS50b3RhbF90aW1lLAoJCQlzdGF0c1tfU1RBVF9DSE1PRF0udG90YWxfdGltZS9zdGF0c1tfU1RBVF9DSE1PRF0uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgY2htb2Qocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCTEvc3RhdHNbX1NUQVRfQ0hNT0RdLmJlc3Qsc3RhdHNbX1NUQVRfQ0hNT0RdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBjaG1vZChzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfQ0hNT0RdLndvcnN0LHN0YXRzW19TVEFUX0NITU9EXS53b3JzdCk7CgkgICB9CgkgICAvKgoJICAgICogcmVhZGRpciB0ZXN0IAoJICAgICovCgkgICBwdXJnZV9idWZmZXJfY2FjaGUoKTsKCSAgIGZpbGVfcmVhZGRpcih4KTsKCgkgICBpZih2ZXJib3NlKQoJICAgewoJICAgICAgcHJpbnRmKCJyZWFkZGlyOiBGaWxlcyA9ICU5bGxkICIsc3RhdHNbX1NUQVRfUkVBRERJUl0uY291bnRlcik7CgkgICAgICBwcmludGYoIlRvdGFsIFRpbWUgPSAlMTIuOWYgc2Vjb25kc1xuIiwgc3RhdHNbX1NUQVRfUkVBRERJUl0udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyByZWFkZGlyKHMpL3NlYyAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX1JFQURESVJdLmNvdW50ZXIvc3RhdHNbX1NUQVRfUkVBRERJUl0udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfUkVBRERJUl0udG90YWxfdGltZS9zdGF0c1tfU1RBVF9SRUFERElSXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQmVzdCByZWFkZGlyKHMpL3NlYyAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJMS9zdGF0c1tfU1RBVF9SRUFERElSXS5iZXN0LHN0YXRzW19TVEFUX1JFQURESVJdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCByZWFkZGlyKHMpL3NlYyA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfUkVBRERJUl0ud29yc3Qsc3RhdHNbX1NUQVRfUkVBRERJUl0ud29yc3QpOwoJICAgfQojaWYgIWRlZmluZWQoV2luZG93cykKCSAgIC8qCgkgICAgKiBsaW5rIHRlc3QgCgkgICAgKi8KCSAgIHB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJICAgZmlsZV9saW5rKHgpOwoJICAgaWYodmVyYm9zZSkKCSAgIHsKCSAgICAgIHByaW50ZigibGluazogICAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX0xJTktdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsc3RhdHNbX1NUQVRfTElOS10udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyBsaW5rKHMpL3NlYyAgICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX0xJTktdLmNvdW50ZXIvc3RhdHNbX1NUQVRfTElOS10udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfTElOS10udG90YWxfdGltZS9zdGF0c1tfU1RBVF9MSU5LXS5jb3VudGVyKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQmVzdCBsaW5rKHMpL3NlYyAgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJMS9zdGF0c1tfU1RBVF9MSU5LXS5iZXN0LHN0YXRzW19TVEFUX0xJTktdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBsaW5rKHMpL3NlYyAgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfTElOS10ud29yc3Qsc3RhdHNbX1NUQVRfTElOS10ud29yc3QpOwoJICAgfQoJICAgLyoKCSAgICAqIHVubGluayB0ZXN0IAoJICAgICovCgkgICBwdXJnZV9idWZmZXJfY2FjaGUoKTsKCSAgIGZpbGVfdW5saW5rKHgpOwoJICAgaWYodmVyYm9zZSkKCSAgIHsKCSAgICAgIHByaW50ZigidW5saW5rOiAgRmlsZXMgPSAlOWxsZCAiLHN0YXRzW19TVEFUX1VOTElOS10uY291bnRlcik7CgkgICAgICBwcmludGYoIlRvdGFsIFRpbWUgPSAlMTIuOWYgc2Vjb25kc1xuIiwgc3RhdHNbX1NUQVRfVU5MSU5LXS50b3RhbF90aW1lKTsKCSAgICAgIHByaW50ZigiICAgICAgICAgQXZnIHVubGluayhzKS9zZWMgICAgPSAlMTIuMmYgKCUxMi45ZiBzZWNvbmRzL29wKVxuIiwKCQkJc3RhdHNbX1NUQVRfVU5MSU5LXS5jb3VudGVyL3N0YXRzW19TVEFUX1VOTElOS10udG90YWxfdGltZSwKCQkJc3RhdHNbX1NUQVRfVU5MSU5LXS50b3RhbF90aW1lL3N0YXRzW19TVEFUX1VOTElOS10uY291bnRlcik7CgkgICAgICBwcmludGYoIiAgICAgICAgIEJlc3QgdW5saW5rKHMpL3NlYyAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCTEvc3RhdHNbX1NUQVRfVU5MSU5LXS5iZXN0LHN0YXRzW19TVEFUX1VOTElOS10uYmVzdCk7CgkgICAgICBwcmludGYoIiAgICAgICAgIFdvcnN0IHVubGluayhzKS9zZWMgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcblxuIiwKCQkJMS9zdGF0c1tfU1RBVF9VTkxJTktdLndvcnN0LHN0YXRzW19TVEFUX1VOTElOS10ud29yc3QpOwoJICAgfQojZW5kaWYKCSAgIC8qCgkgICAgKiBEZWxldGUgdGVzdCAKCSAgICAqLwoJICAgcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkgICBmaWxlX2RlbGV0ZSh4KTsKCSAgIGlmKHZlcmJvc2UpCgkgICB7CgkgICAgICBwcmludGYoImRlbGV0ZTogIEZpbGVzID0gJTlsbGQgIixzdGF0c1tfU1RBVF9ERUxFVEVdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCJUb3RhbCBUaW1lID0gJTEyLjlmIHNlY29uZHNcbiIsIHN0YXRzW19TVEFUX0RFTEVURV0udG90YWxfdGltZSk7CgkgICAgICBwcmludGYoIiAgICAgICAgIEF2ZyBkZWxldGUocykvc2VjICAgID0gJTEyLjJmICglMTIuOWYgc2Vjb25kcy9vcClcbiIsCgkJCXN0YXRzW19TVEFUX0RFTEVURV0uY291bnRlci9zdGF0c1tfU1RBVF9ERUxFVEVdLnRvdGFsX3RpbWUsCgkJCXN0YXRzW19TVEFUX0RFTEVURV0udG90YWxfdGltZS9zdGF0c1tfU1RBVF9ERUxFVEVdLmNvdW50ZXIpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBCZXN0IGRlbGV0ZShzKS9zZWMgICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG4iLAoJCQkxL3N0YXRzW19TVEFUX0RFTEVURV0uYmVzdCxzdGF0c1tfU1RBVF9ERUxFVEVdLmJlc3QpOwoJICAgICAgcHJpbnRmKCIgICAgICAgICBXb3JzdCBkZWxldGUocykvc2VjICA9ICUxMi4yZiAoJTEyLjlmIHNlY29uZHMvb3ApXG5cbiIsCgkJCTEvc3RhdHNbX1NUQVRfREVMRVRFXS53b3JzdCxzdGF0c1tfU1RBVF9ERUxFVEVdLndvcnN0KTsKCSAgIH0KCSAgIGlmKCF2ZXJib3NlKQoJICAgewoJICAgICAgICAgcHJpbnRmKCIlYyAlNGQgJTcuMGYgIiwnQScseCxzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnRvdGFsX3RpbWUpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uY291bnRlci9zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnRvdGFsX3RpbWUpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLmNvdW50ZXIvc3RhdHNbX1NUQVRfRElSX0RFTEVURV0udG90YWxfdGltZSk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfQ1JFQVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0NSRUFURV0udG90YWxfdGltZSk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfT1BFTl0uY291bnRlci9zdGF0c1tfU1RBVF9PUEVOXS50b3RhbF90aW1lKTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIixzdGF0c1tfU1RBVF9SRUFEXS5jb3VudGVyL3N0YXRzW19TVEFUX1JFQURdLnRvdGFsX3RpbWUpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLHN0YXRzW19TVEFUX1dSSVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX1dSSVRFXS50b3RhbF90aW1lKTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIixzdGF0c1tfU1RBVF9DTE9TRV0uY291bnRlci9zdGF0c1tfU1RBVF9DTE9TRV0udG90YWxfdGltZSk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfU1RBVF0uY291bnRlci9zdGF0c1tfU1RBVF9TVEFUXS50b3RhbF90aW1lKTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIixzdGF0c1tfU1RBVF9BQ0NFU1NdLmNvdW50ZXIvc3RhdHNbX1NUQVRfQUNDRVNTXS50b3RhbF90aW1lKTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIixzdGF0c1tfU1RBVF9DSE1PRF0uY291bnRlci9zdGF0c1tfU1RBVF9DSE1PRF0udG90YWxfdGltZSk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfUkVBRERJUl0uY291bnRlci9zdGF0c1tfU1RBVF9SRUFERElSXS50b3RhbF90aW1lKTsKI2lmbmRlZiBXaW5kb3dzCgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfTElOS10uY291bnRlci9zdGF0c1tfU1RBVF9MSU5LXS50b3RhbF90aW1lKTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIixzdGF0c1tfU1RBVF9VTkxJTktdLmNvdW50ZXIvc3RhdHNbX1NUQVRfVU5MSU5LXS50b3RhbF90aW1lKTsKI2VuZGlmCgkgICAgICAgICBwcmludGYoIiU3LjBmICIsc3RhdHNbX1NUQVRfREVMRVRFXS5jb3VudGVyL3N0YXRzW19TVEFUX0RFTEVURV0udG90YWxfdGltZSk7CgkgICAgICAgICBwcmludGYoIiUxMGQgIix4KngqeCk7CgkgICAgICAgICBwcmludGYoIlxuIik7CiAgCSAgIAkgZmZsdXNoKHN0ZG91dCk7CgoJCWlmKGJlc3QpCgkJewoJICAgICAgICAgcHJpbnRmKCIlYyAlNGQgJTcuMGYgIiwnQicseCwgMS9zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5iZXN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uYmVzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5iZXN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0NSRUFURV0uYmVzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9PUEVOXS5iZXN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX1JFQURdLmJlc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfV1JJVEVdLmJlc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfQ0xPU0VdLmJlc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfU1RBVF0uYmVzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9BQ0NFU1NdLmJlc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfQ0hNT0RdLmJlc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfUkVBRERJUl0uYmVzdCk7CiNpZm5kZWYgV2luZG93cwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfTElOS10uYmVzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9VTkxJTktdLmJlc3QpOwojZW5kaWYKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0RFTEVURV0uYmVzdCk7CgkgICAgICAgICBwcmludGYoIiUxMGQgIix4KngqeCk7CgkJIHByaW50ZigiXG4iKTsKICAJICAgCSBmZmx1c2goc3Rkb3V0KTsKCQl9CgkJaWYod29yc3QpCgkJewoJICAgICAgICAgcHJpbnRmKCIlYyAlNGQgJTcuMGYgIiwnVycseCwgMS9zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLndvcnN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0RJUl9ERUxFVEVdLndvcnN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0NSRUFURV0ud29yc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfT1BFTl0ud29yc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfUkVBRF0ud29yc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfV1JJVEVdLndvcnN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0NMT1NFXS53b3JzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9TVEFUXS53b3JzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9BQ0NFU1NdLndvcnN0KTsKCSAgICAgICAgIHByaW50ZigiJTcuMGYgIiwxL3N0YXRzW19TVEFUX0NITU9EXS53b3JzdCk7CgkgICAgICAgICBwcmludGYoIiU3LjBmICIsMS9zdGF0c1tfU1RBVF9SRUFERElSXS53b3JzdCk7CiNpZm5kZWYgV2luZG93cwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfTElOS10ud29yc3QpOwoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfVU5MSU5LXS53b3JzdCk7CiNlbmRpZgoJICAgICAgICAgcHJpbnRmKCIlNy4wZiAiLDEvc3RhdHNbX1NUQVRfREVMRVRFXS53b3JzdCk7CgkgICAgICAgICBwcmludGYoIiUxMGQgIix4KngqeCk7CgkJIHByaW50ZigiXG4iKTsKICAJICAgCSBmZmx1c2goc3Rkb3V0KTsKCQl9CgkgICB9Cgl9CglyZXR1cm4oMCk7Cn0KCnZvaWQgCmRpcl9jcmVhdGUoaW50IHgpCnsKCWludCBpLGosazsKCWludCByZXQ7CgljaGFyIGJ1ZlsxMDBdOwoJc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uYmVzdD0oZG91YmxlKTk5OTk5Ljk7CglzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdD0oZG91YmxlKTAuMDAwMDAwMDA7Cglmb3IoaT0wO2k8eDtpKyspCgl7CgkgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWQiLGkpOwoJICBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgcmV0PW1rZGlyKGJ1ZiwwNzc3KTsKCSAgaWYocmV0IDwgMCkKCSAgewoJICAgICAgcHJpbnRmKCJNa2RpciBmYWlsZWRcbiIpOwoJICAgICAgZXhpdCgxKTsKCSAgfQoJICBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgIHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkPXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLmVuZHRpbWUtc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3RhcnR0aW1lOwoJICBpZihzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZCA8IChkb3VibGUpMC4wKQoJCXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkPShkb3VibGUpMC4wOwoJICBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZDsKCSAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uY291bnRlcisrOwoJICBpZihzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZCA8IHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLmJlc3QpCgkgCXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLmJlc3Q9c3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQ7CgkgIGlmKHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkID4gc3RhdHNbX1NUQVRfRElSX0NSRUFURV0ud29yc3QpCgkJIHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLndvcnN0PXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkOwoJICBjaGRpcihidWYpOwoJICBmb3Ioaj0wO2o8eDtqKyspCgkgIHsKCSAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkX0wyXyVkIixpLGopOwoJICAgIHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgIHJldD1ta2RpcihidWYsMDc3Nyk7CgkgICAgaWYocmV0IDwgMCkKCSAgICB7CgkgICAgICBwcmludGYoIk1rZGlyIGZhaWxlZFxuIik7CgkgICAgICBleGl0KDEpOwoJICAgIH0KCSAgICBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQ9c3RhdHNbX1NUQVRfRElSX0NSRUFURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zdGFydHRpbWU7CgkgICAgaWYoc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZD0oZG91YmxlKSAwLjA7CgkgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0udG90YWxfdGltZSs9c3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQ7CgkgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uY291bnRlcisrOwoJICAgIGlmKHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkIDwgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uYmVzdD1zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZDsKCSAgICBpZihzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZCA+IHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLndvcnN0KQoJCSBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdD1zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZDsKCSAgICBjaGRpcihidWYpOwoJICAgIGZvcihrPTA7azx4O2srKykKCSAgICB7CgkgICAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX2Rpcl8lZF8lZF8lZCIsaSxqLGspOwoJICAgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICByZXQ9bWtkaXIoYnVmLDA3NzcpOwoJICAgICAgaWYocmV0IDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJNa2RpciBmYWlsZWRcbiIpOwoJICAgICAgICBleGl0KDEpOwoJICAgICAgfQoJICAgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQ9c3RhdHNbX1NUQVRfRElSX0NSRUFURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zdGFydHRpbWU7CgkgICAgICBpZihzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5zcGVlZCA8IChkb3VibGUpMC4wKQoJCXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkPShkb3VibGUpIDAuMDsKCSAgICAgIHN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnRvdGFsX3RpbWUrPXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkOwoJICAgICAgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uY291bnRlcisrOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQgPCBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS5iZXN0PXN0YXRzW19TVEFUX0RJUl9DUkVBVEVdLnNwZWVkOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9ESVJfQ1JFQVRFXS53b3JzdCkKCQkgc3RhdHNbX1NUQVRfRElSX0NSRUFURV0ud29yc3Q9c3RhdHNbX1NUQVRfRElSX0NSRUFURV0uc3BlZWQ7CgkgICAgICBjaGRpcihidWYpOwoJICAgICAgY2hkaXIoIi4uIik7CgkgICAgfQoJICAgIGNoZGlyKCIuLiIpOwoJICB9CgkgIGNoZGlyKCIuLiIpOwoJfQp9Cgp2b2lkCmRpcl90cmF2ZXJzZShpbnQgeCkKewoJaW50IGksaixrOwoJY2hhciBidWZbMTAwXTsKCWRvdWJsZSB0aW1lMSwgdGltZTI7CglzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmJlc3Q9KGRvdWJsZSk5OTk5OS45OwoJc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS53b3JzdD0oZG91YmxlKTAuMDAwMDAwMDA7Cglmb3IoaT0wO2k8eDtpKyspCgl7CgkgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWQiLGkpOwoJICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICBjaGRpcihidWYpOwoJICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmVuZHRpbWU9dGltZV9zb19mYXIoKTsKCSAgdGltZTE9c3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5lbmR0aW1lLXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3RhcnR0aW1lOwoJICBmb3Ioaj0wO2o8eDtqKyspCgkgIHsKCSAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkX0wyXyVkIixpLGopOwoJICAgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmVuZHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICB0aW1lMj1zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmVuZHRpbWUtc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zdGFydHRpbWU7CgkgICAgZm9yKGs9MDtrPHg7aysrKQoJICAgIHsKCSAgICAgIHNwcmludGYoYnVmLCJmaWxlb3BfZGlyXyVkXyVkXyVkIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgY2hkaXIoYnVmKTsKCSAgICAgIGNoZGlyKCIuLiIpOwoJICAgICAgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkPXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uZW5kdGltZS1zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkPShkb3VibGUpIDAuMDsKCSAgICAgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0udG90YWxfdGltZSs9c3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uY291bnRlcisrOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZCA8IHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5iZXN0PXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ7CgkgICAgICBpZihzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkID4gc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS53b3JzdCkKCQkgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS53b3JzdD1zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkOwoJICAgIH0KCSAgICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgIGNoZGlyKCIuLiIpOwoJICAgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ9dGltZTIrc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5lbmR0aW1lLXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3RhcnR0aW1lOwoJICAgIGlmKHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkPShkb3VibGUpIDAuMDsKCSAgICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnRvdGFsX3RpbWUrPXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ7CgkgICAgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5jb3VudGVyKys7CgkgICAgaWYoc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZCA8IHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5iZXN0PXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ7CgkgICAgaWYoc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZCA+IHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0ud29yc3QpCgkJIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0ud29yc3Q9c3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZDsKCSAgfQoJICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICBjaGRpcigiLi4iKTsKCSAgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgIHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ9dGltZTErc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5lbmR0aW1lLXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3RhcnR0aW1lOwoJICBpZihzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZD0oZG91YmxlKTAuMDsKCSAgc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLnNwZWVkOwoJICBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLmNvdW50ZXIrKzsKCSAgaWYoc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5zcGVlZCA8IHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uYmVzdCkKCSAJc3RhdHNbX1NUQVRfRElSX1RSQVZFUlNFXS5iZXN0PXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ7CgkgIGlmKHN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLndvcnN0KQoJCSBzdGF0c1tfU1RBVF9ESVJfVFJBVkVSU0VdLndvcnN0PXN0YXRzW19TVEFUX0RJUl9UUkFWRVJTRV0uc3BlZWQ7Cgl9Cn0KCnZvaWQgCmZpbGVfY3JlYXRlKGludCB4KQp7CglpbnQgaSxqLGs7CglpbnQgZmQ7CglpbnQgcmV0OwoJY2hhciBidWZbMTAwXTsKCWNoYXIgdmFsdWU7CglzdGF0c1tfU1RBVF9DUkVBVEVdLmJlc3Q9KGRvdWJsZSk5OTk5OTkuOTsKCXN0YXRzW19TVEFUX0NSRUFURV0ud29yc3Q9KGRvdWJsZSkwLjA7CglzdGF0c1tfU1RBVF9XUklURV0uYmVzdD0oZG91YmxlKTk5OTk5OS45OwoJc3RhdHNbX1NUQVRfV1JJVEVdLndvcnN0PShkb3VibGUpMC4wOwoJc3RhdHNbX1NUQVRfQ0xPU0VdLmJlc3Q9KGRvdWJsZSk5OTk5OTkuOTsKCXN0YXRzW19TVEFUX0NMT1NFXS53b3JzdD0oZG91YmxlKTAuMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIHJldD1ta2RpcihidWYsMDc3Nyk7CgkgIGlmKHJldCA8IDApCgkgIHsKCSAgICAgIHByaW50ZigiTWtkaXIgZmFpbGVkXG4iKTsKCSAgICAgIGV4aXQoMSk7CgkgIH0KCSAgY2hkaXIoYnVmKTsKCSAgZm9yKGo9MDtqPHg7aisrKQoJICB7CgkgICAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZF9MMl8lZCIsaSxqKTsKCSAgICByZXQ9bWtkaXIoYnVmLDA3NzcpOwoJICAgIGlmKHJldCA8IDApCgkgICAgewoJICAgICAgcHJpbnRmKCJNa2RpciBmYWlsZWRcbiIpOwoJICAgICAgZXhpdCgxKTsKCSAgICB9CgkgICAgY2hkaXIoYnVmKTsKCSAgICBmb3Ioaz0wO2s8eDtrKyspCgkgICAgewoJICAgICAgc3ByaW50ZihidWYsImZpbGVvcF9maWxlXyVkXyVkXyVkIixpLGosayk7CgkgICAgICB2YWx1ZT0oY2hhcikgKChpXmpeaykgJiAweGZmKTsKCSAgICAgIG1lbXNldChtYnVmZmVyLHZhbHVlLHN6KTsKCSAgICAgIHN0YXRzW19TVEFUX0NSRUFURV0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBmZD1jcmVhdChidWYsT19SRFdSfDA2MDApOwoJICAgICAgaWYoZmQgPCAwKQoJICAgICAgewoJICAgICAgICBwcmludGYoIkNyZWF0ZSBmYWlsZWRcbiIpOwoJICAgICAgICBleGl0KDEpOwoJICAgICAgfQoJICAgICAgc3RhdHNbX1NUQVRfQ1JFQVRFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9DUkVBVEVdLnNwZWVkPXN0YXRzW19TVEFUX0NSRUFURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9DUkVBVEVdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0NSRUFURV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9DUkVBVEVdLnNwZWVkPShkb3VibGUpMC4wOwoJICAgICAgc3RhdHNbX1NUQVRfQ1JFQVRFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9DUkVBVEVdLnNwZWVkOwoJICAgICAgc3RhdHNbX1NUQVRfQ1JFQVRFXS5jb3VudGVyKys7CgkgICAgICBpZihzdGF0c1tfU1RBVF9DUkVBVEVdLnNwZWVkIDwgc3RhdHNbX1NUQVRfQ1JFQVRFXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9DUkVBVEVdLmJlc3Q9c3RhdHNbX1NUQVRfQ1JFQVRFXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0NSRUFURV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9DUkVBVEVdLndvcnN0KQoJCSBzdGF0c1tfU1RBVF9DUkVBVEVdLndvcnN0PXN0YXRzW19TVEFUX0NSRUFURV0uc3BlZWQ7CgoJICAgICAgc3RhdHNbX1NUQVRfV1JJVEVdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgd3JpdGUoZmQsbWJ1ZmZlcixzeik7CgkgICAgICBzdGF0c1tfU1RBVF9XUklURV0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgc3RhdHNbX1NUQVRfV1JJVEVdLmNvdW50ZXIrKzsKCSAgICAgIHN0YXRzW19TVEFUX1dSSVRFXS5zcGVlZD1zdGF0c1tfU1RBVF9XUklURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9XUklURV0uc3RhcnR0aW1lOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfV1JJVEVdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfV1JJVEVdLnNwZWVkPShkb3VibGUpMC4wOwoJICAgICAgc3RhdHNbX1NUQVRfV1JJVEVdLnRvdGFsX3RpbWUrPXN0YXRzW19TVEFUX1dSSVRFXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1dSSVRFXS5zcGVlZCA8IHN0YXRzW19TVEFUX1dSSVRFXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9XUklURV0uYmVzdD1zdGF0c1tfU1RBVF9XUklURV0uc3BlZWQ7CgkgICAgICBpZihzdGF0c1tfU1RBVF9XUklURV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9XUklURV0ud29yc3QpCgkJIHN0YXRzW19TVEFUX1dSSVRFXS53b3JzdD1zdGF0c1tfU1RBVF9XUklURV0uc3BlZWQ7CgoJICAgICAgZnN5bmMoZmQpOwoJICAgICAgc3RhdHNbX1NUQVRfQ0xPU0VdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgY2xvc2UoZmQpOwoJICAgICAgc3RhdHNbX1NUQVRfQ0xPU0VdLmVuZHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIHN0YXRzW19TVEFUX0NMT1NFXS5zcGVlZD1zdGF0c1tfU1RBVF9DTE9TRV0uZW5kdGltZS1zdGF0c1tfU1RBVF9DTE9TRV0uc3RhcnR0aW1lOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfQ0xPU0VdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfQ0xPU0VdLnNwZWVkPShkb3VibGUpMC4wOwoJICAgICAgc3RhdHNbX1NUQVRfQ0xPU0VdLnRvdGFsX3RpbWUrPXN0YXRzW19TVEFUX0NMT1NFXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX0NMT1NFXS5jb3VudGVyKys7CgkgICAgICBpZihzdGF0c1tfU1RBVF9DTE9TRV0uc3BlZWQgPCBzdGF0c1tfU1RBVF9DTE9TRV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfQ0xPU0VdLmJlc3Q9c3RhdHNbX1NUQVRfQ0xPU0VdLnNwZWVkOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfQ0xPU0VdLnNwZWVkID4gc3RhdHNbX1NUQVRfQ0xPU0VdLndvcnN0KQoJCSBzdGF0c1tfU1RBVF9DTE9TRV0ud29yc3Q9c3RhdHNbX1NUQVRfQ0xPU0VdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZCAKZmlsZV9zdGF0KGludCB4KQp7CglpbnQgaSxqLGsseTsKCWNoYXIgYnVmWzEwMF07CglzdHJ1Y3Qgc3RhdCBteXN0YXQ7CglzdGF0c1tfU1RBVF9TVEFUXS5iZXN0PShkb3VibGUpOTk5OTkuOTsKCXN0YXRzW19TVEFUX1NUQVRdLndvcnN0PShkb3VibGUpMC4wMDAwMDAwMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIGNoZGlyKGJ1Zik7CgkgIGZvcihqPTA7ajx4O2orKykKCSAgewoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBmb3Ioaz0wO2s8eDtrKyspCgkgICAgewoJICAgICAgc3ByaW50ZihidWYsImZpbGVvcF9maWxlXyVkXyVkXyVkIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9TVEFUXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIHk9c3RhdChidWYsJm15c3RhdCk7CgkgICAgICBpZih5IDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJTdGF0IGZhaWxlZFxuIik7CgkgICAgICAgIGV4aXQoMSk7CgkgICAgICB9CgkgICAgICBzdGF0c1tfU1RBVF9TVEFUXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9TVEFUXS5zcGVlZD1zdGF0c1tfU1RBVF9TVEFUXS5lbmR0aW1lLXN0YXRzW19TVEFUX1NUQVRdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1NUQVRdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfU1RBVF0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9TVEFUXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9TVEFUXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX1NUQVRdLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1NUQVRdLnNwZWVkIDwgc3RhdHNbX1NUQVRfU1RBVF0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfU1RBVF0uYmVzdD1zdGF0c1tfU1RBVF9TVEFUXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1NUQVRdLnNwZWVkID4gc3RhdHNbX1NUQVRfU1RBVF0ud29yc3QpCgkJIHN0YXRzW19TVEFUX1NUQVRdLndvcnN0PXN0YXRzW19TVEFUX1NUQVRdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZCAKZmlsZV9hY2Nlc3MoaW50IHgpCnsKCWludCBpLGosayx5OwoJY2hhciBidWZbMTAwXTsKCXN0YXRzW19TVEFUX0FDQ0VTU10uYmVzdD0oZG91YmxlKTk5OTk5OS45OwoJc3RhdHNbX1NUQVRfQUNDRVNTXS53b3JzdD0oZG91YmxlKTAuMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIGNoZGlyKGJ1Zik7CgkgIGZvcihqPTA7ajx4O2orKykKCSAgewoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBmb3Ioaz0wO2s8eDtrKyspCgkgICAgewoJICAgICAgc3ByaW50ZihidWYsImZpbGVvcF9maWxlXyVkXyVkXyVkIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9BQ0NFU1NdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgeT1hY2Nlc3MoYnVmLFdfT0t8Rl9PSyk7CgkgICAgICBpZih5IDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJhY2Nlc3MgZmFpbGVkXG4iKTsKCQlwZXJyb3IoIndoYXQiKTsKCSAgICAgICAgZXhpdCgxKTsKCSAgICAgIH0KCSAgICAgIHN0YXRzW19TVEFUX0FDQ0VTU10uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgc3RhdHNbX1NUQVRfQUNDRVNTXS5zcGVlZD1zdGF0c1tfU1RBVF9BQ0NFU1NdLmVuZHRpbWUtc3RhdHNbX1NUQVRfQUNDRVNTXS5zdGFydHRpbWU7CgkgICAgICBpZihzdGF0c1tfU1RBVF9BQ0NFU1NdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfQUNDRVNTXS5zcGVlZD0oZG91YmxlKTAuMDsKCSAgICAgIHN0YXRzW19TVEFUX0FDQ0VTU10udG90YWxfdGltZSs9c3RhdHNbX1NUQVRfQUNDRVNTXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX0FDQ0VTU10uY291bnRlcisrOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfQUNDRVNTXS5zcGVlZCA8IHN0YXRzW19TVEFUX0FDQ0VTU10uYmVzdCkKCQkgc3RhdHNbX1NUQVRfQUNDRVNTXS5iZXN0PXN0YXRzW19TVEFUX0FDQ0VTU10uc3BlZWQ7CgkgICAgICBpZihzdGF0c1tfU1RBVF9BQ0NFU1NdLnNwZWVkID4gc3RhdHNbX1NUQVRfQUNDRVNTXS53b3JzdCkKCQkgc3RhdHNbX1NUQVRfQUNDRVNTXS53b3JzdD1zdGF0c1tfU1RBVF9BQ0NFU1NdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZCAKZmlsZV9jaG1vZChpbnQgeCkKewoJaW50IGksaixrLHk7CgljaGFyIGJ1ZlsxMDBdOwoJc3RhdHNbX1NUQVRfQ0hNT0RdLmJlc3Q9KGRvdWJsZSk5OTk5OTkuOTsKCXN0YXRzW19TVEFUX0NITU9EXS53b3JzdD0oZG91YmxlKTAuMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIGNoZGlyKGJ1Zik7CgkgIGZvcihqPTA7ajx4O2orKykKCSAgewoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBmb3Ioaz0wO2s8eDtrKyspCgkgICAgewoJICAgICAgc3ByaW50ZihidWYsImZpbGVvcF9maWxlXyVkXyVkXyVkIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9DSE1PRF0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICB5PWNobW9kKGJ1ZiwwNjY2KTsKCSAgICAgIGlmKHkgPCAwKQoJICAgICAgewoJICAgICAgICBwcmludGYoImNobW9kIGZhaWxlZFxuIik7CgkJcGVycm9yKCJ3aGF0Iik7CgkgICAgICAgIGV4aXQoMSk7CgkgICAgICB9CgkgICAgICBzdGF0c1tfU1RBVF9DSE1PRF0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgc3RhdHNbX1NUQVRfQ0hNT0RdLnNwZWVkPXN0YXRzW19TVEFUX0NITU9EXS5lbmR0aW1lLXN0YXRzW19TVEFUX0NITU9EXS5zdGFydHRpbWU7CgkgICAgICBpZihzdGF0c1tfU1RBVF9DSE1PRF0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9DSE1PRF0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9DSE1PRF0udG90YWxfdGltZSs9c3RhdHNbX1NUQVRfQ0hNT0RdLnNwZWVkOwoJICAgICAgc3RhdHNbX1NUQVRfQ0hNT0RdLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0NITU9EXS5zcGVlZCA8IHN0YXRzW19TVEFUX0NITU9EXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9DSE1PRF0uYmVzdD1zdGF0c1tfU1RBVF9DSE1PRF0uc3BlZWQ7CgkgICAgICBpZihzdGF0c1tfU1RBVF9DSE1PRF0uc3BlZWQgPiBzdGF0c1tfU1RBVF9DSE1PRF0ud29yc3QpCgkJIHN0YXRzW19TVEFUX0NITU9EXS53b3JzdD1zdGF0c1tfU1RBVF9DSE1PRF0uc3BlZWQ7CgkgICAgfQoJICAgIGNoZGlyKCIuLiIpOwoJICB9CgkgIGNoZGlyKCIuLiIpOwoJfQp9Cgp2b2lkIApmaWxlX3JlYWRkaXIoaW50IHgpCnsKCWludCBpLGoscmV0MTsKCWNoYXIgYnVmWzEwMF07CglESVIgKmRpcmJ1ZjsKCXN0cnVjdCBkaXJlbnQgKnk7CglzdGF0c1tfU1RBVF9SRUFERElSXS5iZXN0PShkb3VibGUpOTk5OTk5Ljk7CglzdGF0c1tfU1RBVF9SRUFERElSXS53b3JzdD0oZG91YmxlKTAuMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIGNoZGlyKGJ1Zik7CgkgIGZvcihqPTA7ajx4O2orKykKCSAgewoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBkaXJidWY9b3BlbmRpcigiLiIpOwoJICAgIGlmKGRpcmJ1Zj09MCkKCSAgICB7CgkJcHJpbnRmKCJvcGVuZGlyIGZhaWxlZFxuIik7CgkJZXhpdCgxKTsKCSAgICB9CgkgICAgc3RhdHNbX1NUQVRfUkVBRERJUl0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgeT1yZWFkZGlyKGRpcmJ1Zik7CgkgICAgaWYoeSA9PSAwKQoJICAgIHsKCSAgICAgIHByaW50ZigicmVhZGRpciBmYWlsZWRcbiIpOwoJICAgICAgZXhpdCgxKTsKCSAgICB9CgkgICAgc3RhdHNbX1NUQVRfUkVBRERJUl0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgIHN0YXRzW19TVEFUX1JFQURESVJdLnNwZWVkPXN0YXRzW19TVEFUX1JFQURESVJdLmVuZHRpbWUtc3RhdHNbX1NUQVRfUkVBRERJUl0uc3RhcnR0aW1lOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfUkVBRERJUl0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9SRUFERElSXS5zcGVlZD0oZG91YmxlKTAuMDsKCSAgICBzdGF0c1tfU1RBVF9SRUFERElSXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9SRUFERElSXS5zcGVlZDsKCSAgICBzdGF0c1tfU1RBVF9SRUFERElSXS5jb3VudGVyKys7CgkgICAgaWYoc3RhdHNbX1NUQVRfUkVBRERJUl0uc3BlZWQgPCBzdGF0c1tfU1RBVF9SRUFERElSXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9SRUFERElSXS5iZXN0PXN0YXRzW19TVEFUX1JFQURESVJdLnNwZWVkOwoJICAgIGlmKHN0YXRzW19TVEFUX1JFQURESVJdLnNwZWVkID4gc3RhdHNbX1NUQVRfUkVBRERJUl0ud29yc3QpCgkJIHN0YXRzW19TVEFUX1JFQURESVJdLndvcnN0PXN0YXRzW19TVEFUX1JFQURESVJdLnNwZWVkOwoJICAgIHJldDE9Y2xvc2VkaXIoZGlyYnVmKTsKCSAgICBpZihyZXQxIDwgMCkKCSAgICB7CgkgICAgICBwcmludGYoImNsb3NlZGlyIGZhaWxlZFxuIik7CgkgICAgICBleGl0KDEpOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZCAKZmlsZV9saW5rKGludCB4KQp7CglpbnQgaSxqLGsseTsKCWNoYXIgYnVmWzEwMF07CgljaGFyIGJ1Zm5bMTAwXTsKCXN0YXRzW19TVEFUX0xJTktdLmJlc3Q9KGRvdWJsZSk5OTk5OTkuOTsKCXN0YXRzW19TVEFUX0xJTktdLndvcnN0PShkb3VibGUpMC4wOwoJZm9yKGk9MDtpPHg7aSsrKQoJewoJICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkIixpKTsKCSAgY2hkaXIoYnVmKTsKCSAgZm9yKGo9MDtqPHg7aisrKQoJICB7CgkgICAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZF9MMl8lZCIsaSxqKTsKCSAgICBjaGRpcihidWYpOwoJICAgIGZvcihrPTA7azx4O2srKykKCSAgICB7CgkgICAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX2ZpbGVfJWRfJWRfJWQiLGksaixrKTsKCSAgICAgIHNwcmludGYoYnVmbiwiZmlsZW9wX2ZpbGVfJWRfJWRfJWRMIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9MSU5LXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIHk9bGluayhidWYsYnVmbik7CgkgICAgICBpZih5IDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJMaW5rIGZhaWxlZFxuIik7CgkgICAgICAgIGV4aXQoMSk7CgkgICAgICB9CgkgICAgICBzdGF0c1tfU1RBVF9MSU5LXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9MSU5LXS5zcGVlZD1zdGF0c1tfU1RBVF9MSU5LXS5lbmR0aW1lLXN0YXRzW19TVEFUX0xJTktdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0xJTktdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfTElOS10uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9MSU5LXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9MSU5LXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX0xJTktdLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0xJTktdLnNwZWVkIDwgc3RhdHNbX1NUQVRfTElOS10uYmVzdCkKCQkgc3RhdHNbX1NUQVRfTElOS10uYmVzdD1zdGF0c1tfU1RBVF9MSU5LXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0xJTktdLnNwZWVkID4gc3RhdHNbX1NUQVRfTElOS10ud29yc3QpCgkJIHN0YXRzW19TVEFUX0xJTktdLndvcnN0PXN0YXRzW19TVEFUX0xJTktdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZCAKZmlsZV91bmxpbmsoaW50IHgpCnsKCWludCBpLGosayx5OwoJY2hhciBidWZbMTAwXTsKCWNoYXIgYnVmblsxMDBdOwoJc3RhdHNbX1NUQVRfVU5MSU5LXS5iZXN0PShkb3VibGUpOTk5OTk5Ljk7CglzdGF0c1tfU1RBVF9VTkxJTktdLndvcnN0PShkb3VibGUpMC4wOwoJZm9yKGk9MDtpPHg7aSsrKQoJewoJICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkIixpKTsKCSAgY2hkaXIoYnVmKTsKCSAgZm9yKGo9MDtqPHg7aisrKQoJICB7CgkgICAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZF9MMl8lZCIsaSxqKTsKCSAgICBjaGRpcihidWYpOwoJICAgIGZvcihrPTA7azx4O2srKykKCSAgICB7CgkgICAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX2ZpbGVfJWRfJWRfJWQiLGksaixrKTsKCSAgICAgIHNwcmludGYoYnVmbiwiZmlsZW9wX2ZpbGVfJWRfJWRfJWRMIixpLGosayk7CgkgICAgICBzdGF0c1tfU1RBVF9VTkxJTktdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgeT11bmxpbmsoYnVmbik7CgkgICAgICBpZih5IDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJVbmxpbmsgZmFpbGVkXG4iKTsKCSAgICAgICAgZXhpdCgxKTsKCSAgICAgIH0KCSAgICAgIHN0YXRzW19TVEFUX1VOTElOS10uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgc3RhdHNbX1NUQVRfVU5MSU5LXS5zcGVlZD1zdGF0c1tfU1RBVF9VTkxJTktdLmVuZHRpbWUtc3RhdHNbX1NUQVRfVU5MSU5LXS5zdGFydHRpbWU7CgkgICAgICBpZihzdGF0c1tfU1RBVF9VTkxJTktdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfVU5MSU5LXS5zcGVlZD0oZG91YmxlKTAuMDsKCSAgICAgIHN0YXRzW19TVEFUX1VOTElOS10udG90YWxfdGltZSs9c3RhdHNbX1NUQVRfVU5MSU5LXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX1VOTElOS10uY291bnRlcisrOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfVU5MSU5LXS5zcGVlZCA8IHN0YXRzW19TVEFUX1VOTElOS10uYmVzdCkKCQkgc3RhdHNbX1NUQVRfVU5MSU5LXS5iZXN0PXN0YXRzW19TVEFUX1VOTElOS10uc3BlZWQ7CgkgICAgICBpZihzdGF0c1tfU1RBVF9VTkxJTktdLnNwZWVkID4gc3RhdHNbX1NUQVRfVU5MSU5LXS53b3JzdCkKCQkgc3RhdHNbX1NUQVRfVU5MSU5LXS53b3JzdD1zdGF0c1tfU1RBVF9VTkxJTktdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKdm9pZApkaXJfZGVsZXRlKGludCB4KQp7CglpbnQgaSxqLGs7CgljaGFyIGJ1ZlsxMDBdOwoJc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uYmVzdD0oZG91YmxlKTk5OTk5Ljk7CglzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS53b3JzdD0oZG91YmxlKTAuMDAwMDAwMDA7Cglmb3IoaT0wO2k8eDtpKyspCgl7CgkgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWQiLGkpOwoJICBjaGRpcihidWYpOwoJICBmb3Ioaj0wO2o8eDtqKyspCgkgIHsKCSAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkX0wyXyVkIixpLGopOwoJICAgIGNoZGlyKGJ1Zik7CgkgICAgZm9yKGs9MDtrPHg7aysrKQoJICAgIHsKCSAgICAgIHNwcmludGYoYnVmLCJmaWxlb3BfZGlyXyVkXyVkXyVkIixpLGosayk7CgkgICAgICBjaGRpcihidWYpOwoJICAgICAgY2hkaXIoIi4uIik7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIHJtZGlyKGJ1Zik7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZD1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5lbmR0aW1lLXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkIDwgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uYmVzdD1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkID4gc3RhdHNbX1NUQVRfRElSX0RFTEVURV0ud29yc3QpCgkJIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLndvcnN0PXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkX0wyXyVkIixpLGopOwoJICAgIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgIHJtZGlyKGJ1Zik7CgkgICAgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uZW5kdGltZT10aW1lX3NvX2ZhcigpOwoJICAgIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkPXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLmVuZHRpbWUtc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3RhcnR0aW1lOwoJICAgICAgaWYoc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZD0oZG91YmxlKTAuMDsKCSAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZDsKCSAgICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5jb3VudGVyKys7CgkgICAgaWYoc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQgPCBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5iZXN0PXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkOwoJICAgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkID4gc3RhdHNbX1NUQVRfRElSX0RFTEVURV0ud29yc3QpCgkJIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLndvcnN0PXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkOwoJICB9CgkgIGNoZGlyKCIuLiIpOwoJICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkIixpKTsKCSAgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3RhcnR0aW1lPXRpbWVfc29fZmFyKCk7CgkgIHJtZGlyKGJ1Zik7CgkgIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLmVuZHRpbWU9dGltZV9zb19mYXIoKTsKCSAgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQ9c3RhdHNbX1NUQVRfRElSX0RFTEVURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zdGFydHRpbWU7CgkgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgIHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnRvdGFsX3RpbWUrPXN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkOwoJICBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5jb3VudGVyKys7CgkgIGlmKHN0YXRzW19TVEFUX0RJUl9ERUxFVEVdLnNwZWVkIDwgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uYmVzdD1zdGF0c1tfU1RBVF9ESVJfREVMRVRFXS5zcGVlZDsKCSAgaWYoc3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9ESVJfREVMRVRFXS53b3JzdCkKCQkgc3RhdHNbX1NUQVRfRElSX0RFTEVURV0ud29yc3Q9c3RhdHNbX1NUQVRfRElSX0RFTEVURV0uc3BlZWQ7Cgl9Cn0KCnZvaWQKZmlsZV9kZWxldGUoaW50IHgpCnsKCWludCBpLGosazsKCWNoYXIgYnVmWzEwMF07CglzdGF0c1tfU1RBVF9ERUxFVEVdLmJlc3Q9KGRvdWJsZSk5OTk5OTkuOTsKCXN0YXRzW19TVEFUX0RFTEVURV0ud29yc3Q9KGRvdWJsZSkwLjA7Cglmb3IoaT0wO2k8eDtpKyspCgl7CgkgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWQiLGkpOwoJICBjaGRpcihidWYpOwoJICBmb3Ioaj0wO2o8eDtqKyspCgkgIHsKCSAgICBzcHJpbnRmKGJ1ZiwiZmlsZW9wX0wxXyVkX0wyXyVkIixpLGopOwoJICAgIGNoZGlyKGJ1Zik7CgkgICAgZm9yKGs9MDtrPHg7aysrKQoJICAgIHsKCSAgICAgIHNwcmludGYoYnVmLCJmaWxlb3BfZmlsZV8lZF8lZF8lZCIsaSxqLGspOwoJICAgICAgc3RhdHNbX1NUQVRfREVMRVRFXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIHVubGluayhidWYpOwoJICAgICAgc3RhdHNbX1NUQVRfREVMRVRFXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9ERUxFVEVdLnNwZWVkPXN0YXRzW19TVEFUX0RFTEVURV0uZW5kdGltZS1zdGF0c1tfU1RBVF9ERUxFVEVdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RFTEVURV0uc3BlZWQgPCAoZG91YmxlKTAuMCkKCQlzdGF0c1tfU1RBVF9ERUxFVEVdLnNwZWVkPShkb3VibGUpMC4wOwoJICAgICAgc3RhdHNbX1NUQVRfREVMRVRFXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9ERUxFVEVdLnNwZWVkOwoJICAgICAgc3RhdHNbX1NUQVRfREVMRVRFXS5jb3VudGVyKys7CgkgICAgICBpZihzdGF0c1tfU1RBVF9ERUxFVEVdLnNwZWVkIDwgc3RhdHNbX1NUQVRfREVMRVRFXS5iZXN0KQoJCSBzdGF0c1tfU1RBVF9ERUxFVEVdLmJlc3Q9c3RhdHNbX1NUQVRfREVMRVRFXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX0RFTEVURV0uc3BlZWQgPiBzdGF0c1tfU1RBVF9ERUxFVEVdLndvcnN0KQoJCSBzdGF0c1tfU1RBVF9ERUxFVEVdLndvcnN0PXN0YXRzW19TVEFUX0RFTEVURV0uc3BlZWQ7CgkgICAgfQoJICAgIGNoZGlyKCIuLiIpOwoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgcm1kaXIoYnVmKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIHJtZGlyKGJ1Zik7Cgl9Cn0Kdm9pZCAKZmlsZV9yZWFkKGludCB4KQp7CglpbnQgaSxqLGsseSxmZDsKCWNoYXIgYnVmWzEwMF07CgljaGFyIHZhbHVlOwoJc3RhdHNbX1NUQVRfUkVBRF0uYmVzdD0oZG91YmxlKTk5OTk5Ljk7CglzdGF0c1tfU1RBVF9SRUFEXS53b3JzdD0oZG91YmxlKTAuMDAwMDAwMDA7CglzdGF0c1tfU1RBVF9PUEVOXS5iZXN0PShkb3VibGUpOTk5OTkuOTsKCXN0YXRzW19TVEFUX09QRU5dLndvcnN0PShkb3VibGUpMC4wMDAwMDAwMDsKCWZvcihpPTA7aTx4O2krKykKCXsKCSAgc3ByaW50ZihidWYsImZpbGVvcF9MMV8lZCIsaSk7CgkgIGNoZGlyKGJ1Zik7CgkgIGZvcihqPTA7ajx4O2orKykKCSAgewoJICAgIHNwcmludGYoYnVmLCJmaWxlb3BfTDFfJWRfTDJfJWQiLGksaik7CgkgICAgY2hkaXIoYnVmKTsKCSAgICBmb3Ioaz0wO2s8eDtrKyspCgkgICAgewoJICAgICAgc3ByaW50ZihidWYsImZpbGVvcF9maWxlXyVkXyVkXyVkIixpLGosayk7CgkgICAgICB2YWx1ZT0oY2hhcikoKGleal5rKSAmMHhmZik7CgkgICAgICBzdGF0c1tfU1RBVF9PUEVOXS5zdGFydHRpbWU9dGltZV9zb19mYXIoKTsKCSAgICAgIGZkPW9wZW4oYnVmLE9fUkRPTkxZKTsKCSAgICAgIGlmKGZkIDwgMCkKCSAgICAgIHsKCSAgICAgICAgcHJpbnRmKCJPcGVuIGZhaWxlZFxuIik7CgkgICAgICAgIGV4aXQoMSk7CgkgICAgICB9CgkgICAgICBzdGF0c1tfU1RBVF9PUEVOXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBzdGF0c1tfU1RBVF9PUEVOXS5zcGVlZD1zdGF0c1tfU1RBVF9PUEVOXS5lbmR0aW1lLXN0YXRzW19TVEFUX09QRU5dLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX09QRU5dLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfT1BFTl0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9PUEVOXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9PUEVOXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX09QRU5dLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX09QRU5dLnNwZWVkIDwgc3RhdHNbX1NUQVRfT1BFTl0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfT1BFTl0uYmVzdD1zdGF0c1tfU1RBVF9PUEVOXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX09QRU5dLnNwZWVkID4gc3RhdHNbX1NUQVRfT1BFTl0ud29yc3QpCgkJIHN0YXRzW19TVEFUX09QRU5dLndvcnN0PXN0YXRzW19TVEFUX09QRU5dLnNwZWVkOwoKCSAgICAgIHN0YXRzW19TVEFUX1JFQURdLnN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJICAgICAgeT1yZWFkKGZkLG1idWZmZXIsc3opOwoJICAgICAgaWYoeSA8IDApCgkgICAgICB7CgkgICAgICAgIHByaW50ZigiUmVhZCBmYWlsZWRcbiIpOwoJICAgICAgICBleGl0KDEpOwoJICAgICAgfQoJICAgICAgaWYodmFsaWRhdGUobWJ1ZmZlcixzeiwgdmFsdWUpICE9MCkKCQlwcmludGYoIkVycm9yOiBEYXRhIE1pcy1jb21wYXJlXG4iKTs7CgkgICAgICBzdGF0c1tfU1RBVF9SRUFEXS5lbmR0aW1lPXRpbWVfc29fZmFyKCk7CgkgICAgICBjbG9zZShmZCk7CgkgICAgICBzdGF0c1tfU1RBVF9SRUFEXS5zcGVlZD1zdGF0c1tfU1RBVF9SRUFEXS5lbmR0aW1lLXN0YXRzW19TVEFUX1JFQURdLnN0YXJ0dGltZTsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1JFQURdLnNwZWVkIDwgKGRvdWJsZSkwLjApCgkJc3RhdHNbX1NUQVRfUkVBRF0uc3BlZWQ9KGRvdWJsZSkwLjA7CgkgICAgICBzdGF0c1tfU1RBVF9SRUFEXS50b3RhbF90aW1lKz1zdGF0c1tfU1RBVF9SRUFEXS5zcGVlZDsKCSAgICAgIHN0YXRzW19TVEFUX1JFQURdLmNvdW50ZXIrKzsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1JFQURdLnNwZWVkIDwgc3RhdHNbX1NUQVRfUkVBRF0uYmVzdCkKCQkgc3RhdHNbX1NUQVRfUkVBRF0uYmVzdD1zdGF0c1tfU1RBVF9SRUFEXS5zcGVlZDsKCSAgICAgIGlmKHN0YXRzW19TVEFUX1JFQURdLnNwZWVkID4gc3RhdHNbX1NUQVRfUkVBRF0ud29yc3QpCgkJIHN0YXRzW19TVEFUX1JFQURdLndvcnN0PXN0YXRzW19TVEFUX1JFQURdLnNwZWVkOwoJICAgIH0KCSAgICBjaGRpcigiLi4iKTsKCSAgfQoJICBjaGRpcigiLi4iKTsKCX0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVGltZSBtZWFzdXJlbWVudCByb3V0aW5lcy4gVGhhbmtzIHRvIElvem9uZSA6LSkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwpzdGF0aWMgZG91YmxlCnRpbWVfc29fZmFyKHZvaWQpCiNlbHNlCnN0YXRpYyBkb3VibGUKdGltZV9zb19mYXIoKQojZW5kaWYKewojaWZkZWYgV2luZG93cwogICBMQVJHRV9JTlRFR0VSIGZyZXEsY291bnRlcjsKICAgZG91YmxlIHdpbnRpbWUsYmlnY291bnRlcjsKCS8qIEZvciBXaW5kb3dzIHRoZSB0aW1lX29mX2RheSgpIGlzIHVzZWxlc3MuIEl0IGluY3JlbWVudHMgaW4gNTUgbWlsbGkgc2Vjb25kICAgKi8KCS8qIGluY3JlbWVudHMuIEJ5IHVzaW5nIHRoZSBXaW4zMmFwaSBvbmUgY2FuIGdldCBhY2Nlc3MgdG8gdGhlIGhpZ2ggcGVyZm9ybWFuY2UgKi8KCS8qIG1lYXN1cmVtZW50IGludGVyZmFjZXMuIFdpdGggdGhpcyBvbmUgY2FuIGdldCBiYWNrIGludG8gdGhlIDggdG8gOSAgCQkqLwoJLyogbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4JCQkJCQkJKi8KICAgICAgICBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxKTsKICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY291bnRlcik7CiAgICAgICAgYmlnY291bnRlcj0oZG91YmxlKWNvdW50ZXIuSGlnaFBhcnQgKihkb3VibGUpMHhmZmZmZmZmZiArCiAgICAgICAgICAgICAgICAoZG91YmxlKWNvdW50ZXIuTG93UGFydDsKICAgICAgICB3aW50aW1lID0gKGRvdWJsZSkoYmlnY291bnRlci8oZG91YmxlKWZyZXEuTG93UGFydCk7CiAgICAgICAgcmV0dXJuKChkb3VibGUpd2ludGltZSk7CiNlbHNlCiNpZiBkZWZpbmVkIChPU0ZWNCkgfHwgZGVmaW5lZChPU0ZWMykgfHwgZGVmaW5lZChPU0ZWNSkKICBzdHJ1Y3QgdGltZXNwZWMgZ3A7CgogIGlmIChnZXRjbG9jayhUSU1FT0ZEQVksIChzdHJ1Y3QgdGltZXNwZWMgKikgJmdwKSA9PSAtMSkKICAgIHBlcnJvcigiZ2V0Y2xvY2siKTsKICByZXR1cm4gKCggKGRvdWJsZSkgKGdwLnR2X3NlYykpICsKICAgICggKChmbG9hdCkoZ3AudHZfbnNlYykpICogMC4wMDAwMDAwMDEgKSk7CiNlbHNlCiAgc3RydWN0IHRpbWV2YWwgdHA7CgogIGlmIChnZXR0aW1lb2ZkYXkoJnRwLCAoc3RydWN0IHRpbWV6b25lICopIE5VTEwpID09IC0xKQogICAgcGVycm9yKCJnZXR0aW1lb2ZkYXkiKTsKICByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKSArCiAgICAoKChkb3VibGUpIHRwLnR2X3VzZWMpICogMC4wMDAwMDEgKTsKI2VuZGlmCiNlbmRpZgp9Cgp2b2lkCnNwbGFzaCh2b2lkKQp7CglwcmludGYoIlxuIik7CglwcmludGYoIiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoJcHJpbnRmKCIgICAgIHwgICAgICAgICAgICAgIEZpbGVvcCAgICAgICAgICAgICAgICB8IFxuIik7CglwcmludGYoIiAgICAgfCAlcyAgICAgICAgICB8IFxuIix2ZXJzaW9uKTsKCXByaW50ZigiICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiIpOwoJcHJpbnRmKCIgICAgIHwgICAgICAgICAgICAgICAgYnkgICAgICAgICAgICAgICAgICB8XG4iKTsKCXByaW50ZigiICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiIpOwoJcHJpbnRmKCIgICAgIHwgICAgICAgICAgICAgRG9uIENhcHBzICAgICAgICAgICAgICB8XG4iKTsKCXByaW50ZigiICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CglwcmludGYoIlxuIik7Cn0KCnZvaWQgCnVzYWdlKHZvaWQpCnsKICBzcGxhc2goKTsKICBwcmludGYoIiAgICAgZmlsZW9wIFstZiBYIF18Wy1sICMgLXUgI10gWy1zIFldIFstZV0gWy1iXSBbLXddIFstZCA8ZGlyPl0gWy10XSBbLXZdIFstaF1cbiIpOwogIHByaW50ZigiXG4iKTsKICBwcmludGYoIiAgICAgLWYgIyAgICAgIEZvcmNlIGZhY3Rvci4gWF4zIGZpbGVzIHdpbGwgYmUgY3JlYXRlZCBhbmQgcmVtb3ZlZC5cbiIpOwogIHByaW50ZigiICAgICAtbCAjICAgICAgTG93ZXIgbGltaXQgb24gdGhlIHZhbHVlIG9mIHRoZSBGb3JjZSBmYWN0b3IuXG4iKTsKICBwcmludGYoIiAgICAgLXUgIyAgICAgIFVwcGVyIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiB0aGUgRm9yY2UgZmFjdG9yLlxuIik7CiAgcHJpbnRmKCIgICAgIC1zICMgICAgICBPcHRpb25hbC4gU2V0cyBmaWxlc2l6ZSBmb3IgdGhlIGNyZWF0ZS93cml0ZS4gTWF5IHVzZSBzdWZmaXggJ0snIG9yICdNJy5cbiIpOwogIHByaW50ZigiICAgICAtZSAgICAgICAgRXhjZWwgaW1wb3J0YWJsZSBmb3JtYXQuXG4iKTsKICBwcmludGYoIiAgICAgLWIgICAgICAgIE91dHB1dCBiZXN0IGNhc2UgcmVzdWx0cy5cbiIpOwogIHByaW50ZigiICAgICAtdyAgICAgICAgT3V0cHV0IHdvcnN0IGNhc2UgcmVzdWx0cy5cbiIpOwogIHByaW50ZigiICAgICAtZCA8ZGlyPiAgU3BlY2lmeSBzdGFydGluZyBkaXJlY3RvcnkuXG4iKTsKICBwcmludGYoIiAgICAgLVUgPGRpcj4gIE1vdW50IHBvaW50IHRvIHJlbW91bnQgYmV0d2VlbiB0ZXN0cy5cbiIpOwogIHByaW50ZigiICAgICAtdCAgICAgICAgVmVyYm9zZSBvdXRwdXQgb3B0aW9uLlxuIik7CiAgcHJpbnRmKCIgICAgIC12ICAgICAgICBWZXJzaW9uIGluZm9ybWF0aW9uLlxuIik7CiAgcHJpbnRmKCIgICAgIC1oICAgICAgICBIZWxwIHRleHQuXG4iKTsKICBwcmludGYoIlxuIik7CiAgcHJpbnRmKCIgICAgIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgdHJlZSBpczpcbiIpOwogIHByaW50ZigiICAgICBYIG51bWJlciBvZiBMZXZlbCAxIGRpcmVjdG9yaWVzLCB3aXRoIFggbnVtYmVyIG9mXG4iKTsKICBwcmludGYoIiAgICAgbGV2ZWwgMiBkaXJlY3Rvcmllcywgd2l0aCBYIG51bWJlciBvZiBmaWxlcyBpbiBlYWNoXG4iKTsKICBwcmludGYoIiAgICAgb2YgdGhlIGxldmVsIDIgZGlyZWN0b3JpZXMuXG4iKTsKICBwcmludGYoIlxuIik7CiAgcHJpbnRmKCIgICAgIEV4YW1wbGU6ICBmaWxlb3AgMlxuIik7CiAgcHJpbnRmKCJcbiIpOwogIHByaW50ZigiICAgICAgICAgICAgIGRpcl8xICAgICAgICAgICAgICAgICAgICAgICAgZGlyXzJcbiIpOwogIHByaW50ZigiICAgICAgICAgICAgLyAgICAgXFwgICAgICAgICAg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aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKCgoKY3AgJDEgaW96b25lX2dlbl9vdXQKZmlsZV9uYW1lPWlvem9uZV9nZW5fb3V0CiNzZXQgLXgKCndyaXRlX2dudXBsb3RfZmlsZSgpIHsKCWVjaG8gXCN0ZXN0IDogJHF1ZXJ5CgljYXNlICRxdWVyeSBpbgogIAkJKHdyaXRlKSBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDMgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKHJld3JpdGUpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDQgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKHJlYWQpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDUgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKHJlcmVhZCkgIGF3ayAnJDEgfiAvXlswLTldKy8geyBwcmludCAgJDEgIiAiICQyICIgIiAkNiAgfScgPCAkZmlsZV9uYW1lIDs7CiAgCQkocmFuZHJlYWQpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDcgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKHJhbmR3cml0ZSkgIGF3ayAnJDEgfiAvXlswLTldKy8geyBwcmludCAgJDEgIiAiICQyICIgIiAkOCAgfScgPCAkZmlsZV9uYW1lIDs7CiAgCQkoYmt3ZHJlYWQpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDkgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKHJlY3Jld3JpdGUpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDEwICB9JyA8ICRmaWxlX25hbWUgOzsKICAJCShzdHJpZGVyZWFkKSAgYXdrICckMSB+IC9eWzAtOV0rLyB7IHByaW50ICAkMSAiICIgJDIgIiAiICQxMSAgfScgPCAkZmlsZV9uYW1lIDs7CiAgCQkoZndyaXRlKSAgYXdrICckMSB+IC9eWzAtOV0rLyB7IHByaW50ICAkMSAiICIgJDIgIiAiICQxMiAgfScgPCAkZmlsZV9uYW1lIDs7CiAgCQkoZnJld3JpdGUpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDEzICB9JyA8ICRmaWxlX25hbWUgOzsKICAJCShmcmVhZCkgIGF3ayAnJDEgfiAvXlswLTldKy8geyBwcmludCAgJDEgIiAiICQyICIgIiAkMTQgIH0nIDwgJGZpbGVfbmFtZSA7OwogIAkJKGZyZXJlYWQpICBhd2sgJyQxIH4gL15bMC05XSsvIHsgcHJpbnQgICQxICIgIiAkMiAiICIgJDE1ICB9JyA8ICRmaWxlX25hbWUgOzsKCQkoKikgIGVjaG8gIlVzYWdlIDogZ2VuZ251cGxvdC5zaCA8ZmlsZW5hbWU+IDx0ZXN0PiIgPj4gL2Rldi9zdGRlcnIgOyAKICAgICAgIAkJICAgICBlY2hvICJmaWxlbmFtZSBpcyB0aGUgb3V0cHV0IG9mIGlvem9uZSAtYSIgPj4gL2Rldi9zdGRlcnIgOwogICAgICAgCQkgICAgIGVjaG8gInRlc3QgaXMgb25lIG9mIHdyaXRlIHJld3JpdGUgcmVhZCByZXJlYWQgcmFuZHJlYWQgcmFuZHdyaXRlIGJrd2RyZWFkIHJlY3Jld3JpdGUgc3RyaWRlcmVhZCBmd3JpdGUgZnJld3JpdGUgZnJlYWQgZnJlcmVhZCIgPj4gL2Rldi9zdGRlcnIgOzsKCWVzYWMgfQoKI2ZpbGVuYW1lPSQxCmZpbGVuYW1lPWlvem9uZV9nZW5fb3V0CnF1ZXJ5PSQyCmlmICghIFsgLWUgJHF1ZXJ5IF0gKSA7IHRoZW4gbWtkaXIgJHF1ZXJ5OyBmaQppZiAoIFsgJCMgLWVxIDIgXSApIDsgCgl0aGVuIAoJCXdyaXRlX2dudXBsb3RfZmlsZSA+ICRxdWVyeS9gYmFzZW5hbWUgJGZpbGVfbmFtZS5nbnVwbG90YAoJZWxzZQoJCWVjaG8gIlVzYWdlIDogZ2VuZ251cGxvdC5zaCA8ZmlsZW5hbWU+IDx0ZXN0PiIgMj4mMQoJCWVjaG8gImZpbGVuYW1lIGlzIHRoZSBvdXRwdXQgb2YgaW96b25lIC1hIiAyPiYxCgkJZWNobyAidGVzdCBpcyBvbmUgb2Ygd3JpdGUgcmV3cml0ZSByZWFkIHJlcmVhZCByYW5kcmVhZCByYW5kd3JpdGUgYmt3ZHJlYWQgcmVjcmV3cml0ZSBzdHJpZGVyZWFkIGZ3cml0ZSBmcmV3cml0ZSBmcmVhZCBmcmVyZWFkIiAyPiYxCmZpCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaW96b25lM18zNDcvc3JjL2N1cnJlbnQvbWFrZWZpbGV+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDMyNjMyNgAwMDExNjEwADAwMDAwMTM3NDMwADExNzI1MjA3MTY2ADAxNjIxMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNoZW5oYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjCiMgVmVyc2lvbiAkUmV2aXNpb246IDEuMTMxICQKIwojIFRoZSBtYWtlZmlsZSBmb3IgYnVpbGRpbmcgYWxsIHZlcnNpb25zIG9mIGlvem9uZSBmb3IgYWxsIHN1cHBvcnRlZAojIHBsYXRmb3JtcwojCiMgU3VwcG9ydHM6CWhwdXgsIGhwdXhfbm9fYW5zaSwgaHB1eC0xMC4xLCBocHV4X25vX2Fuc2ktMTAuMSwKIwkJc3BwdXgsIHNwcHV4LTEwLjEsIGdocHV4LCBzcHB1eCwgCiMJCWNvbnZleCwgRnJlZUJTRCwgT3BlbkJTRCwgT1NGVjMsIE9TRlY0LCBPU0ZWNSwgU0NPCiMJCVNDT19Vbml4d2FyZV9nY2MsTmV0QlNELFRSVTY0LCBNYWMgT1MgWAoKQ0MJPSBjYwpDODkJPSBjODkKR0NDCT0gZ2NjCkNDUwk9IC91c3IvY2NzL2Jpbi9jYwpOQUNDCT0gL29wdC9hbnNpYy9iaW4vY2MKQ0ZMQUdTCT0KUzEwR0NDRkxBR1MgICAgPSAtbTY0ClMxMENDRkxBR1MgICAgID0gLW02NApGTEFHNjRCSVQgICAgICA9IC1tNjQKCmFsbDogIAoJQGVjaG8gIiIKCUBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0YXJnZXQuICAgICAgICAiCglAZWNobyAiICAgICAgICAtPiAgIEFJWCAgICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgQUlYLUxGICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBic2RpICAgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iIAoJQGVjaG8gIiAgICAgICAgLT4gICBjb252ZXggICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iIAoJQGVjaG8gIiAgICAgICAgLT4gICBDcmF5WDEgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGRyYWdvbmZseSAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgZnJlZWJzZCAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBnZW5lcmljICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGdocHV4ICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eHMtMTEuMCAoc2ltcGxlKSAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4LTExLjB3ICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGhwdXhzLTExLjB3ICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eC0xMS4wICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4LTEwLjEgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGhwdXgtMTAuMjAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eCAgICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIiAKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eF9ub19hbnNpICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4X25vX2Fuc2ktMTAuMSAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIElSSVggICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgSVJJWDY0ICAgICAgICAgICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eCAgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4LWFybSAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbGludXgtQU1ENjQgICAgICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1pYTY0ICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4LXBvd2VycGMgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbGludXgtcG93ZXJwYzY0ICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1zcGFyYyAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIG1hY29zeCAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbmV0YnNkICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBvcGVuYnNkICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIG9wZW5ic2QtdGhyZWFkcyAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgT1NGVjMgICAgICAgICAgICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBPU0ZWNCAgICAgICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIE9TRlY1ICAgICAgICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbGludXgtUzM5MCAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1TMzkwWCAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNDTyAgICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU0NPX1VuaXh3YXJlX2djYyAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXMtMi42ICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpczdnY2MgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzOC02NCAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXM4LTY0LVZYRlMgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpczEwICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzMTBjYyAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXMxMGdjYyAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpczEwZ2NjLTY0ICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBzcHB1eCAgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIHNwcHV4LTEwLjEgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgc3BwdXhfbm9fYW5zaS0xMC4xICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBUUlU2NCAgICAgICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFVXSU4gICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgV2luZG93cyAoOTUvOTgvTlQpICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiIKCmNsZWFuOgoJcm0gLWYgKi5vIGlvem9uZSBmaWxlb3AgcGl0X3NlcnZlcgoKcnBtOgoJY3AgLi4vLi4vaW96b25lKi50YXIgL3Vzci9zcmMvcmVkKi9TTyoKCXJwbWJ1aWxkIC1iYSBzcGVjLmluCgoKIwojIFR1cm4gb24gdGhlIG9wdGltaXplciwgbGFyZ2VmaWxlcywgUG9zaXggYXN5bmMgSS9PIGFuZCB0aHJlYWRzLgojCmhwdXgtMTEuMDoJaW96b25lX2hwdXgtMTEuMC5vIGxpYmFzeW5jLm8gbGliYmlmLm8KCSAkKENDKSArTzMgK09wYXJhbGxlbCAkKExERkxBR1MpIGlvem9uZV9ocHV4LTExLjAubyBsaWJhc3luYy5vIFwKCQlsaWJiaWYubyAtbHB0aHJlYWQgLWxydCAtbyBpb3pvbmUKCiMKIyBUdXJuIG9uIHdpZGUtbW9kZSwgdGhlIG9wdGltaXplciwgbGFyZ2VmaWxlcywgUG9zaXggYXN5bmMgSS9PIGFuZCB0aHJlYWRzLgojCmhwdXgtMTEuMHc6CWlvem9uZV9ocHV4LTExLjB3Lm8gbGliYXN5bmN3Lm8gbGliYmlmLm8KCSAkKENDKSArREQ2NCArTzMgJChMREZMQUdTKSBpb3pvbmVfaHB1eC0xMS4wdy5vIGxpYmFzeW5jdy5vIFwKCQlsaWJiaWYubyAtbHB0aHJlYWQgLWxydCAtbyBpb3pvbmUKCgojCiMgU2ltcGxlIGJ1aWxkIHdpdGggbGFyZ2VmaWxlcywgUG9zaXggdGhyZWFkcyBhbmQgUG9zaXggYXN5bmMgSS9PCiMKaHB1eHMtMTEuMDoJaW96b25lX2hwdXhzLTExLjAubyBsaWJhc3luYy5vIGxpYmJpZi5vIGZpbGVvcF9ocHV4cy0xMS4wLm8gcGl0X3NlcnZlci5vCgkgJChDQykgLU8gJChMREZMQUdTKSAgaW96b25lX2hwdXhzLTExLjAubyBcCgkJbGliYXN5bmMubyBsaWJiaWYubyAtbHB0aHJlYWQgLWxydCAtbyBpb3pvbmUKCSAkKENDKSAtTyAkKExERkxBR1MpIGZpbGVvcF9ocHV4cy0xMS4wLm8gLW8gZmlsZW9wCgkgJChDQykgLU8gJChMREZMQUdTKSBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIFNpbXBsZSBidWlsZCB3aXRoIHdpZGUtbW9kZSwgbGFyZ2VmaWxlcywgUG9zaXggdGhyZWFkcyBhbmQgUG9zaXggYXN5bmMgSS9PCiMKaHB1eHMtMTEuMHc6CWlvem9uZV9ocHV4cy0xMS4wdy5vIGxpYmFzeW5jdy5vIGxpYmJpZi5vCgkgJChDQykgLU8gK0RENjQgJChMREZMQUdTKSBpb3pvbmVfaHB1eHMtMTEuMHcubyBcCgkJbGliYXN5bmN3Lm8gbGliYmlmLm8gLWxwdGhyZWFkIC1scnQgLW8gaW96b25lCgojCiMgU2ltcGxlIDEwLjEgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08gCiMKaHB1eC0xMC4xOglpb3pvbmVfaHB1eC0xMC4xLm8gIGxpYmJpZi5vCgkgJChDODkpICtlIC1PICQoTERGTEFHUykgaW96b25lX2hwdXgtMTAuMS5vIGxpYmJpZi5vIC1vIGlvem9uZQoKaHB1eC0xMC4yMDoJaW96b25lX2hwdXgtMTAuMjAubyAgbGliYmlmLm8KCSAkKEM4OSkgK2UgLU8gJChMREZMQUdTKSBpb3pvbmVfaHB1eC0xMC4yMC5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIFNpbXBsZSBnZW5lcmljIEhQIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PIAojCmhwdXg6CWlvem9uZV9ocHV4Lm8gCgkkKEM4OSkgK2UgLU8gJChMREZMQUdTKSBpb3pvbmVfaHB1eC5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIEdOVSBIUCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTyAKIwpnaHB1eDoJaW96b25lX2docHV4Lm8gIGxpYmJpZi5vCgkkKEdDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfZ2hwdXgubyBsaWJiaWYubyAtc3RhdGljIC1vIGlvem9uZQoKIwojIEdOVSBHZW5lcmljIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PIAojCmdlbmVyaWM6CWlvem9uZV9nZW5lcmljLm8gIGxpYmJpZi5vCgkkKENDKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfZ2VuZXJpYy5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIE5vIGFuc2lpICdDJyBjb21waWxlciBIUCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTyAKIwpocHV4X25vX2Fuc2ktMTAuMToJaW96b25lX2hwdXhfbm8tMTAuMS5vICBsaWJiaWYubyAKCSQoTkFDQykgIC1PICQoTERGTEFHUykgaW96b25lX2hwdXhfbm8tMTAuMS5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIE5vIGFuc2lpICdDJyBjb21waWxlciBIUCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTyAKIwpocHV4X25vX2Fuc2k6CWlvem9uZV9ocHV4X25vLm8gIGxpYmJpZi5vCgkkKEM4OSkgIC1PICQoTERGTEFHUykgaW96b25lX2hwdXhfbm8ubyBsaWJiaWYubyAtbyBpb3pvbmUKCiMKIyBHTlUgJ0MnIGNvbXBpbGVyIExpbnV4IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PIAojCmxpbnV4Oglpb3pvbmVfbGludXgubyBsaWJhc3luYy5vIGxpYmJpZi5vIGZpbGVvcF9saW51eC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PMyAkKExERkxBR1MpIGlvem9uZV9saW51eC5vIGxpYmFzeW5jLm8gbGliYmlmLm8gLWxwdGhyZWFkIFwKCQktbHJ0IC1vIGlvem9uZQoJJChDQykgIC1PMyAtRGxpbnV4IGZpbGVvcF9saW51eC5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCBmb3IgcG93ZXJwYyBjaGlwIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PIAojCmxpbnV4LXBvd2VycGM6IGlvem9uZV9saW51eC1wb3dlcnBjLm8gIGxpYmJpZi5vIGxpYmFzeW5jLm8gZmlsZW9wX2xpbnV4LXBwYy5vIHBpdF9zZXJ2ZXIubwoJJChDQykgLU8zICQoTERGTEFHUykgaW96b25lX2xpbnV4LXBvd2VycGMubyBsaWJhc3luYy5vIFwKCQlsaWJiaWYubyAtbHB0aHJlYWQgIC1scnQgLW8gaW96b25lCgkkKENDKSAgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4LXBwYy5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCiMKIyBHTlUgJ0MnIGNvbXBpbGVyIExpbnV4IGJ1aWxkIGZvciBzcGFyYyBjaGlwIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PIAojCmxpbnV4LXNwYXJjOiBpb3pvbmVfbGludXgtc3BhcmMubyAgbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgubyBwaXRfc2VydmVyLm8KCSQoQ0MpIC1PMyAkKExERkxBR1MpIGlvem9uZV9saW51eC1zcGFyYy5vIGxpYmFzeW5jLm8gbGliYmlmLm8gXAoJCS1scHRocmVhZCAtbHJ0IC1vIGlvem9uZQoJJChDQykgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4Lm8gLW8gZmlsZW9wCgkkKENDKSAtTzMgLURsaW51eCBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXgtaWE2NDoJaW96b25lX2xpbnV4LWlhNjQubyAgbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgtaWE2NC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgLU8zICQoTERGTEFHUykgaW96b25lX2xpbnV4LWlhNjQubyBsaWJiaWYubyBsaWJhc3luYy5vIFwKCQktbHJ0IC1scHRocmVhZCAtbyBpb3pvbmUKCSQoQ0MpICAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtaWE2NC5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCBmb3IgcG93ZXJwYyBjaGlwIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PIAojCmxpbnV4LXBvd2VycGM2NDogaW96b25lX2xpbnV4LXBvd2VycGM2NC5vICBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1wcGM2NC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRFNIQVJFRF9NRU0gLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EbGludXggXAoJCWlvem9uZV9saW51eC1wb3dlcnBjNjQubyBsaWJhc3luYy5vIGxpYmJpZi5vIC1scHRocmVhZCBcCgkJLWxydCAkKEZMQUc2NEJJVCkgLW8gaW96b25lCgkkKENDKSAgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4LXBwYzY0Lm8gJChGTEFHNjRCSVQpIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAkKEZMQUc2NEJJVCkgLW8gcGl0X3NlcnZlcgoKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08KIwpsaW51eC1hcm06CWlvem9uZV9saW51eC1hcm0ubyAgbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgtYXJtLm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTzMgJChMREZMQUdTKSBpb3pvbmVfbGludXgtYXJtLm8gbGliYmlmLm8gbGliYXN5bmMubyBcCgkJLWxydCAtbHB0aHJlYWQgLW8gaW96b25lCgkkKENDKSAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtYXJtLm8gLW8gZmlsZW9wCgkkKENDKSAtTzMgLURsaW51eCBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXgtQU1ENjQ6CWlvem9uZV9saW51eC1BTUQ2NC5vICBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1BTUQ2NC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PMyAkKExERkxBR1MpIGlvem9uZV9saW51eC1BTUQ2NC5vIGxpYmJpZi5vIGxpYmFzeW5jLm8gXAoJCS1scnQgLWxwdGhyZWFkIC1vIGlvem9uZQoJJChDQykgIC1PMyAtRGxpbnV4IGZpbGVvcF9saW51eC1BTUQ2NC5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCB3aXRoIFMvMzkwLCB0aHJlYWRzLCBsYXJnZmlsZXMsIGFzeW5jIEkvTwojCmxpbnV4LVMzOTA6CWlvem9uZV9saW51eC1zMzkwLm8gbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgtczM5MC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PMiAkKExERkxBR1MpIC1scHRocmVhZCAtbHJ0IGlvem9uZV9saW51eC1zMzkwLm8gXAoJCWxpYmJpZi5vIGxpYmFzeW5jLm8gLW8gaW96b25lCgkkKENDKSAgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4LXMzOTAubyAtbyBmaWxlb3AKCSQoQ0MpICAtTzMgLURsaW51eCBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgd2l0aCBTLzM5MCwgdGhyZWFkcywgbGFyZ2ZpbGVzLCBhc3luYyBJL08KIwpsaW51eC1TMzkwWDoJaW96b25lX2xpbnV4LXMzOTB4Lm8gbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgtczM5MHgubyBwaXRfc2VydmVyLm8KCSQoQ0MpICAtTzIgJChMREZMQUdTKSAtbHB0aHJlYWQgLWxydCBpb3pvbmVfbGludXgtczM5MHgubyBcCgkJbGliYmlmLm8gbGliYXN5bmMubyAtbyBpb3pvbmUKCSQoQ0MpICAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtczM5MHgubyAtbyBmaWxlb3AKCSQoQ0MpICAtTzMgLURsaW51eCBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKCiMgCiMgQUlYCiMgSSB3b3VsZCBoYXZlIGJ1aWx0IHdpdGggQVNZTkNfSU8gYnV0IHRoZSBBSVggbWFjaGluZSBkb2VzIG5vdCBoYXZlIAojIFBPU0lYIDEwMDMuMWIgY29tcGxpYW50IGFzeW5jIEkvTyBoZWFkZXIgZmlsZXMuICBIYXMgdGhyZWFkcywgbm8KIyBsYXJnZWZpbGUgc3VwcG9ydC4KIyAKQUlYOglpb3pvbmVfQUlYLm8gIGxpYmJpZi5vICBmaWxlb3BfQUlYLm8KCSQoQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9BSVgubyBsaWJiaWYubyBcCgkJLWxwdGhyZWFkcyAtbyBpb3pvbmUKCSQoQ0MpICAtTyAtRGxpbnV4IGZpbGVvcF9BSVgubyAtbyBmaWxlb3AKCiMgCiMgQUlYLUxGCiMgSSB3b3VsZCBoYXZlIGJ1aWx0IHdpdGggQVNZTkNfSU8gYnV0IHRoZSBBSVggbWFjaGluZSBkb2VzIG5vdCBoYXZlIAojIFBPU0lYIDEwMDMuMWIgY29tcGxpYW50IGFzeW5jIEkvTyBoZWFkZXIgZmlsZXMuICBIYXMgdGhyZWFkcywgYW5kCiMgbGFyZ2VmaWxlIHN1cHBvcnQuCiMgCkFJWC1MRjoJaW96b25lX0FJWC1MRi5vICBsaWJiaWYubyAgIGZpbGVvcF9BSVgtTEYubyBwaXRfc2VydmVyLm8KCSQoQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9BSVgtTEYubyBsaWJiaWYubyBcCgkJLWxwdGhyZWFkcyAtbyBpb3pvbmUKCSQoQ0MpICAtTyBmaWxlb3BfQUlYLUxGLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBJUklYIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFzeW5jIEkvTyAKIyBUaGlzIHdvdWxkIGxpa2UgdG8gYmUgaW4gNjQgYml0IG1vZGUgYnV0IGl0IGhhbmdzIHdoZW5ldmVyIGluIDY0IGJpdCBtb2RlLgojIFRoaXMgdmVyc2lvbiB1c2VzIHRoZSA2NCBiaXQgaW50ZXJmYWNlcyBidXQgaXMgY29tcGlsZWQgYXMgMzIgYml0IGNvZGUKIwpJUklYNjQ6CWlvem9uZV9JUklYNjQubyBsaWJhc3luY3cubyBsaWJiaWYubyAKCSQoQ0MpICAgLTMyIC1PICQoTERGTEFHUykgaW96b25lX0lSSVg2NC5vIGxpYmJpZi5vIFwKCQktbHB0aHJlYWQgbGliYXN5bmN3Lm8gLW8gaW96b25lCgojCiMgSVJJWCAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PIAojIFRoaXMgdmVyc2lvbiB1c2VzIHRoZSAzMiBiaXQgaW50ZXJmYWNlcyBhbmQgaXMgY29tcGlsZWQgYXMgMzIgYml0IGNvZGUKIwpJUklYOglpb3pvbmVfSVJJWC5vIGxpYmFzeW5jLm8gbGliYmlmLm8KCSQoQ0MpICAtTyAgLTMyICQoTERGTEFHUykgaW96b25lX0lSSVgubyBsaWJiaWYubyAtbHB0aHJlYWQgXAoJCWxpYmFzeW5jLm8gLW8gaW96b25lCgojCiMgQ3JheVgxOiAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PIAojIFRoaXMgdmVyc2lvbiB1c2VzIHRoZSAzMiBiaXQgaW50ZXJmYWNlcyBhbmQgaXMgY29tcGlsZWQgYXMgMzIgYml0IGNvZGUKIwpDcmF5WDE6CWlvem9uZV9DcmF5WDEubyBsaWJhc3luYy5vIGxpYmJpZi5vCgkkKENDKSAgLU8gICQoTERGTEFHUykgaW96b25lX0NyYXlYMS5vIGxpYmJpZi5vIFwKCQktbHB0aHJlYWQgbGliYXN5bmN3Lm8gLW8gaW96b25lCgojCiMgU1BQLVVYIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIE5vIGxhcmdlZmlsZXMsIGFuZCBObyBhc3luYyBJL08sIAojIHByZWFkIGV4dGVuc2lvbnMKIyBGb3Igb2xkZXIgU1BQLVVYIG1hY2hpbmVzIHdpdGggOS4wNSBjb21wYXRpYmlsaXR5CiMKc3BwdXg6CWlvem9uZV9zcHB1eC5vICBsaWJiaWYubwoJJChOQUNDKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfc3BwdXgubyAgbGliYmlmLm8gXAoJLVdsLCtwYXJhbGxlbCAtbGNueF9zeXNjYWxsIC1scHRocmVhZCAtbGFpbCAtbyBpb3pvbmUKCiMKIyBTUFAtVVggMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgTm8gbGFyZ2VmaWxlcywgYW5kIE5vIGFzeW5jIEkvTywgcHJlYWQgCiMgZXh0ZW5zaW9ucwojIEZvciBOZXdlciBTUFAtVVggbWFjaGluZXMgd2l0aCAxMC4wMSBjb21wYXRpYmlsaXR5CiMKc3BwdXgtMTAuMToJaW96b25lX3NwcHV4LTEwLjEubyBsaWJiaWYubwoJJChOQUNDKSAtTyAkKExERkxBR1MpIGlvem9uZV9zcHB1eC0xMC4xLm8gbGliYmlmLm8gXAoJIC1sY254X3N5c2NhbGwgIC1XbCwrcGFyYWxsZWwgLWxwdGhyZWFkIC1sYWlsIC1vIGlvem9uZQoKIwojIFNQUC1VWCAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBhbmQgTm8gYXN5bmMgSS9PLCBwcmVhZCAKIyBleHRlbnNpb25zCiMgRm9yIE5ld2VyIFNQUC1VWCBtYWNoaW5lcyB3aXRoIDEwLjAxIGNvbXBhdGliaWxpdHksIGFuZCBubyBhbnNpICdDJyBjb21waWxlci4KIwpzcHB1eF9ub19hbnNpLTEwLjE6CWlvem9uZV9zcHB1eF9uby0xMC4xLm8gbGliYmlmLm8KCSQoQ0NTKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfc3BwdXhfbm8tMTAuMS5vIGxpYmJpZi5vIFwKCQktV2wsK3BhcmFsbGVsIC1sY254X3N5c2NhbGwgIFwKCQktbHB0aHJlYWQgLWxhaWwgLW8gaW96b25lCgojCiMgQ29udmV4ICdDJyBzZXJpZXMgMzIgYml0IGJ1aWxkIHdpdGggTm8gdGhyZWFkcywgTm8gbGFyZ2VmaWxlcywgYW5kIE5vIGFzeW5jIEkvTwojCmNvbnZleDoJaW96b25lX2NvbnZleC5vIGxpYmJpZi5vCgkkKENDKSAtTyAkKExERkxBR1MpaW96b25lX2NvbnZleC5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIFNvbGFyaXMgMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXM6CWlvem9uZV9zb2xhcmlzLm8gbGliYXN5bmMubyBsaWJiaWYubyBmaWxlb3BfU29sYXJpcy5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXMubyBsaWJhc3luYy5vIGxpYmJpZi5vIFwKCQktbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gLWxzb2NrZXQgXAoJCS1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9Tb2xhcmlzLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBTb2xhcmlzIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08KIwpTb2xhcmlzN2djYzoJaW96b25lX3NvbGFyaXM3Z2NjLm8gbGliYXN5bmM3Lm8gbGliYmlmNy5vIAoJJChHQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zb2xhcmlzN2djYy5vIGxpYmFzeW5jNy5vIGxpYmJpZjcubyBcCgkJLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKIwojIFNvbGFyaXMgMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXMxMDoJaW96b25lX3NvbGFyaXMxMC5vIGxpYmFzeW5jMTAubyBsaWJiaWYxMC5vIGZpbGVvcF9Tb2xhcmlzMTAubyBwaXRfc2VydmVyLm8KCSQoQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zb2xhcmlzMTAubyBsaWJhc3luYzEwLm8gbGliYmlmMTAubyBcCgkJLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKCSQoQ0MpICAtTyBmaWxlb3BfU29sYXJpczEwLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBTb2xhcmlzIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08KIwpTb2xhcmlzMTBjYzoJaW96b25lX3NvbGFyaXMxMGNjLm8gbGliYXN5bmMxMGNjLm8gbGliYmlmMTBjYy5vIGZpbGVvcF9Tb2xhcmlzMTBjYy5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXMxMGNjLm8gbGliYXN5bmMxMGNjLm8gbGliYmlmMTBjYy5vIFwKCQktbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAoJCS1sc29ja2V0IC1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9Tb2xhcmlzMTBjYy5vIC1vIGZpbGVvcAoJJChDQykgIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgU29sYXJpcyAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PCiMKU29sYXJpczEwZ2NjOglpb3pvbmVfc29sYXJpczEwZ2NjLm8gbGliYXN5bmMxMC5vIGxpYmJpZjEwLm8gZmlsZW9wX1NvbGFyaXMxMGdjYy5vIHBpdF9zZXJ2ZXIubwoJJChHQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zb2xhcmlzMTBnY2MubyBsaWJhc3luYzEwLm8gbGliYmlmMTAubyBcCgkJLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKCSQoR0NDKSAgLU8gZmlsZW9wX1NvbGFyaXMxMGdjYy5vIC1vIGZpbGVvcAoJJChHQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIFNvbGFyaXMgNjQgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXMxMGdjYy02NDoJaW96b25lX3NvbGFyaXMxMGdjYy02NC5vIGxpYmFzeW5jMTAtNjQubyBsaWJiaWYxMC02NC5vIGZpbGVvcF9Tb2xhcmlzMTBnY2MtNjQubyBwaXRfc2VydmVyLm8KCSQoR0NDKSAgLU8gJChMREZMQUdTKSAkKFMxMEdDQ0ZMQUdTKSBpb3pvbmVfc29sYXJpczEwZ2NjLTY0Lm8gbGliYXN5bmMxMC02NC5vIGxpYmJpZjEwLTY0Lm8gXAoJCS1sdGhyZWFkIC1scHRocmVhZCAtbHBvc2l4NCAtbG5zbCAtbGFpbyBcCgkJLWxzb2NrZXQgLW8gaW96b25lCgkkKEdDQykgIC1PICQoUzEwR0NDRkxBR1MpIGZpbGVvcF9Tb2xhcmlzMTBnY2MtNjQubyAtbyBmaWxlb3AKCSQoR0NDKSAgLU8gJChTMTBHQ0NGTEFHUykgcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCgojCiMgU29sYXJpcyA2NCBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PCiMKU29sYXJpczEwY2MtNjQ6CWlvem9uZV9zb2xhcmlzMTBjYy02NC5vIGxpYmFzeW5jMTAtNjQubyBsaWJiaWYxMC02NC5vIGZpbGVvcF9Tb2xhcmlzMTBjYy02NC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PICQoTERGTEFHUykgJChTMTBDQ0ZMQUdTKSBpb3pvbmVfc29sYXJpczEwY2MtNjQubyBsaWJhc3luYzEwLTY0Lm8gbGliYmlmMTAtNjQubyBcCiAgICAgICAgICAgICAgLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKICAgICAgICAgICAgICAtbHNvY2tldCAtbyBpb3pvbmUKCSQoQ0MpICAtTyAkKFMxMENDRkxBR1MpIGZpbGVvcF9Tb2xhcmlzMTBjYy02NC5vIC1vIGZpbGVvcAoJJChDQykgIC1PICQoUzEwQ0NGTEFHUykgcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCgoKIwojIFNvbGFyaXMgMi42ICgzMiBiaXQpIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgYW5kIG5vIGFzeW5jIEkvTwojClNvbGFyaXMtMi42Oglpb3pvbmVfc29sYXJpcy0yLjYubyBsaWJiaWYubyAKCSQoQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zb2xhcmlzLTIuNi5vIGxpYmJpZi5vIFwKCQktbG5zbCAtbGFpbyAtbHNvY2tldCAtbyBpb3pvbmUKCiMKIyBTb2xhcmlzIDY0IGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08KIwpTb2xhcmlzOC02NDogaW96b25lX3NvbGFyaXM4LTY0Lm8gbGliYXN5bmMubyBsaWJiaWYubwoJJChDQykgJChMREZMQUdTKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgaW96b25lX3NvbGFyaXM4LTY0Lm8gXAoJCWxpYmFzeW5jLm8gbGliYmlmLm8gLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKCiMKIyBTb2xhcmlzIDY0IGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFzeW5jIEkvTywgYW5kIFZ4ZnMKIwpTb2xhcmlzOC02NC1WWEZTOiBpb3pvbmVfc29sYXJpczgtNjQtVlhGUy5vIGxpYmFzeW5jLm8gbGliYmlmLm8KCSQoQ0MpICQoTERGTEFHUykgLWZhc3QgLXh0YXJnZXQ9Z2VuZXJpYzY0IC12IC1JL29wdC9WUlRTdnhmcy9pbmNsdWRlLyAKCQlpb3pvbmVfc29sYXJpczgtNjQtVlhGUy5vIGxpYmFzeW5jLm8gbGliYmlmLm8gXAoJCS1sdGhyZWFkIC1scHRocmVhZCAtbHBvc2l4NCAtbG5zbCAtbGFpbyBcCgkJLWxzb2NrZXQgLW8gaW96b25lCgojCiMgV2luZG93cyBidWlsZCByZXF1aXJlcyBDeWd3aW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIFlvdQojIGNhbiBnZXQgdGhpcyBmcm9tIHd3dy5jeWd3aW4uY29tCiMgTm8gbGFyZ2VmaWxlcywgTm8gYXN5bmMgSS9PCiMKV2luZG93czoJaW96b25lX3dpbmRvd3MubyBsaWJiaWYubyBmaWxlb3Bfd2luZG93cy5vIHBpdF9zZXJ2ZXJfd2luLm8KCSQoR0NDKSAtTyAkKExERkxBR1MpIGlvem9uZV93aW5kb3dzLm8gbGliYmlmLm8gLW8gaW96b25lCgkkKEdDQykgLU8gJChMREZMQUdTKSBmaWxlb3Bfd2luZG93cy5vIC1vIGZpbGVvcAoJJChHQ0MpIC1PICQoTERGTEFHUykgcGl0X3NlcnZlcl93aW4ubyAtbyBwaXRfc2VydmVyCgojCiMgVXdpbiBidWlsZCByZXF1aXJlcyBVV0lOIGRldmVsb3BtZW50IGVudmlyb25tZW50LiAKIyBObyB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBObyBhc3luYyBJL08KIwpVV0lOOglpb3pvbmVfdXdpbi5vIGxpYmJpZi5vCgkkKEdDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfdXdpbi5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIEdOVSBDIGNvbXBpbGVyIEJTRC9PUyBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTwojCgpic2RpOglpb3pvbmVfYnNkaS5vIGxpYmJpZi5vIGZpbGVvcF9ic2RpLm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9ic2RpLm8gbGliYmlmLm8gLW8gaW96b25lCgkkKENDKSAtTyBmaWxlb3BfYnNkaS5vIC1vIGZpbGVvcAoJJChDQykgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBHTlUgQyBjb21waWxlciBGcmVlQlNEIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMKCmZyZWVic2Q6CWlvem9uZV9mcmVlYnNkLm8gbGliYmlmLm8gZmlsZW9wX2ZyZWVic2QubyBsaWJhc3luYy5vIHBpdF9zZXJ2ZXIubwoJJChDQykgJChMREZMQUdTKSBpb3pvbmVfZnJlZWJzZC5vIGxpYmJpZi5vIC1scHRocmVhZCBsaWJhc3luYy5vIFwKCQktbyBpb3pvbmUKCSQoQ0MpICAtTyBmaWxlb3BfZnJlZWJzZC5vIC1vIGZpbGVvcAoJJChDQykgIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VIEMgY29tcGlsZXIgRHJhZ29uRmx5IGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcwojCmRyYWdvbmZseToJaW96b25lX2RyYWdvbmZseS5vIGxpYmJpZi5vIGZpbGVvcF9kcmFnb25mbHkubyBwaXRfc2VydmVyLm8KCSQoQ0MpICQoTERGTEFHUykgaW96b25lX2RyYWdvbmZseS5vIGxpYmJpZi5vIC1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9kcmFnb25mbHkubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSBDIGNvbXBpbGVyIE1hY29zWCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTwojCgptYWNvc3g6CWlvem9uZV9tYWNvc3gubyBsaWJiaWYubyBmaWxlb3BfbWFjb3N4Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9tYWNvc3gubyBsaWJiaWYubyAtbyBpb3pvbmUKCSQoQ0MpICAtTyBmaWxlb3BfbWFjb3N4Lm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKIwojCiMgR05VIEMgY29tcGlsZXIgT3BlbkJTRCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTwojCgpvcGVuYnNkOglpb3pvbmVfb3BlbmJzZC5vIGxpYmJpZi5vIGZpbGVvcF9vcGVuYnNkLm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9vcGVuYnNkLm8gbGliYmlmLm8gLW8gaW96b25lCgkkKENDKSAgLU8gZmlsZW9wX29wZW5ic2QubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSBDIGNvbXBpbGVyIE9wZW5CU0QgYnVpbGQgd2l0aCB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08KIwoKb3BlbmJzZC10aHJlYWRzOglpb3pvbmVfb3BlbmJzZC10aHJlYWRzLm8gbGliYmlmLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgLXB0aHJlYWQgaW96b25lX29wZW5ic2QtdGhyZWFkcy5vIFwKCQlsaWJiaWYubyAtbyBpb3pvbmUKCiMKIyBHTlUgQyBjb21waWxlciBPU0ZWMyBidWlsZCAKIyBIYXMgdGhyZWFkcyBhbmQgYXN5bmMgSS9PIGJ1dCBubyBsYXJnZWZpbGVzLgojCgpPU0ZWMzoJaW96b25lX09TRlYzLm8gbGliYmlmLm8gbGliYXN5bmMubwoJJChDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfT1NGVjMubyBsaWJiaWYubyBcCgkJLWxwdGhyZWFkcyBsaWJhc3luYy5vIC1sYWlvIC1vIGlvem9uZQoKIwojIEdOVSBDIGNvbXBpbGVyIE9TRlY0IGJ1aWxkIAojIEhhcyB0aHJlYWRzIGFuZCBhc3luYyBJL08gYnV0IG5vIGxhcmdlZmlsZXMuCiMKCk9TRlY0Oglpb3pvbmVfT1NGVjQubyBsaWJiaWYubyBsaWJhc3luYy5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9PU0ZWNC5vIGxpYmJpZi5vIC1scHRocmVhZCBcCgkJbGliYXN5bmMubyAtbGFpbyAtbyBpb3pvbmUKCiMKIyBHTlUgQyBjb21waWxlciBPU0ZWNSBidWlsZCAKIyBIYXMgdGhyZWFkcyBhbmQgYXN5bmMgSS9PIGJ1dCBubyBsYXJnZWZpbGVzLgojCgpPU0ZWNToJaW96b25lX09TRlY1Lm8gbGliYmlmLm8gbGliYXN5bmMubwoJJChDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfT1NGVjUubyBsaWJiaWYubyAtbHB0aHJlYWQgXAoJCWxpYmFzeW5jLm8gLWxhaW8gLW8gaW96b25lCgojCiMgR05VIEMgY29tcGlsZXIgVFJVNjQgYnVpbGQgCiMgSGFzIHRocmVhZHMgYW5kIGFzeW5jIEkvTyBidXQgbm8gbGFyZ2VmaWxlcy4KIwoKVFJVNjQ6CWlvem9uZV9UUlU2NC5vIGxpYmJpZi5vIGxpYmFzeW5jLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgaW96b25lX1RSVTY0Lm8gbGliYmlmLm8gLWxwdGhyZWFkIFwKCQlsaWJhc3luYy5vIC1sYWlvIC1vIGlvem9uZQoKIwojIEdOVSBHZW5lcmljIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMgZm9yIFNDTwojIE5vdGU6CUJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCBwYXRjaGVzIGZvciBTQ08ncyBPcGVuc2VydmVyCiMgb3IgeW91IHdpbGwgZ2V0IHdhcm5pbmdzIGFib3V0IHRpbWVyIHByb2JsZW1zLgojCgpTQ086CWlvem9uZV9TQ08ubyAgbGliYmlmLm8KCSQoR0NDKSAtTyAkKExERkxBR1MpIGlvem9uZV9TQ08ubyAtbHNvY2tldCAtcyBsaWJiaWYubyAtbyBpb3pvbmUKCgojCiMgR05VIGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PCiMgZm9yIFNDTyBVbml4d2FyZSA1IDcuMS4xIGkzODYgeDg2YXQgU0NPIFVOSVggU1ZSNQojIE5vdGU6IEJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCBwYXRjaGVzIGZvciBTQ08ncyBPcGVuc2VydmVyCiMgb3IgeW91IHdpbGwgZ2V0IHdhcm5pbmdzIGFib3V0IHRpbWVyIHByb2JsZW1zLgojCgpTQ09fVW5peHdhcmVfZ2NjOglpb3pvbmVfU0NPX1VuaXh3YXJlX2djYy5vICBsaWJiaWYubyBsaWJhc3luYy5vCgkkKEdDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfU0NPX1VuaXh3YXJlX2djYy5vIGxpYmJpZi5vIGxpYmFzeW5jLm8gXAoJCS1sc29ja2V0IC1sdGhyZWFkIC1vIGlvem9uZQoKIwojIEdOVSBDIGNvbXBpbGVyIE5ldEJTRCBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTwojCgpuZXRic2Q6CWlvem9uZV9uZXRic2QubyAgbGliYmlmLm8gZmlsZW9wX25ldGJzZC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfbmV0YnNkLm8gbGliYmlmLm8gLW8gaW96b25lCgkkKENDKSAtTyBmaWxlb3BfbmV0YnNkLm8gLW8gZmlsZW9wCgkkKENDKSAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojCiMgTm93IGZvciB0aGUgbWFjaGluZSBzcGVjaWZpYyBzdHVmZgojCgppb3pvbmVfaHB1eC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEhQLVVYICg5LjA1KSIKCUBlY2hvICIiCgkkKEM4OSkgK2UgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPSciaHB1eCInICQoQ0ZMQUdTKSBpb3pvbmUuYyAgLW8gaW96b25lX2hwdXgubwoJJChDODkpICtlIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX2hwdXgtMTEuMC5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDExLjApIgoJQGVjaG8gIiIKCSQoQ0MpIC1jICtPMyArT3BhcmFsbGVsIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktRE5BTUU9JyJocHV4LTExLjAiJyAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgXAoJCWlvem9uZS5jICAtbyBpb3pvbmVfaHB1eC0xMS4wLm8KCSQoQ0MpIC1jICArTzMgK09wYXJhbGxlbCAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8KCSQoQ0MpIC1jICArTzMgK09wYXJhbGxlbCAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGxpYmJpZi5jICAtbyBsaWJiaWYubwoKaW96b25lX2hwdXgtMTEuMHcubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEhQLVVYICgxMS4wdykiCglAZWNobyAiIgoJJChDQykgLWMgK0RENjQgK08zIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCSAgICAtRE5BTUU9JyJocHV4LTExLjB3IicgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGlvem9uZS5jIFwKCSAgICAgLW8gaW96b25lX2hwdXgtMTEuMHcubwoJJChDQykgLWMgK0RENjQgK08zIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmN3Lm8KCSQoQ0MpIC1jICtERDY0ICtPMyAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGxpYmJpZi5jICAtbyBsaWJiaWYubwoKaW96b25lX2hwdXhzLTExLjAubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBzaW1wbGUgaW96b25lIGZvciBIUC1VWCAoMTEuMCkiCglAZWNobyAiIgoJJChDQykgLWMgIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIFwKCQktRE5BTUU9JyJocHV4cy0xMS4wIicgLURBU1lOQ19JTyAtRFZYRlMgLURIQVZFX1BSRUFEICQoQ0ZMQUdTKSBpb3pvbmUuYyAgXAoJCS1vIGlvem9uZV9ocHV4cy0xMS4wLm8KCSQoQ0MpIC1jICAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyBcCgkJLURBU1lOQ19JTyAgLURWWEZTICQoQ0ZMQUdTKSBsaWJhc3luYy5jICAtbyBsaWJhc3luYy5vIAoJJChDQykgLWMgIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIFwKCQktREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYmlmLmMgIC1vIGxpYmJpZi5vIAoKZmlsZW9wX2hwdXhzLTExLjAubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgc2ltcGxlIGZpbGVvcCBmb3IgSFAtVVggKDExLjApIgoJQGVjaG8gIiIKCSQoQ0MpIC1jICAkKENGTEFHUykgZmlsZW9wLmMgIC1vIGZpbGVvcF9ocHV4cy0xMS4wLm8gCgpwaXRfc2VydmVyLm86CXBpdF9zZXJ2ZXIuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyB0aGUgcGl0X3NlcnZlciIKCUBlY2hvICIiCgkkKENDKSAtYyAgJChDRkxBR1MpIHBpdF9zZXJ2ZXIuYyAgLW8gcGl0X3NlcnZlci5vIAoKcGl0X3NlcnZlcl93aW4ubzoJcGl0X3NlcnZlci5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIHRoZSBwaXRfc2VydmVyIGZvciBXaW5kb3dzIgoJQGVjaG8gIiIKCSQoQ0MpIC1jICAkKENGTEFHUykgLURXaW5kb3dzIHBpdF9zZXJ2ZXIuYyAgLW8gcGl0X3NlcnZlcl93aW4ubyAKCmlvem9uZV9ocHV4cy0xMS4wdy5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIHNpbXBsZSBpb3pvbmUgZm9yIEhQLVVYICgxMS4wdykiCglAZWNobyAiIgoJJChDQykgLWMgK0RENjQgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgXAoJCS1ETkFNRT0nImhwdXhzLTExLjB3IicgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgXAoJCS1ESEFWRV9QUkVBRCAkKENGTEFHUykgaW96b25lLmMgIC1vIGlvem9uZV9ocHV4cy0xMS4wdy5vCgkkKENDKSAtYyArREQ2NCAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jdy5vIAoJJChDQykgLWMgK0RENjQgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgXAoJCS1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURWWEZTICQoQ0ZMQUdTKSBsaWJiaWYuYyAgLW8gbGliYmlmLm8gCgppb3pvbmVfaHB1eC0xMC4xLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDEwLjEpIgoJQGVjaG8gIiIKCSQoQzg5KSArZSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJocHV4LTEwLjEiJyAkKENGTEFHUykgaW96b25lLmMgIC1vIGlvem9uZV9ocHV4LTEwLjEubwoJJChDODkpICtlIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAgLW8gbGliYmlmLm8KCmlvem9uZV9ocHV4LTEwLjIwLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDEwLjIwKSIKCUBlY2hvICIiCgkkKEM4OSkgK2UgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPSciaHB1eC0xMC4yMCInICQoQ0ZMQUdTKSBpb3pvbmUuYyAgLW8gaW96b25lX2hwdXgtMTAuMjAubwoJJChDODkpICtlIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAgLW8gbGliYmlmLm8KCmlvem9uZV9naHB1eC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEdDQyBIUC1VWCAoOS4wNSkgIgoJQGVjaG8gIiIKCSQoR0NDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLUROQU1FPSciaD1naHB1eCInIC1vIGlvem9uZV9naHB1eC5vCgkkKEdDQykgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfZ2VuZXJpYy5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgR2VuZXJpYyAiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLURnZW5lcmljIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1ETkFNRT0nIkdlbmVyaWMiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX2dlbmVyaWMubwoJJChDQykgLWMgLU8gLURnZW5lcmljIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX2hwdXhfbm8ubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBIUC1VWCAoOS4wNSkgd2l0aG91dCBhbnNpIGNvbXBpbGVyIgoJQGVjaG8gIiIKCSQoTkFDQykgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ETk9fVEhSRUFEUyBpb3pvbmUuYyBcCgkJLUROQU1FPSciaHB1eF9ub19hbnNpIicgLW8gaW96b25lX2hwdXhfbm8ubwoJJChOQUNDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLUROT19USFJFQURTIFwKCQlsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX2hwdXhfbm8tMTAuMS5vOglpb3pvbmUuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEhQLVVYICgxMC4xKSB3aXRob3V0IGFuc2kgY29tcGlsZXIiCglAZWNobyAiIgoJJChOQUNDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLUROT19USFJFQURTIGlvem9uZS5jIFwKCQktRE5BTUU9JyJocHV4X25vX2Fuc2lfMTAuMSInIC1vIGlvem9uZV9ocHV4X25vLTEwLjEubwoJJChOQUNDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLUROT19USFJFQURTIFwKCQlsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX2xpbnV4LXBvd2VycGMubzoJaW96b25lLmMgbGliYmlmLmMgbGliYXN5bmMuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4IFBvd2VyUEMiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ERE9OVF9IQVZFX09fRElSRUNUIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktRE5BTUU9JyJsaW51eC1wb3dlcnBjIicgLW8gaW96b25lX2xpbnV4LXBvd2VycGMubwoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURTSEFSRURfTUVNIC1EbGludXggJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jICAtbyBsaWJhc3luYy5vIAoKaW96b25lX2xpbnV4LXBvd2VycGM2NC5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXggUG93ZXJQQzY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE5BTUU9JyJsaW51eC1wb3dlcnBjNjQiJyBcCgkJLURTSEFSRURfTUVNIC1EbGludXggLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJJChGTEFHNjRCSVQpIC1vIGlvem9uZV9saW51eC1wb3dlcnBjNjQubwoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURTSEFSRURfTUVNIC1EbGludXggJChDRkxBR1MpIGxpYmJpZi5jICQoRkxBRzY0QklUKSAtbyBsaWJiaWYubwoJJChDQykgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAkKEZMQUc2NEJJVCkgLW8gbGliYXN5bmMubyAKCgppb3pvbmVfbGludXgtc3BhcmMubzoJaW96b25lLmMgbGliYmlmLmMgbGliYXN5bmMuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4IFNwYXJjIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRERPTlRfSEFWRV9PX0RJUkVDVCBcCgkJLURTSEFSRURfTUVNIC1EbGludXggLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLUROQU1FPScibGludXgtc3BhcmMiJyAtbyBpb3pvbmVfbGludXgtc3BhcmMubwoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURTSEFSRURfTUVNIC1EbGludXggJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jICAtbyBsaWJhc3luYy5vIAoKaW96b25lX2xpbnV4Lm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBMaW51eCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURIQVZFX1BSRUFEIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktRE5BTUU9JyJsaW51eCInIC1vIGlvem9uZV9saW51eC5vCgkkKENDKSAtV2FsbCAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1XYWxsIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8gCgpmaWxlb3BfQUlYLm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgQUlYIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfQUlYLm8KCmZpbGVvcF9BSVgtTEYubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBBSVgtTEYiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9BSVgtTEYubwoKZmlsZW9wX2JzZGkubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBCU0RpIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfYnNkaS5vCgpmaWxlb3BfZnJlZWJzZC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIEZyZWVCU0QiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9mcmVlYnNkLm8KCmZpbGVvcF9uZXRic2QubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBOZXRCU0QiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9uZXRic2QubwoKZmlsZW9wX1NvbGFyaXMubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBTb2xhcmlzIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpcy5vCgpmaWxlb3BfU29sYXJpczEwLm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgU29sYXJpczEwIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpczEwLm8KCmZpbGVvcF9Tb2xhcmlzMTBjYy5vOiBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIFNvbGFyaXMxMGNjIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpczEwY2MubwoKCmZpbGVvcF9Tb2xhcmlzMTBnY2MubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBTb2xhcmlzMTBnY2MiCglAZWNobyAiIgoJJChHQ0MpIC1jIC1PICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpczEwZ2NjLm8KCmZpbGVvcF9Tb2xhcmlzMTBnY2MtNjQubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBTb2xhcmlzMTBnY2MtNjQiCglAZWNobyAiIgoJJChHQ0MpIC1jIC1PICQoQ0ZMQUdTKSAkKFMxMEdDQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpczEwZ2NjLTY0Lm8KCmZpbGVvcF9Tb2xhcmlzMTBjYy02NC5vOiAgICAgIGZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgU29sYXJpczEwY2MtNjQiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpICQoUzEwQ0NGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX1NvbGFyaXMxMGNjLTY0Lm8KCgpmaWxlb3BfbGludXgubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC5vCgpmaWxlb3Bfb3BlbmJzZC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIE9wZW5CU0QiCglAZWNobyAiIgoJJChDQykgLVdhbGwgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9vcGVuYnNkLm8KCmZpbGVvcF9tYWNvc3gubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBNQUMgT1MgWCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTyAtRG1hY29zeCAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX21hY29zeC5vCgpmaWxlb3BfbGludXgtaWE2NC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4LWlhNjQiCglAZWNobyAiIgoJJChDQykgLVdhbGwgLWMgLU8zICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfbGludXgtaWE2NC5vCgpmaWxlb3BfbGludXgtcHBjLm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgTGludXgtcG93ZXJwYyIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1wcGMubwoKZmlsZW9wX2xpbnV4LXBwYzY0Lm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgTGludXgtcG93ZXJwYzY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgJChGTEFHNjRCSVQpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1wcGM2NC5vCgpmaWxlb3BfbGludXgtQU1ENjQubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eC1BTUQ2NCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1BTUQ2NC5vCgpmaWxlb3BfbGludXgtYXJtLm86ICBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4LWFybSIKCUBlY2hvICIiCgkkKEdDQykgLVdhbGwgLWMgLU8zICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfbGludXgtYXJtLm8KCmZpbGVvcF9saW51eC1zMzkwLm86ICBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4LVMzOTAiCglAZWNobyAiIgoJJChHQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4LXMzOTAubwoKZmlsZW9wX2xpbnV4LXMzOTB4Lm86ICBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4LXMzOTB4IgoJQGVjaG8gIiIKCSQoR0NDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1zMzkweC5vCgpmaWxlb3Bfd2luZG93cy5vOiBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIFdpbmRvd3MiCglAZWNobyAiIgoJJChHQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgLURXaW5kb3dzIGZpbGVvcC5jIC1vIGZpbGVvcF93aW5kb3dzLm8KCmlvem9uZV9saW51eC1pYTY0Lm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBMaW51eC1pYTY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE5BTUU9JyJsaW51eC1pYTY0IicgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgaW96b25lLmMgXAoJCS1vIGlvem9uZV9saW51eC1pYTY0Lm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmMubyAKCmlvem9uZV9saW51eC1hcm0ubzoJaW96b25lLmMgbGliYmlmLmMgbGliYXN5bmMuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4LWFybSIKCUBlY2hvICIiCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURIQVZFX1BSRUFEIFwKCQktRE5BTUU9JyJsaW51eC1hcm0iJyAtRExJTlVYX0FSTSAtRFNIQVJFRF9NRU0gXAoJCS1EbGludXggLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLW8gaW96b25lX2xpbnV4LWFybS5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8KCmlvem9uZV9saW51eC1BTUQ2NC5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jIAoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4LUFNRDY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMiAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE5BTUU9JyJsaW51eC1BTUQ2NCInIFwKCQktRF9fQU1ENjRfXyAtRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCSQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLW8gaW96b25lX2xpbnV4LUFNRDY0Lm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmMubyAKCmlvem9uZV9saW51eC1zMzkwLm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBMaW51eC1zMzkwIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtREhBVkVfUFJFQUQgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgaW96b25lLmMgXAoJCS1ETkFNRT0nImxpbnV4LXMzOTAiJyAtbyBpb3pvbmVfbGludXgtczM5MC5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EU0hBUkVEX01FTSAtRGxpbnV4IFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCmlvem9uZV9saW51eC1zMzkweC5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXgtczM5MHgiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ESEFWRV9QUkVBRCBcCgkJLURTSEFSRURfTUVNIC1EbGludXggLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLUROQU1FPScibGludXgtczM5MHgiJyAtbyBpb3pvbmVfbGludXgtczM5MHgubwoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRFNIQVJFRF9NRU0gLURsaW51eCBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgoKaW96b25lX0FJWC5vOglpb3pvbmUuYyBsaWJiaWYuYyAKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBBSVgiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLURfX0FJWF9fIC1EX05PX1BST1RPIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1ETkFNRT0nIkFJWCInIC1EU0hBUkVEX01FTSAgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9BSVgubwoJJChDQykgLWMgLU8gLURfX0FJWF9fIC1EX05PX1BST1RPIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1EU0hBUkVEX01FTSAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9BSVgtTEYubzoJaW96b25lLmMgbGliYmlmLmMgCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgQUlYIHdpdGggTGFyZ2UgZmlsZXMiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLURfX0FJWF9fIC1EX05PX1BST1RPIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1EU0hBUkVEX01FTSAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0xBUkdFX0ZJTEVTIFwKCQktRE5BTUU9JyJBSVgtTEYiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX0FJWC1MRi5vCgkkKENDKSAtYyAtTyAtRF9fQUlYX18gLURfTk9fUFJPVE8gLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLURTSEFSRURfTUVNIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9MQVJHRV9GSUxFUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfc29sYXJpcy5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpcyIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQktRE5BTUU9JyJTb2xhcmlzIicgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzLm8KCSQoQ0MpIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9fTFA2NF9fIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCSQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCSQoQ0MpIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9fTFA2NF9fIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX3NvbGFyaXM3Z2NjLm86CWlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzN2djYyIKCUBlY2hvICIiCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJLUROQU1FPSciU29sYXJpczdnY2MiJyAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYzcubwoJJChHQ0MpIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9fTFA2NF9fIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWY3Lm8KCSQoR0NDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQktRE5BTUU9JyJTb2xhcmlzN2djYyInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc29sYXJpczdnY2MubwoKaW96b25lX3NvbGFyaXMxMC5vOiAgaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzMTAiCglAZWNobyAiIgoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJICAgICAgICAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmMTAubwoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJICAgICAgICAtRE5BTUU9JyJTb2xhcmlzMTAiJyAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYzEwLm8KCSQoQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1Ec3R1ZGlvMTEgXAoJICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJICAgICAgICAtRE5BTUU9JyJTb2xhcmlzMTAiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMxMC5vCgppb3pvbmVfc29sYXJpczEwY2MubzogIGlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpczEwY2MiCglAZWNobyAiIgoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJICAgICAgICAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmMTBjYy5vCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMCInICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jMTBjYy5vCgkkKENDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRHN0dWRpbzExIFwKCSAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCSAgICAgICAgLUROQU1FPSciU29sYXJpczEwIicgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzMTBjYy5vCgppb3pvbmVfc29sYXJpczEwZ2NjLm86ICBpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNvbGFyaXMxMGdjYyIKCUBlY2hvICIiCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYxMC5vCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMGdjYyInICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jMTAubwoJJChHQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKICAgICAgICAgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCiAgICAgICAgICAgICAgICAtRE5BTUU9JyJTb2xhcmlzMTBnY2MiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMxMGdjYy5vCgppb3pvbmVfc29sYXJpczEwZ2NjLTY0Lm86ICBpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNvbGFyaXMxMGdjYy02NCIKCUBlY2hvICIiCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgICQoQ0ZMQUdTKSAkKFMxMEdDQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYxMC02NC5vCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMGdjYy02NCInICQoQ0ZMQUdTKSAkKFMxMEdDQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jMTAtNjQubwoJJChHQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKICAgICAgICAgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCiAgICAgICAgICAgICAgICAtRE5BTUU9JyJTb2xhcmlzMTBnY2MtNjQiJyAkKENGTEFHUykgJChTMTBHQ0NGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMxMGdjYy02NC5vCgppb3pvbmVfc29sYXJpczEwY2MtNjQubzogIGlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpczEwY2MtNjQiCglAZWNobyAiIgoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJJChDRkxBR1MpICQoUzEwQ0NGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmMTAtNjQubwoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJLUROQU1FPSciU29sYXJpczEwY2MtNjQiJyAkKENGTEFHUykgJChTMTBDQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jMTAtNjQubwoJJChDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURzdHVkaW8xMSBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQktRE5BTUU9JyJTb2xhcmlzMTBjYy02NCInICQoQ0ZMQUdTKSAkKFMxMENDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzMTBjYy02NC5vCgoKIwojCQktRFNIQVJFRF9NRU0gLURzb2xhcmlzIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwojCQktRFNIQVJFRF9NRU0gLURzb2xhcmlzIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzLm8KIwoKaW96b25lX3NvbGFyaXMtMi42Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpcy0yLjYiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPSciU29sYXJpcy0yLjYiJyAtRHNvbGFyaXMgICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc29sYXJpcy0yLjYubwoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyBcCgkJLURzb2xhcmlzICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX3NvbGFyaXM4LTY0Lm86IGlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzOC02NCIKCUBlY2hvICIiCgkkKENDKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1ETkFNRT0nIlNvbGFyaXM4LTY0IicgLURzb2xhcmlzIC1ESEFWRV9QUkVBRCBcCgkJJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzOC02NC5vCgkkKENDKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9fTFA2NF9fIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IFwKCQktRHNvbGFyaXMgLURIQVZFX1BSRUFEICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCSQoQ0MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1Ec29sYXJpcyAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfc29sYXJpczgtNjQtVlhGUy5vOiBpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpczgtNjQtVlhGUyIKCUBlY2hvICIiCgkkKENDKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgLWMgLUkvb3B0L1ZSVFN2eGZzL2luY2x1ZGUvIC1EdW5peCBcCgkJLURWWEZTIC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1ETkFNRT0nIlNvbGFyaXM4LTY0IicgLURzb2xhcmlzIC1ESEFWRV9QUkVBRCBcCgkJJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzOC02NC1WWEZTLm8KCSQoQ0MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiAtYyAgLUkvb3B0L1ZSVFN2eGZzL2luY2x1ZGUvIC1EdW5peCBcCgkJLURWWEZTIC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1Ec29sYXJpcyAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoJJChDQykgLWZhc3QgLXh0YXJnZXQ9Z2VuZXJpYzY0IC12IC1jIC1JL29wdC9WUlRTdnhmcy9pbmNsdWRlLyAtRHVuaXggXAoJCS1EVlhGUyAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9fTFA2NF9fIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IFwKCQktRHNvbGFyaXMgLURIQVZFX1BSRUFEICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX3dpbmRvd3MubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYyBmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFdpbmRvd3MgKE5vIGFzeW5jIEkvTykiCglAZWNobyAiIgoJJChHQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX01BRFZJU0UgIFwKCQktRFdpbmRvd3MgJChDRkxBR1MpIC1ERE9OVF9IQVZFX09fRElSRUNUIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfd2luZG93cy5vCgkkKEdDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fTUFEVklTRSBcCgkJLURXaW5kb3dzICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX3V3aW4ubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBVV0lOIChObyB0aHJlYWRzLCBObyBhc3luYyBJL08pIgoJQGVjaG8gIiIKCSQoR0NDKSAtYyAtTyAtRFVXSU4gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyAgLUROT19NQURWSVNFIFwKCQktRE5BTUU9JyJVV0lOIicgLURTSEFSRURfTUVNIC1EV2luZG93cyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3V3aW4ubwoJJChHQ0MpIC1jIC1PIC1EVVdJTiAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTICAtRE5PX01BRFZJU0UgXAoJCS1EU0hBUkVEX01FTSAtRFdpbmRvd3MgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfSVJJWDY0Lm86CWlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBJUklYNjQiCglAZWNobyAiIgoJJChDQykgLTMyIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EQVNZTkNfSU8gXAoJCS1ETkFNRT0nIklSSVg2NCInIC1ESVJJWDY0IC1EU0hBUkVEX01FTSAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX0lSSVg2NC5vCgkkKENDKSAtMzIgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURBU1lOQ19JTyBcCgkJLURJUklYNjQgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jdy5vCgkkKENDKSAtMzIgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURBU1lOQ19JTyBcCgkJLURJUklYNjQgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX0lSSVgubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIElSSVgiCglAZWNobyAiIgoJJChDQykgIC1PIC0zMiAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1ETkFNRT0nIklSSVgiJyAtRElSSVggLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfSVJJWC5vCgkkKENDKSAgLU8gLTMyIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURJUklYIC1EU0hBUkVEX01FTSAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgkkKENDKSAgLU8gLTMyIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURJUklYIC1EU0hBUkVEX01FTSAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9DcmF5WDEubzogaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIENyYXlYMSIKCUBlY2hvICIiCgkkKENDKSAgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLUROQU1FPSciQ3JheVgxIicgLURJUklYNjQgLURTSEFSRURfTUVNIC1EX19DcmF5WDFfXyBcCgkJJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9DcmF5WDEubwoJJChDQykgIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCS1ESVJJWDY0IC1EU0hBUkVEX01FTSAtRF9fQ3JheVgxX18gXAoJCSQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jdy5vCgkkKENDKSAgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURJUklYNjQgLURTSEFSRURfTUVNIC1EX19DcmF5WDFfXyAkKENGTEFHUykgbGliYmlmLmMgXAoJCS1vIGxpYmJpZi5vCgppb3pvbmVfc3BwdXgubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTUFAtVVggdXNpbmcgQ29udmV4IGNvbXBpbGVyIgoJQGVjaG8gIiIKCSQoTkFDQykgLWMgIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRF9fY29udmV4X3NwcCBcCgkJLUROQU1FPScic3BwdXgiJyAtV2wsK3BhcmFsbGVsIC1ESEFWRV9BTlNJQ19DIC1ESEFWRV9QUkVBRCBcCgkJLURIQVZFX1BSRUFEViAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NwcHV4Lm8KCSQoTkFDQykgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1EX19jb252ZXhfc3BwIFwKCQktV2wsK3BhcmFsbGVsIC1ESEFWRV9BTlNJQ19DIC1ESEFWRV9QUkVBRCAtREhBVkVfUFJFQURWIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9zcHB1eC0xMC4xLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU1BQLVVYIHVzaW5nIEhQIGFuc2ljIGNvbXBpbGVyIgoJQGVjaG8gIiIKCSQoTkFDQykgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1EX19jb252ZXhfc3BwIFwKCQktREhBVkVfQU5TSUNfQyAtREhBVkVfUFJFQUQgLURIQVZFX1BSRUFEViAkKENGTEFHUykgaW96b25lLmMgXAoJCSAtRE5BTUU9JyJzcHB1eC0xMC4xIicgLVdsLCtwYXJhbGxlbCAtbyBpb3pvbmVfc3BwdXgtMTAuMS5vCgkkKE5BQ0MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRF9fY29udmV4X3NwcCBcCgkJLURIQVZFX0FOU0lDX0MgLURIQVZFX1BSRUFEIC1ESEFWRV9QUkVBRFYgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtV2wsK3BhcmFsbGVsIC1vIGxpYmJpZi5vCgppb3pvbmVfc3BwdXhfbm8tMTAuMS5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNQUC1VWCBubyBBTlNJIGMgY29tcGlsZXIiCglAZWNobyAiIgoJJChDQ1MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRF9fY29udmV4X3NwcCBcCgkJLUROQU1FPScic3BwdXhfbm9fYW5zaV8xMC4xIicgLVdsLCtwYXJhbGxlbCAtREhBVkVfUFJFQUQgXAoJCS1ESEFWRV9QUkVBRFYgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zcHB1eF9uby0xMC4xLm8KCSQoQ0NTKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURfX2NvbnZleF9zcHAgXAoJCS1XbCwrcGFyYWxsZWwgLURIQVZFX1BSRUFEIC1ESEFWRV9QUkVBRFYgJChDRkxBR1MpIFwKCQlsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX2NvbnZleC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIENvbnZleCAnQycgc2VyaWVzIgoJQGVjaG8gIiIKCQkkKENDKSAtYyAtTyAtRHVuaXggLUROT19USFJFQURTIC1EYnNkNF8yICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJCS1ETkFNRT0nIkNvbnZleCInIC1vIGlvem9uZV9jb252ZXgubyAKCQkkKENDKSAtYyAtTyAtRHVuaXggLUROT19USFJFQURTIC1EYnNkNF8yIFwKCQkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vIAoKaW96b25lX2JzZGkubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBCU0QvT1MiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIFwKCQktRE5BTUU9JyJic2RpIicgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9ic2RpLm8KCSQoQ0MpIC1jIC1PIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfZnJlZWJzZC5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgRnJlZUJTRCIKCUBlY2hvICIiCgkkKENDKSAtYyAke0NGTEFHU30gIC1ERnJlZUJTRCAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURIQVZFX1BSRUFEIC1ETkFNRT0nImZyZWVic2QiJyAtRFNIQVJFRF9NRU0gXAoJCSQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfZnJlZWJzZC5vCgkkKENDKSAtYyAke0NGTEFHU30gLURGcmVlQlNEIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRFNIQVJFRF9NRU0gLURIQVZFX1BSRUFEICQoQ0ZMQUdTKSBsaWJiaWYuYyBcCgkJLW8gbGliYmlmLm8KCSQoQ0MpIC1jICR7Q0ZMQUdTfSAtREZyZWVCU0QgLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EU0hBUkVEX01FTSAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmFzeW5jLmMgXAoJCS1vIGxpYmFzeW5jLm8KCmlvem9uZV9kcmFnb25mbHkubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBEcmFnb25GbHkiCglAZWNobyAiIgoJJChDQykgLWMgJHtDRkxBR1N9ICAtRF9fRHJhZ29uRmx5X18gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPSciZHJhZ29uZmx5IicgLURTSEFSRURfTUVNIC1ESEFWRV9QUkVBRCAtREhBVkVfUFJFQURWIFwKCQkkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX2RyYWdvbmZseS5vCgkkKENDKSAtYyAke0NGTEFHU30gLURfX0RyYWdvbkZseV9fIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1EU0hBUkVEX01FTSAtREhBVkVfUFJFQUQgLURIQVZFX1BSRUFEViAkKENGTEFHUykgbGliYmlmLmMgXAoJCS1vIGxpYmJpZi5vCgppb3pvbmVfbWFjb3N4Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgTWFjT1NYIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PIC1EdW5peCAtRGJzZDRfMiAtRG1hY29zeCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1ETkFNRT0nIm1hY29zeCInIC1EU0hBUkVEX01FTSAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX21hY29zeC5vCgkkKENDKSAtYyAtTyAtRHVuaXggLURic2Q0XzIgLURtYWNvc3ggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRFNIQVJFRF9NRU0gJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfb3BlbmJzZC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIE9wZW5CU0QiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPScib3BlbmJzZCInIC1EU0hBUkVEX01FTSAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX29wZW5ic2QubwoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX29wZW5ic2QtdGhyZWFkcy5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIE9wZW5CU0Qgd2l0aCB0aHJlYWRzIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PIC1wdGhyZWFkIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyBcCgkJLUROQU1FPScib3BlbmJzZC10aHJlYWRzIicgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfb3BlbmJzZC10aHJlYWRzLm8KCSQoQ0MpIC1jIC1PIC1wdGhyZWFkIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfT1NGVjMubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBPU0ZWMyIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlYzIFwKCQktRE5BTUU9JyJPU0ZWMyInIC1ETk9fUFJJTlRfTExEIC1ET1NGXzY0ICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLW8gaW96b25lX09TRlYzLm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjMgXAoJCS1ETk9fUFJJTlRfTExEICAtRE9TRl82NCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjMgXAoJCS1ETk9fUFJJTlRfTExEIC1ET1NGXzY0ICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCmlvem9uZV9PU0ZWNC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIE9TRlY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjQgXAoJCS1ETkFNRT0nIk9TRlY0IicgLUROT19QUklOVF9MTEQgLURPU0ZfNjQgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfT1NGVjQubwoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWNCBcCgkJLUROT19QUklOVF9MTEQgIC1ET1NGXzY0ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWNCBcCgkJLUROT19QUklOVF9MTEQgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoKaW96b25lX09TRlY1Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgT1NGVjUiCglAZWNobyAiIgoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWNSBcCgkJLUROQU1FPSciT1NGVjUiJyAtRE5PX1BSSU5UX0xMRCAtRE9TRl82NCAkKENGTEFHUykgaW96b25lLmMgXAoJCS1vIGlvem9uZV9PU0ZWNS5vCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY1IFwKCQktRE5PX1BSSU5UX0xMRCAgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY1IFwKCQktRE5PX1BSSU5UX0xMRCAtRE9TRl82NCAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgppb3pvbmVfVFJVNjQubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBUUlU2NCIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY1IC1EVFJVNjQgLURIQVZFX1BSRUFEIFwKCQktRE5BTUU9JyJUUlU2NCInIC1ETk9fUFJJTlRfTExEIC1ET1NGXzY0IC1wdGhyZWFkICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLW8gaW96b25lX1RSVTY0Lm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjUgLURIQVZFX1BSRUFEIFwKCQktRE5PX1BSSU5UX0xMRCAgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY1IC1ESEFWRV9QUkVBRCBcCgkJLUROT19QUklOVF9MTEQgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoKaW96b25lX1NDTy5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgU0NPICIKCUBlY2hvICIiCgkkKEdDQykgLWMgLU8gLURTQ08gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyAtRE5PX01BRFZJU0UgXAoJCS1ETkFNRT0nIlNDTyInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfU0NPLm8KCSQoR0NDKSAtYyAtTyAtRFNDTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIC1ETk9fTUFEVklTRSBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfU0NPX1VuaXh3YXJlX2djYy5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBTQ09fVW5peHdhcmVfZ2NjICIKCUBlY2hvICIiCgkkKEdDQykgLWMgLU8gLURTQ09fVW5peHdhcmVfZ2NjIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyAgXAoJCS1ETkFNRT0nIlNDT19Vbml4d2FyZV9nY2MiJyAtbyBpb3pvbmVfU0NPX1VuaXh3YXJlX2djYy5vCgkkKEdDQykgLWMgLU8gLURTQ09fVW5peHdhcmVfZ2NjIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChHQ0MpIC1jIC1PIC1EU0NPX1VuaXh3YXJlX2djYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgIFwKCQktREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgppb3pvbmVfbmV0YnNkLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBOZXRCU0QgIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1ETkFNRT0nIm5ldGJzZCInIC1EU0hBUkVEX01FTSAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX25ldGJzZC5vCgkkKENDKSAtYyAtTyAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRFNIQVJFRF9NRU0gJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpb3pvbmUzXzM0Ny9zcmMvY3VycmVudC9saWJhc3luYy5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDQ0NAAwMzI2MzI2ADAwMTE2MTAAMDAwMDAxMjMwNDcAMTEzNTU2NDA0MjEAMDE2MjU0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc2hlbmhhbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKLyogCiAqIExpYnJhcnkgZm9yIFBvc2l4IGFzeW5jIHJlYWQgb3BlcmF0aW9ucyB3aXRoIGhpbnRzLgogKiBBdXRob3I6IERvbiBDYXBwcwogKiBDb21wYW55OiBJb3pvbmUKICogRGF0ZTogNC8yNC8xOTk4CiAqCiAqIFR3byBtb2RlbHMgYXJlIHN1cHBvcnRlZC4gIEZpcnN0IG1vZGVsIGlzIGEgcmVwbGFjZW1lbnQgZm9yIHJlYWQoKSB3aGVyZSB0aGUgYXN5bmMKICogb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIGFuZCB0aGUgcmVxdWVzdGVkIGRhdGEgaXMgYmNvcHkoKS1lZCBiYWNrIGludG8gdGhlIHVzZXJzIAogKiBidWZmZXIuIFRoZSBzZWNvbmQgbW9kZWwgaXMgYSBuZXcgdmVyc2lvbiBvZiByZWFkKCkgd2hlcmUgdGhlIGNhbGxlciBkb2VzIG5vdCAKICogc3VwcGx5IHRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIgYnV0IGluc3RlYWQgaXMgcmV0dXJuZWQgYW4gYWRkcmVzcyB0byB0aGUKICogbG9jYXRpb24gb2YgdGhlIGRhdGEuIFRoZSBzZWNvbmQgbW9kZWwgZWxpbWluYXRlcyBhIGJjb3B5IGZyb20gdGhlIHBhdGguCiAqCiAqIFRvIHVzZSBtb2RlbCAjMToKICogMS4gQ2FsbCBhc3luY19pbml0KCZwb2ludGVyX29uX3N0YWNrLGZkLGRpcmVjdF9mbGFnKTsKICoJVGhlIGZkIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBhc3luYyBvcGVyYXRpb25zLgogKglUaGUgZGlyZWN0X2ZsYWcgc2V0cyBWWF9ESVJFQ1QgCiAqCiAqIDIuIENhbGwgYXN5bmNfcmVhZChnYywgZmQsIHVidWZmZXIsIG9mZnNldCwgc2l6ZSwgc3RyaWRlLCBtYXgsIGRlcHRoKQogKiAgICAJV2hlcmU6CiAqCWdjIC4uLi4uLi4uLi4uLglpcyB0aGUgcG9pbnRlciBvbiB0aGUgc3RhY2sKICoJZmQgLi4uLi4uLi4uLi4uCWlzIHRoZSBmaWxlIGRlc2NyaXB0b3IKICoJdWJ1ZmZlciAuLi4uLi4uCWlzIHRoZSBhZGRyZXNzIG9mIHRoZSB1c2VyIGJ1ZmZlci4KICoJb2Zmc2V0IC4uLi4uLi4uCWlzIHRoZSBvZmZzZXQgaW4gdGhlIGZpbGUgdG8gYmVnaW4gcmVhZGluZwogKglzaXplIC4uLi4uLi4uLi4JaXMgdGhlIHNpemUgb2YgdGhlIHRyYW5zZmVyLgogKglzdHJpZGUgLi4uLi4uLi4JaXMgdGhlIGRpc3RhbmNlLCBpbiBzaXplIHVuaXRzLCB0byBzcGFjZSB0aGUgYXN5bmMgcmVhZHMuCiAqCW1heCAuLi4uLi4uLi4uLglpcyB0aGUgbWF4IHNpemUgb2YgdGhlIGZpbGUgdG8gYmUgcmVhZC4KICoJZGVwdGggLi4uLi4uLi4uCWlzIHRoZSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyB0byBwZXJmb3JtLgogKgogKiAzLiBDYWxsIGVuZF9hc3luYyhnYykgd2hlbiBmaW5pc2hlZC4KICoJV2hlcmU6CiAqCWdjIC4uLi4uLi4uLi4uLiBpcyB0aGUgcG9pbnRlciBvbiB0aGUgc3RhY2suCiAqCiAqIFRvIHVzZSBtb2RlbCAjMjoKICogMS4gQ2FsbCBhc3luY19pbml0KCZwb2ludGVyX29uX3N0YWNrLGZkLGRpcmVjdF9mbGFnKTsKICoJVGhlIGZkIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBhc3luYyBvcGVyYXRpb25zLgogKglUaGUgZGlyZWN0X2ZsYWcgc2V0cyBWWF9ESVJFQ1QgCiAqIDIuIENhbGwgYXN5bmNfcmVhZChnYywgZmQsICZ1YnVmZmVyLCBvZmZzZXQsIHNpemUsIHN0cmlkZSwgbWF4LCBkZXB0aCkKICogICAgCVdoZXJlOgogKglnYyAuLi4uLi4uLi4uLi4JaXMgdGhlIHBvaW50ZXIgb24gdGhlIHN0YWNrCiAqCWZkIC4uLi4uLi4uLi4uLglpcyB0aGUgZmlsZSBkZXNjcmlwdG9yCiAqCXVidWZmZXIgLi4uLi4uLglpcyB0aGUgYWRkcmVzcyBvZiBhIHBvaW50ZXIgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiAKICogICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGFzeW5jIGxpYnJhcnkuCiAqCW9mZnNldCAuLi4uLi4uLglpcyB0aGUgb2Zmc2V0IGluIHRoZSBmaWxlIHRvIGJlZ2luIHJlYWRpbmcKICoJc2l6ZSAuLi4uLi4uLi4uCWlzIHRoZSBzaXplIG9mIHRoZSB0cmFuc2Zlci4KICoJc3RyaWRlIC4uLi4uLi4uCWlzIHRoZSBkaXN0YW5jZSwgaW4gc2l6ZSB1bml0cywgdG8gc3BhY2UgdGhlIGFzeW5jIHJlYWRzLgogKgltYXggLi4uLi4uLi4uLi4JaXMgdGhlIG1heCBzaXplIG9mIHRoZSBmaWxlIHRvIGJlIHJlYWQuCiAqCWRlcHRoIC4uLi4uLi4uLglpcyB0aGUgbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4KICoKICogMy4gQ2FsbCBhc3luY19yZWxlYXNlKGdjKSB3aGVuIGZpbmlzaGVkIHdpdGggdGhlIGRhdGEgdGhhdCB3YXMgcmV0dXJuZWQuCiAqICAgIFRoaXMgYWxsb3dzIHRoZSBhc3luYyBsaWJyYXJ5IHRvIHJldXNlIHRoZSBtZW1vcnkgdGhhdCB3YXMgZmlsbGVkIGluCiAqICAgIGFuZCByZXR1cm5lZCB0byB0aGUgdXNlci4KICoKICogNC4gQ2FsbCBlbmRfYXN5bmMoZ2MpIHdoZW4gZmluaXNoZWQuCiAqCVdoZXJlOgogKglnYyAuLi4uLi4uLi4uLi4gaXMgdGhlIHBvaW50ZXIgb24gdGhlIHN0YWNrLgogKgogKiBUbyB1c2UgbW9kZWwgIzE6IChXUklURVMpCiAqIDEuIENhbGwgYXN5bmNfaW5pdCgmcG9pbnRlcl9vbl9zdGFjayxmZCxkaXJlY3RfZmxhZyk7CiAqCVRoZSBmZCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgYXN5bmMgb3BlcmF0aW9ucy4KICoKICogMi4gQ2FsbCBhc3luY193cml0ZShnYywgZmQsIHVidWZmZXIsIHNpemUsIG9mZnNldCwgZGVwdGgpCiAqICAgIAlXaGVyZToKICoJZ2MgLi4uLi4uLi4uLi4uCWlzIHRoZSBwb2ludGVyIG9uIHRoZSBzdGFjawogKglmZCAuLi4uLi4uLi4uLi4JaXMgdGhlIGZpbGUgZGVzY3JpcHRvcgogKgl1YnVmZmVyIC4uLi4uLi4JaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHVzZXIgYnVmZmVyLgogKglzaXplIC4uLi4uLi4uLi4JaXMgdGhlIHNpemUgb2YgdGhlIHRyYW5zZmVyLgogKglvZmZzZXQgLi4uLi4uLi4JaXMgdGhlIG9mZnNldCBpbiB0aGUgZmlsZSB0byBiZWdpbiByZWFkaW5nCiAqCWRlcHRoIC4uLi4uLi4uLglpcyB0aGUgbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4KICoKICogNC4gQ2FsbCBlbmRfYXN5bmMoZ2MpIHdoZW4gZmluaXNoZWQuCiAqCVdoZXJlOgogKglnYyAuLi4uLi4uLi4uLi4gaXMgdGhlIHBvaW50ZXIgb24gdGhlIHN0YWNrLgogKgogKiBOb3RlczoKICoJVGhlIGludGVuZGVkIHVzZSBpcyB0byByZXBsYWNlIGNhbGxzIHRvIHJlYWQoKSB3aXRoIGNhbGxzIHRvCiAqCWFzeW5jX3JlYWQoKSBhbmQgYWxsb3cgdGhlIHVzZXIgdG8gbWFrZSBzdWdnZXN0aW9ucyBvbiAKICoJd2hhdCBraW5kIG9mIGFzeW5jIHJlYWQtYWhlYWQgd291bGQgYmUgbmljZSB0byBoYXZlLgogKglUaGUgZmlyc3QgdHJhbnNmZXIgcmVxdWVzdGVkIGlzIGd1YXJlbnRlZWQgdG8gYmUgY29tcGxldGUKICoJYmVmb3JlIHJldHVybmluZyB0byB0aGUgY2FsbGVyLiBUaGUgYXN5bmMgb3BlcmF0aW9ucyB3aWxsCiAqCWJlIHN0YXJ0ZWQgYW5kIHdpbGwgYWxzbyBiZSBndWFyZW50ZWVkIHRvIGhhdmUgY29tcGxldGVkCiAqCWlmIHRoZSBuZXh0IGNhbGwgc3BlY2lmaWVzIGl0cyBmaXJzdCByZXF1ZXN0IHRvIGJlIG9uZQogKgl0aGF0IHdhcyBwcmV2aW91c2x5IHBlcmZvcm1lZCB3aXRoIGFuIGFzeW5jIG9wZXJhdGlvbi4KICoJCiAqCVRoZSBhc3luY19yZWFkX25vX2NvcHkoKSBmdW5jdGlvbiBhbGxvd3MgdGhlIGFzeW5jIG9wZXJhdGlvbnMKICoJdG8gcmV0dXJuIHRoZSBkYXRhIHRvIHRoZSB1c2VyIGFuZCBub3QgaGF2ZSB0byBwZXJmb3JtIAogKglhIGJjb3B5IG9mIHRoZSBkYXRhIGJhY2sgaW50byB0aGUgdXNlciBzcGVjaWZpZWQgYnVmZmVyIAogKglsb2NhdGlvbi4gVGhpcyBtb2RlbCBpcyBmYXN0ZXIgYnV0IGFzc3VtZXMgdGhhdCB0aGUgdXNlcgogKglhcHBsaWNhdGlvbiBoYXMgYmVlbiBtb2RpZmllZCB0byB3b3JrIHdpdGggdGhpcyBtb2RlbC4KICoKICogCVRoZSBhc3luY193cml0ZSgpIGlzIGludGVuZGVkIHRvIGVuaGFuY2UgdGhlIHBlcmZvcm1hbmNlIG9mIAogKglpbml0aWFsIHdyaXRlcyB0byBhIGZpbGUuIFRoaXMgaXMgdGhlIHNsb3dlc3QgY2FzZSBpbiB0aGUgd3JpdGUKICoJcGF0aCBhcyBpdCBtdXN0IHBlcmZvcm0gbWV0YS1kYXRhIGFsbG9jYXRpb25zIGFuZCB3YWl0LgogKi8KCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPGFpby5oPgojaWYgZGVmaW5lZChzb2xhcmlzKSB8fCBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKFNDT19Vbml4d2FyZV9nY2MpCiNlbHNlCiNpbmNsdWRlIDxzeXMvdGltZXJzLmg+CiNlbmRpZgojaW5jbHVkZSA8c3lzL2Vycm5vLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2lmbmRlZiBic2Q0XzQKI2luY2x1ZGUgPG1hbGxvYy5oPgojZW5kaWYKI2lmZGVmIFZYRlMKI2luY2x1ZGUgPHN5cy9mcy92eF9pb2N0bC5oPgojZW5kaWYKCiNpZiBkZWZpbmVkKE9TRlY1KSB8fCBkZWZpbmVkKGxpbnV4KQojaW5jbHVkZSA8c3RyaW5nLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQobGludXgpCiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2VuZGlmCgojaWYgKChkZWZpbmVkKHNvbGFyaXMpICYmIGRlZmluZWQoX19MUDY0X18pKSB8fCBkZWZpbmVkKF9fczM5MHhfXykpCi8qIElmIHdlIGFyZSBidWlsZGluZyBmb3IgNjQtYml0IFNvbGFyaXMsIGFsbCBmdW5jdGlvbnMgdGhhdCByZXR1cm4gcG9pbnRlcnMKICogbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUgdGhleSBhcmUgdXNlZDsgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIGFzc3VtZQogKiB0aGF0IHRoZXkgcmV0dXJuIGludHMgYW5kIHRoZSB0b3AgMzIgYml0cyBvZiB0aGUgcG9pbnRlciB3aWxsIGJlIGxvc3QsCiAqIGNhdXNpbmcgc2VnbWVudGF0aW9uIGZhdWx0cy4gIFRoZSBmb2xsb3dpbmcgaW5jbHVkZXMgdGFrZSBjYXJlIG9mIHRoaXMuCiAqIEl0IHNob3VsZCBiZSBzYWZlIHRvIGFkZCB0aGVzZSBmb3IgYWxsIG90aGVyIE9TcyB0b28sIGJ1dCB3ZSdyZSBvbmx5CiAqIGRvaW5nIGl0IGZvciBTb2xhcmlzIG5vdyBpbiBjYXNlIGFub3RoZXIgT1MgdHVybnMgb3V0IHRvIGJlIGEgc3BlY2lhbCBjYXNlLgogKi8KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZ3MuaD4gLyogRm9yIHRoZSBCU0Qgc3RyaW5nIGZ1bmN0aW9ucyAqLwojZW5kaWYKCnZvaWQgbWJjb3B5KGNoYXIgKnNvdXJjZSwgY2hhciAqZGVzdCwgc2l6ZV90IGxlbik7CgoKI2lmICFkZWZpbmVkKHNvbGFyaXMpICYmICFkZWZpbmVkKG9mZjY0X3QpICYmICFkZWZpbmVkKF9PRkY2NF9UKSAmJiAhZGVmaW5lZChfX29mZjY0X3RfZGVmaW5lZCkgJiYgIWRlZmluZWQoU0NPX1VuaXh3YXJlX2djYykKdHlwZWRlZiBsb25nIGxvbmcgb2ZmNjRfdDsKI2VuZGlmCiNpZiBkZWZpbmVkKE9TRlY1KQojaW5jbHVkZSA8c3RyaW5nLmg+CiNlbmRpZgoKCmV4dGVybiBsb25nIGxvbmcgcGFnZV9zaXplOwpleHRlcm4gaW50IG9uZTsKLyoKICogSW50ZXJuYWwgY2FjaGUgZW50cnlzLiBFYWNoIGVudHJ5IG9uIHRoZSBnbG9iYWwKICogY2FjaGUsIHBvaW50ZWQgdG8gYnkgYXN5bmNfaW5pdChnYykgd2lsbCBiZSBvZgogKiB0aGlzIHN0cnVjdHVyZSB0eXBlLgogKi8KY2hhciB2ZXJzaW9uW10gPSAiTGliYXN5bmMgVmVyc2lvbiAkUmV2aXNpb246IDMuMjMgJCI7CnN0cnVjdCBjYWNoZV9lbnQgewoJc3RydWN0IGFpb2NiIG15YWlvY2I7CQkJLyogRm9yIHVzZSBpbiBzbWFsbCBmaWxlIG1vZGUgKi8KI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZiBkZWZpbmVkKF9fQ3JheVgxX18pCglhaW9jYjY0X3QgbXlhaW9jYjY0OwkJLyogRm9yIHVzZSBpbiBsYXJnZSBmaWxlIG1vZGUgKi8KI2Vsc2UKCXN0cnVjdCBhaW9jYjY0IG15YWlvY2I2NDsJCS8qIEZvciB1c2UgaW4gbGFyZ2UgZmlsZSBtb2RlICovCiNlbmRpZiAKI2VuZGlmIAoJbG9uZyBsb25nIGZkOwkJCQkvKiBGaWxlIGRlc2NyaXB0b3IgKi8KCWxvbmcgbG9uZyBzaXplOwkJCQkvKiBTaXplIG9mIHRoZSB0cmFuc2ZlciAqLwoJc3RydWN0IGNhY2hlX2VudCAqZm9yd2FyZDsJCS8qIGxpbmsgdG8gbmV4dCBlbGVtZW50IG9uIGNhY2hlIGxpc3QgKi8KCXN0cnVjdCBjYWNoZV9lbnQgKmJhY2s7CQkJLyogbGluayB0byBwcmV2aW91cyBlbGVtZW50IG9uIHRoZSBjYWNoZSBsaXN0ICovCglsb25nIGxvbmcgZGlyZWN0OwkJCS8qIGZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGJ1ZmZlciBzaG91bGQgYmUgKi8KCQkJCQkJLyogZGUtYWxsb2NhdGVkIGJ5IGxpYnJhcnkgKi8KCWNoYXIgKnJlYWxfYWRkcmVzczsJCQkvKiBSZWFsIGFkZHJlc3MgdG8gZnJlZSAqLwoJCgl2b2xhdGlsZSB2b2lkICpvbGRidWY7CQkJLyogVXNlZCBmb3IgZmlyZXdhbGwgdG8gcHJldmVudCBpbiBmbGlnaHQgKi8KCQkJCQkJLyogYWNjaWRlbnRzICovCglpbnQgb2xkZmQ7CQkJCS8qIFVzZWQgZm9yIGZpcmV3YWxsIHRvIHByZXZlbnQgaW4gZmxpZ2h0ICovCgkJCQkJCS8qIGFjY2lkZW50cyAqLwoJc2l6ZV90IG9sZHNpemU7CQkJCS8qIFVzZWQgZm9yIGZpcmV3YWxsIHRvIHByZXZlbnQgaW4gZmxpZ2h0ICovCgkJCQkJCS8qIGFjY2lkZW50cyAqLwp9OwoKLyoKICogSGVhZCBvZiB0aGUgY2FjaGUgbGlzdAogKi8Kc3RydWN0IGNhY2hlIHsKCXN0cnVjdCBjYWNoZV9lbnQgKmhlYWQ7CQkvKiBIZWFkIG9mIGNhY2hlIGxpc3QgKi8KCXN0cnVjdCBjYWNoZV9lbnQgKnRhaWw7CQkvKiB0YWlsIG9mIGNhY2hlIGxpc3QgKi8KCXN0cnVjdCBjYWNoZV9lbnQgKmludXNlX2hlYWQ7CS8qIGhlYWQgb2YgaW4tdXNlIGxpc3QgKi8KCWxvbmcgbG9uZyBjb3VudDsJCS8qIEhvdyBtYW55IGVsZW1lbnRzIG9uIHRoZSBjYWNoZSBsaXN0ICovCglzdHJ1Y3QgY2FjaGVfZW50ICp3X2hlYWQ7CQkvKiBIZWFkIG9mIGNhY2hlIGxpc3QgKi8KCXN0cnVjdCBjYWNoZV9lbnQgKndfdGFpbDsJCS8qIHRhaWwgb2YgY2FjaGUgbGlzdCAqLwoJbG9uZyBsb25nIHdfY291bnQ7CQkvKiBIb3cgbWFueSBlbGVtZW50cyBvbiB0aGUgd3JpdGUgbGlzdCAqLwoJfTsKCmxvbmcgbG9uZyBtYXhfZGVwdGg7CmV4dGVybiBpbnQgZXJybm87CnN0cnVjdCBjYWNoZV9lbnQgKmFsbG9jX2NhY2hlKCk7CnN0cnVjdCBjYWNoZV9lbnQgKmluY2FjaGUoKTsKdm9pZCBhc3luY19pbml0KCk7CnZvaWQgZW5kX2FzeW5jKCk7CmludCBhc3luY19zdXNwZW5kKCk7CmludCBhc3luY19yZWFkKCk7CnZvaWQgdGFrZW9mZl9jYWNoZSgpOwp2b2lkIGRlbF9jYWNoZSgpOwp2b2lkIGFzeW5jX3JlbGVhc2UoKTsKdm9pZCBwdXRvbmludXNlKCk7CnZvaWQgdGFrZW9mZmludXNlKCk7CnN0cnVjdCBjYWNoZV9lbnQgKmFsbG9jYXRlX3dyaXRlX2J1ZmZlcigpOwpzaXplX3QgYXN5bmNfd3JpdGUoKTsKdm9pZCBhc3luY193YWl0X2Zvcl93cml0ZSgpOwp2b2lkIGFzeW5jX3B1dF9vbl93cml0ZV9xdWV1ZSgpOwp2b2lkIGFzeW5jX3dyaXRlX2ZpbmlzaCgpOwoKLyogT24gU29sYXJpcyBfTFA2NCB3aWxsIGJlIGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBpZiB3ZSdyZSBjb21waWxpbmcKICogYXMgYSA2NC1iaXQgYmluYXJ5LiAgTWFrZSBzdXJlIHRoYXQgX19MUDY0X18gZ2V0cyBkZWZpbmVkIGluIHRoaXMgY2FzZSwKICogdG9vIC0tIGl0IHNob3VsZCBiZSBkZWZpbmVkIG9uIHRoZSBjb21waWxlciBjb21tYW5kIGxpbmUsIGJ1dCBsZXQncwogKiBub3QgcmVseSBvbiB0aGlzLgogKi8KI2lmIGRlZmluZWQoX0xQNjQpCiNpZiAhZGVmaW5lZChfX0xQNjRfXykKI2RlZmluZSBfX0xQNjRfXwojZW5kaWYKI2VuZGlmCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBJbml0aWFsaXphdGlvbiByb3V0aW5lIHRvIHNldHVwIHRoZSBsaWJyYXJ5ICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAphc3luY19pbml0KGdjLGZkLGZsYWcpCnN0cnVjdCBjYWNoZSAqKmdjOwppbnQgZmQ7CmludCBmbGFnOwp7CiNpZmRlZiBWWEZTCglpZihmbGFnKQoJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CiNlbmRpZgoJaWYoKmdjKQoJewoJCXByaW50ZigiV2FybmluZyBjYWxsaW5nIGFzeW5jX2luaXQgdHdvIHRpbWVzID9cbiIpOwoJCXJldHVybjsKCX0KCSpnYz0oc3RydWN0IGNhY2hlICopbWFsbG9jKChzaXplX3Qpc2l6ZW9mKHN0cnVjdCBjYWNoZSkpOwoJaWYoKmdjID09IDApCgl7CgkJcHJpbnRmKCJNYWxsb2MgZmFpbGVkXG4iKTsKCQlleGl0KDE3NCk7Cgl9CgliemVybygqZ2Msc2l6ZW9mKHN0cnVjdCBjYWNoZSkpOwojaWYgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKFNDT19Vbml4d2FyZV9nY2MpCgltYXhfZGVwdGg9NTAwOwojZWxzZQoJbWF4X2RlcHRoPXN5c2NvbmYoX1NDX0FJT19NQVgpOwojZW5kaWYKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUZWFyIGRvd24gcm91dGluZSB0byBzaHV0ZG93biB0aGUgbGlicmFyeSAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAplbmRfYXN5bmMoZ2MpCnN0cnVjdCBjYWNoZSAqZ2M7CnsKCWRlbF9jYWNoZShnYyk7Cglhc3luY193cml0ZV9maW5pc2goZ2MpOwoJZnJlZSgodm9pZCAqKWdjKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBXYWl0IGZvciBhIHJlcXVlc3QgdG8gZmluaXNoICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50CmFzeW5jX3N1c3BlbmQoc3RydWN0IGNhY2hlX2VudCAqY2UpCnsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJY29uc3Qgc3RydWN0IGFpb2NiICogY29uc3QgY2JsaXN0WzFdID0geyZjZS0+bXlhaW9jYn07CiNlbHNlCgljb25zdCBzdHJ1Y3QgYWlvY2I2NCAqIGNvbnN0IGNibGlzdFsxXSA9IHsmY2UtPm15YWlvY2I2NH07CiNlbmRpZgojZWxzZQoJY29uc3Qgc3RydWN0IGFpb2NiICogY29uc3QgY2JsaXN0WzFdID0geyZjZS0+bXlhaW9jYn07CiNlbmRpZgoKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJcmV0dXJuIGFpb19zdXNwZW5kKGNibGlzdCwgMSwgTlVMTCk7CiNlbHNlCglyZXR1cm4gYWlvX3N1c3BlbmQ2NChjYmxpc3QsIDEsIE5VTEwpOwojZW5kaWYKI2Vsc2UKCXJldHVybiBhaW9fc3VzcGVuZChjYmxpc3QsIDEsIE5VTEwpOwojZW5kaWYKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVGhpcyByb3V0aW5lIGlzIGEgZ2VuZXJpYyBhc3luYyByZWFkZXIgYXNzaXN0IGZ1bnRpb24uIEl0IHRha2VzCiAqIHRoZSBzYW1lIGNhbGxpbmcgcGFyYW1ldGVycyBhcyByZWFkKCkgYnV0IGFsc28gZXh0ZW5kcyB0aGUKICogaW50ZXJmYWNlIHRvIGluY2x1ZGU6CiAqIHN0cmlkZSAuLi4uLiBGb3IgdGhlIGFzeW5jIHJlYWRzLCB3aGF0IGlzIHRoZSBkaXN0YW5jZSwgaW4gc2l6ZSB1bml0cywgCiAqIAkJdG8gc3BhY2UgdGhlIHJlYWRzLiBOb3RlOiBTdHJpZGUgb2YgMCBpbmRpY2F0ZXMgdGhhdAogKgkJeW91IGRvIG5vdCB3YW50IGFueSByZWFkLWFoZWFkLgogKiBtYXggICAgLi4uLi4gV2hhdCBpcyB0aGUgbWF4aW11bSBmaWxlIG9mZnNldCBmb3IgdGhpcyBvcGVyYXRpb24uCiAqIGRlcHRoICAuLi4uLiBIb3cgbXVjaCByZWFkLWFoZWFkIGRvIHlvdSB3YW50LgogKiAKICogVGhlIGNhbGxzIHRvIHRoaXMgd2lsbCBndWFyZW50ZWUgdG8gY29tcGxldGUgdGhlIHJlYWQoKSBvcGVyYXRpb24KICogYmVmb3JlIHJldHVybmluZyB0byB0aGUgY2FsbGVyLiBUaGUgY29tcGxldGlvbiBtYXkgb2NjdXIgaW4gdHdvCiAqIHdheXMuIEZpcnN0IHRoZSBvcGVyYXRpb24gbWF5IGJlIGNvbXBsZXRlZCBieSBjYWxsaW5nIGFpb19yZWFkKCkKICogYW5kIHRoZW4gd2FpdGluZyBmb3IgaXQgdG8gY29tcGxldGUuIFNlY29uZCAgdGhlIG9wZXJhdGlvbiBtYXkgYmUgCiAqIGNvbXBsZXRlZCBieSBjb3B5aW5nIHRoZSBkYXRhIGZyb20gYSBjYWNoZSBvZiBwcmV2aW91c2x5IGNvbXBsZXRlZCAKICogYXN5bmMgb3BlcmF0aW9ucy4gCiAqIEluIHRoZSBldmVudCB0aGUgcmVhZCB0byBiZSBzYXRpc2ZpZWQgaXMgbm90IGluIHRoZSBjYWNoZSB0aGVuIGEgCiAqIHNlcmllcyBvZiBhc3luYyBvcGVyYXRpb25zIHdpbGwgYmUgc2NoZWR1bGVkIGFuZCB0aGVuIHRoZSBmaXJzdCAKICogYXN5bmMgcmVhZCB3aWxsIGJlIGNvbXBsZXRlZC4gSW4gdGhlIGV2ZW50IHRoYXQgdGhlIHJlYWQoKSBjYW4gYmUgCiAqIHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZSB0aGVuIHRoZSBkYXRhIGlzIGNvcGllZCBiYWNrIHRvIHRoZSAKICogdXNlciBidWZmZXIgYW5kIGEgc2VyaWVzIG9mIGFzeW5jIHJlYWRzIHdpbGwgYmUgaW5pdGlhdGVkLiAgSWYgYSAKICogcmVhZCBpcyBpc3N1ZWQgYW5kIHRoZSBjYWNoZSBjb250YWlucyBkYXRhIGFuZCB0aGUgcmVhZCBjYW4gbm90IAogKiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2FjaGUsIHRoZW4gdGhlIGNhY2hlIGlzIGRpc2NhcmRlZCwgYW5kIAogKiBhIG5ldyBjYWNoZSBpcyBjb25zdHJ1Y3RlZC4KICogTm90ZTogQWxsIG9wZXJhdGlvbnMgYXJlIGFpb19yZWFkKCkuIFRoZSBzZXJpZXMgd2lsbCBiZSBpc3N1ZWQKICogYXMgYXN5bmNzIGluIHRoZSBvcmRlciByZXF1ZXN0ZWQuIEFmdGVyIGFsbCBhcmUgaW4gZmxpZ2h0CiAqIHRoZW4gdGhlIGNvZGUgd2lsbCB3YWl0IGZvciB0aGUgbWFuZGl0b3J5IGZpcnN0IHJlYWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKaW50IAphc3luY19yZWFkKGdjLCBmZCwgdWJ1ZmZlciwgb2Zmc2V0LCBzaXplLCBzdHJpZGUsIG1heCwgZGVwdGgpCnN0cnVjdCBjYWNoZSAqZ2M7CmxvbmcgbG9uZyBmZDsKY2hhciAqdWJ1ZmZlcjsKb2ZmNjRfdCBvZmZzZXQ7CmxvbmcgbG9uZyBzaXplOwpsb25nIGxvbmcgc3RyaWRlOwpvZmY2NF90IG1heDsKbG9uZyBsb25nIGRlcHRoOwp7CglvZmY2NF90IGFfb2Zmc2V0LHJfb2Zmc2V0OwoJbG9uZyBsb25nIGFfc2l6ZTsKCXN0cnVjdCBjYWNoZV9lbnQgKmNlLCpmaXJzdF9jZT0wOwoJbG9uZyBsb25nIGk7Cglzc2l6ZV90IHJldHZhbD0wOwoJc3NpemVfdCByZXQ7Cglsb25nIGxvbmcgc3RhcnQgPSAwOwoJbG9uZyBsb25nIGRlbF9yZWFkPTA7CgoJYV9vZmZzZXQ9b2Zmc2V0OwoJYV9zaXplID0gc2l6ZTsKCS8qCgkgKiBDaGVjayB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbXBsZXRlZCBmcm9tIHRoZSBjYWNoZQoJICovCglpZigoY2U9KHN0cnVjdCBjYWNoZV9lbnQgKilpbmNhY2hlKGdjLGZkLG9mZnNldCxzaXplKSkpCgl7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQl3aGlsZSgocmV0PWFpb19lcnJvcigmY2UtPm15YWlvY2IpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChjZSk7CgkJfQojZWxzZQoJCXdoaWxlKChyZXQ9YWlvX2Vycm9yNjQoJmNlLT5teWFpb2NiNjQpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChjZSk7CgkJfQojZW5kaWYKI2Vsc2UKCQl3aGlsZSgocmV0PWFpb19lcnJvcigmY2UtPm15YWlvY2IpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChjZSk7CgkJfQojZW5kaWYKCQlpZihyZXQpCgkJewoJCQlwcmludGYoImFpb19lcnJvciAxOiByZXQgJWQgJWRcbiIscmV0LGVycm5vKTsKCQl9CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQlyZXR2YWw9YWlvX3JldHVybigmY2UtPm15YWlvY2IpOwojZWxzZQojaWYgZGVmaW5lZChfX0NyYXlYMV9fKQoJCXJldHZhbD1haW9fcmV0dXJuNjQoKGFpb2NiNjRfdCAqKSZjZS0+bXlhaW9jYjY0KTsKI2Vsc2UKCQlyZXR2YWw9YWlvX3JldHVybjY0KChzdHJ1Y3QgYWlvY2I2NCAqKSZjZS0+bXlhaW9jYjY0KTsKI2VuZGlmCgojZW5kaWYKI2Vsc2UKCQlyZXR2YWw9YWlvX3JldHVybigmY2UtPm15YWlvY2IpOwojZW5kaWYKCQlpZihyZXR2YWwgPiAwKQoJCXsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCQltYmNvcHkoKGNoYXIgKiljZS0+bXlhaW9jYi5haW9fYnVmLChjaGFyICopdWJ1ZmZlciwoc2l6ZV90KXJldHZhbCk7CiNlbHNlCgkJCW1iY29weSgoY2hhciAqKWNlLT5teWFpb2NiNjQuYWlvX2J1ZiwoY2hhciAqKXVidWZmZXIsKHNpemVfdClyZXR2YWwpOwojZW5kaWYKI2Vsc2UKCQkJbWJjb3B5KChjaGFyICopY2UtPm15YWlvY2IuYWlvX2J1ZiwoY2hhciAqKXVidWZmZXIsKHNpemVfdClyZXR2YWwpOwojZW5kaWYKCQl9CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQlpZihyZXR2YWwgPCBjZS0+bXlhaW9jYi5haW9fbmJ5dGVzKQojZWxzZQoJCWlmKHJldHZhbCA8IGNlLT5teWFpb2NiNjQuYWlvX25ieXRlcykKI2VuZGlmCiNlbHNlCgkJaWYocmV0dmFsIDwgY2UtPm15YWlvY2IuYWlvX25ieXRlcykKI2VuZGlmCgkJewoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IxOiByZXQgJWQgJWRcbiIscmV0dmFsLGVycm5vKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IxOiBmZCAlZCBvZmZzZXQgJWxkIGJ1ZmZlciAlbHggc2l6ZSAlZCBPcGNvZGUgJWRcbiIsCgkJCQljZS0+bXlhaW9jYi5haW9fZmlsZGVzLAoJCQkJY2UtPm15YWlvY2IuYWlvX29mZnNldCwKCQkJCShsb25nKShjZS0+bXlhaW9jYi5haW9fYnVmKSwKCQkJCWNlLT5teWFpb2NiLmFpb19uYnl0ZXMsCgkJCQljZS0+bXlhaW9jYi5haW9fbGlvX29wY29kZQojZWxzZQoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IxOiBmZCAlZCBvZmZzZXQgJWxsZCBidWZmZXIgJWx4IHNpemUgJWQgT3Bjb2RlICVkXG4iLAoJCQkJY2UtPm15YWlvY2I2NC5haW9fZmlsZGVzLAoJCQkJY2UtPm15YWlvY2I2NC5haW9fb2Zmc2V0LAoJCQkJKGxvbmcpKGNlLT5teWFpb2NiNjQuYWlvX2J1ZiksCgkJCQljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19saW9fb3Bjb2RlCiNlbmRpZgojZWxzZQoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IxOiBmZCAlZCBvZmZzZXQgJWQgYnVmZmVyICVseCBzaXplICVkIE9wY29kZSAlZFxuIiwKCQkJCWNlLT5teWFpb2NiLmFpb19maWxkZXMsCgkJCQljZS0+bXlhaW9jYi5haW9fb2Zmc2V0LAoJCQkJKGxvbmcpKGNlLT5teWFpb2NiLmFpb19idWYpLAoJCQkJY2UtPm15YWlvY2IuYWlvX25ieXRlcywKCQkJCWNlLT5teWFpb2NiLmFpb19saW9fb3Bjb2RlCiNlbmRpZgoJCQkJKTsKCQl9CgkJY2UtPmRpcmVjdD0wOwoJCXRha2VvZmZfY2FjaGUoZ2MsY2UpOwoJfWVsc2UKCXsKCQkvKgoJCSAqIENsZWFyIHRoZSBjYWNoZSBhbmQgaXNzdWUgdGhlIGZpcnN0IHJlcXVlc3QgYXN5bmMoKQoJCSAqLwoJCWRlbF9jYWNoZShnYyk7CgkJZGVsX3JlYWQrKzsKCQlmaXJzdF9jZT1hbGxvY19jYWNoZShnYyxmZCxvZmZzZXQsc2l6ZSwobG9uZyBsb25nKUxJT19SRUFEKTsKYWdhaW46CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQlyZXQ9YWlvX3JlYWQoJmZpcnN0X2NlLT5teWFpb2NiKTsKI2Vsc2UKCQlyZXQ9YWlvX3JlYWQ2NCgmZmlyc3RfY2UtPm15YWlvY2I2NCk7CiNlbmRpZgojZWxzZQoJCXJldD1haW9fcmVhZCgmZmlyc3RfY2UtPm15YWlvY2IpOwojZW5kaWYKCQlpZihyZXQhPTApCgkJewoJCQlpZihlcnJubz09RUFHQUlOKQoJCQkJZ290byBhZ2FpbjsKCQkJZWxzZQoJCQkJcHJpbnRmKCJlcnJvciByZXR1cm5lZCBmcm9tIGFpb19yZWFkKCkuIFJldCAlZCBlcnJubyAlZFxuIixyZXQsZXJybm8pOwoJCX0KCX0KCWlmKHN0cmlkZT09MCkJIC8qIFVzZXIgZG9lcyBub3Qgd2FudCByZWFkLWFoZWFkICovCgkJZ290byBvdXQ7CglpZihhX29mZnNldDwwKQkvKiBCZWZvcmUgYmVnaW5uaW5nIG9mIGZpbGUgKi8KCQlnb3RvIG91dDsKCWlmKGFfb2Zmc2V0K3NpemU+bWF4KQkvKiBBZnRlciBlbmQgb2YgZmlsZSAqLwoJCWdvdG8gb3V0OwoJaWYoZGVwdGggPj0obWF4X2RlcHRoLTEpKQoJCWRlcHRoPW1heF9kZXB0aC0xOwoJaWYoZGVwdGg9PTApCgkJZ290byBvdXQ7CglpZihnYy0+Y291bnQgPiAxKQoJCXN0YXJ0PWRlcHRoLTE7Cglmb3IoaT1zdGFydDtpPGRlcHRoO2krKykJLyogSXNzdWUgcmVhZC1haGVhZHMgZm9yIHRoZSBkZXB0aCBzcGVjaWZpZWQgKi8KCXsKCQlyX29mZnNldD1hX29mZnNldCsoKGkrMSkqKHN0cmlkZSphX3NpemUpKTsKCQlpZihyX29mZnNldDwwKQoJCQljb250aW51ZTsKCQlpZihyX29mZnNldCtzaXplID4gbWF4KQoJCQljb250aW51ZTsKCQlpZigoY2U9aW5jYWNoZShnYyxmZCxyX29mZnNldCxhX3NpemUpKSkKCQkJY29udGludWU7CgkJY2U9YWxsb2NfY2FjaGUoZ2MsZmQscl9vZmZzZXQsYV9zaXplLChsb25nIGxvbmcpTElPX1JFQUQpOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJcmV0PWFpb19yZWFkKCZjZS0+bXlhaW9jYik7CiNlbHNlCgkJcmV0PWFpb19yZWFkNjQoJmNlLT5teWFpb2NiNjQpOwojZW5kaWYKI2Vsc2UKCQlyZXQ9YWlvX3JlYWQoJmNlLT5teWFpb2NiKTsKI2VuZGlmCgkJaWYocmV0IT0wKQoJCXsKCQkJdGFrZW9mZl9jYWNoZShnYyxjZSk7CgkJCWJyZWFrOwoJCX0KCX0JCQkKb3V0OgoJaWYoZGVsX3JlYWQpCS8qIFdhaXQgZm9yIHRoZSBmaXJzdCByZWFkIHRvIGNvbXBsZXRlICovCgl7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQl3aGlsZSgocmV0PWFpb19lcnJvcigmZmlyc3RfY2UtPm15YWlvY2IpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChmaXJzdF9jZSk7CgkJfQojZWxzZQoJCXdoaWxlKChyZXQ9YWlvX2Vycm9yNjQoJmZpcnN0X2NlLT5teWFpb2NiNjQpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChmaXJzdF9jZSk7CgkJfQojZW5kaWYKI2Vsc2UKCQl3aGlsZSgocmV0PWFpb19lcnJvcigmZmlyc3RfY2UtPm15YWlvY2IpKT09IEVJTlBST0dSRVNTKQoJCXsKCQkJYXN5bmNfc3VzcGVuZChmaXJzdF9jZSk7CgkJfQojZW5kaWYKCQlpZihyZXQpCgkJCXByaW50ZigiYWlvX2Vycm9yIDI6IHJldCAlZCAlZFxuIixyZXQsZXJybm8pOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJcmV0dmFsPWFpb19yZXR1cm4oJmZpcnN0X2NlLT5teWFpb2NiKTsKI2Vsc2UKCQlyZXR2YWw9YWlvX3JldHVybjY0KCZmaXJzdF9jZS0+bXlhaW9jYjY0KTsKI2VuZGlmCiNlbHNlCgkJcmV0dmFsPWFpb19yZXR1cm4oJmZpcnN0X2NlLT5teWFpb2NiKTsKI2VuZGlmCiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQlpZihyZXR2YWwgPCBmaXJzdF9jZS0+bXlhaW9jYi5haW9fbmJ5dGVzKQojZWxzZQoJCWlmKHJldHZhbCA8IGZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX25ieXRlcykKI2VuZGlmCiNlbHNlCgkJaWYocmV0dmFsIDwgZmlyc3RfY2UtPm15YWlvY2IuYWlvX25ieXRlcykKI2VuZGlmCgkJewoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IyOiByZXQgJWQgJWRcbiIscmV0dmFsLGVycm5vKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3IyOiBmZCAlZCBvZmZzZXQgJWxsZCBidWZmZXIgJWx4IHNpemUgJWQgT3Bjb2RlICVkXG4iLAoJCQkJZmlyc3RfY2UtPm15YWlvY2IuYWlvX2ZpbGRlcywKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19vZmZzZXQsCgkJCQkobG9uZykoZmlyc3RfY2UtPm15YWlvY2IuYWlvX2J1ZiksCgkJCQlmaXJzdF9jZS0+bXlhaW9jYi5haW9fbmJ5dGVzLAoJCQkJZmlyc3RfY2UtPm15YWlvY2IuYWlvX2xpb19vcGNvZGUKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yMjogZmQgJWQgb2Zmc2V0ICVsbGQgYnVmZmVyICVseCBzaXplICVkIE9wY29kZSAlZFxuIiwKCQkJCWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX2ZpbGRlcywKCQkJCWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX29mZnNldCwKCQkJCShsb25nKShmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19idWYpLAoJCQkJZmlyc3RfY2UtPm15YWlvY2I2NC5haW9fbmJ5dGVzLAoJCQkJZmlyc3RfY2UtPm15YWlvY2I2NC5haW9fbGlvX29wY29kZQojZW5kaWYKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yMjogZmQgJWQgb2Zmc2V0ICVkIGJ1ZmZlciAlbHggc2l6ZSAlZCBPcGNvZGUgJWRcbiIsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYi5haW9fZmlsZGVzLAoJCQkJZmlyc3RfY2UtPm15YWlvY2IuYWlvX29mZnNldCwKCQkJCShsb25nKShmaXJzdF9jZS0+bXlhaW9jYi5haW9fYnVmKSwKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19uYnl0ZXMsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYi5haW9fbGlvX29wY29kZQojZW5kaWYKCQkJCSk7CgkJfQoJCWlmKHJldHZhbCA+IDApCgkJewojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJCW1iY29weSgoY2hhciAqKWZpcnN0X2NlLT5teWFpb2NiLmFpb19idWYsKGNoYXIgKil1YnVmZmVyLChzaXplX3QpcmV0dmFsKTsKI2Vsc2UKCQkJbWJjb3B5KChjaGFyICopZmlyc3RfY2UtPm15YWlvY2I2NC5haW9fYnVmLChjaGFyICopdWJ1ZmZlciwoc2l6ZV90KXJldHZhbCk7CiNlbmRpZgojZWxzZQoJCQltYmNvcHkoKGNoYXIgKilmaXJzdF9jZS0+bXlhaW9jYi5haW9fYnVmLChjaGFyICopdWJ1ZmZlciwoc2l6ZV90KXJldHZhbCk7CiNlbmRpZgoJCX0KCQlmaXJzdF9jZS0+ZGlyZWN0PTA7CgkJdGFrZW9mZl9jYWNoZShnYyxmaXJzdF9jZSk7Cgl9CglyZXR1cm4oKGludClyZXR2YWwpOwkKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBUaGlzIHJvdXRpbmUgYWxsb2NhdGVzIGEgY2FjaGVfZW50cnkuIEl0IGNvbnRhaW5zIHRoZSAKICogYWlvY2IgYmxvY2sgYXMgd2VsbCBhcyBsaW5rYWdlIGZvciB1c2UgaW4gdGhlIGNhY2hlIG1lY2hhbmlzbS4KICogVGhlIHNwYWNlIGFsbG9jYXRlZCBoZXJlIHdpbGwgYmUgcmVsZWFzZWQgYWZ0ZXIgdGhlIGNhY2hlIGVudHJ5CiAqIGhhcyBiZWVuIGNvbnN1bWVkLiBUaGUgcm91dGluZSB0YWtlb2ZmX2NhY2hlKCkgd2lsbCBiZSBjYWxsZWQKICogYWZ0ZXIgdGhlIGRhdGEgaGFzIGJlZW4gY29waWVkIHRvIHVzZXIgYnVmZmVyIG9yIHdoZW4gdGhlCiAqIGNhY2hlIGlzIHB1cmdlZC4gVGhlIHJvdXRpbmUgdGFrZW9mZl9jYWNoZSgpIHdpbGwgYWxzbyByZWxlYXNlCiAqIGFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2FjaGUgZW50cnkuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpzdHJ1Y3QgY2FjaGVfZW50ICoKYWxsb2NfY2FjaGUoZ2MsZmQsb2Zmc2V0LHNpemUsb3ApCnN0cnVjdCBjYWNoZSAqZ2M7CmxvbmcgbG9uZyBmZCxzaXplLG9wOwpvZmY2NF90IG9mZnNldDsKewoJc3RydWN0IGNhY2hlX2VudCAqY2U7Cglsb25nIHRlbXA7CgljZT0oc3RydWN0IGNhY2hlX2VudCAqKW1hbGxvYygoc2l6ZV90KXNpemVvZihzdHJ1Y3QgY2FjaGVfZW50KSk7CglpZihjZSA9PSAoc3RydWN0IGNhY2hlX2VudCAqKTApCgl7CgkJcHJpbnRmKCJNYWxsb2MgZmFpbGVkXG4iKTsKCQlleGl0KDE3NSk7Cgl9CgliemVybyhjZSxzaXplb2Yoc3RydWN0IGNhY2hlX2VudCkpOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgljZS0+bXlhaW9jYi5haW9fZmlsZGVzPShpbnQpZmQ7CgljZS0+bXlhaW9jYi5haW9fb2Zmc2V0PShvZmY2NF90KW9mZnNldDsKCWNlLT5yZWFsX2FkZHJlc3MgPSAoY2hhciAqKW1hbGxvYygoc2l6ZV90KShzaXplK3BhZ2Vfc2l6ZSkpOwoJdGVtcD0obG9uZyljZS0+cmVhbF9hZGRyZXNzOwoJdGVtcCA9ICh0ZW1wK3BhZ2Vfc2l6ZSkgJiB+KHBhZ2Vfc2l6ZS0xKTsKCWNlLT5teWFpb2NiLmFpb19idWY9KHZvbGF0aWxlIHZvaWQgKil0ZW1wOwoJaWYoY2UtPm15YWlvY2IuYWlvX2J1ZiA9PSAwKQojZWxzZQoJY2UtPm15YWlvY2I2NC5haW9fZmlsZGVzPShpbnQpZmQ7CgljZS0+bXlhaW9jYjY0LmFpb19vZmZzZXQ9KG9mZjY0X3Qpb2Zmc2V0OwoJY2UtPnJlYWxfYWRkcmVzcyA9IChjaGFyICopbWFsbG9jKChzaXplX3QpKHNpemUrcGFnZV9zaXplKSk7Cgl0ZW1wPShsb25nKWNlLT5yZWFsX2FkZHJlc3M7Cgl0ZW1wID0gKHRlbXArcGFnZV9zaXplKSAmIH4ocGFnZV9zaXplLTEpOwoJY2UtPm15YWlvY2I2NC5haW9fYnVmPSh2b2xhdGlsZSB2b2lkICopdGVtcDsKCWlmKGNlLT5teWFpb2NiNjQuYWlvX2J1ZiA9PSAwKQojZW5kaWYKI2Vsc2UKCWNlLT5teWFpb2NiLmFpb19maWxkZXM9KGludClmZDsKCWNlLT5teWFpb2NiLmFpb19vZmZzZXQ9KG9mZl90KW9mZnNldDsKCWNlLT5yZWFsX2FkZHJlc3MgPSAoY2hhciAqKW1hbGxvYygoc2l6ZV90KShzaXplK3BhZ2Vfc2l6ZSkpOwoJdGVtcD0obG9uZyljZS0+cmVhbF9hZGRyZXNzOwoJdGVtcCA9ICh0ZW1wK3BhZ2Vfc2l6ZSkgJiB+KHBhZ2Vfc2l6ZS0xKTsKCWNlLT5teWFpb2NiLmFpb19idWY9KHZvbGF0aWxlIHZvaWQgKil0ZW1wOwoJaWYoY2UtPm15YWlvY2IuYWlvX2J1ZiA9PSAwKQojZW5kaWYKCXsKCQlwcmludGYoIk1hbGxvYyBmYWlsZWRcbiIpOwoJCWV4aXQoMTc2KTsKCX0KCS8qYnplcm8oY2UtPm15YWlvY2IuYWlvX2J1Ziwoc2l6ZV90KXNpemUpOyovCiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCWNlLT5teWFpb2NiLmFpb19yZXFwcmlvPTA7CgljZS0+bXlhaW9jYi5haW9fbmJ5dGVzPShzaXplX3Qpc2l6ZTsKCWNlLT5teWFpb2NiLmFpb19zaWdldmVudC5zaWdldl9ub3RpZnk9U0lHRVZfTk9ORTsKCWNlLT5teWFpb2NiLmFpb19saW9fb3Bjb2RlPShpbnQpb3A7CiNlbHNlCgljZS0+bXlhaW9jYjY0LmFpb19yZXFwcmlvPTA7CgljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXM9KHNpemVfdClzaXplOwoJY2UtPm15YWlvY2I2NC5haW9fc2lnZXZlbnQuc2lnZXZfbm90aWZ5PVNJR0VWX05PTkU7CgljZS0+bXlhaW9jYjY0LmFpb19saW9fb3Bjb2RlPShpbnQpb3A7CiNlbmRpZgojZWxzZQoJY2UtPm15YWlvY2IuYWlvX3JlcXByaW89MDsKCWNlLT5teWFpb2NiLmFpb19uYnl0ZXM9KHNpemVfdClzaXplOwoJY2UtPm15YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X25vdGlmeT1TSUdFVl9OT05FOwoJY2UtPm15YWlvY2IuYWlvX2xpb19vcGNvZGU9KGludClvcDsKI2VuZGlmCgljZS0+ZmQ9KGludClmZDsKCWNlLT5mb3J3YXJkPTA7CgljZS0+YmFjaz1nYy0+dGFpbDsKCWlmKGdjLT50YWlsKQoJCWdjLT50YWlsLT5mb3J3YXJkID0gY2U7CglnYy0+dGFpbD0gY2U7CglpZighZ2MtPmhlYWQpCgkJZ2MtPmhlYWQ9Y2U7CglnYy0+Y291bnQrKzsKCXJldHVybihjZSk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVGhpcyByb3V0aW5lIGNoZWNrcyB0byBzZWUgaWYgdGhlIHJlcXVlc3RlZCBkYXRhIGlzIGluIHRoZQogKiBjYWNoZS4gCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0cnVjdCBjYWNoZV9lbnQgKgppbmNhY2hlKGdjLGZkLG9mZnNldCxzaXplKQpzdHJ1Y3QgY2FjaGUgKmdjOwpsb25nIGxvbmcgZmQsc2l6ZTsKb2ZmNjRfdCBvZmZzZXQ7CnsKCXN0cnVjdCBjYWNoZV9lbnQgKm1vdmU7CglpZihnYy0+aGVhZD09MCkKCXsKCQlyZXR1cm4oMCk7Cgl9Cgltb3ZlPWdjLT5oZWFkOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgl3aGlsZShtb3ZlKQoJewoJCWlmKChtb3ZlLT5mZCA9PSBmZCkgJiYgKG1vdmUtPm15YWlvY2IuYWlvX29mZnNldD09KG9mZjY0X3Qpb2Zmc2V0KSAmJgoJCQkoKHNpemVfdClzaXplPT1tb3ZlLT5teWFpb2NiLmFpb19uYnl0ZXMpKQoJCQl7CgkJCQlyZXR1cm4obW92ZSk7CgkJCX0KCQltb3ZlPW1vdmUtPmZvcndhcmQ7Cgl9CiNlbHNlCgl3aGlsZShtb3ZlKQoJewoJCWlmKChtb3ZlLT5mZCA9PSBmZCkgJiYgKG1vdmUtPm15YWlvY2I2NC5haW9fb2Zmc2V0PT0ob2ZmNjRfdClvZmZzZXQpICYmCgkJCSgoc2l6ZV90KXNpemU9PW1vdmUtPm15YWlvY2I2NC5haW9fbmJ5dGVzKSkKCQkJewoJCQkJcmV0dXJuKG1vdmUpOwoJCQl9CgkJbW92ZT1tb3ZlLT5mb3J3YXJkOwoJfQojZW5kaWYKI2Vsc2UKCXdoaWxlKG1vdmUpCgl7CgkJaWYoKG1vdmUtPmZkID09IGZkKSAmJiAobW92ZS0+bXlhaW9jYi5haW9fb2Zmc2V0PT0ob2ZmX3Qpb2Zmc2V0KSAmJgoJCQkoKHNpemVfdClzaXplPT1tb3ZlLT5teWFpb2NiLmFpb19uYnl0ZXMpKQoJCQl7CgkJCQlyZXR1cm4obW92ZSk7CgkJCX0KCQltb3ZlPW1vdmUtPmZvcndhcmQ7Cgl9CiNlbmRpZgoJcmV0dXJuKDApOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFRoaXMgcm91dGluZSByZW1vdmVzIGEgc3BlY2lmaWMgY2FjaGUgZW50cnkgZnJvbSB0aGUgY2FjaGUsIGFuZAogKiByZWxlYXNlcyBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aHQgdGhlIGNhY2hlIGVudHJ5IChpZiBub3QgZGlyZWN0KS4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnZvaWQKdGFrZW9mZl9jYWNoZShnYyxjZSkKc3RydWN0IGNhY2hlICpnYzsKc3RydWN0IGNhY2hlX2VudCAqY2U7CnsKCXN0cnVjdCBjYWNoZV9lbnQgKm1vdmU7Cglsb25nIGxvbmcgZm91bmQ7Cgltb3ZlPWdjLT5oZWFkOwoJaWYobW92ZT09Y2UpIC8qIEhlYWQgb2YgbGlzdCAqLwoJewoKCQlnYy0+aGVhZD1jZS0+Zm9yd2FyZDsKCQlpZihnYy0+aGVhZCkKCQkJZ2MtPmhlYWQtPmJhY2s9MDsKCQllbHNlCgkJCWdjLT50YWlsID0gMDsKCQlpZighY2UtPmRpcmVjdCkKCQl7CgkJCWZyZWUoKHZvaWQgKikoY2UtPnJlYWxfYWRkcmVzcykpOwoJCQlmcmVlKCh2b2lkICopY2UpOwoJCX0KCQlnYy0+Y291bnQtLTsKCQlyZXR1cm47Cgl9Cglmb3VuZD0wOwoJd2hpbGUobW92ZSkKCXsKCQlpZihtb3ZlPT1jZSkKCQl7CgkJCWlmKG1vdmUtPmZvcndhcmQpCgkJCXsKCQkJCW1vdmUtPmZvcndhcmQtPmJhY2s9bW92ZS0+YmFjazsKCQkJfQoJCQlpZihtb3ZlLT5iYWNrKQoJCQl7CgkJCQltb3ZlLT5iYWNrLT5mb3J3YXJkPW1vdmUtPmZvcndhcmQ7CgkJCX0KCQkJZm91bmQ9MTsKCQkJYnJlYWs7CgkJfQoJCWVsc2UKCQl7CgkJCW1vdmU9bW92ZS0+Zm9yd2FyZDsKCQl9Cgl9CglpZihnYy0+aGVhZCA9PSBjZSkKCQlnYy0+dGFpbCA9IGNlOwoJaWYoIWZvdW5kKQoJCXByaW50ZigiSW50ZXJuYWwgRXJyb3IgaW4gdGFrZW9mZiBjYWNoZVxuIik7Cgltb3ZlPWdjLT5oZWFkOwoJaWYoIWNlLT5kaXJlY3QpCgl7CgkJZnJlZSgodm9pZCAqKShjZS0+cmVhbF9hZGRyZXNzKSk7CgkJZnJlZSgodm9pZCAqKWNlKTsKCX0KCWdjLT5jb3VudC0tOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHB1cmdlIHRoZSBlbnRpcmUgY2FjaGUuIFRoaXMgaXMgY2FsbGVkIHdoZW4KICogdGhlIGNhY2hlIGNvbnRhaW5zIGRhdGEgYnV0IHRoZSBpbmNvbW1pbmcgcmVhZCB3YXMgbm90IGFibGUgdG8gCiAqIGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZS4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJldmlvdXMKICogYXN5bmMgcmVhZC1haGVhZCB3YXMgbm90IGNvcnJlY3QgYW5kIGEgbmV3IHBhdHRlcm4gaXMgZW1lcmdpbmcuIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwp2b2lkCmRlbF9jYWNoZShnYykKc3RydWN0IGNhY2hlICpnYzsKewoJc3RydWN0IGNhY2hlX2VudCAqY2U7Cglzc2l6ZV90IHJldDsKCWNlPWdjLT5oZWFkOwoJd2hpbGUoMSkKCXsKCQljZT1nYy0+aGVhZDsKCQlpZihjZT09MCkKCQkJcmV0dXJuOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJd2hpbGUoKHJldCA9IGFpb19jYW5jZWwoMCwmY2UtPm15YWlvY2IpKT09QUlPX05PVENBTkNFTEVEKQojZWxzZQoJCXdoaWxlKChyZXQgPSBhaW9fY2FuY2VsNjQoMCwmY2UtPm15YWlvY2I2NCkpPT1BSU9fTk9UQ0FOQ0VMRUQpCiNlbmRpZgojZWxzZQoJCXdoaWxlKChyZXQgPSBhaW9fY2FuY2VsKDAsJmNlLT5teWFpb2NiKSk9PUFJT19OT1RDQU5DRUxFRCkKI2VuZGlmCgkJCTsgCgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJcmV0ID0gYWlvX3JldHVybigmY2UtPm15YWlvY2IpOwojZWxzZQoJCXJldCA9IGFpb19yZXR1cm42NCgmY2UtPm15YWlvY2I2NCk7CiNlbmRpZgojZWxzZQoJCXJldCA9IGFpb19yZXR1cm4oJmNlLT5teWFpb2NiKTsKI2VuZGlmCgkJY2UtPmRpcmVjdD0wOwoJCXRha2VvZmZfY2FjaGUoZ2MsY2UpOwkgIC8qIHJlbW92ZSBmcm9tIGNhY2hlICovCgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogTGlrZSBpdHMgc2lzdGVyIGFzeW5jX3JlYWQoKSB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGFzeW5jIEkvTyBmb3IgCiAqIGFsbCBidWZmZXJzIGJ1dCBpdCBkaWZmZXJzIGluIHRoYXQgaXQgZXhwZWN0cyB0aGUgY2FsbGVyIHRvIAogKiByZXF1ZXN0IGEgcG9pbnRlciB0byB0aGUgZGF0YSB0byBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIGhhbmRpbmcKICogdGhlIGZ1bmN0aW9uIGEgbG9jYXRpb24gdG8gcHV0IHRoZSBkYXRhLiBUaGlzIHdpbGwgYWxsb3cgdGhlCiAqIGFzeW5jIEkvTyB0byBiZSBwZXJmb3JtZWQgYW5kIGRvZXMgbm90IHJlcXVpcmUgYW55IGJjb3B5IHRvIGJlCiAqIGRvbmUgdG8gcHV0IHRoZSBkYXRhIGJhY2sgaW50byB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAphc3luY19yZWFkX25vX2NvcHkoZ2MsIGZkLCB1YnVmZmVyLCBvZmZzZXQsIHNpemUsIHN0cmlkZSwgbWF4LCBkZXB0aCkKc3RydWN0IGNhY2hlICpnYzsKbG9uZyBsb25nIGZkOwpjaGFyICoqdWJ1ZmZlcjsKb2ZmNjRfdCBvZmZzZXQ7CmxvbmcgbG9uZyBzaXplOwpsb25nIGxvbmcgc3RyaWRlOwpvZmY2NF90IG1heDsKbG9uZyBsb25nIGRlcHRoOwp7CglvZmY2NF90IGFfb2Zmc2V0LHJfb2Zmc2V0OwoJbG9uZyBsb25nIGFfc2l6ZTsKCXN0cnVjdCBjYWNoZV9lbnQgKmNlLCpmaXJzdF9jZT0wOwoJbG9uZyBsb25nIGk7Cglzc2l6ZV90IHJldHZhbD0wOwoJc3NpemVfdCByZXQ7Cglsb25nIGxvbmcgZGVsX3JlYWQ9MDsKCWxvbmcgbG9uZyBzdGFydD0wOwoKCWFfb2Zmc2V0PW9mZnNldDsKCWFfc2l6ZSA9IHNpemU7CgkvKgoJICogQ2hlY2sgdG8gc2VlIGlmIGl0IGNhbiBiZSBjb21wbGV0ZWQgZnJvbSB0aGUgY2FjaGUKCSAqLwoJaWYoKGNlPShzdHJ1Y3QgY2FjaGVfZW50ICopaW5jYWNoZShnYyxmZCxvZmZzZXQsc2l6ZSkpKQoJewojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJd2hpbGUoKHJldD1haW9fZXJyb3IoJmNlLT5teWFpb2NiKSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoY2UpOwoJCX0KI2Vsc2UKCQl3aGlsZSgocmV0PWFpb19lcnJvcjY0KCZjZS0+bXlhaW9jYjY0KSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoY2UpOwoJCX0KI2VuZGlmCiNlbHNlCgkJd2hpbGUoKHJldD1haW9fZXJyb3IoJmNlLT5teWFpb2NiKSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoY2UpOwoJCX0KI2VuZGlmCgkJaWYocmV0KQoJCQlwcmludGYoImFpb19lcnJvciAzOiByZXQgJWQgJWRcbiIscmV0LGVycm5vKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCWlmKGNlLT5vbGRidWYgIT0gY2UtPm15YWlvY2IuYWlvX2J1ZiB8fAoJCQljZS0+b2xkZmQgIT0gY2UtPm15YWlvY2IuYWlvX2ZpbGRlcyB8fAoJCQljZS0+b2xkc2l6ZSAhPSBjZS0+bXlhaW9jYi5haW9fbmJ5dGVzKSAKI2Vsc2UKCQlpZihjZS0+b2xkYnVmICE9IGNlLT5teWFpb2NiNjQuYWlvX2J1ZiB8fAoJCQljZS0+b2xkZmQgIT0gY2UtPm15YWlvY2I2NC5haW9fZmlsZGVzIHx8CgkJCWNlLT5vbGRzaXplICE9IGNlLT5teWFpb2NiNjQuYWlvX25ieXRlcykgCiNlbmRpZgojZWxzZQoJCWlmKGNlLT5vbGRidWYgIT0gY2UtPm15YWlvY2IuYWlvX2J1ZiB8fAoJCQljZS0+b2xkZmQgIT0gY2UtPm15YWlvY2IuYWlvX2ZpbGRlcyB8fAoJCQljZS0+b2xkc2l6ZSAhPSBjZS0+bXlhaW9jYi5haW9fbmJ5dGVzKSAKI2VuZGlmCgkJCXByaW50ZigiSXQgY2hhbmdlZCBpbiBmbGlnaHRcbiIpOwoJCQkKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCXJldHZhbD1haW9fcmV0dXJuKCZjZS0+bXlhaW9jYik7CiNlbHNlCgkJcmV0dmFsPWFpb19yZXR1cm42NCgmY2UtPm15YWlvY2I2NCk7CiNlbmRpZgojZWxzZQoJCXJldHZhbD1haW9fcmV0dXJuKCZjZS0+bXlhaW9jYik7CiNlbmRpZgoJCWlmKHJldHZhbCA+IDApCgkJewojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJCSp1YnVmZmVyPShjaGFyICopY2UtPm15YWlvY2IuYWlvX2J1ZjsKI2Vsc2UKCQkJKnVidWZmZXI9KGNoYXIgKiljZS0+bXlhaW9jYjY0LmFpb19idWY7CiNlbmRpZgojZWxzZQoJCQkqdWJ1ZmZlcj0oY2hhciAqKWNlLT5teWFpb2NiLmFpb19idWY7CiNlbmRpZgoJCX1lbHNlCgkJCSp1YnVmZmVyPTA7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQlpZihyZXR2YWwgPCBjZS0+bXlhaW9jYi5haW9fbmJ5dGVzKQojZWxzZQoJCWlmKHJldHZhbCA8IGNlLT5teWFpb2NiNjQuYWlvX25ieXRlcykKI2VuZGlmCiNlbHNlCgkJaWYocmV0dmFsIDwgY2UtPm15YWlvY2IuYWlvX25ieXRlcykKI2VuZGlmCgkJewoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3I0OiByZXQgJWQgJWRcbiIscmV0dmFsLGVycm5vKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3I0OiBmZCAlZCBvZmZzZXQgJWxsZCBidWZmZXIgJWx4IHNpemUgJWQgT3Bjb2RlICVkXG4iLAoJCQkJY2UtPm15YWlvY2IuYWlvX2ZpbGRlcywKCQkJCWNlLT5teWFpb2NiLmFpb19vZmZzZXQsCgkJCQkobG9uZykoY2UtPm15YWlvY2IuYWlvX2J1ZiksCgkJCQljZS0+bXlhaW9jYi5haW9fbmJ5dGVzLAoJCQkJY2UtPm15YWlvY2IuYWlvX2xpb19vcGNvZGUKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yNDogZmQgJWQgb2Zmc2V0ICVsbGQgYnVmZmVyICVseCBzaXplICVkIE9wY29kZSAlZFxuIiwKCQkJCWNlLT5teWFpb2NiNjQuYWlvX2ZpbGRlcywKCQkJCWNlLT5teWFpb2NiNjQuYWlvX29mZnNldCwKCQkJCShsb25nKShjZS0+bXlhaW9jYjY0LmFpb19idWYpLAoJCQkJY2UtPm15YWlvY2I2NC5haW9fbmJ5dGVzLAoJCQkJY2UtPm15YWlvY2I2NC5haW9fbGlvX29wY29kZQojZW5kaWYKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yNDogZmQgJWQgb2Zmc2V0ICVkIGJ1ZmZlciAlbHggc2l6ZSAlZCBPcGNvZGUgJWRcbiIsCgkJCQljZS0+bXlhaW9jYi5haW9fZmlsZGVzLAoJCQkJY2UtPm15YWlvY2IuYWlvX29mZnNldCwKCQkJCShsb25nKShjZS0+bXlhaW9jYi5haW9fYnVmKSwKCQkJCWNlLT5teWFpb2NiLmFpb19uYnl0ZXMsCgkJCQljZS0+bXlhaW9jYi5haW9fbGlvX29wY29kZQojZW5kaWYKCQkJCSk7CgkJfQoJCWNlLT5kaXJlY3Q9MTsKCQl0YWtlb2ZmX2NhY2hlKGdjLGNlKTsgLyogZG8gbm90IGRlbGV0ZSBidWZmZXIqLwoJCXB1dG9uaW51c2UoZ2MsY2UpOwoJfWVsc2UKCXsKCQkvKgoJCSAqIENsZWFyIHRoZSBjYWNoZSBhbmQgaXNzdWUgdGhlIGZpcnN0IHJlcXVlc3QgYXN5bmMoKQoJCSAqLwoJCWRlbF9jYWNoZShnYyk7CgkJZGVsX3JlYWQrKzsKCQlmaXJzdF9jZT1hbGxvY19jYWNoZShnYyxmZCxvZmZzZXQsc2l6ZSwobG9uZyBsb25nKUxJT19SRUFEKTsgLyogYWxsb2NhdGUgYnVmZmVyICovCgkJLypwcmludGYoImFsbG9jYXRlZCBidWZmZXIvcmVhZCAleCBvZmZzZXQgJWRcbiIsZmlyc3RfY2UtPm15YWlvY2IuYWlvX2J1ZixvZmZzZXQpOyovCmFnYWluOgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJZmlyc3RfY2UtPm9sZGJ1Zj1maXJzdF9jZS0+bXlhaW9jYi5haW9fYnVmOwoJCWZpcnN0X2NlLT5vbGRmZD1maXJzdF9jZS0+bXlhaW9jYi5haW9fZmlsZGVzOwoJCWZpcnN0X2NlLT5vbGRzaXplPWZpcnN0X2NlLT5teWFpb2NiLmFpb19uYnl0ZXM7CgkJcmV0PWFpb19yZWFkKCZmaXJzdF9jZS0+bXlhaW9jYik7CiNlbHNlCgkJZmlyc3RfY2UtPm9sZGJ1Zj1maXJzdF9jZS0+bXlhaW9jYjY0LmFpb19idWY7CgkJZmlyc3RfY2UtPm9sZGZkPWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX2ZpbGRlczsKCQlmaXJzdF9jZS0+b2xkc2l6ZT1maXJzdF9jZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXM7CgkJcmV0PWFpb19yZWFkNjQoJmZpcnN0X2NlLT5teWFpb2NiNjQpOwojZW5kaWYKI2Vsc2UKCQlmaXJzdF9jZS0+b2xkYnVmPWZpcnN0X2NlLT5teWFpb2NiLmFpb19idWY7CgkJZmlyc3RfY2UtPm9sZGZkPWZpcnN0X2NlLT5teWFpb2NiLmFpb19maWxkZXM7CgkJZmlyc3RfY2UtPm9sZHNpemU9Zmlyc3RfY2UtPm15YWlvY2IuYWlvX25ieXRlczsKCQlyZXQ9YWlvX3JlYWQoJmZpcnN0X2NlLT5teWFpb2NiKTsKI2VuZGlmCgkJaWYocmV0IT0wKQoJCXsKCQkJaWYoZXJybm89PUVBR0FJTikKCQkJCWdvdG8gYWdhaW47CgkJCWVsc2UKCQkJCXByaW50ZigiZXJyb3IgcmV0dXJuZWQgZnJvbSBhaW9fcmVhZCgpLiBSZXQgJWQgZXJybm8gJWRcbiIscmV0LGVycm5vKTsKCQl9Cgl9CglpZihzdHJpZGU9PTApCSAvKiBVc2VyIGRvZXMgbm90IHdhbnQgcmVhZC1haGVhZCAqLwoJCWdvdG8gb3V0OwoJaWYoYV9vZmZzZXQ8MCkJLyogQmVmb3JlIGJlZ2lubmluZyBvZiBmaWxlICovCgkJZ290byBvdXQ7CglpZihhX29mZnNldCtzaXplPm1heCkJLyogQWZ0ZXIgZW5kIG9mIGZpbGUgKi8KCQlnb3RvIG91dDsKCWlmKGRlcHRoID49KG1heF9kZXB0aC0xKSkKCQlkZXB0aD1tYXhfZGVwdGgtMTsKCWlmKGRlcHRoPT0wKQoJCWdvdG8gb3V0OwoJaWYoZ2MtPmNvdW50ID4gMSkKCQlzdGFydD1kZXB0aC0xOwoJZm9yKGk9c3RhcnQ7aTxkZXB0aDtpKyspCS8qIElzc3VlIHJlYWQtYWhlYWRzIGZvciB0aGUgZGVwdGggc3BlY2lmaWVkICovCgl7CgkJcl9vZmZzZXQ9YV9vZmZzZXQrKChpKzEpKihzdHJpZGUqYV9zaXplKSk7CgkJaWYocl9vZmZzZXQ8MCkKCQkJY29udGludWU7CgkJaWYocl9vZmZzZXQrc2l6ZSA+IG1heCkKCQkJY29udGludWU7CgkJaWYoKGNlPWluY2FjaGUoZ2MsZmQscl9vZmZzZXQsYV9zaXplKSkpCgkJCWNvbnRpbnVlOwoJCWNlPWFsbG9jX2NhY2hlKGdjLGZkLHJfb2Zmc2V0LGFfc2l6ZSwobG9uZyBsb25nKUxJT19SRUFEKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCWNlLT5vbGRidWY9Y2UtPm15YWlvY2IuYWlvX2J1ZjsKCQljZS0+b2xkZmQ9Y2UtPm15YWlvY2IuYWlvX2ZpbGRlczsKCQljZS0+b2xkc2l6ZT1jZS0+bXlhaW9jYi5haW9fbmJ5dGVzOwoJCXJldD1haW9fcmVhZCgmY2UtPm15YWlvY2IpOwojZWxzZQoJCWNlLT5vbGRidWY9Y2UtPm15YWlvY2I2NC5haW9fYnVmOwoJCWNlLT5vbGRmZD1jZS0+bXlhaW9jYjY0LmFpb19maWxkZXM7CgkJY2UtPm9sZHNpemU9Y2UtPm15YWlvY2I2NC5haW9fbmJ5dGVzOwoJCXJldD1haW9fcmVhZDY0KCZjZS0+bXlhaW9jYjY0KTsKI2VuZGlmCiNlbHNlCgkJY2UtPm9sZGJ1Zj1jZS0+bXlhaW9jYi5haW9fYnVmOwoJCWNlLT5vbGRmZD1jZS0+bXlhaW9jYi5haW9fZmlsZGVzOwoJCWNlLT5vbGRzaXplPWNlLT5teWFpb2NiLmFpb19uYnl0ZXM7CgkJcmV0PWFpb19yZWFkKCZjZS0+bXlhaW9jYik7CiNlbmRpZgoJCWlmKHJldCE9MCkKCQl7CgkJCXRha2VvZmZfY2FjaGUoZ2MsY2UpOwoJCQlicmVhazsKCQl9Cgl9CQkJCm91dDoKCWlmKGRlbF9yZWFkKQkvKiBXYWl0IGZvciB0aGUgZmlyc3QgcmVhZCB0byBjb21wbGV0ZSAqLwoJewojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJd2hpbGUoKHJldD1haW9fZXJyb3IoJmZpcnN0X2NlLT5teWFpb2NiKSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoZmlyc3RfY2UpOwoJCX0KI2Vsc2UKCQl3aGlsZSgocmV0PWFpb19lcnJvcjY0KCZmaXJzdF9jZS0+bXlhaW9jYjY0KSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoZmlyc3RfY2UpOwoJCX0KI2VuZGlmCiNlbHNlCgkJd2hpbGUoKHJldD1haW9fZXJyb3IoJmZpcnN0X2NlLT5teWFpb2NiKSk9PSBFSU5QUk9HUkVTUykKCQl7CgkJCWFzeW5jX3N1c3BlbmQoZmlyc3RfY2UpOwoJCX0KI2VuZGlmCgkJaWYocmV0KQoJCQlwcmludGYoImFpb19lcnJvciA0OiByZXQgJWQgJWRcbiIscmV0LGVycm5vKTsKI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJCWlmKGZpcnN0X2NlLT5vbGRidWYgIT0gZmlyc3RfY2UtPm15YWlvY2IuYWlvX2J1ZiB8fAoJCQlmaXJzdF9jZS0+b2xkZmQgIT0gZmlyc3RfY2UtPm15YWlvY2IuYWlvX2ZpbGRlcyB8fAoJCQlmaXJzdF9jZS0+b2xkc2l6ZSAhPSBmaXJzdF9jZS0+bXlhaW9jYi5haW9fbmJ5dGVzKSAKCQkJcHJpbnRmKCJJdCBjaGFuZ2VkIGluIGZsaWdodDJcbiIpOwoJCXJldHZhbD1haW9fcmV0dXJuKCZmaXJzdF9jZS0+bXlhaW9jYik7CiNlbHNlCgkJaWYoZmlyc3RfY2UtPm9sZGJ1ZiAhPSBmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19idWYgfHwKCQkJZmlyc3RfY2UtPm9sZGZkICE9IGZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX2ZpbGRlcyB8fAoJCQlmaXJzdF9jZS0+b2xkc2l6ZSAhPSBmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpIAoJCQlwcmludGYoIkl0IGNoYW5nZWQgaW4gZmxpZ2h0MlxuIik7CgkJcmV0dmFsPWFpb19yZXR1cm42NCgmZmlyc3RfY2UtPm15YWlvY2I2NCk7CiNlbmRpZgojZWxzZQoJCWlmKGZpcnN0X2NlLT5vbGRidWYgIT0gZmlyc3RfY2UtPm15YWlvY2IuYWlvX2J1ZiB8fAoJCQlmaXJzdF9jZS0+b2xkZmQgIT0gZmlyc3RfY2UtPm15YWlvY2IuYWlvX2ZpbGRlcyB8fAoJCQlmaXJzdF9jZS0+b2xkc2l6ZSAhPSBmaXJzdF9jZS0+bXlhaW9jYi5haW9fbmJ5dGVzKSAKCQkJcHJpbnRmKCJJdCBjaGFuZ2VkIGluIGZsaWdodDJcbiIpOwoJCXJldHZhbD1haW9fcmV0dXJuKCZmaXJzdF9jZS0+bXlhaW9jYik7CiNlbmRpZgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJaWYocmV0dmFsIDwgZmlyc3RfY2UtPm15YWlvY2IuYWlvX25ieXRlcykKI2Vsc2UKCQlpZihyZXR2YWwgPCBmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpCiNlbmRpZgojZWxzZQoJCWlmKHJldHZhbCA8IGZpcnN0X2NlLT5teWFpb2NiLmFpb19uYnl0ZXMpCiNlbmRpZgoJCXsKCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yNTogcmV0ICVkICVkXG4iLHJldHZhbCxlcnJubyk7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQkJcHJpbnRmKCJhaW9fcmV0dXJuIGVycm9yNTogZmQgJWQgb2Zmc2V0ICVsbGQgYnVmZmVyICVseCBzaXplICVkIE9wY29kZSAlZFxuIiwKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19maWxkZXMsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYi5haW9fb2Zmc2V0LAoJCQkJKGxvbmcpKGZpcnN0X2NlLT5teWFpb2NiLmFpb19idWYpLAoJCQkJZmlyc3RfY2UtPm15YWlvY2IuYWlvX25ieXRlcywKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19saW9fb3Bjb2RlCiNlbHNlCgkJCXByaW50ZigiYWlvX3JldHVybiBlcnJvcjU6IGZkICVkIG9mZnNldCAlbGxkIGJ1ZmZlciAlbHggc2l6ZSAlZCBPcGNvZGUgJWRcbiIsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19maWxkZXMsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYjY0LmFpb19vZmZzZXQsCgkJCQkobG9uZykoZmlyc3RfY2UtPm15YWlvY2I2NC5haW9fYnVmKSwKCQkJCWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX25ieXRlcywKCQkJCWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX2xpb19vcGNvZGUKI2VuZGlmCiNlbHNlCgkJCXByaW50ZigiYWlvX3JldHVybiBlcnJvcjU6IGZkICVkIG9mZnNldCAlbGQgYnVmZmVyICVseCBzaXplICVkIE9wY29kZSAlZFxuIiwKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19maWxkZXMsCgkJCQlmaXJzdF9jZS0+bXlhaW9jYi5haW9fb2Zmc2V0LAoJCQkJKGxvbmcpKGZpcnN0X2NlLT5teWFpb2NiLmFpb19idWYpLAoJCQkJZmlyc3RfY2UtPm15YWlvY2IuYWlvX25ieXRlcywKCQkJCWZpcnN0X2NlLT5teWFpb2NiLmFpb19saW9fb3Bjb2RlCiNlbmRpZgoJCQkJKTsKCQl9CgkJaWYocmV0dmFsID4gMCkKCQl7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQkJKnVidWZmZXI9KGNoYXIgKilmaXJzdF9jZS0+bXlhaW9jYi5haW9fYnVmOwojZWxzZQoJCQkqdWJ1ZmZlcj0oY2hhciAqKWZpcnN0X2NlLT5teWFpb2NiNjQuYWlvX2J1ZjsKI2VuZGlmCiNlbHNlCgkJCSp1YnVmZmVyPShjaGFyICopZmlyc3RfY2UtPm15YWlvY2IuYWlvX2J1ZjsKI2VuZGlmCgkJfWVsc2UKCQkJKnVidWZmZXI9KGNoYXIgKikwOwoJCWZpcnN0X2NlLT5kaXJlY3Q9MTsJIC8qIGRvIG5vdCBkZWxldGUgdGhlIGJ1ZmZlciAqLwoJCXRha2VvZmZfY2FjaGUoZ2MsZmlyc3RfY2UpOwoJCXB1dG9uaW51c2UoZ2MsZmlyc3RfY2UpOwoJfQoJcmV0dXJuKChpbnQpcmV0dmFsKTsJCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVGhlIGNhbGxlciBpcyBub3cgZmluaXNoZWQgd2l0aCB0aGUgZGF0YSB0aGF0IHdhcyBwcm92aWRlZCBzbwogKiB0aGUgbGlicmFyeSBpcyBub3cgZnJlZSB0byByZXR1cm4gdGhlIG1lbW9yeSB0byB0aGUgcG9vbCBmb3IgbGF0ZXIKICogcmV1c2UuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnZvaWQKYXN5bmNfcmVsZWFzZShnYykKc3RydWN0IGNhY2hlICpnYzsKewoJdGFrZW9mZmludXNlKGdjKTsKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogUHV0IHRoZSBidWZmZXIgb24gdGhlIGludXNlIGxpc3QuIFdoZW4gdGhlIHVzZXIgaXMgZmluaXNoZWQgd2l0aCAKICogdGhlIGJ1ZmZlciBpdCB3aWxsIGNhbGwgYmFjayBpbnRvIGFzeW5jX3JlbGVhc2UgYW5kIHRoZSBpdGVtcyBvbiB0aGUgCiAqIGludXNlIGxpc3Qgd2lsbCBiZSBkZWFsbG9jYXRlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZApwdXRvbmludXNlKGdjLGVudHJ5KQpzdHJ1Y3QgY2FjaGUgKmdjOwpzdHJ1Y3QgY2FjaGVfZW50ICplbnRyeTsKewoJaWYoZ2MtPmludXNlX2hlYWQpCgkJZW50cnktPmZvcndhcmQ9Z2MtPmludXNlX2hlYWQ7CgllbHNlCgkJZW50cnktPmZvcndhcmQ9MDsKCWdjLT5pbnVzZV9oZWFkPWVudHJ5Owp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGZpbmlzaGVkIHdpdGggdGhlIGRhdGEgdGhhdAogKiB3YXMgcHJvdmlkZWQuIFRoZSBtZW1vcnkgbWF5IG5vdyBiZSByZXR1cm5lZCB0byB0aGUgcG9vbC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAp0YWtlb2ZmaW51c2UoZ2MpCnN0cnVjdCBjYWNoZSAqZ2M7CnsKCXN0cnVjdCBjYWNoZV9lbnQgKmNlOwoJaWYoZ2MtPmludXNlX2hlYWQ9PTApCgkJcHJpbnRmKCJUYWtlb2ZmaW51c2UgZXJyb3JcbiIpOwoJY2U9Z2MtPmludXNlX2hlYWQ7CglnYy0+aW51c2VfaGVhZD1nYy0+aW51c2VfaGVhZC0+Zm9yd2FyZDsKCQoJaWYoZ2MtPmludXNlX2hlYWQgIT0wKQoJCXByaW50ZigiRXJyb3IgaW4gdGFrZSBvZmYgaW51c2VcbiIpOwoJZnJlZSgodm9pZCopKGNlLT5yZWFsX2FkZHJlc3MpKTsKCWZyZWUoY2UpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBUaGlzIHJvdXRpbmUgaXMgYSBnZW5lcmljIGFzeW5jIHdyaXRlciBhc3Npc3QgZnVudGlvbi4gSXQgdGFrZXMKICogdGhlIHNhbWUgY2FsbGluZyBwYXJhbWV0ZXJzIGFzIHdyaXRlKCkgYnV0IGFsc28gZXh0ZW5kcyB0aGUKICogaW50ZXJmYWNlIHRvIGluY2x1ZGU6CiAqIAogKiBvZmZzZXQgLi4uLi4gb2Zmc2V0IGluIHRoZSBmaWxlLgogKiBkZXB0aCAgLi4uLi4gSG93IG11Y2ggcmVhZC1haGVhZCBkbyB5b3Ugd2FudC4KICogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzaXplX3QKYXN5bmNfd3JpdGUoZ2MsZmQsYnVmZmVyLHNpemUsb2Zmc2V0LGRlcHRoKQpzdHJ1Y3QgY2FjaGUgKmdjOwpsb25nIGxvbmcgZmQsc2l6ZTsKY2hhciAqYnVmZmVyOwpvZmY2NF90IG9mZnNldDsKbG9uZyBsb25nIGRlcHRoOwp7CglzdHJ1Y3QgY2FjaGVfZW50ICpjZTsKCXNpemVfdCByZXQ7CgljZT1hbGxvY2F0ZV93cml0ZV9idWZmZXIoZ2MsZmQsb2Zmc2V0LHNpemUsKGxvbmcgbG9uZylMSU9fV1JJVEUsZGVwdGgsMExMLChjaGFyICopMCwoY2hhciAqKTApOwoJY2UtPmRpcmVjdD0wOwkgLyogbm90IGRpcmVjdC4gTGliIHN1cHBsaWVzIGJ1ZmZlciBhbmQgbXVzdCBmcmVlIGl0ICovCiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCW1iY29weShidWZmZXIsKGNoYXIgKikoY2UtPm15YWlvY2IuYWlvX2J1ZiksKHNpemVfdClzaXplKTsKI2Vsc2UKCW1iY29weShidWZmZXIsKGNoYXIgKikoY2UtPm15YWlvY2I2NC5haW9fYnVmKSwoc2l6ZV90KXNpemUpOwojZW5kaWYKI2Vsc2UKCW1iY29weShidWZmZXIsKGNoYXIgKikoY2UtPm15YWlvY2IuYWlvX2J1ZiksKHNpemVfdClzaXplKTsKI2VuZGlmCglhc3luY19wdXRfb25fd3JpdGVfcXVldWUoZ2MsY2UpOwoJLyoKCXByaW50ZigiYXN3OiBmZCAlZCBvZmZzZXQgJWxsZCwgc2l6ZSAlZFxuIixjZS0+bXlhaW9jYjY0LmFpb19maWxkZXMsCgkJY2UtPm15YWlvY2I2NC5haW9fb2Zmc2V0LAoJCWNlLT5teWFpb2NiNjQuYWlvX25ieXRlcyk7CgkqLwkKCmFnYWluOgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCglyZXQ9YWlvX3dyaXRlKCZjZS0+bXlhaW9jYik7CiNlbHNlCglyZXQ9YWlvX3dyaXRlNjQoJmNlLT5teWFpb2NiNjQpOwojZW5kaWYKI2Vsc2UKCXJldD1haW9fd3JpdGUoJmNlLT5teWFpb2NiKTsKI2VuZGlmCglpZihyZXQ9PS0xKQoJewoJCWlmKGVycm5vPT1FQUdBSU4pCgkJewoJCQlhc3luY193YWl0X2Zvcl93cml0ZShnYyk7CgkJCWdvdG8gYWdhaW47CgkJfQoJCWlmKGVycm5vPT0wKQoJCXsKCQkJLyogQ29tcGVuc2F0ZSBmb3IgYnVnIGluIGFzeW5jIGxpYnJhcnkgKi8KCQkJYXN5bmNfd2FpdF9mb3Jfd3JpdGUoZ2MpOwoJCQlnb3RvIGFnYWluOwoJCX0KCQllbHNlCgkJewoJCQlwcmludGYoIkVycm9yIGluIGFpb193cml0ZTogcmV0ICVkIGVycm5vICVkIGNvdW50ICVsbGRcbiIscmV0LGVycm5vLGdjLT53X2NvdW50KTsKCQkJLyoKCQkJcHJpbnRmKCJhaW9fd3JpdGVfbm9fY29weTogZmQgJWQgYnVmZmVyICV4IG9mZnNldCAlbGxkIHNpemUgJWRcbiIsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19maWxkZXMsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19idWYsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19vZmZzZXQsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpOwoJCQkqLwoJCQlleGl0KDE3Nyk7CgkJfQoJfSAKCXJldHVybigoc3NpemVfdClzaXplKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQWxsb2NhdGUgYSB3cml0ZSBhaW9jYiBhbmQgd3JpdGUgYnVmZmVyIG9mIHRoZSBzaXplIHNwZWNpZmllZC4gQWxzbyAKICogcHV0IHNvbWUgZXh0cmEgYnVmZmVyIHBhZGRpbmcgc28gdGhhdCBWWF9ESVJFQ1QgY2FuIGRvIGl0cyBqb2Igd2hlbgogKiBuZWVkZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKc3RydWN0IGNhY2hlX2VudCAqCmFsbG9jYXRlX3dyaXRlX2J1ZmZlcihnYyxmZCxvZmZzZXQsc2l6ZSxvcCx3X2RlcHRoLGRpcmVjdCxidWZmZXIsZnJlZV9hZGRyKQpzdHJ1Y3QgY2FjaGUgKmdjOwpsb25nIGxvbmcgZmQsc2l6ZSxvcDsKb2ZmNjRfdCBvZmZzZXQ7CmxvbmcgbG9uZyB3X2RlcHRoOwpsb25nIGxvbmcgZGlyZWN0OwpjaGFyICpidWZmZXIsKmZyZWVfYWRkcjsKewoJc3RydWN0IGNhY2hlX2VudCAqY2U7Cglsb25nIHRlbXA7CglpZihmZD09MExMKQoJewoJCXByaW50ZigiU2V0dGluZyB1cCB3cml0ZSBidWZmZXIgaW5zYW5lXG4iKTsKCQlleGl0KDE3OCk7Cgl9CglpZihnYy0+d19jb3VudCA+IHdfZGVwdGgpCgkJYXN5bmNfd2FpdF9mb3Jfd3JpdGUoZ2MpOwoJY2U9KHN0cnVjdCBjYWNoZV9lbnQgKiltYWxsb2MoKHNpemVfdClzaXplb2Yoc3RydWN0IGNhY2hlX2VudCkpOwoJaWYoY2UgPT0gKHN0cnVjdCBjYWNoZV9lbnQgKikwKQoJewoJCXByaW50ZigiTWFsbG9jIGZhaWxlZCAxXG4iKTsKCQlleGl0KDE3OSk7Cgl9CgliemVybyhjZSxzaXplb2Yoc3RydWN0IGNhY2hlX2VudCkpOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgljZS0+bXlhaW9jYi5haW9fZmlsZGVzPShpbnQpZmQ7CgljZS0+bXlhaW9jYi5haW9fb2Zmc2V0PShvZmY2NF90KW9mZnNldDsKCWlmKCFkaXJlY3QpCgl7CgkJY2UtPnJlYWxfYWRkcmVzcyA9IChjaGFyICopbWFsbG9jKChzaXplX3QpKHNpemUrcGFnZV9zaXplKSk7CgkJdGVtcD0obG9uZyljZS0+cmVhbF9hZGRyZXNzOwoJCXRlbXAgPSAodGVtcCtwYWdlX3NpemUpICYgfihwYWdlX3NpemUtMSk7CgkJY2UtPm15YWlvY2IuYWlvX2J1Zj0odm9sYXRpbGUgdm9pZCAqKXRlbXA7Cgl9ZWxzZQoJewoJCWNlLT5teWFpb2NiLmFpb19idWY9KHZvbGF0aWxlIHZvaWQgKilidWZmZXI7CgkJY2UtPnJlYWxfYWRkcmVzcz0oY2hhciAqKWZyZWVfYWRkcjsKCX0KCWlmKGNlLT5teWFpb2NiLmFpb19idWYgPT0gMCkKI2Vsc2UKCWNlLT5teWFpb2NiNjQuYWlvX2ZpbGRlcz0oaW50KWZkOwoJY2UtPm15YWlvY2I2NC5haW9fb2Zmc2V0PShvZmY2NF90KW9mZnNldDsKCWlmKCFkaXJlY3QpCgl7CgkJY2UtPnJlYWxfYWRkcmVzcyA9IChjaGFyICopbWFsbG9jKChzaXplX3QpKHNpemUrcGFnZV9zaXplKSk7CgkJdGVtcD0obG9uZyljZS0+cmVhbF9hZGRyZXNzOwoJCXRlbXAgPSAodGVtcCtwYWdlX3NpemUpICYgfihwYWdlX3NpemUtMSk7CgkJY2UtPm15YWlvY2I2NC5haW9fYnVmPSh2b2xhdGlsZSB2b2lkICopdGVtcDsKCX0KCWVsc2UKCXsKCQljZS0+bXlhaW9jYjY0LmFpb19idWY9KHZvbGF0aWxlIHZvaWQgKilidWZmZXI7CgkJY2UtPnJlYWxfYWRkcmVzcz0oY2hhciAqKWZyZWVfYWRkcjsKCX0KCWlmKGNlLT5teWFpb2NiNjQuYWlvX2J1ZiA9PSAwKQojZW5kaWYKI2Vsc2UKCWNlLT5teWFpb2NiLmFpb19maWxkZXM9KGludClmZDsKCWNlLT5teWFpb2NiLmFpb19vZmZzZXQ9KG9mZl90KW9mZnNldDsKCWlmKCFkaXJlY3QpCgl7CgkJY2UtPnJlYWxfYWRkcmVzcyA9IChjaGFyICopbWFsbG9jKChzaXplX3QpKHNpemUrcGFnZV9zaXplKSk7CgkJdGVtcD0obG9uZyljZS0+cmVhbF9hZGRyZXNzOwoJCXRlbXAgPSAodGVtcCtwYWdlX3NpemUpICYgfihwYWdlX3NpemUtMSk7CgkJY2UtPm15YWlvY2IuYWlvX2J1Zj0odm9sYXRpbGUgdm9pZCAqKXRlbXA7Cgl9CgllbHNlCgl7CgkJY2UtPm15YWlvY2IuYWlvX2J1Zj0odm9sYXRpbGUgdm9pZCAqKWJ1ZmZlcjsKCQljZS0+cmVhbF9hZGRyZXNzPShjaGFyICopZnJlZV9hZGRyOwoJfQoJaWYoY2UtPm15YWlvY2IuYWlvX2J1ZiA9PSAwKQojZW5kaWYKCXsKCQlwcmludGYoIk1hbGxvYyBmYWlsZWQgMlxuIik7CgkJZXhpdCgxODApOwoJfQojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgljZS0+bXlhaW9jYi5haW9fcmVxcHJpbz0wOwoJY2UtPm15YWlvY2IuYWlvX25ieXRlcz0oc2l6ZV90KXNpemU7CgljZS0+bXlhaW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfbm90aWZ5PVNJR0VWX05PTkU7CgljZS0+bXlhaW9jYi5haW9fbGlvX29wY29kZT0oaW50KW9wOwojZWxzZQoJY2UtPm15YWlvY2I2NC5haW9fcmVxcHJpbz0wOwoJY2UtPm15YWlvY2I2NC5haW9fbmJ5dGVzPShzaXplX3Qpc2l6ZTsKCWNlLT5teWFpb2NiNjQuYWlvX3NpZ2V2ZW50LnNpZ2V2X25vdGlmeT1TSUdFVl9OT05FOwoJY2UtPm15YWlvY2I2NC5haW9fbGlvX29wY29kZT0oaW50KW9wOwojZW5kaWYKI2Vsc2UKCWNlLT5teWFpb2NiLmFpb19yZXFwcmlvPTA7CgljZS0+bXlhaW9jYi5haW9fbmJ5dGVzPShzaXplX3Qpc2l6ZTsKCWNlLT5teWFpb2NiLmFpb19zaWdldmVudC5zaWdldl9ub3RpZnk9U0lHRVZfTk9ORTsKCWNlLT5teWFpb2NiLmFpb19saW9fb3Bjb2RlPShpbnQpb3A7CiNlbmRpZgoJY2UtPmZkPShpbnQpZmQ7CglyZXR1cm4oY2UpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBQdXQgaXQgb24gdGhlIG91dGJvdW5kIHF1ZXVlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnZvaWQKYXN5bmNfcHV0X29uX3dyaXRlX3F1ZXVlKGdjLGNlKQpzdHJ1Y3QgY2FjaGUgKmdjOwpzdHJ1Y3QgY2FjaGVfZW50ICpjZTsKewoJY2UtPmZvcndhcmQ9MDsKCWNlLT5iYWNrPWdjLT53X3RhaWw7CglpZihnYy0+d190YWlsKQoJCWdjLT53X3RhaWwtPmZvcndhcmQgPSBjZTsKCWdjLT53X3RhaWw9IGNlOwoJaWYoIWdjLT53X2hlYWQpCgkJZ2MtPndfaGVhZD1jZTsKCWdjLT53X2NvdW50Kys7CglyZXR1cm47Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENsZWFudXAgYWxsIG91dHN0YW5kaW5nIHdyaXRlcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZAphc3luY193cml0ZV9maW5pc2goZ2MpCnN0cnVjdCBjYWNoZSAqZ2M7CnsKCXdoaWxlKGdjLT53X2hlYWQpCgl7CgkJLypwcmludGYoImFzeW5jX3dyaXRlX2ZpbmlzaDogV2FpdGluZyBmb3IgYnVmZmVyICV4IHRvIGZpbmlzaFxuIixnYy0+d19oZWFkLT5teWFpb2NiNjQuYWlvX2J1Zik7Ki8KCQlhc3luY193YWl0X2Zvcl93cml0ZShnYyk7Cgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFdhaXQgZm9yIGFuIEkvTyB0byBmaW5pc2gKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgp2b2lkCmFzeW5jX3dhaXRfZm9yX3dyaXRlKGdjKQpzdHJ1Y3QgY2FjaGUgKmdjOwp7CglzdHJ1Y3QgY2FjaGVfZW50ICpjZTsKCXNpemVfdCByZXQscmV0dmFsOwoJaWYoZ2MtPndfaGVhZD09MCkKCQlyZXR1cm47CgljZT1nYy0+d19oZWFkOwoJZ2MtPndfaGVhZD1jZS0+Zm9yd2FyZDsKCWdjLT53X2NvdW50LS07CgljZS0+Zm9yd2FyZD0wOwoJaWYoY2U9PWdjLT53X3RhaWwpCgkJZ2MtPndfdGFpbD0wOwoJLypwcmludGYoIldhaXQgZm9yIGJ1ZmZlciAleCAgb2Zmc2V0ICVsbGQgIHNpemUgJWQgdG8gZmluaXNoXG4iLAoJCWNlLT5teWFpb2NiNjQuYWlvX2J1ZiwKCQljZS0+bXlhaW9jYjY0LmFpb19vZmZzZXQsCgkJY2UtPm15YWlvY2I2NC5haW9fbmJ5dGVzKTsKCXByaW50Zigid3JpdGUgY291bnQgJWxsZCBcbiIsZ2MtPndfY291bnQpOwoJKi8KI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgCiNpZmRlZiBfX0xQNjRfXwoJd2hpbGUoKHJldD1haW9fZXJyb3IoJmNlLT5teWFpb2NiKSk9PSBFSU5QUk9HUkVTUykKCXsKCQlhc3luY19zdXNwZW5kKGNlKTsKCX0KI2Vsc2UKCXdoaWxlKChyZXQ9YWlvX2Vycm9yNjQoJmNlLT5teWFpb2NiNjQpKT09IEVJTlBST0dSRVNTKQoJewoJCWFzeW5jX3N1c3BlbmQoY2UpOwoJfQojZW5kaWYKI2Vsc2UKCXdoaWxlKChyZXQ9YWlvX2Vycm9yKCZjZS0+bXlhaW9jYikpPT0gRUlOUFJPR1JFU1MpCgl7CgkJYXN5bmNfc3VzcGVuZChjZSk7Cgl9CiNlbmRpZgoJaWYocmV0KQoJewoJCXByaW50ZigiYWlvX2Vycm9yIDU6IHJldCAlZCAlZFxuIixyZXQsZXJybm8pOwojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCgkJcHJpbnRmKCJmZCAlZCBvZmZzZXQgJWxsZCBzaXplICVkXG4iLAoJCQljZS0+bXlhaW9jYi5haW9fZmlsZGVzLAoJCQljZS0+bXlhaW9jYi5haW9fb2Zmc2V0LAoJCQljZS0+bXlhaW9jYi5haW9fbmJ5dGVzKTsKI2Vsc2UKCQlwcmludGYoImZkICVkIG9mZnNldCAlbGxkIHNpemUgJWRcbiIsCgkJCWNlLT5teWFpb2NiNjQuYWlvX2ZpbGRlcywKCQkJY2UtPm15YWlvY2I2NC5haW9fb2Zmc2V0LAoJCQljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpOwojZW5kaWYKI2Vsc2UKCQlwcmludGYoImZkICVkIG9mZnNldCAlbGxkIHNpemUgJWRcbiIsCgkJCWNlLT5teWFpb2NiLmFpb19maWxkZXMsCgkJCWNlLT5teWFpb2NiLmFpb19vZmZzZXQsCgkJCWNlLT5teWFpb2NiLmFpb19uYnl0ZXMpOwojZW5kaWYKCQlleGl0KDE4MSk7Cgl9CgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCglyZXR2YWw9YWlvX3JldHVybigmY2UtPm15YWlvY2IpOwojZWxzZQojaWYgZGVmaW5lZChfX0NyYXlYMV9fKQoJcmV0dmFsPWFpb19yZXR1cm42NCgoYWlvY2I2NF90ICopJmNlLT5teWFpb2NiNjQpOwojZWxzZQoJcmV0dmFsPWFpb19yZXR1cm42NCgoc3RydWN0IGFpb2NiNjQgKikmY2UtPm15YWlvY2I2NCk7CiNlbmRpZgoKI2VuZGlmCiNlbHNlCglyZXR2YWw9YWlvX3JldHVybigmY2UtPm15YWlvY2IpOwojZW5kaWYKCWlmKChpbnQpcmV0dmFsIDwgMCkKCXsKCQlwcmludGYoImFpb19yZXR1cm4gZXJyb3I6ICVkXG4iLGVycm5vKTsKCX0KCglpZighY2UtPmRpcmVjdCkKCXsKCQkvKiBwcmludGYoIkZyZWVpbmcgYnVmZmVyICV4XG4iLGNlLT5yZWFsX2FkZHJlc3MpOyovCgkJZnJlZSgodm9pZCAqKShjZS0+cmVhbF9hZGRyZXNzKSk7CgkJZnJlZSgodm9pZCAqKWNlKTsKCX0KCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFRoaXMgcm91dGluZSBpcyBhIGdlbmVyaWMgYXN5bmMgd3JpdGVyIGFzc2lzdCBmdW50aW9uLiBJdCB0YWtlcwogKiB0aGUgc2FtZSBjYWxsaW5nIHBhcmFtZXRlcnMgYXMgd3JpdGUoKSBidXQgYWxzbyBleHRlbmRzIHRoZQogKiBpbnRlcmZhY2UgdG8gaW5jbHVkZToKICogCiAqIG9mZnNldCAuLi4uLiBvZmZzZXQgaW4gdGhlIGZpbGUuCiAqIGRlcHRoICAuLi4uLiBIb3cgbXVjaCByZWFkLWFoZWFkIGRvIHlvdSB3YW50LgogKiBmcmVlX2FkZHIgLi4gYWRkcmVzcyBvZiBtZW1vcnkgdG8gZnJlZSBhZnRlciB3cml0ZSBpcyBjb21wbGV0ZWQuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc2l6ZV90CmFzeW5jX3dyaXRlX25vX2NvcHkoZ2MsZmQsYnVmZmVyLHNpemUsb2Zmc2V0LGRlcHRoLGZyZWVfYWRkcikKc3RydWN0IGNhY2hlICpnYzsKbG9uZyBsb25nIGZkLHNpemU7CmNoYXIgKmJ1ZmZlcjsKb2ZmNjRfdCBvZmZzZXQ7CmxvbmcgbG9uZyBkZXB0aDsKY2hhciAqZnJlZV9hZGRyOwp7CglzdHJ1Y3QgY2FjaGVfZW50ICpjZTsKCXNpemVfdCByZXQ7Cglsb25nIGxvbmcgZGlyZWN0ID0gMTsKCWNlPWFsbG9jYXRlX3dyaXRlX2J1ZmZlcihnYyxmZCxvZmZzZXQsc2l6ZSwobG9uZyBsb25nKUxJT19XUklURSxkZXB0aCxkaXJlY3QsYnVmZmVyLGZyZWVfYWRkcik7CgljZS0+ZGlyZWN0PTA7CS8qIGhhdmUgbGlicmFyeSBkZS1hbGxvY2F0ZSB0aGUgYnVmZmVyICovCglhc3luY19wdXRfb25fd3JpdGVfcXVldWUoZ2MsY2UpOwoJLyoKCXByaW50ZigiYXduYzogZmQgJWQgb2Zmc2V0ICVsbGQsIHNpemUgJWRcbiIsY2UtPm15YWlvY2I2NC5haW9fZmlsZGVzLAoJCWNlLT5teWFpb2NiNjQuYWlvX29mZnNldCwKCQljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpOwoJKi8KCmFnYWluOgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRSAKI2lmZGVmIF9fTFA2NF9fCglyZXQ9YWlvX3dyaXRlKCZjZS0+bXlhaW9jYik7CiNlbHNlCglyZXQ9YWlvX3dyaXRlNjQoJmNlLT5teWFpb2NiNjQpOwojZW5kaWYKI2Vsc2UKCXJldD1haW9fd3JpdGUoJmNlLT5teWFpb2NiKTsKI2VuZGlmCglpZihyZXQ9PS0xKQoJewoJCWlmKGVycm5vPT1FQUdBSU4pCgkJewoJCQlhc3luY193YWl0X2Zvcl93cml0ZShnYyk7CgkJCWdvdG8gYWdhaW47CgkJfQoJCWlmKGVycm5vPT0wKQoJCXsKCQkJLyogQ29tcGVuc2F0ZSBmb3IgYnVnIGluIGFzeW5jIGxpYnJhcnkgKi8KCQkJYXN5bmNfd2FpdF9mb3Jfd3JpdGUoZ2MpOwoJCQlnb3RvIGFnYWluOwoJCX0KCQllbHNlCgkJewoJCQlwcmludGYoIkVycm9yIGluIGFpb193cml0ZTogcmV0ICVkIGVycm5vICVkXG4iLHJldCxlcnJubyk7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIAojaWZkZWYgX19MUDY0X18KCQkJcHJpbnRmKCJhaW9fd3JpdGVfbm9fY29weTogZmQgJWQgYnVmZmVyICVseCBvZmZzZXQgJWxsZCBzaXplICVkXG4iLAoJCQkJY2UtPm15YWlvY2IuYWlvX2ZpbGRlcywKCQkJCShsb25nKShjZS0+bXlhaW9jYi5haW9fYnVmKSwKCQkJCWNlLT5teWFpb2NiLmFpb19vZmZzZXQsCgkJCQljZS0+bXlhaW9jYi5haW9fbmJ5dGVzKTsKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fd3JpdGVfbm9fY29weTogZmQgJWQgYnVmZmVyICVseCBvZmZzZXQgJWxsZCBzaXplICVkXG4iLAoJCQkJY2UtPm15YWlvY2I2NC5haW9fZmlsZGVzLAoJCQkJKGxvbmcpKGNlLT5teWFpb2NiNjQuYWlvX2J1ZiksCgkJCQljZS0+bXlhaW9jYjY0LmFpb19vZmZzZXQsCgkJCQljZS0+bXlhaW9jYjY0LmFpb19uYnl0ZXMpOwojZW5kaWYKI2Vsc2UKCQkJcHJpbnRmKCJhaW9fd3JpdGVfbm9fY29weTogZmQgJWQgYnVmZmVyICVseCBvZmZzZXQgJWxkIHNpemUgJWRcbiIsCgkJCQljZS0+bXlhaW9jYi5haW9fZmlsZGVzLAoJCQkJKGxvbmcpKGNlLT5teWFpb2NiLmFpb19idWYpLAoJCQkJY2UtPm15YWlvY2IuYWlvX29mZnNldCwKCQkJCWNlLT5teWFp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bmRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGdldHRpbWVvZmRheSgpIGluIAoqIG1pY3Jvc2Vjb25kcyBiYWNrIHRvIHRoZSBjbGllbnQsIGFzIGEgbnVtZXJpY2FsIHN0cmluZy4KKgoqIC9ldGMvc2VydmljZXMgc2hvdWxkIGNvbnRhaW4gIlBJVCIgd2l0aCBhIHNwZWNpZmllZCBwb3J0IHZhbHVlLgoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoKKiogU3lzdGVtIGhlYWRlciBmaWxlcy4KKi8KI2luY2x1ZGUgPGVycm5vLmg+ICAgICAgICAvKiBlcnJubyBkZWNsYXJhdGlvbiAmIGVycm9yIGNvZGVzLiAgICAgICAgICAgICovCiNpbmNsdWRlIDxuZXRkYi5oPiAgICAgICAgLyogZ2V0YWRkcmluZm8oMykgZXQgYWwuICAgICAgICAgICAgICAgICAgICAgICAqLwojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPiAgIC8qIHNvY2thZGRyX2luICYgc29ja2FkZHJfaW42IGRlZmluaXRpb24uICAgICAgKi8KI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAvKiBwcmludGYoMykgZXQgYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgLyogZXhpdCgyKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwojaW5jbHVkZSA8c3RyaW5nLmg+ICAgICAgIC8qIFN0cmluZyBtYW5pcHVsYXRpb24gJiBtZW1vcnkgZnVuY3Rpb25zLiAgICAgKi8KI2luY2x1ZGUgPHN5cy9wb2xsLmg+ICAgICAvKiBwb2xsKDIpIGFuZCByZWxhdGVkIGRlZmluaXRpb25zLiAgICAgICAgICAgICovCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAgLyogU29ja2V0IGZ1bmN0aW9ucyAoc29ja2V0KDIpLCBiaW5kKDIpLCBldGMpLiAqLwojaW5jbHVkZSA8dGltZS5oPiAgICAgICAgIC8qIHRpbWUoMikgJiBjdGltZSgzKS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAgICAvKiBnZXR0aW1lb2ZkYXkgCQkJCSAqLwojaW5jbHVkZSA8dW5pc3RkLmg+ICAgICAgIC8qIGdldG9wdCgzKSwgcmVhZCgyKSwgZXRjLiAgICAgICAgICAgICAgICAgICAgKi8KLyogSW5jbHVkZSBmb3IgQ3lnbnVzIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciBXaW5kb3dzICovCiNpZiBkZWZpbmVkIChXaW5kb3dzKQojaW5jbHVkZSA8V2luZG93cy5oPgppbnQgZXJybm87CiNlbmRpZgoKLyoKKiogQ29uc3RhbnRzLgoqKgoqKiBQbGVhc2UgcmVtZW1iZXIgdG8gYWRkIFBJVCBzZXJ2aWNlIHRvIHRoZSAvZXRjL3NlcnZpY2VzIGZpbGUuCiovCiNkZWZpbmUgREZMVF9TRVJWSUNFICJQSVQiICAgICAgIC8qIFByb2dyYW1tYWJsZSBJbnRlcmRpbWVuc2lvbmFsIFRpbWVyICAgICAgKi8KCiNkZWZpbmUgSU5WQUxJRF9ERVNDIC0xICAgICAgICAgIC8qIEludmFsaWQgZmlsZSBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgKi8KI2RlZmluZSBNQVhDT05OUUxFTiAgMyAgICAgICAgICAgLyogTWF4IG5iciBvZiBjb25uZWN0aW9uIHJlcXVlc3RzIHRvIHF1ZXVlLiAqLwojZGVmaW5lIE1BWFRDUFNDS1RTICAyICAgICAgICAgICAvKiBPbmUgVENQIHNvY2tldCBmb3IgSVB2NCAmIG9uZSBmb3IgSVB2Ni4gICovCiNkZWZpbmUgTUFYVURQU0NLVFMgIDIgICAgICAgICAgIC8qIE9uZSBVRFAgc29ja2V0IGZvciBJUHY0ICYgb25lIGZvciBJUHY2LiAgKi8KI2RlZmluZSBWQUxJRE9QVFMgICAgInZoOnA6IiAgICAgLyogVmFsaWQgY29tbWFuZCBvcHRpb25zLiAgICAgICAgICAgICAgICAgICAqLwovKgoqKiBTaW1wbGUgYm9vbGVhbiB0eXBlIGRlZmluaXRpb24uCiovCmludCBmYWxzZSA9IDA7CmludCB0cnVlID0gMTsKLyoKKiogUHJvdG90eXBlcyBmb3IgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy4KKi8Kc3RhdGljIGludCAgb3BlblNja3QoIGNvbnN0IGNoYXIgKnNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIGRlc2NbIF0sCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICpkZXNjU2l6ZSApOwpzdGF0aWMgdm9pZCBwaXQoIGludCAgICB0U2NrdFsgXSwKICAgICAgICAgICAgICAgICBzaXplX3QgdFNja3RTaXplLAogICAgICAgICAgICAgICAgIGludCAgICB1U2NrdFsgXSwKICAgICAgICAgICAgICAgICBzaXplX3QgdVNja3RTaXplICk7Ci8qCioqIEdsb2JhbCBkYXRhIG9iamVjdHMuCiovCnN0YXRpYyBjaGFyICAgICAgICBob3N0QmZyWyBOSV9NQVhIT1NUIF07ICAgLyogRm9yIHVzZSB3L2dldG5hbWVpbmZvKDMpLiAgICAqLwpzdGF0aWMgY29uc3QgY2hhciAqcGdtTmFtZTsgICAgICAgICAgICAgICAgIC8qIFByb2dyYW0gbmFtZSB3L28gZGlyIHByZWZpeC4gKi8Kc3RhdGljIGNoYXIgICAgICAgIHNlcnZCZnJbIE5JX01BWFNFUlYgXTsgICAvKiBGb3IgdXNlIHcvZ2V0bmFtZWluZm8oMykuICAgICovCnN0YXRpYyBpbnQgICAgIAkgICB2ZXJib3NlID0gMDsgICAgICAgICAgICAgLyogVmVyYm9zZSBtb2RlIGluZGljYXRpb24uICAgICAqLwpzdHJ1Y3QgdGltZXZhbCB0bTsgIC8qIFRpbWV2YWwgc3RydWN0dXJlLCB1c2VkIHdpdGggZ2V0dGltZW9mZGF5KCkgKi8KY2hhciAgIHRpbWVTdHJbNDBdOyAvKiBTdHJpbmcgZm9yIHRpbWUgaW4gbWljcm9zZWNvbmRzICovCmNoYXIgc2VydmljZV9uYW1lWzIwXTsKaW50IG5lZWQ7Ci8qCioqIFVzYWdlIG1hY3JvIGZvciBjb21tYW5kIHN5bnRheCB2aW9sYXRpb25zLgoqLwojZGVmaW5lIFVTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICJVc2FnZTogJXMgWy12XSAtcCBzZXJ2aWNlIFxuIiwgICBcCiAgICAgICAgICAgICAgICAgICAgcGdtTmFtZSApOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgZXhpdCggMTI3ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgfSAgLyogRW5kIFVTQUdFIG1hY3JvLiAqLwovKgoqKiBNYWNybyB0byB0ZXJtaW5hdGUgdGhlIHByb2dyYW0gaWYgYSBzeXN0ZW0gY2FsbCBlcnJvciBvY2N1cnMuICBUaGUgc3lzdGVtCioqIGNhbGwgbXVzdCBiZSBvbmUgb2YgdGhlIHVzdWFsIHR5cGUgdGhhdCByZXR1cm5zIC0xIG9uIGVycm9yLiAgCiovCiNkZWZpbmUgQ0hLKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgaWYgKCAoZXhwcikgPT0gLTEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIiVzIChsaW5lICVkKTogU3lzdGVtIGNhbGwgRVJST1IgLSAlcy5cbiIsICAgXAogICAgICAgICAgICAgICAgICAgICAgIHBnbU5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICBfX0xJTkVfXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoIGVycm5vICkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgIGV4aXQoIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICB9ICAgLyogRW5kIElGIHN5c3RlbSBjYWxsIGZhaWxlZC4gKi8gICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgfSB3aGlsZSAoIGZhbHNlICkKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIEZ1bmN0aW9uOiBtYWluCioKKiBEZXNjcmlwdGlvbjoKKiAgICBTZXQgdXAgYSBQSVQgc2VydmVyIGFuZCBoYW5kbGUgbmV0d29yayByZXF1ZXN0cy4gIFRoaXMgc2VydmVyCiogICAgaGFuZGxlcyBib3RoIFRDUCBhbmQgVURQIHJlcXVlc3RzLgoqCiogUGFyYW1ldGVyczoKKiAgICBUaGUgdXN1YWwgYXJnYyBhbmQgYXJndiBwYXJhbWV0ZXJzIHRvIGEgbWFpbigpIGZ1bmN0aW9uLgoqCiogUmV0dXJuIFZhbHVlOgoqICAgIFRoaXMgaXMgYSBkYWVtb24gcHJvZ3JhbSBhbmQgbmV2ZXIgcmV0dXJucy4gIEhvd2V2ZXIsIGluIHRoZSBkZWdlbmVyYXRlCiogICAgY2FzZSB3aGVyZSBubyBzb2NrZXRzIGFyZSBjcmVhdGVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB6ZXJvLgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludCBtYWluKCBpbnQgICBhcmdjLAogICAgICAgICAgY2hhciAqYXJndlsgXSApCnsKICAgaW50ICAgICAgICAgb3B0OwogICBpbnQgICAgICAgICB0U2NrdFsgTUFYVENQU0NLVFMgXTsgICAgIC8qIEFycmF5IG9mIFRDUCBzb2NrZXQgZGVzY3JpcHRvcnMuICovCiAgIHNpemVfdCAgICAgIHRTY2t0U2l6ZSA9IE1BWFRDUFNDS1RTOyAgLyogU2l6ZSBvZiB1U2NrdCAoIyBvZiBlbGVtZW50cykuICAgKi8KICAgaW50ICAgICAgICAgdVNja3RbIE1BWFVEUFNDS1RTIF07ICAgICAvKiBBcnJheSBvZiBVRFAgc29ja2V0IGRlc2NyaXB0b3JzLiAqLwogICBzaXplX3QgICAgICB1U2NrdFNpemUgPSBNQVhVRFBTQ0tUUzsgIC8qIFNpemUgb2YgdVNja3QgKCMgb2YgZWxlbWVudHMpLiAgICovCgogICBzdHJjcHkoc2VydmljZV9uYW1lLERGTFRfU0VSVklDRSk7CiAgIC8qCiAgICoqIFNldCB0aGUgcHJvZ3JhbSBuYW1lICh3L28gZGlyZWN0b3J5IHByZWZpeCkuCiAgICovCiAgIHBnbU5hbWUgPSBzdHJyY2hyKCBhcmd2WyAwIF0sICcvJyApOwogICBwZ21OYW1lID0gcGdtTmFtZSA9PSBOVUxMICA/ICBhcmd2WyAwIF0gIDogIHBnbU5hbWUgKyAxOwogICAvKgogICAqKiBQcm9jZXNzIGNvbW1hbmQgb3B0aW9ucy4KICAgKi8KICAgb3B0ZXJyID0gMDsgICAvKiBUdXJucyBvZmYgImludmFsaWQgb3B0aW9uIiBlcnJvciBtZXNzYWdlcy4gKi8KICAgd2hpbGUgKCAoIG9wdCA9IGdldG9wdCggYXJnYywgYXJndiwgVkFMSURPUFRTICkgKSA+PSAwICkKICAgewogICAgICBzd2l0Y2ggKCBvcHQgKQogICAgICB7CiAgICAgICAgIGNhc2UgJ3YnOiAgIC8qIFZlcmJvc2UgbW9kZS4gKi8KICAgICAgICAgewogICAgICAgICAgICB2ZXJib3NlID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAncCc6ICAgLyogR2V0IHRoZSBwb3J0IG51bWJlciAqLwogICAgICAgICB7CiAgICAgICAgICAgIHN0cmNweShzZXJ2aWNlX25hbWUsb3B0YXJnKTsKCSAgICBuZWVkKys7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHsKICAgICAgICAgICAgVVNBR0U7CiAgICAgICAgIH0KICAgICAgfSAgLyogRW5kIFNXSVRDSCBvbiBjb21tYW5kIG9wdGlvbi4gKi8KICAgfSAgLyogRW5kIFdISUxFIHByb2Nlc3Npbmcgb3B0aW9ucy4gKi8KCiAgIGlmKG5lZWQgPCAxKQogICB7CglVU0FHRTsKCWV4aXQ7CiAgIH0KICAgLyoKICAgKiogT3BlbiBib3RoIGEgVENQIGFuZCBVRFAgc29ja2V0LCBmb3IgYm90aCBJUHY0ICYgSVB2Niwgb24gd2hpY2ggdG8gcmVjZWl2ZQogICAqKiBzZXJ2aWNlIHJlcXVlc3RzLgogICAqLwogICBpZiAoICggb3BlblNja3QoIHNlcnZpY2VfbmFtZSwgInRjcCIsIHRTY2t0LCAmdFNja3RTaXplICkgPCAwICkgfHwKICAgICAgICAoIG9wZW5TY2t0KCBzZXJ2aWNlX25hbWUsICJ1ZHAiLCB1U2NrdCwgJnVTY2t0U2l6ZSApIDwgMCApICkKICAgewogICAgICBleGl0KCAxICk7CiAgIH0KICAgLyoKICAgKiogUnVuIHRoZSBQcm9ncmFtbWFibGUgSW50ZXJkaW1lbnNpb25hbCBUaW1lciBzZXJ2ZXIuCiAgICovCiAgIGlmICggKCB0U2NrdFNpemUgPiAwICkgfHwgKCB1U2NrdFNpemUgPiAwICkgKQogICB7CiAgICAgIHBpdCggdFNja3QsICAgICAgICAgLyogcGl0KCkgbmV2ZXIgcmV0dXJucy4gKi8KICAgICAgICAgICB0U2NrdFNpemUsCiAgICAgICAgICAgdVNja3QsCiAgICAgICAgICAgdVNja3RTaXplICk7CiAgIH0KICAgLyoKICAgKiogU2luY2UgcGl0KCkgbmV2ZXIgcmV0dXJucywgZXhlY3V0aW9uIG9ubHkgZ2V0cyBoZXJlIGlmIG5vIHNvY2tldHMgd2VyZQogICAqKiBjcmVhdGVkLgogICAqLwogICBpZiAoIHZlcmJvc2UgKQogICB7CiAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgIiVzOiBObyBzb2NrZXRzIG9wZW5lZC4uLiB0ZXJtaW5hdGluZy5cbiIsCiAgICAgICAgICAgICAgIHBnbU5hbWUgKTsKICAgfQogICByZXR1cm4gMDsKfSAgLyogRW5kIG1haW4oKSAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogRnVuY3Rpb246IG9wZW5TY2t0CioKKiBEZXNjcmlwdGlvbjoKKiAgICBPcGVuIHBhc3NpdmUgKHNlcnZlcikgc29ja2V0cyBmb3IgdGhlIGluZGljYXRlZCBpbmV0IHNlcnZpY2UgJiBwcm90b2NvbC4KKiAgICBOb3RpY2UgaW4gdGhlIGxhc3Qgc2VudGVuY2UgdGhhdCAic29ja2V0cyIgaXMgcGx1cmFsLiAgRHVyaW5nIHRoZSBpbnRlcmltCiogICAgdHJhbnNpdGlvbiBwZXJpb2Qgd2hpbGUgZXZlcnlvbmUgaXMgc3dpdGNoaW5nIG92ZXIgdG8gSVB2NiwgdGhlIHNlcnZlcgoqICAgIGFwcGxpY2F0aW9uIGhhcyB0byBvcGVuIHR3byBzb2NrZXRzIG9uIHdoaWNoIHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMuLi4KKiAgICBvbmUgZm9yIElQdjQgdHJhZmZpYyBhbmQgb25lIGZvciBJUHY2IHRyYWZmaWMuCioKKiBQYXJhbWV0ZXJzOgoqICAgIHNlcnZpY2UgIC0gUG9pbnRlciB0byBhIGNoYXJhY3RlciBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB3ZWxsLWtub3duIHBvcnQKKiAgICAgICAgICAgICAgIG9uIHdoaWNoIHRvIGxpc3RlbiAoY2FuIGJlIGEgc2VydmljZSBuYW1lIG9yIGEgZGVjaW1hbCBudW1iZXIpLgoqICAgIHByb3RvY29sIC0gUG9pbnRlciB0byBhIGNoYXJhY3RlciBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0cmFuc3BvcnQgbGF5ZXIKKiAgICAgICAgICAgICAgIHByb3RvY29sIChvbmx5ICJ0Y3AiIG9yICJ1ZHAiIGFyZSB2YWxpZCkuCiogICAgZGVzYyAgICAgLSBQb2ludGVyIHRvIGFuIGFycmF5IGludG8gd2hpY2ggdGhlIHNvY2tldCBkZXNjcmlwdG9ycyBhcmUKKiAgICAgICAgICAgICAgIHBsYWNlZCB3aGVuIG9wZW5lZC4KKiAgICBkZXNjU2l6ZSAtIFRoaXMgaXMgYSB2YWx1ZS1yZXN1bHQgcGFyYW1ldGVyLiAgT24gaW5wdXQsIGl0IGNvbnRhaW5zIHRoZQoqICAgICAgICAgICAgICAgbWF4IG51bWJlciBvZiBkZXNjcmlwdG9ycyB0aGF0IGNhbiBiZSBwdXQgaW50byAnZGVzYycgKGkuZS4gdGhlCiogICAgICAgICAgICAgICBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5KS4gIFVwb24gcmV0dXJuLCBpdCB3aWxsIGNvbnRhaW4KKiAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvcnMgYWN0dWFsbHkgb3BlbmVkLiAgQW55IHVudXNlZCBzbG90cyBpbgoqICAgICAgICAgICAgICAgJ2Rlc2MnIGFyZSBzZXQgdG8gSU5WQUxJRF9ERVNDLgoqCiogUmV0dXJuIFZhbHVlOgoqICAgIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RhdGljIGludCBvcGVuU2NrdCggY29uc3QgY2hhciAqc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIGRlc2NbIF0sCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgKmRlc2NTaXplICkKewogICBzdHJ1Y3QgYWRkcmluZm8gKmFpOwogICBpbnQgICAgICAgICAgICAgIGFpRXJyOwogICBzdHJ1Y3QgYWRkcmluZm8gKmFpSGVhZDsKICAgc3RydWN0IGFkZHJpbmZvICBoaW50cyAgICA9IHsgLmFpX2ZsYWdzICA9IEFJX1BBU1NJVkUsICAgIC8qIFNlcnZlciBtb2RlLiAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFpX2ZhbWlseSA9IFBGX1VOU1BFQyB9OyAgIC8qIElQdjQgb3IgSVB2Ni4gKi8KICAgc2l6ZV90ICAgICAgICAgICBtYXhEZXNjcyA9ICpkZXNjU2l6ZTsKICAgLyoKICAgKiogSW5pdGlhbGl6ZSBvdXRwdXQgcGFyYW1ldGVycy4gIFdoZW4gdGhlIGxvb3AgY29tcGxldGVzLCAqZGVzY1NpemUgaXMgMC4KICAgKi8KICAgd2hpbGUgKCAqZGVzY1NpemUgPiAwICkKICAgewogICAgICBkZXNjWyAtLSggKmRlc2NTaXplICkgXSA9IElOVkFMSURfREVTQzsKICAgfQogICAvKgogICAqKiBDaGVjayB3aGljaCBwcm90b2NvbCBpcyBzZWxlY3RlZCAob25seSBUQ1AgYW5kIFVEUCBhcmUgdmFsaWQpLgogICAqLwogICBpZiAoIHN0cmNtcCggcHJvdG9jb2wsICJ0Y3AiICkgPT0gMCApICAgICAgICAvKiBUQ1AgcHJvdG9jb2wuICAgICAqLwogICB7CiAgICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CiAgICAgIGhpbnRzLmFpX3Byb3RvY29sID0gSVBQUk9UT19UQ1A7CiAgIH0KICAgZWxzZSBpZiAoIHN0cmNtcCggcHJvdG9jb2wsICJ1ZHAiICkgPT0gMCApICAgLyogVURQIHByb3RvY29sLiAgICAgKi8KICAgewogICAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfREdSQU07CiAgICAgIGhpbnRzLmFpX3Byb3RvY29sID0gSVBQUk9UT19VRFA7CiAgIH0KICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW52YWxpZCBwcm90b2NvbC4gKi8KICAgewogICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICIlcyAobGluZSAlZCk6IEVSUk9SIC0gVW5rbm93biB0cmFuc3BvcnQgIgogICAgICAgICAgICAgICAibGF5ZXIgcHJvdG9jb2wgXCIlc1wiLlxuIiwKICAgICAgICAgICAgICAgcGdtTmFtZSwKICAgICAgICAgICAgICAgX19MSU5FX18sCiAgICAgICAgICAgICAgIHByb3RvY29sICk7CiAgICAgIHJldHVybiAtMTsKICAgfQogICAvKgogICAqKiBMb29rIHVwIHRoZSBzZXJ2aWNlJ3MgIndlbGwta25vd24iIHBvcnQgbnVtYmVyLiAgTm90aWNlIHRoYXQgTlVMTCBpcyBiZWluZwogICAqKiBwYXNzZWQgZm9yIHRoZSAnbm9kZScgcGFyYW1ldGVyLCBhbmQgdGhhdCB0aGUgQUlfUEFTU0lWRSBmbGFnIGlzIHNldCBpbgogICAqKiAnaGludHMnLiAgVGh1cywgdGhlIHByb2dyYW0gaXMgcmVxdWVzdGluZyBwYXNzaXZlIGFkZHJlc3MgaW5mb3JtYXRpb24uCiAgICoqIFRoZSBuZXR3b3JrIGFkZHJlc3MgaXMgaW5pdGlhbGl6ZWQgdG8gOjogKGFsbCB6ZXJvcykgZm9yIElQdjYgcmVjb3Jkcywgb3IKICAgKiogMC4wLjAuMCBmb3IgSVB2NCByZWNvcmRzLgogICAqLwogICBpZiAoICggYWlFcnIgPSBnZXRhZGRyaW5mbyggTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGludHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWlIZWFkICkgKSAhPSAwICkKICAgewogICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICIlcyAobGluZSAlZCk6IEVSUk9SIC0gJXMuXG4iLAogICAgICAgICAgICAgICBwZ21OYW1lLAogICAgICAgICAgICAgICBfX0xJTkVfXywKICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKCBhaUVyciApICk7CiAgICAgIHJldHVybiAtMTsKICAgfQogICAvKgogICAqKiBGb3IgZWFjaCBvZiB0aGUgYWRkcmVzcyByZWNvcmRzIHJldHVybmVkLCBhdHRlbXB0IHRvIHNldCB1cCBhIHBhc3NpdmUKICAgKiogc29ja2V0LgogICAqLwogICBmb3IgKCBhaSA9IGFpSGVhZDsKICAgICAgICAgKCBhaSAhPSBOVUxMICkgJiYgKCAqZGVzY1NpemUgPCBtYXhEZXNjcyApOwogICAgICAgICBhaSA9IGFpLT5haV9uZXh0ICkKICAgewogICAgICBpZiAoIHZlcmJvc2UgKQogICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICoqIERpc3BsYXkgdGhlIGN1cnJlbnQgYWRkcmVzcyBpbmZvLiAgIFN0YXJ0IHdpdGggdGhlIHByb3RvY29sLQogICAgICAgICAqKiBpbmRlcGVuZGVudCBmaWVsZHMgZmlyc3QuCiAgICAgICAgICovCiAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgIlNldHRpbmcgdXAgYSBwYXNzaXZlIHNvY2tldCBiYXNlZCBvbiB0aGUgIgogICAgICAgICAgICAgICAgICAiZm9sbG93aW5nIGFkZHJlc3MgaW5mbzpcbiIKICAgICAgICAgICAgICAgICAgIiAgIGFpX2ZsYWdzICAgICA9IDB4JTAyWFxuIgogICAgICAgICAgICAgICAgICAiICAgYWlfZmFtaWx5ICAgID0gJWQgKFBGX0lORVQgPSAlZCwgUEZfSU5FVDYgPSAlZClcbiIKICAgICAgICAgICAgICAgICAgIiAgIGFpX3NvY2t0eXBlICA9ICVkIChTT0NLX1NUUkVBTSA9ICVkLCBTT0NLX0RHUkFNID0gJWQpXG4iCiAgICAgICAgICAgICAgICAgICIgICBhaV9wcm90b2NvbCAgPSAlZCAoSVBQUk9UT19UQ1AgPSAlZCwgSVBQUk9UT19VRFAgPSAlZClcbiIKICAgICAgICAgICAgICAgICAgIiAgIGFpX2FkZHJsZW4gICA9ICVkIChzb2NrYWRkcl9pbiA9ICVkLCAiCiAgICAgICAgICAgICAgICAgICJzb2NrYWRkcl9pbjYgPSAlZClcbiIsCiAgICAgICAgICAgICAgICAgIGFpLT5haV9mbGFncywKICAgICAgICAgICAgICAgICAgYWktPmFpX2ZhbWlseSwKICAgICAgICAgICAgICAgICAgUEZfSU5FVCwKICAgICAgICAgICAgICAgICAgUEZfSU5FVDYsCiAgICAgICAgICAgICAgICAgIGFpLT5haV9zb2NrdHlwZSwKICAgICAgICAgICAgICAgICAgU09DS19TVFJFQU0sCiAgICAgICAgICAgICAgICAgIFNPQ0tfREdSQU0sCiAgICAgICAgICAgICAgICAgIGFpLT5haV9wcm90b2NvbCwKICAgICAgICAgICAgICAgICAgSVBQUk9UT19UQ1AsCiAgICAgICAgICAgICAgICAgIElQUFJPVE9fVURQLAogICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkcmxlbiwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKSwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICkgKTsKICAgICAgICAgLyoKICAgICAgICAgKiogTm93IGRpc3BsYXkgdGhlIHByb3RvY29sLXNwZWNpZmljIGZvcm1hdHRlZCBzb2NrZXQgYWRkcmVzcy4gIE5vdGUKICAgICAgICAgKiogdGhhdCB0aGUgcHJvZ3JhbSBpcyByZXF1ZXN0aW5nIHRoYXQgZ2V0bmFtZWluZm8oMykgY29udmVydCB0aGUKICAgICAgICAgKiogaG9zdCAmIHNlcnZpY2UgaW50byBudW1lcmljIHN0cmluZ3MuCiAgICAgICAgICovCiAgICAgICAgIGdldG5hbWVpbmZvKCBhaS0+YWlfYWRkciwKICAgICAgICAgICAgICAgICAgICAgIGFpLT5haV9hZGRybGVuLAogICAgICAgICAgICAgICAgICAgICAgaG9zdEJmciwKICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggaG9zdEJmciApLAogICAgICAgICAgICAgICAgICAgICAgc2VydkJmciwKICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggc2VydkJmciApLAogICAgICAgICAgICAgICAgICAgICAgTklfTlVNRVJJQ0hPU1QgfCBOSV9OVU1FUklDU0VSViApOwogICAgICAgICBzd2l0Y2ggKCBhaS0+YWlfZmFtaWx5ICkKICAgICAgICAgewogICAgICAgICAgICBjYXNlIFBGX0lORVQ6ICAgLyogSVB2NCBhZGRyZXNzIHJlY29yZC4gKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnAgPSAoc3RydWN0IHNvY2thZGRyX2luKikgYWktPmFpX2FkZHI7CiAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFpX2FkZHIgICAgICA9IHNpbl9mYW1pbHk6ICAgJWQgKEFGX0lORVQgPSAlZCwgIgogICAgICAgICAgICAgICAgICAgICAgICAiQUZfSU5FVDYgPSAlZClcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgIHNpbl9hZGRyOiAgICAgJXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgIHNpbl9wb3J0OiAgICAgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHAtPnNpbl9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQsCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICBob3N0QmZyLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJ2QmZyICk7CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9ICAvKiBFbmQgQ0FTRSBvZiBJUHY0LiAqLwogICAgICAgICAgICBjYXNlIFBGX0lORVQ2OiAgIC8qIElQdjYgYWRkcmVzcyByZWNvcmQuICovCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqcCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42KikgYWktPmFpX2FkZHI7CiAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFpX2FkZHIgICAgICA9IHNpbjZfZmFtaWx5OiAgICVkIChBRl9JTkVUID0gJWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgIkFGX0lORVQ2ID0gJWQpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICBzaW42X2FkZHI6ICAgICAlc1xuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgc2luNl9wb3J0OiAgICAgJXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgIHNpbjZfZmxvd2luZm86ICVkXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICBzaW42X3Njb3BlX2lkOiAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgcC0+c2luNl9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQsCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICBob3N0QmZyLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJ2QmZyLAogICAgICAgICAgICAgICAgICAgICAgICBwLT5zaW42X2Zsb3dpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICBwLT5zaW42X3Njb3BlX2lkICk7CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9ICAvKiBFbmQgQ0FTRSBvZiBJUHY2LiAqLwogICAgICAgICAgICBkZWZhdWx0OiAgIC8qIENhbiBuZXZlciBnZXQgaGVyZSwgYnV0IGp1c3QgZm9yIGNvbXBsZXRlbmVzcy4gKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICIlcyAobGluZSAlZCk6IEVSUk9SIC0gVW5rbm93biBwcm90b2NvbCBmYW1pbHkgKCVkKS5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBnbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fTElORV9fLAogICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfZmFtaWx5ICk7CiAgICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyggYWlIZWFkICk7CiAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgfSAgLyogRW5kIERFRkFVTFQgY2FzZSAodW5rbm93biBwcm90b2NvbCBmYW1pbHkpLiAqLwogICAgICAgICB9ICAvKiBFbmQgU1dJVENIIG9uIHByb3RvY29sIGZhbWlseS4gKi8KICAgICAgfSAgLyogRW5kIElGIHZlcmJvc2UgbW9kZS4gKi8KICAgICAgLyoKICAgICAgKiogQ3JlYXRlIGEgc29ja2V0IHVzaW5nIHRoZSBpbmZvIGluIHRoZSBhZGRyaW5mbyBzdHJ1Y3R1cmUuCiAgICAgICovCiAgICAgIENISyggZGVzY1sgKmRlc2NTaXplIF0gPSBzb2NrZXQoIGFpLT5haV9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpLT5haV9zb2NrdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX3Byb3RvY29sICkgKTsKICAgICAgLyoKICAgICAgKiogSGVyZSBpcyB0aGUgY29kZSB0aGF0IHByZXZlbnRzICJJUHY0IG1hcHBlZCBhZGRyZXNzZXMiLCBhcyBkaXNjdXNzZWQKICAgICAgKiogaW4gU2VjdGlvbiAyMi4xLjMuMS4gIElmIGFuIElQdjYgc29ja2V0IHdhcyBqdXN0IGNyZWF0ZWQsIHRoZW4gc2V0IHRoZQogICAgICAqKiBJUFY2X1Y2T05MWSBzb2NrZXQgb3B0aW9uLgogICAgICAqLwogICAgICBpZiAoIGFpLT5haV9mYW1pbHkgPT0gUEZfSU5FVDYgKQogICAgICB7CiNpZiBkZWZpbmVkKCBJUFY2X1Y2T05MWSApCiAgICAgICAgIC8qCiAgICAgICAgICoqIERpc2FibGUgSVB2NCBtYXBwZWQgYWRkcmVzc2VzLgogICAgICAgICAqLwogICAgICAgICBpbnQgdjZPbmx5ID0gMTsKICAgICAgICAgQ0hLKCBzZXRzb2Nrb3B0KCBkZXNjWyAqZGVzY1NpemUgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBJUFBST1RPX0lQVjYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSVBWNl9WNk9OTFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJnY2T25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHY2T25seSApICkgKTsKI2Vsc2UKICAgICAgICAgLyoKICAgICAgICAgKiogSVBWNl9WNk9OTFkgaXMgbm90IGRlZmluZWQsIHNvIHRoZSBzb2NrZXQgb3B0aW9uIGNhbid0IGJlIHNldCBhbmQKICAgICAgICAgKiogdGh1cyBJUHY0IG1hcHBlZCBhZGRyZXNzZXMgY2FuJ3QgYmUgZGlzYWJsZWQuICBQcmludCBhIHdhcm5pbmcKICAgICAgICAgKiogbWVzc2FnZSBhbmQgY2xvc2UgdGhlIHNvY2tldC4gIERlc2lnbiBub3RlOiBJZiB0aGUKICAgICAgICAgKiogI2lmLi4uI2Vsc2UuLi4jZW5kaWYgY29uc3RydWN0IHdlcmUgcmVtb3ZlZCwgdGhlbiB0aGlzIHByb2dyYW0KICAgICAgICAgKiogd291bGQgbm90IGNvbXBpbGUgKGJlY2F1c2UgSVBWNl9WNk9OTFkgaXNuJ3QgZGVmaW5lZCkuICBUaGF0J3MgYW4KICAgICAgICAgKiogYWNjZXB0YWJsZSBhcHByb2FjaDsgSVB2NCBtYXBwZWQgYWRkcmVzc2VzIGFyZSBjZXJ0YWlubHkgZGlzYWJsZWQKICAgICAgICAgKiogaWYgdGhlIHByb2dyYW0gY2FuJ3QgYnVpbGQhICBIb3dldmVyLCBzaW5jZSB0aGlzIHByb2dyYW0gaXMgYWxzbwogICAgICAgICAqKiBkZXNpZ25lZCB0byB3b3JrIGZvciBJUHY0IHNvY2tldHMgYXMgd2VsbCBhcyBJUHY2LCBJIGRlY2lkZWQgdG8KICAgICAgICAgKiogYWxsb3cgdGhlIHByb2dyYW0gdG8gY29tcGlsZSB3aGVuIElQVjZfVjZPTkxZIGlzIG5vdCBkZWZpbmVkLCBhbmQKICAgICAgICAgKiogdHVybiBpdCBpbnRvIGEgcnVuLXRpbWUgd2FybmluZyByYXRoZXIgdGhhbiBhIGNvbXBpbGUtdGltZSBlcnJvci4KICAgICAgICAgKiogSVB2NCBtYXBwZWQgYWRkcmVzc2VzIGFyZSBzdGlsbCBkaXNhYmxlZCBiZWNhdXNlIF9hbGxfIElQdjYgdHJhZmZpYwogICAgICAgICAqKiBpcyBkaXNhYmxlZCAoYWxsIElQdjYgc29ja2V0cyBhcmUgY2xvc2VkIGhlcmUpLCBidXQgYXQgbGVhc3QgdGhpcwogICAgICAgICAqKiB3YXkgdGhlIHNlcnZlciBjYW4gc3RpbGwgc2VydmljZSBJUHY0IG5ldHdvcmsgdHJhZmZpYy4KICAgICAgICAgKi8KICAgICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICAiJXMgKGxpbmUgJWQpOiBXQVJOSU5HIC0gQ2Fubm90IHNldCBJUFY2X1Y2T05MWSBzb2NrZXQgIgogICAgICAgICAgICAgICAgICAib3B0aW9uLiAgQ2xvc2luZyBJUHY2ICVzIHNvY2tldC5cbiIsCiAgICAgICAgICAgICAgICAgIHBnbU5hbWUsCiAgICAgICAgICAgICAgICAgIF9fTElORV9fLAogICAgICAgICAgICAgICAgICBhaS0+YWlfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgID8gICJUQ1AiICA6ICAiVURQIiApOwogICAgICAgICBDSEsoIGNsb3NlKCBkZXNjWyAqZGVzY1NpemUgXSApICk7CiAgICAgICAgIGNvbnRpbnVlOyAgIC8qIEdvIHRvIHRvcCBvZiBGT1IgbG9vcCB3L28gdXBkYXRpbmcgKmRlc2NTaXplISAqLwojZW5kaWYgLyogSVBWNl9WNk9OTFkgKi8KICAgICAgfSAgLyogRW5kIElGIHRoaXMgaXMgYW4gSVB2NiBzb2NrZXQuICovCiAgICAgIC8qCiAgICAgICoqIEJpbmQgdGhlIHNvY2tldC4gIEFnYWluLCB0aGUgaW5mbyBmcm9tIHRoZSBhZGRyaW5mbyBzdHJ1Y3R1cmUgaXMgdXNlZC4KICAgICAgKi8KICAgICAgQ0hLKCBiaW5kKCBkZXNjWyAqZGVzY1NpemUgXSwKICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkciwKICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkcmxlbiApICk7CiAgICAgIC8qCiAgICAgICoqIElmIHRoaXMgaXMgYSBUQ1Agc29ja2V0LCBwdXQgdGhlIHNvY2tldCBpbnRvIHBhc3NpdmUgbGlzdGVuaW5nIG1vZGUKICAgICAgKiogKGxpc3RlbiBpcyBvbmx5IHZhbGlkIG9uIGNvbm5lY3Rpb24tb3JpZW50ZWQgc29ja2V0cykuCiAgICAgICovCiAgICAgIGlmICggYWktPmFpX3NvY2t0eXBlID09IFNPQ0tfU1RSRUFNICkKICAgICAgewogICAgICAgICBDSEsoIGxpc3RlbiggZGVzY1sgKmRlc2NTaXplIF0sCiAgICAgICAgICAgICAgICAgICAgICBNQVhDT05OUUxFTiApICk7CiAgICAgIH0KICAgICAgLyoKICAgICAgKiogU29ja2V0IHNldCB1cCBva2F5LiAgQnVtcCBpbmRleCB0byBuZXh0IGRlc2NyaXB0b3IgYXJyYXkgZWxlbWVudC4KICAgICAgKi8KICAgICAgKmRlc2NTaXplICs9IDE7CiAgIH0gIC8qIEVuZCBGT1IgZWFjaCBhZGRyZXNzIGluZm8gc3RydWN0dXJlIHJldHVybmVkLiAqLwogICAvKgogICAqKiBEdW1teSBjaGVjayBmb3IgdW51c2VkIGFkZHJlc3MgcmVjb3Jkcy4KICAgKi8KICAgaWYgKCB2ZXJib3NlICYmICggYWkgIT0gTlVMTCApICkKICAgewogICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICIlcyAobGluZSAlZCk6IFdBUk5JTkcgLSBTb21lIGFkZHJlc3MgcmVjb3JkcyB3ZXJlICIKICAgICAgICAgICAgICAgIm5vdCBwcm9jZXNzZWQgZHVlIHRvIGluc3VmZmljaWVudCBhcnJheSBzcGFjZS5cbiIsCiAgICAgICAgICAgICAgIHBnbU5hbWUsCiAgICAgICAgICAgICAgIF9fTElORV9fICk7CiAgIH0gIC8qIEVuZCBJRiB2ZXJib3NlIGFuZCBzb21lIGFkZHJlc3MgcmVjb3JkcyByZW1haW4gdW5wcm9jZXNzZWQuICovCiAgIC8qCiAgICoqIENsZWFuIHVwLgogICAqLwogICBmcmVlYWRkcmluZm8oIGFpSGVhZCApOwogICByZXR1cm4gMDsKfSAgLyogRW5kIG9wZW5TY2t0KCkgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIEZ1bmN0aW9uOiBwaXQKKgoqIERlc2NyaXB0aW9uOgoqICAgIExpc3RlbiBvbiBhIHNldCBvZiBzb2NrZXRzIGFuZCBzZW5kIHRoZSBjdXJyZW50IG1pY3Jvc2Vjb25kIGNvdW50ZXIKKiAgICB0aGF0IHdhcyBwcm9kdWNlZCBieSBnZXR0aW1lb2ZkYXkoKSwgdG8gYW55IGNsaWVudHMuICBUaGlzIGZ1bmN0aW9uIAoqICAgIG5ldmVyIHJldHVybnMuCioKKiBQYXJhbWV0ZXJzOgoqICAgIHRTY2t0ICAgICAtIEFycmF5IG9mIFRDUCBzb2NrZXQgZGVzY3JpcHRvcnMgb24gd2hpY2ggdG8gbGlzdGVuLgoqICAgIHRTY2t0U2l6ZSAtIFNpemUgb2YgdGhlIHRTY2t0IGFycmF5IChuYnIgb2YgZWxlbWVudHMpLgoqICAgIHVTY2t0ICAgICAtIEFycmF5IG9mIFVEUCBzb2NrZXQgZGVzY3JpcHRvcnMgb24gd2hpY2ggdG8gbGlzdGVuLgoqICAgIHVTY2t0U2l6ZSAtIFNpemUgb2YgdGhlIHVTY2t0IGFycmF5IChuYnIgb2YgZWxlbWVudHMpLgoqCiogUmV0dXJuIFZhbHVlOiBOb25lLgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0YXRpYyB2b2lkIHBpdCggaW50ICAgIHRTY2t0WyBdLAogICAgICAgICAgICAgICAgIHNpemVfdCB0U2NrdFNpemUsCiAgICAgICAgICAgICAgICAgaW50ICAgIHVTY2t0WyBdLAogICAgICAgICAgICAgICAgIHNpemVfdCB1U2NrdFNpemUgKQp7CiAgIGNoYXIgICAgICAgICAgICAgICAgICAgICBiZnJbIDI1NiBdOwogICBzc2l6ZV90ICAgICAgICAgICAgICAgICAgY291bnQ7CiAgIHN0cnVjdCBwb2xsZmQgICAgICAgICAgICpkZXNjOwogICBzaXplX3QgICAgICAgICAgICAgICAgICAgZGVzY1NpemUgPSB0U2NrdFNpemUgKyB1U2NrdFNpemU7CiAgIGludCAgICAgICAgICAgICAgICAgICAgICBpZHg7CiAgIGludCAgICAgICAgICAgICAgICAgICAgICBuZXdTY2t0OwogICBzdHJ1Y3Qgc29ja2FkZHIgICAgICAgICAqc2FkcjsKICAgc29ja2xlbl90ICAgICAgICAgICAgICAgIHNhZHJMZW47CiAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICBzb2NrU3RvcjsKICAgaW50ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgIHRpbWVMZW47CiAgIHRpbWVfdCAgICAgICAgICAgICAgICAgICB0aW1lVmFsOwogICBzc2l6ZV90ICAgICAgICAgICAgICAgICAgd0J5dGVzOwogICB1bnNpZ25lZCBsb25nIGxvbmcJICAgIHNlY3M7CiAgIGludCAJICAgIAkJICAgIHJldDsKICAgLyoKICAgKiogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcG9sbCgyKSBhcnJheS4KICAgKi8KICAgZGVzYyA9IG1hbGxvYyggZGVzY1NpemUgKiBzaXplb2YoIHN0cnVjdCBwb2xsZmQgKSApOwogICBpZiAoIGRlc2MgPT0gTlVMTCApCiAgIHsKICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAiJXMgKGxpbmUgJWQpOiBFUlJPUiAtICVzLlxuIiwKICAgICAgICAgICAgICAgcGdtTmFtZSwKICAgICAgICAgICAgICAgX19MSU5FX18sCiAgICAgICAgICAgICAgIHN0cmVycm9yKCBFTk9NRU0gKSApOwogICAgICBleGl0KCAxICk7CiAgIH0KICAgLyoKICAgKiogSW5pdGlhbGl6ZSB0aGUgcG9sbCgyKSBhcnJheS4KICAgKi8KICAgZm9yICggaWR4ID0gMDsgICAgIGlkeCA8IGRlc2NTaXplOyAgICAgaWR4KysgKQogICB7CiAgICAgIGRlc2NbIGlkeCBdLmZkICAgICAgPSBpZHggPCB0U2NrdFNpemUgID8gIHRTY2t0WyBpZHggXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICB1U2NrdFsgaWR4IC0gdFNja3RTaXplIF07CiAgICAgIGRlc2NbIGlkeCBdLmV2ZW50cyAgPSBQT0xMSU47CiAgICAgIGRlc2NbIGlkeCBdLnJldmVudHMgPSAwOwogICB9CiAgIC8qCiAgICoqIE1haW4gUElUIHNlcnZlciBsb29wLiAgSGFuZGxlcyBib3RoIFRDUCAmIFVEUCByZXF1ZXN0cy4gIFRoaXMgaXMKICAgKiogYW4gaW50ZXJhdGl2ZSBzZXJ2ZXIsIGFuZCBhbGwgcmVxdWVzdHMgYXJlIGhhbmRsZWQgZGlyZWN0bHkgd2l0aGluIHRoZQogICAqKiBtYWluIGxvb3AuCiAgICovCiAgIHdoaWxlICggdHJ1ZSApICAgLyogRG8gZm9yZXZlci4gKi8KICAgewogICAgICAvKgogICAgICAqKiBXYWl0IGZvciBhY3Rpdml0eSBvbiBvbmUgb2YgdGhlIHNvY2tldHMuICBUaGUgRE8uLldISUxFIGNvbnN0cnVjdCBpcwogICAgICAqKiB1c2VkIHRvIHJlc3RhcnQgdGhlIHN5c3RlbSBjYWxsIGluIHRoZSBldmVudCB0aGUgcHJvY2VzcyBpcwogICAgICAqKiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KICAgICAgKi8KICAgICAgZG8KICAgICAgewogICAgICAgICBzdGF0dXMgPSBwb2xsKCBkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICBkZXNjU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgLTEgLyogV2FpdCBpbmRlZmluaXRlbHkgZm9yIGlucHV0LiAqLyApOwogICAgICB9IHdoaWxlICggKCBzdGF0dXMgPCAwICkgJiYgKCBlcnJubyA9PSBFSU5UUiApICk7CiAgICAgIENISyggc3RhdHVzICk7ICAgLyogQ2hlY2sgZm9yIGEgYm9uYSBmaWRlIHN5c3RlbSBjYWxsIGVycm9yLiAqLwogICAgICAvKgogICAgICAqKiBHZXQgdGhlIGN1cnJlbnQgdGltZS4KICAgICAgKi8KI2lmIGRlZmluZWQoV2luZG93cykKICAgTEFSR0VfSU5URUdFUiBmcmVxLGNvdW50ZXI7CiAgIGRvdWJsZSB3aW50aW1lLGJpZ2NvdW50ZXI7CiAgIC8qIEZvciBXaW5kb3dzIHRoZSB0aW1lX29mX2RheSgpIGlzIHVzZWxlc3MuIEl0IGluY3JlbWVudHMgaW4gNTUgbWlsbGkgCiAgICAqIHNlY29uZCBpbmNyZW1lbnRzLiBCeSB1c2luZyB0aGUgV2luMzJhcGkgb25lIGNhbiBnZXQgYWNjZXNzIHRvIHRoZSAKICAgICogaGlnaCBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBpbnRlcmZhY2VzLiBXaXRoIHRoaXMgb25lIGNhbiBnZXQgYmFjayAKICAgICogaW50byB0aGUgOCB0byA5IG1pY3Jvc2Vjb25kIHJlc29sdXRpb24uCiAgICAqLwogICAgICBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxKTsKICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJmNvdW50ZXIpOwogICAgICBiaWdjb3VudGVyPShkb3VibGUpY291bnRlci5IaWdoUGFydCAqKGRvdWJsZSkweGZmZmZmZmZmICsKICAgICAgICAgICAgICAoZG91YmxlKWNvdW50ZXIuTG93UGFydDsKICAgICAgd2ludGltZSA9IChkb3VibGUpKGJpZ2NvdW50ZXIvKGRvdWJsZSlmcmVxLkxvd1BhcnQpOwogICAgICBzZWNzID0gKGxvbmcgbG9uZykod2ludGltZSAqIDEwMDAwMDApOwojZWxzZQogICAgICByZXQgPSBnZXR0aW1lb2ZkYXkoICZ0bSwwICk7CiAgICAgIHNlY3MgPSAoKHVuc2lnbmVkIGxvbmcgbG9uZyl0bS50dl9zZWMgKiAxMDAwMDAwKSAKCQkrICh1bnNpZ25lZCBsb25nIGxvbmcpdG0udHZfdXNlYzsKI2VuZGlmCgogICAgICByZXQgPSBzcHJpbnRmKHRpbWVTdHIsIiVsbGQiLHNlY3MpOwogICAgICB0aW1lTGVuID0gc3RybGVuKCB0aW1lU3RyICk7CiAgICAgIC8qCiAgICAgICoqIFByb2Nlc3Mgc29ja2V0cyB3aXRoIGlucHV0IGF2YWlsYWJsZS4KICAgICAgKi8KICAgICAgZm9yICggaWR4ID0gMDsgICAgIGlkeCA8IGRlc2NTaXplOyAgICAgaWR4KysgKQogICAgICB7CiAgICAgICAgIHN3aXRjaCAoIGRlc2NbIGlkeCBdLnJldmVudHMgKQogICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgMDogICAgICAgIC8qIE5vIGFjdGl2aXR5IG9uIHRoaXMgc29ja2V0OyB0cnkgdGhlIG5leHQuICovCiAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIFBPTExJTjogICAvKiBOZXR3b3JrIGFjdGl2aXR5LiAgR28gcHJvY2VzcyBpdC4gICAgICAgICAqLwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDogICAgICAgLyogSW52YWxpZCBwb2xsIGV2ZW50cy4gICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgewogICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICIlcyAobGluZSAlZCk6IEVSUk9SIC0gSW52YWxpZCBwb2xsIGV2ZW50ICgweCUwMlgpLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGdtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19MSU5FX18sCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NbIGlkeCBdLnJldmVudHMgKTsKICAgICAgICAgICAgICAgZXhpdCggMSApOwogICAgICAgICAgICB9CiAgICAgICAgIH0gIC8qIEVuZCBTV0lUQ0ggb24gcmV0dXJuZWQgcG9sbCBldmVudHMuICovCiAgICAgICAgIC8qCiAgICAgICAgICoqIERldGVybWluZSBpZiB0aGlzIGlzIGEgVENQIHJlcXVlc3Qgb3IgVURQIHJlcXVlc3QuCiAgICAgICAgICovCiAgICAgICAgIGlmICggaWR4IDwgdFNja3RTaXplICkKICAgICAgICAgewogICAgICAgICAgICAvKgogICAgICAgICAgICAqKiBUQ1AgY29ubmVjdGlvbiByZXF1ZXN0ZWQuICBBY2NlcHQgaXQuICBOb3RpY2UgdGhlIHVzZSBvZgogICAgICAgICAgICAqKiB0aGUgc29ja2FkZHJfc3RvcmFnZSBkYXRhIHR5cGUuCiAgICAgICAgICAgICovCiAgICAgICAgICAgIHNhZHJMZW4gPSBzaXplb2YoIHNvY2tTdG9yICk7CiAgICAgICAgICAgIHNhZHIgICAgPSAoc3RydWN0IHNvY2thZGRyKikgJnNvY2tTdG9yOwogICAgICAgICAgICBDSEsoIG5ld1Nja3QgPSBhY2NlcHQoIGRlc2NbIGlkeCBdLmZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNhZHJMZW4gKSApOwogICAgICAgICAgICBDSEsoIHNodXRkb3duKCBuZXdTY2t0LCAgICAgICAvKiBTZXJ2ZXIgbmV2ZXIgcmVjdidzIGFueXRoaW5nLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICBTSFVUX1JEICkgKTsKICAgICAgICAgICAgaWYgKCB2ZXJib3NlICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAqKiBEaXNwbGF5IHRoZSBzb2NrZXQgYWRkcmVzcyBvZiB0aGUgcmVtb3RlIGNsaWVudC4gIEJlZ2luIHdpdGgKICAgICAgICAgICAgICAgKiogdGhlIGFkZHJlc3MtaW5kZXBlbmRlbnQgZmllbGRzLgogICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICJTb2NrYWRkciBpbmZvIGZvciBuZXcgVENQIGNsaWVudDpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIHNhX2ZhbWlseSA9ICVkIChBRl9JTkVUID0gJWQsIEFGX0lORVQ2ID0gJWQpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICBhZGRyIGxlbiAgPSAlZCAoc29ja2FkZHJfaW4gPSAlZCwgIgogICAgICAgICAgICAgICAgICAgICAgICAic29ja2FkZHJfaW42ID0gJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBzYWRyLT5zYV9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQsCiAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICBzYWRyTGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHN0cnVjdCBzb2NrYWRkcl9pbiApLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHN0cnVjdCBzb2NrYWRkcl9pbjYgKSApOwogICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAqKiBEaXNwbGF5IHRoZSBhZGRyZXNzLXNwZWNpZmljIGZpZWxkcy4KICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgZ2V0bmFtZWluZm8oIHNhZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWRyTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdEJmciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggaG9zdEJmciApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydkJmciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggc2VydkJmciApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklfTlVNRVJJQ0hPU1QgfCBOSV9OVU1FUklDU0VSViApOwogICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAqKiBOb3RpY2UgdGhhdCB3ZSdyZSBzd2l0Y2hpbmcgb24gYW4gYWRkcmVzcyBmYW1pbHkgbm93LCBub3QgYQogICAgICAgICAgICAgICAqKiBwcm90b2NvbCBmYW1pbHkuCiAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgIHN3aXRjaCAoIHNhZHItPnNhX2ZhbWlseSApCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY2FzZSBBRl9JTkVUOiAgIC8qIElQdjQgYWRkcmVzcy4gKi8KICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnAgPSAoc3RydWN0IHNvY2thZGRyX2luKikgc2FkcjsKICAgICAgICAgICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgc2luX2FkZHIgID0gc2luX2ZhbWlseTogJWRcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIHNpbl9hZGRyOiAgICVzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICBzaW5fcG9ydDogICAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+c2luX2ZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdEJmciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydkJmciApOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfSAgLyogRW5kIENBU0Ugb2YgSVB2NC4gKi8KICAgICAgICAgICAgICAgICAgY2FzZSBBRl9JTkVUNjogICAvKiBJUHY2IGFkZHJlc3MuICovCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqcCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42Kikgc2FkcjsKICAgICAgICAgICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgc2luNl9hZGRyID0gc2luNl9mYW1pbHk6ICAgJWRcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIHNpbjZfYWRkcjogICAgICVzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICBzaW42X3BvcnQ6ICAgICAlc1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgc2luNl9mbG93aW5mbzogJWRcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIHNpbjZfc2NvcGVfaWQ6ICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5zaW42X2ZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdEJmciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydkJmciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+c2luNl9mbG93aW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+c2luNl9zY29wZV9pZCApOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfSAgLyogRW5kIENBU0Ugb2YgSVB2Ni4gKi8KICAgICAgICAgICAgICAgICAgZGVmYXVsdDogICAvKiBDYW4gbmV2ZXIgZ2V0IGhlcmUsIGJ1dCBmb3IgY29tcGxldGVuZXNzLiAqLwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIChsaW5lICVkKTogRVJST1IgLSBVbmtub3duIGFkZHJlc3MgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFtaWx5ICglZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ21OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0xJTkVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fkci0+c2FfZmFtaWx5ICk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9ICAvKiBFbmQgREVGQVVMVCBjYXNlICh1bmtub3duIGFkZHJlc3MgZmFtaWx5KS4gKi8KICAgICAgICAgICAgICAgfSAgLyogRW5kIFNXSVRDSCBvbiBhZGRyZXNzIGZhbWlseS4gKi8KICAgICAgICAgICAgfSAgLyogRW5kIElGIHZlcmJvc2UgbW9kZS4gKi8KICAgICAgICAgICAgLyoKICAgICAgICAgICAgKiogU2VuZCB0aGUgUElUIHRvIHRoZSBjbGllbnQuCiAgICAgICAgICAgICovCiAgICAgICAgICAgIHdCeXRlcyA9IHRpbWVMZW47CiAgICAgICAgICAgIHdoaWxlICggd0J5dGVzID4gMCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjb3VudCA9IHdyaXRlKCBuZXdTY2t0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Qnl0ZXMgKTsKICAgICAgICAgICAgICAgfSB3aGlsZSAoICggY291bnQgPCAwICkgJiYgKCBlcnJubyA9PSBFSU5UUiApICk7CiAgICAgICAgICAgICAgIENISyggY291bnQgKTsgICAvKiBDaGVjayBmb3IgYW4gZXJyb3IuICovCiAgICAgICAgICAgICAgIHdCeXRlcyAtPSBjb3VudDsKICAgICAgICAgICAgfSAgLyogRW5kIFdISUxFIHRoZXJlIGlzIGRhdGEgdG8gc2VuZC4gKi8KICAgICAgICAgICAgQ0hLKCBjbG9zZSggbmV3U2NrdCApICk7CiAgICAgICAgIH0gIC8qIEVuZCBJRiB0aGlzIHdhcyBhIFRDUCBjb25uZWN0aW9uIHJlcXVlc3QuICovCiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAvKgogICAgICAgICAgICAqKiBUaGlzIGlzIGEgVURQIHNvY2tldCwgYW5kIGEgZGF0YWdyYW0gaXMgYXZhaWxhYmxlLiAgVGhlIGZ1bm55CiAgICAgICAgICAgICoqIHRoaW5nIGFib3V0IFVEUCByZXF1ZXN0cyBpcyB0aGF0IHRoaXMgc2VydmVyIGRvZXNuJ3QgcmVxdWlyZSBhbnkKICAgICAgICAgICAgKiogY2xpZW50IGlucHV0OyBidXQgaXQgY2FuJ3Qgc2VuZCB0aGUgUElUIHVubGVzcyBpdCBrbm93cyBhIGNsaWVudAogICAgICAgICAgICAqKiB3YW50cyB0aGUgZGF0YSwgYW5kIHRoZSBvbmx5IHdheSB0aGF0IGNhbiBvY2N1ciB3aXRoIFVEUCBpcyBpZgogICAgICAgICAgICAqKiB0aGUgc2VydmVyIHJlY2VpdmVzIGEgZGF0YWdyYW0gZnJvbSB0aGUgY2xpZW50LiAgVGh1cywgdGhlCiAgICAgICAgICAgICoqIHNlcnZlciBtdXN0IHJlY2VpdmUgX3NvbWV0aGluZ18sIGJ1dCB0aGUgY29udGVudCBvZiB0aGUgZGF0YWdyYW0KICAgICAgICAgICAgKiogaXMgaXJyZWxldmFudC4gIFJlYWQgaW4gdGhlIGRhdGFncmFtLiAgQWdhaW4gbm90ZSB0aGUgdXNlIG9mCiAgICAgICAgICAgICoqIHNvY2thZGRyX3N0b3JhZ2UgdG8gcmVjZWl2ZSB0aGUgYWRkcmVzcy4KICAgICAgICAgICAgKi8KICAgICAgICAgICAgc2FkckxlbiA9IHNpemVvZiggc29ja1N0b3IgKTsKICAgICAgICAgICAgc2FkciAgICA9IChzdHJ1Y3Qgc29ja2FkZHIqKSAmc29ja1N0b3I7CiAgICAgICAgICAgIENISyggY291bnQgPSByZWN2ZnJvbSggZGVzY1sgaWR4IF0uZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggYmZyICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzYWRyTGVuICkgKTsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgKiogRGlzcGxheSB3aGF0ZXZlciB3YXMgcmVjZWl2ZWQgb24gc3Rkb3V0LgogICAgICAgICAgICAqLwogICAgICAgICAgICBpZiAoIHZlcmJvc2UgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHNzaXplX3QgckJ5dGVzID0gY291bnQ7CiAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBVRFAgZGF0YWdyYW0gcmVjZWl2ZWQgKCVkIGJ5dGVzKS5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBnbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICk7CiAgICAgICAgICAgICAgIHdoaWxlICggY291bnQgPiAwICkKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBmcHV0YyggYmZyWyByQnl0ZXMgLSBjb3VudC0tIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQgKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoIGJmclsgckJ5dGVzLTEgXSAhPSAnXG4nICkKICAgICAgICAgICAgICAgICAgZnB1dGMoICdcbicsIHN0ZG91dCApOyAgIC8qIE5ld2xpbmUgYWxzbyBmbHVzaGVzIHN0ZG91dC4gKi8KICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgKiogRGlzcGxheSB0aGUgc29ja2V0IGFkZHJlc3Mgb2YgdGhlIHJlbW90ZSBjbGllbnQuICBBZGRyZXNzLQogICAgICAgICAgICAgICAqKiBpbmRlcGVuZGVudCBmaWVsZHMgZmlyc3QuCiAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZSBjbGllbnQncyBzb2NrYWRkciBpbmZvOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgc2FfZmFtaWx5ID0gJWQgKEFGX0lORVQgPSAlZCwgQUZfSU5FVDYgPSAlZClcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFkZHIgbGVuICA9ICVkIChzb2NrYWRkcl9pbiA9ICVkLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrYWRkcl9pbjYgPSAlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNhZHItPnNhX2ZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVCwKICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVDYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNhZHJMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggc3RydWN0IHNvY2thZGRyX2luICksCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggc3RydWN0IHNvY2thZGRyX2luNiApICk7CiAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICoqIERpc3BsYXkgdGhlIGFkZHJlc3Mtc3BlY2lmaWMgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgIGdldG5hbWVpbmZvKCBzYWRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FkckxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RCZnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIGhvc3RCZnIgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZCZnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHNlcnZCZnIgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JX05VTUVSSUNIT1NUIHwgTklfTlVNRVJJQ1NFUlYgKTsKICAgICAgICAgICAgICAgc3dpdGNoICggc2Fkci0+c2FfZmFtaWx5ICkKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjYXNlIEFGX0lORVQ6ICAgLyogSVB2NCBhZGRyZXNzLiAqLwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4qKSBzYWRyOwogICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBzaW5fYWRkciAgPSBzaW5fZmFtaWx5OiAlZFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgc2luX2FkZHI6ICAgJXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIHNpbl9wb3J0OiAgICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5zaW5fZmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0QmZyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2QmZyICk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9ICAvKiBFbmQgQ0FTRSBvZiBJUHY0IGFkZHJlc3MuICovCiAgICAgICAgICAgICAgICAgIGNhc2UgQUZfSU5FVDY6ICAgLyogSVB2NiBhZGRyZXNzLiAqLwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnAgPSAoc3RydWN0IHNvY2thZGRyX2luNiopIHNhZHI7CiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIHNpbjZfYWRkciA9IHNpbjZfZmFtaWx5OiAgICVkXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICBzaW42X2FkZHI6ICAgICAlc1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgc2luNl9wb3J0OiAgICAgJXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIHNpbjZfZmxvd2luZm86ICVkXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICBzaW42X3Njb3BlX2lkOiAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+c2luNl9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RCZnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZCZnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnNpbjZfZmxvd2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnNpbjZfc2NvcGVfaWQgKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0gIC8qIEVuZCBDQVNFIG9mIElQdjYgYWRkcmVzcy4gKi8KICAgICAgICAgICAgICAgICAgZGVmYXVsdDogICAvKiBDYW4gbmV2ZXIgZ2V0IGhlcmUsIGJ1dCBmb3IgY29tcGxldGVuZXNzLiAqLwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIChsaW5lICVkKTogRVJST1IgLSBVbmtub3duIGFkZHJlc3MgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFtaWx5ICglZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ21OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0xJTkVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fkci0+c2FfZmFtaWx5ICk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICB9ICAvKiBFbmQgREVGQVVMVCBjYXNlICh1bmtub3duIGFkZHJlc3MgZmFtaWx5KS4gKi8KICAgICAgICAgICAgICAgfSAgLyogRW5kIFNXSVRDSCBvbiBhZGRyZXNzIGZhbWlseS4gKi8KICAgICAgICAgICAgfSAgLyogRW5kIElGIHZlcmJvc2UgbW9kZS4gKi8KICAgICAgICAgICAgLyoKICAgICAgICAgICAgKiogU2VuZCB0aGUgUElUIHRvIHRoZSBjbGllbnQuCiAgICAgICAgICAgICovCiAgICAgICAgICAgIHdCeXRlcyA9IHRpbWVMZW47CiAgICAgICAgICAgIHdoaWxlICggd0J5dGVzID4gMCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjb3VudCA9IHNlbmR0byggZGVzY1sgaWR4IF0uZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd0J5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZHIsICAgICAgICAvKiBBZGRyZXNzICYgYWRkcmVzcyBsZW5ndGggICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FkckxlbiApOyAgIC8qICAgIHJlY2VpdmVkIGluIHJlY3Zmcm9tKCkuICovCiAgICAgICAgICAgICAgIH0gd2hpbGUgKCAoIGNvdW50IDwgMCApICYmICggZXJybm8gPT0gRUlOVFIgKSApOwogICAgICAgICAgICAgICBDSEsoIGNvdW50ICk7ICAgLyogQ2hlY2sgZm9yIGEgYm9uYSBmaWRlIGVycm9yLiAqLwogICAgICAgICAgICAgICB3Qnl0ZXMgLT0gY291bnQ7CiAgICAgICAgICAgIH0gIC8qIEVuZCBXSElMRSB0aGVyZSBpcyBkYXRhIHRvIHNlbmQuICovCiAgICAgICAgIH0gIC8qIEVuZCBFTFNFIGEgVURQIGRhdGFncmFtIGlzIGF2YWlsYWJsZS4gKi8KICAgICAgICAgZGVzY1sgaWR4IF0ucmV2ZW50cyA9IDA7ICAgLyogQ2xlYXIgdGhlIHJldHVybmVkIHBvbGwgZXZlbnRzLiAqLwogICAgICB9ICAvKiBFbmQgRk9SIGVhY2ggc29ja2V0IGRlc2NyaXB0b3IuICovCiAgIH0gIC8qIEVuZCBXSElMRSBmb3JldmVyLiAqLwp9ICAvKiBFbmQgcGl0KCkgKi8KCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlvem9uZTNfMzQ3L3NyYy9jdXJyZW50L2NsaWVudF9saXN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNDQ0ADAzMjYzMjYAMDAxMTYxMAAwMDAwMDAwMjQzMwAxMTM1NTY0MDQyMQAwMTY1MzMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzaGVuaGFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwojIExpbmVzIHRoYXQgc3RhcnQgd2l0aCAjIGluIGNvbHVtbiAwIGFyZSBjb21tZW50cy4KIwojIFRoZXJlIGFyZSBub3cgdHdvIGZvcm1hdHMgc3VwcG9ydGVkLgojIEZvcm1hdDogIDMgZmllbGRzLCBzcGFjZSBkZWxpbWl0ZWQuCiMgRm9ybWF0OiAgNCBmaWVsZHMsIHNwYWNlIGRlbGltaXRlZC4KIwojIEZvcm1hdDogIDMgZmllbGRzLCBzcGFjZSBkZWxpbWl0ZWQuCiMgICBjbGllbnRfbmFtZSAgd29ya2luZ19kaXJfb25fY2xpZW50ICBwYXRoX3RvX2lvem9uZV9vbl9jbGllbnQKIyBGb3JtYXQ6ICA0IGZpZWxkcywgc3BhY2UgZGVsaW1pdGVkLgojICBjbGllbnRfbmFtZSAgd29ya2luZ19kaXJfb25fY2xpZW50IHBhdGhfdG9faW96b25lX29uX2NsaWVudCBwYXRoX3RvX3Rlc3RmaWxlCiMKIyBFeGFtcGxlOiBXaXRoIHR3byBjbGllbnRzICAoZm9ybWF0IDMgZmllbGRzKQojCiMgY2xpZW50MSAgL2hvbWUvdXNlci90bXAgL2hvbWUvdXNlci90bXAvaW96b25lCiMgY2xpZW50MiAgL2hvbWUvdXNlci90bXAgL2hvbWUvdXNlci90bXAvaW96b25lCiMKIwojIEV4YW1wbGU6IFdpdGggdHdvIGNvcGllcyBvZiBJb3pvbmUgb24gZWFjaCBvZiB0aGUgdHdvIGNsaWVudHMgCiMgKGZvcm1hdCAzIGZpZWxkcykKIwojIGNsaWVudDEgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZQojIGNsaWVudDEgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZQojIGNsaWVudDIgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZQojIGNsaWVudDIgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZQojCiMgRXhhbXBsZTogV2l0aCB0d28gY2xpZW50cyAoZm9ybWF0IDQgZmllbGRzKQojIGNsaWVudDEgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZSAvdG1wL2ZvbzEKIyBjbGllbnQyICAvaG9tZS91c2VyL3RtcCAvaG9tZS91c2VyL3RtcC9pb3pvbmUgL3RtcC9mb28yCiMKIyBFeGFtcGxlOiBXaXRoIHR3byBjb3BpZXMgb2YgSW96b25lIG9uIGVhY2ggb2YgdGhlIHR3byBjbGllbnRzIAojIChmb3JtYXQgNCBmaWVsZHMpCiMgY2xpZW50MSAgL2hvbWUvdXNlci90bXAgL2hvbWUvdXNlci90bXAvaW96b25lIC90bXAvZm9vMQojIGNsaWVudDEgIC9ob21lL3VzZXIvdG1wIC9ob21lL3VzZXIvdG1wL2lvem9uZSAvdG1wL2ZvbzIKIyBjbGllbnQyICAvaG9tZS91c2VyL3RtcCAvaG9tZS91c2VyL3RtcC9pb3pvbmUgL3RtcC9mb28zCiMgY2xpZW50MiAgL2hvbWUvdXNlci90bXAgL2hvbWUvdXNlci90bXAvaW96b25lIC90bXAvZm9vNAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaW96b25lM18zNDcvc3JjL2N1cnJlbnQvZ251cGxvdHBzLmRlbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA0NDQAMDMyNjMyNgAwMDExNjEwADAwMDAwMDAzMjI1ADExMzU1NjQwNDIxADAxNzAyMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNoZW5oYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjCiMgJElkOiBQbG90IG9mIGxhdGVuY3kgdmVyc3VzIG9mZnNldCBpbiBhIGZpbGUKIwojIFJlcXVpcmVzIGRhdGEgZmlsZSAid29sLmRhdCIgZnJvbSB0aGlzIGRpcmVjdG9yeSwKIyBzbyBjaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGlzIGRpcmVjdG9yeSBiZWZvcmUgcnVubmluZy4KIwoKc2V0IHRpdGxlICJGaWxlIHN5c3RlbSB3cml0ZSBsYXRlbmN5ICIKc2V0IHRlcm1pbmFsIHBvc3RzY3JpcHQKc2V0IG91dHB1dCAiZ251X3dvbC5wcyIKc2V0IGF1dG9zY2FsZSB4CnNldCB4dGljcwpzZXQgeGxhYmVsICJPZmZzZXQgaW4gZmlsZSAoS0IpIgpzZXQgeWxhYmVsICJMYXRlbmN5IGluIE1pY3Jvc2Vjb25kcyIKcGxvdCAnd29sLmRhdCcgdXNpbmcgMToyIHRpdGxlICJMYXRlbmN5IFBsb3QiIHdpdGggbGluZXMKIwojICRJZDogUGxvdCBvZiBsYXRlbmN5IHZlcnN1cyBvZmZzZXQgaW4gYSBmaWxlCiMKIyBSZXF1aXJlcyBkYXRhIGZpbGUgInJ3b2wuZGF0IiBmcm9tIHRoaXMgZGlyZWN0b3J5LAojIHNvIGNoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBydW5uaW5nLgojCgpzZXQgdGl0bGUgIkZpbGUgc3lzdGVtIHJlLXdyaXRlIGxhdGVuY3kgIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdApzZXQgb3V0cHV0ICJnbnVfcndvbC5wcyIKc2V0IGF1dG9zY2FsZSB4CnNldCB4dGljcwpzZXQgeGxhYmVsICJPZmZzZXQgaW4gZmlsZSAoS0IpIgpzZXQgeWxhYmVsICJMYXRlbmN5IGluIE1pY3Jvc2Vjb25kcyIKcGxvdCAncndvbC5kYXQnIHVzaW5nIDE6MiB0aXRsZSAiTGF0ZW5jeSBQbG90IiB3aXRoIGxpbmVzCgojCiMgJElkOiBQbG90IG9mIGxhdGVuY3kgdmVyc3VzIG9mZnNldCBpbiBhIGZpbGUKIwojIFJlcXVpcmVzIGRhdGEgZmlsZSAicm9sLmRhdCIgZnJvbSB0aGlzIGRpcmVjdG9yeSwKIyBzbyBjaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGlzIGRpcmVjdG9yeSBiZWZvcmUgcnVubmluZy4KIwoKc2V0IHRpdGxlICJGaWxlIHN5c3RlbSByZWFkIGxhdGVuY3kgIgpzZXQgYXV0b3NjYWxlIHgKc2V0IHh0aWNzCnNldCB4bGFiZWwgIk9mZnNldCBpbiBmaWxlIChLQikiCnNldCB5bGFiZWwgIkxhdGVuY3kgaW4gTWljcm9zZWNvbmRzIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdApzZXQgb3V0cHV0ICJnbnVfcm9sLnBzIgpwbG90ICdyb2wuZGF0JyB1c2luZyAxOjIgdGl0bGUgIkxhdGVuY3kgUGxvdCIgd2l0aCBsaW5lcwoKIwojICRJZDogUGxvdCBvZiBsYXRlbmN5IHZlcnN1cyBvZmZzZXQgaW4gYSBmaWxlCiMKIyBSZXF1aXJlcyBkYXRhIGZpbGUgInJyb2wuZGF0IiBmcm9tIHRoaXMgZGlyZWN0b3J5LAojIHNvIGNoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBydW5uaW5nLgojCgpzZXQgdGl0bGUgIkZpbGUgc3lzdGVtIHJlLXJlYWQgbGF0ZW5jeSAiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0CnNldCBvdXRwdXQgImdudV9ycm9sLnBzIgpzZXQgYXV0b3NjYWxlIHgKc2V0IHh0aWNzCnNldCB4bGFiZWwgIk9mZnNldCBpbiBmaWxlIChLQikiCnNldCB5bGFiZWwgIkxhdGVuY3kgaW4gTWljcm9zZWNvbmRzIgpwbG90ICdycm9sLmRhdCcgdXNpbmcgMToyIHRpdGxlICJMYXRlbmN5IFBsb3Qi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IHRoZSBmb2xsb3dpbmcKb3BlcmF0aW9uczogUmVhZCwgd3JpdGUsIHJlLXJlYWQsIHJlLXdyaXRlLCByZWFkIGJhY2t3YXJkcywgcmVhZCBzdHJpZGVkLApmcmVhZCwgZndyaXRlLCByYW5kb20gcmVhZCwgcHJlYWQgLG1tYXAsIGFpb19yZWFkLCBhaW9fd3JpdGUuCgoKIyMKIyMgUFJFUAojIwolcHJlcAoKIyMKIyMgU0VUVVAgYW5kIFBBVENICiMjCiVzZXR1cCAtbiBpb3pvbmUzXzM0Ny9zcmMvY3VycmVudAoKCiMjCiMjIEJVSUxECiMjCiMjCiMjIEJVSUxECiMjCiVidWlsZAolaWZhcmNoICV7aXg4Nn0KICAgIG1ha2UgbGludXgKJWVsc2UKICAgICVpZmFyY2ggeDg2XzY0CiAgICAgICAgbWFrZSBsaW51eC1BTUQ2NAogICAgJWVsc2UKICAgICAgICAlaWZhcmNoIGlhNjQKICAgICAgICAgICAgbWFrZSBsaW51eC1pYTY0CiAgICAgICAgJWVsc2UKICAgICAgICAgICAgJWlmYXJjaCBwcGMKICAgICAgICAgICAgICAgIG1ha2UgIGxpbnV4LXBvd2VycGMKICAgICAgICAgICAgJWVsc2UKICAgICAgICAgICAgICAgICVpZmFyY2ggcHBjNjQKICAgICAgICAgICAgICAgICAgICBtYWtlIGxpbnV4LXBvd2VycGM2NAogICAgICAgICAgICAgICAgJWVsc2UKICAgICAgICAgICAgICAgICAgICAlaWZhcmNoIHMzOTAKICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBsaW51eC1TMzkwCiAgICAgICAgICAgICAgICAgICAgJWVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgJWlmYXJjaCBzMzkweAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBsaW51eC1TMzkwWAogICAgICAgICAgICAgICAgICAgICAgICAlZW5kaWYKICAgICAgICAgICAgICAgICAgICAlZW5kaWYKICAgICAgICAgICAgICAgICVlbmRpZgogICAgICAgICAgICAlZW5kaWYKICAgICAgICAlZW5kaWYKICAgICVlbmRpZgolZW5kaWYKCiMjCiMjIElOU1RBTEwKIyMKJWluc3RhbGwKbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL29wdC9pb3pvbmUvYmluCmNwICRSUE1fQlVJTERfRElSL2lvem9uZTNfMzQ3L3NyYy9jdXJyZW50L2lvem9uZSAkUlBNX0JVSUxEX1JPT1Qvb3B0L2lvem9uZS9iaW4vCmNwICRSUE1fQlVJTERfRElSL2lvem9uZTNfMzQ3L3NyYy9jdXJyZW50L2ZpbGVvcCAkUlBNX0JVSUxEX1JPT1Qvb3B0L2lvem9uZS9iaW4vCmNwICRSUE1fQlVJTERfRElSL2lvem9uZTNfMzQ3L3NyYy9jdXJyZW50L3BpdF9zZXJ2ZXIgJFJQTV9CVUlMRF9ST09UL29wdC9pb3pvbmUvYmluLwpjcCAkUlBNX0JVSUxEX0RJUi9pb3pvbmUzXzM0Ny9zcmMvY3VycmVudC9HZW5lcmF0ZV9HcmFwaHMgJFJQTV9CVUlMRF9ST09UL29wdC9pb3pvbmUvYmluLwpjcCAkUlBNX0JVSUxEX0RJUi9pb3pvbmUzXzM0Ny9zcmMvY3VycmVudC9nZW5nbnVwbG90LnNoICRSUE1fQlVJTERfUk9PVC9vcHQvaW96b25lL2Jpbi8KY3AgJFJQTV9CVUlMRF9ESVIvaW96b25lM18zNDcvc3JjL2N1cnJlbnQvZ251M2QuZGVtICRSUE1fQlVJTERfUk9PVC9vcHQvaW96b25lL2Jpbi8KCm1rZGlyIC1wICRSUE1fQlVJTERfUk9PVC9vcHQvaW96b25lL2RvY3MKY3AgJFJQTV9CVUlMRF9ESVIvaW96b25lM18zNDcvZG9jcy9JT3pvbmVfbXN3b3JkXzk4LnBkZiAkUlBNX0JVSUxEX1JPT1Qvb3B0L2lvem9uZS9kb2NzLwpjcCAkUlBNX0JVSUxEX0RJUi9pb3pvbmUzXzM0Ny9kb2NzL1J1bl9ydWxlcy5kb2MgJFJQTV9CVUlMRF9ST09UL29wdC9pb3pvbmUvZG9jcy8KY3AgJFJQTV9CVUlMRF9ESVIvaW96b25lM18zNDcvZG9jcy9JT3pvbmVfbXN3b3JkXzk4LmRvYyAkUlBNX0JVSUxEX1JPT1Qvb3B0L2lvem9uZS9kb2NzLwpjcCAkUlBNX0JV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CVN1cHBvcnQgZm9yIG11bHRpcGxlIGJ1ZmZlcnMgaW4gdGhlIGlvem9uZS4KCkNhcHBzOgoJUmVtb3ZlZCB0aGUgcmVjdXJzaW9uIHRocm91Z2ggbWFpbigpLgoJQ2xlYW5lZCB1cCB0aGUgcHJpbnRvdXQgd2hlbiBub3QgaW4gYXV0byBtb2RlLgoJQWRkZWQgc3VwcG9ydCBmb3Igc3RyaWRlLXJlYWQuICggTWFudWFsIG1vZGUgb25seSApCgpDYXBwczoKCUNsZWFudXAgc28gaXQgd2lsbCBidWlsZCBmb3IgYnNkNF8yICggQyBzZXJpZXMgbWFjaGluZXMgKQoKQ2FwcHM6CglDbGVhbnVwIG9uIGZyb250ZW5kLiBOb3cgdXNlcyBnZXRvcHQoKSBhbmQgaGFzIGEgcmVhbCBwYXJzZXIuCglDbGVhbnVwIG9uIGVycm9yIGhhbmRsaW5nLgoJQWRkZWQgdGhyb3VnaHB1dCB0ZXN0cy4KCUVsaW1pbmF0ZWQgcGFnZSBmYXVsdHMgaW4gdGhlIHRocm91Z2hwdXQgdGVzdHMuCgpDYXBwczoKCU1hZGUgYWxsIHBlcmYgdGVzdHMgdGFibGUgZHJpdmVuLgoJQWRkIGJhY2sgQmlsbCdzIENvcHlyaWdodC4KCWFuc2lmeSwgcHJvdG90eXBlcywgc2NvcGUgbGltaXRhdGlvbnMuCgpWMi4xIChrY29sbGlucyk6CglTaW1wbGlmaWVkIGF1dG8gbW9kZSBsb2dpYy4gIGF1dG8gdGVzdCBub3cgcnVucyBmcm9tCglNRUdBQllURVNfU1RBUlQgdG8gTUVHQUJZVEVTX0VORCBhbmQgZnJvbSBSRUNMRU5fU1RBUlQKCXRvIFJFQ0xFTl9FTkQgd2l0aCB2YWx1ZXMgbXVsdGlwbGllZCBieSBNVUxUSVBMSUVSIAoJZWFjaCBpdGVyYXRpb24uICBSYW5nZSBzZXQgdG8gKDRLLi4uMTZNKSBmb3IgUkVDTEVOCglhbmQgKDFNLi4uNTEyTSkgZm9yIE1FR0FCWVRFUy4gICh0aGUgcGh5c2ljYWwgSS9PCgl0ZXN0cyBmb3IgUkVDTEVOIDw0SyB0YWtlIHNldmVyYWwgaG91cnMgb24gYSAxMjAwKS4KCglFbmxhcmdlZCBNQVhCVUZGRVJTSVpFIHRvIDE2TUIgZm9yIGxhcmdlIHJlY29yZCB0ZXN0cy4KCglBZGRlZCBlcnJvciBjaGVja2luZyBmb3IgbWFsbG9jcyAoIS0pLgoKCUNoYW5nZWQgbXVsdGlidWZmZXIgY29kZSB0byB1c2UgYWxsIG9mIE1BWEJVRkZFUlNJWkUKCWFzIGEgY2lyY3VsYXIgYnVmZmVyLCB3aXRoIHRoZSBudW1iZXIgb2YgYnVmZmVycwoJdmFyeWluZyBhcyBNQVhCVUZGRVJTSVpFL3JlY2xlbi4gIFRoaXMgY29ycmVjdHMgCglwcm9ibGVtcyB3aGVyZSBNQVhCVUZGRVJTSVpFKk1BWEJVRkZFUlMgd2FzIHZlcnkgbGFyZ2UuCglBbHNvIG1vZGlmaWVkIGF1dG8gbW9kZSBzbyB0aGF0IHRlc3RzIHdoZXJlCglyZWNsZW4+ZmlsZXNpemUgYXJlIHNraXBwZWQuCgoJTW9kaWZpZWQgcHJlYWR2IGNvZGUgdG8gdmFyeSB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYXMKCW5lY2Vzc2FyeSBzdWNoIHRoYXQgdGhleSB3aWxsIGZpdCBpbiBtaW4oTUFYQlVGRkVSU0laRSxmaWxlc2l6ZSkuCglUaGlzIGZpeGVzIHByb2JsZW1zIHdoZXJlIHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbgoJdGhlIGkvbyB2ZWN0b3IgZXhjZWVkZWQgdGhlIHNpemUgb2YgbWFpbmJ1ZmZlci4KCglBZGRlZCBiemVybyBmb3IgYnVmZmVyIHdoZW4gaXQgaXMgZmlyc3QgbWFsbG9jJ2QuICBUaGlzCgllbnN1cmVzIHRoYXQgaXQgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS4KCglDcmVhdGVkIGEgc2NyaXB0IChwcm9maWxlLmZzKSB0aGF0IHJ1bnMgYSBzZXJpZXMgb2YgdGVzdHMKCXRvIGdlbmVyYXRlIGEgImJveCIgYXJvdW5kIGNvbW1vbiBhcHBsaWNhdGlvbiB2YXJpYWJsZXMKCXN1Y2ggYXMgZmlsZXNpemUsIGJ1ZmZlciBzaXplLCBidWZmZXIgZW5jYWNoZW1lbnQsIGFuZAoJbnVtYmVyIG9mIGNvbmN1cnJlbnQgcHJvY2Vzc2VzLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBzZXJ2ZQoJYXMgdGhlICJzdGFuZGFyZCIgZmlsZXN5c3RlbSBwcm9maWxlLgoKCWJ1ZmZlciByZXNldCB0byBtYWluYnVmZmVyIGJlZm9yZSBlYWNoIHRlc3QgbG9vcAoKVjIuMyAoa2NvbGxpbnMpOgoKCWFkZGVkIC1GIG9wdGlvbiB0byB3cml0ZSB0byBzcGVjaWZ5IHBhdGhuYW1lcyBmb3IgdGhyb3VnaHB1dAoJdGVzdHMgKGFsbG93aW5nIHRocm91Z2hwdXQgdGVzdHMgdG8gbXVsdGlwbGUgZmlsZXN5c3RlbXMpLgoKVjIuNCAoY2FwcHMpOgoJQ2hhbmdlZCBwcmVhZHYvcHdyaXRldiB0byB1c2UgYSBub24tc2VxdWVudGlhbCBhY2Nlc3MgcGF0dGVybi4KCUNoYW5nZWQgdGhlIHZlcnNpb24gbnVtYmVyLgoJTW92ZWQgYWxsIHVzZXIgaW50ZXJmYWNlIHZhbHVlcyB0byBLQi4gVGhpcyBzaW1wbGlmaWVzCgl0aGUgdXNlciBpbnRlcmZhY2UuIChjb25zaXN0YW50IHNjYWxpbmcpIGFuZCBpdCBhbHNvCglhbGxvd3Mgb25lIHRvIHN0YXJ0IHdpdGggNTEya2IgZmlsZS4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudAoJc2luY2UgdGhlIGZpcnN0IGluZGlyZWN0IGJsb2NrIGNhdXNlcyBhIHNpZ25pZmljYW50CglzbG93ZG93biBpbiB0aGUgaW5pdGlhbCB3cml0ZSBjYXNlcy4KClYyLjUgKGNhcHBzKToKCVJlLXN0cnVjdHVyZSBhbmQgY2xlYW51cC4KClYyLjYgKGtjb2xsaW5zKQoJQnVnIGZpeCBmb3IgdGhlIHRocm91Z2hwdXQgdGVzdHMuCgpWMi43IChjYXBwcyk6CglBZGRlZCAtbyBmbGFnLiBUaGlzIG1ha2VzIGFsbCBmaWxlIG9wZW5zIGZvciB3cml0ZXMKCWhhdmUgdGhlIE9fU1lOQyBmbGFnIHNldC4gVGhpcyBtYWtlcyBhbGwgd3JpdGVzIGdvCgl0byBkaXNrIGJlZm9yZSBjb21wZXRpb24uIFRoaXMgaXMgdXNlZnVsIGZvciBzZWVpbmcKCXdoYXQgdGhlIG1lZGlhIGNhbiBkbyB3aXRob3V0IHRoZSBidWZmZXIgY2FjaGUgaGVscGluZy4KClYyLjggKGNhcHBzKToKCUFkZGVkIC1WIGZsYWcuIFRoaXMgdHVybnMgb24gcGF0dGVybiB2ZXJpZmljYXRpb24uIElmCgl0aGUgdXNlciB3ZXJlIHRvIHR5cGU6CgktViAxNjUKCVRoZW4gYml0IHBhdHRlcm4gMHhhNSB3b3VsZCBiZSBwbGFjZWQgaW4gZXZlcnkgYnl0ZSBpbiB0aGUKCWJ1ZmZlciBhbmQgd2hlbiByZWFkIGJhY2sgZnJvbSBidWZmZXIgY2FjaGUsIG9yIGRpc2ssIAoJaXQgd2lsbCBiZSB2ZXJpZmllZCB0byBiZSBjb3JyZWN0LiBJZiBpdCBmYWlscyB0aGVuCgl0aGUgZXJyb3IgaGFuZGxlciB3aWxsIHNwZWNpZnkgdGhlIGJ5dGUgbG9jYXRpb24gb2YgdGhlCgltaXNjb21wYXJlLgoKVjIuOSAoY2FwcHMpOgoJQWRkZWQgZnJlYWQvcmUtZnJlYWQsIGZ3cml0ZS9yZS1md3JpdGUgdG8gbGlzdCBvZiB0ZXN0cy4KCUFkZGVkIC1FIHRvIGFsbG93IHRoZSB1c2VyIHRvIHJ1biBwcmVhZCBhbmQgZnJpZW5kcyBhcyBhbiBvcHRpb24uCgpWMi4xMCAoY2FwcHMpOgoJQWRkZWQgLVIuIFRoaXMgd2lsbCBnZW5lcmF0ZSBFeGNlbCBjb21wYXRpYmxlIGZpbGVzIHRoYXQKCWNhbiB0aGVuIGJlIGltcG9ydGVkIGludG8gRXhjZWwgYW5kIGdyYXBoZWQuCglBZGRlZCBzdXBwb3J0IGZvciA1IHRhcmdldHMgdG8gdGhlIG1ha2VmaWxlLgoJQWRkZWQgLU0gIFRoaXMgcHJpbnRzIG91dCB0aGUgdW5hbWUgLWEgc3R1ZmYgYWJvdXQgYSBtYWNoaW5lLgoJQWRkZWQgLU8gIFRoaXMgZ2l2ZXMgYWxsIHJlc3VsdHMgaW4gb3BlcmF0aW9ucy9zZWMgaW5zdGVhZCBvZiBLQi9zZWMuCglNb3JlIGNvZGUgY2xlYW51cC4gVXBkYXRlIGNvbW1lbnRzLgoKVjIuMTEgKGtjb2xsaW5zKQoJYWRkZWQgLUEuICBBdXRvIG1vZGUgd2l0aCBubyBjcm9zc292ZXIgYW5kIHJlYWQvd3JpdGUgdGVzdHMgb25seQoJY2hhbmdlZCBkZWZhdWx0IHJlY29yZCBzaXplIHRvIDY0S0IgKGZyb20gNTEyIGJ5dGVzKQoKVjIuMTIgKGNhcHBzKQoJQWRkZWQgc2hhcmVkIG1lbW9yeSBiYXJyaWVyIHN5bmMgZm9yIHRocm91Z2hwdXQgbW9kZS4gVGhpcwoJcHJvdmlkZXMgbXVjaCBmaW5lciBjb250cm9sIG92ZXIgdGhlIGFjdHVhbCB0aW1laW5nIAoJb2YgdGhlIGNoaWxkcmVuLgoJQWRkZWQgbW1hcCgpIGZvciBCU0QgKENvbnZleCkgbWFjaGluZXMgdGhhdCBkbyBub3QgCgloYXZlIFN5c3RlbSBWIHNoYXJlZCBtZW1vcnkuCglBZGRlZCB0d28gd2F5cyBvZiBzaG93aW5nIHRocm91Z2hwdXQgcmVzdWx0cy4gVGhlIHNlY29uZAoJbWV0aG9kIHRha2VzIGludG8gY29uc2lkZXJhdGlvbiBjaGlsZHJlbiB0aGF0IGxhZyBiZWhpbmQKCWR1ZSB0byBzbG93IGRldmljZXMsIGFuZCBnaXZlcyByZXN1bHRzIHRoYXQgYXJlIG1vcmUgYWNjdXJhdGUuCglDbGVhbnVwIG9mIHNvbWUgdGFiIHByb2JsZW1zIGluIHRocm91Z2hwdXQgcmVzdWx0cy4KCUNsZWFudXAgb2YgZmxvYXRpbmcgcG9pbnQgb3V0cHV0IHRha2luZyB0byBtdWNoIHNwYWNlLgoJQWRkZWQgLWQgdG8gYWxsb3cgYSB2YXJpYWJsZSBkZWxheSBjb21taW5nIG91dCBvZiB0aGUgYmFycmllciAKCWluIHRoZSB0aHJvdWdocHV0IHRlc3RzLgpWMi4xMgkoa2NvbGxpbnMpCglhZGRlZCBkZWNsYXJhdGlvbiBmb3IgY3JlYXRlX2xpc3QgdG8gbWFrZSBhbnNpIGMgY29tcGlsZXMgd29yawoJc2V2ZXJhbCBmaXhlcyB0byBzb21lIG9mIHRoZSBTUFBVWCA1LnggbWFrZSB0YXJnZXRzCglhZGRlZCBkYXRlIHJ1biB0byBiYW5uZXIgKGhvcGUgdGhpcyBkb2Vzbid0IGJyZWFrIHlvdXIgc2NyaXB0cyAkLSkKClYyLjEzCShjYXBwcykKCUFkZGVkICJzdG9uZSB3YWxsaW5nIi4gRHVyaW5nIHRocm91Z2hwdXQgdGVzdHMsIGlmIG9uZSBwcm9jZXNzCglmaW5pc2hlcyB0aGVuIGFsbCBvdGhlcnMgYXJlIHNlbnQgYSBzaWduYWwgdG8gdGVsbCB0aGVtIAoJdG8gc3RvcC4gKFRoZSBwYXJhbGxlbCByZWdpb24gaGFzIGZpbmlzaGVkKS4gVGhpcyBwcm92aWRlcyAKCWJldHRlciBudW1iZXJzIGZvciB0aHJvdWdocHV0LiAgCglPbmx5IGJ6ZXJvIG9yIGZpbGwgbWluKHJlY2xlbixDQUNIRV9TSVpFKSB0aGlzIHNhdmVzIGEgYnVuY2gKCW9mIHBhZ2luZyBvbiB3b3Jrc3RhdGlvbnMgd2l0aCBzbWFsbCBtZW1vcnkgc3lzdGVtcy4KCUZpeGVkIGJyb2tlbiB0YXJnZXQgaW4gdGhlIG1ha2VmaWxlLgoJTm90ZTogdXNlIG9mIC1kIGlzIG5vdCBhZHZpc2VkLiBJdCBtYWtlcyB0aGUgY2hpbGRyZW4gbm90IHJ1biAKCWluIHBhcmFsbGVsLgpWMi4xNCAgIChjYXBwcykKCUJ1ZyBmaXggdG8gYXZvaWQgYW5vbWFseSBpbiBTUFAtVVguIEluIFNQUC1VWCB0aGUgZmlsZXN5c3RlbQoJY29kZSBwcmVhbGxvY2F0ZXMgbWV0YS1kYXRhIHRvIGltcHJvdmUgaW5pdGlhbCBmaWxlIHdyaXRlcy4KCVRoZSBmaXJzdCBpbmRpcmVjdCBibG9jayBhbGxvY2F0aW9uIHdhcyBjYXVzaW5nIGEgYmxvY2sgCglvZiB6ZXJvcyB0byBiZSB3cml0dGVuIHN5bmNyb25vdXNseS4gSW4gU1BQLVVYIHRoZSBmaWxlc3l0ZW0KCWNvZGUgcHJlYWxsb2NhdGVzIHplcm8gZmlsbGVkIGJsb2NrcyB3aGVuIHRoZSBmaXJzdCB3cml0ZXIKCXRvdWNoZXMgYSBmaWxlc3lzdGVtIGFmdGVyIGEgc3luYy4gQSBwb29sIG9mIG9uIGRpc2sgemVybydkIAoJYmxvY2tzIGFyZSBjcmVhdGVkIGFzeW5jaHJvbm91c2x5IGFuZCBoYW5kZWQgb3V0IHRvIHdyaXRlcnMKCXdoZW4gdGhleSBjcm9zcyB0aGUgYm91bmRyeSBpbnRvIHRoZSBmaXJzdCBsZXZlbCBpbmRpcmVjdAoJYW5kIHdvdWxkIGhhdmUgaGFkIHRvIHN0b3AgYW5kIHdhaXQgZm9yIHRoZSB6ZXJvIGZpbGxlZCAKCWJsb2NrIHRvIGJlIHdyaXR0ZW4uIElvem9uZSdzIHRlc3RpbmcgbWV0aG9kb2xvZ3kgd2FzIG5vdAoJYWxsb3dpbmcgdGhlIE9TIHRvIGhhdmUgYW55IHRpbWUgdG8gY29tcGxldGUgdGhlIGFzeW5jCglwcmUtYWxsb2NhdGlvbiBhbmQgd2FzIG5vdCBzaG93aW5nIHRoZSBzcGVlZCB1cCB0aGF0IHJlYWwKCWFwcGxpY2F0aW9ucyB3b3VsZCBzZWUuCgpWMi4xNSAgIChjYXBwcykKCUltcHJvdmUgdGhyb3VnaHB1dCB0ZXN0aW5nIG1vZGUuCgpWMi4xNgkoY2FwcHMpCglBZGRlZCAtVSBvcHRpb24uIFRoaXMgYWxsb3dzIHRoZSBmaWxlc3lzdGVtIHRvIGJlIHVubW91bnRlZAoJYW5kIHJlbW91bnRlZCBiZXR3ZWVuIHRlc3RzLiBUaGlzIGd1YXJlbnRlZXMgdGhhdCB0aGUgYnVmZmVyCgljYWNoZSBpcyBjb2xkLgoKVjIuMTcJKGNhcHBzKQoJQWRkZWQgLVQgb3B0aW9uLiBUaGlzIG1ha2VzIHRoZSB0aHJvdWdocHV0IHRlc3RzIHVzZSAKCXRocmVhZHMgaW5zdGVhZCBvZiBwcm9jZXNzZXMuICBDdXJyZW50bHkgdXNpbmcgcHRocmVhZF9jcmVhdGUoKSwKCXB0aHJlYWRfc2VsZigpLCBhbmQgcHRocmVhZF9leGl0KCkuIAoJQ2xlYW5lZCB1cCBmaWxlIGNsZWFudXAgbWVjaGFuaXNtLiBDb250cm9sIEMgd2lsbCBub3cgY2F1c2UKCWFsbCB0ZW1wIGZpbGVzIHRvIGJlIGRlbGV0ZWQuICBSZW1vdmVkIGFsbCBzaWduYWxzIHVzZWQgdG8KCWNvbnRyb2wgc3ViLXByb2Nlc3Nlcy4KClYyLjE4CShjYXBwcykKCUNsZWFudXAuIEFkZGVkIHJlYWQgc3RyaWRlLCByZWFkIGJhY2t3YXJkcyB0byB0aGUgdGhyb3VnaHB1dAoJdGVzdHMuIFZhcmlvdXMgYnVnIGZpeGVzCgpWMi4xOQkoY2FwcHMpCglSZW1vdmVkIGFsbCBjYWxscyB0byBtYWxsb2MoKSBhbmQgYWxsIHVzZSBvZiBzeXN0ZW0gViBzaGFyZWQgCgltZW1vcnkuIG1tYXAoKSBpcyBtdWNoIGVhc2llciB0byBkZWFsIHdpdGguIEFzIGZvciBtYWxsb2MoKQoJSFAgcHJvZ3JhbXMgYXJlIHZlcnkgbGltaXRlZCBvbiB0aGUgYW1tb3VudCBvZiBtYWxsb2MoKSBzcGFjZQoJYW5kIG5vdCBuZWFybHkgc28gY29uc3RyYWluZWQgb24gbW1hcCgpIG1lbW9yeS4gSXQgd2FzIG5lY2Vzc2FyeQoJdG8gbW92ZSB0byBtbWFwKCkgc2luY2UgbXVsdGlwbGUgdGhyZWFkcyBhbGwgbmVlZCBidWZmZXJzIGluCgl0aGUgcHJvY2Vzc2VzIGFkZHJlc3Mgc3BhY2UuIAoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGZpcnN0IHRocmVhZCBiZWluZyBudW1iZXIgMi4gSW96b25lIG5vdwoJcHJvYmVzIHRvIGZpbmQgb3V0IHdoYXQgdGhlIHRocmVhZCBsaWJyYXJ5IHdpbGwgcmV0dXJuIGZvciAKCXRoZSBmaXJzdCB0aHJlYWQuICBUaGlzIG1ha2VzIHRoZSBzd2l0Y2hpbmcgdGhyZWFkIGxpYnJhcmllcwoJbXVjaCBlYXNpZXIuCgpWMi4yMAkoY2FwcHMpCglDaGlsZHJlbiBub3cgc2V0IHN0b3BfZmxhZyBhbmQgc2h1dGRvd24gYWxsIG90aGVyIGNoaWxkcmVuLlRoZXJlCglpcyBubyBmdXJ0aGVyIG5lZWQgdG8gdGVsbCB0aGUgcGFyZW50IHRvIGRpc3RyaWJ1dGUgdGhlIHN0b3BfZmxhZy4KCXZlcmlmeSwgcHVyZ2UsIGFuZCBvc3luYyBhcmUgbm93IHN1cHBvcnRlZCBpbiB0aGUgdGhyb3VnaHB1dAoJdGVzdHMuIEZpeGVkIGJ1ZyB3aGVyZSBwdGhyZWFkcyBzdGFjayBzaXplIHdhcyBjYXVzaW5nIAoJc2VnbWVudGF0aW9uIHZpb2xhdGlvbiB3aGVuIHB1cmdlaXQoKSB3YXMgY2FsbGVkIGZvciBidWZmZXIKCXRoYXQgd2VyZSBncmVhdGVyIHRoYW4gMjU2a2IuCgpWMi4yMQkoY2FwcHMpCglFbmhhbmNlZCB0aHJvdWdocHV0IHJlcG9ydGluZy4gTm93IHByb3ZpZGVzOgoJQ2hpbGQgdGhyb3VnaHB1dCwgUGFyZW50IHRocm91Z2hwdXQsIE1pbmltdW0gdGhyb3VnaHB1dCBmb3IKCWFueSBjaGlsZCBpbiB0aGUgZ3JvdXAsIE1heGltdW0gdGhyb3VnaHB1dCBmb3IgYW55IGNoaWxkIGluIHRoZSAKCWdyb3VwLCBhbmQgTWluaW11bSB0cmFuc2ZlciBjb3VudC4gRHVlIHRvIHN0b25lIHdhbGxpbmcKCW5vdCBhbGwgY2hpbGRyZW4gd3JpdGUgdGhlIGZ1bGwgcmVxdWVzdGVkIHNpemUuIFRoaXMgCgltaW5pbXVtIHRyYW5zZmVyIGNvdW50IHByb3ZpZGVzIHRoZSB1c2VyIHdpdGgga25vd2xlZGdlIG9mIAoJaG93IG11Y2ggd29yayB3YXMgcGVyZm9ybWVkIGJ5IHRoZSBzbG93ZXN0IGNoaWxkLiAKCUFkZGVkIC1DIGZsYWcuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBhbGwgb2YgdGhlIHRyYW5zZmVyCgljb3VudHMgZm9yIGVhY2ggY2hpbGQuIEhhZCB0byBhZGQgc3lzdGVtIDUgc2hhcmVkIG1lbW9yeSBiYWNrLgoJTGludXggZG9lcyBub3Qgc3VwcG9ydCBtbWFwKE1BUF9BTk9OWU1PVVN8TUFQX1NIQVJFRCkuIFNvIGl0CgltdXN0IHVzZSBTWVNWIHNoYXJlZCBtZW1vcnkgZ2V0IGdldCBzaGFyaW5nIHdvcmtpbmcuCgpWMi4yMgkoY2FwcHMpCglNYWRlIGNoYW5nZXMgdG8gbWFrZSBpb3pvbmUgd29yayBjb3JyZWN0bHkgb24gTGludXggb24gYSAKCVBDLiBDaGFuZ2VzIGFyZSBqdXN0IHNjYWxpbmcgZG93biB0aGUgdGVzdCB0byBmaXQgb24gYSAKCXBjLCBhbmQgc2NhbGluZyBkb3duIHNoYXJlZCBzZWdtZW50cyB0byA8IDE2IE1lZyBzbyBpdAoJY2FuIHJ1biBvbiBhbiBJbnRlbCAzODYgY2xhc3MgbWFjaGluZS4KCUFkZGVkOiAtTCAjICAgU2V0IHRoZSBwcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplIGluIGJ5dGVzLgoJQWRkZWQ6IC1TICMgICBTZXQgdGhlIHByb2Nlc3NvciBjYWNoZSBzaXplIGluIGtieXRlcy4KCVJlbW92ZWQgc3BpbiB3YWl0IGluIHBhcmVudCB3YWl0aW5nIGZvciB0aHJlYWRzIHRvIAoJZmluaXNoIGVhY2ggdGhyb3VnaHB1dCB0ZXN0LiBDb2RlIG5vdCB1c2VzIHRocmVhZF9qb2luKCkuCglGaXhlZCAtTyAob3BlcmF0aW9ucy9zZWMpIG1vZGUgdG8gd29yayBpbiB0aHJvdWdocHV0IHRlc3RzLgoKVjIuMjMJKGNhcHBzKQoJQ2xvc2Ugc21hbGwgdGltaW5nIGhvbGUgd2hlcmUgdGhyZWFkL3Byb2Nlc3MgaGFzIHNldCBzdG9wIGZsYWcKCWFuZCBvdGhlcnMgYXJlIGluIGEgc3lzdGVtIGNhbGwuIFRoZSBob2xlIGFsbG93ZWQgdGhyZWFkcy9wcm9jZXNzZXMKCXRvIGNvbnRpbnVlIHRvIGluY3JlbWVudCB3b3JrIGRvbmUgYWZ0ZXIgb25lIGhhZCBmaW5pc2hlZCBhbmQKCXRvbGQgdGhlIG90aGVycyB0byBzdG9wLiBUaGUgcmVzdWx0IHdhcyB0aGF0IHRoZSBjaGlsZHJlbiB3b3VsZAoJcmVwb3J0IHNsaWdodGx5IGhpZ2ggbnVtYmVycyBhcyB0aGV5IHdlcmUgbm90IHRydWVseSBwYXJhbGxlbAoJYXQgdGhlIGZpbmlzaCBsaW5lLiBBZGRlZCByYW5kb20gcmVhZCB0aHJvdWdocHV0IHRlc3QuCglGaXhlcyBmb3IgVnhGUyBzbWFsbCBleHRlbnRzIGJlaW5nIGNyZWF0ZWQgYnkgcHJpbWVfemIoKSBmdW5jdGlvbnMuCglQcm92aWRlcyBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHRocm91Z2hwdXQgcnVuLgoKVjIuMjQJKGNhcHBzKQoJQWRkZWQgc3VwcG9ydCBmb3IgLVIgKEV4Y2VsbCBjaGFydCBnZW5lcmF0aW9uKSB0byB0aGUgdGhyb3VnaHB1dAoJdGVzdHMuIEFsc28gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIC1PIChvcHMvc2VjKSB0byB0aGUgdGhyb3VnaHB1dAoJRXhjZWxsIGNoYXJ0LgoKVjIuMjUJKGNhcHBzKQoJQWRkZWQgc3VwcG9ydCBmb3Igc2VsZWN0aW5nIHdoaWNoIHRlc3QgdG8gcnVuLiAtaSAjCgktaSAwIC1pIDMgCgl3aWxsIHJ1biB3cml0ZSBhbmQgcmVhZC1iYWNrd2FyZHMgdGVzdHMgb25seS4gRm9yIGEgbGlzdAoJb2YgdGhlIHRlc3QgbnVtYmVycyB0eXBlIGlvem9uZSAtaC4KVjIuMjYJKGNhcHBzKQoJQWRkZWQgc3VwcG9ydCBmb3IgTEFSR0VfRklMRVMgZm9yIHRoZSBocHV4LTExLjAgdGFyZ2V0LgoJCgpWMi4yNwkoY2FwcHMpCglBbGwgdGVzdHMgbm93IHZlcmlmeSBvbmUgbG9uZyB3b3JkIG9mIGRhdGEgZnJvbSBlYWNoIHBhZ2UKCXdyaXR0ZW4vcmVhZCB0by9mcm9tIHRoZSBmaWxlLiBUaGlzIGlzIHRvIGxldmVsIHRoZSAKCXBsYXlpbmcgZmllbGQgd2l0aCBzeXN0ZW1zIHRoYXQgZG8gbm90IG1vdmUgZGF0YSAKCXdoZW4gInJlYWQiIG9yICJ3cml0ZSIgaXMgY2FsbGVkLCBidXQgaW5zdGVhZCBqdXN0CgltYXAgdGhlIGZpbGUgYW5kIHBlcmZvcm0gdGhlIEkvTyB3aGVuIHRoZSBhZGRyZXNzIHNwYWNlCglpcyB0b3VjaGVkLiBCZW5jaG1hcmtzIHRoYXQgZG8gbm90IHZhbGlkYXRlIHRoZSBkYXRhCgksYXQgbGVhc3QgdG91Y2ggZWFjaCBwYWdlLCBkbyBub3QgbWVhc3VyZSB0aGUgcmVhZC93cml0ZQoJdGltZXMganVzdCB0aGUgbWFwIHRpbWVzLgoJTm90ZTogVGhlIC1WIG9wdGlvbiBzdGlsbCB2ZXJpZmllcyBlYWNoIGJ5dGUgb2YgdGhlIGJ1ZmZlciwKCXRoZSBkZWZhdWx0IGlzIG5vdyB0byB2ZXJpZnkgb25lIGxvbmcgZnJvbSBlYWNoIHBhZ2UuCgpWMi4yOAkoY2FwcHMpCglBZGRlZCBzdXBwb3J0IGZvciBiZW5jaG1hcmtpbmcgbW1hcCgpIGZpbGVzLgoJQWRkZWQgbW9yZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4gLUIgLUcgLUQKCQlCID0gVXNlIG1tYXAoKSBmaWxlcyBmb3IgdGhlIGJlbmNobWFyay4KCQlHID0gVXNlIG1zeW5jKE1TX1NZTkMpIGZvciBtbWFwIGZpbGVzLgoJCUQgPSBVc2UgbXN5bmMoTVNfQVNZTkMpIGZvciBtbWFwIGZpbGVzLgoKVjIuMjkJKGNhcHBzKQoJQnVnIGZpeGVzIGZvcjoKCQlDb21iaW5hdGlvbiBvZiBydW5uaW5nIGluZGl2aWR1YWwgdGVzdHMgYW5kIG1tYXAoKSBmaWxlcyBzdXBwb3J0LgoJCVN0cmlkZSByZWFkIGJ1ZyB0aGF0IGNhdXNlZCBvbmx5IHBvcnRpb25zIG9mIHRoZSB0b3RhbCBmaWxlIHRvIGJlIAoJCWV4YW1pbmVkLgoJClYyLjMwCShjYXBwcykKCUZpeHVwcyBmb3IgYnVpbGQgdW5kZXIgU1BQLVVYCgpWMi4zMQkoY2FwcHMpCglGaXh1cHMgZm9yIGJ1aWxkIHVuZGVyIExpbnV4LgoJQWRkZWQgLWogIyMjIHRvIHN1cHBvcnQgdXNlciBzZXR0aW5nIHRoZSBzdHJpZGUgc2l6ZSBmb3IgdGhlIAoJc3RyaWRlIHJlYWQgYmVuY2htYXJrLgoKVjIuMzIgCShjYXBwcykKCUFkZCBzdXBwb3J0IGZvciBJUklYIGFuZCBJUklYNjQuCgpWMi4zMyAJKGNhcHBzKQoJQWRkIHN1cHBvcnQgZm9yIFBPU0lYIGFzeW5jIEkvTyBiZW5jaG1hcmtpbmcuIFVzZXMgYSBsaWJyYXJ5Cgl0byBpbnRlcmZhY2UgdG8gUE9TSVggYXN5bmMgSS9PIG1vZGVsLiBUaGUgbGlicmFyeSBwcm92aWRlcwoJYW5kIGV4dGVuZGVkIGFzeW5jX3JlYWQoKSBpbnRlcmZhY2UuIEl0IHRha2VzIHRoZSBzdGFuZGFyZAoJY2FsbGluZyBvcHRpb25zIG9mIHJlYWQoKSBidXQgYWxzbyBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvCglwZXJmb3JtIHJlYWQtYWhlYWQgd2l0aCBhIHN0cmlkZS4gKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKQoJYW5kIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGhvdyBtdWNoIHJlYWQgYWhlYWQgdG8gCglwZXJmb3JtLiAKCVRlc3RlZCBvbiBIUC1VWCAxMS4wLCBMaW51eCwgU0dJIE9yaWdpbi4KClYyLjM0IAkoY2FwcHMpCglBZGRlZCAtay4gVGhpcyBhbGxvd3MgUE9TSVggYXN5bmMgSS9PIHRvIHV0aWxpemUgdGhlIGJ1ZmZlcgoJc3BlY2lmaWVkIGFuZCBub3QgdG8gcGVyZm9ybSBhbnkgYmNvcHlzLiBGaXhlcyB0byBtYWtlCgltdWx0aS10aHJlYWRlZG5lc3Mgd29yayBvbiBTR0kgT3JpZ2luLgoKVjIuMzQgCShjYXBwcykKCUFkZGVkIFstayAjXS4gVGhpcyBhbGxvd3MgUE9TSVggYXN5bmMgSS9PIHRvIHV0aWxpemUgdGhlIGJ1ZmZlcgoJc3BlY2lmaWVkIGFuZCBub3QgdG8gcGVyZm9ybSBhbnkgYmNvcHlzLiBGaXhlcyB0byBtYWtlCgltdWx0aS10aHJlYWRlZG5lc3Mgd29yayBvbiBTR0kgT3JpZ2luLgoKVjIuMzYgCShjYXBwcykKCUlvem9uZSBpcyBub3cgYSA2NCBiaXQgYXBwbGljYXRpb24uIEl0IG1heSBiZSBjb21waWxlZCBmb3IgZWl0aGVyCgk2NCBiaXQgb3IgMzIgYml0IG1hY2hpbmVzLiBUaGUgbWFrZWZpbGUgc3VwcG9ydHMgNjQgYW5kIDMyIGJpdAoJdGFyZ2V0cyBmb3IgbWFjaGluZXMgdGhhdCBzdXBwb3J0IDMyICYgNjQgYml0IHRhcmdldHMuCglBbGwgdmVyc2lvbiBudW1iZXJzIGFyZSBub3cgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkKCVJDUy4gVGhpcyBpcyB0aGUgbGFzdCB0aW1lIHdlIGhhdmUgdG8gYnVtcCB0aGUgdmVyc2lvbgoJbnVtYmVyIGJ5IGhhbmQuCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2hhbmdlZCBvdmVyIHRvIFJDUyBzb3VyY2UgY29udHJvbCBoZXJlOgpWZXJzaW9uIE51bWJlcnMgYXJlIHJlc2V0IGF0IHRoaXMgcG9pbnQgYmFjayB0byBWZXJzaW9uIDEuMS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgpSQ1MgZmlsZTogICAgICAgIGlvem9uZS5jLHY7ICAgV29ya2luZyBmaWxlOiAgICBpb3pvbmUuYwpoZWFkOiAgICAgICAgICAgIDEuOTQKbG9ja3M6ICAgICAgICAgICA7ICBzdHJpY3QKYWNjZXNzIGxpc3Q6ICAgCnN5bWJvbGljIG5hbWVzOgpjb21tZW50IGxlYWRlcjogICIgKiAiCnRvdGFsIHJldmlzaW9uczogOTQ7ICAgIHNlbGVjdGVkIHJldmlzaW9uczogOTQKZGVzY3JpcHRpb246CkluaXRpYWwgcmNzIHZlcnNpb24gb2YgSW96b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS45NCAgICAgICAgCmRhdGU6IDk5LzAxLzE4IDEzOjAyOjU3OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDcvMgpDYWxsIG1zeW5jIGlmIHdyaXRlciB3YW50cyBzeW5jIGluIHRpbWluZyBhbmQgdGVybWluYXRlcyBlYXJseSBpbiBtdWx0aSB0aHJlYWQgdGVzdCBjYXNlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuOTMgICAgICAgIApkYXRlOiA5OS8wMS8xOCAxMTo0NjoxMTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzMDkvMTI2CkNsZWFudXAgZm9yIGluY2x1ZGVfZmx1c2ggYW5kIGluY2x1ZGVfY2xvc2UgZm9yIHNpbmdsZSBhbmQgbXVsdGkgdGhyZWFkZWQgb3BlcmF0aW9ucy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjkyICAgICAgICAKZGF0ZTogOTkvMDEvMTUgMTA6NTM6NTg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNDAvMTEKQWRkIGluY2x1ZGVfY2xvc2Ugc3VwcG9ydCBmb3IgdGhyb3VnaHB1dCB0ZXN0aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS45MSAgICAgICAgCmRhdGU6IDk4LzEyLzA3IDA5OjI2OjIyOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDQzLzI0CkZvciBXaW5kb3dzOiBVc2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMgaW5zdGVhZCBvZiB0aW1lb2ZkYXkoKTsKRml4IGEgZmV3IGNhc3RpbmcgcHJvYmxlbXMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS45MCAgICAgICAgCmRhdGU6IDk4LzExLzMwIDE0OjQ5OjQ2OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDI0LzE3ClVwZGF0ZSB0aGUgY29weXJpZ2h0IGFuZCBuYW1lcyBhbmQgcGxhY2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS44OSAgICAgICAgCmRhdGU6IDk4LzEwLzMwIDA5OjA0OjUxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMgpBbiBleHRyYSBjbG9zZShmZCkgY2F1c2VzIEhQLVVYIHRvIGZhaWwgZnV0dXJlIHVubW91bnRzLi4uIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuODggICAgICAgIApkYXRlOiA5OC8xMC8yOSAwOTo0NzoyNTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxNy8xNwpDbGVhbnVwIHRoZSBoZWxwIHNjcmVlbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuODcgICAgICAgIApkYXRlOiA5OC8xMC8yOCAyMzozMToxMTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA3LzYKU3BlbGxpbmcgZXJyb3IgZml4LgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuODYgICAgICAgIApkYXRlOiA5OC8xMC8xNCAxMToyMTo1MDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyMy82OApVbmlmaWVkIHRoZSB0aW1lIG1ldGhvZCB0byBvbmx5IGhhdmUgMiB3YXlzIHRvIGdldCB0aW1lLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuODUgICAgICAgIApkYXRlOiA5OC8xMC8xNCAwOToyMjowOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA5MS85MQpBZGRlZCBjb2RlIHRvIHJlbW92ZSB0aGUgbGF0ZW5jeSBvZiBnZXR0aW1lb2ZkYXkoKSBmcm9tIHRoZSBmaWxlIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjg0ICAgICAgICAKZGF0ZTogOTgvMTAvMTIgMTE6NDQ6NTA7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTA3LzgKQWRkIHRpbWUgcmVzb2x1dGlvbiBvdXRwdXQsIGFuZCBmaXggdGhlIGRpdmlkZSBieSB6ZXJvIHdoZW4gdGhlIHRpbWUgaW4KYSBzeXN0ZW0gY2FsbCB0dXJucyBvdXQgdG8gYmUgWmVyby4gVGhpcyB3aWxsIGludHJvZHVjZSBkaXN0b3J0aW9uIGZvciBtYWNoaW5lcwp0aGF0IGhhdmUgdmVyeSBmYXN0IHN5c3RlbSBjYWxscyBhbmQgdmVyeSBwb29yIHRpbWUgcmVzb2x1dGlvbi4gV2luZG93cyAKaGFzIGEgNTAgTWlsbGkgc2Vjb25kIHJlc29sdXRpb24gb24gZ2V0dGltZW9mZGF5KCkuIFNvLi4uIHRvIGZpeCBpdCAKYWxsIGNhbGxzIHRoYXQgdGFrZSBsZXNzIHRoYW4gNTAgTWlsbGkgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gCmNvc3QgNTAgbWlsbGlzZWNvbmRzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuODMgICAgICAgIApkYXRlOiA5OC8xMC8wNiAwOTo1ODoxNjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA0Ni8yCkFkZCBzdXBwb3J0IGZvciBXaW5kb3dzIGJ1aWxkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS44MiAgICAgICAgCmRhdGU6IDk4LzA5LzIzIDA5OjQ4OjAyOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIvMgpGaXggYnVnIHdoZXJlIC1pICMgd2FzIGxlYXZpbmcgdG1wIGZpbGVzIGFmdGVyIHRocm91Z2hwdXQgdGVzdC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjgxICAgICAgICAKZGF0ZTogOTgvMDkvMjMgMDk6NDE6MTI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8zClJlbW92ZSBkZWJ1ZyBwcmludGYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjgwICAgICAgICAKZGF0ZTogOTgvMDkvMjMgMDk6Mjk6MDE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjMvMQpBZGQgbXlfbmFwKCkuIFRoaXMgYWxsb3dzIHRoZSB0aHJlYWRzIHRvIHN3aXRjaCBwcm9jZXNzb3JzIHRvIHRoZWlyCm5ldyBib3VuZCBwcm9jZXNzb3IgYmVmb3JlIHBlcmZvcm1pbmcgYW55IHdvcmsuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS43OSAgICAgICAgCmRhdGU6IDk4LzA5LzIyIDExOjU3OjIwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDgvOApDaGFuZ2UgeHggYmFjayBpbnRvIGFuIGludCBzbyB0aGUgbW9kdWxvIHdpbGwgd29yayBiZXR0ZXIuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS43OCAgICAgICAgCmRhdGU6IDk4LzA5LzE4IDE2OjI3OjA1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE4LzE1ClJlbW92ZSBjcmVhdGUgaW4gcmV3cml0ZSBwYXRoLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNzcgICAgICAgIApkYXRlOiA5OC8wOC8xNyAxNjo0NDowNjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyMy8xCkZpeGVzIGZvciBTb2xhcmlzIGFuZCB0aGUgbmV3IHByb2Nlc3NvciBiaW5kIGZlYXR1cmUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS43NiAgICAgICAgCmRhdGU6IDk4LzA4LzE3IDE2OjE3OjQ1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMgpSZW1vdmUgZGVidWcgY29kZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjc1ICAgICAgICAKZGF0ZTogOTgvMDgvMTcgMTY6MTY6MTU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogOTIvNQpBZGQgc3VwcG9ydCBmb3IgYmluZGluZyBwcm9jcy90aHJlYWRzIHRvIGNwdXMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS43NCAgICAgICAgCmRhdGU6IDk4LzA4LzA3IDE2OjUxOjQxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDQvMwpBZGQgZnN5bmMgdG8gdGhlIGZ3cml0ZSB0ZXN0IGNhc2Ugd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgLWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjczICAgICAgICAKZGF0ZTogOTgvMDgvMDcgMTY6NDc6Mzg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTc4LzIwOApBZGQgLWMgYW5kIC1lIHRvIGFsbG93IGNsb3NlcyBhbmQgZnN5bmNzIHRvIGJlIGluc2lkZSB0aGUgdGltaW5nIGNhbGN1bGF0aW9ucy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjcyICAgICAgICAKZGF0ZTogOTgvMDgvMDYgMjI6NDA6MTU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogOS8xCkFkZCBzZXR2YnVmIHRvIGZ3cml0ZSBhbmQgZnJlYWQgdGVzdHMgc28gdGhhdCB0aGUgaW50ZXJuYWwgZndyaXRlIGFuZCBmcmVhZApidWZmZXIgc2l6ZSBpcyB0aGUgc2FtZSBhcyB0aGUgcmVjb3JkIHNpemUuIFRoaXMgaXMgd2hhdCBhIHdlbGwgdHVuZWQgYXBwbGljYXRpb24gCndvdWxkIGRvLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNzEgICAgICAgIApkYXRlOiA5OC8wOC8wNiAwOTowMzowNjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyLzMKRml4IGZzeW5jIGZpbGVuYW1lIHByb2JsZW0gaW4gZndyaXRlX3BlcmZfdGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNzAgICAgICAgIApkYXRlOiA5OC8wOC8wNSAxODowNjo0MTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA2LzIKQWRkIGZzeW5jIGFmdGVyIGZ3cml0ZSB0ZXN0IGNhc2Ugc28gdGhlIGZyZWFkIHdpbGwgc3RhcnQgd2l0aCBhIApjbGVhbiBidWZmZXIgY2FjaGUgYW5kIG5vIHdyaXRlcyBpbiBwcm9ncmVzcy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjY5ICAgICAgICAKZGF0ZTogOTgvMDgvMDMgMTA6NDU6NDk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8zCkJ1ZyBmaXggZm9yIC1WIG9wdGlvbiBub3QgZmlsbGluZyB0aGUgZW50aXJlIGJ1ZmZlci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjY4ICAgICAgICAKZGF0ZTogOTgvMDcvMzAgMjI6MTE6MTE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8zCkZpeCBmb3Igc29sYXJpcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNjcgICAgICAgIApkYXRlOiA5OC8wNy8zMCAyMjowODoxOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyLzIKRml4IGZvciBzb2xhcmlzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS42NiAgICAgICAgCmRhdGU6IDk4LzA3LzMwIDIyOjA1OjAyOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDQzLzE1CkFkZCBzdXBwb3J0IGZvciBTb2xhcmlzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS42NSAgICAgICAgCmRhdGU6IDk4LzA3LzAxIDE0OjE5OjE5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDgwLzgyCk1vdmUgZW5kX2FzeW5jIGluc2lkZSB0aGUgdGltaW5nIGxvb3BzIGFzIGluIGFzeW5jIEkvTyBpdCBjb3VudHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS42NCAgICAgICAgCmRhdGU6IDk4LzA2LzE2IDE3OjA0OjM2OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEzLzIKQ29ycmVjdCBwcm9ibGVtIHdoZXJlIHVzZXIgc3BlY2lmaWVzIHByZWFkIHRlc3RzIG9uIGhwdXguLi4gd2hpY2ggZG9lcyBub3QgCnN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9ucy4gVGhlIHRlc3Qgbm93IHByaW50cyBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjYzICAgICAgICAKZGF0ZTogOTgvMDYvMTYgMTY6NTQ6MjI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8yClJlbW92ZSBleGl0IGZyb20gYXV0b190ZXN0LiBUaGlzIGFsbG93cyB0aGUgbWVzc2FnZSAiaW96b25lIHRlc3QgY29tcGxldGUiIHRvIApiZSBwcmludGVkIHdoZW4gaW4gYXV0byB0ZXN0IG1vZGUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS42MiAgICAgICAgCmRhdGU6IDk4LzA2LzEwIDEwOjU0OjI4OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE3NS8xNzMKQWxsIGV4aXQoKXMgbm93IGhhdmUgYSB1bmlxdWUgZXhpdCB2YWx1ZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjYxICAgICAgICAKZGF0ZTogOTgvMDUvMTggMTM6MzQ6MDM7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTcvMTgKTW92ZSAuZGF0IGZpbGUgZGVzY3JpcHRvcnMgdG8gZ2xvYmFsIGRhdGEuIE5lZWRlZCB0byBwcmV2ZW50IHJlLW9wZW5zLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNjAgICAgICAgIApkYXRlOiA5OC8wNS8xOCAxMzoyNDoyMjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA2LzMKQnVnIGZpeC4gUHJldmVudHMgcmUtb3BlbmRpbmcgLmRhdCBmaWxlcyB3aGVuIGluIGF1dG8gbW9kZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjU5ICAgICAgICAKZGF0ZTogOTgvMDUvMDggMTM6MDM6MDI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjEvMwpFbmhhbmNlIHRocm91Z2hwdXQgdGVzdHMgdG8gZm9sbG93IHRoZSAtaSB0ZXN0IG51bWJlciB0byBydW4gb3B0aW9ucy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjU4ICAgICAgICAKZGF0ZTogOTgvMDUvMDcgMTQ6MTU6NDk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTA5LzM5Ck1ha2UgVlhGUyBhIGRlZmluZSBpbiB0aGUgbWFrZSBjb21tYW5kLiBUaGlzIG1ha2VzIG1vdmluZyB0byBvdGhlciB0YXJnZXRzCmVhc2llci4gSXQgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiBIUFVYIGFuZCBWWEZTLgpBbHNvLCBBZGRlZCAtUSB0byBzdXBwb3J0IG9mZnNldC9sYXRlbmN5IGZpbGUgZ2VuZXJhdGlvbiBmb3IgbGF0ZXIgdXNlCmFzIGlucHV0cyB0byBwbG90IHByb2dyYW0uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41NyAgICAgICAgCmRhdGU6IDk4LzA1LzA2IDE1OjA5OjQzOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEwMC8yNwpBZGQgLU4gdG8gcHJvdmlkZSByZXN1bHRzIGluIG1pY3Jvc2Vjb25kcyBwZXIgb3BlcmF0aW9uLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNTYgICAgICAgIApkYXRlOiA5OC8wNS8wNSAxMzoyMzoyOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzLzEwCklmIHRoZSB1c2VyIHNwZWNpZmllcyAtaSAwIHRoZW4gcnVuIGJvdGggd3JpdGUgYW5kIHJld3JpdGUgdGVzdHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41NSAgICAgICAgCmRhdGU6IDk4LzA0LzMwIDE1OjE5OjAyOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMQpObyBjaGFuZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjU0ICAgICAgICAKZGF0ZTogOTgvMDQvMzAgMTU6MDk6NTg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8yClVubGluayB0aGUgdnhmc3Rlc3Qgd2hlbiB0aGUgdGVzdCBmYWlscy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjUzICAgICAgICAKZGF0ZTogOTgvMDQvMzAgMTM6MDc6MjE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNy81CkNsZWFudXAgaGVscCBvdXRwdXQuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41MiAgICAgICAgCmRhdGU6IDk4LzA0LzMwIDEyOjU4OjI5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIxLzQKQWRkIGFzeW5jIEkvTyB3aXRoIG5vIGJjb3B5IHRvIHRocm91Z2hwdXQgdGVzdHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41MSAgICAgICAgCmRhdGU6IDk4LzA0LzI5IDE1OjI5OjI5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDUvMQpGaXhlcyBzbyBpdCB3aWxsIGNvbXBpbGUgb24gdGhlIFNHSSBPcmlnaW4uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41MCAgICAgICAgCmRhdGU6IDk4LzA0LzI5IDExOjU3OjU4OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDUvMQpEbyBub3QgbmVlZCB0byBsaW1pdCBhc3luYyBvcHMuIEZpeCBpcyBpbiBsaWJhc3luYy5jCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40OSAgICAgICAgCmRhdGU6IDk4LzA0LzI5IDEwOjQ1OjE5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDYxLzMKQWRkIGFzeW5jIEkvTyB0byB0aHJvdWdocHV0IHRlc3RpbmcgZm9yIHdyaXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNDggICAgICAgIApkYXRlOiA5OC8wNC8yOCAxMTo1NzoxMzsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA1LzEKTGltaXQgbWF4IGFzeW5jIG9wZXJhdGlvbnMgdG8gNjAuIEJleW9uZCB0aGlzIHRoZXJlIGJlIGRyYWdvbnMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40NyAgICAgICAgCmRhdGU6IDk4LzA0LzI4IDEwOjE2OjA5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEwOC8yMQpDb21wbGV0ZWQgc3VwcG9ydCBmb3Igbm9fYmNvcHkgUE9TSVggYXN5bmMgSS9PIGluIHRoZSBhc3luY193cml0ZV9ub19jb3B5IHBhdGguClRoaXMgYWxsb3dzIHdyaXRlIHRlc3RzIHRvIHBlcmZvcm0gYXN5bmMgSS9PIHdpdGggYnVmZmVycyByZWxlYXNlZCB3aGVuIAp0aGUgd3JpdGUgaXMgY29tcGxldGVkLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNDYgICAgICAgIApkYXRlOiA5OC8wNC8yNyAxNjo1ODozODsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA0My8xMApBZGQgYWlvX3dyaXRlKCkgdG8gdGhlIHdyaXRlIGFuZCByZS13cml0ZSB0ZXN0cy4gVGhpcyBwcm92aWRlcwpQT1NJWCBhc3luYyBJL08gZm9yIHRoZSB0aG9zZSB0ZXN0cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjQ1ICAgICAgICAKZGF0ZTogOTgvMDQvMjUgMDk6NTM6Mzk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8yCmRpcmVjdF9mbGFnIGlzIGFuIGludC4gV2FzIGEgY2hhciBpbiBvbmUgcGxhY2UgYW5kCmFuIGludCBpbiBhbm90aGVyLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNDQgICAgICAgIApkYXRlOiA5OC8wNC8yNSAwOToxNzo0MjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyNy8xNQpNb3JlIHN1cHBvcnQgZm9yIHZ4X2RpcmVjdCBzdXBwb3J0IGluIHRoZSB3cml0ZSBwYXRoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40MyAgICAgICAgCmRhdGU6IDk4LzA0LzI0IDE2OjMzOjQ0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDExNS83NwpNb3ZlIFZYX0RJUkVDVCB0byBsaWJhc3luYy4gQnV0IGtlZXAgdGhlIFZYX0RJUkVDVCBzdXBwb3J0IGFsc28KaW4gaW96b25lLiBTbyBvbmUgY2FuIHVzZSBWWF9ESVJFQ1Qgd2l0aCBhbmQgd2l0aG91dCBhc3luYyBJL08KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjQyICAgICAgICAKZGF0ZTogOTgvMDQvMjQgMTY6MjA6MzQ7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTI3LzYwCk1vdmUgVlhfRElSRUNUIHRvIHRoZSBsaWJhc3luYyBtb2R1bGUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40MSAgICAgICAgCmRhdGU6IDk4LzA0LzI0IDE1OjUwOjU0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE5MC83CkFkZCBzdXBwb3J0IGZvciBWeEZTIFZYX0RJUkVDVCAKSWRlYSBpcyB0byB1c2UgVlhfRElSRUNUIGFuZCBQT1NJWCBhc3luYyBJL08gdG9nZXRoZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjQwICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMTY6Mzg6MjU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNS81ClNwcHV4IHdhbnRzIGFpbF9nZXR0aW1lb2ZkYXkgdmFyaWFibGVzIHRvIGJlIHVuc2lnbmVkIGludC4gCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zOSAgICAgICAgCmRhdGU6IDk4LzA0LzIyIDE2OjE5OjUwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDcvMwpGaXggLU0gb3B0aW9uIG5vdCBwcmludGluZyBjbGVhbmx5CkZpeCAtUiBpbiAzMiBiaXQgbW9kZSBwcmludGluZyBnYXJiYWdlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzggICAgICAgIApkYXRlOiA5OC8wNC8yMiAxNTo1NjowMjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxLzEKQ2hhbmdlIHRvIG9ubHkgZGlzcGx5IHJldmlzaW9uIG5vdCBmdWxsIGhlYWRlci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjM3ICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMTU6NTI6MTk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8xCkFkZCBSQ1MgSGVhZGVyIHRvIHN1cHBvcnQgdmVyc2lvbmluZy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjM2ICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMTU6Mzg6MjY7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8xCmZpeCB0byBiY29weSgpIHRoaXJkIGFyZyBuZWVkcyB0byBiZSBzaXplX3QgZm9yIDMyIGJpdCBtb2RlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzUgICAgICAgIApkYXRlOiA5OC8wNC8yMiAwOTowOToyNDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxNy8xNwpCdWcgZml4ZXMgZm9yIDY0IGJpdCBtb2RlIG9uIElSSVgsIGFuZCBhZGRpdGlvbiAKb24gdGhlIGludGVybmFsIGludXNlIHF1ZXVlIHRvIGluc3VyZSB0aGF0IHRoZQppbnRlcm5hbCBzdHJ1Y3RfY2FjaGVfZW50IHN0cnVjdHVyZXMgYXJlIG5vdCByZWxlYXNlZAp0b28gZWFybHkgd2hlbiBkb2luZyBkaXJlY3QgSS9PIChhc3luY19yZWFkX25vX2NvcHkpLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzQgICAgICAgIApkYXRlOiA5OC8wNC8yMSAwOTozMTowMjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA0LzAKRml4IHRvIGVsaW1pbmF0ZSBoaWRkZW4gKGRvdCkgZmlsZXMgdGhhdCBpb3pvbmUgd2FzIGNyZWF0aW5nCmluIHRocm91Z2hwdXQgbW9kZS4gQWxsIGZpbGVzIGFyZSBub3cgdmlzaWJsZSB3aXRoIGxzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzMgICAgICAgIApkYXRlOiA5OC8wNC8yMSAwODozMDozNTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA3LzEKSGF2ZSBJb3pvbmUgcHJpbnQgdGhlIGNvbXBpbGUgbW9kZWwgdXNlZC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMyICAgICAgICAKZGF0ZTogOTgvMDQvMjAgMTg6NDY6MDI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNDkvMjAKRml4ZXMgZm9yIDMyIGJpdCBtb2RlLiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMxICAgICAgICAKZGF0ZTogOTgvMDQvMjAgMTY6NTc6Mjk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogOC84Cm1ha2Ugc3VyZSBtYWxsb2MgaXMgY2FsbGVkIHdpdGggKHNpemVfdCkgcGFyYW1ldGVyLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzAgICAgICAgIApkYXRlOiA5OC8wNC8yMCAxNjowNTowODsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA5MzMvNzU3Cklvem9uZSBub3cgNjQgYml0IGFwcGxpY2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yOSAgICAgICAgCmRhdGU6IDk4LzA0LzIwIDEyOjMyOjI1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDQvNApNb3ZlIG1zeW5jIHRvIGJlZm9yZSBtdW5tYXAgc28gZmlsZSBnZXRzIHdyaXR0ZW4uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yOCAgICAgICAgCmRhdGU6IDk4LzA0LzIwIDEwOjIxOjMwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIvMgpNaW5vciBmaXggZm9yIC1PIGZsYWcgYW5kIC1CIG5vdCB3b3JraW5nIHNtb290aGx5IHRvZ2V0aGVyLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjcgICAgICAgIApkYXRlOiA5OC8wNC8yMCAxMDoxNzoxOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAwLzAKTm8gY2hhbmdlCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjYgICAgICAgIApkYXRlOiA5OC8wNC8xOSAxNToxMTowNzsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA1LzUKUmVtb3ZlIHByaW1lX3piZmlsbC4gSXQgY2F1c2VzIHByb2JsZW1zIHdpdGggbW1hcCBmaWxlcy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjI1ICAgICAgICAKZGF0ZTogOTgvMDQvMTYgMTU6MjQ6NTA7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjI4LzcwCi1IIGlzIE5hc3RyYW4gYXN5bmMgSS9PIHdpdGggYmNvcHkKLWsgaXMgYXN5bmMgSS9PIHdpdGhvdXQgYW55IGJjb3B5cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjQgICAgICAgIApkYXRlOiA5OC8wNC8xNSAxNjo0ODozMDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyMi80CmZpeCB0byBtYWtlIGJ1aWxkIG9uIDkuMDUgYW5kIDEwLjEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjIzICAgICAgICAKZGF0ZTogOTgvMDQvMTUgMTU6MzY6NTU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogOS85CkNsZWFudXAgc29tZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bi1pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXkKYXJlIG5vdCByZWFsbHkgdW4taW5pdGlhbGl6ZWQgYW5kIHVzZWQgYnV0IGl0IGRvZXMgZ2VuZXJhdGUgCmNvbXBpbGVyIHdhcm5pbmdzIG9uIHNvbWUgbWFjaGluZXMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yMiAgICAgICAgCmRhdGU6IDk4LzA0LzE1IDE1OjMyOjU2OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDcvNwpOZWVkIHRvIGZyZWUgdGhlIGR1bW15bmFtZSBzcGFjZSBhIGJpdCBsYXRlci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjIxICAgICAgICAKZGF0ZTogOTgvMDQvMTUgMTQ6Mzc6MDU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjcvMTMKRml4IHRvIHVzZSBzbWFsbGVyIHN0YWNrIHNpemUgaW4gdGhyZWFkXyByb3V0aW5lcy4gSXQgd2FzIGNhdXNpbmcKdGhlIFNHSSB0byBkcm9wIGNvcmUgaW4gdGhyb3VnaHB1dCB0ZXN0cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjIwICAgICAgICAKZGF0ZTogOTgvMDQvMTQgMTc6MDE6MTk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjcvMTYKRml4IGEgbWVtb3J5IGxlYWsuIEluIG11bHRpX3Rocm91Z2hwdXQgdGVzdGluZyBzaG1hbGxvYyB3YXMgZ2V0dGluZyBjYWxsZWQKZm9yIGVhY2ggaXRlcmF0aW9uLiBUaGlzIGlzIG5vdCBuZWVkZWQgYW5kIGNhdXNlcyBtdWNoIHRvIG11Y2ggCnNobSB0byBiZSBhbGxvY2F0ZWQuIE5vdCBicm9rZW4gYnV0IGRlZmluYXRlbHkgYSBwaWcuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xOSAgICAgICAgCmRhdGU6IDk4LzA0LzE0IDE1OjE5OjE1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIvMApXaGVuIC1rIGlzIHNwZWNpZmllZCBhbG9uZSB0aGlzIHdpbGwgdHVybiBvbiB0aGUgUE9TSVggYXN5bmMgSS9PIGFuZCAKc2V0IGRlcHRoIHRvIDAuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xOCAgICAgICAgCmRhdGU6IDk4LzA0LzE0IDE1OjAwOjE4OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIxLzIwCkZpeGVzIHRvIG1ha2UgbXVsdGktdGhyZWFkZWQgdmVyc2lvbiBydW4gb24gdGhlIFNHSSBPcmlnaW4uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xNyAgICAgICAgCmRhdGU6IDk4LzA0LzE0IDExOjU1OjQ0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE3LzExCkFkZCBzdXBwb3J0IGZvciAtay4gV2hlbiB1c2luZyBQT1NJWCBhc3luYyBJL08gdXNlIHRoZSAKYnVmZmVyIHNwZWNpZmllZCBhbmQgZG8gbm90IHBlcmZvcm0gYW55IGJjb3B5cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE2ICAgICAgICAKZGF0ZTogOTgvMDQvMTMgMTA6MjI6MTg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjcvMzgwCkFkZCBsaWJhc3luYyBsaWJyYXJ5IHN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE1ICAgICAgICAKZGF0ZTogOTgvMDQvMTEgMTI6MDk6MjU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8wCkZpeCBtZW1vcnkgbGVhay4gTm93IGNhbGxzIGRlbF9jYWNoZSB3aGVuIGV2ZXIgYW55IGNhbGxzIHRvIGFzeW5jX2VuZCBoYXBwZW4uClRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gb3V0c3RhbmRpbmcgSS9PcyBvbiB0aGUgY2FjaGUgdGhhdCAKaGEgCHZlIG5vdCBiZWVuIGNhbmNlbGVkIAguCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xNCAgICAgICAgCmRhdGU6IDk4LzA0LzExIDExOjU3OjEwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDYzMi80NwpBZGQgc3VwcG9ydCBmb3IgUE9TSVggYXN5bmMgSS9PIHRlc3RpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjEzICAgICAgICAKZGF0ZTogOTgvMDMvMzEgMTQ6MzA6MTU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNDQvNgpGaXggc3VwcG9ydCBmb3IgYnNkNF8yIGFuZCBDb252ZXhPUwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMTIgICAgICAgIApkYXRlOiA5OC8wMy8zMSAxMToyNjozNDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyLzIKQnVtcCB2ZXJzaW9uIG51bWJlciB0byAyLjMyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMSAgICAgICAgCmRhdGU6IDk4LzAzLzMxIDExOjIwOjUxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDcwLzYKQWRkIHN1cHBvcnQgZm9yIFNHSSBJUklYIGFuZCBTR0kgSVJJWDY0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMCAgICAgICAgCmRhdGU6IDk4LzAzLzI3IDE0OjAwOjQ3OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE1LzIwClB1dCB0aGUgYmNvcHkgYmFjay4gSXQgaXMgbW9yZSByZXByZXNlbmF0aXZlCm9mIHdoYXQgdGhlIHJlYWwgYXBwbGljYXRpb24gd2lsbCBkby4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjkgICAgICAgIApkYXRlOiA5OC8wMy8yNyAxMzoyNTowMjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA0MC8xNApJbXByb3ZlZCBtbWFwIGZpbGUgc3VwcG9ydC4gTm93IG9ubHkgaGF2ZSAxIGxvbmcgd29yZCBmcm9tCmVhY2ggcGFnZSB0b3VjaGVkLiBUaGlzIGVsaW1pbmF0ZXMgdGhlIG92ZXJoZWFkIG9mIGJjb3B5CmRvbWluYXRpbmcgdGhlIHJlc3VsdHMuIEl0IGFsc28gaXMgcGVyZm9ybWluZyB0aGUgc2FtZSAKd29yayB0aGF0IHRoZSBub24tbW1hcCB2ZXJzaW9uIGRvZXMgd2l0aCB2ZXJpZnkoKS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjggICAgICAgIApkYXRlOiA5OC8wMy8yNyAxMDo0MToxMzsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxMC80CkJ1ZyBmaXguIEZyZXdyaXRlIHdhcyB0cnVuY2F0aW5nIHRoZSBmaWxlLiBUaGlzIGZpeAplbnN1cmVzIHRoYXQgdGhlIEZyZXdyaXRlIHRlc3Qgb3BlbnMgd2l0aG91dCB0cnVuYy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjcgICAgICAgIApkYXRlOiA5OC8wMy8yNyAxMDoxNjo0MTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzLzMKRml4IHJlcG9ydCB0byBzcGVjaWZ5IHN0cmlkZSBzaXplIGFzIGEgZnVuY3Rpb24gb2YgcmVjbGVuLgpJdCBkaWQgbm90IG1ha2Ugc2Vuc2UgdG8gb3V0cHV0IGtieXRlcyBhcyB0aGUgdmFsdWUgY2hhbmdlcwp3aGVuIGluIGF1dG8gbW9kZSB0byBtYXRjaCB0aGUgY3VycmVudCByZWNvcmQgbGVuZ3RoLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNiAgICAgICAgCmRhdGU6IDk4LzAzLzI2IDE1OjI4OjE1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE2LzgKQWRkIHN1cHBvcnQgZm9yIC1qIG9wdGlvbi4gVGhpcyAKYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmlkZSBzaXplIGZvciAKdGhlIHN0cmlkZWQgZmlsZSBhY2Nlc3MgYmVuY2htYXJrLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNSAgICAgICAgCmRhdGU6IDk4LzAzLzI1IDE1OjI3OjAxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMQpGaXh1cCBoZWxwIHNjcmVlbiB0byByZWZsZWN0IG5ldyBvcHRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40ICAgICAgICAKZGF0ZTogOTgvMDMvMjUgMTU6MjE6MjM7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMS8xCkNoYW5nZSB0aGUgcmV2aXNpb24gbnVtYmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zICAgICAgICAKZGF0ZTogOTgvMDMvMjUgMTU6MjA6Mjg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTYvMQpGaXh1cCBzdXBwb3J0IGZvciBMaW51eAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMiAgICAgICAgCmRhdGU6IDk4LzAzLzI1IDEzOjU4OjA1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE2LzMKQnVnIGZpeGVzIGZvciBTUFAtVVgKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjEgICAgICAgIApkYXRlOiA5OC8wMy8yNSAxMDo0Mzo0NTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgCkluaXRpYWwgcmV2aXNpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClJDUyBmaWxlOiAgICAgICAgbGliYXN5bmMuYyx2OyAgIFdvcmtpbmcgZmlsZTogICAgbGliYXN5bmMuYwpoZWFkOiAgICAgICAgICAgIDEuMzkKbG9ja3M6ICAgICAgICAgICA7ICBzdHJpY3QKYWNjZXNzIGxpc3Q6ICAgCnN5bWJvbGljIG5hbWVzOgpjb21tZW50IGxlYWRlcjogICIgKiAiCnRvdGFsIHJldmlzaW9uczogMzk7ICAgIHNlbGVjdGVkIHJldmlzaW9uczogMzkKZGVzY3JpcHRpb246CkluaXRpYWwgdmVyc2lvbiBvZiBQT1NJWCBhc3luYyBJL08gbGlicmFyeSBpbnRlcmZhY2UuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zOSAgICAgICAgCmRhdGU6IDk4LzA3LzMwIDIyOjA1OjIxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDMvMQpBZGQgc3VwcG9ydCBmb3IgU29sYXJpcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzggICAgICAgIApkYXRlOiA5OC8wNy8wNyAxMzowMDozOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxLzExClJlbW92ZSBleHRyYSBiY29weSBpbiB0aGUgYXN5bmNfd3JpdGVfbm9fYmNvcHkgcGF0aC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjM3ICAgICAgICAKZGF0ZTogOTgvMDYvMTEgMDk6NDc6NTg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8zCkZpeCBzeW50YXggZXJyb3IgZm9yIElSSVggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zNiAgICAgICAgCmRhdGU6IDk4LzA2LzEwIDEwOjU2OjU1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEwLzEwCkFsbCBleGl0KClzIG5vdyBoYXZlIGEgdW5pcXVlIGV4aXQgdmFsdWUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zNSAgICAgICAgCmRhdGU6IDk4LzA1LzA3IDE0OjE3OjIwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIvMgpNYWtlIFZYRlMgYSBkZWZpbmUgaW4gdGhlIG1ha2UgY29tbWFuZC4gVGhpcyBtYWtlcyBtb3ZpbmcgdG8gb3RoZXIgdGFyZ2V0cwplYXNpZXIuIEl0IHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgSFBVWCBhbmQgVlhGUy4KQWxzbywgQWRkZWQgLVEgdG8gc3VwcG9ydCBvZmZzZXQvbGF0ZW5jeSBmaWxlIGdlbmVyYXRpb24gZm9yIGxhdGVyIHVzZQphcyBpbnB1dHMgdG8gcGxvdCBwcm9ncmFtLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzQgICAgICAgIApkYXRlOiA5OC8wNC8zMCAxNToxOTo1NDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxLzMKUmVtb3ZlIGRlYnVnIGNvZGUgdGhhdCBicmVha3MgNjQgYml0IG1vZGUgY29tcGlsZWQgY29kZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMzICAgICAgICAKZGF0ZTogOTgvMDQvMzAgMTM6MDk6MTM7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8yCk1ha2UgcmV0dmFsIGFuIGludCBzbyBpdCBjYW4gYmUgY2hlY2tlZCBmb3IgbGVzcyB0aGFuIHplcm8uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4zMiAgICAgICAgCmRhdGU6IDk4LzA0LzI5IDE2OjQ5OjM0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDUvMTEKSWYgb3ZlcnNob290aW5nIG9uIG51bWJlciBvZiBhc3luY3MgdGhlbiB0ZXJtaW5hdGUgdGhlIGxvb3AgYW5kCmxldCB0aGUgbmV4dCB0aW1lIHRocm91Z2ggcGljayB1cCB0aGUgSS9PLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMzEgICAgICAgIApkYXRlOiA5OC8wNC8yOSAxNjozNzo0OTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzLzMKUmVtb3ZlIGRlYnVnIGNvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMwICAgICAgICAKZGF0ZTogOTgvMDQvMjkgMTU6Mjk6NDg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8xCkZpeGVzIHNvIGl0IHdpbGwgY29tcGlsZSBvbiB0aGUgU0dJIE9yaWdpbi4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjI5ICAgICAgICAKZGF0ZTogOTgvMDQvMjkgMTE6NTY6Mjc7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMzYvMTAKV29yayBhcm91bmQgZm9yIGJ1ZyBpbiBQT1NJWCBhc3luYyBJL08gbGlicmFyeQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjggICAgICAgIApkYXRlOiA5OC8wNC8yOSAxMTowNDoyNjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxLzIKUmVtb3ZlIGRlYnVnIGNvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjI3ICAgICAgICAKZGF0ZTogOTgvMDQvMjkgMTE6MDI6NTQ7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNTQvMjcKQWRkZWQgcmVzb3VyY2Ugc2hvcnRhZ2UgcGF0aHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yNiAgICAgICAgCmRhdGU6IDk4LzA0LzI4IDE4OjEyOjUxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMwpBZGQgYXN5bmMgSS9PIHRvIHRoZSB0aHJvdWdocHV0IHRlc3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yNSAgICAgICAgCmRhdGU6IDk4LzA0LzI4IDE3OjEyOjQwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDMvMQpmaXggd2FpdF9mb3JfIHJvdXRpbmUgdG8gcmVzZXQgd190YWlsIGlmIGl0ZW0gYmVpbmcgcmVtb3ZlZCBpcyBhbHNvIHRoZSB0YWlsLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjQgICAgICAgIApkYXRlOiA5OC8wNC8yOCAxNjoxNDowNjsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxLzMKYnVnIGZpeC4gMiBjYWxscyB0byBtYWxsb2MgZm9yIGFsaWduZWQgbWVtb3J5LgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjMgICAgICAgIApkYXRlOiA5OC8wNC8yOCAxMTo1NzozOTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzNy8xMwpMaW1pdCBtYXggYXN5bmMgb3BlcmF0aW9ucyB0byA2MC4gQmV5b25kIHRoaXMgdGhlcmUgYmUgZHJhZ29ucy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjIyICAgICAgICAKZGF0ZTogOTgvMDQvMjggMTA6MTc6MjI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTI3LzQyCkNvbXBsZXRlZCBzdXBwb3J0IGZvciBub19iY29weSBQT1NJWCBhc3luYyBJL08gaW4gdGhlIGFzeW5jX3dyaXRlX25vX2NvcHkgcGF0aC4KVGhpcyBhbGxvd3Mgd3JpdGUgdGVzdHMgdG8gcGVyZm9ybSBhc3luYyBJL08gd2l0aCBidWZmZXJzIHJlbGVhc2VkIHdoZW4gCnRoZSB3cml0ZSBpcyBjb21wbGV0ZWQuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yMSAgICAgICAgCmRhdGU6IDk4LzA0LzI3IDE2OjU5OjE0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDI0Ni85CkFkZCBhaW9fd3JpdGUoKSB0byB0aGUgd3JpdGUgYW5kIHJlLXdyaXRlIHRlc3RzLiBUaGlzIHByb3ZpZGVzClBPU0lYIGFzeW5jIEkvTyBmb3IgdGhlIHRob3NlIHRlc3RzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMjAgICAgICAgIApkYXRlOiA5OC8wNC8yNCAxNjoyMDo1NTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxNS8zCk1vdmUgVlhfRElSRUNUIHRvIHRoZSBsaWJhc3luYyBtb2R1bGUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xOSAgICAgICAgCmRhdGU6IDk4LzA0LzI0IDE1OjUwOjEzOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDQyLzExCkFkZCBzdXBwb3J0IGZvciBWeEZTIFZYX0RJUkVDVCAKSWRlYSBpcyB0byB1c2UgVlhfRElSRUNUIGFuZCBQT1NJWCBhc3luYyBJL08gdG9nZXRoZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE4ICAgICAgICAKZGF0ZTogOTgvMDQvMjQgMTI6MzY6NDI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTMvNQpGaXggc29tZSBlcnJvciBwcmludGZzIHRvIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBvZmZfdC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE3ICAgICAgICAKZGF0ZTogOTgvMDQvMjQgMTI6MTg6MTE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNy83CkZpeGVzIGZvciBMUDY0IG1vZGUuIG9mZl90IGNoYW5nZWQgdG8gb2ZmNjRfdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE2ICAgICAgICAKZGF0ZTogOTgvMDQvMjQgMDk6MzM6MzI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMjc1LzM1CkFkZCBjb21tZW50cyBhbmQgZml4IGZvciBMUDY0IG1vZGVsIG9uIGhwdXguCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xNSAgICAgICAgCmRhdGU6IDk4LzA0LzIzIDE2OjU4OjA2OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE2Ny8xMwpNYWtlIGxpYmFzeW5jIGxhcmdlIGZpbGUgYXdhcmUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xNCAgICAgICAgCmRhdGU6IDk4LzA0LzIyIDE1OjU4OjQ1OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMQpDaGFuZ2UgdmVyc2lvbiB0byBvbmx5IGRpc3BsYXkgcmNzIHZlcnNpb24gaWQuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMyAgICAgICAgCmRhdGU6IDk4LzA0LzIyIDE1OjUyOjU0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEvMgpBZGQgUkNTIHZlcnNpb24gc3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMTIgICAgICAgIApkYXRlOiA5OC8wNC8yMiAxMTozOTozNTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA1Mi84CkFkZCBmaXJld2FsbCB0byBwcmV2ZW50IGluIGZsaWdodCBjaGFuZ2VzIHRvIHRoZSBhaW9jYiBzdHJ1Y3R1cmUuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMSAgICAgICAgCmRhdGU6IDk4LzA0LzIyIDA5OjEwOjM2OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDU3LzE5CkJ1ZyBmaXhlcyBmb3IgNjQgYml0IG1vZGUgb24gSVJJWCwgYW5kIGFkZGl0aW9uIApvbiB0aGUgaW50ZXJuYWwgaW51c2UgcXVldWUgdG8gaW5zdXJlIHRoYXQgdGhlCmludGVybmFsIHN0cnVjdF9jYWNoZV9lbnQgc3RydWN0dXJlcyBhcmUgbm90IHJlbGVhc2VkCnRvbyBlYXJseSB3aGVuIGRvaW5nIGRpcmVjdCBJL08gKGFzeW5jX3JlYWRfbm9fY29weSkuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMCAgICAgICAgCmRhdGU6IDk4LzA0LzIxIDA5OjM0OjE0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE4LzEwCkltcHJvdmUgZXJyb3IgbWVzc2FnZXMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS45ICAgICAgICAKZGF0ZTogOTgvMDQvMjAgMTY6MDY6MjE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNTMvNTAKSW96b25lIG5vdyA2NCBiaXQgYXBwbGljYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjggICAgICAgIApkYXRlOiA5OC8wNC8yMCAxMDoxNzo1OTsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAwLzAKbm8gY2hhbmdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS43ICAgICAgICAKZGF0ZTogOTgvMDQvMTcgMDg6NDk6MTY7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTUvMgpPcHRpbWl6YXRpb24gb24gYXN5bmMgb3BlcmF0aW9ucy4gSnVzdCBhZGQgb25lIHRvIHRoZSBlbmQKb2YgdGhlIGxpc3QgaWYgdGhlIGxpc3QgYWxyZWFkeSBoYXMgbW9yZSB0aGFuIG9uZSBpdGVtLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNiAgICAgICAgCmRhdGU6IDk4LzA0LzE3IDAwOjAwOjMwOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEwLzIKTWFrZSBjYW5jZWwga2VlcCB0cnlpbmcgdW50aWwgaXQgc3VjY2VlZHMuIE90aGVyd2lzZSB0cmFuc2ZlcnMgYWZ0ZXIgdGhlIGJ1ZmZlcgppcyBmcmVlZCBjYW4gb2NjdXIuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS41ICAgICAgICAKZGF0ZTogOTgvMDQvMTYgMTY6NDk6Mjg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNDkvNApJbXByb3ZlIGVycm9yIGhhbmRsaW5nIHdoZW4gcnVubmluZyBtYWNoaW5lIG91dCBvZiBtZW1vcnkuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS40ICAgICAgICAKZGF0ZTogOTgvMDQvMTYgMTU6MjY6NDE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTE4LzI4CmFkZGVkIGFzeW5jX3JlYWRfbm9fY29weSgpLiBUaGlzIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gbGV0IHRoZSAKbGlicmFyeSBzcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgYW5kIHBlcmZvcm0gdGhlIGFzeW5jIEkvTwp3aXRob3V0IHVud2FudGVkIGJjb3B5cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMgICAgICAgIApkYXRlOiA5OC8wNC8xNCAxMTo1NjoyMzsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzNi8xMApBZGQgc3VwcG9yZiBmb3IgLWsuIFdoZW4gdXNpbmcgUE9TSVggYXN5bmMgSS9PIHVzZQp0aGUgYnVmZmVyIHNwZWNpZmllZCBhbmQgZG8gbm90IHBlcmZvcm0gYW55IGJjb3B5cy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjIgICAgICAgIApkYXRlOiA5OC8wNC8xMyAxMDozNToyMDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiA1LzcKRml4dXAgZm9yIGVycm9yIHBhdGggdG8gcHJvcGFnYXRlIGFueSBzbWFsbCB0cmFuc2ZlcnMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xICAgICAgICAKZGF0ZTogOTgvMDQvMTMgMTA6MjE6MjM7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIApJbml0aWFsIHJldmlzaW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpSQ1MgZmlsZTogICAgICAgIG1ha2VmaWxlLHY7ICAgV29ya2luZyBmaWxlOiAgICBtYWtlZmlsZQpoZWFkOiAgICAgICAgICAgIDEuMjAKbG9ja3M6ICAgICAgICAgICA7ICBzdHJpY3QKYWNjZXNzIGxpc3Q6ICAgCnN5bWJvbGljIG5hbWVzOgpjb21tZW50IGxlYWRlcjogICIjICIKdG90YWwgcmV2aXNpb25zOiAyMDsgICAgc2VsZWN0ZWQgcmV2aXNpb25zOiAyMApkZXNjcmlwdGlvbjoKSW5pdGlhbCB2ZXJzaW9uIG9mIG1ha2VmaWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4yMCAgICAgICAgCmRhdGU6IDk4LzEwLzA2IDEwOjM2OjIyOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDg3LzI4CkFkZCBjb21tZW50cyB0byBkZXNjcmliZSBlYWNoIHRhcmdldHMgY2FwYWJpbGl0aWVzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMTkgICAgICAgIApkYXRlOiA5OC8xMC8wNiAwOTo1OToxODsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzLzMKRml4IHNwZWxsaW5nIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xOCAgICAgICAgCmRhdGU6IDk4LzEwLzA2IDA5OjU4OjI5OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE4LzMKQWRkIHN1cHBvcnQgZm9yIFdpbmRvd3MgYnVpbGQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE3ICAgICAgICAKZGF0ZTogOTgvMDgvMTcgMTY6NDQ6NTY7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8yCkZpeGVzIGZvciBTb2xhcmlzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xNiAgICAgICAgCmRhdGU6IDk4LzA3LzMwIDIyOjA1OjMzOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIwLzEKQWRkIHN1cHBvcnQgZm9yIFNvbGFyaXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE1ICAgICAgICAKZGF0ZTogOTgvMDUvMDcgMTQ6MTc6MjY7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMTMvMTMKTWFrZSBWWEZTIGEgZGVmaW5lIGluIHRoZSBtYWtlIGNvbW1hbmQuIFRoaXMgbWFrZXMgbW92aW5nIHRvIG90aGVyIHRhcmdldHMKZWFzaWVyLiBJdCByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIEhQVVggYW5kIFZYRlMuCkFsc28sIEFkZGVkIC1RIHRvIHN1cHBvcnQgb2Zmc2V0L2xhdGVuY3kgZmlsZSBnZW5lcmF0aW9uIGZvciBsYXRlciB1c2UKYXMgaW5wdXRzIHRvIHBsb3QgcHJvZ3JhbS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjE0ICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMTY6MDI6NDI7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8wCkFkZCBSQ1MgdmVyc2lvbiBpZHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMyAgICAgICAgCmRhdGU6IDk4LzA0LzIyIDEzOjU4OjU0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDYvNgpGb3Igbm93IG9ubHkgYnVpbGQgdGhlIFNHSSB0YXJnZXRzIGluIDMyIGJpdCBtb2RlLiAKVGhlcmUgaXMgc29tZSBwcm9ibGVtIHdpdGggUE9TSVggYXN5bmMgSS9PIGFuZCA2NCBiaXQgYXBwcy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjEyICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMTI6MDg6MjU7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8zCkxldCB0aGUgSVJJWDY0IHRhcmdldCBkZWZhdWx0IHRvIGl0cyBkZWZhdWx0IGNvbXBpbGUgbW9kZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjExICAgICAgICAKZGF0ZTogOTgvMDQvMjIgMDk6MTA6NTQ7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMy8zCkJ1ZyBmaXhlcyBmb3IgNjQgYml0IG1vZGUgb24gSVJJWCwgYW5kIGFkZGl0aW9uIApvbiB0aGUgaW50ZXJuYWwgaW51c2UgcXVldWUgdG8gaW5zdXJlIHRoYXQgdGhlCmludGVybmFsIHN0cnVjdF9jYWNoZV9lbnQgc3RydWN0dXJlcyBhcmUgbm90IHJlbGVhc2VkCnRvbyBlYXJseSB3aGVuIGRvaW5nIGRpcmVjdCBJL08gKGFzeW5jX3JlYWRfbm9fY29weSkuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS4xMCAgICAgICAgCmRhdGU6IDk4LzA0LzIxIDA5OjI5OjU3OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDE3LzE3CkltcHJvdmUgZGVwZW5kZW5jaWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS45ICAgICAgICAKZGF0ZTogOTgvMDQvMjAgMTY6MDU6NDg7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNTgvMjkKSW96b25lIG5vdyA2NCBiaXQgYXBwbGljYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjggICAgICAgIApkYXRlOiA5OC8wNC8yMCAxMDoxNzo0NDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAwLzAKKioqIGVtcHR5IGxvZyBtZXNzYWdlICoqKgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNyAgICAgICAgCmRhdGU6IDk4LzA0LzE2IDE2OjUwOjExOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDYvNgpIYXZlIHRoZSBTR0kgYnVpbGQgMzIgYml0IGFwcCB0b28uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmV2aXNpb24gMS42ICAgICAgICAKZGF0ZTogOTgvMDQvMTUgMTY6NDg6MDk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNS81CkZpeCB0byBtYWtlIGJ1aWxkIG9uIDkuMDUgYW5kIDEwLjEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjUgICAgICAgIApkYXRlOiA5OC8wNC8xMyAxMDoyMjozNDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAxNC82CkFkZCBzdXBwb3J0IGZvciBsaWJhc3luYyBsaWJyYXJ5LgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuNCAgICAgICAgCmRhdGU6IDk4LzA0LzExIDExOjU3OjM0OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDEwLzEwCkFBZGQgc3VwcG9ydCBmb3IgUE9TSVggYXN5bmMgSS9PIHRlc3RpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXZpc2lvbiAxLjMgICAgICAgIApkYXRlOiA5OC8wMy8zMSAxMToyMTozNDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAyNC8wCkFkZCBzdXBwb3J0IGZvciBTR0kgSVJJWCBhbmQgU0dJIElSSVg2NAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMiAgICAgICAgCmRhdGU6IDk4LzAzLzI1IDEzOjU5OjE4OyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICBsaW5lcyBhZGRlZC9kZWw6IDIxLzkKRml4ZXMgZm9yIFNQUC1VWAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJldmlzaW9uIDEuMSAgICAgICAgCmRhdGU6IDk4LzAzLzI1IDEwOjQ4OjIxOyAgYXV0aG9yOiBjYXBwczsgIHN0YXRlOiBFeHA7ICAKSW5pdGlhbCByZXZpc2lvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGRlZCBzdXBwb3J0IGZvciBCSUZGIGZpbGUgb3V0cHV0LiBJb3pvbmUgY2FuIG5vdyB3cml0ZSBFeGNlbCBzcHJlYWRzaGVldCAKZm9ybWF0LiBUaGlzIGFsbG93cyBvbmUgdG8gZGlyZWN0bHkgYWNjZXNzIHRoZSBFeGNlbCBzcHJlYWRzaGVldCB3aXRob3V0IApuZWVkaW5nIHRvIGltcG9ydCB3aXRoIHRhYiBhbmQgc3BhY2UgZGVsaW1pdGVkIG1ldGhvZC4KCkFkZGVkIHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzIGFuZCB0aHJlYWRzIGZvciBTb2xhcmlzLgoKQWRkIHN1cHBvcnQgZm9yIEZyZWVCU0QKCkNoYW5nZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSB0byBhdm9pZCBub2RhbGl6YXRpb24gd2l0aCB2YXJpb3VzIHNwaW5kbGUgY291bnRzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpWZXJzaW9uIDMuMzoKQ2hhbmdlZCBuYW1lIG9mIHByb2Nlc3Nvcl9iaW5kIHRvIGlvel9wcm9jZXNzb3JfYmluZCB0byBhdm9pZCBjb2xsaXNpb24Kd2l0aCBTVlI1LjQuTVAgc2hhcmVkIGxpYnJhcnkuClJlbW92ZWQgbGVhZGluZyB0YWIgb24gYW4gI2lmZGVmIHRoYXQgY2F1c2VkIHNvbWUgY29tcGlsZXJzIHRvIGdldCBzaWNrLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpWZXJzaW9uIDMuNDoKQWRkIHN1cHBvcnQgZm9yIE9wZW5CU0QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVmVyc2lvbiAzLjY6CkxvdHMgb2YgY29kZSBjbGVhbnVwLiAKQWRkZWQgc3VwcG9ydCBmb3IgT1NGMSBvbiB0aGUgREVDIEFscGhhLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpWZXJzaW9uIDMuNzoKQWRkIHN1cHBvcnQgZm9yIE9TRiBWZXJzaW9uIDQuCkFkZCB0aW1lciByZXNvbHV0aW9uIHByb2JsZW0gZGV0ZWN0aW9uLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIE9TRiBWZXJzaW9uIDUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClZlcnNpb24gMy4xMzoKQWRkIHN1cHBvcnQgZm9yIExpbnV4IHRvIHVzZSBwdGhyZWFkcy4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClZlcnNpb24gMy4xNjoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIE5ldGJzZCAKQWRkIHN1cHBvcnQgZm9yIExhcmdlZmlsZXMgYW5kIEFzeW5jIEkvTyB0byBMaW51eCB0YXJnZXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVmVyc2lvbiAzLjE3Ogo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZW1vdmVkIHNtYWxsIG1vZGVsIGZvciBMaW51eC4gSW4gdGhlIHBhc3QgSW96b25lIHdhcyBmb3JjZWQgdG8gCnVzZSBhIHNtYWxsIG1vZGVsIGZvciB0ZXN0aW5nIExpbnV4IGFzIHRoZSBub3JtYWwgbG9hZCBjYXVzZWQKUmVkaGF0IHRvIHBhbmljLiBSZWRoYXQgdXNlcnMgaGF2ZSB0b2xkIG1lIHRoYXQgdGhlIHN5c3RlbSBub3cKd29ya3MgZmluZSB3aXRoIHRoZSBub3JtYWwgbG9hZC4gVGhleSBoYXZlIHRlc3RlZCBSZWRoYXQgNi4xIGFuZAppdCBubyBsb25nZXIgcGFuaWNzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpWZXJzaW9uIDMuMTg6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciBCU0RJLiBCYXNlLCBsYXJnZWZpbGVzLCBwdGhyZWFkLiBObyBhc3luYyBJL08KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xOSAgICAgICAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRhdGU6IDIwMDAvMDMvMDggMTQ6NDc6MjE7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogNC8xCkFkZCBzdXBwb3J0IGZvciBnZXRwYWdlc2l6ZS4gVGhpcyBpcyB1c2VkIHdoZW4gYXZhaWxhYmxlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIwICAgICAgICAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGF0ZTogMDAvMDQvMDEgMTE6MDQ6NTk7ICBhdXRob3I6IGNhcHBzOyAgc3RhdGU6IEV4cDsgIGxpbmVzIGFkZGVkL2RlbDogMi8yCkZpeCBmb3IgbXVsdGlwbGUgZmlsZW5hbWVzIGFuZCByYW5nZSBvZiB0aHJlYWRzIGJlaW5nIHVzZWQuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjEgICAgICAgIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkYXRlOiAwMC8wNC8wMSAxMToxMDo1NDsgIGF1dGhvcjogY2FwcHM7ICBzdGF0ZTogRXhwOyAgbGluZXMgYWRkZWQvZGVsOiAzLzEKU1BQVVggZG9lcyBub3QgaGF2ZSBnZXRwYWdlc2l6ZS4uLiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMiAgICAgICAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciBMaW51eC1pYTY0CkFkZCBzdXBwb3J0IGZvciBtbWFwICYgbm9ybWFsIGZpbGUgSS9PIG1peGluZy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMyAgICAgICAgCkZpeHVwcyBmb3IgSUJNIEFJWC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNCAgICAgICAgCkZpeHVwcyBmb3IgQlNEIDIuNyAgKE5ldyByZWxlYXNlIG9mIEJTRCB0aGF0IHN1cHBvcnRzIE9fU1lOQykKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNyAgICAgICAgCkZpeHVwcyBmb3IgQ3lnbnVzIGNvbXBpbGVyIGNoYW5nZXMuIChXaW5kb3dzIHRhcmdldHMpLiBXaXRoIHRoaXMKY2hhbmdlIElvem9uZSB3aWxsIGNvbXBpbGUgd2l0aCBhdCBsZWFzdCAyIHZlcnNpb25zIG9mIHRoZSBDeWdudXMKY29tcGlsZXJzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI4ICAgICAgICAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgd2hpbGUgaG9sZGluZyBsb2NrZigpIG9uIHRoZSBmaWxlLgpUaGlzIHR1cm5zIG91dCB0byBiZSBpbXBvcnRhbnQgYXNwZWN0IG9mIE5GUyBiZW5jaG1hcmtpbmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjkgICAgICAgIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2UgY2FsbHMgdG8gbG9ja2YoKSB0byBjYWxscyB0byBmY250bCgpLiBUaGlzIGlzIG1vcmUgcG9ydGFibGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzAgICAgICAgIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgc3VwcG9ydCBmb3IgdmFyaWFibGUgY29tcHV0ZSBjeWNsZSB0aW1lIGJlZm9yZSBlYWNoIEkvTwpvcGVyYXRpb24uIFRoaXMgYWxsb3dzIG9uZSB0byBtb3JlIGFjY3VyYXRseSByZXByZXNlbnQKYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiB0aGF0IGlzIGRvaW5nIGNvbXB1dGUvcmVhZC9jb21wdXRlL3JlYWQgCnN0eWxlIG9wZXJhdGlvbnMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzAgdGhyb3VnaCAzLjM3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciByZWFkIGFuZCB3cml0ZSB0ZWxlbWV0cnkgZmlsZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNDAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvZGUgY2xlYW51cCBmb3IgcG9wZW4oKSB1c2FnZSBpbiAtTSBwYXRoLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjQxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4IGZvciBvcHMvc2VjIGluIHJld3JpdGUgdGhyb3VnaHB1dCB0ZXN0aW5nLgpBZGRlZCBhdmVyYWdlIHRocm91Z2hwdXQgdG8gb3V0cHV0IGluIHRocm91Z2hwdXQgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy40MiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQnVnIGZpeCBmb3IgcmVhZCBhbmQgcmUtcmVhZC4gVXNhZ2Ugb2YgdW4taW5pdGlhbGl6ZWQgdmFyaWFibGUgdGhhdApjYXVzZWQgcmVzdWx0cyB0byBiZSB3cm9uZy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy40MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIGxhdGVuY3kgcGxvdCBkYXRhIGZvciB0aHJvdWdocHV0IHRlc3RpbmcuCkVhY2ggY2hpbGQgdGhyZWFkL3Byb2Nlc3MgZ2V0cyBpdHMgb3duIGRhdGEgZmlsZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy40NCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRW5oYW5jZSBjb21wYXRpYmlsaXR5IG9mIG11bHRpLXRocmVhZC9wcm9jIGxhdGVuY3kgb2Zmc2V0cyB3aXRoIAp0ZWxlbWV0cnkgZmlsZSBzdXBwb3J0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjQ1IHRocm91Z2ggMy40OAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGRlZCBsYXRlbmN5L29mZnNldCBwbG90IGRhdGEgZmlsZXMgZm9yIGFsbCB0aHJvdWdocHV0IHRlc3RzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjQ5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeGVkIGNvbXBpbGUgd2FybmluZyBmb3IgTGludXggb2ZmNjRfdCByZWRlZmluaXRpb24uCkFkZCBTb2xhcmlzMi42IHRhcmdldCB3aXRoIHNpbXBsZSBidWlsZC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy41MAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGRlZCBzdXBwb3J0IGZvciBvcGVuYnNkLXRocmVhZHMKQ2xlYW51cCBmb3IgcGFnZSBzaXplIGZvby4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy41MSwgMy41MiwgMy41Mwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDbGVhbnVwIGZvciBuZXcgcmFuZG9tIHdyaXRlIHRlc3RpbmcgaW4gdGhyb3VnaHB1dCBtb2RlLgpJbXByb3ZlIHBlcnJvciBoYW5kbGluZy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy41NAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgLWcgbWF4ZmlsZXNpemUgc28gcGVvcGxlIHdpbGwgbm90IGhhdmUgdG8gZWRpdCB0aGUgc291cmNlIHRvIAp0ZXN0IGZpbGVzIGJpZ2dlciB0aGFuIDUxMiBNYnl0ZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNTUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3VwcG9ydHMgLW4gYW5kIC1nIHRvIHNldCB0aGUgbWluIGFuZCBtYXggZmlsZSBzaXplcyB0byBiZSB1c2VkIGZvciAKYW4gYXV0byBtb2RlIHJ1bi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy41Ngo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGRlZCBzdXBwb3J0IGZvciBTQ08gVW5peHdhcmUgU1ZSNSB3aXRoIGdjYyBjb21waWxlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjU3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeGVkIGJ1ZyB3aGVyZSBmaWxlIGxvY2tpbmcgd2FzIG5vdCBiZWluZyB1c2VkIHdoZW4KX0xBUkdFX0ZJTEU2NF9TT1VSQ0Ugd2FzIGRlZmluZWQgaW4gcmVhZF9wZXJmX3Rlc3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkZWQgLXogb3B0aW9uLiBUaGlzIGlzIHRvIGJlIHVzZWQgd2l0aCB0aGUgLWEgb3B0aW9uLiBJdApwcm92aWRlcyBtb3JlIGNvbXBsZXRlIHRlc3RpbmcgZm9yIHNtYWxsIHJlY29yZCBzaXplcyAKd2hlbiB0aGUgZmlsZSBzaXplcyBhcmUgdmVyeSBsYXJnZS4KRml4ZWQgLWEgc28gdGhhdCB0aGUgY3Jvc3Mtb3ZlciBtZWNoYW5pc20gd29ya3MgY29ycmVjdGx5Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjU5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBhIGJ1ZyB3aGVyZSB0aGUgdXNlciBzcGVjaWZpZWQgLVIgLXMgYnV0IGRpZCBub3Qgc3BlY2lmeQotYSBvciAtci4gVGhpcyBjYXVzZWQgdGhlIEV4Y2VsIHJlcG9ydCB0byBwcmludCBhIGJ1bmNoCm9mIHplcm9zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjYwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBoZWFkZXJzIGluIHRoZSBFeGNlbCBvdXRwdXQgd2hlbiBjcm9zcyBvdmVyIGtpY2tzIGluLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjYxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGVkIC15IGFuZCAtcSB0byBzZXQgcmVjb3JkIHNpemUgcmFuZ2UKQWRkZWQgY29tbWFuZCBsaW5lIHRvIG91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjYyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClB1dCBhdXRvIGNyb3NzIG92ZXIgYmFjayB0byAxNiBNZWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy42Mwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNaW5vciBjb2RlIGNsZWFudXBzIGZvciBlcnJvciBtZXNzYWdlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlLW9yZ2FuaXplIHRoZSBoZWxwIGxpc3RpbmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNjUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGxhYmVscyB0byB0aGUgbGF0ZW5jeS9vZmZzZXQgb3V0cHV0IGZpbGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjY2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGVkIFJhbmR5IER1bmxhcCB0byB0aGUgbGlzdCBvZiBjb250cmlidXRvcnMuIFRoYW5rcyBSYW5keSAhIQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjY3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBsYWJlbHMgd2hlbiB1c2luZyAtUiBhbmQgLWkgb3B0aW9ucyB0b2dldGhlci4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy42OAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDb2RlIGNsZWFudXAuIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy42OQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQcmV2ZW50IG1peGVkIG1vZGVzLiBBdXRvIGFuZCB0aHJvdWdocHV0LgpBZGRlZCBzdXBwb3J0IGZvciB0aGUgUGx1cyBleHRlbmRlZCBvcHRpb25zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjcwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGVkIHN1cHBvcnQgZm9yIC0rdSBvcHRpb24uIENwdSB1dGlsaXphdGlvbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy43MQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGRlZCBjb21tZW50IGZvciB0aGUgc3VwcG9ydCBmb3IgLSt1IG9wdGlvbi4gQ3B1IHV0aWxpemF0aW9uLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjcyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGVkIG5ldHdvcmsgdGVzdGluZyBtb2RlLiAtK20gIChFeHBlcmltZW50YWwpIFRlc3RlZDogTGludXgsIEhQLVVYCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNzMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkZWQgLXhmbGFnIHN1cHBvcnQgZm9yIGRpc3RyaWJ1dGVkIG1vZGUuCkhhbmRsZSBpbnRlcnJ1cHRzIHdoZW4gaW4gZGlzdHJpYnV0ZWQgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy43NAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgZGVmYXVsdCBmb3IgUkVNT1RFX1NIRUxMCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNzUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29kZSBjbGVhbnVwLiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy43Ngo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQb3J0YWJpbGl0eSBjaGFuZ2UgZm9yIHNobWF0KCkuCkFkZGVkIGFuZCBleGFtcGxlIG9mIGNsaWVudF9saXN0IGZpbGUgdG8gdGhlIGRpc3RyaWJ1dGlvbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy43Nwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpEaXNhYmxlIENQVSB1dGlsaXphdGlvbiBpbiBkaXN0cmlidXRlZCBtb2RlLgpCdWcgZml4IGZvciBDUFUgdXRpbGl6YXRpb24gaW4gbm9ybWFsIG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuNzgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGNvbXBhdGliaWxpdHkgd2l0aCBBSVggZm9yIHNobWF0KCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy43OQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXggdGhyb3VnaHB1dCBsYWJlbHMgd2hlbiB1c2VyIGlzIHNlbGVjdGluZyBzcGVjaWZpYyB0ZXN0cyB3aXRoIC1pIG9wdGlvbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy44MAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZW1vdmUgZGVwZW5kZW5jeSBvbiBtaW4oKSBhbmQgbWF4KCkuIFRoZXkgYXJlIG5vdCBwb3J0YWJsZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy44MQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciA2NGJpdCBhcmNoaXRlY3R1cmVzLiBCcmFkIFNtaXRoLiBPcGVuQlNELgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjgzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCAtK20gY2x1c3RlciBvcHRpb24gdG8gdGhlIGhlbHAgbGlzdCBhbmQgdGhlIGxpc3Qgb2Ygb3B0aW9ucy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy44NCAtPiAzLjg4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBjbHVzdGVyIG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuODkgLT4gMy45MQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTdXBwb3J0IGZvciBoZXRlcm9nZW5lb3VzIGNsdXN0ZXJzLCBidWcgZml4IGZvciAtQyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy45MiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGEgc21hbGwgc2xlZXAgaW4gdGhlIGNsaWVudCBzbyB0aGUgbWFzdGVyJ3MgdGVybWluYXRlIG1lc3NhZ2UgCmNhbiBhcnJpdmUgYmVmb3JlIHRoZSBjbGllbnQgZXhpdHMgYW5kIGNsb3NlcyB0aGUgY2hhbm5lbC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy45MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIFVXSU4gKFVuaXggZm9yIFdpbmRvd3MpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuOTQgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXggZm9yIGNsaWVudCdzIHdvcmtpbmcgZGlyIGluIGNsdXN0ZXIgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy45NSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRW5hYmxlIG1vcmUgb3B0aW9ucyBpbiBDbHVzdGVyIG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuOTYgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciBTb2xhcmlzIDggaW4gNjQtYml0IG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuOTcgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkxpbnV4IGRlbWFuZHMgYSBmdW5jdGlvbiBwcm90byBmb3IgZnVuY3Rpb25zIHRoYXQgdGFrZSBmbG9hdHMgYXMgYXJncy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy45OCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgU29sYXJpcyB0byBtYWtlIHRoZWlyIHNpbGx5IGNvbXBpbGVyIGVhdCByZWFzb25hYmxlIApmdW5jdGlvbiBwcm90b3R5cGVzLiAoeWVjaCAhISkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy45OSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHByb3RvY29sIHZlcnNpb24gY2hlY2tpbmcgZm9yIGRpc3RyaWJ1dGVkIG1lc3NhZ2VzLgpBZGQgc3VwcG9ydCBmb3IgQUlYIDUuMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEwMCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4ZXMgZm9yIHNvY2tldCBwb3J0cy4gTmVlZGVkIHRvIGJlIGluIG5ldHdvcmsgZm9ybWF0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEwMSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIFJTSCBlbnZpcm9ubWVudCBvdmVycmlkZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMDIgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkltcHJvdmUgT19ESVJFQ1QgYW5kIFZYX0RJUkVDVCBzbyB0aGF0IHRlc3RpbmcgaXMgZG9uZQpvbiB0aGUgY29ycmVjdCBmaWxlIG9uIHRoZSBjb3JyZWN0IGNsaWVudC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMDMgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvZGUgY2xlYW51cC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMDQgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvZGUgY2xlYW51cC4gQnVnIGZpeCBmb3IgT19ESVJFQ1QgaW4gcmVhZF9wZXJmX3Rlc3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTA1IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4IGZvciBUUlU2NCBhbmQgT1NGIHdoZXJlIHJlY2xlbiB3YXMgbm90IGdldHRpbmcgZGlzcGxheWVkLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEwNiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIC0rZCBmaWxlIEkvTyBkaWFnbm9zdGljIG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTA3IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXhlcyBmb3IgdGhlIGF3ZXNvbWUgRGlhZ25vc3RpY3MgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMDggCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnR1cm4gb2ZmIGNkZWJ1ZwpTd2l0Y2ggY2hpbGQgY29tbSB0byBTT0NLX1NUUkVBTS4gQXZvaWQgVURQIGZyYWdtZW50IHByb2JsZW1zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEwOSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGZvciAiZGlzcnVwdCIgYW5kIERpcmVjdCBJL08uIE5lZWRzIHRvIGJlIHBhZ2Ugc2l6ZSBhbmQgYWxpZ25lZC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMTAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNsZWFudXAgZm9yIC1XYWxsIHRvIGFsbCBzb3VyY2UgZmlsZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTExIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXhlcyBmb3IgVVdJTiBjb21waWxlIHdhcm5pbmdzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExMiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4ZXMgZm9yIFdpbmRvd3MgY29tcGlsZSB3YXJuaW5ncy4gZG9fY29tcHV0ZSgpIHByb3RvLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExMyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGRlZmluaXRpb24gY2hhciAqZHVtYiBmb3IgU29sYXJpcyB0byBhbGxvY19tZW0oKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExNCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29kZSBjbGVhbnVwIGZvciBBSVguIE5vIGFzeW5jIHN1cHBvcnQgY2F1c2VkIHdhcm5pbmdzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExNSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGZvciBTb2xhcmlzIHJldHVybmluZyBzaG9ydCByZWFkcygpIGZyb20gc29ja2V0IHRvIGNoaWxkX2xpc3Rlbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMTYgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciBNYWMgT1MgWAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExNyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGNvZGUgdG8gc2V0IHRoZSBzb2NrZXQgYnVmZmVyIHdpbmRvdyBzaXplLiBTb2xhcmlzIG5lZWRzIHRoaXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTE4IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgT19EaXJlY3QgZm9yIEFJWAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjExOS0+IDMuMTIwIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXggc29tZSBjb21waWxlciB3YXJuaW5ncyBhbmQgaW1wbGVtZW50IHRoZSAtK3ggb3B0aW9uIGZvciAKc2V0dGluZyB0aGUgbXVsdGlwbGllciB1c2VkIGZvciBmaWxlIGFuZCByZWNvcmQgc2l6ZSBpbmNyZW1lbnRpbmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTIxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgY2hhbmdlcyBmcm9tIERlYmlhbi4gQWRkIHBvd2VycGMgYW5kIHNwYXJjLgpBZGQgY2hhbmdlcyB0byBmaXggd2FybmluZyBvbiBJcml4IGFuZCBJcml4NjQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMjIgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXggZm9yIGNsdXN0ZXIgbW9kZS4gTmVlZCB0byBiemVybyBidWZmZXJzIGJlZm9yZSBzcHJpbnRmIG9yIHNzY2FuZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEyMyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQnVnIGZpeCBmb3IgaGFuZGxpbmcgYWxsIGNoYXJzIHRoYXQgYXJlIHRyYW5zcG9ydGVkIG92ZXIgbWVzc2FnaW5nLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEyNCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU2ltcGxpZnkgdGhlIGNoaWxkJ3MgZGVidWcgb3V0cHV0IG1lY2hhbmlzbS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMjUgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBmb3Igc3RvbmV3YWxsIGluIGNsdXN0ZXIgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMjYgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClNocmluayB0aGUgY2xpZW50X25ldXRyYWxfY29tbWFuZCBzdHJ1Y3R1cmUgc28gaXQgZml0cyBpbiBhIHNpbmdsZQpVRFAgcGFja2V0LiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMjcgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkltcHJvdmUgZGVidWcgY29kZSBmb3IgY2x1c3RlciBtb2RlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEyOCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVkdWNlIHRoZSBtZXNzYWdlIHRyYWZmaWMgZHVlIHRvIG1hc3RlcidzIGRpc3RyaWJ1dGlvbiBvZiBTVE9QLiBPbmx5IApvbmUgU1RPUCBkaXN0cmlidXRpb24gaXMgbmVlZGVkLiBNb3JlIGNhbiBsZWFkIHRvIHNvY2tldCBidWZmZXIgb3ZlcmZsb3dzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEyOSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQnplcm8gc3RydWN0dXJlcyBvbiB0aGUgc3RhY2sgYmVmb3JlIHVzaW5nLiBObyBwcm9ibGVtIHNlZW4gYnV0IGl0CmlzIGEgcG9zc2libGUgaG9sZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMzAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBlcnJvciBjaGVja2luZyBmb3IgdGhlIGNsaWVudCBmaWxlIGNvbnRlbnRzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzMSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVXNlIHByZWFsbG9jKCkgZm9yIEhQLVVYIHRvIGNyZWF0ZSBmaWxlIGZvciB1c2Ugd2l0aCBtbWFwLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzMiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHJhbmRvbSBtaXggbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xMzMgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgYSBiZXR0ZXIgMzIgYml0IHJhbmRvbSBvZmZzZXQgZnJvbSBjYWxsaW5nIHJhbmQoKTw8MTZ8fHJhbmQoKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzNCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIC0rcCBwZXJjZW50YWdlIHJlYWQgb3B0aW9uLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzNSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW1wcm92ZSB0aGUgbWl4ZWQgbW9kZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzNiAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGF1dG8gYnVnIGludHJvZHVjZWQgYnkgbWl4ZWQgbW9kZSB0ZXN0aW5nLgpJbnRyb2R1Y2UgLStyIGZvciBPX1JTWU5DLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzNyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29kZSBjbGVhbnVwIGZvciBzb21lIHdhcm5pbmdzIG9uIElBLTY0IHN5c3RlbXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTM4IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXhlcyBmb3IgRnJlZUJTRAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjEzOSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIC1yIGFuZCAtcyBvcHRpb25zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE0MCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29kZSBjbGVhbnVwIGZvciBub24tYW5zaSBidWlsZHMKQWRkIHRhcmdldCBidWlsZCB0byBvdXRwdXQuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTQxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgc3BlZWQgY2hlY2sgY29kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNDIgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluY3JlYXNlIG1heGltdW0gdGhyZWFkcy9wcm9jcyB0byAyNTYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNDMgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBjb250cmlicyBhbmQgLSt0IHRvIGhlbHAgc3BsYXNoIHNjcmVlbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNDQgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXggZm9yIFJlZGhhdC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNDUgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXggZm9yIHdoZW4gdXNlciB1c2VkIC1sIGJ1dCBmYWlsZWQgdG8gdXNlIC11IHRvby4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNDYgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCB2b2lkIHRvIHNwZWVkX21haW4oKSBmb3Igbm9uLWFuc2kgY29tcGlsZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTQ3IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgIlRlc3QgcnVubmluZyIgU28gdXNlcnMgd2lsbCBrbm93IHRoZSB0ZXN0IGlzIHJ1bm5pbmcKYW5kIG5vdCB0byBoaXQgY29udHJvbCAnYycgdG9vIHNvb24uCkJ1ZyBmaXggaW4gbGliYmlmLmMgZG9fZmxvYXQoKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE0OCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVHVybiBvZmYgc29tZSBjaGlsZCBkZWJ1ZyBjb2RlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE0OSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRGlzYWJsZSBmcmVhZCBhbmQgZndyaXRlIHRlc3RpbmcgaWYgbW1hcCBvciBhc3luYyBpcyBpbiB1c2UuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTUwIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgcHJlYWQvcHdyaXRlIHRvIExpbnV4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTUxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpIYW5kbGUgLUVCCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTUyIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgcHJlYWQvcHdyaXRlIHRocm91Z2hwdXQgdGVzdGluZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE1MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlZCBzZWNvbmQgcGFyYW1ldGVyIHRvIG1tYXAoKSB0byBiZSBzaXplX3QuIEFJWCBuZWVkcyB0aGlzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE1NCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIG1hZHZpc2UoKS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNTUgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvZGUgY2xlYW51cC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNTYgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeGVzIGZvciAtdyAtdCAtUiBmcm9tIFZlcml0YXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNTcgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgbWFkdmlzZSgpIGdvIGF3YXkgZm9yIHdpbmRvd3MuIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE1OCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUGVybWl0IHNtYWxsZXIgdmFsdWVzIGZvciAtbiBhbmQgLWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNTkgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgaW5pdGlhbCB3cml0ZSBpbiBpbml0ZmlsZSgpIGEgcGFnZSBzaXplIHJlcXVlc3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTYwIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTdG9wIHRlc3QgaWYgZmlsZSBjYW4gbm90IGJlIHdyaXR0ZW4uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTYxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTcGVjaWFsIGhhbmRsaW5nIGZvciBtbWFwIG9mIGEgZmlsZSB0aGF0IGlzIG9wZW5lZCAoT19ESVJFQ1QpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTYyIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXh1cCBmb3Igc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIE9fRElSRUNULgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE2MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU2ltcGxpZnkgdGhlIHByb3RvdHlwZSBmb3IgZG9fY29tcHV0ZSgpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTY0IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpaZXJvIGNvbXB1dGVfdmFsIGluc2lkZSBvZiBsb29wcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNjUgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciBPX0RJUkVDVCBmb3IgSVJJWCBhbmQgSVJJWDY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTY2IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbXByb3ZlIG1hY3JvcyBhbmQgYWRkIHByb3RvdHlwZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTY3IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbXByb3ZlIHJlc29sdXRpb24gb2YgZ2V0X3Jlc29sdXRpb24oKS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNjggCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgdG8gc3VwcG9ydCBSZWRIYXQgOS4wLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE2OSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3BlY2lhbCBoYW5kbGluZyBvZiBOQU1FIGZvciBicm9rZW4gZnJvbnRlbmQgaW4gQ3lnd2luL1dpbmRvd3MgZW52Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE3MCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIHRoZSBDcmF5WDEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xNzEgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlbW92ZSByZWZlcmVuY2UgdG8gUEFHRV9TSVpFIGZvciBsaW51eC4gVGhpcyBjYXVzZXMgcHJvYmxlbXMKd2l0aCBTdVNlIDguCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTcyIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXh1cCBmb3IgU0NPIGJ1aWxkLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE3MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIC1ESEFWRV9QUkVBRCBmb3IgU29sYXJpczgtNjQgdGFyZ2V0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE3NCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29kZSBjbGVhbnVwIGZvciBMaW51eAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE3NyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW1wcm92ZSAtK2Qgc28gdGhhdCBlYWNoIGJ5dGUgaXMgbW9yZSB1bmlxdWUuCkltcHJvdmUgYnl0ZSBsZXZlbCB2YWxpZGF0aW9uLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE3OCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUHJvdmlkZSBieXRlIGxldmVsIGVycm9yIGRldGVjdGlvbiB3aXRoIEZvdW5kIGNoYXIgYW5kIEV4cGVjdGluZyBDaGFyIGluCiAgLStkIG1vZGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTc5IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbXByb3ZlIHNwZWVkIG9mIC0rZCB3aXRob3V0IGxvc2luZyB1bmlxdWVuZXNzIG9mIGJ5dGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE4MCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IHNvIHRoYXQgV2luZG93cyBjYW4gdXNlIG11bHRpcGxlIHByb2Nlc3Nlcy4gTmVlZGVkIG1tYXAgbGlrZSBTQ08uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTgxIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpVc2UgbWFsbG9jKCkgaW5zdGVhZCBvZiBtbWFwKCkgZm9yIHRocmVhZHMgbWVtb3J5LCBpbnN0ZWFkIG9mIG1tYXAuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTgyIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNYWtlIENQVSB1dGlsaXphdGlvbiB1c2UgZG91YmxlcyBldmVyeXdoZXJlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE4MyAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIENQVSB1dGlsaXphdGlvbiB3aGlsZSBpbiBkaXN0cmlidXRlZCBtb2RlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE4NCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWFrZSBhbGwgdGltZXMgcmVsYXRpdmUgc28gbXVsdGkgbm9kZSBjYW4gZG8gQ1BVIHVzYWdlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE4NSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTg2IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgLStuIG9wdGlvbiB0byBkaXNhYmxlIHJlLXRlc3RpbmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTg3IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGaXh1cCAtK24gZm9yIHRocm91Z2hwdXQgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xODggCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBFeGNlbCBvdXRwdXQgd2hlbiAtK24gaXMgdXNlZC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xODkgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzdXBwb3J0IGZvciB0aGUgSUJNIFMzOTAgcnVubmluZyBMaW51eC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xOTAgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNsZWFudXAgbmFtaW5nIGNvbnZlbnRpb25zIGZvciB0aGUgUzM5MCBhbmQgZml4dXAgYSAjZGVmaW5lLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE5MSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIDY0IGJpdCBjb21waWxlcyBmb3IgczM5MHgKTW92ZSBCSUdfRU5ESUFOIHRvIFpCSUdfRU5ESUFOIHRvIGF2b2lkIGhlYWRlciBjb25mbGljdHMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTkyIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNYWtlIHJhbmRvbSBvZmZzZXRzIGFsd2F5cyBiYXNlZCBvbiA0OCBiaXQgcmFuZG9tIHZhbHVlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xOTMgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGl0aW9uIGZvciBtYWtlIHJhbmRvbSBvZmZzZXRzIGFsd2F5cyBiYXNlZCBvbiA0OCBiaXQgcmFuZG9tIHZhbHVlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xOTQgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgcmFuZHMgbG9uZyBsb25ncy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4xOTUgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXggZm9yIDQ4IGJpdCByYW5kcyBpbiBic2Q0XzIgYW5kIFdpbmRvd3MuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTk2IAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNYWtlIGJpZ19yYW5kIGEgbG9uZyBsb25nLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE5Nwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmplY3QgRXJpaydzIGNoYW5nZXMgZm9yIE11bHRpLWNsaWVudCBXaW5kb3dzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjE5OAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2UgcHJvdG8gdmVyc2lvbiBkdWUgdG8gY2hhbmdlcyBpbiBXaW5kb3dzIC0rbSBzdXBwb3J0LgpBZGQgRXJpYyB0byB0aGUgY29udHJpYnV0b3JzIGxpc3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMTk5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBtb3JlIFdpbmRvd3Mgc3VwcG9ydC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3BlbGxpbmcgZXJyb3IuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjAxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJ1ZyBmaXhlcyBmcm9tIEVyaWsgSC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVkdWNlIHVzYWdlIG9mIHNoYXJlZCBtZW1vcnkuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjAzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVsaW1pbmF0ZSBTVFVQSUQgd2FybmluZyBmcm9tIHRoZSBzaWxseSBjb21waWxlci4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyB0byByZW1vdmUgd2FybmluZ3Mgb24gQlNELiBUaGFua3MgdG8gQ2hyaXN0aWFuIFdlaXNnZXJiZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3VwcG9ydCBmb3IgdGhlIEFNRDY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjA2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCAtK2sgZm9yIGNvbnN0YW50IGFnZ3JlZ2F0ZSBkYXRhIHNldCBzaXplIGluIHRocm91Z2hwdXQgbW9kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHByZWFkIHN1cHBvcnQgZm9yIHRoZSBUUlU2NCB0YXJnZXQuIERlcGFydG1lbnQgb2YgRGVmZW5zZSBpbiBDYW5hZGEuCkFkZCAtK3EgZm9yIGRlbGF5IGluIHNlY29uZHMgYmV0d2VlbiB0ZXN0cy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMDgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTW92ZSB2YXJpYWJsZSB1cCwgR0NDIG9uIFNvbGFyaXMgd2FzIGdldHRpbmcgYSBib2d1cyBwYXJzZSBlcnJvcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIwOQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgc3VwcG9ydCBmb3IgLStEIChPX0RTWU5DKSBtb2RlIHRlc3RpbmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjEwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgT19EU1lOQyBjb25kaXRpb25hbC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMTEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHRlbGVtZXRyeSBzdXBwb3J0IGZvciBwcmVhZC9wd3JpdGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMTIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHJlY29yZCBsb2NraW5nCkFkZCBzaW5nbGUgZmlsZSwgZmlsZSBzaGFyaW5nLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIxMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFbmhhbmNlIGZpbGwvdmVyaWZ5IChkaWFnIG1vZGUpIGZvciBzaGFyZWQgZmlsZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMTQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVtb3ZlIHdhcm5pbmdzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIxNQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgcHJvdG90eXBlIGZvciBteWxvY2tyKCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMTYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IHByb3RvdHlwZSBmb3IgbXlsb2Nrcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIxNwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFbmFibGUgb3B0aW9ucyBmb3IgV2luZG93cyBzeXN0ZW1zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIxOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgbGFiZWwgdG8gRXhjZWwgc3ByZWFkc2hlZXQgdGhhdCBkZXNjcmliZXMgdGhlIHJvd3MgYW5kIGNvbHVtbnMuCkFkZCBzdXBwb3J0IGZvciBTb2xhcmlzNjQgd2l0aCBWeEZTLgpBZGQgc3VwcG9ydCBmb3IgTGludXgtYXJtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjE5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBzbGVlcCB0byBwZXJtaXQgY2hpbGQgdG8gZ2V0IGNvbm5lY3Rpb24gdXAgYmVmb3JlIG1hc3RlciBkb2VzIGNvbm5lY3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjIwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkltcHJvdmUgbWFzdGVyIGNvbm5lY3QgdG8gY2hpbGQsIHdpdGhvdXQgZGVsYXlzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIyMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgLStCIE1peGVkIHNlcXVlbnRpYWwgdGVzdGluZy4gQmx1ZUFyYyByZXF1ZXN0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIyMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXb3JrYXJvdW5kIGZvciBidWcgaW4gQ3lnd2luJ3Mgc3NjYW5mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjIzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCB0cmFuc2ZlciBzaXplIHRvIHRoZSBvdXRwdXQgZnJvbSAtUQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIyNAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXb3JrIGFyb3VuZCBmb3IgVENQX1dBSVQgaW4gV2luZG93cy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMjUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGZvciBicm9rZW4gcnNoIG9uIFdpbmRvd3MuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjI2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cldvcmthcm91bmQgZm9yIGdjYyAzLjQuIEZyb20gdGhlIGZvbGtzIGF0IEdlbnRvby5vcmcuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjI3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVuYWJsZSAtK20gYW5kIHRlbGVtZXRyeSBmaWxlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMjgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWFrZSBtb3JlIHVuaXF1ZSBmaWxlIG5hbWVzIGZvciBtbWFwIGZpbGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIyOQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgLStUIHRpbWUgc3RhbXBzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIzMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4IGZvciAtbSBhbmQgdmFsaWRhdGlvbiBjb2RlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjIzMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgYSBzcGFjZSB0byB0aGUgdGhyb3VnaHB1dCBvdXRwdXQgZHVtcC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMzIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGFub3RoZXIgc3BhY2UgdG8gdGhlIHRocm91Z2hwdXQgb3V0cHV0IGR1bXAuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjMzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVuYWJsZSBzaGFyZWQgZmlsZSB3aXRoIG5vIGxvY2tpbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMzQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHNhbml0eSBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IG9wZW4obmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19UUlVOQywgMCkKZG9lcyB3b3JrIGNvcnJlY3RseS4gVGhpcyBpcyBhbiBORlMgY2xpZW50IHRlc3QgdGhhdApkZXRlY3RzIGlmIHRoZSBORlMgc2VydmVyJ3MgbG9jYWwgZmlsZXN5c3RlbSBpcyBicm9rZW4gYW5kCmZhaWxzIHRvIHN1cHBvcnQgdGhlIHNlcXVlbmNlIGFib3ZlIGNvcnJlY3RseS4gCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjM1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmFkZCBhIGNsb3NlKGZkKSB0byB0aGUgc2FuaXR5IHRlc3QuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjM3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRyYW5zcG9ydCB0aGUgLW8gZmxhZyB0byByZW1vdGUgY2xpZW50cy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yMzgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRml4IGhhbmcgd2hlbiB1c2luZyBIUC1VWCBtYXN0ZXIsIExpbnV4IGNsaWVudCwgc3NoIGJ1aWxkdXAuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjM5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCAtK2ggaG9zdG5hbWUuIFBlcm1pdHMgb25lIHRvIG1hbnVhbGx5IHNldCB0aGUgaG9zdG5hbWUuIEZvciBzeXN0ZW1zCndpdGggbXVsdGlwbGUgbmFtZXMvTklDcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNDEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIC0raCwgc2V0IGhvc3RuYW1lLCBhbmQgZml4IFNvbGFyaXMgaGFuZy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNDIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVtb3ZlIHRoZSBzaWRlIGVmZmVjdCBvZiBuby1yZXJlYWRzIHdoZW4gdXNpbmcgLXcuIE5vdyB1c2UgLStuIGZvcgpjb25zaXN0YW5jeS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQnVnIGZpeCBmb3IgLStrIG9wdGlvbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNDYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHRoZSAtK1UgZm9yIFdJTjMyIEFQSSBjYWxscyAuLiBVbmJ1ZmZlcmVkIEkvTy4gU29ueSBzdHVkaW9zLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI0Nwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgc3VwcG9ydCBmb3IgLStVIHdpdGggLUsgKFdJTjMyQVBJIGNhbGxzICsgSml0dGVyKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI0OAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4LiAtSiB3aXRoIC0rbSBub3QgcGFzc2luZyBjb21wdXRlIGRlbGF5IGNvcnJlY3RseS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNDkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIHN1cHBvcnQgZm9yIC1pIDggd2hlbiB1c2VkIHdpdGggLStCIChzZXF1ZW50aWFsIG1peCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlIHRoZSBkZWZhdWx0IHBhdHRlcm4uIFNhbWJhIGlzIHRyeWluZyB0byBjaGVhdCBieSAKc3BlY2lhbCBjYXNpbmcgSU9aT05FLnRtcCwgYW5kIHRoZSBwYXR0ZXJuIG9mIDB4QTUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjUxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1ha2UgdGhlIGRlZmF1bHQgcGF0dGVybiByYW5kb20sIGFuZCBiYXNlZCBvbiBJb3pvbmUgdmVyc2lvbi4KVGhpcyBpcyB0byBwcmV2ZW50IHRoZSBoYWNrIGZyb20gUmljaGFyZCBTaGFycGUgKGluIFNhbWJhKQpmcm9tIHNwZWNpYWwgY2FzaW5nIElvem9uZSwgYW5kIGx5aW5nIHRvIHRoZSB1c2VyLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI1Mgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpidWcgZml4IGluIHBhdHRlcm4gZ2VuLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI1Mwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpBZGQgLStaICBvbGQgZGF0YSBzZXQgbW9kZS4KQWRkIC0rWCAgY29uc3RhbnQgZGF0YSBmb3Igc2hvcnQgY2lyY3VpdCB0ZXN0aW5nIG9ubHkuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjU0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBNdWx0aS1ub2RlIGNoYW5nZXMgZm9yIG5ldyBvcHRpb25zLiAoLStaIGFuZCAtK1gpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjU1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCAtK0sgZmxhZyBmb3IgU29ueS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNTYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTW92ZSAtK0sgb3V0c2lkZSBvZiBXaW5kb3dzIG9ubHkuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjU3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClNpbXBsaWZ5IHBlcmNlbnRhZ2UgY2FsY3VsYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGVycm9yIGNoZWNraW5nIGZvciAtZiBhbmQgLUYgaW4gdGhlIHdyb25nIG1vZGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI1OQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4IGZvciBwYnVmZmVyIGFsbG9jYXRpb24gb24gcmVtb3RlIGNsaWVudHMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjYwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoZWNrIGZvciBtYXhfcmVjX3NpemUgd2hlbiB1c2luZyByYW5nZXMuIC1yIC1yIC1yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjYxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBmb3IgRGViaWFuIHVzZXIgYnVnLiAtciAxbSAtbiAxbSAtZyAybSBnYXZlIGJvZ3VzIGVycm9yLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI2Mgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCdWcgZml4IGZvciAtayB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggLXQgYW5kIGNvbnRlbnQgdmFsaWRhdGlvbi4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQnVnIGZpeCBmb3IgLWsgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIC10IGFuZCBjb250ZW50IHZhbGlkYXRpb24uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZCBEcmFnb25GbHkgdGFyZ2V0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI2NQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQdXQgUEVSX1ZFQ1RPUl9PRkZTRVQgaW4gZm9yIEhQLVVYCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjY2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZpeCBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjY3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVuZm9yY2UgbWluaW11bSBmaWxlIHNpemUgb2YgcGFnZV9zaXplCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjY4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1pbm9yIGZpeGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI2OQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGVjayBmc3luYyBhbmQgY2xvc2UgZm9yIGVycm9ycy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNzAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkaW5nIHN1cHBvcnQgZm9yIHRlc3RpbmcgYmxvY2sgZGV2aWNlcy4gV2lsbCBiZSBkb25lIGlzIHBoYXNlcy4gVGhpcyBpcyAKcGhhc2UgMS4gKFNpbmdsZSB0aHJlYWRlZCBtb2RlIG9ubHkpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjcxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkFkZGluZyA0IHRva2VuIHN1cHBvcnQgdG8gY2xpZW50X2xpc3QuIEVhY2ggZW50cnkgbWF5IG5vdyBjb250YWluIDQgdG9rZW5zCmFuZCB0aGUgbmV3IG9uZSBpcyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdGVtcCBmaWxlIGZvciB0ZXN0aW5nLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI3MgpFZGl0b3JpYWwgY2hhbmdlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI3MwpBZGQgc3VwcG9ydCBmb3IgZXh0ZXJuYWwgbW9uaXRvciBzdGFydCAmIHN0b3AgZm9yIHRocm91Z2hwdXQgdGVzdHMuCklNT05fU1RBUlQgYW5kIElNT05fU1RPUCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyB1c2VkLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI3NAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQptaW5vciBjaGFuZ2UuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjc1CkJ1ZyBmaXggZm9yIHN5c3RlbXMgd2l0aG91dCBPX0RJUkVDVC4gRmFsbCB0aHJvdWdoIGluIHN3aXRjaCBzdGF0ZW1lbnQuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjc2CkZpeCBmb3IgLWMgLXQgb3ZlciBORlMgYW5kIGluaXRpYWwgd3JpdGVyIGNsb3NlKCkgd2hlbiB0b2xkIGJ5IGFub3RoZXIgdG8gc3RvcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI3NwpBZGQgQmVubnkgSGFsZXZ5IHRvIGNvbnRyaWJ1dG9ycyBsaXN0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI3OApGaXggZm9yIEN5Z3dpbiBlbnZpcm9ubWVudC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yNzkKQ29kZSBjbGVhbnVwLCBhbmQgYWRkIGFyZyB0byBleHRlcm5hbCB0cmlnZ2VyLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI4MApDb2RlIGZpeGVzIGZvciBtYWNvc3gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yODEKQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggU3VuJ3MgU3R1ZGlvIDExIGNvbXBpbGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjgzCkJ1ZyBmaXggZm9yIGZyZWFkL2Z3cml0ZSB3aXRoID4gMkdpZyBmaWxlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yODcKQWRkIE9fRElSRUNUIGZvciBXaW5kb3dzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjg4CkFkZCAtK3cgZGVkdXAgdGVzdGluZyBtb2RlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI4OQpNYWtlIHJlbWFpbmluZyBub24tZGVkdXAgZGF0YSB1bmlxdWUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjkwCk1ha2Ugbm9uLWRlZHVwYWJsZSBtb3JlIHVuaXF1ZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yOTEKQnVnIGZpeCBmb3Igbm9uLWRlZHVwLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI5MgpNYWtlIHJhbmRvbSBvZmZzZXRzIHVuaXF1ZSwgdXNpbmcgS251dGggc2h1ZmZsZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yOTIKZnJlZSBtZW1vcnkgdXNlZCBmb3IgcmFuZG9tIG9mZnNldCB1bmlxdWVuZXNzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjI5NApNYWtlIHVuaXF1ZS9yYW5kb20gb2Zmc2V0cyA2NGJpdHMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjk1CkFkZCBmYWxsYmFjayBmb3IgcmFuZG9tL3VuaXF1ZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4yOTYKTWFrZSBub24tZGVkdXAgcmVnaW9uIG1vcmUgdW5pcXVlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjk3CkFkZCAtK3kgIyMgdG8gc2V0IHBlcmNlbnRhZ2Ugb2YgaW50ZXJpb3IgZGVkdXAuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjk4CkFkZCAtK3kgIyMgdG8gc2V0IHBlcmNlbnRhZ2Ugb2YgaW50ZXJpb3IgZGVkdXAuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMjk5CkJ1ZyBmaXhlcyBmb3IgLSt3IGFuZCAtK3kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMDAKTWlub3IgZml4IGZvciBkZWR1cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMwMgpBZGRpbmcgLStDIHRvIHNldCBwZXJjZW50IG9mIGRlZHVwYWJsZSB3aXRoaW4gYSBmaWxlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMwMwpidWcgZml4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzA0CkFkZCBzb2xhcmlzIHRvIHJlYWQgc3luYyBPX1JTWU5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzA1CkFkZCBzcGFjZSB0byBhdm9pZCBmaWVsZCBvdXRwdXQgdG91Y2hpbmcgZWFjaCBvdGhlci4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMDYKQWRkIGNoZWNrIGZvciBjb25maWcgZmlsZSBleGNlZWRpbmcgTUFYU1RSRUFNUy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMDcKQWRkIG5ldyBjb250cmlidXRvcidzIG5hbWUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzA4CkZpeCB0eXBlLW9oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzA5CkJ1ZyBmaXguIHJld3JpdGVfcmVjIG5lZWRlZCB0byBmaWxsIGVudGlyZSBidWZmZXIsIG9yIGxhdGVyIHN0cmlkZSByZWFkIHdpbGwKZmFpbC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQWRkIGFiaWxpdHkgZm9yIHJlbW90ZSBjbGllbnRzIHRvIHJldHVybiBlcnJvcnMgdG8gdGhlIG1hc3RlciBhbmQKaGF2ZSB0aGUgbWFzdGVyIGRpc3BsYXkgb24gb3V0cHV0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMxMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpmaXggZG91YmxlIHJlcG9ydGluZyBvZiBjbGllbnQgZXJyb3JzIAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMxMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFbGltaW5hdGUgZXh0cmEgZmlsZSBkZXNjcmlwdG9yIGluIGZ3cml0ZSB0ZXN0Lgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMxMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpidWcgZml4IGZvciBiYXJyYXkgYWxsb2NhdGlvbiBpbiAtVCBtb2RlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzEzClJldmlzaW9uIDMuMzE0ClJldmlzaW9uIDMuMzE1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZnJvbSBEZWJpYW46IFJldHJ5IHVtb3VudCwgYWRkIGZpbGVvcCBmb3IgbGludXgtc3BhcmMsIGFuZApmaXggY29sdW1uIHdpZHRoIGluIGZpbGVvcCBmb3IgZmFzdGVyIGJveGVzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMxNgpBZGQgT19ESVJFQ1Qgc3VwcG9ydCB0byBGcmVlQlNECj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzE3CkZpeCBmb3IgZGVmaW5lcyBpbiBGcmVlQlNECj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzE4CkFkZCBJTU9OX1NZTkMgdG8gZW5hYmxlIG1vbml0b3Igc2NyaXB0cyB0byBiZSBydW4gc3luYy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMTkKQWRkIGRpcmVjdGlvKCkgZm9yIFNvbGFyaXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMjAKQWRkIGZpeGVzIGZvciB1bnJlc29sdmVkIHJlZmVyZW5jZXMgaW4gZGlyZWN0aW8oKSBmb3IgU29sYXJpcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMyMQpGaXggdHlwZSBvaC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMjIKRml4IGMrKyBzdHlsZSBjb21tZW50IGJhY2sgdG8gJ0MnIHN0eWxlIGNvbW1lbnQuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzIzCkJ1ZyBmaXggZm9yIGNoZWNrX2ZpbGVuYW1lcyBhbmQgbGFyZ2UgZmlsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMjQKUmVwbGFjZSB0cmlwcGxlIHJhbmQoKSBjYWxscyB3aXRoIDY0IGJpdCBNZXJzZW5lIHR3aXN0ZXIuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzI1CkFkZCByZWFkLW9ubHksIGV4dGVybmFsIGZpbGUsIHdpdGggbm8tdmVyaWZ5LiAtK0UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMjUKUGVybWl0IC0rRSBvbiBkZWR1cCBmaWxlcy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMjcKUGVybWl0IC0rRSBvbiByYW5kb20gcmVhZCBvbmx5IHRlc3RpbmcsIG9uIGV4aXN0aW5nIGZpbGUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzI4CkFkZCBwYXNzaW5nIG1hc3RlciBsaXN0ZW5lcidzIHBvcnQgdG8gcmVtb3RlIGNoaWxkcmVuIGlmIGl0IGlzIG5vdApIT1NUX0xJU1RfUE9SVAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMyOQpBZGRpbmcgRGF2ZSBCb29uZSdzIG5vdHJ1bmNhdGUgb3B0aW9uIC0rTgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMzMApCdWcgZml4IGZvciBEYXZlJ3MgY29kZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMzEKQWRkIG11bHRpIC10IG9wcy4gRmFicmljZSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMzIKQWRkZWQgTGkgUWluJ3MgbXVsdGkgZGVkdXAgc2V0IHN1cHBvcnQuIC0rUyAjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzMzCkJ1ZyBmaXggZm9yIC0rUyBkZWR1cF9tc2VlZCBuZWVkcyB0byBiZSBhbiBpbnRlZ2VyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzM0Ck1ha2UgLStTIGdlbmVyYXRlIG1vcmUgdW5pcXVlbmVzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMzNQpNYWtlIC0rUyBnZW5lcmF0ZSBtb3JlIHVuaXF1ZW5lc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zMzYKTWFrZSAtK1MgZ2VuZXJhdGUgbW9yZSB1bmlxdWVuZXNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzM3CkJ1ZyBmaXggZm9yIC0rUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMzOApNYWtlIHVtb3VudC9yZW1vdW50IG1vcmUgcm9idXN0LCBpbiB0aGUgZmFjZSBvZiBzZXJ2ZXIgZXJyb3JzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjMzOQpJbXByb3ZlIHRoZSBoZWxwIHN0cmluZyBmb3IgdGhlIC0rUyBvcHRpb24uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldmlzaW9uIDMuMzQwCkFkZCBuZXcgY29udHJpYnV0b3IgbmFtZS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zNDIKQWRkIHN1cHBvcnQgZm9yIHRoZSBwcm9ncmFtbWFibGUgaW50ZXJkaW1lbnNpb25hbCB0aW1lci4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV2aXNpb24gMy4zNDMKQnVnIGZpeCBmb3IgUElUIG9uIHJlbW90ZSBjbGllbnRzLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXZpc2lvbiAzLjM0NApCdWcgZml4IGZvciBQSVQgb24gcmVtb3RlIGNsaWVudHMuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09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Y2VzIG9mIGhhcmR3YXJlLg0KIw0KIyBUaGlzIHNjcmlwdCBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwgdG9vIHNob3J0IGFuZCB0b28gdHJpdmlhbA0KIyB0byBkZXNlcnZlIGEgY29weXJpZ2h0Lg0KIw0KIyBTaW1wbHkgcnVuIGlvem9uZSBsaWtlLCBmb3IgZXhhbXBsZSwgLi9pb3pvbmUgLWEgLWcgNEcgPiBjb25maWcxLm91dCAoaWYgeW91ciBtYWNoaW5lIGhhcyA0R0IpDQojDQojIGFuZCB0aGVuIHJ1biBwZXJsIHJlcG9ydC5wbCBjb25maWcxLm91dA0KIyBvciBnZXQgYW5vdGhlciByZXBvcnQgZnJvbSBhbm90aGVyIGJveCBpbnRvIGNvbmZpZzIub3V0IGFuZCBydW4NCiMgcGVybCByZXBvcnQucGwgY29uZmlnMS5vdXQgY29uZmlnMi5vdXQNCiMgdGhlIGxvb2sgaW4gdGhlIHJlcG9ydF8qIGRpcmVjdG9yeSBmb3IgLnBuZw0KIw0KIyBJZiB5b3UgZG9uJ3QgbGlrZSBwbmcgb3IgdGhlIGdyYXBoaWMgc2l6ZSwgc2VhcmNoIGZvciAic2V0IHRlcm1pbmFsIiBpbiB0aGlzIGZpbGUgYW5kIHB1dCB3aGF0ZXZlciBnbnVwbG90DQojIHRlcm1pbmFsIHlvdSB3YW50LiBOb3RlIEkndmUgYWxzbyBub3RpY2VkIHRoYXQgZ251cGxvdCBzd2l0Y2hlZCB0aGUgc2V0IHRlcm1pbmFsIHBuZyBzeW50YXgNCiMgYSB3aGlsZSBiYWNrLCB5b3UgbWlnaHQgbmVlZCAic2V0IHRlcm1pbmFsIHBuZyBzbWFsbCBzaXplIDkwMCw3MDAiDQojDQp1c2UgR2V0b3B0OjpMb25nOw0KDQpteSAkY29sdW1uOw0KbXkgJWNvbHVtbnM7DQpteSAkZGF0YWZpbGU7DQpteSBAZGF0YWZpbGVzOw0KbXkgJG91dGRpcjsNCm15ICRyZXBvcnQ7DQpteSAkbm9vZmZzZXQ9MDsNCm15IEBSZXBvcnRzOw0KbXkgQHNwbGl0Ow0KbXkgJHNpemUzZDsgbXkgJHNpemUyZDsNCg0KIyBldmFsdWF0ZSBvcHRpb25zDQpHZXRPcHRpb25zKA0KICAgICczZD1zJyAgICAgPT4gXCRzaXplM2QsDQogICAgJzJkPXMnICAgICA9PiBcJHNpemUyZCwNCiAgICAnbm9vZmZzZXQnID0+IFwkbm9vZmZzZXQNCik7DQoNCiRzaXplM2QgPSAiOTAwLDcwMCIgdW5sZXNzIGRlZmluZWQgJHNpemUzZDsNCiRzaXplMmQgPSAiODAwLDUwMCIgdW5sZXNzIGRlZmluZWQgJHNpemUyZDsNCg0KDQpteSAkeG9mZnNldCA9ICJvZmZzZXQgLTciOw0KbXkgJHlvZmZzZXQgPSAib2Zmc2V0IC0zIjsNCg0KaWYgKCRub29mZnNldCA9PSAxKXsNCiAgICR4b2Zmc2V0ID0gIiI7ICR5b2Zmc2V0ID0gIiI7ICAgICAgDQp9DQoNCnByaW50ICJcbmlvem9uZV92aXN1YWxpemVyLnBsIDogdGhpcyBzY3JpcHQgaXMgZGlzdHJpYnV0ZWQgYXMgcHVibGljIGRvbWFpblxuIjsNCnByaW50ICJDaHJpc3RpYW4gTWF1dG5lciA8Y2hyaXN0aWFuICogbWF1dG5lciAuIGNhPiwgMjAwNS0xMC0zMVxuIjsNCnByaW50ICJNYXJjIFNjaG9lY2hsaW4gPG1zICogMjU2Yml0Lm9yZz4sIDIwMDctMTItMDJcbiI7DQoNCg0KQFJlcG9ydHM9QEFSR1Y7DQoNCmRpZSAidXNhZ2U6ICQwIC0tM2Q9eCx5IC0yZD14LHkgPGlvem9uZS5vdXQ+IFs8aW96b25lMi5vdXQ+Li4uXVxuIiBpZiBub3QgQFJlcG9ydHMgb3IgZ3JlcCAobXxeLXwsIEBSZXBvcnRzKTsNCg0KZGllICJyZXBvcnQgZmlsZXMgbXVzdCBiZSBpbiBjdXJyZW50IGRpcmVjdG9yeSIgaWYgZ3JlcCAobXwvfCwgQFJlcG9ydHMpOw0KDQpwcmludCAiQ29uZmlndXJlZCB4dGljcy1vZmZzZXQgJyR4b2Zmc2V0JywgY29uZmlndXJlZCB5dGljcy1vZmZmc2V0ICckeW9mZnNldCcgKGRpc2FibGUgd2l0aCAtLW5vb2Zmc2V0KVxuIjsNCnByaW50ICJTaXplIDNkIGdyYXBocyA6ICIuJHNpemUzZC4iIChtb2RpZnkgd2l0aCAnLS0zZD14LHknKVxuIjsNCnByaW50ICJTaXplIDJkIGdyYXBocyA6ICIuJHNpemUyZC4iIChtb2RpZnkgd2l0aCAnLS0yZD14LHknKVxuIjsNCg0KI0tCIHJlY2xlbiB3cml0ZSByZXdyaXRlIHJlYWQgcmVyZWFkIHJlYWQgd3JpdGUgcmVhZCByZXdyaXRlIHJlYWQgZndyaXRlIGZyZXdyaXRlIGZyZWFkIGZyZXJlYWQNCiVjb2x1bW5zPSgNCiAgICAgICAgICdLQicgICAgICAgID0+MSwNCiAgICAgICAgICdyZWNsZW4nICAgID0+MiwNCiAgICAgICAgICd3cml0ZScgICAgID0+MywNCiAgICAgICAgICdyZXdyaXRlJyAgID0+NCwNCiAgICAgICAgICdyZWFkJyAgICAgID0+NSwNCiAgICAgICAgICdyZXJlYWQnICAgID0+NiwNCiAgICAgICAgICdyYW5kcmVhZCcgID0+NywNCiAgICAgICAgICdyYW5kd3JpdGUnID0+OCwNCiAgICAgICAgICdia3dkcmVhZCcgID0+OSwNCiAgICAgICAgICdyZWNyZXdyaXRlJz0+MTAsDQogICAgICAgICAnc3RyaWRlcmVhZCc9PjExLA0KICAgICAgICAgJ2Z3cml0ZScgICAgPT4xMiwNCiAgICAgICAgICdmcmV3cml0ZScgID0+MTMsDQogICAgICAgICAnZnJlYWQnICAgICA9PjE0LA0KICAgICAgICAgJ2ZyZXJlYWQnICAgPT4xNSwNCiAgICAgICAgICk7DQoNCiMNCiMgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkuIHRoZSBuYW1lIGlzIHRoZSBjb25jYXRlbmF0aW9uDQojIG9mIGFsbCByZXBvcnQgZmlsZSBuYW1lcyAobWludXMgdGhlIGZpbGUgZXh0ZW5zaW9uLCBwbHVzDQojIHByZWZpeCByZXBvcnRfKQ0KIw0KJG91dGRpcj0icmVwb3J0XyIuam9pbigiXyIsbWFwey8oW15cLl0rKShcLi4qKT8vICYmICQxfShAUmVwb3J0cykpOw0KDQpwcmludCBTVERFUlIgIk91dHB1dCBkaXJlY3Rvcnk6ICRvdXRkaXIgIjsNCg0KaWYgKCAtZCAkb3V0ZGlyICkgDQp7DQogICAgcHJpbnQgU1RERVJSICIocmVtb3Zpbmcgb2xkIGRpcmVjdG9yeSkgIjsgDQogICAgc3lzdGVtICJybSAtcmYgJG91dGRpciI7DQp9DQoNCm1rZGlyICRvdXRkaXIgb3IgZGllICJjYW5ub3QgbWFrZSBkaXJlY3RvcnkgJG91dGRpciI7DQoNCnByaW50IFNUREVSUiAiZG9uZS5cblByZXBhcmluZyBkYXRhIGZpbGVzLi4uIjsNCg0KZm9yZWFjaCAkcmVwb3J0IChAUmVwb3J0cykNCnsNCiAgICBvcGVuKEksICRyZXBvcnQpIG9yIGRpZSAiY2Fubm90IG9wZW4gJHJlcG9ydCBmb3IgcmVhZGluZyI7DQogICAgJHJlcG9ydD1+L14oW15cLl0rKS87DQogICAgJGRhdGFmaWxlPSIkMS5kYXQiOw0KICAgIHB1c2ggQGRhdGFmaWxlcywgJGRhdGFmaWxlOw0KICAgIG9wZW4oTywgIj4kb3V0ZGlyLyRkYXRhZmlsZSIpIG9yIGRpZSAiY2Fubm90IG9wZW4gJG91dGRpci8kZGF0YWZpbGUgZm9yIHdyaXRpbmciOw0KICAgIG9wZW4oTzIsICI+JG91dGRpci8yZC0kZGF0YWZpbGUiKSBvciBkaWUgImNhbm5vdCBvcGVuICRvdXRkaXIvJGRhdGFmaWxlIGZvciB3cml0aW5nIjsNCg0KICAgIG15IEBzb3J0ZWQgPSBzb3J0IHsgJGNvbHVtbnN7JGF9IDw9PiAkY29sdW1uc3skYn0gfSBrZXlzICVjb2x1bW5zOw0KICAgIHByaW50IE8gIiMgIi5qb2luKCIgIixAc29ydGVkKS4iXG4iOw0KICAgIHByaW50IE8yICIjICIuam9pbigiICIsQHNvcnRlZCkuIlxuIjsNCg0KICAgIHdoaWxlKDxJPikNCiAgICB7DQogICAgICAgIG5leHQgdW5sZXNzICggL15bXHNcZF0rJC8gKTsNCiAgICAgICAgQHNwbGl0ID0gc3BsaXQoKTsNCiAgICAgICAgbmV4dCB1bmxlc3MgKCBAc3BsaXQgPT0gMTUgKTsNCiAgICAgICAgcHJpbnQgTzsNCiAgICAgICAgcHJpbnQgTzIgaWYgJHNwbGl0WzFdID09IDE2Mzg0IG9yICRzcGxpdFswXSA9PSAkc3BsaXRbMV07DQogICAgfQ0KICAgIGNsb3NlKEkpOw0KICAgIGNsb3NlKE8pOw0KICAgIGNsb3NlKE8yKTsNCn0NCg0KcHJpbnQgU1RERVJSICJkb25lLlxuR2VuZXJhdGluZyBncmFwaHM6IjsNCg0KDQpvcGVuKEhUTUwsICI+JG91dGRpci9pbmRleC5odG1sIikgb3IgZGllICJjYW5ub3Qgb3BlbiAkb3V0ZGlyL2luZGV4Lmh0bWwgZm9yIHdyaXRpbmciOw0KDQpwcmludCBIVE1MIHFxezw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4NCjxoZWFkPg0KPHRpdGxlPklPWm9uZSBTdGF0aXN0aWNzPC90aXRsZT4NCiA8U1RZTEUgdHlwZT0idGV4dC9jc3MiPg0KLmhlYWRsaW5lIFx7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE4cHg7IGNvbG9yOiAwMDMzMDAgOyBmb250LXdlaWdodDogYm9sZDsgdGV4dC1kZWNvcmF0aW9uOiBub25lXH0NCiA8L1NUWUxFPg0KPC9oZWFkPg0KPGJvZHk+DQo8YSBuYW1lPSJ0b3AiPjwvYT4NCjxoMT5JT1pvbmUgU3RhdGlzdGljczwvaDE+DQo8dGFibGUgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Imlvem9uZSBzdGF0cyI+DQo8dHI+DQo8dGQ+DQp9Ow0KDQojIEdlbmVyYXRlIE1lbnUNCnByaW50IEhUTUwgIjx1PjxiPiMjIE92ZXJ2aWV3PC9iPjwvdT5cbjx1bD5cbiI7DQpmb3JlYWNoICRjb2x1bW4gKGtleXMgJWNvbHVtbnMpew0KICAgIHByaW50IEhUTUwgJzxsaT48Yj4nLnVjKCRjb2x1bW4pLic8L2I+IDogJy4NCiAgICAgICAgICAgICAgICAgICAnPGEgaHJlZj0iIycuJGNvbHVtbi4iXCI+M2Q8L2E+XG4iLg0KICAgICAgICAgICAgICAgICAgICc8YSBocmVmPSIjczJkLScuJGNvbHVtbi4iXCI+MmQ8L2E+PC9saT5cbiI7DQp9DQpwcmludCBIVE1MICI8L3VsPjwvdGQ+PC90cj5cbiI7DQojIEdlbmVyZWF0ZSAzZCBwbG90cw0KZm9yZWFjaCAkY29sdW1uIChrZXlzICVjb2x1bW5zKQ0Kew0KICAgIHByaW50IFNUREVSUiAiICRjb2x1bW4iOw0KICAgIA0KICAgIG9wZW4oRywgIj4kb3V0ZGlyLyRjb2x1bW4uZG8iKSBvciBkaWUgImNhbm5vdCBvcGVuICRvdXRkaXIvJGNvbHVtbi5kbyBmb3Igd3JpdGluZyI7DQoNCg0KDQogICAgcHJpbnQgRyBxcXsNCnNldCB0aXRsZSAiSW96b25lIHBlcmZvcm1hbmNlOiAkY29sdW1uIg0Kc2V0IGdyaWQgbHQgMiBsdyAxDQpzZXQgc3VyZmFjZQ0Kc2V0IHBhcmFtZXRyaWMNCnNldCB4dGljcyAkeG9mZnNldA0Kc2V0IHl0aWNzICR5b2Zmc2V0DQpzZXQgbG9nc2NhbGUgeCAyDQpzZXQgbG9nc2NhbGUgeSAyDQpzZXQgYXV0b3NjYWxlIHoNCnNldCB4cmFuZ2UgWzIuKio1OjIuKioyNF0NCnNldCB4bGFiZWwgIkZpbGUgc2l6ZSBpbiBLQnl0ZXMiIC0yDQpzZXQgeWxhYmVsICJSZWNvcmQgc2l6ZSBpbiBLYnl0ZXMiIDINCnNldCB6bGFiZWwgIktieXRlcy9zZWMiIDQsOCANCnNldCBkYXRhIHN0eWxlIGxpbmVzDQpzZXQgZGdyaWQzZCA4MCw4MCwzDQojc2V0IHRlcm1pbmFsIHBuZyBzbWFsbCBwaWNzaXplIDkwMCA3MDANCnNldCB0ZXJtaW5hbCBwbmcgc21hbGwgc2l6ZSAkc2l6ZTNkIG5vY3JvcA0Kc2V0IG91dHB1dCAiJGNvbHVtbi5wbmciDQp9Ow0KDQogICAgcHJpbnQgSFRNTCBxcXsNCiAgICAgIDx0cj4NCiAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQogICAgICAgICA8aDI+PGEgbmFtZT0iJGNvbHVtbiI+PC9hPjNkLSRjb2x1bW48L2gyPjxhIGhyZWY9IiN0b3AiPlt0b3BdPC9hPjxCUi8+DQogICAgICAgICA8aW1nIHNyYz0iJGNvbHVtbi5wbmciIGFsdD0iM2QtJGNvbHVtbiIvPjxCUi8+DQogICAgICAgPC90ZD4NCiAgICAgIDwvdHI+DQogICAgfTsNCg0KICAgIHByaW50IEcgInNwbG90ICIuIGpvaW4oIiwgIiwgbWFwe3FxeyIkXyIgdXNpbmcgMToyOiRjb2x1bW5zeyRjb2x1bW59IHRpdGxlICIkXyJ9fShAZGF0YWZpbGVzKSk7DQoNCiAgICBwcmludCBHICJcbiI7DQoNCiAgICBjbG9zZSBHOw0KDQogICAgb3BlbihHLCAiPiRvdXRkaXIvMmQtJGNvbHVtbi5kbyIpIG9yIGRpZSAiY2Fubm90IG9wZW4gJG91dGRpci8kY29sdW1uLmRvIGZvciB3cml0aW5nIjsNCiAgICBwcmludCBHIHFxew0Kc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2U6ICRjb2x1bW4iDQojc2V0IHRlcm1pbmFsIHBuZyBzbWFsbCBwaWNzaXplIDQ1MCAzNTANCnNldCB0ZXJtaW5hbCBwbmcgbWVkaXVtIHNpemUgJHNpemUyZCBub2Nyb3ANCnNldCBsb2dzY2FsZSB4DQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gS0J5dGVzIg0Kc2V0IHlsYWJlbCAiS2J5dGVzL3NlYyINCnNldCBvdXRwdXQgIjJkLSRjb2x1bW4ucG5nIg0KfTsNCg0KICAgIHByaW50IEhUTUwgcXF7DQogICAgICA8dHI+DQogICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgPGgyPjxhIG5hbWU9InMyZC0kY29sdW1uIj48L2E+MmQtJGNvbHVtbjwvaDI+PGEgaHJlZj0iI3RvcCI+W3RvcF08L2E+PEJSLz4NCiAgICAgICAgIDxpbWcgc3JjPSIyZC0kY29sdW1uLnBuZyIgYWx0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dGUgcGVyZm9ybWFuY2UiCgpzZXQgdGVybWluYWwgeDExCnNldCB0aXRsZSAiSW96b25lIHBlcmZvcm1hbmNlIgpzZXQgZ3JpZCBsdCAyIGx3IDEKc2V0IHN1cmZhY2UKc2V0IHh0aWNzCnNldCB5dGljcwpzZXQgbG9nc2NhbGUgeCAyCnNldCBsb2dzY2FsZSB5IDIKc2V0IGF1dG9zY2FsZSB6CnNldCB4cmFuZ2UgWzIuKio1OjIuKioyNF0Kc2V0IHhsYWJlbCAiRmlsZSBzaXplIGluIDJebiBLQnl0ZXMiCnNldCB5bGFiZWwgIlJlY29yZCBzaXplIGluIDJebiBLYnl0ZXMiCnNldCB6bGFiZWwgIktieXRlcy9zZWMiCnNldCBkYXRhIHN0eWxlIGxpbmVzCnNldCBkZ3JpZDNkIDgwLDgwLDMKc3Bsb3QgJ3Jld3JpdGUvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlJlV3JpdGUgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gY29udGludWUiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0IGNvbG9yCnNldCBvdXRwdXQgInJld3JpdGUvcmV3cml0ZS5wcyIKc3Bsb3QgJ3Jld3JpdGUvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlJlV3JpdGUgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKCnNldCB0ZXJtaW5hbCB4MTEKc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2UiCnNldCBncmlkIGx0IDIgbHcgMQpzZXQgc3VyZmFjZQpzZXQgeHRpY3MKc2V0IHl0aWNzCnNldCBsb2dzY2FsZSB4IDIKc2V0IGxvZ3NjYWxlIHkgMgpzZXQgYXV0b3NjYWxlIHoKc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gMl5uIEtCeXRlcyIKc2V0IHlsYWJlbCAiUmVjb3JkIHNpemUgaW4gMl5uIEtieXRlcyIKc2V0IHpsYWJlbCAiS2J5dGVzL3NlYyIKc2V0IGRhdGEgc3R5bGUgbGluZXMKc2V0IGRncmlkM2QgODAsODAsMwpzcGxvdCAncmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiUmVhZCBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwpwYXVzZSAtMSAiSGl0IHJldHVybiB0byBjb250aW51ZSIKc2V0IHRlcm1pbmFsIHBvc3RzY3JpcHQgY29sb3IKc2V0IG91dHB1dCAicmVhZC9yZWFkLnBzIgpzcGxvdCAncmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiUmVhZCBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwoKCnNldCB0ZXJtaW5hbCB4MTEKc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2UiCnNldCBncmlkIGx0IDIgbHcgMQpzZXQgc3VyZmFjZQpzZXQgeHRpY3MKc2V0IHl0aWNzCnNldCBsb2dzY2FsZSB4IDIKc2V0IGxvZ3NjYWxlIHkgMgpzZXQgYXV0b3NjYWxlIHoKc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gMl5uIEtCeXRlcyIKc2V0IHlsYWJlbCAiUmVjb3JkIHNpemUgaW4gMl5uIEtieXRlcyIKc2V0IHpsYWJlbCAiS2J5dGVzL3NlYyIKc2V0IGRhdGEgc3R5bGUgbGluZXMKc2V0IGRncmlkM2QgODAsODAsMwpzcGxvdCAncmVyZWFkL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJSZXJlYWQgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gY29udGludWUiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0IGNvbG9yCnNldCBvdXRwdXQgInJlcmVhZC9yZXJlYWQucHMiCnNwbG90ICdyZXJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlJlcmVhZCBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwoKc2V0IHRlcm1pbmFsIHgxMQpzZXQgdGl0bGUgIklvem9uZSBwZXJmb3JtYW5jZSIKc2V0IGdyaWQgbHQgMiBsdyAxCnNldCBzdXJmYWNlCnNldCB4dGljcwpzZXQgeXRpY3MKc2V0IGxvZ3NjYWxlIHggMgpzZXQgbG9nc2NhbGUgeSAyCnNldCBhdXRvc2NhbGUgegpzZXQgeHJhbmdlIFsyLioqNToyLioqMjRdCnNldCB4bGFiZWwgIkZpbGUgc2l6ZSBpbiAyXm4gS0J5dGVzIgpzZXQgeWxhYmVsICJSZWNvcmQgc2l6ZSBpbiAyXm4gS2J5dGVzIgpzZXQgemxhYmVsICJLYnl0ZXMvc2VjIgpzZXQgZGF0YSBzdHlsZSBsaW5lcwpzZXQgZGdyaWQzZCA4MCw4MCwzCnNwbG90ICdyYW5kcmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiUmFuZG9tIHJlYWQgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gY29udGludWUiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0IGNvbG9yCnNldCBvdXRwdXQgInJhbmRyZWFkL3JhbmRyZWFkLnBzIgpzcGxvdCAncmFuZHJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlJhbmRvbSByZWFkIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCgpzZXQgdGVybWluYWwgeDExCnNldCB0aXRsZSAiSW96b25lIHBlcmZvcm1hbmNlIgpzZXQgZ3JpZCBsdCAyIGx3IDEKc2V0IHN1cmZhY2UKc2V0IHh0aWNzCnNldCB5dGljcwpzZXQgbG9nc2NhbGUgeCAyCnNldCBsb2dzY2FsZSB5IDIKc2V0IGF1dG9zY2FsZSB6CnNldCB4cmFuZ2UgWzIuKio1OjIuKioyNF0Kc2V0IHhsYWJlbCAiRmlsZSBzaXplIGluIDJebiBLQnl0ZXMiCnNldCB5bGFiZWwgIlJlY29yZCBzaXplIGluIDJebiBLYnl0ZXMiCnNldCB6bGFiZWwgIktieXRlcy9zZWMiCnNldCBkYXRhIHN0eWxlIGxpbmVzCnNldCBkZ3JpZDNkIDgwLDgwLDMKc3Bsb3QgJ3JhbmR3cml0ZS9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiUmFuZG9tIHdyaXRlIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCnBhdXNlIC0xICJIaXQgcmV0dXJuIHRvIGNvbnRpbnVlIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdCBjb2xvcgpzZXQgb3V0cHV0ICJyYW5kd3JpdGUvcmFuZHdyaXRlLnBzIgpzcGxvdCAncmFuZHdyaXRlL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJSYW5kb20gd3JpdGUgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKCnNldCB0ZXJtaW5hbCB4MTEKc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2UiCnNldCBncmlkIGx0IDIgbHcgMQpzZXQgc3VyZmFjZQpzZXQgeHRpY3MKc2V0IHl0aWNzCnNldCBsb2dzY2FsZSB4IDIKc2V0IGxvZ3NjYWxlIHkgMgpzZXQgYXV0b3NjYWxlIHoKc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gMl5uIEtCeXRlcyIKc2V0IHlsYWJlbCAiUmVjb3JkIHNpemUgaW4gMl5uIEtieXRlcyIKc2V0IHpsYWJlbCAiS2J5dGVzL3NlYyIKc2V0IGRhdGEgc3R5bGUgbGluZXMKc2V0IGRncmlkM2QgODAsODAsMwpzcGxvdCAnYmt3ZHJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlJlYWQgQmFja3dhcmRzIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCnBhdXNlIC0xICJIaXQgcmV0dXJuIHRvIGNvbnRpbnVlIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdCBjb2xvcgpzZXQgb3V0cHV0ICJia3dkcmVhZC9ia3dkcmVhZC5wcyIKc3Bsb3QgJ2Jrd2RyZWFkL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJSZWFkIEJhY2t3YXJkcyBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwoKc2V0IHRlcm1pbmFsIHgxMQpzZXQgdGl0bGUgIklvem9uZSBwZXJmb3JtYW5jZSIKc2V0IGdyaWQgbHQgMiBsdyAxCnNldCBzdXJmYWNlCnNldCB4dGljcwpzZXQgeXRpY3MKc2V0IGxvZ3NjYWxlIHggMgpzZXQgbG9nc2NhbGUgeSAyCnNldCBhdXRvc2NhbGUgegpzZXQgeHJhbmdlIFsyLioqNToyLioqMjRdCnNldCB4bGFiZWwgIkZpbGUgc2l6ZSBpbiAyXm4gS0J5dGVzIgpzZXQgeWxhYmVsICJSZWNvcmQgc2l6ZSBpbiAyXm4gS2J5dGVzIgpzZXQgemxhYmVsICJLYnl0ZXMvc2VjIgpzZXQgZGF0YSBzdHlsZSBsaW5lcwpzZXQgZGdyaWQzZCA4MCw4MCwzCnNwbG90ICdyZWNyZXdyaXRlL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJSZWNvcmQgcmV3cml0ZSBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwpwYXVzZSAtMSAiSGl0IHJldHVybiB0byBjb250aW51ZSIKc2V0IHRlcm1pbmFsIHBvc3RzY3JpcHQgY29sb3IKc2V0IG91dHB1dCAicmVjcmV3cml0ZS9yZWNyZXdyaXRlLnBzIgpzcGxvdCAncmVjcmV3cml0ZS9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiUmVjb3JkIHJld3JpdGUgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKCnNldCB0ZXJtaW5hbCB4MTEKc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2UiCnNldCBncmlkIGx0IDIgbHcgMQpzZXQgc3VyZmFjZQpzZXQgeHRpY3MKc2V0IHl0aWNzCnNldCBsb2dzY2FsZSB4IDIKc2V0IGxvZ3NjYWxlIHkgMgpzZXQgYXV0b3NjYWxlIHoKc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gMl5uIEtCeXRlcyIKc2V0IHlsYWJlbCAiUmVjb3JkIHNpemUgaW4gMl5uIEtieXRlcyIKc2V0IHpsYWJlbCAiS2J5dGVzL3NlYyIKc2V0IGRhdGEgc3R5bGUgbGluZXMKc2V0IGRncmlkM2QgODAsODAsMwpzcGxvdCAnc3RyaWRlcmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiU3RyaWRlIHJlYWQgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gY29udGludWUiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0IGNvbG9yCnNldCBvdXRwdXQgInN0cmlkZXJlYWQvc3RyaWRlcmVhZC5wcyIKc3Bsb3QgJ3N0cmlkZXJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIlN0cmlkZSByZWFkIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCgpzZXQgdGVybWluYWwgeDExCnNldCB0aXRsZSAiSW96b25lIHBlcmZvcm1hbmNlIgpzZXQgZ3JpZCBsdCAyIGx3IDEKc2V0IHN1cmZhY2UKc2V0IHh0aWNzCnNldCB5dGljcwpzZXQgbG9nc2NhbGUgeCAyCnNldCBsb2dzY2FsZSB5IDIKc2V0IGF1dG9zY2FsZSB6CnNldCB4cmFuZ2UgWzIuKio1OjIuKioyNF0Kc2V0IHhsYWJlbCAiRmlsZSBzaXplIGluIDJebiBLQnl0ZXMiCnNldCB5bGFiZWwgIlJlY29yZCBzaXplIGluIDJebiBLYnl0ZXMiCnNldCB6bGFiZWwgIktieXRlcy9zZWMiCnNldCBkYXRhIHN0eWxlIGxpbmVzCnNldCBkZ3JpZDNkIDgwLDgwLDMKc3Bsb3QgJ2Z3cml0ZS9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiRndyaXRlIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCnBhdXNlIC0xICJIaXQgcmV0dXJuIHRvIGNvbnRpbnVlIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdCBjb2xvcgpzZXQgb3V0cHV0ICJmd3JpdGUvZndyaXRlLnBzIgpzcGxvdCAnZndyaXRlL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJGd3JpdGUgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKCnNldCB0ZXJtaW5hbCB4MTEKc2V0IHRpdGxlICJJb3pvbmUgcGVyZm9ybWFuY2UiCnNldCBncmlkIGx0IDIgbHcgMQpzZXQgc3VyZmFjZQpzZXQgeHRpY3MKc2V0IHl0aWNzCnNldCBsb2dzY2FsZSB4IDIKc2V0IGxvZ3NjYWxlIHkgMgpzZXQgYXV0b3NjYWxlIHoKc2V0IHhyYW5nZSBbMi4qKjU6Mi4qKjI0XQpzZXQgeGxhYmVsICJGaWxlIHNpemUgaW4gMl5uIEtCeXRlcyIKc2V0IHlsYWJlbCAiUmVjb3JkIHNpemUgaW4gMl5uIEtieXRlcyIKc2V0IHpsYWJlbCAiS2J5dGVzL3NlYyIKc2V0IGRhdGEgc3R5bGUgbGluZXMKc2V0IGRncmlkM2QgODAsODAsMwpzcGxvdCAnZnJld3JpdGUvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIkZyZXdyaXRlIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCnBhdXNlIC0xICJIaXQgcmV0dXJuIHRvIGNvbnRpbnVlIgpzZXQgdGVybWluYWwgcG9zdHNjcmlwdCBjb2xvcgpzZXQgb3V0cHV0ICJmcmV3cml0ZS9mcmV3cml0ZS5wcyIKc3Bsb3QgJ2ZyZXdyaXRlL2lvem9uZV9nZW5fb3V0LmdudXBsb3QnIHVzaW5nIDE6MjozIHRpdGxlICJGcmV3cml0ZSBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwoKc2V0IHRlcm1pbmFsIHgxMQpzZXQgdGl0bGUgIklvem9uZSBwZXJmb3JtYW5jZSIKc2V0IGdyaWQgbHQgMiBsdyAxCnNldCBzdXJmYWNlCnNldCB4dGljcwpzZXQgeXRpY3MKc2V0IGxvZ3NjYWxlIHggMgpzZXQgbG9nc2NhbGUgeSAyCnNldCBhdXRvc2NhbGUgegpzZXQgeHJhbmdlIFsyLioqNToyLioqMjRdCnNldCB4bGFiZWwgIkZpbGUgc2l6ZSBpbiAyXm4gS0J5dGVzIgpzZXQgeWxhYmVsICJSZWNvcmQgc2l6ZSBpbiAyXm4gS2J5dGVzIgpzZXQgemxhYmVsICJLYnl0ZXMvc2VjIgpzZXQgZGF0YSBzdHlsZSBsaW5lcwpzZXQgZGdyaWQzZCA4MCw4MCwzCnNwbG90ICdmcmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiRnJlYWQgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gY29udGludWUiCnNldCB0ZXJtaW5hbCBwb3N0c2NyaXB0IGNvbG9yCnNldCBvdXRwdXQgImZyZWFkL2ZyZWFkLnBzIgpzcGxvdCAnZnJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIkZyZWFkIHBlcmZvcm1hbmNlIiB3aXRoIGxpbmVzCgpzZXQgdGVybWluYWwgeDExCnNldCB0aXRsZSAiSW96b25lIHBlcmZvcm1hbmNlIgpzZXQgZ3JpZCBsdCAyIGx3IDEKc2V0IHN1cmZhY2UKc2V0IHh0aWNzCnNldCB5dGljcwpzZXQgbG9nc2NhbGUgeCAyCnNldCBsb2dzY2FsZSB5IDIKc2V0IGF1dG9zY2FsZSB6CnNldCB4cmFuZ2UgWzIuKio1OjIuKioyNF0Kc2V0IHhsYWJlbCAiRmlsZSBzaXplIGluIDJebiBLQnl0ZXMiCnNldCB5bGFiZWwgIlJlY29yZCBzaXplIGluIDJebiBLYnl0ZXMiCnNldCB6bGFiZWwgIktieXRlcy9zZWMiCnNldCBkYXRhIHN0eWxlIGxpbmVzCnNldCBkZ3JpZDNkIDgwLDgwLDMKc3Bsb3QgJ2ZyZXJlYWQvaW96b25lX2dlbl9vdXQuZ251cGxvdCcgdXNpbmcgMToyOjMgdGl0bGUgIkZyZXJlYWQgcGVyZm9ybWFuY2UiIHdpdGggbGluZXMKcGF1c2UgLTEgIkhpdCByZXR1cm4gdG8gZXhpdCIKc2V0IHRlcm1pbmFsIHBvc3RzY3JpcHQgY29sb3IKc2V0IG91dHB1dCAiZnJlcmVhZC9mcmVyZWFkLnBzIgpzcGxvdCAnZnJlcmVhZC9pb3pvbmVfZ2VuX291dC5nbnVwbG90JyB1c2luZyAxOjI6MyB0aXRsZSAiRnJlcmVhZCBwZXJmb3JtYW5jZSIgd2l0aCBsaW5lcwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpb3pvbmUzXzM0Ny9zcmMvY3VycmVudC9tYWtlZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMzI2MzI2ADAwMTE2MTAAMDAwMDAxMzc2MjAAMTE3MjUyMzY1MDAAMDE2MDEwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc2hlbmhhbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMKIyBWZXJzaW9uICRSZXZpc2lvbjogMS4xMzEgJAojCiMgVGhlIG1ha2VmaWxlIGZvciBidWlsZGluZyBhbGwgdmVyc2lvbnMgb2YgaW96b25lIGZvciBhbGwgc3VwcG9ydGVkCiMgcGxhdGZvcm1zCiMKIyBTdXBwb3J0czoJaHB1eCwgaHB1eF9ub19hbnNpLCBocHV4LTEwLjEsIGhwdXhfbm9fYW5zaS0xMC4xLAojCQlzcHB1eCwgc3BwdXgtMTAuMSwgZ2hwdXgsIHNwcHV4LCAKIwkJY29udmV4LCBGcmVlQlNELCBPcGVuQlNELCBPU0ZWMywgT1NGVjQsIE9TRlY1LCBTQ08KIwkJU0NPX1VuaXh3YXJlX2djYyxOZXRCU0QsVFJVNjQsIE1hYyBPUyBYCgpDQwk9IGNjCkM4OQk9IGM4OQpHQ0MJPSBnY2MKQ0NTCT0gL3Vzci9jY3MvYmluL2NjCk5BQ0MJPSAvb3B0L2Fuc2ljL2Jpbi9jYwpDRkxBR1MJPQpTMTBHQ0NGTEFHUyAgICA9IC1tNjQKUzEwQ0NGTEFHUyAgICAgPSAtbTY0CkZMQUc2NEJJVCAgICAgID0gLW02NAoKYWxsOiAgCglAZWNobyAiIgoJQGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgdGhlIHRhcmdldC4gICAgICAgICIKCUBlY2hvICIgICAgICAgIC0+ICAgQUlYICAgICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBBSVgtTEYgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGJzZGkgICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIgCglAZWNobyAiICAgICAgICAtPiAgIGNvbnZleCAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIgCglAZWNobyAiICAgICAgICAtPiAgIENyYXlYMSAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgZHJhZ29uZmx5ICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBmcmVlYnNkICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGdlbmVyaWMgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgZ2hwdXggICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4cy0xMS4wIChzaW1wbGUpICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGhwdXgtMTEuMHcgICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eHMtMTEuMHcgICAgICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4LTExLjAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGhwdXgtMTAuMSAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgaHB1eC0xMC4yMCAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4ICAgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iIAoJQGVjaG8gIiAgICAgICAgLT4gICBocHV4X25vX2Fuc2kgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGhwdXhfbm9fYW5zaS0xMC4xICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgSVJJWCAgICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBJUklYNjQgICAgICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4ICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbGludXgtYXJtICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1BTUQ2NCAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4LWlhNjQgICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbGludXgtcG93ZXJwYyAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1wb3dlcnBjNjQgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4LXNwYXJjICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgbWFjb3N4ICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBuZXRic2QgICAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIG9wZW5ic2QgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgb3BlbmJzZC10aHJlYWRzICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBPU0ZWMyAgICAgICAgICAgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIE9TRlY0ICAgICAgICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgT1NGVjUgICAgICAgICAgICAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBsaW51eC1TMzkwICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIGxpbnV4LVMzOTBYICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU0NPICAgICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTQ09fVW5peHdhcmVfZ2NjICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXMgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpcy0yLjYgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzN2djYyAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXM4LTY0ICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpczgtNjQtVlhGUyAgICAgKDY0Yml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzMTAgICAgICAgICAgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFNvbGFyaXMxMGNjICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgU29sYXJpczEwZ2NjICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBTb2xhcmlzMTBnY2MtNjQgICAgICAoNjRiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIHNwcHV4ICAgICAgICAgICAgICAgICgzMmJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgc3BwdXgtMTAuMSAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBzcHB1eF9ub19hbnNpLTEwLjEgICAoMzJiaXQpICAgPC0iCglAZWNobyAiICAgICAgICAtPiAgIFRSVTY0ICAgICAgICAgICAgICAgICg2NGJpdCkgICA8LSIKCUBlY2hvICIgICAgICAgIC0+ICAgVVdJTiAgICAgICAgICAgICAgICAgKDMyYml0KSAgIDwtIgoJQGVjaG8gIiAgICAgICAgLT4gICBXaW5kb3dzICg5NS85OC9OVCkgICAoMzJiaXQpICAgPC0iCglAZWNobyAiIgoKY2xlYW46CglybSAtZiAqLm8gaW96b25lIGZpbGVvcCBwaXRfc2VydmVyCgpycG06CgljcCAuLi8uLi9pb3pvbmUqLnRhciAvdXNyL3NyYy9yZWQqL1NPKgoJcnBtYnVpbGQgLWJhIHNwZWMuaW4KCgojCiMgVHVybiBvbiB0aGUgb3B0aW1pemVyLCBsYXJnZWZpbGVzLCBQb3NpeCBhc3luYyBJL08gYW5kIHRocmVhZHMuCiMKaHB1eC0xMS4wOglpb3pvbmVfaHB1eC0xMS4wLm8gbGliYXN5bmMubyBsaWJiaWYubwoJICQoQ0MpICtPMyArT3BhcmFsbGVsICQoTERGTEFHUykgaW96b25lX2hwdXgtMTEuMC5vIGxpYmFzeW5jLm8gXAoJCWxpYmJpZi5vIC1scHRocmVhZCAtbHJ0IC1vIGlvem9uZQoKIwojIFR1cm4gb24gd2lkZS1tb2RlLCB0aGUgb3B0aW1pemVyLCBsYXJnZWZpbGVzLCBQb3NpeCBhc3luYyBJL08gYW5kIHRocmVhZHMuCiMKaHB1eC0xMS4wdzoJaW96b25lX2hwdXgtMTEuMHcubyBsaWJhc3luY3cubyBsaWJiaWYubwoJICQoQ0MpICtERDY0ICtPMyAkKExERkxBR1MpIGlvem9uZV9ocHV4LTExLjB3Lm8gbGliYXN5bmN3Lm8gXAoJCWxpYmJpZi5vIC1scHRocmVhZCAtbHJ0IC1vIGlvem9uZQoKCiMKIyBTaW1wbGUgYnVpbGQgd2l0aCBsYXJnZWZpbGVzLCBQb3NpeCB0aHJlYWRzIGFuZCBQb3NpeCBhc3luYyBJL08KIwpocHV4cy0xMS4wOglpb3pvbmVfaHB1eHMtMTEuMC5vIGxpYmFzeW5jLm8gbGliYmlmLm8gZmlsZW9wX2hwdXhzLTExLjAubyBwaXRfc2VydmVyLm8KCSAkKENDKSAtTyAkKExERkxBR1MpICBpb3pvbmVfaHB1eHMtMTEuMC5vIFwKCQlsaWJhc3luYy5vIGxpYmJpZi5vIC1scHRocmVhZCAtbHJ0IC1vIGlvem9uZQoJICQoQ0MpIC1PICQoTERGTEFHUykgZmlsZW9wX2hwdXhzLTExLjAubyAtbyBmaWxlb3AKCSAkKENDKSAtTyAkKExERkxBR1MpIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgU2ltcGxlIGJ1aWxkIHdpdGggd2lkZS1tb2RlLCBsYXJnZWZpbGVzLCBQb3NpeCB0aHJlYWRzIGFuZCBQb3NpeCBhc3luYyBJL08KIwpocHV4cy0xMS4wdzoJaW96b25lX2hwdXhzLTExLjB3Lm8gbGliYXN5bmN3Lm8gbGliYmlmLm8KCSAkKENDKSAtTyArREQ2NCAkKExERkxBR1MpIGlvem9uZV9ocHV4cy0xMS4wdy5vIFwKCQlsaWJhc3luY3cubyBsaWJiaWYubyAtbHB0aHJlYWQgLWxydCAtbyBpb3pvbmUKCiMKIyBTaW1wbGUgMTAuMSBidWlsZCB3aXRoIG5vIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTyAKIwpocHV4LTEwLjE6CWlvem9uZV9ocHV4LTEwLjEubyAgbGliYmlmLm8KCSAkKEM4OSkgK2UgLU8gJChMREZMQUdTKSBpb3pvbmVfaHB1eC0xMC4xLm8gbGliYmlmLm8gLW8gaW96b25lCgpocHV4LTEwLjIwOglpb3pvbmVfaHB1eC0xMC4yMC5vICBsaWJiaWYubwoJICQoQzg5KSArZSAtTyAkKExERkxBR1MpIGlvem9uZV9ocHV4LTEwLjIwLm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgU2ltcGxlIGdlbmVyaWMgSFAgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08gCiMKaHB1eDoJaW96b25lX2hwdXgubyAKCSQoQzg5KSArZSAtTyAkKExERkxBR1MpIGlvem9uZV9ocHV4Lm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgR05VIEhQIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PIAojCmdocHV4Oglpb3pvbmVfZ2hwdXgubyAgbGliYmlmLm8KCSQoR0NDKSAtTyAkKExERkxBR1MpIGlvem9uZV9naHB1eC5vIGxpYmJpZi5vIC1zdGF0aWMgLW8gaW96b25lCgojCiMgR05VIEdlbmVyaWMgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08gCiMKZ2VuZXJpYzoJaW96b25lX2dlbmVyaWMubyAgbGliYmlmLm8KCSQoQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9nZW5lcmljLm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgTm8gYW5zaWkgJ0MnIGNvbXBpbGVyIEhQIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PIAojCmhwdXhfbm9fYW5zaS0xMC4xOglpb3pvbmVfaHB1eF9uby0xMC4xLm8gIGxpYmJpZi5vIAoJJChOQUNDKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfaHB1eF9uby0xMC4xLm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgTm8gYW5zaWkgJ0MnIGNvbXBpbGVyIEhQIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PIAojCmhwdXhfbm9fYW5zaToJaW96b25lX2hwdXhfbm8ubyAgbGliYmlmLm8KCSQoQzg5KSAgLU8gJChMREZMQUdTKSBpb3pvbmVfaHB1eF9uby5vIGxpYmJpZi5vIC1vIGlvem9uZQoKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXg6CWlvem9uZV9saW51eC5vIGxpYmFzeW5jLm8gbGliYmlmLm8gZmlsZW9wX2xpbnV4Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8zICQoTERGTEFHUykgaW96b25lX2xpbnV4Lm8gbGliYXN5bmMubyBsaWJiaWYubyAtbHB0aHJlYWQgXAoJCS1scnQgLW8gaW96b25lCgkkKENDKSAgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4Lm8gLW8gZmlsZW9wCgkkKENDKSAgLU8zIC1EbGludXggcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBHTlUgJ0MnIGNvbXBpbGVyIExpbnV4IGJ1aWxkIGZvciBwb3dlcnBjIGNoaXAgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXgtcG93ZXJwYzogaW96b25lX2xpbnV4LXBvd2VycGMubyAgbGliYmlmLm8gbGliYXN5bmMubyBmaWxlb3BfbGludXgtcHBjLm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTzMgJChMREZMQUdTKSBpb3pvbmVfbGludXgtcG93ZXJwYy5vIGxpYmFzeW5jLm8gXAoJCWxpYmJpZi5vIC1scHRocmVhZCAgLWxydCAtbyBpb3pvbmUKCSQoQ0MpICAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtcHBjLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8zIC1EbGludXggcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKIwojIEdOVSAnQycgY29tcGlsZXIgTGludXggYnVpbGQgZm9yIHNwYXJjIGNoaXAgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXgtc3BhcmM6IGlvem9uZV9saW51eC1zcGFyYy5vICBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgLU8zICQoTERGTEFHUykgaW96b25lX2xpbnV4LXNwYXJjLm8gbGliYXN5bmMubyBsaWJiaWYubyBcCgkJLWxwdGhyZWFkIC1scnQgLW8gaW96b25lCgkkKENDKSAtTzMgLURsaW51eCBmaWxlb3BfbGludXgubyAtbyBmaWxlb3AKCSQoQ0MpIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFzeW5jIEkvTyAKIwpsaW51eC1pYTY0Oglpb3pvbmVfbGludXgtaWE2NC5vICBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1pYTY0Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTzMgJChMREZMQUdTKSBpb3pvbmVfbGludXgtaWE2NC5vIGxpYmJpZi5vIGxpYmFzeW5jLm8gXAoJCS1scnQgLWxwdGhyZWFkIC1vIGlvem9uZQoJJChDQykgIC1PMyAtRGxpbnV4IGZpbGVvcF9saW51eC1pYTY0Lm8gLW8gZmlsZW9wCgkkKENDKSAgLU8zIC1EbGludXggcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBHTlUgJ0MnIGNvbXBpbGVyIExpbnV4IGJ1aWxkIGZvciBwb3dlcnBjIGNoaXAgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08gCiMKbGludXgtcG93ZXJwYzY0OiBpb3pvbmVfbGludXgtcG93ZXJwYzY0Lm8gIGxpYmJpZi5vIGxpYmFzeW5jLm8gZmlsZW9wX2xpbnV4LXBwYzY0Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EU0hBUkVEX01FTSAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURsaW51eCBcCgkJaW96b25lX2xpbnV4LXBvd2VycGM2NC5vIGxpYmFzeW5jLm8gbGliYmlmLm8gLWxwdGhyZWFkIFwKCQktbHJ0ICQoRkxBRzY0QklUKSAtbyBpb3pvbmUKCSQoQ0MpICAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtcHBjNjQubyAkKEZMQUc2NEJJVCkgLW8gZmlsZW9wCgkkKENDKSAgLU8zIC1EbGludXggcGl0X3NlcnZlci5vICQoRkxBRzY0QklUKSAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFzeW5jIEkvTwojCmxpbnV4LWFybToJaW96b25lX2xpbnV4LWFybS5vICBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1hcm0ubyBwaXRfc2VydmVyLm8KCSQoQ0MpIC1PMyAkKExERkxBR1MpIGlvem9uZV9saW51eC1hcm0ubyBsaWJiaWYubyBsaWJhc3luYy5vIFwKCQktbHJ0IC1scHRocmVhZCAtbyBpb3pvbmUKCSQoQ0MpIC1PMyAtRGxpbnV4IGZpbGVvcF9saW51eC1hcm0ubyAtbyBmaWxlb3AKCSQoQ0MpIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFzeW5jIEkvTyAKIwpsaW51eC1BTUQ2NDoJaW96b25lX2xpbnV4LUFNRDY0Lm8gIGxpYmJpZi5vIGxpYmFzeW5jLm8gZmlsZW9wX2xpbnV4LUFNRDY0Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8zICQoTERGTEFHUykgaW96b25lX2xpbnV4LUFNRDY0Lm8gbGliYmlmLm8gbGliYXN5bmMubyBcCgkJLWxydCAtbHB0aHJlYWQgLW8gaW96b25lCgkkKENDKSAgLU8zIC1EbGludXggZmlsZW9wX2xpbnV4LUFNRDY0Lm8gLW8gZmlsZW9wCgkkKENDKSAgLU8zIC1EbGludXggcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBHTlUgJ0MnIGNvbXBpbGVyIExpbnV4IGJ1aWxkIHdpdGggUy8zOTAsIHRocmVhZHMsIGxhcmdmaWxlcywgYXN5bmMgSS9PCiMKbGludXgtUzM5MDoJaW96b25lX2xpbnV4LXMzOTAubyBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1zMzkwLm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8yICQoTERGTEFHUykgLWxwdGhyZWFkIC1scnQgaW96b25lX2xpbnV4LXMzOTAubyBcCgkJbGliYmlmLm8gbGliYXN5bmMubyAtbyBpb3pvbmUKCSQoQ0MpICAtTzMgLURsaW51eCBmaWxlb3BfbGludXgtczM5MC5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VICdDJyBjb21waWxlciBMaW51eCBidWlsZCB3aXRoIFMvMzkwLCB0aHJlYWRzLCBsYXJnZmlsZXMsIGFzeW5jIEkvTwojCmxpbnV4LVMzOTBYOglpb3pvbmVfbGludXgtczM5MHgubyBsaWJiaWYubyBsaWJhc3luYy5vIGZpbGVvcF9saW51eC1zMzkweC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PMiAkKExERkxBR1MpIC1scHRocmVhZCAtbHJ0IGlvem9uZV9saW51eC1zMzkweC5vIFwKCQlsaWJiaWYubyBsaWJhc3luYy5vIC1vIGlvem9uZQoJJChDQykgIC1PMyAtRGxpbnV4IGZpbGVvcF9saW51eC1zMzkweC5vIC1vIGZpbGVvcAoJJChDQykgIC1PMyAtRGxpbnV4IHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgoKIyAKIyBBSVgKIyBJIHdvdWxkIGhhdmUgYnVpbHQgd2l0aCBBU1lOQ19JTyBidXQgdGhlIEFJWCBtYWNoaW5lIGRvZXMgbm90IGhhdmUgCiMgUE9TSVggMTAwMy4xYiBjb21wbGlhbnQgYXN5bmMgSS9PIGhlYWRlciBmaWxlcy4gIEhhcyB0aHJlYWRzLCBubwojIGxhcmdlZmlsZSBzdXBwb3J0LgojIApBSVg6CWlvem9uZV9BSVgubyAgbGliYmlmLm8gIGZpbGVvcF9BSVgubwoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX0FJWC5vIGxpYmJpZi5vIFwKCQktbHB0aHJlYWRzIC1vIGlvem9uZQoJJChDQykgIC1PIC1EbGludXggZmlsZW9wX0FJWC5vIC1vIGZpbGVvcAoKIyAKIyBBSVgtTEYKIyBJIHdvdWxkIGhhdmUgYnVpbHQgd2l0aCBBU1lOQ19JTyBidXQgdGhlIEFJWCBtYWNoaW5lIGRvZXMgbm90IGhhdmUgCiMgUE9TSVggMTAwMy4xYiBjb21wbGlhbnQgYXN5bmMgSS9PIGhlYWRlciBmaWxlcy4gIEhhcyB0aHJlYWRzLCBhbmQKIyBsYXJnZWZpbGUgc3VwcG9ydC4KIyAKQUlYLUxGOglpb3pvbmVfQUlYLUxGLm8gIGxpYmJpZi5vICAgZmlsZW9wX0FJWC1MRi5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX0FJWC1MRi5vIGxpYmJpZi5vIFwKCQktbHB0aHJlYWRzIC1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9BSVgtTEYubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIElSSVggMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PIAojIFRoaXMgd291bGQgbGlrZSB0byBiZSBpbiA2NCBiaXQgbW9kZSBidXQgaXQgaGFuZ3Mgd2hlbmV2ZXIgaW4gNjQgYml0IG1vZGUuCiMgVGhpcyB2ZXJzaW9uIHVzZXMgdGhlIDY0IGJpdCBpbnRlcmZhY2VzIGJ1dCBpcyBjb21waWxlZCBhcyAzMiBiaXQgY29kZQojCklSSVg2NDoJaW96b25lX0lSSVg2NC5vIGxpYmFzeW5jdy5vIGxpYmJpZi5vIAoJJChDQykgICAtMzIgLU8gJChMREZMQUdTKSBpb3pvbmVfSVJJWDY0Lm8gbGliYmlmLm8gXAoJCS1scHRocmVhZCBsaWJhc3luY3cubyAtbyBpb3pvbmUKCiMKIyBJUklYIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIE5vIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08gCiMgVGhpcyB2ZXJzaW9uIHVzZXMgdGhlIDMyIGJpdCBpbnRlcmZhY2VzIGFuZCBpcyBjb21waWxlZCBhcyAzMiBiaXQgY29kZQojCklSSVg6CWlvem9uZV9JUklYLm8gbGliYXN5bmMubyBsaWJiaWYubwoJJChDQykgIC1PICAtMzIgJChMREZMQUdTKSBpb3pvbmVfSVJJWC5vIGxpYmJpZi5vIC1scHRocmVhZCBcCgkJbGliYXN5bmMubyAtbyBpb3pvbmUKCiMKIyBDcmF5WDE6IDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIE5vIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08gCiMgVGhpcyB2ZXJzaW9uIHVzZXMgdGhlIDMyIGJpdCBpbnRlcmZhY2VzIGFuZCBpcyBjb21waWxlZCBhcyAzMiBiaXQgY29kZQojCkNyYXlYMToJaW96b25lX0NyYXlYMS5vIGxpYmFzeW5jLm8gbGliYmlmLm8KCSQoQ0MpICAtTyAgJChMREZMQUdTKSBpb3pvbmVfQ3JheVgxLm8gbGliYmlmLm8gXAoJCS1scHRocmVhZCBsaWJhc3luY3cubyAtbyBpb3pvbmUKCiMKIyBTUFAtVVggMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgTm8gbGFyZ2VmaWxlcywgYW5kIE5vIGFzeW5jIEkvTywgCiMgcHJlYWQgZXh0ZW5zaW9ucwojIEZvciBvbGRlciBTUFAtVVggbWFjaGluZXMgd2l0aCA5LjA1IGNvbXBhdGliaWxpdHkKIwpzcHB1eDoJaW96b25lX3NwcHV4Lm8gIGxpYmJpZi5vCgkkKE5BQ0MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zcHB1eC5vICBsaWJiaWYubyBcCgktV2wsK3BhcmFsbGVsIC1sY254X3N5c2NhbGwgLWxwdGhyZWFkIC1sYWlsIC1vIGlvem9uZQoKIwojIFNQUC1VWCAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBhbmQgTm8gYXN5bmMgSS9PLCBwcmVhZCAKIyBleHRlbnNpb25zCiMgRm9yIE5ld2VyIFNQUC1VWCBtYWNoaW5lcyB3aXRoIDEwLjAxIGNvbXBhdGliaWxpdHkKIwpzcHB1eC0xMC4xOglpb3pvbmVfc3BwdXgtMTAuMS5vIGxpYmJpZi5vCgkkKE5BQ0MpIC1PICQoTERGTEFHUykgaW96b25lX3NwcHV4LTEwLjEubyBsaWJiaWYubyBcCgkgLWxjbnhfc3lzY2FsbCAgLVdsLCtwYXJhbGxlbCAtbHB0aHJlYWQgLWxhaWwgLW8gaW96b25lCgojCiMgU1BQLVVYIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIE5vIGxhcmdlZmlsZXMsIGFuZCBObyBhc3luYyBJL08sIHByZWFkIAojIGV4dGVuc2lvbnMKIyBGb3IgTmV3ZXIgU1BQLVVYIG1hY2hpbmVzIHdpdGggMTAuMDEgY29tcGF0aWJpbGl0eSwgYW5kIG5vIGFuc2kgJ0MnIGNvbXBpbGVyLgojCnNwcHV4X25vX2Fuc2ktMTAuMToJaW96b25lX3NwcHV4X25vLTEwLjEubyBsaWJiaWYubwoJJChDQ1MpICAtTyAkKExERkxBR1MpIGlvem9uZV9zcHB1eF9uby0xMC4xLm8gbGliYmlmLm8gXAoJCS1XbCwrcGFyYWxsZWwgLWxjbnhfc3lzY2FsbCAgXAoJCS1scHRocmVhZCAtbGFpbCAtbyBpb3pvbmUKCiMKIyBDb252ZXggJ0MnIHNlcmllcyAzMiBiaXQgYnVpbGQgd2l0aCBObyB0aHJlYWRzLCBObyBsYXJnZWZpbGVzLCBhbmQgTm8gYXN5bmMgSS9PCiMKY29udmV4Oglpb3pvbmVfY29udmV4Lm8gbGliYmlmLm8KCSQoQ0MpIC1PICQoTERGTEFHUylpb3pvbmVfY29udmV4Lm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgU29sYXJpcyAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PCiMKU29sYXJpczoJaW96b25lX3NvbGFyaXMubyBsaWJhc3luYy5vIGxpYmJpZi5vIGZpbGVvcF9Tb2xhcmlzLm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfc29sYXJpcy5vIGxpYmFzeW5jLm8gbGliYmlmLm8gXAoJCS1sdGhyZWFkIC1scHRocmVhZCAtbHBvc2l4NCAtbG5zbCAtbGFpbyAtbHNvY2tldCBcCgkJLW8gaW96b25lCgkkKENDKSAgLU8gZmlsZW9wX1NvbGFyaXMubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIFNvbGFyaXMgMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXM3Z2NjOglpb3pvbmVfc29sYXJpczdnY2MubyBsaWJhc3luYzcubyBsaWJiaWY3Lm8gCgkkKEdDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXM3Z2NjLm8gbGliYXN5bmM3Lm8gbGliYmlmNy5vIFwKCQktbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAoJCS1sc29ja2V0IC1vIGlvem9uZQojCiMgU29sYXJpcyAzMiBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PCiMKU29sYXJpczEwOglpb3pvbmVfc29sYXJpczEwLm8gbGliYXN5bmMxMC5vIGxpYmJpZjEwLm8gZmlsZW9wX1NvbGFyaXMxMC5vIHBpdF9zZXJ2ZXIubwoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXMxMC5vIGxpYmFzeW5jMTAubyBsaWJiaWYxMC5vIFwKCQktbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAoJCS1sc29ja2V0IC1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9Tb2xhcmlzMTAubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIFNvbGFyaXMgMzIgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXMxMGNjOglpb3pvbmVfc29sYXJpczEwY2MubyBsaWJhc3luYzEwY2MubyBsaWJiaWYxMGNjLm8gZmlsZW9wX1NvbGFyaXMxMGNjLm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8gJChMREZMQUdTKSBpb3pvbmVfc29sYXJpczEwY2MubyBsaWJhc3luYzEwY2MubyBsaWJiaWYxMGNjLm8gXAoJCS1sdGhyZWFkIC1scHRocmVhZCAtbHBvc2l4NCAtbG5zbCAtbGFpbyBcCgkJLWxzb2NrZXQgLW8gaW96b25lCgkkKENDKSAgLU8gZmlsZW9wX1NvbGFyaXMxMGNjLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBTb2xhcmlzIDMyIGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08KIwpTb2xhcmlzMTBnY2M6CWlvem9uZV9zb2xhcmlzMTBnY2MubyBsaWJhc3luYzEwLm8gbGliYmlmMTAubyBmaWxlb3BfU29sYXJpczEwZ2NjLm8gcGl0X3NlcnZlci5vCgkkKEdDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXMxMGdjYy5vIGxpYmFzeW5jMTAubyBsaWJiaWYxMC5vIFwKCQktbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAoJCS1sc29ja2V0IC1vIGlvem9uZQoJJChHQ0MpICAtTyBmaWxlb3BfU29sYXJpczEwZ2NjLm8gLW8gZmlsZW9wCgkkKEdDQykgIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgU29sYXJpcyA2NCBiaXQgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhbmQgYXN5bmMgSS9PCiMKU29sYXJpczEwZ2NjLTY0Oglpb3pvbmVfc29sYXJpczEwZ2NjLTY0Lm8gbGliYXN5bmMxMC02NC5vIGxpYmJpZjEwLTY0Lm8gZmlsZW9wX1NvbGFyaXMxMGdjYy02NC5vIHBpdF9zZXJ2ZXIubwoJJChHQ0MpICAtTyAkKExERkxBR1MpICQoUzEwR0NDRkxBR1MpIGlvem9uZV9zb2xhcmlzMTBnY2MtNjQubyBsaWJhc3luYzEwLTY0Lm8gbGliYmlmMTAtNjQubyBcCgkJLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKCSQoR0NDKSAgLU8gJChTMTBHQ0NGTEFHUykgZmlsZW9wX1NvbGFyaXMxMGdjYy02NC5vIC1vIGZpbGVvcAoJJChHQ0MpICAtTyAkKFMxMEdDQ0ZMQUdTKSBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKCiMKIyBTb2xhcmlzIDY0IGJpdCBidWlsZCB3aXRoIHRocmVhZHMsIGxhcmdlZmlsZXMsIGFuZCBhc3luYyBJL08KIwpTb2xhcmlzMTBjYy02NDoJaW96b25lX3NvbGFyaXMxMGNjLTY0Lm8gbGliYXN5bmMxMC02NC5vIGxpYmJpZjEwLTY0Lm8gZmlsZW9wX1NvbGFyaXMxMGNjLTY0Lm8gcGl0X3NlcnZlci5vCgkkKENDKSAgLU8gJChMREZMQUdTKSAkKFMxMENDRkxBR1MpIGlvem9uZV9zb2xhcmlzMTBjYy02NC5vIGxpYmFzeW5jMTAtNjQubyBsaWJiaWYxMC02NC5vIFwKICAgICAgICAgICAgICAtbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAogICAgICAgICAgICAgIC1sc29ja2V0IC1vIGlvem9uZQoJJChDQykgIC1PICQoUzEwQ0NGTEFHUykgZmlsZW9wX1NvbGFyaXMxMGNjLTY0Lm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gJChTMTBDQ0ZMQUdTKSBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKCgojCiMgU29sYXJpcyAyLjYgKDMyIGJpdCkgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBhbmQgbm8gYXN5bmMgSS9PCiMKU29sYXJpcy0yLjY6CWlvem9uZV9zb2xhcmlzLTIuNi5vIGxpYmJpZi5vIAoJJChDQykgIC1PICQoTERGTEFHUykgaW96b25lX3NvbGFyaXMtMi42Lm8gbGliYmlmLm8gXAoJCS1sbnNsIC1sYWlvIC1sc29ja2V0IC1vIGlvem9uZQoKIwojIFNvbGFyaXMgNjQgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYW5kIGFzeW5jIEkvTwojClNvbGFyaXM4LTY0OiBpb3pvbmVfc29sYXJpczgtNjQubyBsaWJhc3luYy5vIGxpYmJpZi5vCgkkKENDKSAkKExERkxBR1MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiBpb3pvbmVfc29sYXJpczgtNjQubyBcCgkJbGliYXN5bmMubyBsaWJiaWYubyAtbHRocmVhZCAtbHB0aHJlYWQgLWxwb3NpeDQgLWxuc2wgLWxhaW8gXAoJCS1sc29ja2V0IC1vIGlvem9uZQoKIwojIFNvbGFyaXMgNjQgYml0IGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgYXN5bmMgSS9PLCBhbmQgVnhmcwojClNvbGFyaXM4LTY0LVZYRlM6IGlvem9uZV9zb2xhcmlzOC02NC1WWEZTLm8gbGliYXN5bmMubyBsaWJiaWYubwoJJChDQykgJChMREZMQUdTKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgLUkvb3B0L1ZSVFN2eGZzL2luY2x1ZGUvIAoJCWlvem9uZV9zb2xhcmlzOC02NC1WWEZTLm8gbGliYXN5bmMubyBsaWJiaWYubyBcCgkJLWx0aHJlYWQgLWxwdGhyZWFkIC1scG9zaXg0IC1sbnNsIC1sYWlvIFwKCQktbHNvY2tldCAtbyBpb3pvbmUKCiMKIyBXaW5kb3dzIGJ1aWxkIHJlcXVpcmVzIEN5Z3dpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gWW91CiMgY2FuIGdldCB0aGlzIGZyb20gd3d3LmN5Z3dpbi5jb20KIyBObyBsYXJnZWZpbGVzLCBObyBhc3luYyBJL08KIwpXaW5kb3dzOglpb3pvbmVfd2luZG93cy5vIGxpYmJpZi5vIGZpbGVvcF93aW5kb3dzLm8gcGl0X3NlcnZlcl93aW4ubwoJJChHQ0MpIC1PICQoTERGTEFHUykgaW96b25lX3dpbmRvd3MubyBsaWJiaWYubyAtbyBpb3pvbmUKCSQoR0NDKSAtTyAkKExERkxBR1MpIGZpbGVvcF93aW5kb3dzLm8gLW8gZmlsZW9wCgkkKEdDQykgLU8gJChMREZMQUdTKSBwaXRfc2VydmVyX3dpbi5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBVd2luIGJ1aWxkIHJlcXVpcmVzIFVXSU4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIAojIE5vIHRocmVhZHMsIE5vIGxhcmdlZmlsZXMsIE5vIGFzeW5jIEkvTwojClVXSU46CWlvem9uZV91d2luLm8gbGliYmlmLm8KCSQoR0NDKSAtTyAkKExERkxBR1MpIGlvem9uZV91d2luLm8gbGliYmlmLm8gLW8gaW96b25lCgojCiMgR05VIEMgY29tcGlsZXIgQlNEL09TIGJ1aWxkIHdpdGggdGhyZWFkcywgbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMKCmJzZGk6CWlvem9uZV9ic2RpLm8gbGliYmlmLm8gZmlsZW9wX2JzZGkubyBwaXRfc2VydmVyLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgaW96b25lX2JzZGkubyBsaWJiaWYubyAtbyBpb3pvbmUKCSQoQ0MpIC1PIGZpbGVvcF9ic2RpLm8gLW8gZmlsZW9wCgkkKENDKSAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgoKIwojIEdOVSBDIGNvbXBpbGVyIEZyZWVCU0QgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08KIwoKZnJlZWJzZDoJaW96b25lX2ZyZWVic2QubyBsaWJiaWYubyBmaWxlb3BfZnJlZWJzZC5vIGxpYmFzeW5jLm8gcGl0X3NlcnZlci5vCgkkKENDKSAkKExERkxBR1MpIGlvem9uZV9mcmVlYnNkLm8gbGliYmlmLm8gLWxwdGhyZWFkIGxpYmFzeW5jLm8gXAoJCS1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9mcmVlYnNkLm8gLW8gZmlsZW9wCgkkKENDKSAgLU8gcGl0X3NlcnZlci5vIC1vIHBpdF9zZXJ2ZXIKCiMKIyBHTlUgQyBjb21waWxlciBEcmFnb25GbHkgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzCiMKZHJhZ29uZmx5Oglpb3pvbmVfZHJhZ29uZmx5Lm8gbGliYmlmLm8gZmlsZW9wX2RyYWdvbmZseS5vIHBpdF9zZXJ2ZXIubwoJJChDQykgJChMREZMQUdTKSBpb3pvbmVfZHJhZ29uZmx5Lm8gbGliYmlmLm8gLW8gaW96b25lCgkkKENDKSAgLU8gZmlsZW9wX2RyYWdvbmZseS5vIC1vIGZpbGVvcAoJJChDQykgIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VIEMgY29tcGlsZXIgTWFjb3NYIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMKCm1hY29zeDoJaW96b25lX21hY29zeC5vIGxpYmJpZi5vIGZpbGVvcF9tYWNvc3gubyBwaXRfc2VydmVyLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgaW96b25lX21hY29zeC5vIGxpYmJpZi5vIC1vIGlvem9uZQoJJChDQykgIC1PIGZpbGVvcF9tYWNvc3gubyAtbyBmaWxlb3AKCSQoQ0MpICAtTyBwaXRfc2VydmVyLm8gLW8gcGl0X3NlcnZlcgojCiMKIyBHTlUgQyBjb21waWxlciBPcGVuQlNEIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMKCm9wZW5ic2Q6CWlvem9uZV9vcGVuYnNkLm8gbGliYmlmLm8gZmlsZW9wX29wZW5ic2QubyBwaXRfc2VydmVyLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgaW96b25lX29wZW5ic2QubyBsaWJiaWYubyAtbyBpb3pvbmUKCSQoQ0MpICAtTyBmaWxlb3Bfb3BlbmJzZC5vIC1vIGZpbGVvcAoJJChDQykgIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMgR05VIEMgY29tcGlsZXIgT3BlbkJTRCBidWlsZCB3aXRoIHRocmVhZHMsIG5vIGxhcmdlZmlsZXMsIG5vIGFzeW5jIEkvTwojCgpvcGVuYnNkLXRocmVhZHM6CWlvem9uZV9vcGVuYnNkLXRocmVhZHMubyBsaWJiaWYubwoJJChDQykgLU8gJChMREZMQUdTKSAtcHRocmVhZCBpb3pvbmVfb3BlbmJzZC10aHJlYWRzLm8gXAoJCWxpYmJpZi5vIC1vIGlvem9uZQoKIwojIEdOVSBDIGNvbXBpbGVyIE9TRlYzIGJ1aWxkIAojIEhhcyB0aHJlYWRzIGFuZCBhc3luYyBJL08gYnV0IG5vIGxhcmdlZmlsZXMuCiMKCk9TRlYzOglpb3pvbmVfT1NGVjMubyBsaWJiaWYubyBsaWJhc3luYy5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9PU0ZWMy5vIGxpYmJpZi5vIFwKCQktbHB0aHJlYWRzIGxpYmFzeW5jLm8gLWxhaW8gLW8gaW96b25lCgojCiMgR05VIEMgY29tcGlsZXIgT1NGVjQgYnVpbGQgCiMgSGFzIHRocmVhZHMgYW5kIGFzeW5jIEkvTyBidXQgbm8gbGFyZ2VmaWxlcy4KIwoKT1NGVjQ6CWlvem9uZV9PU0ZWNC5vIGxpYmJpZi5vIGxpYmFzeW5jLm8KCSQoQ0MpIC1PICQoTERGTEFHUykgaW96b25lX09TRlY0Lm8gbGliYmlmLm8gLWxwdGhyZWFkIFwKCQlsaWJhc3luYy5vIC1sYWlvIC1vIGlvem9uZQoKIwojIEdOVSBDIGNvbXBpbGVyIE9TRlY1IGJ1aWxkIAojIEhhcyB0aHJlYWRzIGFuZCBhc3luYyBJL08gYnV0IG5vIGxhcmdlZmlsZXMuCiMKCk9TRlY1Oglpb3pvbmVfT1NGVjUubyBsaWJiaWYubyBsaWJhc3luYy5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9PU0ZWNS5vIGxpYmJpZi5vIC1scHRocmVhZCBcCgkJbGliYXN5bmMubyAtbGFpbyAtbyBpb3pvbmUKCiMKIyBHTlUgQyBjb21waWxlciBUUlU2NCBidWlsZCAKIyBIYXMgdGhyZWFkcyBhbmQgYXN5bmMgSS9PIGJ1dCBubyBsYXJnZWZpbGVzLgojCgpUUlU2NDoJaW96b25lX1RSVTY0Lm8gbGliYmlmLm8gbGliYXN5bmMubwoJJChDQykgLU8gJChMREZMQUdTKSBpb3pvbmVfVFJVNjQubyBsaWJiaWYubyAtbHB0aHJlYWQgXAoJCWxpYmFzeW5jLm8gLWxhaW8gLW8gaW96b25lCgojCiMgR05VIEdlbmVyaWMgYnVpbGQgd2l0aCBubyB0aHJlYWRzLCBubyBsYXJnZWZpbGVzLCBubyBhc3luYyBJL08KIyBmb3IgU0NPCiMgTm90ZToJQmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHBhdGNoZXMgZm9yIFNDTydzIE9wZW5zZXJ2ZXIKIyBvciB5b3Ugd2lsbCBnZXQgd2FybmluZ3MgYWJvdXQgdGltZXIgcHJvYmxlbXMuCiMKClNDTzoJaW96b25lX1NDTy5vICBsaWJiaWYubwoJJChHQ0MpIC1PICQoTERGTEFHUykgaW96b25lX1NDTy5vIC1sc29ja2V0IC1zIGxpYmJpZi5vIC1vIGlvem9uZQoKCiMKIyBHTlUgYnVpbGQgd2l0aCB0aHJlYWRzLCBsYXJnZWZpbGVzLCBhc3luYyBJL08KIyBmb3IgU0NPIFVuaXh3YXJlIDUgNy4xLjEgaTM4NiB4ODZhdCBTQ08gVU5JWCBTVlI1CiMgTm90ZTogQmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHBhdGNoZXMgZm9yIFNDTydzIE9wZW5zZXJ2ZXIKIyBvciB5b3Ugd2lsbCBnZXQgd2FybmluZ3MgYWJvdXQgdGltZXIgcHJvYmxlbXMuCiMKClNDT19Vbml4d2FyZV9nY2M6CWlvem9uZV9TQ09fVW5peHdhcmVfZ2NjLm8gIGxpYmJpZi5vIGxpYmFzeW5jLm8KCSQoR0NDKSAtTyAkKExERkxBR1MpIGlvem9uZV9TQ09fVW5peHdhcmVfZ2NjLm8gbGliYmlmLm8gbGliYXN5bmMubyBcCgkJLWxzb2NrZXQgLWx0aHJlYWQgLW8gaW96b25lCgojCiMgR05VIEMgY29tcGlsZXIgTmV0QlNEIGJ1aWxkIHdpdGggbm8gdGhyZWFkcywgbm8gbGFyZ2VmaWxlcywgbm8gYXN5bmMgSS9PCiMKCm5ldGJzZDoJaW96b25lX25ldGJzZC5vICBsaWJiaWYubyBmaWxlb3BfbmV0YnNkLm8gcGl0X3NlcnZlci5vCgkkKENDKSAtTyAkKExERkxBR1MpIGlvem9uZV9uZXRic2QubyBsaWJiaWYubyAtbyBpb3pvbmUKCSQoQ0MpIC1PIGZpbGVvcF9uZXRic2QubyAtbyBmaWxlb3AKCSQoQ0MpIC1PIHBpdF9zZXJ2ZXIubyAtbyBwaXRfc2VydmVyCgojCiMKIyBOb3cgZm9yIHRoZSBtYWNoaW5lIHNwZWNpZmljIHN0dWZmCiMKCmlvem9uZV9ocHV4Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDkuMDUpIgoJQGVjaG8gIiIKCSQoQzg5KSArZSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJocHV4IicgJChDRkxBR1MpIGlvem9uZS5jICAtbyBpb3pvbmVfaHB1eC5vCgkkKEM4OSkgK2UgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfaHB1eC0xMS4wLm86CWlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBIUC1VWCAoMTEuMCkiCglAZWNobyAiIgoJJChDQykgLWMgK08zICtPcGFyYWxsZWwgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgXAoJCS1ETkFNRT0nImhwdXgtMTEuMCInIC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURWWEZTICQoQ0ZMQUdTKSBcCgkJaW96b25lLmMgIC1vIGlvem9uZV9ocHV4LTExLjAubwoJJChDQykgLWMgICtPMyArT3BhcmFsbGVsIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmMubwoJJChDQykgLWMgICtPMyArT3BhcmFsbGVsIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYmlmLmMgIC1vIGxpYmJpZi5vCgppb3pvbmVfaHB1eC0xMS4wdy5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDExLjB3KSIKCUBlY2hvICIiCgkkKENDKSAtYyArREQ2NCArTzMgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgXAoJICAgIC1ETkFNRT0nImhwdXgtMTEuMHciJyAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgaW96b25lLmMgXAoJICAgICAtbyBpb3pvbmVfaHB1eC0xMS4wdy5vCgkkKENDKSAtYyArREQ2NCArTzMgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgXAoJCS1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURWWEZTICQoQ0ZMQUdTKSBsaWJhc3luYy5jICAtbyBsaWJhc3luY3cubwoJJChDQykgLWMgK0RENjQgK08zIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYmlmLmMgIC1vIGxpYmJpZi5vCgppb3pvbmVfaHB1eHMtMTEuMC5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIHNpbXBsZSBpb3pvbmUgZm9yIEhQLVVYICgxMS4wKSIKCUBlY2hvICIiCgkkKENDKSAtYyAgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgXAoJCS1ETkFNRT0nImhwdXhzLTExLjAiJyAtREFTWU5DX0lPIC1EVlhGUyAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGlvem9uZS5jICBcCgkJLW8gaW96b25lX2hwdXhzLTExLjAubwoJJChDQykgLWMgIC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIFwKCQktREFTWU5DX0lPICAtRFZYRlMgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8gCgkkKENDKSAtYyAgLUR1bml4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAgLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgXAoJCS1EQVNZTkNfSU8gLURWWEZTICQoQ0ZMQUdTKSBsaWJiaWYuYyAgLW8gbGliYmlmLm8gCgpmaWxlb3BfaHB1eHMtMTEuMC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBzaW1wbGUgZmlsZW9wIGZvciBIUC1VWCAoMTEuMCkiCglAZWNobyAiIgoJJChDQykgLWMgICQoQ0ZMQUdTKSBmaWxlb3AuYyAgLW8gZmlsZW9wX2hwdXhzLTExLjAubyAKCnBpdF9zZXJ2ZXIubzoJcGl0X3NlcnZlci5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIHRoZSBwaXRfc2VydmVyIgoJQGVjaG8gIiIKCSQoQ0MpIC1jICAkKENGTEFHUykgcGl0X3NlcnZlci5jICAtbyBwaXRfc2VydmVyLm8gCgpwaXRfc2VydmVyX3dpbi5vOglwaXRfc2VydmVyLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgdGhlIHBpdF9zZXJ2ZXIgZm9yIFdpbmRvd3MiCglAZWNobyAiIgoJJChDQykgLWMgICQoQ0ZMQUdTKSAtRFdpbmRvd3MgcGl0X3NlcnZlci5jICAtbyBwaXRfc2VydmVyX3dpbi5vIAoKaW96b25lX2hwdXhzLTExLjB3Lm86CWlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgc2ltcGxlIGlvem9uZSBmb3IgSFAtVVggKDExLjB3KSIKCUBlY2hvICIiCgkkKENDKSAtYyArREQ2NCAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLUROQU1FPSciaHB1eHMtMTEuMHciJyAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyBcCgkJLURIQVZFX1BSRUFEICQoQ0ZMQUdTKSBpb3pvbmUuYyAgLW8gaW96b25lX2hwdXhzLTExLjB3Lm8KCSQoQ0MpIC1jICtERDY0IC1EdW5peCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgIC1EX0hQVVhfU09VUkNFIFwKCQktREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EVlhGUyAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmN3Lm8gCgkkKENDKSAtYyArREQ2NCAtRHVuaXggLURfTEFSR0VGSUxFNjRfU09VUkNFICAtRF9IUFVYX1NPVVJDRSBcCgkJLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRFZYRlMgJChDRkxBR1MpIGxpYmJpZi5jICAtbyBsaWJiaWYubyAKCmlvem9uZV9ocHV4LTEwLjEubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBIUC1VWCAoMTAuMSkiCglAZWNobyAiIgoJJChDODkpICtlIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1ETkFNRT0nImhwdXgtMTAuMSInICQoQ0ZMQUdTKSBpb3pvbmUuYyAgLW8gaW96b25lX2hwdXgtMTAuMS5vCgkkKEM4OSkgK2UgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jICAtbyBsaWJiaWYubwoKaW96b25lX2hwdXgtMTAuMjAubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBIUC1VWCAoMTAuMjApIgoJQGVjaG8gIiIKCSQoQzg5KSArZSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJocHV4LTEwLjIwIicgJChDRkxBR1MpIGlvem9uZS5jICAtbyBpb3pvbmVfaHB1eC0xMC4yMC5vCgkkKEM4OSkgK2UgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jICAtbyBsaWJiaWYubwoKaW96b25lX2docHV4Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgR0NDIEhQLVVYICg5LjA1KSAiCglAZWNobyAiIgoJJChHQ0MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktRE5BTUU9JyJoPWdocHV4IicgLW8gaW96b25lX2docHV4Lm8KCSQoR0NDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9nZW5lcmljLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBHZW5lcmljICIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRGdlbmVyaWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPSciR2VuZXJpYyInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfZ2VuZXJpYy5vCgkkKENDKSAtYyAtTyAtRGdlbmVyaWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfaHB1eF9uby5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEhQLVVYICg5LjA1KSB3aXRob3V0IGFuc2kgY29tcGlsZXIiCglAZWNobyAiIgoJJChOQUNDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLUROT19USFJFQURTIGlvem9uZS5jIFwKCQktRE5BTUU9JyJocHV4X25vX2Fuc2kiJyAtbyBpb3pvbmVfaHB1eF9uby5vCgkkKE5BQ0MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRE5PX1RIUkVBRFMgXAoJCWxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfaHB1eF9uby0xMC4xLm86CWlvem9uZS5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSFAtVVggKDEwLjEpIHdpdGhvdXQgYW5zaSBjb21waWxlciIKCUBlY2hvICIiCgkkKE5BQ0MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRE5PX1RIUkVBRFMgaW96b25lLmMgXAoJCS1ETkFNRT0nImhwdXhfbm9fYW5zaV8xMC4xIicgLW8gaW96b25lX2hwdXhfbm8tMTAuMS5vCgkkKE5BQ0MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRE5PX1RIUkVBRFMgXAoJCWxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfbGludXgtcG93ZXJwYy5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXggUG93ZXJQQyIKCUBlY2hvICIiCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURET05UX0hBVkVfT19ESVJFQ1QgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgaW96b25lLmMgXAoJCS1ETkFNRT0nImxpbnV4LXBvd2VycGMiJyAtbyBpb3pvbmVfbGludXgtcG93ZXJwYy5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8gCgppb3pvbmVfbGludXgtcG93ZXJwYzY0Lm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBMaW51eCBQb3dlclBDNjQiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ETkFNRT0nImxpbnV4LXBvd2VycGM2NCInIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQkkKEZMQUc2NEJJVCkgLW8gaW96b25lX2xpbnV4LXBvd2VycGM2NC5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgJChGTEFHNjRCSVQpIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jICQoRkxBRzY0QklUKSAtbyBsaWJhc3luYy5vIAoKCmlvem9uZV9saW51eC1zcGFyYy5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXggU3BhcmMiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ERE9OVF9IQVZFX09fRElSRUNUIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktRE5BTUU9JyJsaW51eC1zcGFyYyInIC1vIGlvem9uZV9saW51eC1zcGFyYy5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8gCgppb3pvbmVfbGludXgubzoJaW96b25lLmMgbGliYmlmLmMgbGliYXN5bmMuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4IgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtREhBVkVfUFJFQUQgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgaW96b25lLmMgXAoJCS1ETkFNRT0nImxpbnV4IicgLW8gaW96b25lX2xpbnV4Lm8KCSQoQ0MpIC1XYWxsIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLVdhbGwgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmMubyAKCmZpbGVvcF9BSVgubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBBSVgiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9BSVgubwoKZmlsZW9wX0FJWC1MRi5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIEFJWC1MRiIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX0FJWC1MRi5vCgpmaWxlb3BfYnNkaS5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIEJTRGkiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9ic2RpLm8KCmZpbGVvcF9mcmVlYnNkLm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgRnJlZUJTRCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2ZyZWVic2QubwoKZmlsZW9wX25ldGJzZC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIE5ldEJTRCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX25ldGJzZC5vCgpmaWxlb3BfU29sYXJpcy5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIFNvbGFyaXMiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9Tb2xhcmlzLm8KCmZpbGVvcF9Tb2xhcmlzMTAubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBTb2xhcmlzMTAiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9Tb2xhcmlzMTAubwoKZmlsZW9wX1NvbGFyaXMxMGNjLm86IGZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgU29sYXJpczEwY2MiCglAZWNobyAiIgoJJChDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9Tb2xhcmlzMTBjYy5vCgoKZmlsZW9wX1NvbGFyaXMxMGdjYy5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIFNvbGFyaXMxMGdjYyIKCUBlY2hvICIiCgkkKEdDQykgLWMgLU8gJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9Tb2xhcmlzMTBnY2MubwoKZmlsZW9wX1NvbGFyaXMxMGdjYy02NC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIFNvbGFyaXMxMGdjYy02NCIKCUBlY2hvICIiCgkkKEdDQykgLWMgLU8gJChDRkxBR1MpICQoUzEwR0NDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9Tb2xhcmlzMTBnY2MtNjQubwoKZmlsZW9wX1NvbGFyaXMxMGNjLTY0Lm86ICAgICAgZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBTb2xhcmlzMTBjYy02NCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAkKENGTEFHUykgJChTMTBDQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfU29sYXJpczEwY2MtNjQubwoKCmZpbGVvcF9saW51eC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4IgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4Lm8KCmZpbGVvcF9vcGVuYnNkLm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgT3BlbkJTRCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX29wZW5ic2QubwoKZmlsZW9wX21hY29zeC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIE1BQyBPUyBYIgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PIC1EbWFjb3N4ICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfbWFjb3N4Lm8KCmZpbGVvcF9saW51eC1pYTY0Lm86CWZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgTGludXgtaWE2NCIKCUBlY2hvICIiCgkkKENDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1pYTY0Lm8KCmZpbGVvcF9saW51eC1wcGMubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eC1wb3dlcnBjIgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4LXBwYy5vCgpmaWxlb3BfbGludXgtcHBjNjQubzoJZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eC1wb3dlcnBjNjQiCglAZWNobyAiIgoJJChDQykgLVdhbGwgLWMgLU8zICQoQ0ZMQUdTKSAkKEZMQUc2NEJJVCkgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4LXBwYzY0Lm8KCmZpbGVvcF9saW51eC1BTUQ2NC5vOglmaWxlb3AuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBmaWxlb3AgZm9yIExpbnV4LUFNRDY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4LUFNRDY0Lm8KCmZpbGVvcF9saW51eC1hcm0ubzogIGZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGZpbGVvcCBmb3IgTGludXgtYXJtIgoJQGVjaG8gIiIKCSQoQ0MpIC1XYWxsIC1jIC1PMyAkKENGTEFHUykgZmlsZW9wLmMgLW8gZmlsZW9wX2xpbnV4LWFybS5vCgpmaWxlb3BfbGludXgtczM5MC5vOiAgZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eC1TMzkwIgoJQGVjaG8gIiIKCSQoR0NDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIGZpbGVvcC5jIC1vIGZpbGVvcF9saW51eC1zMzkwLm8KCmZpbGVvcF9saW51eC1zMzkweC5vOiAgZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBMaW51eC1zMzkweCIKCUBlY2hvICIiCgkkKEdDQykgLVdhbGwgLWMgLU8zICQoQ0ZMQUdTKSBmaWxlb3AuYyAtbyBmaWxlb3BfbGludXgtczM5MHgubwoKZmlsZW9wX3dpbmRvd3MubzogZmlsZW9wLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgZmlsZW9wIGZvciBXaW5kb3dzIgoJQGVjaG8gIiIKCSQoR0NDKSAtV2FsbCAtYyAtTzMgJChDRkxBR1MpIC1EV2luZG93cyBmaWxlb3AuYyAtbyBmaWxlb3Bfd2luZG93cy5vCgppb3pvbmVfbGludXgtaWE2NC5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXgtaWE2NCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLUROQU1FPScibGludXgtaWE2NCInIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfbGludXgtaWE2NC5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgIC1vIGxpYmFzeW5jLm8gCgojIFRlbXBvcmFyaWx5IGRvd25ncmFkZSBvcHQgbGV2ZWwgdG8gIi1PMiIgZm9yIGEgY29tcGlsZXIgYnVnIGluIDQuNi4yLgojIE9uY2UgdXBncmFkZWQgdG8gNC43LCBjaGFuZ2UgaXQgYmFjayB0byAiLU8zIi4KaW96b25lX2xpbnV4LWFybS5vOglpb3pvbmUuYyBsaWJiaWYuYyBsaWJhc3luYy5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXgtYXJtIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PMiAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtREhBVkVfUFJFQUQgXAoJCS1ETkFNRT0nImxpbnV4LWFybSInIC1ETElOVVhfQVJNIC1EU0hBUkVEX01FTSBcCgkJLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfbGludXgtYXJtLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgXAoJCS1EU0hBUkVEX01FTSAtRGxpbnV4ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLWMgLU8zIC1EdW5peCAtRGxpbnV4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYXN5bmMuYyAgLW8gbGliYXN5bmMubwoKaW96b25lX2xpbnV4LUFNRDY0Lm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMgCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgTGludXgtQU1ENjQiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ETkFNRT0nImxpbnV4LUFNRDY0IicgXAoJCS1EX19BTUQ2NF9fIC1EU0hBUkVEX01FTSAtRGxpbnV4IC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfbGludXgtQU1ENjQubwoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURTSEFSRURfTUVNIC1EbGludXggJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jICAtbyBsaWJhc3luYy5vIAoKaW96b25lX2xpbnV4LXMzOTAubzoJaW96b25lLmMgbGliYmlmLmMgbGliYXN5bmMuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIExpbnV4LXMzOTAiCglAZWNobyAiIgoJJChDQykgLWMgLU8zIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ESEFWRV9QUkVBRCBcCgkJLURTSEFSRURfTUVNIC1EbGludXggLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLUROQU1FPScibGludXgtczM5MCInIC1vIGlvem9uZV9saW51eC1zMzkwLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURTSEFSRURfTUVNIC1EbGludXggXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1jIC1PMyAtRHVuaXggLURsaW51eCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoKaW96b25lX2xpbnV4LXMzOTB4Lm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBMaW51eC1zMzkweCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURIQVZFX1BSRUFEIFwKCQktRFNIQVJFRF9NRU0gLURsaW51eCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktRE5BTUU9JyJsaW51eC1zMzkweCInIC1vIGlvem9uZV9saW51eC1zMzkweC5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EU0hBUkVEX01FTSAtRGxpbnV4IFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtYyAtTzMgLUR1bml4IC1EbGludXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCgppb3pvbmVfQUlYLm86CWlvem9uZS5jIGxpYmJpZi5jIAoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIEFJWCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRF9fQUlYX18gLURfTk9fUFJPVE8gLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLUROQU1FPSciQUlYIicgLURTSEFSRURfTUVNICAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX0FJWC5vCgkkKENDKSAtYyAtTyAtRF9fQUlYX18gLURfTk9fUFJPVE8gLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX0FJWC1MRi5vOglpb3pvbmUuYyBsaWJiaWYuYyAKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBBSVggd2l0aCBMYXJnZSBmaWxlcyIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRF9fQUlYX18gLURfTk9fUFJPVE8gLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLURTSEFSRURfTUVNICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfTEFSR0VfRklMRVMgXAoJCS1ETkFNRT0nIkFJWC1MRiInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfQUlYLUxGLm8KCSQoQ0MpIC1jIC1PIC1EX19BSVhfXyAtRF9OT19QUk9UTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgIFwKCQktRFNIQVJFRF9NRU0gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0xBUkdFX0ZJTEVTIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9zb2xhcmlzLm86CWlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzIgoJQGVjaG8gIiIKCSQoQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCS1ETkFNRT0nIlNvbGFyaXMiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMubwoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoJJChDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfc29sYXJpczdnY2MubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNvbGFyaXM3Z2NjIgoJQGVjaG8gIiIKCSQoR0NDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQktRE5BTUU9JyJTb2xhcmlzN2djYyInICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jNy5vCgkkKEdDQykgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX19MUDY0X18gXAoJCS1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZjcubwoJJChHQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCS1ETkFNRT0nIlNvbGFyaXM3Z2NjIicgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzN2djYy5vCgppb3pvbmVfc29sYXJpczEwLm86ICBpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNvbGFyaXMxMCIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkgICAgICAgICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYxMC5vCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMCInICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jMTAubwoJJChDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURzdHVkaW8xMSBcCgkgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMCInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc29sYXJpczEwLm8KCmlvem9uZV9zb2xhcmlzMTBjYy5vOiAgaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzMTBjYyIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkgICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Ec29sYXJpcyBcCgkgICAgICAgICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYxMGNjLm8KCSQoQ0MpIC1PIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRF9fTFA2NF9fIFwKCSAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCSAgICAgICAgLUROQU1FPSciU29sYXJpczEwIicgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMxMGNjLm8KCSQoQ0MpIC1jIC1PIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1Ec3R1ZGlvMTEgXAoJICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJICAgICAgICAtRE5BTUU9JyJTb2xhcmlzMTAiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMxMGNjLm8KCmlvem9uZV9zb2xhcmlzMTBnY2MubzogIGlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpczEwZ2NjIgoJQGVjaG8gIiIKCSQoR0NDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCiAgICAgICAgICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAogICAgICAgICAgICAgICAgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZjEwLm8KCSQoR0NDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCiAgICAgICAgICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAogICAgICAgICAgICAgICAgLUROQU1FPSciU29sYXJpczEwZ2NjIicgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMxMC5vCgkkKEdDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMGdjYyInICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc29sYXJpczEwZ2NjLm8KCmlvem9uZV9zb2xhcmlzMTBnY2MtNjQubzogIGlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU29sYXJpczEwZ2NjLTY0IgoJQGVjaG8gIiIKCSQoR0NDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCiAgICAgICAgICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAogICAgICAgICAgICAgICAgJChDRkxBR1MpICQoUzEwR0NDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZjEwLTY0Lm8KCSQoR0NDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCiAgICAgICAgICAgICAgICAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAogICAgICAgICAgICAgICAgLUROQU1FPSciU29sYXJpczEwZ2NjLTY0IicgJChDRkxBR1MpICQoUzEwR0NDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMxMC02NC5vCgkkKEdDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAogICAgICAgICAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKICAgICAgICAgICAgICAgIC1ETkFNRT0nIlNvbGFyaXMxMGdjYy02NCInICQoQ0ZMQUdTKSAkKFMxMEdDQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc29sYXJpczEwZ2NjLTY0Lm8KCmlvem9uZV9zb2xhcmlzMTBjYy02NC5vOiAgaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzMTBjYy02NCIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQkkKENGTEFHUykgJChTMTBDQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYxMC02NC5vCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfX0xQNjRfXyBcCgkJLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURzb2xhcmlzIFwKCQktRE5BTUU9JyJTb2xhcmlzMTBjYy02NCInICQoQ0ZMQUdTKSAkKFMxMENDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMxMC02NC5vCgkkKENDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRHN0dWRpbzExIFwKCQktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRHNvbGFyaXMgXAoJCS1ETkFNRT0nIlNvbGFyaXMxMGNjLTY0IicgJChDRkxBR1MpICQoUzEwQ0NGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMxMGNjLTY0Lm8KCgojCiMJCS1EU0hBUkVEX01FTSAtRHNvbGFyaXMgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCiMJCS1EU0hBUkVEX01FTSAtRHNvbGFyaXMgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXMubwojCgppb3pvbmVfc29sYXJpcy0yLjYubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzLTIuNiIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJTb2xhcmlzLTIuNiInIC1Ec29sYXJpcyAgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9zb2xhcmlzLTIuNi5vCgkkKENDKSAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIFwKCQktRHNvbGFyaXMgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfc29sYXJpczgtNjQubzogaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNvbGFyaXM4LTY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfX0xQNjRfXyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCBcCgkJLUROQU1FPSciU29sYXJpczgtNjQiJyAtRHNvbGFyaXMgLURIQVZFX1BSRUFEIFwKCQkkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXM4LTY0Lm8KCSQoQ0MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1Ec29sYXJpcyAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoJJChDQykgLWZhc3QgLXh0YXJnZXQ9Z2VuZXJpYzY0IC12IC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfX0xQNjRfXyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCBcCgkJLURzb2xhcmlzIC1ESEFWRV9QUkVBRCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9zb2xhcmlzOC02NC1WWEZTLm86IGlvem9uZS5jIGxpYmFzeW5jLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTb2xhcmlzOC02NC1WWEZTIgoJQGVjaG8gIiIKCSQoQ0MpIC1mYXN0IC14dGFyZ2V0PWdlbmVyaWM2NCAtdiAtYyAtSS9vcHQvVlJUU3Z4ZnMvaW5jbHVkZS8gLUR1bml4IFwKCQktRFZYRlMgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfX0xQNjRfXyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCBcCgkJLUROQU1FPSciU29sYXJpczgtNjQiJyAtRHNvbGFyaXMgLURIQVZFX1BSRUFEIFwKCQkkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NvbGFyaXM4LTY0LVZYRlMubwoJJChDQykgLWZhc3QgLXh0YXJnZXQ9Z2VuZXJpYzY0IC12IC1jICAtSS9vcHQvVlJUU3Z4ZnMvaW5jbHVkZS8gLUR1bml4IFwKCQktRFZYRlMgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURfX0xQNjRfXyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCBcCgkJLURzb2xhcmlzIC1ESEFWRV9QUkVBRCAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgkkKENDKSAtZmFzdCAteHRhcmdldD1nZW5lcmljNjQgLXYgLWMgLUkvb3B0L1ZSVFN2eGZzL2luY2x1ZGUvIC1EdW5peCBcCgkJLURWWEZTIC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EX19MUDY0X18gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgXAoJCS1Ec29sYXJpcyAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfd2luZG93cy5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jIGZpbGVvcC5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgV2luZG93cyAoTm8gYXN5bmMgSS9PKSIKCUBlY2hvICIiCgkkKEdDQykgLWMgLU8gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fTUFEVklTRSAgXAoJCS1EV2luZG93cyAkKENGTEFHUykgLURET05UX0hBVkVfT19ESVJFQ1QgaW96b25lLmMgXAoJCS1vIGlvem9uZV93aW5kb3dzLm8KCSQoR0NDKSAtYyAtTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19NQURWSVNFIFwKCQktRFdpbmRvd3MgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfdXdpbi5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFVXSU4gKE5vIHRocmVhZHMsIE5vIGFzeW5jIEkvTykiCglAZWNobyAiIgoJJChHQ0MpIC1jIC1PIC1EVVdJTiAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTICAtRE5PX01BRFZJU0UgXAoJCS1ETkFNRT0nIlVXSU4iJyAtRFNIQVJFRF9NRU0gLURXaW5kb3dzICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfdXdpbi5vCgkkKEdDQykgLWMgLU8gLURVV0lOIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgIC1ETk9fTUFEVklTRSBcCgkJLURTSEFSRURfTUVNIC1EV2luZG93cyAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9JUklYNjQubzoJaW96b25lLmMgbGliYXN5bmMuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIElSSVg2NCIKCUBlY2hvICIiCgkkKENDKSAtMzIgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURBU1lOQ19JTyBcCgkJLUROQU1FPSciSVJJWDY0IicgLURJUklYNjQgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfSVJJWDY0Lm8KCSQoQ0MpIC0zMiAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtREFTWU5DX0lPIFwKCQktRElSSVg2NCAtRFNIQVJFRF9NRU0gJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmN3Lm8KCSQoQ0MpIC0zMiAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtREFTWU5DX0lPIFwKCQktRElSSVg2NCAtRFNIQVJFRF9NRU0gJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfSVJJWC5vOglpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgSVJJWCIKCUBlY2hvICIiCgkkKENDKSAgLU8gLTMyIC1jICAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLUROQU1FPSciSVJJWCInIC1ESVJJWCAtRFNIQVJFRF9NRU0gJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9JUklYLm8KCSQoQ0MpICAtTyAtMzIgLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRElSSVggLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCSQoQ0MpICAtTyAtMzIgLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktRElSSVggLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX0NyYXlYMS5vOiBpb3pvbmUuYyBsaWJhc3luYy5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgQ3JheVgxIgoJQGVjaG8gIiIKCSQoQ0MpICAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRE5BTUU9JyJDcmF5WDEiJyAtRElSSVg2NCAtRFNIQVJFRF9NRU0gLURfX0NyYXlYMV9fIFwKCQkkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX0NyYXlYMS5vCgkkKENDKSAgLU8gLWMgIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1EX0xBUkdFRklMRTY0X1NPVVJDRSBcCgkJLURJUklYNjQgLURTSEFSRURfTUVNIC1EX19DcmF5WDFfXyBcCgkJJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmN3Lm8KCSQoQ0MpICAtTyAtYyAgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFIFwKCQktRElSSVg2NCAtRFNIQVJFRF9NRU0gLURfX0NyYXlYMV9fICQoQ0ZMQUdTKSBsaWJiaWYuYyBcCgkJLW8gbGliYmlmLm8KCmlvem9uZV9zcHB1eC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZGluZyBpb3pvbmUgZm9yIFNQUC1VWCB1c2luZyBDb252ZXggY29tcGlsZXIiCglAZWNobyAiIgoJJChOQUNDKSAtYyAgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1EX19jb252ZXhfc3BwIFwKCQktRE5BTUU9JyJzcHB1eCInIC1XbCwrcGFyYWxsZWwgLURIQVZFX0FOU0lDX0MgLURIQVZFX1BSRUFEIFwKCQktREhBVkVfUFJFQURWICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfc3BwdXgubwoJJChOQUNDKSAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURfX2NvbnZleF9zcHAgXAoJCS1XbCwrcGFyYWxsZWwgLURIQVZFX0FOU0lDX0MgLURIQVZFX1BSRUFEIC1ESEFWRV9QUkVBRFYgXAoJCSQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoKaW96b25lX3NwcHV4LTEwLjEubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIGZvciBTUFAtVVggdXNpbmcgSFAgYW5zaWMgY29tcGlsZXIiCglAZWNobyAiIgoJJChOQUNDKSAtYyAtTyAtRHVuaXggLURfSFBVWF9TT1VSQ0UgLURfX2NvbnZleF9zcHAgXAoJCS1ESEFWRV9BTlNJQ19DIC1ESEFWRV9QUkVBRCAtREhBVkVfUFJFQURWICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJIC1ETkFNRT0nInNwcHV4LTEwLjEiJyAtV2wsK3BhcmFsbGVsIC1vIGlvem9uZV9zcHB1eC0xMC4xLm8KCSQoTkFDQykgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1EX19jb252ZXhfc3BwIFwKCQktREhBVkVfQU5TSUNfQyAtREhBVkVfUFJFQUQgLURIQVZFX1BSRUFEViBcCgkJJChDRkxBR1MpIGxpYmJpZi5jIC1XbCwrcGFyYWxsZWwgLW8gbGliYmlmLm8KCmlvem9uZV9zcHB1eF9uby0xMC4xLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgU1BQLVVYIG5vIEFOU0kgYyBjb21waWxlciIKCUBlY2hvICIiCgkkKENDUykgLWMgLU8gLUR1bml4IC1EX0hQVVhfU09VUkNFIC1EX19jb252ZXhfc3BwIFwKCQktRE5BTUU9JyJzcHB1eF9ub19hbnNpXzEwLjEiJyAtV2wsK3BhcmFsbGVsIC1ESEFWRV9QUkVBRCBcCgkJLURIQVZFX1BSRUFEViAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX3NwcHV4X25vLTEwLjEubwoJJChDQ1MpIC1jIC1PIC1EdW5peCAtRF9IUFVYX1NPVVJDRSAtRF9fY29udmV4X3NwcCBcCgkJLVdsLCtwYXJhbGxlbCAtREhBVkVfUFJFQUQgLURIQVZFX1BSRUFEViAkKENGTEFHUykgXAoJCWxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfY29udmV4Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBmb3IgQ29udmV4ICdDJyBzZXJpZXMiCglAZWNobyAiIgoJCSQoQ0MpIC1jIC1PIC1EdW5peCAtRE5PX1RIUkVBRFMgLURic2Q0XzIgJChDRkxBR1MpIGlvem9uZS5jIFwKCQkJLUROQU1FPSciQ29udmV4IicgLW8gaW96b25lX2NvbnZleC5vIAoJCSQoQ0MpIC1jIC1PIC1EdW5peCAtRE5PX1RIUkVBRFMgLURic2Q0XzIgXAoJCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8gCgppb3pvbmVfYnNkaS5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIEJTRC9PUyIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgXAoJCS1ETkFNRT0nImJzZGkiJyAkKENGTEFHUykgaW96b25lLmMgLW8gaW96b25lX2JzZGkubwoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9mcmVlYnNkLm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBGcmVlQlNEIgoJQGVjaG8gIiIKCSQoQ0MpIC1jICR7Q0ZMQUdTfSAgLURGcmVlQlNEIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIFwKCQktREhBVkVfUFJFQUQgLUROQU1FPSciZnJlZWJzZCInIC1EU0hBUkVEX01FTSBcCgkJJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9mcmVlYnNkLm8KCSQoQ0MpIC1jICR7Q0ZMQUdTfSAtREZyZWVCU0QgLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gXAoJCS1EU0hBUkVEX01FTSAtREhBVkVfUFJFQUQgJChDRkxBR1MpIGxpYmJpZi5jIFwKCQktbyBsaWJiaWYubwoJJChDQykgLWMgJHtDRkxBR1N9IC1ERnJlZUJTRCAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyBcCgkJLURTSEFSRURfTUVNIC1ESEFWRV9QUkVBRCAkKENGTEFHUykgbGliYXN5bmMuYyBcCgkJLW8gbGliYXN5bmMubwoKaW96b25lX2RyYWdvbmZseS5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIERyYWdvbkZseSIKCUBlY2hvICIiCgkkKENDKSAtYyAke0NGTEFHU30gIC1EX19EcmFnb25GbHlfXyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJkcmFnb25mbHkiJyAtRFNIQVJFRF9NRU0gLURIQVZFX1BSRUFEIC1ESEFWRV9QUkVBRFYgXAoJCSQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfZHJhZ29uZmx5Lm8KCSQoQ0MpIC1jICR7Q0ZMQUdTfSAtRF9fRHJhZ29uRmx5X18gLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLURTSEFSRURfTUVNIC1ESEFWRV9QUkVBRCAtREhBVkVfUFJFQURWICQoQ0ZMQUdTKSBsaWJiaWYuYyBcCgkJLW8gbGliYmlmLm8KCmlvem9uZV9tYWNvc3gubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBNYWNPU1giCglAZWNobyAiIgoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF8yIC1EbWFjb3N4IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPScibWFjb3N4IicgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfbWFjb3N4Lm8KCSQoQ0MpIC1jIC1PIC1EdW5peCAtRGJzZDRfMiAtRG1hY29zeCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1EU0hBUkVEX01FTSAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9vcGVuYnNkLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgT3BlbkJTRCIKCUBlY2hvICIiCgkkKENDKSAtYyAtTyAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRE5BTUU9JyJvcGVuYnNkIicgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfb3BlbmJzZC5vCgkkKENDKSAtYyAtTyAtRHVuaXggLURic2Q0XzQgLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIFwKCQktRFNIQVJFRF9NRU0gJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgppb3pvbmVfb3BlbmJzZC10aHJlYWRzLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgT3BlbkJTRCB3aXRoIHRocmVhZHMiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLXB0aHJlYWQgLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIFwKCQktRE5BTUU9JyJvcGVuYnNkLXRocmVhZHMiJyAkKENGTEFHUykgaW96b25lLmMgXAoJCS1vIGlvem9uZV9vcGVuYnNkLXRocmVhZHMubwoJJChDQykgLWMgLU8gLXB0aHJlYWQgLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9PU0ZWMy5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIE9TRlYzIgoJQGVjaG8gIiIKCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjMgXAoJCS1ETkFNRT0nIk9TRlYzIicgLUROT19QUklOVF9MTEQgLURPU0ZfNjQgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfT1NGVjMubwoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWMyBcCgkJLUROT19QUklOVF9MTEQgIC1ET1NGXzY0ICQoQ0ZMQUdTKSBsaWJiaWYuYyAtbyBsaWJiaWYubwoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWMyBcCgkJLUROT19QUklOVF9MTEQgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmFzeW5jLmMgLW8gbGliYXN5bmMubwoKaW96b25lX09TRlY0Lm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkIGlvem9uZSBmb3IgT1NGVjQiCglAZWNobyAiIgoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWNCBcCgkJLUROQU1FPSciT1NGVjQiJyAtRE5PX1BSSU5UX0xMRCAtRE9TRl82NCAkKENGTEFHUykgaW96b25lLmMgXAoJCS1vIGlvem9uZV9PU0ZWNC5vCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY0IFwKCQktRE5PX1BSSU5UX0xMRCAgLURPU0ZfNjQgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY0IFwKCQktRE5PX1BSSU5UX0xMRCAtRE9TRl82NCAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgppb3pvbmVfT1NGVjUubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGQgaW96b25lIGZvciBPU0ZWNSIKCUBlY2hvICIiCgkkKENDKSAtTyAtYyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLURBU1lOQ19JTyAtRE9TRlY1IFwKCQktRE5BTUU9JyJPU0ZWNSInIC1ETk9fUFJJTlRfTExEIC1ET1NGXzY0ICQoQ0ZMQUdTKSBpb3pvbmUuYyBcCgkJLW8gaW96b25lX09TRlY1Lm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjUgXAoJCS1ETk9fUFJJTlRfTExEICAtRE9TRl82NCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjUgXAoJCS1ETk9fUFJJTlRfTExEIC1ET1NGXzY0ICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCmlvem9uZV9UUlU2NC5vOglpb3pvbmUuYyBsaWJiaWYuYwoJQGVjaG8gIiIKCUBlY2hvICJCdWlsZCBpb3pvbmUgZm9yIFRSVTY0IgoJQGVjaG8gIiIKCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjUgLURUUlU2NCAtREhBVkVfUFJFQUQgXAoJCS1ETkFNRT0nIlRSVTY0IicgLUROT19QUklOVF9MTEQgLURPU0ZfNjQgLXB0aHJlYWQgJChDRkxBR1MpIGlvem9uZS5jIFwKCQktbyBpb3pvbmVfVFJVNjQubwoJJChDQykgLU8gLWMgLUR1bml4IC1ESEFWRV9BTlNJQ19DIC1EQVNZTkNfSU8gLURPU0ZWNSAtREhBVkVfUFJFQUQgXAoJCS1ETk9fUFJJTlRfTExEICAtRE9TRl82NCAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCSQoQ0MpIC1PIC1jIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtREFTWU5DX0lPIC1ET1NGVjUgLURIQVZFX1BSRUFEIFwKCQktRE5PX1BSSU5UX0xMRCAtRE9TRl82NCAkKENGTEFHUykgbGliYXN5bmMuYyAtbyBsaWJhc3luYy5vCgppb3pvbmVfU0NPLm86CWlvem9uZS5jIGxpYmJpZi5jCglAZWNobyAiIgoJQGVjaG8gIkJ1aWxkaW5nIGlvem9uZSBTQ08gIgoJQGVjaG8gIiIKCSQoR0NDKSAtYyAtTyAtRFNDTyAtRHVuaXggLURIQVZFX0FOU0lDX0MgLUROT19USFJFQURTIC1ETk9fTUFEVklTRSBcCgkJLUROQU1FPSciU0NPIicgJChDRkxBR1MpIGlvem9uZS5jIC1vIGlvem9uZV9TQ08ubwoJJChHQ0MpIC1jIC1PIC1EU0NPIC1EdW5peCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgLUROT19NQURWSVNFIFwKCQkkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KCmlvem9uZV9TQ09fVW5peHdhcmVfZ2NjLm86CWlvem9uZS5jIGxpYmJpZi5jIGxpYmFzeW5jLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIFNDT19Vbml4d2FyZV9nY2MgIgoJQGVjaG8gIiIKCSQoR0NDKSAtYyAtTyAtRFNDT19Vbml4d2FyZV9nY2MgLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGlvem9uZS5jICBcCgkJLUROQU1FPSciU0NPX1VuaXh3YXJlX2djYyInIC1vIGlvem9uZV9TQ09fVW5peHdhcmVfZ2NjLm8KCSQoR0NDKSAtYyAtTyAtRFNDT19Vbml4d2FyZV9nY2MgLUR1bml4IC1ESEFWRV9BTlNJQ19DICBcCgkJLURBU1lOQ19JTyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgJChDRkxBR1MpIGxpYmJpZi5jIC1vIGxpYmJpZi5vCgkkKEdDQykgLWMgLU8gLURTQ09fVW5peHdhcmVfZ2NjIC1EdW5peCAtREhBVkVfQU5TSUNfQyAgXAoJCS1EQVNZTkNfSU8gLURfTEFSR0VGSUxFNjRfU09VUkNFICQoQ0ZMQUdTKSBsaWJhc3luYy5jIC1vIGxpYmFzeW5jLm8KCmlvem9uZV9uZXRic2QubzoJaW96b25lLmMgbGliYmlmLmMKCUBlY2hvICIiCglAZWNobyAiQnVpbGRpbmcgaW96b25lIE5ldEJTRCAiCglAZWNobyAiIgoJJChDQykgLWMgLU8gLUR1bml4IC1EYnNkNF80IC1ESEFWRV9BTlNJQ19DIC1ETk9fVEhSRUFEUyBcCgkJLUROQU1FPScibmV0YnNkIicgLURTSEFSRURfTUVNICQoQ0ZMQUdTKSBpb3pvbmUuYyAtbyBpb3pvbmVfbmV0YnNkLm8KCSQoQ0MpIC1jIC1PIC1EdW5peCAtRGJzZDRfNCAtREhBVkVfQU5TSUNfQyAtRE5PX1RIUkVBRFMgXAoJCS1EU0hBUkVEX01FTSAkKENGTEFHUykgbGliYmlmLmMgLW8gbGliYmlmLm8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlvem9uZTNfMzQ3L3NyYy9jdXJyZW50L2lvem9uZS5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNDQ0ADAzMjYzMjYAMDAxMTYxMAAwMDAwMjIxNDAyMgAxMTM1NTY0MDQyMQAwMTU3NDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzaGVuaGFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJT3JpZ2luYWwgQXV0aG9yOiAJCQkJCQkqLwovKgkJV2lsbGlhbSBOb3Jjb3R0ICh3bm9yY290dEB1cy5vcmFjbGUuY29tKQkJKi8KLyogICAgICAgICAgICAgIDQgRHVubGFwIERyaXZlCQkJCQkJKi8KLyogICAgICAgICAgICAgIE5hc2h1YSwgTkggMDMwNjAJCQkJCSovCi8qICAJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgICAgIEVuaGFuY2VtZW50cyBieToJCQkJCQkqLwovKgkgCURvbiBDYXBwcyAoY2FwcHNAaW96b25lLm9yZykJCQkJKi8KLyogCQk3NDE3IENyZW5zaGF3CQkJCQkJKi8KLyogCQlQbGFubywgVFggNzUwMjUJCQkJCQkqLwovKiAgCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk4LCAyMDAwLCAyMDAxICBXaWxsaWFtIEQuIE5vcmNvdHQJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKiBJb3pvbmUgaXMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIHdvcmsgZG9uZSBieSBXaWxsaWFtIE5vcnJjb3QuIEl0IGhhcwkqLwovKiBiZWVuIGVuaGFuY2VkIHNvIHRoYXQgaXQgcHJvdmlkZXMgYSBtb3JlIGNvbXBsZXRlIGZpbGVzeXN0ZW0gICAJKi8KLyogY2hhcmFjdGVyaXphdGlvbi4JCQkJCQkJKi8KLyogSXRzIHB1cnBvc2UgaXMgdG8gcHJvdmlkZSBhdXRvbWF0ZWQgZmlsZXN5c3RlbSBjaGFyYWN0ZXJpemF0aW9uLgkqLwovKiBFbmhhbmNlbWVudHMgaGF2ZSBiZWVuIG1hZGUgYnk6CQkJCQkqLwovKgkJCQkJCQkJCSovCi8qIERvbiBDYXBwcwkgICAJICAgICAgICAgY2FwcHNAaW96b25lLm9yZwkJCSovIAovKgkJCQkJCQkJCSovCi8qIElvem9uZSBjYW4gcGVyZm9ybSBzaW5nbGUgc3RyZWFtIGFuZCBtdWx0aSBzdHJlYW0gSS9PCQkqLwovKiBhbHNvIGl0IG5vdyBwZXJmb3JtcyByZWFkLCB3cml0ZSwgcmUtcmVhZCwgcmUtd3JpdGUsIAkJKi8KLyogcmVhZCBiYWNrd2FyZHMsIHJlYWQvd3JpdGUgcmFuZG9tLCByZS1yZWFkIHJlY29yZCwgCQkJKi8KLyogcHJlYWQsIHJlLXByZWFkLCByZS1wd3JpdGUsIHByZWFkdiwgcmUtcHJlYWR2LCBwd3JpdGV2LAkJKi8KLyogc3RyaWRlIHJlYWQsIGFuZCByZS1wd3JpdGV2LG1tYXAsIFBPU0lYIGFzeW5jIEkvTywgTkZTICAgICAgICAgICAgICAgKi8KLyogY2x1c3RlciB0ZXN0aW5nIGFuZCBtdWNoIG1vcmUuCQkJCQkqLwovKgkJCQkJCQkJCSovCi8qIFRoZSBmcm9udGVuZCBub3cgdXNlcyBnZXRvcHQoKSBhbmQgdGhlIHVzZXIgY2FuIGNvbnRyb2wgbWFueSBtb3JlCSovCi8qIG9mIHRoZSBhY3Rpb25zLgkJCQkJCQkqLwovKgkJCQkJCQkJCSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEZvciB0aGUgYmVnaW5uZXIuLi4gCQkJCQkJICAgICAgICAqLwovKiAJCQkJCQkJCQkqLwovKiAxLiBtYWtlIGxpbnV4ICAobGludXgsIGhwdXgsIGNvbnZleCwgaHB1eF9ub19hbnNpKQkJCSovCi8qIDIuIHR5cGUgLi9pb3pvbmUgLVJhCQkJCQkJCSovCi8qIAkJCQkJCQkJCSovCi8qICBIaW50OiBUeXBlIG1ha2UgICAgKGl0IHdpbGwgZ2l2ZSB5b3UgYSBsaXN0IG9mIHZhbGlkIHRhcmdldHMpCSovCi8qIAkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyogVGhlIHZlcnNpb24gbnVtYmVyICovCiNkZWZpbmUgVEhJU1ZFUlNJT04gIiAgICAgICAgVmVyc2lvbiAkUmV2aXNpb246IDMuMzQ3ICQiCgojaWYgZGVmaW5lZChsaW51eCkKICAjZGVmaW5lIF9HTlVfU09VUkNFCiNlbmRpZgovKiBJbmNsdWRlIGZvciBDeWdudXMgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgZm9yIFdpbmRvd3MgKi8KI2lmIGRlZmluZWQgKFdpbmRvd3MpCiNpbmNsdWRlIDxXaW5kb3dzLmg+CmludCBlcnJubzsKI2Vsc2UKI2lmIGRlZmluZWQobGludXgpCiNpbmNsdWRlIDxlcnJuby5oPgojZWxzZQpleHRlcm4gIGludCBlcnJubzsgICAvKiBpbXBvcnRlZCBmb3IgZXJyb3JzICovCmV4dGVybiAgaW50IGhfZXJybm87IC8qIGltcG9ydGVkIGZvciBlcnJvcnMgKi8KI2VuZGlmCiNlbmRpZgoKCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpZiBkZWZpbmVkIChfX0xQNjRfXykgfHwgZGVmaW5lZChPU0ZfNjQpIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQoX0xQNjQpIHx8IGRlZmluZWQoX19zMzkweF9fKSB8fCBkZWZpbmVkKF9fQU1ENjRfXykKI2RlZmluZSBNT0RFICJcdENvbXBpbGVkIGZvciA2NCBiaXQgbW9kZS4iCiNkZWZpbmUgXzY0QklUX0FSQ0hfCiNlbHNlCiNkZWZpbmUgTU9ERSAiXHRDb21waWxlZCBmb3IgMzIgYml0IG1vZGUuIgojZW5kaWYKCiNpZm5kZWYgTk9fVEhSRUFEUwojaW5jbHVkZSA8cHRocmVhZC5oPgojZW5kaWYKCiNpZiBkZWZpbmVkKEhBVkVfQU5TSUNfQykgJiYgZGVmaW5lZChsaW51eCkKI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2VuZGlmCgojaWZkZWYgSEFWRV9QUk9UTwojaW5jbHVkZSAicHJvdG8uaCIKI2Vsc2UKaW50IGF0b2koKTsKaW50IGNsb3NlKCk7CmludCB1bmxpbmsoKTsKaW50IG1haW4oKTsKdm9pZCByZWNvcmRfY29tbWFuZF9saW5lKCk7CiNpZiAhZGVmaW5lZChsaW51eCkKaW50IHdhaXQoKTsKI2VuZGlmCmludCBmc3luYygpOwp2b2lkIHNyYW5kNDgoKTsKbG9uZyBscmFuZDQ4KCk7CnZvaWQgY3JlYXRlX2xpc3QoKTsKdm9pZCBQb2xsKCk7CnZvaWQgcHJpbnRfaGVhZGVyKCk7CnZvaWQgS2lsbCgpOwpsb25nIGxvbmcgbF9taW4oKTsKbG9uZyBsb25nIGxfbWF4KCk7CmxvbmcgbG9uZyBteXRocmVhZF9jcmVhdGUoKTsKaW50IGdlbl9uZXdfYnVmKCk7CnZvaWQgdG91Y2hfZGVkdXAoKTsKdm9pZCBpbml0X2J5X2FycmF5NjQodW5zaWduZWQgbG9uZyBsb25nICosIHVuc2lnbmVkIGxvbmcgbG9uZyApOwp1bnNpZ25lZCBsb25nIGxvbmcgZ2VucmFuZDY0X2ludDY0KHZvaWQpOwojZW5kaWYKCiNpbmNsdWRlIDxmY250bC5oPgoKY2hhciAqaGVscFtdID0gewoiICAgIFVzYWdlOiBpb3pvbmUgWy1zIGZpbGVzaXplX0tiXSBbLXIgcmVjb3JkX3NpemVfS2JdIFstZiBbcGF0aF1maWxlbmFtZV0gWy1oXSIsCiIgICAgICAgICAgICAgICAgICBbLWkgdGVzdF0gWy1FXSBbLXBdIFstYV0gWy1BXSBbLXpdIFstWl0gWy1tXSBbLU1dIFstdCBjaGlsZHJlbl0iLAoiICAgICAgICAgICAgICAgICAgWy1sIG1pbl9udW1iZXJfcHJvY3NdIFstdSBtYXhfbnVtYmVyX3Byb2NzXSBbLXZdIFstUl0gWy14XSBbLW9dIiwKIiAgICAgICAgICAgICAgICAgIFstZCBtaWNyb3NlY29uZHNdIFstRiBwYXRoMSBwYXRoMi4uLl0gWy1WIHBhdHRlcm5dIFstaiBzdHJpZGVdIiwKIiAgICAgICAgICAgICAgICAgIFstVF0gWy1DXSBbLUJdIFstRF0gWy1HXSBbLUldIFstSCBkZXB0aF0gWy1rIGRlcHRoXSBbLVUgbW91bnRfcG9pbnRdIiwKIiAgICAgICAgICAgICAgICAgIFstUyBjYWNoZV9zaXplXSBbLU9dIFstTCBjYWNoZWxpbmVfc2l6ZV0gWy1LXSBbLWcgbWF4ZmlsZXNpemVfS2JdIiwKIiAgICAgICAgICAgICAgICAgIFstbiBtaW5maWxlc2l6ZV9LYl0gWy1OXSBbLVFdIFstUCBzdGFydF9jcHVdIFstZV0gWy1jXSBbLWIgRXhjZWwueGxzXSIsCiIgICAgICAgICAgICAgICAgICBbLUogbWlsbGlzZWNvbmRzXSBbLVggd3JpdGVfdGVsZW1ldHJ5X2ZpbGVuYW1lXSBbLXddIFstV10iLAoiICAgICAgICAgICAgICAgICAgWy1ZIHJlYWRfdGVsZW1ldHJ5X2ZpbGVuYW1lXSBbLXkgbWlucmVjc2l6ZV9LYl0gWy1xIG1heHJlY3NpemVfS2JdIiwKIiAgICAgICAgICAgICAgICAgIFstK3VdIFstK20gY2x1c3Rlcl9maWxlbmFtZV0gWy0rZF0gWy0reCBtdWx0aXBsaWVyXSBbLStwICMgXSIsCiIgICAgICAgICAgICAgICAgICBbLStyXSBbLSt0XSBbLStYXSBbLStaXSBbLSt3IHBlcmNlbnQgZGVkdXBhYmxlXSBbLSt5IHBlcmNlbnRfaW50ZXJpb3JfZGVkdXBdIiwKIiAgICAgICAgICAgICAgICAgIFstK0MgcGVyY2VudF9kZWR1cF93aXRoaW5dIiwKIiAiLAoiICAgICAgICAgICAtYSAgQXV0byBtb2RlIiwKIiAgICAgICAgICAgLUEgIEF1dG8yIG1vZGUiLAoiICAgICAgICAgICAtYiBGaWxlbmFtZSAgQ3JlYXRlIEV4Y2VsIHdvcmtzaGVldCBmaWxlIiwKIiAgICAgICAgICAgLUIgIFVzZSBtbWFwKCkgZmlsZXMiLAoiICAgICAgICAgICAtYyAgSW5jbHVkZSBjbG9zZSBpbiB0aGUgdGltaW5nIGNhbGN1bGF0aW9ucyIsCiIgICAgICAgICAgIC1DICBTaG93IGJ5dGVzIHRyYW5zZmVycmVkIGJ5IGVhY2ggY2hpbGQgaW4gdGhyb3VnaHB1dCB0ZXN0aW5nIiwKIiAgICAgICAgICAgLWQgIyAgTWljcm9zZWNvbmQgZGVsYXkgb3V0IG9mIGJhcnJpZXIiLAoiICAgICAgICAgICAtRCAgVXNlIG1zeW5jKE1TX0FTWU5DKSBvbiBtbWFwIGZpbGVzIiwKIiAgICAgICAgICAgLWUgIEluY2x1ZGUgZmx1c2ggKGZzeW5jLGZmbHVzaCkgaW4gdGhlIHRpbWluZyBjYWxjdWxhdGlvbnMiLAoiICAgICAgICAgICAtRSAgUnVuIGV4dGVuc2lvbiB0ZXN0cyIsCiIgICAgICAgICAgIC1mIGZpbGVuYW1lICB0byB1c2UiLAoiICAgICAgICAgICAtRiBmaWxlbmFtZXMgIGZvciBlYWNoIHByb2Nlc3MvdGhyZWFkIGluIHRocm91Z2hwdXQgdGVzdCIsCiIgICAgICAgICAgIC1nICMgIFNldCBtYXhpbXVtIGZpbGUgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlIChvciAjbSBvciAjZykiLAoiICAgICAgICAgICAtRyAgVXNlIG1zeW5jKE1TX1NZTkMpIG9uIG1tYXAgZmlsZXMiLAoiICAgICAgICAgICAtaCAgaGVscCIsCiIgICAgICAgICAgIC1IICMgIFVzZSBQT1NJWCBhc3luYyBJL08gd2l0aCAjIGFzeW5jIG9wZXJhdGlvbnMiLAoiICAgICAgICAgICAtaSAjICBUZXN0IHRvIHJ1biAoMD13cml0ZS9yZXdyaXRlLCAxPXJlYWQvcmUtcmVhZCwgMj1yYW5kb20tcmVhZC93cml0ZSIsCiIgICAgICAgICAgICAgICAgIDM9UmVhZC1iYWNrd2FyZHMsIDQ9UmUtd3JpdGUtcmVjb3JkLCA1PXN0cmlkZS1yZWFkLCA2PWZ3cml0ZS9yZS1md3JpdGUiLAoiICAgICAgICAgICAgICAgICA3PWZyZWFkL1JlLWZyZWFkLCA4PXJhbmRvbV9taXgsIDk9cHdyaXRlL1JlLXB3cml0ZSwgMTA9cHJlYWQvUmUtcHJlYWQiLAoiICAgICAgICAgICAgICAgICAxMT1wd3JpdGV2L1JlLXB3cml0ZXYsIDEyPXByZWFkdi9SZS1wcmVhZHYpIiwKIiAgICAgICAgICAgLUkgIFVzZSBWeEZTIFZYX0RJUkVDVCwgT19ESVJFQ1Qsb3IgT19ESVJFQ1RJTyBmb3IgYWxsIGZpbGUgb3BlcmF0aW9ucyIsCiIgICAgICAgICAgIC1qICMgIFNldCBzdHJpZGUgb2YgZmlsZSBhY2Nlc3NlcyB0byAoIyAqIHJlY29yZCBzaXplKSIsCiIgICAgICAgICAgIC1KICMgIG1pbGxpc2Vjb25kcyBvZiBjb21wdXRlIGN5Y2xlIGJlZm9yZSBlYWNoIEkvTyBvcGVyYXRpb24iLAoiICAgICAgICAgICAtayAjICBVc2UgUE9TSVggYXN5bmMgSS9PIChubyBiY29weSkgd2l0aCAjIGFzeW5jIG9wZXJhdGlvbnMiLAoiICAgICAgICAgICAtSyAgQ3JlYXRlIGppdHRlciBpbiB0aGUgYWNjZXNzIHBhdHRlcm4gZm9yIHJlYWRlcnMiLAoiICAgICAgICAgICAtbCAjICBMb3dlciBsaW1pdCBvbiBudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIHJ1biIsCiIgICAgICAgICAgIC1MICMgIFNldCBwcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplIHRvIHZhbHVlIChpbiBieXRlcykiLAoiICAgICAgICAgICAtbSAgVXNlIG11bHRpcGxlIGJ1ZmZlcnMiLAoiICAgICAgICAgICAtTSAgUmVwb3J0IHVuYW1lIC1hIG91dHB1dCIsCiIgICAgICAgICAgIC1uICMgIFNldCBtaW5pbXVtIGZpbGUgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlIChvciAjbSBvciAjZykiLAoiICAgICAgICAgICAtTiAgUmVwb3J0IHJlc3VsdHMgaW4gbWljcm9zZWNvbmRzIHBlciBvcGVyYXRpb24iLAoiICAgICAgICAgICAtbyAgV3JpdGVzIGFyZSBzeW5jaCAoT19TWU5DKSIsCiIgICAgICAgICAgIC1PICBHaXZlIHJlc3VsdHMgaW4gb3BzL3NlYy4iLAoiICAgICAgICAgICAtcCAgUHVyZ2Ugb24iLAoiICAgICAgICAgICAtUCAjICBCaW5kIHByb2Nlc3Nlcy90aHJlYWRzIHRvIHByb2Nlc3NvcnMsIHN0YXJ0aW5nIHdpdGggdGhpcyBjcHUiLAoiICAgICAgICAgICAtcSAjICBTZXQgbWF4aW11bSByZWNvcmQgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlIChvciAjbSBvciAjZykiLAoiICAgICAgICAgICAtUSAgQ3JlYXRlIG9mZnNldC9sYXRlbmN5IGZpbGVzIiwKIiAgICAgICAgICAgLXIgIyAgcmVjb3JkIHNpemUgaW4gS2IiLAoiICAgICAgICAgICAgICBvciAtciAjayAuLiBzaXplIGluIEtiIiwKIiAgICAgICAgICAgICAgb3IgLXIgI20gLi4gc2l6ZSBpbiBNYiIsCiIgICAgICAgICAgICAgIG9yIC1yICNnIC4uIHNpemUgaW4gR2IiLAoiICAgICAgICAgICAtUiAgR2VuZXJhdGUgRXhjZWwgcmVwb3J0IiwKIiAgICAgICAgICAgLXMgIyAgZmlsZSBzaXplIGluIEtiIiwKIiAgICAgICAgICAgICAgb3IgLXMgI2sgLi4gc2l6ZSBpbiBLYiIsCiIgICAgICAgICAgICAgIG9yIC1zICNtIC4uIHNpemUgaW4gTWIiLAoiICAgICAgICAgICAgICBvciAtcyAjZyAuLiBzaXplIGluIEdiIiwKIiAgICAgICAgICAgLVMgIyAgU2V0IHByb2Nlc3NvciBjYWNoZSBzaXplIHRvIHZhbHVlIChpbiBLYnl0ZXMpIiwKIiAgICAgICAgICAgLXQgIyAgTnVtYmVyIG9mIHRocmVhZHMgb3IgcHJvY2Vzc2VzIHRvIHVzZSBpbiB0aHJvdWdocHV0IHRlc3QiLAoiICAgICAgICAgICAtVCAgVXNlIFBPU0lYIHB0aHJlYWRzIGZvciB0aHJvdWdocHV0IHRlc3RzIiwKIiAgICAgICAgICAgLXUgIyAgVXBwZXIgbGltaXQgb24gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBydW4iLAoiICAgICAgICAgICAtVSAgTW91bnQgcG9pbnQgdG8gcmVtb3VudCBiZXR3ZWVuIHRlc3RzIiwKIiAgICAgICAgICAgLXYgIHZlcnNpb24gaW5mb3JtYXRpb24iLAoiICAgICAgICAgICAtViAjICBWZXJpZnkgZGF0YSBwYXR0ZXJuIHdyaXRlL3JlYWQiLAoiICAgICAgICAgICAtdyAgRG8gbm90IHVubGluayB0ZW1wb3JhcnkgZmlsZSIsCiIgICAgICAgICAgIC1XICBMb2NrIGZpbGUgd2hlbiByZWFkaW5nIG9yIHdyaXRpbmciLAoiICAgICAgICAgICAteCAgVHVybiBvZmYgc3RvbmUtd2FsbGluZyIsCiIgICAgICAgICAgIC1YIGZpbGVuYW1lICBXcml0ZSB0ZWxlbWV0cnkgZmlsZS4gQ29udGFpbnMgbGluZXMgd2l0aCAob2Zmc2V0IHJlY2xlbiBjb21wdXRlX3RpbWUpIGluIGFzY2lpIiwKIiAgICAgICAgICAgLXkgIyAgU2V0IG1pbmltdW0gcmVjb3JkIHNpemUgKGluIEtieXRlcykgZm9yIGF1dG8gbW9kZSAob3IgI20gb3IgI2cpIiwKIiAgICAgICAgICAgLVkgZmlsZW5hbWUgIFJlYWQgIHRlbGVtZXRyeSBmaWxlLiBDb250YWlucyBsaW5lcyB3aXRoIChvZmZzZXQgcmVjbGVuIGNvbXB1dGVfdGltZSkgaW4gYXNjaWkiLAoiICAgICAgICAgICAteiAgVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIC1hIHRvIHRlc3QgYWxsIHBvc3NpYmxlIHJlY29yZCBzaXplcyIsCiIgICAgICAgICAgIC1aICBFbmFibGUgbWl4aW5nIG9mIG1tYXAgSS9PIGFuZCBmaWxlIEkvTyIsCiIgICAgICAgICAgIC0rRSBVc2UgZXhpc3Rpbmcgbm9uLUlvem9uZSBmaWxlIGZvciByZWFkLW9ubHkgdGVzdGluZyIsCiIgICAgICAgICAgIC0rSyBTb255IHNwZWNpYWwuIE1hbnVhbCBjb250cm9sIG9mIHRlc3QgOC4iLAoiICAgICAgICAgICAtK20gIENsdXN0ZXJfZmlsZW5hbWUgICBFbmFibGUgQ2x1c3RlciB0ZXN0aW5nIiwKIiAgICAgICAgICAgLStkICBGaWxlIEkvTyBkaWFnbm9zdGljIG1vZGUuIChUbyB0cm91Ymxlc2hvb3QgYSBicm9rZW4gZmlsZSBJL08gc3Vic3lzdGVtKSIsCiIgICAgICAgICAgIC0rdSAgRW5hYmxlIENQVSB1dGlsaXphdGlvbiBvdXRwdXQgKEV4cGVyaW1lbnRhbCkiLAoiICAgICAgICAgICAtK3ggIyBNdWx0aXBsaWVyIHRvIHVzZSBmb3IgaW5jcmVtZW50aW5nIGZpbGUgYW5kIHJlY29yZCBzaXplcyIsCiIgICAgICAgICAgIC0rcCAjIFBlcmNlbnRhZ2Ugb2YgbWl4IHRvIGJlIHJlYWRzIiwKIiAgICAgICAgICAgLStyIEVuYWJsZSBPX1JTWU5DfE9fU1lOQyBmb3IgYWxsIHRlc3RpbmcuIiwKIiAgICAgICAgICAgLSt0IEVuYWJsZSBuZXR3b3JrIHBlcmZvcm1hbmNlIHRlc3QuIFJlcXVpcmVzIC0rbSAiLAoiICAgICAgICAgICAtK24gTm8gcmV0ZXN0cyBzZWxlY3RlZC4iLAoiICAgICAgICAgICAtK2sgVXNlIGNvbnN0YW50IGFnZ3JlZ2F0ZSBkYXRhIHNldCBzaXplLiIsCiIgICAgICAgICAgIC0rcSBEZWxheSBpbiBzZWNvbmRzIGJldHdlZW4gdGVzdHMuIiwKIiAgICAgICAgICAgLStsIEVuYWJsZSByZWNvcmQgbG9ja2luZyBtb2RlLiIsCiIgICAgICAgICAgIC0rTCBFbmFibGUgcmVjb3JkIGxvY2tpbmcgbW9kZSwgd2l0aCBzaGFyZWQgZmlsZS4iLAoiICAgICAgICAgICAtK0IgU2VxdWVudGlhbCBtaXhlZCB3b3JrbG9hZC4iLAojaWYgZGVmaW5lZChPX0RTWU5DKQoiICAgICAgICAgICAtK0QgRW5hYmxlIE9fRFNZTkMgbW9kZS4iLAojZW5kaWYKI2lmbmRlZiBOT19NQURWSVNFCiIgICAgICAgICAgIC0rQSAjICBFbmFibGUgbWFkdmlzZS4gMCA9IG5vcm1hbCwgMT1yYW5kb20sIDI9c2VxdWVudGlhbCIsCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMz1kb250bmVlZCwgND13aWxsbmVlZCIsCiNlbmRpZgoiICAgICAgICAgICAtK04gRG8gbm90IHRydW5jYXRlIGV4aXN0aW5nIGZpbGVzIG9uIHNlcXVlbnRpYWwgd3JpdGVzLiIsCiIgICAgICAgICAgIC0rUyAjIERlZHVwLWFibGUgZGF0YSBpcyBsaW1pdGVkIHRvIHNoYXJpbmcgd2l0aGluIGVhY2ggbnVtZXJpY2FsbHkiLAoiICAgICAgICAgICAgICAgICBpZGVudGlmaWVkIGZpbGUgc2V0IiwKIiAgICAgICAgICAgLStWIEVuYWJsZSBzaGFyZWQgZmlsZS4gTm8gbG9ja2luZy4iLAojaWYgZGVmaW5lZChXaW5kb3dzKQoiICAgICAgICAgICAtK1UgV2luZG93cyBVbmJ1ZmZlcmQgSS9PIEFQSSAoVmVyeSBFeHBlcmltZW50YWwpIiwKI2VuZGlmCiIgICAgICAgICAgIC0rWCBFbmFibGUgc2hvcnQgY2lyY3VpdCBtb2RlIGZvciBmaWxlc3lzdGVtIHRlc3RpbmcgT05MWSIsCiIgICAgICAgICAgICAgICBBTEwgUmVzdWx0cyBhcmUgTk9UIHZhbGlkIGluIHRoaXMgbW9kZS4iLAoiICAgICAgICAgICAtK1ogRW5hYmxlIG9sZCBkYXRhIHNldCBjb21wYXRpYmlsaXR5IG1vZGUuIFdBUk5JTkcuLiBQdWJsaXNoZWQiLAoiICAgICAgICAgICAgICAgaGFja3MgbWF5IGludmFsaWRhdGUgdGhlc2UgcmVzdWx0cyBhbmQgZ2VuZXJhdGUgYm9ndXMsIGhpZ2giLAoiICAgICAgICAgICAgICAgdmFsdWVzIGZvciByZXN1bHRzLiIsCiIgICAgICAgICAgIC0rdyAjIyBQZXJjZW50IG9mIGRlZHVwLWFibGUgZGF0YSBpbiBidWZmZXJzLiIsCiIgICAgICAgICAgIC0reSAjIyBQZXJjZW50IG9mIGRlZHVwLWFibGUgd2l0aGluICYgYWNyb3NzIGZpbGVzIGluIGJ1ZmZlcnMuIiwKIiAgICAgICAgICAgLStDICMjIFBlcmNlbnQgb2YgZGVkdXAtYWJsZSB3aXRoaW4gJiBub3QgYWNyb3NzIGZpbGVzIGluIGJ1ZmZlcnMuIiwKIiAgICAgICAgICAgLStIIEhvc3RuYW1lICAgIEhvc3RuYW1lIG9mIHRoZSBQSVQgc2VydmVyLiIsCiIgICAgICAgICAgIC0rUCBTZXJ2aWNlICAgICBTZXJ2aWNlICBvZiB0aGUgUElUIHNlcnZlci4iLAoiIiB9OwoKY2hhciAqaGVhZDFbXSA9IHsKICAiICAgICAgICdJb3pvbmUnIEZpbGVzeXN0ZW0gQmVuY2htYXJrIFByb2dyYW0iLAogICIgIiwKVEhJU1ZFUlNJT04sCiAgTU9ERSwKICAiICIsCiAgIiAgICAgICBPcmlnaW5hbCBBdXRob3I6IFdpbGxpYW0gTm9yY290dCAod25vcmNvdHRAdXMub3JhY2xlLmNvbSkiLAogICIgICAgICAgICAgICAgICA0IER1bmxhcCBEcml2ZSIsCiAgIiAgICAgICAgICAgICAgIE5hc2h1YSwgTkggMDMwNjAiLAogICIgIiwKICAiICAgICAgIEVuaGFuY2VtZW50czogRG9uIENhcHBzIChjYXBwc0Bpb3pvbmUub3JnKSIsCiAgIiAgICAgICAgCSAgNzQxNyBDcmVuc2hhdyIsCiAgIiAgICAgICAgCSAgUGxhbm8sIFRYIDc1MDI1IiwKICAiICIsCiAgIiAgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTQsIDE5OTgsIDE5OTksIDIwMDIgICBXaWxsaWFtIEQuIE5vcmNvdHQiLAogICIgIiwKICAiICBMaWNlbnNlIHRvIGZyZWVseSB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBoZXJlYnkgZ3JhbnRlZCAiLAogICIgIGJ5IHRoZSBhdXRob3IsIHN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSAiLAogICIgIHJlbWFpbnMgaW50YWN0LiAgVGhlIGF1dGhvciByZXRhaW5zIHRoZSBleGNsdXNpdmUgcmlnaHQgdG8gcHVibGlzaCAiLAogICIgIGRlcml2YXRpdmUgd29ya3MgYmFzZWQgb24gdGhpcyB3b3JrLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgIiwKICAiICByZXZpc2VkIHZlcnNpb25zIG9mIHRoaXMgd29yayIsCiAgIiAiLAogICIgIE90aGVyIGNvbnRyaWJ1dG9yczoiLAogICIgIiwKICAiICBEb24gQ2FwcHMgICAgICAgKE5ldHdvcmsgQXBwbGlhbmNlKQljYXBwc0Bpb3pvbmUub3JnIiwKICAiICIsCiAgIiJ9OwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKICAgIElOQ0xVREUgRklMRVMgKHN5c3RlbS1kZXBlbmRlbnQpCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlIDxzeXMvbW1hbi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojaW5jbHVkZSA8ZmNudGwuaD4KI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX09wZW5CU0RfXykgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQojaW5jbHVkZSA8bWFsbG9jLmg+CiNlbmRpZgojaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQgKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fYnNkaV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQojaWZuZGVmIE9fU1lOQwojZGVmaW5lIE9fU1lOQyBPX0ZTWU5DCiNlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfX0ZyZWVCU0RfXykKI2lmbmRlZiBPX1JTWU5DCiNkZWZpbmUgT19SU1lOQyBPX0ZTWU5DCiNlbmRpZgojZW5kaWYKCiNpZiAoKGRlZmluZWQoc29sYXJpcykgJiYgZGVmaW5lZChfX0xQNjRfXykpIHx8IGRlZmluZWQoX19zMzkweF9fKSkKLyogSWYgd2UgYXJlIGJ1aWxkaW5nIGZvciA2NC1iaXQgU29sYXJpcywgYWxsIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBwb2ludGVycwogKiBtdXN0IGJlIGRlY2xhcmVkIGJlZm9yZSB0aGV5IGFyZSB1c2VkOyBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgYXNzdW1lCiAqIHRoYXQgdGhleSByZXR1cm4gaW50cyBhbmQgdGhlIHRvcCAzMiBiaXRzIG9mIHRoZSBwb2ludGVyIHdpbGwgYmUgbG9zdCwKICogY2F1c2luZyBzZWdtZW50YXRpb24gZmF1bHRzLiAgVGhlIGZvbGxvd2luZyBpbmNsdWRlcyB0YWtlIGNhcmUgb2YgdGhpcy4KICogSXQgc2hvdWxkIGJlIHNhZmUgdG8gYWRkIHRoZXNlIGZvciBhbGwgb3RoZXIgT1NzIHRvbywgYnV0IHdlJ3JlIG9ubHkKICogZG9pbmcgaXQgZm9yIFNvbGFyaXMgbm93IGluIGNhc2UgYW5vdGhlciBPUyB0dXJucyBvdXQgdG8gYmUgYSBzcGVjaWFsIGNhc2UuCiAqLwojaW5jbHVkZSA8c3RyaW5ncy5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxhcnBhL2luZXQuaD4KCiNlbmRpZgojaWYgKCBkZWZpbmVkKHNvbGFyaXMpICYmIGRlZmluZWQoc3R1ZGlvMTEpICkKI2luY2x1ZGUgPHN0cmluZ3MuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojZW5kaWYKCiNpZiBkZWZpbmVkKE9TRlY1KSB8fCBkZWZpbmVkKGxpbnV4KQojaW5jbHVkZSA8c3RyaW5nLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQobGludXgpCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxhcnBhL2luZXQuaD4KI2VuZGlmCgojaWZuZGVmIE1BUF9GQUlMRUQKI2RlZmluZSBNQVBfRkFJTEVEIC0xCiNlbmRpZgoKI2lmZGVmIGdlbmVyaWMKdHlwZWRlZiBsb25nIGxvbmcgb2ZmNjRfdDsKI2VuZGlmCgojaWYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQojZGVmaW5lIF9fb2ZmNjRfdF9kZWZpbmVkCnR5cGVkZWYgb2ZmX3Qgb2ZmNjRfdDsKI2VuZGlmCgoKI2lmbmRlZiBzb2xhcmlzCiNpZm5kZWYgb2ZmNjRfdAojaWZuZGVmIF9PRkY2NF9UCiNpZm5kZWYgX19BSVhfXwojaWZuZGVmIF9fb2ZmNjRfdF9kZWZpbmVkCiNpZm5kZWYgU0NPX1VuaXh3YXJlX2djYwojaWZuZGVmIFVXSU4KI2lmbmRlZiBfX0RyYWdvbkZseV9fCnR5cGVkZWYgbG9uZyBsb25nIG9mZjY0X3Q7CiNlbmRpZgojZW5kaWYKI2VuZGlmCiNlbmRpZgojZW5kaWYKI2VuZGlmCiNlbmRpZgojZW5kaWYKCiNpZmRlZiBfX0FJWF9fCiNpbmNsdWRlIDxmY250bC5oPgojZW5kaWYKCiNpZmRlZiBWWEZTCiNpbmNsdWRlIDxzeXMvZnMvdnhfaW9jdGwuaD4KI2VuZGlmCgojaWZkZWYgdW5peAojaWYgZGVmaW5lZCAoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiNpbmNsdWRlIDxzeXMvdGltZS5oPgojZW5kaWYKI2luY2x1ZGUgPHN5cy90aW1lcy5oPgojaW5jbHVkZSA8c3lzL2ZpbGUuaD4KI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgojaWZuZGVmIE5VTEwKI2RlZmluZSBOVUxMIDAKI2VuZGlmCgojaWZuZGVmIG5vbGltaXRzCiNpbmNsdWRlIDxsaW1pdHMuaD4KI2VuZGlmCiNlbmRpZgoKI2lmZGVmIEhBVkVfQU5TSUNfQwojZGVmaW5lIFZPTEFUSUxFIHZvbGF0aWxlCiNlbHNlIAojZGVmaW5lIFZPTEFUSUxFIAojZW5kaWYKCiNpbmNsdWRlIDxzeXMvdGltZS5oPgoKI2lmZGVmIFNIQVJFRF9NRU0KI2luY2x1ZGUgPHN5cy9zaG0uaD4KI2VuZGlmCgojaWYgZGVmaW5lZChic2Q0XzIpICYmICFkZWZpbmVkKE1TX1NZTkMpCiNkZWZpbmUgTVNfU1lOQyAwCiNkZWZpbmUgTVNfQVNZTkMgMAojZW5kaWYKCiNpZiBkZWZpbmVkKGJzZDRfNCkgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQojZGVmaW5lIE1BUF9BTk9OWU1PVVMgTUFQX0FOT04KI2VuZGlmCgojaWYgZGVmaW5lZChTQ09fVW5peHdhcmVfZ2NjKSB8fCBkZWZpbmVkKHNvbGFyaXMpIHx8IGRlZmluZWQoVVdJTikgfHwgZGVmaW5lZChTQ08pCiNkZWZpbmUgTUFQX0ZJTEUgKDApCiNlbmRpZgoKI2lmIGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZChic2Q0XzIpIHx8IGRlZmluZWQoYnNkNF80KSB8fCBkZWZpbmVkKFNDTykgfHwgZGVmaW5lZChTb2xhcmlzKSB8fCBkZWZpbmVkKFNDT19Vbml4d2FyZV9nY2MpCmxvbmcgbG9uZyBwYWdlX3NpemUgPSA0MDk2OwojZGVmaW5lIEdPVF9QQUdFU0laRSAxCiNlbGlmIGRlZmluZWQoTkJQRykKbG9uZyBsb25nIHBhZ2Vfc2l6ZSA9IE5CUEc7CiNkZWZpbmUgR09UX1BBR0VTSVpFIDEKI2VsaWYgZGVmaW5lZChvbGRfbGludXgpCiNpbmNsdWRlIDxhc20vcGFnZS5oPgpsb25nIGxvbmcgcGFnZV9zaXplID0gUEFHRV9TSVpFOwojZGVmaW5lIEdPVF9QQUdFU0laRSAxCiNlbGlmICFkZWZpbmVkKEdPVF9QQUdFU0laRSkKbG9uZyBsb25nIHBhZ2Vfc2l6ZSA9IDQwOTY7IC8qIFVzZWQgd2hlbiBhbGwgZWxzZSBmYWlscyAqLwojZW5kaWYKCiNpZmRlZiBIQVZFX1BSRUFECiNpZmRlZiBIQVZFX1BSRUFEVgojZGVmaW5lIFBWRUNNQVggMTYKCiNpZmRlZiBfSFBVWF9TT1VSQ0UKI2RlZmluZSBQRVJfVkVDVE9SX09GRlNFVAojaW5jbHVkZSA8c3lzL3B1aW8uaD4Kc3RydWN0IHBpb3ZlYyBwaW92W1BWRUNNQVhdOwojZWxzZQojaW5jbHVkZSA8c3lzL3Vpby5oPgpzdHJ1Y3QgaW92ZWMgcGlvdltQVkVDTUFYXTsKI2RlZmluZSBwaW92X2Jhc2UgaW92X2Jhc2UKI2RlZmluZSBwaW92X2xlbiBpb3ZfbGVuCiNlbmRpZgoKI2VuZGlmCiNlbmRpZgoKI2RlZmluZSBERURVUFNFRUQgMHgyNzE5MzYyCgoKLyoKICogSW4gbXVsdGkgdGhyZWFkL3Byb2Nlc3MgdGhyb3VnaHB1dCBtb2RlIGVhY2ggY2hpbGQga2VlcHMgdHJhY2sgb2YKICogc3RhdGlzdGljcyBhbmQgY29tbXVuaWNhdGVzIHRoZW0gdGhyb3VnaCB2YXJpb3VzIGZsYXZvcnMgb2YKICogc2hhcmVkIG1lbW9yeSwgYW5kIHZpYSBtZXNzYWdlcy4KICovCnN0cnVjdCBjaGlsZF9zdGF0cyB7Cglsb25nIGxvbmcgZmxhZzsJCS8qIGNvbnRyb2wgc3BhY2UgKi8KCWxvbmcgbG9uZyBmbGFnMTsJLyogcGFkICovCglmbG9hdCB3YWxsdGltZTsJICAgICAgICAvKiBjaGlsZCBlbGFwc2VkIHRpbWUgKi8KCWZsb2F0IGNwdXRpbWU7CQkvKiBjaGlsZCBDUFUgdGltZSAqLwoJZmxvYXQgdGhyb3VnaHB1dDsgCS8qIFRocm91Z2hwdXQgaW4gZWl0aGVyIGtiL3NlYyBvciBvcHMvc2VjICovCglmbG9hdCBhY3R1YWw7CSAgIAkvKiBFaXRoZXIgYWN0dWFsIGtiIHJlYWQgb3IgIyBvZiBvcHMgcGVyZm9ybWVkICovCn0gVk9MQVRJTEUgKmNoaWxkX3N0YXQ7CgovKgogKiBVc2VkIGZvciBjcHUgdGltZSBzdGF0aXN0aWNzLgogKi8Kc3RydWN0IHJ1bnRpbWUgewoJZmxvYXQJd2FsbHRpbWU7CglmbG9hdAljcHV0aW1lOwoJZmxvYXQJY3B1dXRpbDsKfTsKCiNpZmRlZiBfX2NvbnZleF9zcHAKI2luY2x1ZGUgPHN5cy9jbnhfYWlsLmg+CiNlbmRpZgoKI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPG5ldGRiLmg+CgoKLyogCiAqIE1lc3NhZ2VzIHRoZSBjb250cm9sbGluZyBwcm9jZXNzIHNlbmRzIHRvIGNoaWxkcmVuLgogKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0aGF0IGlzIGFyY2ggc3BlY2lmaWMuCiAqIFRoaXMgaXMgdXNlZCB3aGVuIHVzaW5nIHRoZSBuZXR3b3JrIGRpc3RyaWJ1dGVkIG1vZGUuCiAqLwpzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgewoJY2hhciBjX2hvc3RfbmFtZVsxMDBdOwoJY2hhciBjX3BpdF9ob3N0bmFtZVs0MF07CgljaGFyIGNfcGl0X3NlcnZpY2VbOF07CgljaGFyIGNfY2xpZW50X25hbWVbMTAwXTsKCWNoYXIgY193b3JraW5nX2RpclsyMDBdOwoJY2hhciBjX2ZpbGVfbmFtZVsyMDBdOwoJY2hhciBjX3BhdGhfZGlyWzIwMF07CgljaGFyIGNfZXhlY3V0ZV9uYW1lWzIwMF07CgljaGFyIGNfd3JpdGVfdHJhal9maWxlbmFtZVsyMDBdOwoJY2hhciBjX3JlYWRfdHJhal9maWxlbmFtZVsyMDBdOwoJaW50IGNfb2ZsYWc7CglpbnQgY19tZmZsYWc7CglpbnQgY191bmJ1ZmZlcmVkOwoJaW50IGNfbm9yZXRlc3Q7CglpbnQgY19ub3RydW5jYXRlOwoJaW50IGNfcmVhZF9zeW5jOwoJaW50IGNfamZsYWc7CglpbnQgY19hc3luY19mbGFnOwoJaW50IGNfa19mbGFnOwoJaW50IGNfaF9mbGFnOwoJaW50IGNfbWZsYWc7CglpbnQgY19wZmxhZzsKCWludCBjX3N0cmlkZV9mbGFnOwoJaW50IGNfdmVyaWZ5OwoJaW50IGNfc3ZlcmlmeTsKCWludCBjX29kc3luYzsKCWludCBjX2RpYWdfdjsKCWludCBjX2RlZHVwOwoJaW50IGNfZGVkdXBfaW50ZXJpb3I7CglpbnQgY19kZWR1cF9jb21wcmVzczsKCWludCBjX2RlZHVwX21zZWVkOwoJaW50IGNfUV9mbGFnOwoJaW50IGNfTF9mbGFnOwoJaW50IGNfT1BTX2ZsYWc7CglpbnQgY19tbWFwZmxhZzsKCWludCBjX21tYXBhc2ZsYWc7CglpbnQgY19tbWFwbnNmbGFnOwoJaW50IGNfbW1hcHNzZmxhZzsKCWludCBjX25vX2NvcHlfZmxhZzsKCWludCBjX2luY2x1ZGVfY2xvc2U7CglpbnQgY19pbmNsdWRlX2ZsdXNoOwoJaW50IGNfZGlzcnVwdF9mbGFnOwoJaW50IGNfY29tcHV0ZV9mbGFnOwoJaW50IGNfeGZsYWc7CglpbnQgY19NU19mbGFnOwoJaW50IGNfbW1hcF9taXg7CglpbnQgY19LcGx1c19mbGFnOwoJaW50IGNfc3RvcF9mbGFnOwoJaW50IGNfd190cmFqX2ZsYWc7CglpbnQgY19yX3RyYWpfZmxhZzsKCWludCBjX2RpcmVjdF9mbGFnOwoJaW50IGNfY3B1dXRpbGZsYWc7CglpbnQgY19zZXFfbWl4OwoJaW50IGNfY2xpZW50X251bWJlcjsKCWludCBjX2NvbW1hbmQ7CglpbnQgY190ZXN0bnVtOwoJaW50IGNfbm9fdW5saW5rOwoJaW50IGNfbm9fd3JpdGU7CglpbnQgY19maWxlX2xvY2s7CglpbnQgY19yZWNfbG9jazsKCWludCBjX0twbHVzX3JlYWRlcnM7CglpbnQgY19tdWx0aXBsaWVyOwoJaW50IGNfc2hhcmVfZmlsZTsKCWludCBjX3BhdHRlcm47CglpbnQgY192ZXJzaW9uOwoJaW50IGNfYmFzZV90aW1lOwoJaW50IGNfbnVtX2NoaWxkOwoJaW50IGNfcGN0X3JlYWQ7CglpbnQgY19hZHZpc2Vfb3A7CglpbnQgY19hZHZpc2VfZmxhZzsKCWludCBjX3Jlc3RmOwoJbG9uZyBsb25nIGNfc3RyaWRlOwoJbG9uZyBsb25nIGNfcmVzdF92YWw7Cglsb25nIGxvbmcgY19kZWxheTsKCWxvbmcgbG9uZyBjX3B1cmdlOwoJbG9uZyBsb25nIGNfZmV0Y2hvbjsKCWxvbmcgbG9uZyBjX251bXJlY3M2NDsKCWxvbmcgbG9uZyBjX3JlY2xlbjsKCWxvbmcgbG9uZyBjX2NoaWxkX2ZsYWc7Cglsb25nIGxvbmcgY19kZWxheV9zdGFydDsKCWxvbmcgbG9uZyBjX2RlcHRoOwoJZmxvYXQgY19jb21wdXRlX3RpbWU7Cn07CQoKLyoKICogQWxsIGRhdGEgaW4gdGhpcyBpcyBpbiBzdHJpbmcgZm9ybWF0IGZvciBwb3J0YWJpbGl0eSBpbiBhIAogKiBoZXRyb2dlbmVvdXMgZW52aXJvbm1lbnQuCiAqCiAqIE1lc3NhZ2VzIHRoYXQgdGhlIG1hc3RlciB3aWxsIHNlbmQgdG8gdGhlIGNsaWVudHMKICogb3ZlciB0aGUgc29ja2V0LiBUaGlzIHByb3ZpZGVzIG5ldXRyYWwgZm9ybWF0CiAqIHNvIHRoYXQgaGV0ZXJvZ2VuZW91cyBjbHVzdGVycyB3aWxsIHdvcmsuCiAqIFRoaXMgaXMgdXNlZCB3aGVuIHVzaW5nIHRoZSBuZXR3b3JrIGRpc3RyaWJ1dGVkIG1vZGUuCiAqIFdBUk5JTkcgISEhIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgTVVTVCBub3QgYmUgYmlnZ2VyCiAqIHRoYW4gMTQ0OCBieXRlcyBvciBmcmFnbWVudGF0aW9uIHdpbGwga2ljayB5b3VyIGJ1dHQuCiAqLwpzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCB7CgljaGFyIGNfaG9zdF9uYW1lWzQwXTsKCWNoYXIgY19waXRfaG9zdG5hbWVbNDBdOwoJY2hhciBjX3BpdF9zZXJ2aWNlWzhdOwoJY2hhciBjX2NsaWVudF9uYW1lWzEwMF07CgljaGFyIGNfd29ya2luZ19kaXJbMTAwXTsKCWNoYXIgY19maWxlX25hbWVbMTAwXTsKCWNoYXIgY19wYXRoX2RpclsxMDBdOwoJY2hhciBjX2V4ZWN1dGVfbmFtZVsxMDBdOwoJY2hhciBjX3dyaXRlX3RyYWpfZmlsZW5hbWVbMTAwXTsKCWNoYXIgY19yZWFkX3RyYWpfZmlsZW5hbWVbMTAwXTsKCWNoYXIgY19vZmxhZ1syXTsKCWNoYXIgY19tZmZsYWdbMl07CgljaGFyIGNfdW5idWZmZXJlZFsyXTsKCWNoYXIgY19ub3JldGVzdFsyXTsKCWNoYXIgY19ub3RydW5jYXRlWzJdOwoJY2hhciBjX3JlYWRfc3luY1syXTsKCWNoYXIgY19qZmxhZ1syXTsKCWNoYXIgY19hc3luY19mbGFnWzJdOwoJY2hhciBjX2tfZmxhZ1syXTsKCWNoYXIgY19oX2ZsYWdbMl07CgljaGFyIGNfbWZsYWdbMl07CgljaGFyIGNfcGZsYWdbMl07CgljaGFyIGNfc3RyaWRlX2ZsYWdbMl07CgljaGFyIGNfdmVyaWZ5WzJdOwoJY2hhciBjX3N2ZXJpZnlbMl07CgljaGFyIGNfb2RzeW5jWzJdOwoJY2hhciBjX2RpYWdfdlsyXTsKCWNoYXIgY19kZWR1cFs0XTsKCWNoYXIgY19kZWR1cF9pbnRlcmlvcls0XTsKCWNoYXIgY19kZWR1cF9jb21wcmVzc1s0XTsKCWNoYXIgY19kZWR1cF9tc2VlZFs0XTsKCWNoYXIgY19RX2ZsYWdbMl07CgljaGFyIGNfTF9mbGFnWzJdOwoJY2hhciBjX09QU19mbGFnWzJdOwoJY2hhciBjX21tYXBmbGFnWzJdOwoJY2hhciBjX21tYXBhc2ZsYWdbMl07CgljaGFyIGNfbW1hcG5zZmxhZ1syXTsKCWNoYXIgY19tbWFwc3NmbGFnWzJdOwoJY2hhciBjX25vX2NvcHlfZmxhZ1syXTsKCWNoYXIgY19pbmNsdWRlX2Nsb3NlWzJdOwoJY2hhciBjX2luY2x1ZGVfZmx1c2hbMl07CgljaGFyIGNfZGlzcnVwdF9mbGFnWzJdOwoJY2hhciBjX2NvbXB1dGVfZmxhZ1syXTsKCWNoYXIgY19zdG9wX2ZsYWdbMl07CgljaGFyIGNfeGZsYWdbMl07CgljaGFyIGNfTVNfZmxhZ1syXTsKCWNoYXIgY19tbWFwX21peFsyXTsKCWNoYXIgY19LcGx1c19mbGFnWzJdOwoJY2hhciBjX3dfdHJhal9mbGFnWzJdOwkJLyogc21hbGwgaW50ICovCgljaGFyIGNfcl90cmFqX2ZsYWdbMl07CQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19kaXJlY3RfZmxhZ1syXTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19jcHV1dGlsZmxhZ1syXTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19zZXFfbWl4WzJdOyAJCS8qIHNtYWxsIGludCAqLwoJY2hhciBjX3N0cmlkZVsxMF07IAkJLyogc21hbGwgbG9uZyBsb25nICovCgljaGFyIGNfcmVzdF92YWxbMTBdOyAJCS8qIHNtYWxsIGxvbmcgbG9uZyAqLwoJY2hhciBjX3B1cmdlWzEwXTsgCQkvKiB2ZXJ5IHNtYWxsIGxvbmcgbG9uZyAqLwoJY2hhciBjX2ZldGNob25bMTBdOyAJCS8qIHZlcnkgc21hbGwgbG9uZyBsb25nICovCgljaGFyIGNfbXVsdGlwbGllclsxMF07IAkJLyogc21hbGwgaW50ICovCgljaGFyIGNfc2hhcmVfZmlsZVsxMF07CQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19maWxlX2xvY2tbMTBdOyAJCS8qIHNtYWxsIGludCAqLwoJY2hhciBjX3JlY19sb2NrWzEwXTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19LcGx1c19yZWFkZXJzWzEwXTsJLyogc21hbGwgaW50ICovCgljaGFyIGNfY2xpZW50X251bWJlclsyMF07IAkvKiBpbnQgKi8KCWNoYXIgY19jb21tYW5kWzIwXTsgCQkvKiBpbnQgKi8KCWNoYXIgY190ZXN0bnVtWzIwXTsgCQkvKiBpbnQgKi8KCWNoYXIgY19ub191bmxpbmtbNF07IAkJLyogaW50ICovCgljaGFyIGNfbm9fd3JpdGVbNF07IAkJLyogaW50ICovCgljaGFyIGNfcGF0dGVyblsyMF07IAkJLyogaW50ICovCgljaGFyIGNfdmVyc2lvblsyMF07IAkJLyogaW50ICovCgljaGFyIGNfYmFzZV90aW1lWzIwXTsgCQkvKiBpbnQgKi8KCWNoYXIgY19udW1fY2hpbGRbMjBdOyAJCS8qIGludCAqLwoJY2hhciBjX3BjdF9yZWFkWzZdOyAJCS8qIHNtYWxsIGludCAqLwoJY2hhciBjX2FkdmlzZV9vcFs0XTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19hZHZpc2VfZmxhZ1s0XTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19yZXN0Zls0XTsgCQkvKiBzbWFsbCBpbnQgKi8KCWNoYXIgY19kZXB0aFsyMF07IAkJLyogc21hbGwgbG9uZyBsb25nICovCgljaGFyIGNfY2hpbGRfZmxhZ1s0MF07IAkJLyogc21hbGwgbG9uZyBsb25nICovCgljaGFyIGNfZGVsYXlbODBdOyAJCS8qIGxvbmcgbG9uZyAqLwoJY2hhciBjX251bXJlY3M2NFs4MF07IAkJLyogbG9uZyBsb25nICovCgljaGFyIGNfcmVjbGVuWzgwXTsgCQkvKiBsb25nIGxvbmcgKi8KCWNoYXIgY19kZWxheV9zdGFydFs4MF07IAkvKiBsb25nIGxvbmcgKi8KCWNoYXIgY19jb21wdXRlX3RpbWVbODBdOyAJLyogZmxvYXQgKi8KfTsJCgovKiAKICogTWVzc2FnZXMgdGhlIGNsaWVudHMgd2lsbCBzZW5kIHRvIHRoZSBtYXN0ZXIuCiAqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9uIGVhY2ggY2xpZW50IGFuZCB0aGUgbWFzdGVyLgogKiBUaGlzIGlzIHVzZWQgd2hlbiB1c2luZyB0aGUgbmV0d29yayBkaXN0cmlidXRlZCBtb2RlLgogKi8Kc3RydWN0IG1hc3Rlcl9jb21tYW5kIHsKCWNoYXIgbV9ob3N0X25hbWVbMTAwXTsKCWNoYXIgbV9jbGllbnRfbmFtZVsxMDBdOwoJY2hhciBtX3N0b3BfZmxhZzsgCglpbnQgbV9jbGllbnRfbnVtYmVyOwoJaW50IG1fY2xpZW50X2Vycm9yOwoJaW50IG1fY2hpbGRfcG9ydDsKCWludCBtX2NoaWxkX2FzeW5jX3BvcnQ7CglpbnQgbV9jb21tYW5kOwoJaW50IG1fdGVzdG51bTsKCWludCBtX3ZlcnNpb247CglmbG9hdCBtX3Rocm91Z2hwdXQ7CglmbG9hdCBtX2NwdXRpbWU7CglmbG9hdCBtX3dhbGx0aW1lOwoJZmxvYXQgbV9hY3R1YWw7Cglsb25nIGxvbmcgbV9jaGlsZF9mbGFnOwp9OwkKCi8qCiAqIE1lc3NhZ2VzIHRoYXQgdGhlIGNsaWVudHMgd2lsbCBzZW5kIHRvIHRoZSBtYXN0ZXIKICogb3ZlciB0aGUgc29ja2V0LiBUaGlzIHByb3ZpZGVzIG5ldXRyYWwgZm9ybWF0CiAqIHNvIHRoYXQgaGV0ZXJvZ2VuZW91cyBjbHVzdGVycyB3aWxsIHdvcmsuCiAqIFRoaXMgaXMgdXNlZCB3aGVuIHVzaW5nIHRoZSBuZXR3b3JrIGRpc3RyaWJ1dGVkIG1vZGUuCiAqLwpzdHJ1Y3QgbWFzdGVyX25ldXRyYWxfY29tbWFuZCB7CgljaGFyIG1faG9zdF9uYW1lWzEwMF07CgljaGFyIG1fY2xpZW50X25hbWVbMTAwXTsKCWNoYXIgbV9jbGllbnRfbnVtYmVyWzIwXTsJLyogaW50ICovCgljaGFyIG1fY2xpZW50X2Vycm9yWzIwXTsJLyogaW50ICovCgljaGFyIG1fc3RvcF9mbGFnWzRdOwkJLyogY2hhciArc3BhY2UgKi8KCWNoYXIgbV9jaGlsZF9wb3J0WzIwXTsJCS8qIGludCAqLwoJY2hhciBtX2NoaWxkX2FzeW5jX3BvcnRbMjBdOwkvKiBpbnQgKi8KCWNoYXIgbV9jb21tYW5kWzIwXTsJCS8qIGludCAqLwoJY2hhciBtX3Rlc3RudW1bMjBdOwkJLyogaW50ICovCgljaGFyIG1fdmVyc2lvblsyMF07CQkvKiBpbnQgKi8KCWNoYXIgbV90aHJvdWdocHV0WzgwXTsJCS8qIGZsb2F0ICovCgljaGFyIG1fY3B1dGltZVs4MF07CQkvKiBmbG9hdCAqLwoJY2hhciBtX3dhbGx0aW1lWzgwXTsJCS8qIGZsb2F0ICovCgljaGFyIG1fYWN0dWFsWzgwXTsJCS8qIGZsb2F0ICovCgljaGFyIG1fY2hpbGRfZmxhZ1s4MF07CQkvKiBsb25nIGxvbmcgKi8KfTsJCgoKLyoKICogUG9zc2libGUgdmFsdWVzIGZvciB0aGUgY29tbWFuZHMgc2VudCB0byB0aGUgbWFzdGVyCiAqLwojZGVmaW5lIFJfQ0hJTERfSk9JTiAgICAgICAgMQojZGVmaW5lIFJfU1RBVF9EQVRBICAgICAgICAgMgojZGVmaW5lIFJfRkxBR19EQVRBICAgICAgICAgMwoKLyoKICogUG9zc2libGUgdmFsdWVzIGZvciB0aGUgbWFzdGVyJ3MgY29tbWFuZHMgc2VudCB0byBhIGNsaWVudAogKgogKiBUaGUgUl9GTEFHX0RBVEEgaXMgYWxzbyB1c2VkIGJ5IHRoZSBtYXN0ZXIgdG8gdGVsbCB0aGUgCiAqIGNsaWVudCB0byB1cGRhdGUgaXRzIGZsYWdzLgogKi8KI2RlZmluZSBSX0pPSU5fQUNLICAgICAgICA0CiNkZWZpbmUgUl9TVE9QX0ZMQUcgICAgICAgNQojZGVmaW5lIFJfVEVSTUlOQVRFICAgICAgIDYKI2RlZmluZSBSX0RFQVRIICAgICAgICAgICA3CgoKLyogVGhlc2UgYXJlIHRoZSBkZWZhdWx0cyBmb3IgdGhlIHByb2Nlc3Nvci4gVGhleSBjYW4gYmUgCiAqIG92ZXIgd3JpdHRlbiBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCiAqLwojZGVmaW5lIENBQ0hFX0xJTkVfU0laRSAzMgojZGVmaW5lIENBQ0hFX1NJWkUgKCAxMDI0ICogMTAyNCApCgoKI2RlZmluZSBNRUcgKDEwMjQgKiAxMDI0KQoKLyoKICogRm9yIHN0cmlkZSB0ZXN0aW5nIHVzZSBhIHByaW1lIG51bWJlciB0byBhdm9pZCBzdHJpcGUKICogd3JhcCBoaXR0aW5nIHRoZSBzYW1lIHNwaW5kbGUuCiAqLwojZGVmaW5lIFNUUklERSAxNwoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qICAgIERFRklORUQgQ09OU1RBTlRTCQkJCQkJCSovCi8qCQkJCQkJCQkJKi8KLyogTmV2ZXIgYWRkIGEgY29tbWVudCB0byB0aGUgZW5kIG9mIGEgI2RlZmluZS4gU29tZSBjb21waWxlcnMgd2lsbCAgICAgKi8KLyogY2hva2UgYW5kIGZhaWwgdGhlIGNvbXBpbGUuCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFNpemUgb2YgYnVmZmVyIGZvciBjYXB0dXJpbmcgdGhlIG1hY2hpbmUncyBuYW1lLgogKi8KI2RlZmluZSBJQlVGU0laRSAxMDAKLyoKICogSG93IG1hbnkgSS9PcyBiZWZvcmUgYSBub24tdW5pZm9ybSBhY2Nlc3MuCiAqLwojZGVmaW5lIERJU1JVUFQgMTAwCgovKgogKiBTZXQgdGhlIGNyb3Nzb3ZlciBzaXplLiBUaGlzIGlzIHdoZXJlIHRoZSBzbWFsbCB0cmFuc2ZlcnMKICogYXJlIHNraXBwZWQgdG8gc2F2ZSB0aW1lLiBUaGVyZSBpcyBhbiBvcHRpb24gdG8gCiAqIGRpc2FibGUgdGhlIHNraXBwaW5nLgogKi8KI2RlZmluZSBMQVJHRV9SRUMgNjU1MzYKCi8qIERlZmF1bHQgbnVtYmVyIG9mIGtpbG9ieXRlcyBpbiBmaWxlICovCiNkZWZpbmUgS0lMT0JZVEVTIDUxMiAJCQkKCi8qIERlZmF1bHQgbnVtYmVyIG9mIGJ5dGVzIGluIGEgcmVjb3JkICovCiNkZWZpbmUgUkVDTEVOIDEwMjQJCQkKCi8qIERlZmF1bHQgc2l6ZSBvZiBmaWxlIGluIGJ5dGVzKi8KI2RlZmluZSBGSUxFU0laRSAoS0lMT0JZVEVTKjEwMjQpCQoKLyogRGVmYXVsdCBudW1iZXIgb2YgcmVjb3JkcyAqLwojZGVmaW5lIE5VTVJFQ1MgRklMRVNJWkUvUkVDTEVOCQkKCiNpZmRlZiBfX2JzZGlfXwovKiBBdCA4IE1lZyBzd2l0Y2ggdG8gbGFyZ2UgcmVjb3JkcyAqLwojZGVmaW5lIENST1NTT1ZFUiAoOCoxMDI0KQkJCi8qbWF4aW11bSBidWZmZXIgc2l6ZSovCiNkZWZpbmUgTUFYQlVGRkVSU0laRSAoOCoxMDI0KjEwMjQpCQkKI2Vsc2UKLyogQXQgMTYgTWVnIHN3aXRjaCB0byBsYXJnZSByZWNvcmRzICovCiNkZWZpbmUgQ1JPU1NPVkVSICgxNioxMDI0KQkJCi8qIE1heGltdW0gYnVmZmVyIHNpemUqLwojZGVmaW5lIE1BWEJVRkZFUlNJWkUgKDE2KjEwMjQqMTAyNCkJCQojZW5kaWYKCi8qIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkcmVuLiBUaHJlYWRzL3Byb2NzL2NsaWVudHMgKi8KI2RlZmluZQlNQVhTVFJFQU1TCTI1NgkJCgovKiBNaW5pbXVtIGJ1ZmZlciBzaXplICovCiNkZWZpbmUgTUlOQlVGRkVSU0laRSAxMjgKLyogSWYgdGhpbmdzIHJhbiB3YXkgdG9vIGZhc3QgKi8KI2RlZmluZSBUT09GQVNUIDEwCi8qIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHlwZXMgb2YgdGVzdHMgKi8KI2RlZmluZSBNQVhURVNUUyAxMAovKiBEZWZhdWx0IGZpbGwgcGF0dGVybiBmb3IgdmVyaWZpY2F0aW9uICovCiNkZWZpbmUgUEFUVEVSTiBnZXRfcGF0dGVybigpOwojZGVmaW5lIFBBVFRFUk4xIDB4QkIKLyogVXNlZCBmb3IgRXhjZWwgaW50ZXJuYWwgdGFibGVzICovCiNkZWZpbmUgTUFYX1ggMTAwCQkJCi8qIFVzZWQgZm9yIEV4Y2VsIGludGVybmFsIHRhYmxlcyAqLwojZGVmaW5lIE1BWF9ZIDUxMgkJCQoKI2RlZmluZSBVU0FHRSAgIlx0VXNhZ2U6IEZvciB1c2FnZSBpbmZvcm1hdGlvbiB0eXBlIGlvem9uZSAtaCBcblxuIgoKCi8qIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZmlsZW5hbWUgKi8KI2RlZmluZSBNQVhOQU1FU0laRSAxMDAwICAgICAgICAgICAgICAgIAoKLyoKICogRGVmaW5lIHRoZSB0eXBpY2FsIG91dHB1dCB0aGF0IHRoZSB1c2VyIHdpbGwgc2VlIG9uIHRoZWlyCiAqIHNjcmVlbi4KICovCiNpZmRlZiBOT19QUklOVF9MTEQKI2lmZGVmIEhBVkVfUFJFQUQKI2luY2x1ZGUgPHN5cy90aW1lcy5oPgojaWYgZGVmaW5lZChIQVZFX1BSRUFEKSAmJiBkZWZpbmVkKEhBVkVfUFJFQURWKQojZGVmaW5lIENPTlRST0xfU1RSSU5HMSAiJTE2bGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkJThsZCAlOGxkICU4bGQlOGxkJThsZCU5bGQlOWxkJThsZCUxMGxkJTlsZCUxMGxkJTlsZCUxMGxkJTEwbGQlOWxkXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcyICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzJThzJTlzJTdzJTEwcyUxMHMlMTBzJTlzJTlzXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkczICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkc0ICIlMTZzJThzJThzJThzJThzJTEwc1xuIgojZWxzZQojZGVmaW5lIENPTlRST0xfU1RSSU5HMSAiJTE2bGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkJThsZCAlOGxkICU4bGQlOGxkJThsZCU5bGQlOWxkJThsZCUxMGxkJTlsZCUxMGxkXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcyICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzJThzJTlzJTdzJTEwc1xuIgojZGVmaW5lIENPTlRST0xfU1RSSU5HMyAiJTE2cyU4cyU4cyU4cyU4cyUxMHMlOHMlOHMlOHMgJThzICU4c1xuIgojZGVmaW5lIENPTlRST0xfU1RSSU5HNCAiJTE2cyU4cyU4cyU4cyU4cyUxMHNcbiIKI2VuZGlmCiNlbHNlCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcxICIlMTZsZCU4bGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkICU4bGQgJThsZCU4bGQlOGxkJTlsZCU5bGRcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzIgIiUxNnMlOHMlOHMlOHMlOHMlMTBzJThzJThzJThzICU4cyAlOHMlOXMlOXMlOHMlOXNcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzMgIiUxNnMlOHMlOHMlOHMlOHMlMTBzJThzJThzJThzICU4cyAlOHMlOXMlOXMlOHMlOXNcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzQgIiUxNnMlOHMlOHMlOHMlOHMlMTBzXG4iCiNlbmRpZgojZW5kaWYKCiNpZm5kZWYgTk9fUFJJTlRfTExECiNpZmRlZiBIQVZFX1BSRUFECiNpbmNsdWRlIDxzeXMvdGltZXMuaD4KI2lmIGRlZmluZWQoSEFWRV9QUkVBRCkgJiYgZGVmaW5lZChIQVZFX1BSRUFEVikKI2RlZmluZSBDT05UUk9MX1NUUklORzEgIiUxNmxsZCU4bGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkICU4bGQgJThsZCU4bGQlOGxkJTlsZCU5bGQlOGxkJTEwbGQlOWxkJTEwbGQlOWxkJTEwbGQlMTBsZCU5bGRcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzIgIiUxNnMlOHMlOHMlOHMlOHMlMTBzJThzJThzJThzICU4cyAlOHMlOXMlOXMlOHMlOXMlOHMlOXMlN3MlMTBzJTEwcyUxMHMlOXMlOXNcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzMgIiUxNnMlOHMlOHMlOHMlOHMlMTBzJThzJThzJThzICU4cyAlOHMlOXMlOXMlOHMlOXNcbiIKI2RlZmluZSBDT05UUk9MX1NUUklORzQgIiUxNnMlOHMlOHMlOHMlOHMlMTBzXG4iCiNlbHNlCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcxICIlMTZsbGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkJThsZCAlOGxkICU4bGQlOGxkJThsZCU5bGQlOWxkJThsZCUxMGxkJTlsZCUxMGxkXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcyICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzJThzJTlzJTdzJTEwc1xuIgojZGVmaW5lIENPTlRST0xfU1RSSU5HMyAiJTE2cyU4cyU4cyU4cyU4cyUxMHMlOHMlOHMlOHMgJThzICU4cyU5cyU5cyU4cyU5c1xuIgojZGVmaW5lIENPTlRST0xfU1RSSU5HNCAiJTE2cyU4cyU4cyU4cyU4cyUxMHNcbiIKI2VuZGlmCiNlbHNlCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcxICIlMTZsbGQlOGxkJThsZCU4bGQlOGxkJThsZCU4bGQlOGxkICU4bGQgJThsZCU4bGQlOGxkJThsZCU5bGQlOWxkXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkcyICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkczICIlMTZzJThzJThzJThzJThzJTEwcyU4cyU4cyU4cyAlOHMgJThzJTlzJTlzJThzJTlzXG4iCiNkZWZpbmUgQ09OVFJPTF9TVFJJTkc0ICIlMTZzJThzJThzJThzJThzJTEwc1xuIgojZW5kaWYKI2VuZGlmCgovKiAKICAgIEZvciAnYXV0byBtb2RlJywgdGhlc2UgZGVmaW5lcyBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zCiAgICB0byBwZXJmb3JtIGZvciBib3RoIHRoZSBmaWxlIHNpemUgYW5kIHRoZSByZWNvcmQgbGVuZ3RoLgoqLyAKCi8qIFN0YXJ0IHdpdGggNjQga2J5dGUgbWluaW11bSBmaWxlIHNpemUgYnkgZGVmYXVsdCAqLwojZGVmaW5lIEtJTE9CWVRFU19TVEFSVCAgICAgICA2NAovKiBEZWZhdWx0IG1heGltdW0gZmlsZSBzaXplLiBUaGlzIGlzIDUxMiBNYnl0ZXMgKi8KI2RlZmluZSBLSUxPQllURVNfRU5EICgxMDI0KjUxMikKLyogRGVmYXVsdCBzdGFydGluZyByZWNvcmQgc2l6ZSAqLwojZGVmaW5lIFJFQ0xFTl9TVEFSVCAgNDA5NgovKiBEZWZhdWx0IG1heGltdW0gcmVjb3JkIHNpemUgKi8KI2RlZmluZSBSRUNMRU5fRU5EICAgIChNQVhCVUZGRVJTSVpFKQovKiBNdWx0aXBsaWVyIGZvciBlYWNoIGl0dGVyYXRpb24gb24gZmlsZSBhbmQgcmVjb3JkIHNpemUgKi8KI2RlZmluZSBNVUxUSVBMSUVSICAgIDIKCi8qCiAqIEFzc2lnbiBudW1lcmljIHZhbHVlcyB0byBlYWNoIG9mIHRoZSB0ZXN0cy4KICovCiNkZWZpbmUgV1JJVEVSX1RFU1QJCTAKI2RlZmluZSBSRUFERVJfVEVTVAkJMQojZGVmaW5lIFJBTkRPTV9SV19URVNUCQkyCiNkZWZpbmUgUkVWRVJTRV9URVNUCQkzCiNkZWZpbmUgUkVXUklURV9SRUNfVEVTVAk0CiNkZWZpbmUgU1RSSURFX1JFQURfVEVTVAk1CiNkZWZpbmUgRldSSVRFUl9URVNUCQk2CiNkZWZpbmUgRlJFQURFUl9URVNUCQk3CiNkZWZpbmUgUkFORE9NX01JWF9URVNUCQk4CiNpZmRlZiBIQVZFX1BSRUFECiNkZWZpbmUgUFdSSVRFUl9URVNUCQk5CiNkZWZpbmUgUFJFQURFUl9URVNUCQkxMAkKI2VuZGlmIC8qIEhBVkVfUFJFQUQgKi8KI2lmZGVmIEhBVkVfUFJFQURWCiNkZWZpbmUgUFdSSVRFVl9URVNUCQkxMQojZGVmaW5lIFBSRUFEVl9URVNUCQkxMgojZW5kaWYgLyogSEFWRV9QUkVBRFYgKi8KCiNkZWZpbmUgV1JJVEVSX01BU0sJCSgxIDw8IFdSSVRFUl9URVNUKQojZGVmaW5lIFJFQURFUl9NQVNLCQkoMSA8PCBSRUFERVJfVEVTVCkKI2RlZmluZSBSQU5ET01fUldfTUFTSwkJKDEgPDwgUkFORE9NX1JXX1RFU1QpCiNkZWZpbmUgUkFORE9NX01JWF9NQVNLCQkoMSA8PCBSQU5ET01fTUlYX1RFU1QpCiNkZWZpbmUgUkVWRVJTRV9NQVNLCQkoMSA8PCBSRVZFUlNFX1RFU1QpCiNkZWZpbmUgUkVXUklURV9SRUNfTUFTSwkoMSA8PCBSRVdSSVRFX1JFQ19URVNUKQojZGVmaW5lIFNUUklERV9SRUFEX01BU0sJKDEgPDwgU1RSSURFX1JFQURfVEVTVCkKI2RlZmluZSBGV1JJVEVSX01BU0sJCSgxIDw8IEZXUklURVJfVEVTVCkKI2RlZmluZSBGUkVBREVSX01BU0sJCSgxIDw8IEZSRUFERVJfVEVTVCkKI2lmZGVmIEhBVkVfUFJFQUQKI2RlZmluZSBQV1JJVEVSX01BU0sJCSgxIDw8IFBXUklURVJfVEVTVCkKI2RlZmluZSBQUkVBREVSX01BU0sJCSgxIDw8IFBSRUFERVJfVEVTVCkKI2VuZGlmIC8qIEhBVkVfUFJFQUQgKi8KI2lmZGVmIEhBVkVfUFJFQURWCiNkZWZpbmUgUFdSSVRFVl9NQVNLCQkoMSA8PCBQV1JJVEVWX1RFU1QpCiNkZWZpbmUgUFJFQURWX01BU0sJCSgxIDw8IFBSRUFEVl9URVNUKQojZW5kaWYgLyogSEFWRV9QUkVBRFYgKi8KCi8qCiAqIGNoaWxkX3N0YXQtPmZsYWcgdmFsdWVzIGFuZCB0cmFuc2l0aW9ucwogKi8KLyogUGFyZW50IGluaXRpYWxpemVzIGNoaWxkcmVuIHRvIEhPTEQgKi8KI2RlZmluZSBDSElMRF9TVEFURV9IT0xECTAJCi8qIENoaWxkIHRlbGxzIG1hc3RlciB3aGVuIGl0J3MgUkVBRFkgKi8KI2RlZmluZSBDSElMRF9TVEFURV9SRUFEWQkxCQovKiBQYXJlbnQgdGVsbHMgY2hpbGQgdG8gQkVHSU4gKi8KI2RlZmluZSBDSElMRF9TVEFURV9CRUdJTgkyCQovKiBDaGlsZCB0ZWxscyBwYXJlbnQgdGhhdCBpdCdzIERPTkUgKi8KI2RlZmluZSBDSElMRF9TVEFURV9ET05FCTMJCgojZGVmaW5lIE1FUlNFTk5FCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJICAqLwovKiAgICBGVU5DVElPTiBERUNMQVJBVElPTlMJCQkJCSAgKi8KLyoJCQkJCQkJCSAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KY2hhciAqaW5pdGZpbGUoKTsKaW50IHBpdF9nZXR0aW1lb2ZkYXkoIHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1lem9uZSAqLCBjaGFyICosIGNoYXIgKik7CnN0YXRpYyBpbnQgb3BlblNja3QoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQgKTsKc3RhdGljIHZvaWQgcGl0KCBpbnQsIHN0cnVjdCB0aW1ldmFsICopOwp2b2lkIG1tYXBfZW5kKCk7CnZvaWQgYWxsb2NfcGJ1ZigpOwp2b2lkIGF1dG9fdGVzdCgpOwkJLyogcGVyZm9ybSBhdXRvbWF0aWMgdGVzdCBzZXJpZXMgICovCnZvaWQgc2hvd19oZWxwKCk7CQkvKiBzaG93IGRldmVsb3BtZW50IGhlbHAgICAgICAgICAgKi8Kc3RhdGljIGRvdWJsZSB0aW1lX3NvX2ZhcigpOwkvKiB0aW1lIHNpbmNlIHN0YXJ0IG9mIHByb2dyYW0gICAgKi8KI2lmZGVmIHVuaXgKc3RhdGljIGRvdWJsZSB1dGltZV9zb19mYXIoKTsJLyogdXNlciB0aW1lIAkJCSAgKi8Kc3RhdGljIGRvdWJsZSBzdGltZV9zb19mYXIoKTsJLyogc3lzdGVtIHRpbWUgICAJCSAgKi8Kc3RhdGljIGRvdWJsZSBjbGtfdGNrKCk7CS8qIEdldCBjbG9ja3MvdGljawkJICAqLwpzdGF0aWMgZG91YmxlIGNwdXRpbWVfc29fZmFyKCk7CiNlbHNlCiNkZWZpbmUgY3B1dGltZV9zb19mYXIoKQl0aW1lX3NvX2ZhcigpCiNlbmRpZgpzdGF0aWMgZG91YmxlIHRpbWVfc29fZmFyMSgpOwkvKiB0aW1lIHNpbmNlIHN0YXJ0IG9mIHByb2dyYW0gICAgKi8Kdm9pZCBnZXRfcmVzb2x1dGlvbigpOwp2b2lkIGdldF9ydXNhZ2VfcmVzb2x1dGlvbigpOwp2b2lkIHNpZ25hbF9oYW5kbGVyKCk7CQkvKiBjbGVhbiB1cCBpZiB1c2VyIGludGVycnVwdHMgdXMgKi8Kdm9pZCBiZWdpbigpOwkJCS8qIFRoZSBtYWluIHdvcmtlciBpbiB0aGUgYXBwICAgICAqLwp2b2lkIGZldGNoaXQoKTsJCQkvKiBQcmltZSBvbiBjaGlwIGNhY2hlCQkgICovCnZvaWQgcHVyZ2VpdCgpOwkJCS8qIFB1cmdlIG9uIGNoaXAgY2FjaGUJCSAgKi8Kdm9pZCB0aHJvdWdocHV0X3Rlc3QoKTsJCS8qIE11bHRpIHByb2Nlc3MgdGhyb3VnaHB1dCAJICAqLwp2b2lkIG11bHRpX3Rocm91Z2hwdXRfdGVzdCgpOwkvKiBNdWx0aSBwcm9jZXNzIHRocm91Z2hwdXQgCSAgKi8Kdm9pZCBwcmVwYWdlKCk7CQkJLyogUHJlLWZhdWx0IHVzZXIgYnVmZmVyCSAgKi8Kdm9pZCBnZXRfZGF0ZSgpOwppbnQgZ2V0X3BhdHRlcm4oKTsJCS8qIFNldCBwYXR0ZXJuIGJhc2VkIG9uIHZlcnNpb24gICAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmZsb2F0IGRvX2NvbXB1dGUoZmxvYXQpOwkvKiBjb21wdXRlIGN5Y2xlIHNpbXVsYXRpb24gICAgICAgKi8KI2Vsc2UKZmxvYXQgZG9fY29tcHV0ZSgpOwkJLyogY29tcHV0ZSBjeWNsZSBzaW11bGF0aW9uICAgICAgICovCiNlbmRpZgp2b2lkIHdyaXRlX3BlcmZfdGVzdCgpOwkJLyogd3JpdGUvcmV3cml0ZSB0ZXN0CQkgICovCnZvaWQgZndyaXRlX3BlcmZfdGVzdCgpOwkvKiBmd3JpdGUvcmVmd3JpdGUgdGVzdAkJICAqLwp2b2lkIGZyZWFkX3BlcmZfdGVzdCgpOwkJLyogZnJlYWQvcmVmcmVhZCB0ZXN0CQkgICovCnZvaWQgcmVhZF9wZXJmX3Rlc3QoKTsJCS8qIHJlYWQvcmVyZWFkIHRlc3QJCSAgKi8Kdm9pZCBtaXhfcGVyZl90ZXN0KCk7CQkvKiByZWFkL3JlcmVhZCB0ZXN0CQkgICovCnZvaWQgcmFuZG9tX3BlcmZfdGVzdCgpOwkvKiByYW5kb20gcmVhZC93cml0ZSB0ZXN0CSAgKi8Kdm9pZCByZXZlcnNlX3BlcmZfdGVzdCgpOwkvKiByZXZlcnNlIHJlYWQgdGVzdAkJICAqLwp2b2lkIHJld3JpdGVyZWNfcGVyZl90ZXN0KCk7CS8qIHJld3JpdGUgcmVjb3JkIHRlc3QJCSAgKi8Kdm9pZCByZWFkX3N0cmlkZV9wZXJmX3Rlc3QoKTsJLyogcmVhZCB3aXRoIHN0cmlkZSB0ZXN0CSAgKi8KI2lmZGVmIEhBVkVfUFJFQUQKdm9pZCBwcmVhZF9wZXJmX3Rlc3QoKTsJCS8qIHByZWFkL3JlLXByZWFkIHRlc3QJCSAgKi8Kdm9pZCBwd3JpdGVfcGVyZl90ZXN0KCk7CS8qIHB3cml0ZS9yZS1wd3JpdGUgdGVzdAkgICovCiNlbmRpZiAvKiBIQVZFX1BSRUFEICovCiNpZmRlZiBIQVZFX1BSRUFEVgp2b2lkIHByZWFkdl9wZXJmX3Rlc3QoKTsJLyogcHJlYWR2L3JlLXByZWFkdiB0ZXN0CSAgKi8Kdm9pZCBwd3JpdGV2X3BlcmZfdGVzdCgpOwkvKiBwd3JpdGV2L3JlLXB3cml0ZXYgdGVzdAkgICovCiNlbmRpZiAvKiBIQVZFX1BSRUFEViAqLwp2b2lkIHN0b3JlX2R2YWx1ZSgpOwkJLyogU3RvcmUgZG91YmxlcyBhcnJheSAJCSAgKi8Kdm9pZCBkdW1wX2V4Y2VsKCk7CnZvaWQgZHVtcF90aHJvdWdocHV0KCk7CmludCBzcF9zdGFydF9jaGlsZF9zZW5kKCk7CmludCBzcF9zdGFydF9tYXN0ZXJfbGlzdGVuKCk7CiNpZmRlZiBIQVZFX0FOU0lDX0MKI2lmIGRlZmluZWQgKEhBVkVfUFJFQUQpICYmIGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkKc3NpemVfdCBwd3JpdGU2NCgpOyAKc3NpemVfdCBwcmVhZDY0KCk7IAojZW5kaWYKI2lmICFkZWZpbmVkKGxpbnV4KQpjaGFyICpnZXRlbnYoKTsKY2hhciAqaW5ldF9udG9hKCk7CmludCBzeXN0ZW0oKTsKI2VuZGlmCnZvaWQgbXlfbmFwKCk7CmludCB0aHJlYWRfZXhpdCgpOwojaWZkZWYgQVNZTkNfSU8Kc2l6ZV90IGFzeW5jX3dyaXRlKCk7CnZvaWQgYXN5bmNfcmVsZWFzZSgpOwppbnQgYXN5bmNfcmVhZCgpOwppbnQgYXN5bmNfcmVhZF9ub19jb3B5KCk7CnNpemVfdCBhc3luY193cml0ZV9ub19jb3B5KCk7CnZvaWQgZW5kX2FzeW5jKCk7CnZvaWQgYXN5bmNfaW5pdCgpOwojZWxzZQpzaXplX3QgYXN5bmNfd3JpdGUoKTsKc2l6ZV90IGFzeW5jX3dyaXRlX25vX2NvcHkoKTsKdm9pZCBhc3luY19yZWxlYXNlKCk7CiNlbmRpZgp2b2lkIGRvX2Zsb2F0KCk7CmludCBjcmVhdGVfeGxzKCk7CnZvaWQgY2xvc2VfeGxzKCk7CnZvaWQgZG9fbGFiZWwoKTsKaW50IG15bG9ja2YoaW50LCBpbnQsIGludCk7CmludCBteWxvY2tyKGludCxpbnQsIGludCwgb2ZmNjRfdCwgb2ZmNjRfdCk7CmludCByYW5kKHZvaWQpOwp2b2lkIHNyYW5kKHVuc2lnbmVkIGludCk7CmludCBnZXRfY2xpZW50X2luZm8odm9pZCk7CnZvaWQgZXhpdChpbnQpOwp2b2lkIGZpbmRfcmVtb3RlX3NoZWxsKGNoYXIgKik7CnZvaWQgZmluZF9leHRlcm5hbF9tb24oY2hhciAqLGNoYXIgKik7CnZvaWQgc3RhcnRfbW9uaXRvcihjaGFyICopOwp2b2lkIHN0b3BfbW9uaXRvcihjaGFyICopOwp2b2lkIHRha2VvZmZfY2FjaGUoKTsKdm9pZCBkZWxfY2FjaGUoKTsKdm9pZCBmaWxsX2FyZWEobG9uZyBsb25nICosIGxvbmcgbG9uZyAqLCBsb25nIGxvbmcpOwp2b2lkIGZpbGxfYnVmZmVyKGNoYXIgKixsb25nIGxvbmcgLGxvbmcgbG9uZyAsY2hhciwgbG9uZyBsb25nICk7CnZvaWQgc3RvcmVfdmFsdWUob2ZmNjRfdCk7CnZvaWQgc3RvcmVfdGltZXMoZG91YmxlLCBkb3VibGUpOwpzdGF0aWMgZG91YmxlIGNwdV91dGlsKGRvdWJsZSwgZG91YmxlKTsKdm9pZCBkdW1wX2NwdXRpbWVzKHZvaWQpOwp2b2lkIHB1cmdlX2J1ZmZlcl9jYWNoZSh2b2lkKTsKY2hhciAqYWxsb2NfbWVtKGxvbmcgbG9uZyxpbnQpOwp2b2lkICoodGhyZWFkX3J3cml0ZV90ZXN0KSh2b2lkICopOwp2b2lkICoodGhyZWFkX3dyaXRlX3Rlc3QpKHZvaWQgKik7CnZvaWQgKih0aHJlYWRfcmVhZF90ZXN0KSh2b2lkKik7CiNpZmRlZiBIQVZFX1BSRUFECnZvaWQgKih0aHJlYWRfcHJlYWRfdGVzdCkodm9pZCopOwp2b2lkICoodGhyZWFkX3B3cml0ZV90ZXN0KSh2b2lkKik7CiNlbmRpZgp2b2lkICoodGhyZWFkX2NsZWFudXBfdGVzdCkodm9pZCopOwp2b2lkICoodGhyZWFkX2NsZWFudXBfcXVpY2spKHZvaWQqKTsKdm9pZCAqKHRocmVhZF9yYW5yZWFkX3Rlc3QpKHZvaWQgKik7CnZvaWQgKih0aHJlYWRfbWl4X3Rlc3QpKHZvaWQgKik7CnZvaWQgKih0aHJlYWRfcmFud3JpdGVfdGVzdCkodm9pZCAqKTsKdm9pZCAqKHRocmVhZF9ycmVhZF90ZXN0KSh2b2lkICopOwp2b2lkICoodGhyZWFkX3JldmVyc2VfcmVhZF90ZXN0KSh2b2lkICopOwp2b2lkICoodGhyZWFkX3N0cmlkZV9yZWFkX3Rlc3QpKHZvaWQgKik7CnZvaWQgKih0aHJlYWRfc2V0X2Jhc2UpKHZvaWQgKik7CnZvaWQgKih0aHJlYWRfam9pbikobG9uZyBsb25nLCB2b2lkICopOwp2b2lkIGRpc3J1cHQoaW50KTsKI2lmIGRlZmluZWQoV2luZG93cykKdm9pZCBkaXNydXB0dyhIQU5ETEUpOwojZW5kaWYKbG9uZyBsb25nIGdldF90cmFqKEZJTEUgKiwgbG9uZyBsb25nICosIGZsb2F0ICosIGxvbmcpOwp2b2lkIGNyZWF0ZV90ZW1wKG9mZjY0X3QsIGxvbmcgbG9uZyApOwpGSUxFICpvcGVuX3dfdHJhaih2b2lkKTsKRklMRSAqb3Blbl9yX3RyYWoodm9pZCk7CnZvaWQgdHJhal92ZXJzKHZvaWQpOwp2b2lkIHJfdHJhal9zaXplKHZvaWQpOwpsb25nIGxvbmcgd190cmFqX3NpemUodm9pZCk7CnZvaWQgaW5pdF9maWxlX3NpemVzKCk7Cm9mZjY0X3QgZ2V0X25leHRfZmlsZV9zaXplKG9mZjY0X3QpOwp2b2lkIGFkZF9maWxlX3NpemUob2ZmNjRfdCk7CnZvaWQgaW5pdF9maWxlX3NpemVzKCBvZmY2NF90LCAgb2ZmNjRfdCk7Cm9mZjY0X3QgZ2V0X25leHRfcmVjb3JkX3NpemUob2ZmNjRfdCk7CnZvaWQgYWRkX3JlY29yZF9zaXplKG9mZjY0X3QpOwp2b2lkIGluaXRfcmVjb3JkX3NpemVzKCBvZmY2NF90LCAgb2ZmNjRfdCk7CnZvaWQgZGVsX3JlY29yZF9zaXplcyggdm9pZCApOwp2b2lkIGRvX3NwZWVkX2NoZWNrKGludCk7CiNlbHNlCnZvaWQgZG9fc3BlZWRfY2hlY2soKTsKI2lmICFkZWZpbmVkKGxpbnV4KQpjaGFyICpnZXRlbnYoKTsKY2hhciAqaW5ldF9udG9hKCk7CmludCBzeXN0ZW0oKTsKI2VuZGlmCnZvaWQgbXlfbmFwKCk7CmludCB0aHJlYWRfZXhpdCgpOwp2b2lkIGNsb3NlX3hscygpOwp2b2lkIGRvX2xhYmVsKCk7CmludCBjcmVhdGVfeGxzKCk7CnZvaWQgZG9fZmxvYXQoKTsKI2lmZGVmIEFTWU5DX0lPCnZvaWQgYXN5bmNfcmVsZWFzZSgpOwpzaXplX3QgYXN5bmNfd3JpdGUoKTsKc2l6ZV90IGFzeW5jX3dyaXRlX25vX2NvcHkoKTsKaW50IGFzeW5jX3JlYWQoKTsKaW50IGFzeW5jX3JlYWRfbm9fY29weSgpOwojZW5kaWYKaW50IG15bG9ja2YoKTsKaW50IG15bG9ja3IoKTsKaW50IHJhbmQoKTsKdm9pZCBzcmFuZCgpOwppbnQgZ2V0X2NsaWVudF9pbmZvKCk7CnZvaWQgZXhpdCgpOwp2b2lkIGZpbmRfcmVtb3RlX3NoZWxsKCk7CnZvaWQgdHJhal92ZXJzKCk7CnZvaWQgcl90cmFqX3NpemUoKTsKbG9uZyBsb25nIHdfdHJhal9zaXplKCk7CkZJTEUgKm9wZW5fd190cmFqKCk7CkZJTEUgKm9wZW5fcl90cmFqKCk7CnZvaWQgY3JlYXRlX3RlbXAoKTsKdm9pZCBmaWxsX2J1ZmZlcigpOwpjaGFyICphbGxvY19tZW0oKTsKdm9pZCAqKHRocmVhZF9yd3JpdGVfdGVzdCkoKTsKdm9pZCAqKHRocmVhZF93cml0ZV90ZXN0KSgpOwp2b2lkICoodGhyZWFkX3JlYWRfdGVzdCkoKTsKdm9pZCAqKHRocmVhZF9jbGVhbnVwX3Rlc3QpKCk7CnZvaWQgKih0aHJlYWRfcmFucmVhZF90ZXN0KSgpOwp2b2lkICoodGhyZWFkX21peF90ZXN0KSgpOwp2b2lkICoodGhyZWFkX3JhbndyaXRlX3Rlc3QpKCk7CnZvaWQgKih0aHJlYWRfcnJlYWRfdGVzdCkoKTsKdm9pZCAqKHRocmVhZF9yZXZlcnNlX3JlYWRfdGVzdCkoKTsKdm9pZCAqKHRocmVhZF9zdHJpZGVfcmVhZF90ZXN0KSgpOwp2b2lkICoodGhyZWFkX3NldF9iYXNlKSgpOwp2b2lkICoodGhyZWFkX2pvaW4pKCk7CnZvaWQgZGlzcnVwdCgpOwpsb25nIGxvbmcgZ2V0X3RyYWooKTsKdm9pZCBpbml0X2ZpbGVfc2l6ZXMoKTsKb2ZmNjRfdCBnZXRfbmV4dF9maWxlX3NpemUoKTsKdm9pZCBhZGRfZmlsZV9zaXplKCk7CnZvaWQgaW5pdF9yZWNvcmRfc2l6ZXMoKTsKb2ZmNjRfdCBnZXRfbmV4dF9yZWNvcmRfc2l6ZSgpOwp2b2lkIGFkZF9yZWNvcmRfc2l6ZSgpOwp2b2lkIGR1bXBfY3B1dGltZXMoKTsKc3RhdGljIGRvdWJsZSBjcHVfdXRpbCgpOwp2b2lkIGRlbF9yZWNvcmRfc2l6ZXMoKTsKI2VuZGlmCgojaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRQojZGVmaW5lIElfTFNFRUsoeCx5LHopIAlsc2VlazY0KHgsKG9mZjY0X3QpKHkpLHopCiNkZWZpbmUgSV9PUEVOKHgseSx6KSAJb3BlbjY0KHgsKGludCkoeSksKGludCkoeikpCiNkZWZpbmUgSV9DUkVBVCh4LHkpIAljcmVhdDY0KHgsKGludCkoeSkpCiNkZWZpbmUgSV9GT1BFTih4LHkpIAlmb3BlbjY0KHgseSkKI2RlZmluZSBJX1NUQVQoeCx5KSAJc3RhdDY0KHgseSkKI2lmZGVmIEhBVkVfUFJFQUQKI2RlZmluZSBJX1BSRUFEKGEsYixjLGQpCXByZWFkNjQoYSxiLChzaXplX3QpKGMpLChvZmY2NF90KShkKSkKI2RlZmluZSBJX1BXUklURShhLGIsYyxkKQlwd3JpdGU2NChhLGIsKHNpemVfdCkoYyksKG9mZjY0X3QpKGQpKQojZW5kaWYKI2RlZmluZSBJX01NQVAoYSxiLGMsZCxlLGYpIAltbWFwNjQoKHZvaWQgKikoYSksKHNpemVfdCkoYiksKGludCkoYyksKGludCkoZCksKGludCkoZSksKG9mZjY0X3QpKGYpKQojZWxzZQojZGVmaW5lIElfTFNFRUsoeCx5LHopIAlsc2Vlayh4LChvZmZfdCkoeSkseikKI2RlZmluZSBJX09QRU4oeCx5LHopIAlvcGVuKHgsKGludCkoeSksKGludCkoeikpCiNkZWZpbmUgSV9DUkVBVCh4LHkpIAljcmVhdCh4LChpbnQpKHkpKQojZGVmaW5lIElfRk9QRU4oeCx5KSAJZm9wZW4oeCx5KQojZGVmaW5lIElfU1RBVCh4LHkpIAlzdGF0KHgseSkKI2lmZGVmIEhBVkVfUFJFQUQKI2RlZmluZSBJX1BSRUFEKGEsYixjLGQpCXByZWFkKGEsYiwoc2l6ZV90KShjKSwob2ZmX3QpKGQpKQojZGVmaW5lIElfUFdSSVRFKGEsYixjLGQpCXB3cml0ZShhLGIsKHNpemVfdCkoYyksKG9mZl90KShkKSkKI2VuZGlmCiNkZWZpbmUgSV9NTUFQKGEsYixjLGQsZSxmKSAJbW1hcCgodm9pZCAqKShhKSwoc2l6ZV90KShiKSwoaW50KShjKSwoaW50KShkKSwoaW50KShlKSwob2ZmX3QpKGYpKQojZW5kaWYKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaGUgbGlzdCBvZiB0ZXN0cyB0byBiZSBjYWxsZWQuCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwp2b2lkICgqZnVuY1tdKSgpID0geyAKCQkJd3JpdGVfcGVyZl90ZXN0LCAKCQkJcmVhZF9wZXJmX3Rlc3QsCgkJCXJhbmRvbV9wZXJmX3Rlc3QsCgkJCXJldmVyc2VfcGVyZl90ZXN0LAoJCQlyZXdyaXRlcmVjX3BlcmZfdGVzdCwKCQkJcmVhZF9zdHJpZGVfcGVyZl90ZXN0LAoJCQlmd3JpdGVfcGVyZl90ZXN0LAoJCQlmcmVhZF9wZXJmX3Rlc3QsCgkJCW1peF9wZXJmX3Rlc3QgCiNpZmRlZiBIQVZFX1BSRUFECgkJCSwKCQkJcHdyaXRlX3BlcmZfdGVzdCwKCQkJcHJlYWRfcGVyZl90ZXN0CiNpZmRlZiBIQVZFX1BSRUFEVgoJCQksCgkJCXB3cml0ZXZfcGVyZl90ZXN0LAoJCQlwcmVhZHZfcGVyZl90ZXN0CiNlbmRpZiAvKiBIQVZFX1BSRUFEViAqLwojZW5kaWYgLyogSEFWRV9QUkVBRCAqLwoJfTsKCi8qCmNoYXIgKnRlc3Rfb3V0cHV0W10gPSB7IiAgICAgICAgICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICAgICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICAgIFxuIiB9OwoqLwpjaGFyICp0ZXN0X291dHB1dFtdID0geyIgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgIiwKCQkgICAgICAiICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgICAgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgICAgICAgICAiLAoJCSAgICAgICIiLAoJCSAgICAgICIgICAgICAgICAgICAgICAgICIsCgkJICAgICAgIiAgICAgICAgICAgICAgICAgICAiLAoJCSAgICAgICIgICAgICAgICAgICAgICAgICAgXG4iIH07CmxvbmcgbG9uZyB0ZXN0X3NvdXRwdXRbXSA9IHsyLDIsMiwxLDEsMSwyLDIsMiwyLDIsMn07CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCSAgKi8KLyogICAgR0xPQkFMIFZBUklBQkxFUwkJCQkJICAgICAgICAgICovCi8qCQkJCQkJCQkgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogU2V0IHRoZSBzaXplIG9mIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBjaGlsZHJlbgogKiB0byBwdXQgdGhlaXIgcmVzdWx0cy4KICovCiNkZWZpbmUgU0hNU0laRSAgKCgoIHNpemVvZihzdHJ1Y3QgY2hpbGRfc3RhdHMpICogTUFYU1RSRUFNUykgKSs0MDk2ICkKLyoKICogUG9pbnRlciB0byB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgogKi8KVk9MQVRJTEUgc3RydWN0IGNoaWxkX3N0YXRzICpzaG1hZGRyOwpkb3VibGUgdG90YWx0aW1lLHRvdGFsX3RpbWUsIHRlbXBfdGltZSAsdG90YWxfa2lsb3M7Cm9mZjY0X3QgcmVwb3J0X2FycmF5W01BWF9YXVtNQVhfWV07CmRvdWJsZSByZXBvcnRfZGFycmF5W01BWF9YXVtNQVhTVFJFQU1TXTsKZG91YmxlIHRpbWVfcmVzLGNwdXRpbWVfcmVzOwpsb25nIGxvbmcgdGhyb3VnaHB1dF9hcnJheVtNQVhfWF07CS8qIEZpbGVzaXplICYgcmVjb3JkIHNpemUgYXJlIGNvbnN0YW50cyAqLwpzaG9ydCBjdXJyZW50X3gsIGN1cnJlbnRfeTsKbG9uZyBsb25nIG9yaWdfc2l6ZTsKbG9uZyBsb25nIG1heF94LCBtYXhfeTsKdW5zaWduZWQgbG9uZyBsb25nIGdvb2RraWxvczsKb2ZmNjRfdCBraWxvYnl0ZXM2NCA9IChvZmY2NF90KUtJTE9CWVRFUzsKbG9uZyBsb25nIGdvb2RyZWNsOwpvZmY2NF90IG9mZnNldCA9IDA7ICAgICAgICAgICAgICAgLypvZmZzZXQgZm9yIHJhbmRvbSBJL08gKi8Kb2ZmNjRfdCBvZmZzZXQ2NCA9IDA7ICAgICAgICAgICAgICAgLypvZmZzZXQgZm9yIHJhbmRvbSBJL08gKi8Kb2ZmNjRfdCBmaWxlYnl0ZXM2NDsKb2ZmNjRfdCByX3JhbmdlWzEwMF07Cm9mZjY0X3Qgc19yYW5nZVsxMDBdOwppbnQgdF9yYW5nZVsxMDBdOwppbnQgdF9jb3VudCA9IDA7CmludCByX2NvdW50LHNfY291bnQ7CmNoYXIgKmJhcnJheVtNQVhTVFJFQU1TXTsKY2hhciAqaGF2ZXNobTsKZXh0ZXJuIGludCBvcHRpbmQ7CmxvbmcgbG9uZyBvbmV0aW1lLCBhdXRvX21vZGUsIHNmZCwgbXVsdGlfYnVmZmVyOwppbnQgZmQ7CmludCBzcF9tc2ZkLHNwX21yZmQsc3BfY3NmZCxzcF9jcmZkOwppbnQgYmVnaW5fcHJvYyxudW1fcHJvY2Vzc29ycyxpb3pfcHJvY2Vzc29yX2JpbmQ7CmxvbmcgbG9uZyByZXNfcHJvYixyZWNfcHJvYjsKY2hhciBzaWxlbnQscmVhZF9zeW5jOwpjaGFyIG1hc3Rlcl9pb3pvbmUsIGNsaWVudF9pb3pvbmUsZGlzdHJpYnV0ZWQ7CmludCBiaWZfZmQsc19jb3VudDsKaW50IGJpZl9yb3csYmlmX2NvbHVtbjsKaW50IGRlZHVwX21zZWVkID0gMTsKY2hhciBhZmxhZywgRWZsYWcsIGhmbGFnLCBSZmxhZywgcmZsYWcsIHNmbGFnOwpjaGFyIGRpYWdfdixzZW50X3N0b3AsZGVkdXAsZGVkdXBfaW50ZXJpb3IsZGVkdXBfY29tcHJlc3M7CmNoYXIgKmRlZHVwX2lidWY7CmNoYXIgKmRlZHVwX3RlbXA7CmNoYXIgYmlmX2ZsYWc7CmludCBybG9ja2luZzsKaW50IHNoYXJlX2ZpbGU7CmNoYXIgZ2ZsYWcsbmZsYWc7CmNoYXIgeWZsYWcscWZsYWc7CiNpZmRlZiBXaW5kb3dzCmNoYXIgKmJ1aWxkX25hbWUgPSAiV2luZG93cyI7CiNlbHNlCmNoYXIgKmJ1aWxkX25hbWUgPSBOQU1FOwojZW5kaWYKY2hhciBpbW9uX3N0YXJ0WzI1Nl0saW1vbl9zdG9wWzI1Nl07IApjaGFyIGltb25fc3luYzsKY2hhciB0cmZsYWc7IApjaGFyIGNwdXV0aWxmbGFnOwpjaGFyIHNlcV9taXg7CmxvbmcgYmFzZV90aW1lOwpsb25nIGxvbmcgbWludCwgbWF4dDsgCmxvbmcgbG9uZyB3X3RyYWpfb3BzLCByX3RyYWpfb3BzLCB3X3RyYWpfZnNpemUscl90cmFqX2ZzaXplOwpsb25nIGxvbmcgcl90cmFqX29wc19jb21wbGV0ZWQscl90cmFqX2J5dGVzX2NvbXBsZXRlZDsKbG9uZyBsb25nIHdfdHJhal9vcHNfY29tcGxldGVkLHdfdHJhal9ieXRlc19jb21wbGV0ZWQ7CmludCB3X3RyYWpfaXRlbXMsIHJfdHJhal9pdGVtczsKY2hhciBmZmxhZywgVWZsYWcsdWZsYWcsbGZsYWcsaW5jbHVkZV90ZmxhZzsgCnN0cnVjdCBydW50aW1lIHJ1bnRpbWVzIFtNQVhfWF0gW01BWF9ZXTsJLyogaW4gcGFyYWxsZWwgd2l0aCByZXBvcnRfYXJyYXlbXVtdICovCmxvbmcgbG9uZyBpbmNsdWRlX3Rlc3RbNTBdOwpsb25nIGxvbmcgaW5jbHVkZV9tYXNrOwpjaGFyIFJXT05MWWZsYWcsIE5PQ1JPU1NmbGFnOwkJLyphdXRvIG1vZGUgMiAtIGtjb2xsaW5zIDgtMjEtOTYqLwpjaGFyIG1mZmxhZzsKbG9uZyBsb25nIHN0YXR1cywgeCwgeSwgY2hpbGRpZHNbTUFYU1RSRUFNUysxXSwgbXlpZCwgbnVtX2NoaWxkOwppbnQgcGN0X3JlYWQsc3BlZWRfY29kZTsKI2lmbmRlZiBOT19USFJFQURTCnB0aHJlYWRfdCBwX2NoaWxkaWRzW01BWFNUUkVBTVMrMV07CiNlbmRpZgpvZmY2NF90IG5leHQ2NDsKY2hhciB3b2xfb3BlbmVkLCByb2xfb3BlbmVkOwpGSUxFICp3cWZkLCpyd3FmZCwqcnFmZCwqcnJxZmQ7CgpleHRlcm4gY2hhciAqb3B0YXJnOwojaWZuZGVmIF9fQUlYX18KbG9uZyBsb25nIHJldDsKI2Vsc2UKc2hvcnQgcmV0OwojZW5kaWYKc3RydWN0IHNpemVfZW50cnkgewoJc3RydWN0IHNpemVfZW50cnkgKm5leHQ7CglvZmY2NF90IHNpemU7Cn07CnN0cnVjdCBzaXplX2VudHJ5ICpzaXplX2xpc3Q9MDsKc3RydWN0IHNpemVfZW50cnkgKnJlY19zaXplX2xpc3Q9MDsKb2ZmNjRfdCBtYXhpbXVtX2ZpbGVfc2l6ZTsKb2ZmNjRfdCBtaW5pbXVtX2ZpbGVfc2l6ZTsKCmNoYXIgYmlmX2ZpbGVuYW1lIFtNQVhOQU1FU0laRV07ICAgICAgICAgICAvKiBuYW1lIG9mIGJpZmYgZmlsZSAgICAgICovCmNoYXIgZmlsZW5hbWUgW01BWE5BTUVTSVpFXTsgICAgICAgICAgICAgICAvKiBuYW1lIG9mIHRlbXBvcmFyeSBmaWxlICovCmNoYXIgbW91bnRuYW1lIFtNQVhOQU1FU0laRV07ICAgICAgICAgICAgICAvKiBuYW1lIG9mIGRldmljZSAgICAgICAgICovCmNoYXIgZHVtbXlmaWxlIFtNQVhTVFJFQU1TXVtNQVhOQU1FU0laRV07ICAvKiBuYW1lIG9mIGR1bW15IGZpbGUgICAgICovCmNoYXIgZHVtbXlmaWxlMSBbTUFYTkFNRVNJWkVdOyAgICAgICAgICAgICAvKiBuYW1lIG9mIGR1bW15IGZpbGUgICAgICovCmNoYXIgKmZpbGVhcnJheVtNQVhTVFJFQU1TXTsJCSAgIC8qIGFycmF5IG9mIGZpbGUgbmFtZXMgICAgKi8KY2hhciB0ZmlsZVtdID0gImlvem9uZSI7CmNoYXIgKmJ1ZmZlciwqYnVmZmVyMSwgKm1idWZmZXIsKm1haW5idWZmZXI7CkZJTEUgKnBpLCpyX3RyYWpfZmQsKndfdHJhal9mZDsKVk9MQVRJTEUgY2hhciAqcGJ1ZmZlcjsKY2hhciAqZGVmYXVsdF9maWxlbmFtZT0iaW96b25lLnRtcCI7IC8qZGVmYXVsdCBuYW1lIG9mIHRlbXBvcmFyeSBmaWxlKi8KVk9MQVRJTEUgY2hhciBzdG9wdGltZTsKY2hhciBDZmxhZzsKY2hhciB1c2VfdGhyZWFkID0gMDsKbG9uZyBsb25nIGRlYnVnMT0wOwkJCmxvbmcgbG9uZyBkZWJ1Zz0wOwp1bnNpZ25lZCBsb25nIGNhY2hlX3NpemU9Q0FDSEVfU0laRTsKdW5zaWduZWQgbG9uZyBjYWNoZV9saW5lX3NpemU9Q0FDSEVfTElORV9TSVpFOwpsb25nIGxvbmcgKnBzdGF0dXM7Cm9mZjY0X3QgbWluX2ZpbGVfc2l6ZSA9IEtJTE9CWVRFU19TVEFSVDsKb2ZmNjRfdCBtYXhfZmlsZV9zaXplID0gS0lMT0JZVEVTX0VORDsKbG9uZyBsb25nIG1pbl9yZWNfc2l6ZSA9IFJFQ0xFTl9TVEFSVDsKbG9uZyBsb25nIG1heF9yZWNfc2l6ZSA9IFJFQ0xFTl9FTkQ7CmxvbmcgbG9uZyBvcmlnX21pbl9yZWNfc2l6ZSA9IFJFQ0xFTl9TVEFSVDsKbG9uZyBsb25nIG9yaWdfbWF4X3JlY19zaXplID0gUkVDTEVOX0VORDsKbG9uZyBsb25nIHhvdmVyID0gQ1JPU1NPVkVSOwpjaGFyICp0aHJvdWdocHV0X3Rlc3RzW10gPSB7IkluaXRpYWwgd3JpdGUiLCJSZXdyaXRlIiwiUmVhZCIsIlJlLXJlYWQiLAoJIlJldmVyc2UgUmVhZCIsIlN0cmlkZSByZWFkIiwiUmFuZG9tIHJlYWQiLCJNaXhlZCB3b3JrbG9hZCIsIlJhbmRvbSB3cml0ZSIsIlB3cml0ZSIsIlByZWFkIn07CmNoYXIgY29tbWFuZF9saW5lWzEwMjRdID0gIlwwIjsKI2lmZGVmIHVuaXgKZG91YmxlIHNjX2Nsa190Y2s7CiNlbmRpZgoKaW50IGFyZ2NzYXZlOwpjaGFyICoqYXJndnNhdmU7CmNoYXIgc3BsYXNoWzgwXVs4MF07CmludCBzcGxhc2hfbGluZTsKY2hhciBjbGllbnRfZmlsZW5hbWVbMjU2XTsKY2hhciByZW1vdGVfc2hlbGxbMjU2XTsKaW50IGNsaWVudF9lcnJvcjsKCmNoYXIgcGl0X2hvc3RuYW1lWzQwXTsKY2hhciBwaXRfc2VydmljZVs3XTsKCi8qIAogKiBIb3N0IHBvcnRzIHVzZWQgdG8gbGlzdGVuLCBhbmQgaGFuZGxlIGVycm9ycy4KICovCiNkZWZpbmUgSE9TVF9MSVNUX1BPUlQgMjAwMDAKI2RlZmluZSBIT1NUX0VTRU5EX1BPUlQgKEhPU1RfTElTVF9QT1JUK01BWFNUUkVBTVMpCiNkZWZpbmUgSE9TVF9BU0VORF9QT1JUIChIT1NUX0VTRU5EX1BPUlQrTUFYU1RSRUFNUykKCi8qIAogKiBDaGlsZHMgcG9ydHMgdXNlZCB0byBsaXN0ZW4sIGFuZCBoYW5kbGUgZXJyb3JzLgogKi8KI2RlZmluZSBDSElMRF9FU0VORF9QT1JUIChIT1NUX0FTRU5EX1BPUlQrTUFYU1RSRUFNUykKI2RlZmluZSBDSElMRF9MSVNUX1BPUlQgKENISUxEX0VTRU5EX1BPUlQrTUFYU1RSRUFNUykKCi8qIENoaWxkcyBhc3luYyBtZXNzYWdlIHBvcnQuIFVzZWQgZm9yIHN0b3AgZmxhZyBhbmQgdGVybWluYXRlICovCiNkZWZpbmUgQ0hJTERfQUxJU1RfUE9SVCAoQ0hJTERfTElTVF9QT1JUK01BWFNUUkVBTVMpCgovKiBQb3J0cyBmb3IgdGhlIG5ldHdvcmsgc3BlZWQgY29kZSAqLwojZGVmaW5lIFNQX0NISUxEX0xJU1RFTl9QT1JUIDMxMDAwCiNkZWZpbmUgU1BfQ0hJTERfRVNFTkRfUE9SVCAoU1BfQ0hJTERfTElTVEVOX1BPUlQrMTApCiNkZWZpbmUgU1BfTUFTVEVSX0xJU1RFTl9QT1JUIChTUF9DSElMRF9FU0VORF9QT1JUKzEwKQojZGVmaW5lIFNQX01BU1RFUl9FU0VORF9QT1JUIChTUF9NQVNURVJfTElTVEVOX1BPUlQrMTApCiNkZWZpbmUgU1BfTUFTVEVSX1JFU1VMVFNfUE9SVCAoU1BfTUFTVEVSX0VTRU5EX1BPUlQrMTApCgoKI2RlZmluZSBUSFJFQURfV1JJVEVfVEVTVCAxCiNkZWZpbmUgVEhSRUFEX1JFV1JJVEVfVEVTVCAyCiNkZWZpbmUgVEhSRUFEX1JFQURfVEVTVCAzCiNkZWZpbmUgVEhSRUFEX1JFUkVBRF9URVNUIDQKI2RlZmluZSBUSFJFQURfU1RSSURFX1RFU1QgNQojZGVmaW5lIFRIUkVBRF9SQU5ET01fUkVBRF9URVNUIDYKI2RlZmluZSBUSFJFQURfUkFORE9NX1dSSVRFX1RFU1QgNwojZGVmaW5lIFRIUkVBRF9SRVZFUlNFX1JFQURfVEVTVCA4CiNkZWZpbmUgVEhSRUFEX1JBTkRPTV9NSVhfVEVTVCA5CiNkZWZpbmUgVEhSRUFEX1BXUklURV9URVNUIDEwCiNkZWZpbmUgVEhSRUFEX1BSRUFEX1RFU1QgMTEKI2RlZmluZSBUSFJFQURfQ0xFQU5VUF9URVNUIDEyCgovKgogKiBDaGlsZCBzdGF0ZXMgdGhhdCB0aGUgbWFzdGVyIGlzIHRyYWNraW5nLgogKiBUaGUgbWFzdGVyIHVzZXMgdGhlc2UgdG8gZGV0ZXJtaW5lIGhvdyB0byBzaHV0ZG93bgogKiB0aGUgY2xpZW50cyB3aGVuIHNvbWUgZm9vbCBoaXRzIGNvbnRyb2wtQy4KICovCiNkZWZpbmUgQ19TVEFURV9aRVJPIDEKI2RlZmluZSBDX1NUQVRFX1dBSVRfV0hPIDIKI2RlZmluZSBDX1NUQVRFX1dBSVRfQkFSUklFUiAzCgoKaW50IGNfcG9ydCxhX3BvcnQ7IC8qIHBvcnQgbnVtYmVyICovCmludCBjaGlsZF9wb3J0OyAvKiBWaXJ0dWFsaXplZCBkdWUgdG8gZm9yayAqLwppbnQgY2hpbGRfYXN5bmNfcG9ydDsgLyogVmlydHVhbGl6ZWQgZHVlIHRvIGZvcmsgKi8KaW50IGNsaWVudF9saXN0ZW5fcGlkOyAvKiBWaXJ0dWFsaXplZCBkdWUgdG8gZm9yayAqLwppbnQgbWFzdGVyX2pvaW5fY291bnQ7IC8qIEhvdyBtYW55IGNoaWxkcmVuIGhhdmUgam9pbmVkICovCmludCBsX3NvY2ssc19zb2NrLGxfYXN5bmNfc29jazsgLyogU29ja2V0cyBmb3IgbGlzdGVuaW5nICovCmNoYXIgbWFzdGVyX3Jjdl9idWZbNDA5Nl07IC8qIE1hc3RlcidzIHJlY2VpdmUgYnVmZmVyICovCmludCBtYXN0ZXJfbGlzdGVuX3BpZDsgLyogUGlkIG9mIHRoZSBtYXN0ZXIncyBhc3luYyBsaXN0ZW5lciBwcm9jICovCmNoYXIgbWFzdGVyX3NlbmRfYnVmWzQwOTZdOyAvKiBNYXN0ZXIncyBzZW5kIGJ1ZmZlciAqLwpjaGFyIGNoaWxkX3Jjdl9idWZbNDA5Nl07IC8qIENoaWxkJ3MgcmVjZWl2ZSBidWZmZXIgKi8KY2hhciBjaGlsZF9hc3luY19yY3ZfYnVmWzQwOTZdOyAvKiBDaGlsZCdzIGFzeW5jIHJlY2lldmUgYnVmZmVyICovCmNoYXIgY2hpbGRfc2VuZF9idWZbNDA5Nl07IC8qIENoaWxkJ3Mgc2VuZCBidWZmZXIgKi8KaW50IGNoaWxkX3NlbmRfc29ja2V0OyAvKiBDaGlsZCdzIHNlbmQgc29ja2V0ICovCmludCBjaGlsZF9saXN0ZW5fc29ja2V0OyAvKiBDaGlsZCdzIGxpc3RlbmVyIHNvY2tldCAqLwppbnQgY2hpbGRfbGlzdGVuX3NvY2tldF9hc3luYzsgLyogQ2hpbGQncyBhc3luYyBsaXN0ZW5lciBzb2NrZXQgKi8KaW50IG1hc3Rlcl9zZW5kX3NvY2tldDsgLyogTmVlZHMgdG8gYmUgYW4gYXJyYXkuIE9uZSBmb3IgZWFjaCBjaGlsZCovCmludCBtYXN0ZXJfc2VuZF9zb2NrZXRzW01BWFNUUkVBTVNdOyAvKiBOZWVkcyB0byBiZSBhbiBhcnJheS4gT25lIGZvciBlYWNoIGNoaWxkKi8KaW50IG1hc3Rlcl9zZW5kX2FzeW5jX3NvY2tldHNbTUFYU1RSRUFNU107IC8qIE5lZWRzIHRvIGJlIGFuIGFycmF5LiBPbmUgZm9yIGVhY2ggY2hpbGQqLwppbnQgbWFzdGVyX2xpc3Rlbl9wb3J0OyAvKiBNYXN0ZXIncyBsaXN0ZW5lciBwb3J0IG51bWJlciAqLwppbnQgbWFzdGVyX2xpc3Rlbl9zb2NrZXQ7IC8qIE1hc3RlcidzIGxpc3RlbmVyIHNvY2tldCAqLwppbnQgY2xpZW50c19mb3VuZDsgLyogTnVtYmVyIG9mIGNsaWVudHMgZm91bmQgaW4gdGhlIGNsaWVudCBmaWxlICovCkZJTEUgKm5ld3N0ZGluLCAqbmV3c3Rkb3V0LCAqbmV3c3RkZXJyOyAvKiB1c2VkIGZvciBkZWJ1ZyBpbiBjbHVzdGVyIG1vZGUuKi8KY2hhciB0b3V0cHV0WzIwXVsyMF07IC8qIFVzZWQgdG8gaGVscCBmb3JtYXQgdGhlIG91dHB1dCAqLwppbnQgdG91dHB1dGluZGV4OyAvKiBJbmRleCB0byB0aGUgY3VycmVudCBvdXRwdXQgbGluZSAqLwppbnQgY2RlYnVnID0gMDsgLyogVXNlIHRvIHR1cm4gb24gY2hpbGQvY2xpZW50IGRlYnVnZ2luZyBpbiBjbHVzdGVyIG1vZGUuICovCmludCBtZGVidWcgPSAwOyAvKiBVc2UgdG8gdHVybiBvbiBtYXN0ZXIgZGVidWcgaW4gY2x1c3RlciBtb2RlICovCmludCBhZ2dmbGFnOyAvKiBVc2VkIHRvIGluZGljYXRlIGNvbnN0YW50IGFnZ3JlZ2F0ZSBkYXRhIHNldCBzaXplICovCnN0cnVjdCBzb2NrYWRkcl9pbiBjaGlsZF9zeW5jX3NvY2ssIGNoaWxkX2FzeW5jX3NvY2s7CgovKgogKiBDaGFuZ2UgdGhpcyB3aGVuZXZlciB5b3UgY2hhbmdlIHRoZSBtZXNzYWdlIGZvcm1hdCBvZiBtYXN0ZXIgb3IgY2xpZW50LgogKi8KaW50IHByb3RvX3ZlcnNpb24gPSAyMzsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRlbGUtcG9ydCB6b25lLiBUaGVzZSB2YXJpYWJsZXMgYXJlIHVwZGF0ZWQgb24gdGhlIGNsaWVudHMgd2hlbiBvbmUgaXMgICAgICovCi8qIHVzaW5nIGNsdXN0ZXIgbW9kZS4gKC0rbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIERvIG5vdCB0b3VjaCB0aGVzZSB1bmxlc3MgeW91IGhhdmUgYmVjb21lIG9uZSB3aXRoIHRoZSB1bml2ZXJzZSAhISAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmNoYXIgY29udHJvbGxpbmdfaG9zdF9uYW1lWzEwMF07CnN0cnVjdCBjaGlsZF9pZGVudCB7CgljaGFyIGNoaWxkX25hbWVbMTAwXTsKCWNoYXIgd29ya2RpclsyMDBdOwoJY2hhciBleGVjdXRlX3BhdGhbMjAwXTsKCWNoYXIgZmlsZV9uYW1lWzIwMF07CglpbnQgc3RhdGU7CglpbnQgY2hpbGRfbnVtYmVyOwoJaW50IGNoaWxkX3BvcnQ7CglpbnQgY2hpbGRfYXN5bmNfcG9ydDsKCWludCBtYXN0ZXJfc29ja2V0X251bTsKCWludCBtYXN0ZXJfYXN5bmNfc29ja2V0X251bTsKfWNoaWxkX2lkZW50c1tNQVhTVFJFQU1TXTsKaW50IEtwbHVzX3JlYWRlcnM7CmNoYXIgd3JpdGVfdHJhal9maWxlbmFtZSBbTUFYTkFNRVNJWkVdOyAgICAgLyogbmFtZSBvZiB3cml0ZSB0ZWxlbWV0cnkgZmlsZSAqLwpjaGFyIHJlYWRfdHJhal9maWxlbmFtZSBbTUFYTkFNRVNJWkVdOyAgICAvKiBuYW1lIG9mIHJlYWQgdGVsZW1ldHJ5IGZpbGUgICovCmNoYXIgb2ZsYWcsamZsYWcsa19mbGFnLGhfZmxhZyxtZmxhZyxwZmxhZyx1bmJ1ZmZlcmVkLEtwbHVzX2ZsYWc7CmNoYXIgbm9yZXRlc3Q7CmNoYXIgbm90cnVuY2F0ZTsgICAvKiB0dXJuIG9mZiB0cnVuY2F0aW9uIG9mIGZpbGVzICovCmNoYXIgYXN5bmNfZmxhZyxzdHJpZGVfZmxhZyxtbWFwZmxhZyxtbWFwYXNmbGFnLG1tYXBzc2ZsYWcsbW1hcG5zZmxhZyxtbWFwX21peDsKY2hhciB2ZXJpZnkgPSAxOwppbnQgcmVzdGY7CmNoYXIgc3ZlcmlmeSA9IDE7CmNoYXIgb2RzeW5jID0gMDsKY2hhciBRX2ZsYWcsT1BTX2ZsYWc7CmNoYXIgTF9mbGFnPTA7CmNoYXIgbm9fY29weV9mbGFnLGluY2x1ZGVfY2xvc2UsaW5jbHVkZV9mbHVzaDsKY2hhciBkaXNydXB0X2ZsYWcsY29tcHV0ZV9mbGFnLHhmbGFnLFpfZmxhZywgWF9mbGFnOwppbnQgbm9fdW5saW5rID0gMDsKaW50IG5vX3dyaXRlID0gMDsKaW50IHJfdHJhal9mbGFnLHdfdHJhal9mbGFnOwpjaGFyIE1TX2ZsYWc7CmludCBhZHZpc2Vfb3AsYWR2aXNlX2ZsYWc7CmludCBkaXJlY3RfZmxhZzsKaW50IGN1cnJlbnRfY2xpZW50X251bWJlcjsKbG9uZyBsb25nIGNoaWQ7CmludCBmaWxlX2xvY2s7CnVuc2lnbmVkIGludCBwYXR0ZXJuOwpsb25nIGxvbmcgc3RyaWRlID0gU1RSSURFOwpsb25nIGxvbmcgZGVsYXkscHVyZ2UsZmV0Y2hvbjsKb2ZmNjRfdCAgbnVtcmVjczY0ID0gKG9mZjY0X3QpTlVNUkVDUzsKbG9uZyBsb25nIHJlY2xlbiA9IFJFQ0xFTjsKbG9uZyBsb25nIGRlbGF5X3N0YXJ0LGRlcHRoOwpWT0xBVElMRSBjaGFyICpzdG9wX2ZsYWc7CQkvKiBVc2VkIHRvIHN0b3AgYWxsIGNoaWxkcmVuICovCmZsb2F0IGNvbXB1dGVfdGltZTsKaW50IG11bHRpcGxpZXIgPSBNVUxUSVBMSUVSOwpsb25nIGxvbmcgcmVzdF92YWw7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCglIQU5ETEUgaGFuZDsKI2VuZGlmCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBFbmQgb2YgVGVsZS1wb3J0IHpvbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qIAogKiBQcm90b3R5cGVzCiAqIFNvcnQgb2YuLi4gRnVsbCBwcm90b3R5cGVzIGJyZWFrIG5vbi1hbnNpIEMgY29tcGlsZXJzLiBObyBwcm90b3MgaXMgCiAqIGEgYml0IHNsb3BweSwgc28gdGhlIGNvbXByb21pc2UgaXMgdGhpcy4KICovCnZvaWQgY2hpbGRfc2VuZCgpOwppbnQgc3RhcnRfY2hpbGRfc2VuZCgpOwppbnQgc3RhcnRfY2hpbGRfbGlzdGVuKCk7CmludCBzdGFydF9jaGlsZF9saXN0ZW5fYXN5bmMoKTsKdm9pZCBzdGFydF9jaGlsZF9saXN0ZW5fbG9vcCgpOwp2b2lkIGNoaWxkX2xpc3RlbigpOwp2b2lkIGNoaWxkX2xpc3Rlbl9hc3luYygpOwp2b2lkIHN0b3BfY2hpbGRfc2VuZCgpOwp2b2lkIHN0b3BfY2hpbGRfbGlzdGVuKCk7CnZvaWQgY2xlYW51cF9jb21tKCk7CnZvaWQgbWFzdGVyX3NlbmQoKTsKaW50IHN0YXJ0X21hc3Rlcl9zZW5kKCk7CmludCBzdGFydF9tYXN0ZXJfbGlzdGVuKCk7CmludCBjaGVja19maWxlbmFtZSgpOwp2b2lkIG1hc3Rlcl9saXN0ZW4oKTsKdm9pZCBzdG9wX21hc3Rlcl9zZW5kKCk7CnZvaWQgc3RvcF9tYXN0ZXJfbGlzdGVuKCk7CmxvbmcgbG9uZyBzdGFydF9jaGlsZF9wcm9jKCk7CmludCBwYXJzZV9jbGllbnRfbGluZSgpOwp2b2lkIHdhaXRfZGlzdF9qb2luKCk7CnZvaWQgdGVsbF9jaGlsZHJlbl9iZWdpbigpOwp2b2lkIHN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcCgpOwp2b2lkIHdhaXRfZm9yX21hc3Rlcl9nbygpOwp2b2lkIHRlbGxfbWFzdGVyX3JlYWR5KCk7CnZvaWQgc3RvcF9tYXN0ZXJfbGlzdGVuX2xvb3AoKTsKdm9pZCB0ZWxsX21hc3Rlcl9zdGF0cygpOwp2b2lkIGJlY29tZV9jbGllbnQoKTsKaW50IHBpY2tfY2xpZW50KCk7CmxvbmcgbG9uZyBzdGFydF9jaGlsZF9wcm9jKCk7CmludCBzdGFydF9tYXN0ZXJfc2VuZCgpOwp2b2lkIGNoaWxkX2xpc3RlbigpOwppbnQgc3RhcnRfY2hpbGRfbGlzdGVuKCk7CnZvaWQgc3RvcF9tYXN0ZXJfc2VuZCgpOwp2b2lkIHN0b3BfbWFzdGVyX2xpc3RlbigpOwp2b2lkIHN0b3BfY2hpbGRfc2VuZCgpOwp2b2lkIHN0b3BfY2hpbGRfbGlzdGVuKCk7CmludCBzdGFydF9jaGlsZF9zZW5kKCk7CnZvaWQgbWFzdGVyX3NlbmQoKTsKdm9pZCBjaGlsZF9zZW5kKCk7CnZvaWQgbWFzdGVyX2xpc3RlbigpOwppbnQgc3RhcnRfbWFzdGVyX2xpc3RlbigpOwp2b2lkIGNoaWxkX3JlbW92ZV9maWxlcygpOwp2b2lkIHRlcm1pbmF0ZV9jaGlsZF9hc3luYygpOwp2b2lkIGRpc3RyaWJ1dGVfc3RvcCgpOwp2b2lkIHNlbmRfc3RvcCgpOwp2b2lkIGNsZWFudXBfY2hpbGRyZW4oKTsKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCSovCi8qICAgTUFJTiAoKSAJCQkJCQkJKi8KLyoJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKaW50Cm1haW4oYXJnYyxhcmd2KSAKaW50IGFyZ2M7CmNoYXIgKiphcmd2Owp7CgoJbG9uZyBsb25nIGZpbGVpbmR4LGksdHZhbDsKCWxvbmcgbG9uZyBpbmQ7CglpbnQgcmV0OwoJRklMRSAqcGk7CgljaGFyIHJlcGx5W0lCVUZTSVpFXTsKCXVuc2lnbmVkIGNoYXIgaW5wX3BhdDsKCXRpbWVfdCB0aW1lX3J1bjsKCWNoYXIgKnBvcnQsKm0sKnN1YmFyZzsKCWludCBudW1fY2hpbGQxOwoJaW50IGNyZXQ7CglpbnQgYW53c2VyLGJpbmRfY3B1OwoKCWFud3Nlcj1iaW5kX2NwdT0wOwoJLyogVXNlZCB0byBtYWtlIGZyZWFkL2Z3cml0ZSBkbyBzb21ldGhpbmcgYmV0dGVyIHRoYW4gdGhlaXIgZGVmYXVsdHMgKi8KCXNldHZidWYoIHN0ZG91dCwgTlVMTCwgX0lPTkJGLCAoc2l6ZV90KSBOVUxMICk7CglzZXR2YnVmKCBzdGRlcnIsIE5VTEwsIF9JT05CRiwgKHNpemVfdCkgTlVMTCApOwoJCgkvKiBTYXZlIHRoZSBtYXN0ZXIncyBuYW1lICovCglnZXRob3N0bmFtZShjb250cm9sbGluZ19ob3N0X25hbWUsMTAwKTsKCgkvKiBUcnkgdG8gZmluZCB0aGUgYWN0dWFsIFZNIHBhZ2Ugc2l6ZSwgaWYgcG9zc2libGUgKi8KI2lmIGRlZmluZWQgKHNvbGFyaXMpIHx8IGRlZmluZWQgKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZCAobGludXgpIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZCAoSVJJWDY0KQojaWZuZGVmIF9fY29udmV4X3NwcAoJcGFnZV9zaXplPWdldHBhZ2VzaXplKCk7CiNlbmRpZgojZW5kaWYKCS8qIFRyeSB0byBmaW5kIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHRpY2tzIHBlciBzZWNvbmQgKi8KI2lmZGVmIHVuaXgKCXNjX2Nsa190Y2sgPSBjbGtfdGNrKCk7CiNlbmRpZgoJZm9yKGluZD0wO2luZDxNQVhTVFJFQU1TO2luZCsrKQoJCWZpbGVhcnJheVtpbmRdPShjaGFyICopdGZpbGU7CgoJLyogYmFzZV90aW1lPShsb25nKXRpbWVfc29fZmFyKCk7ICovCglteWlkPShsb25nIGxvbmcpZ2V0cGlkKCk7IAkvKiBzYXZlIHRoZSBtYXN0ZXIncyBQSUQgKi8KCS8qIGdldF9yZXNvbHV0aW9uKCk7IAkJIEdldCBjbG9jayByZXNvbHV0aW9uICovCgl0aW1lX3J1biA9IHRpbWUoMCk7CQkvKiBTdGFydCBhIHRpbWVyICovCgkodm9pZClmaW5kX2V4dGVybmFsX21vbihpbW9uX3N0YXJ0LCBpbW9uX3N0b3ApOwoKCS8qCiAJICogU2F2ZSB0aGUgc3BsYXNoIHNjcmVlbiBmb3IgbGF0ZXIgZGlzcGxheS4gV2hlbiBpbiBkaXN0cmlidXRlZCBuZXR3b3JrCgkgKiBtb2RlIHRoaXMgb3V0cHV0IGRvZXMgbm90IGdldCBkaXNwbGF5ZWQgb24gdGhlIGNsaWVudHMuCgkgKi8KCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdElvem9uZTogUGVyZm9ybWFuY2UgVGVzdCBvZiBGaWxlIEkvT1xuIik7CiAgICAJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0JXNcblx0JXNcbiIsIFRISVNWRVJTSU9OLE1PREUpOwogICAgCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFx0QnVpbGQ6ICVzIFxuXG4iLGJ1aWxkX25hbWUpOwogICAgCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdENvbnRyaWJ1dG9yczpXaWxsaWFtIE5vcmNvdHQsIERvbiBDYXBwcywgSXNvbSBDcmF3Zm9yZCwgS2lyYnkgQ29sbGluc1xuIik7CglzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQgICAgICAgICAgICAgQWwgU2xhdGVyLCBTY290dCBSaGluZSwgTWlrZSBXaXNuZXIsIEtlbiBHb3NzXG4iKTsKICAgIAlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQgICAgICAgICAgICAgU3RldmUgTGFuZGhlcnIsIEJyYWQgU21pdGgsIE1hcmsgS2VsbHksIERyLiBBbGFpbiBDWVIsXG4iKTsKICAgIAlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQgICAgICAgICAgICAgUmFuZHkgRHVubGFwLCBNYXJrIE1vbnRhZ3VlLCBEYW4gTWlsbGlvbiwgR2F2aW4gQnJlYm5lcixcbiIpOwogICAgCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdCAgICAgICAgICAgICBKZWFuLU1hcmMgWnVjY29uaSwgSmVmZiBCbG9tYmVyZywgQmVubnkgSGFsZXZ5LCBEYXZlIEJvb25lLFxuIik7CiAgICAJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0ICAgICAgICAgICAgIEVyaWsgSGFiYmluZ2EsIEtyaXMgU3RyZWNrZXIsIFdhbHRlciBXb25nLCBKb3NodWEgUm9vdCxcbiIpOwogICAgCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdCAgICAgICAgICAgICBGYWJyaWNlIEJhY2NoZWxsYSwgWmhlbmdodWEgWHVlLCBRaW4gTGkuXG5cbiIpOwoJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UnVuIGJlZ2FuOiAlc1xuIixjdGltZSgmdGltZV9ydW4pKTsKCWFyZ2NzYXZlPWFyZ2M7Cglhcmd2c2F2ZT1hcmd2OwoKICAgIAlzaWduYWwoU0lHSU5ULCBzaWduYWxfaGFuZGxlcik7CSAJLyogaGFuZGxlIHVzZXIgaW50ZXJydXB0ICovCiAgICAJc2lnbmFsKFNJR1RFUk0sIHNpZ25hbF9oYW5kbGVyKTsJLyogaGFuZGxlIGtpbGwgZnJvbSBzaGVsbCAqLwoKICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAgICAgICAgLyogQWxsb2NhdGUgYW5kIGFsaWduIGJ1ZmZlciB3aXRoIGJlZ2lubmluZyBvZiB0aGUgCSovCiAgICAgICAgLyogb24gY2hpcCBkYXRhIGNhY2hlLiAJCQkJCSovCiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKICAgICAJYnVmZmVyID0gKGNoYXIgKikgYWxsb2NfbWVtKChsb25nIGxvbmcpKE1BWEJVRkZFUlNJWkUgKyAoMiAqIGNhY2hlX3NpemUpKSwoaW50KTApOwoJaWYoYnVmZmVyID09IDApIHsKICAgICAgICAJcGVycm9yKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQ6Iik7CiAgICAgICAgCWV4aXQoMSk7CiAgICAgICAgfQoKI2lmZGVmIF82NEJJVF9BUkNIXwogICAgIAlidWZmZXIgPSAoY2hhciAqKSAoKGxvbmcgbG9uZyApKGJ1ZmZlciArIGNhY2hlX3NpemUgKSAmIAoJCX4oY2FjaGVfc2l6ZS0xKSk7CiNlbHNlCiAgICAgCWJ1ZmZlciA9IChjaGFyICopICgobG9uZykoYnVmZmVyICsgY2FjaGVfc2l6ZSApICYgCgkJfigobG9uZyljYWNoZV9zaXplLTEpKTsKI2VuZGlmCgltYWluYnVmZmVyID0gYnVmZmVyOwoKCS8qIGRlLWR1cCBpbnB1dCBidWYgKi8KICAgICAJYnVmZmVyMSA9IChjaGFyICopIGFsbG9jX21lbSgobG9uZyBsb25nKShNQVhCVUZGRVJTSVpFICsgKDIgKiBjYWNoZV9zaXplKSksKGludCkwKTsKCWlmKGJ1ZmZlcjEgPT0gMCkgewogICAgICAgIAlwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZDoiKTsKICAgICAgICAJZXhpdCgxKTsKICAgICAgICB9CgojaWZkZWYgXzY0QklUX0FSQ0hfCiAgICAgCWJ1ZmZlcjEgPSAoY2hhciAqKSAoKGxvbmcgbG9uZyApKGJ1ZmZlcjEgKyBjYWNoZV9zaXplICkgJiAKCQl+KGNhY2hlX3NpemUtMSkpOwojZWxzZQogICAgIAlidWZmZXIxID0gKGNoYXIgKikgKChsb25nKShidWZmZXIxICsgY2FjaGVfc2l6ZSApICYgCgkJfigobG9uZyljYWNoZV9zaXplLTEpKTsKI2VuZGlmCglkZWR1cF9pYnVmID0gYnVmZmVyMTsKCXRvdWNoX2RlZHVwKGJ1ZmZlcjEsIE1BWEJVRkZFUlNJWkUpOwoKI2lmZGVmIEZPT0IKCS8qIGRlLWR1cCB0ZW1wIGJ1ZiAqLwogICAgIAlidWZmZXIxID0gKGNoYXIgKikgYWxsb2NfbWVtKChsb25nIGxvbmcpKE1BWEJVRkZFUlNJWkUgKyAoMiAqIGNhY2hlX3NpemUpKSwoaW50KTApOwoJaWYoYnVmZmVyMSA9PSAwKSB7CiAgICAgICAgCXBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAlleGl0KDEpOwogICAgICAgIH0KCiNpZmRlZiBfNjRCSVRfQVJDSF8KICAgICAJYnVmZmVyMSA9IChjaGFyICopICgobG9uZyBsb25nICkoYnVmZmVyMSArIGNhY2hlX3NpemUgKSAmIAoJCX4oY2FjaGVfc2l6ZS0xKSk7CiNlbHNlCiAgICAgCWJ1ZmZlcjEgPSAoY2hhciAqKSAoKGxvbmcpKGJ1ZmZlcjEgKyBjYWNoZV9zaXplICkgJiAKCQl+KChsb25nKWNhY2hlX3NpemUtMSkpOwojZW5kaWYKI2VuZGlmCglkZWR1cF90ZW1wID0gbWFpbmJ1ZmZlcjsKCglmZXRjaG9uKys7ICAvKiBCeSBkZWZhdWx0LCBwcmVmZXRjaCB0aGUgQ1BVIGNhY2hlIGxpbmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnVmZmVyICovCiAgCXN0cmNweShmaWxlbmFtZSxkZWZhdWx0X2ZpbGVuYW1lKTsgCS8qIEluaXQgZGVmYXVsdCBmaWxlbmFtZSAqLwogIAlzcHJpbnRmKGR1bW15ZmlsZVswXSwiJXMuRFVNTVkiLGRlZmF1bHRfZmlsZW5hbWUpOwoJaWYoYXJnYyA8PTEpewoJCXByaW50ZihVU0FHRSk7CgkJZXhpdCgwKTsKCX0KCWF1dG9fbW9kZSA9IDA7IAkJLyogRGVmYXVsdCBpcyB0byBkaXNhYmxlIGF1dG8gbW9kZSAqLwoJaW5wX3BhdCA9IFBBVFRFUk47IAkvKiBJbml0IGRlZmF1bHQgcGF0dGVybiBmb3IgdmVyaWZpY2F0aW9uICovCgkvKiBGaWxsIHRoZSBlbnRpcmUgcGF0dGVybiB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIGNoYXJhY3RlciAqLwoJcGF0dGVybiA9ICgoaW5wX3BhdCA8PCAyNCkgfCAoaW5wX3BhdCA8PCAxNikgfCAoaW5wX3BhdCA8PCA4KSB8IGlucF9wYXQpOwoKCS8qCgkgKiBQYXJzZSBhbGwgb2YgdGhlIG9wdGlvbnMgdGhhdCB0aGUgdXNlciBzcGVjaWZpZWQuCgkgKi8KCXdoaWxlKChjcmV0ID0gZ2V0b3B0KGFyZ2MsYXJndiwiWlFOSUJER0NUT01SRVdvdkF4YW13cGhjZXpLSjpqOms6VjpyOnQ6czpmOkY6ZDpsOnU6VTpTOkw6SDorOlA6aTpiOlg6WTpnOm46eTpxOiAiKSkgIT0gRU9GKXsKCQlzd2l0Y2goY3JldCl7CgkJY2FzZSAnayc6CS8qIEFzeW5jIEkvTyB3aXRoIG5vIGJjb3B5cyAqLwoJCQlkZXB0aCA9IChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSk7CgkJCWlmKGRlcHRoIDwwKQoJCQkJZGVwdGg9MDsKCQkJLyoKCQkJaWYoZGVwdGggPiA2MCkKCQkJCWRlcHRoPTYwOwoJCQkqLwojaWZkZWYgTk9fUFJJTlRfTExECgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFBPU0lYIEFzeW5jIEkvTyAobm8gYmNvcHkpLiBEZXB0aCAlbGQgXG4iLGRlcHRoKTsKI2Vsc2UKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UE9TSVggQXN5bmMgSS9PIChubyBiY29weSkuIERlcHRoICVsbGQgXG4iLGRlcHRoKTsKI2VuZGlmCgkJCW5vX2NvcHlfZmxhZz0xOwoJCQlhc3luY19mbGFnKys7CgkJCWtfZmxhZysrOwoJCQlicmVhazsKCQljYXNlICdUJzoJLyogU3dpdGNoIHRvIFBPU0lYIHRocmVhZCBiYXNlZCAqLwojaWZuZGVmIE5PX1RIUkVBRFMKCQkJdXNlX3RocmVhZCsrOwojZWxzZQoJCQlwcmludGYoIlx0VGhyZWFkcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvblxuIik7CgkJCWV4aXQoMik7CiNlbmRpZgoJCQlicmVhazsKCQljYXNlICdIJzoJLyogVXNlIFBPU0lYIGFzeW5jX2lvICovCgkJCWhfZmxhZysrOwoJCQlkZXB0aCA9IChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSk7CgkJCWlmKGRlcHRoIDwwKQoJCQkJZGVwdGg9MDsKCQkJLyoKCQkJICogSG1tbS4gbWFueSBzeXN0ZW1zIGZhaWwgaXMgc3RyYW5nZSB3YXlzIHdoZW4gdGhlIG1heGltdW0KCQkJICogbnVtYmVyIG9mIGFzeW5jIEkvT3MgcGVyIHVzZXIgb3IgcHJvYyBpcyBleGNlZWRlZC4KCQkJICovCgkJCS8qCgkJCWlmKGRlcHRoID4gNjApCgkJCQlkZXB0aD02MDsKCQkJKi8KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRQT1NJWCBhc3luYyBJL08gKHdpdGggYmNvcHkpLiBEZXB0aCAlbGRcbiIsZGVwdGgpOwojZWxzZQoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRQT1NJWCBhc3luYyBJL08gKHdpdGggYmNvcHkpLiBEZXB0aCAlbGxkXG4iLGRlcHRoKTsKI2VuZGlmCgkJCWFzeW5jX2ZsYWcrKzsKCQkJYnJlYWs7CgkJY2FzZSAnSSc6CS8qIFVzZSBWWEZTIGRpcmVjdCBhZHZpc29yeSBvciBPX0RJUkVDVCBmcm9tIExpbnV4IG9yIEFJWCAsIG9yIE9fRElSRUNUSU8gZm9yIFRSVTY0ICBvciBTb2xhcmlzIGRpcmVjdGlvICovCiNpZmRlZiBWWEZTCgkJCWRpcmVjdF9mbGFnKys7CgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFZ4RlMgYWR2YW5jZWQgZmVhdHVyZSBTRVRfQ0FDSEUsIFZYX0RJUkVDVCBlbmFibGVkXG4iKTsKCQkJYnJlYWs7CiNlbmRpZgojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKHNvbGFyaXMpCgkJCWRpcmVjdF9mbGFnKys7CgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdE9fRElSRUNUIGZlYXR1cmUgZW5hYmxlZFxuIik7CgkJCWJyZWFrOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCgkJCWRpcmVjdF9mbGFnKys7CgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdE9fRElSRUNUSU8gZmVhdHVyZSBlbmFibGVkXG4iKTsKCQkJYnJlYWs7CiNlbmRpZgojZWxzZQoJCQlicmVhazsKI2VuZGlmCiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdE9fRElSRUNUSU8gZmVhdHVyZSBub3QgYXZhaWxhYmxlIGluIFdpbmRvd3MgdmVyc2lvbi5cbiIpOwoJCQlicmVhazsKI2VuZGlmCgkJY2FzZSAnQic6CS8qIFVzZSBtbWFwIGZpbGUgZm9yIHRlc3QgZmlsZSAqLwoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBtbWFwIGZpbGVzXG4iKTsKCQkJbW1hcGZsYWcrKzsKCQkJbW1hcG5zZmxhZysrOwoJCQlicmVhazsKCQljYXNlICdEJzoJLyogVXNlIGFzeW5jIG1zeW5jIG1tYXAgZmlsZSAqLwoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBtc3luYyhNU19BU1lOQykgb24gbW1hcCBmaWxlc1xuIik7CgkJCW1tYXBmbGFnKys7CgkJCW1tYXBhc2ZsYWcrKzsKCQkJbW1hcG5zZmxhZz0wOwoJCQlicmVhazsKCQljYXNlICdHJzoJLyogVXNlIG1zeW5jIHN5bmMgZm9yIG1tYXAgZmlsZSAqLwoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBtc3luYyhNU19TWU5DKSBvbiBtbWFwIGZpbGVzXG4iKTsKCQkJbW1hcHNzZmxhZysrOwoJCQltbWFwbnNmbGFnPTA7CgkJCWJyZWFrOwoJCWNhc2UgJ0MnOgkvKiBzaG93IGNoaWxkcmVuIHhmZXIgY291bnRzICovCgkJCUNmbGFnKys7CgkJCWJyZWFrOwoJCWNhc2UgJ1EnOgkvKiBFbmFibGUgb3V0cHV0IG9mZnNldC9sYXRlbmN5IGZpbGVzICovCgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRPZmZzZXQvbGF0ZW5jeSBmaWxlcyBlbmFibGVkLlxuIik7CgkJCVFfZmxhZysrOwoJCQlicmVhazsKCQljYXNlICd4JzoJLyogRGlzYWJsZSBzdG9uZV93YWxsICovCgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRTdG9uZXdhbGwgZGlzYWJsZWRcbiIpOwoJCQl4ZmxhZysrOwoJCQlicmVhazsKCgkJY2FzZSAnYSc6CS8qIGF1dG8gbW9kZSAqLwoJCQlmZXRjaG9uPTE7CgkJCXB1cmdlPTA7CgkJCW11bHRpX2J1ZmZlcj0wOwoJICAgIAkJYXV0b19tb2RlID0gMTsKCQkJYWZsYWcrKzsKCSAgICAJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdEF1dG8gTW9kZVxuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ2MnOgkvKiBJbmNsdWRlIGNsb3NlIGluIHRpbWluZyAqLwoJCQlpbmNsdWRlX2Nsb3NlKys7CgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRJbmNsdWRlIGNsb3NlIGluIHdyaXRlIHRpbWluZ1xuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ2UnOgkvKiBJbmNsdWRlIGZzeW5jIGluIHRpbWluZyAqLwoJCQlpbmNsdWRlX2ZsdXNoKys7CgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRJbmNsdWRlIGZzeW5jIGluIHdyaXRlIHRpbWluZ1xuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ0EnOgkvKiBhdXRvMiBtb2RlLiBTb29uIHRvIGdvIGF3YXkuIFBsZWFzZSB1c2UgLWF6ICovCgkJCWZldGNob249MTsKCQkJcHVyZ2U9MDsKCQkJbXVsdGlfYnVmZmVyPTA7CgkgICAgCQlhdXRvX21vZGUgPSAxOwoJCQlhZmxhZysrOwoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0QXV0byBNb2RlIDIuIFRoaXMgb3B0aW9uIGlzIG9ic29sZXRlLiBVc2UgLWF6IC1pMCAtaTEgXG4iKTsKCQkJUldPTkxZZmxhZysrOwoJCQlOT0NST1NTZmxhZysrOwoJCQlpbmNsdWRlX3RmbGFnKys7CS8qIGF1dG9tYXRpY2FsbHkgc2V0IFdSSVRFUl9URVNUIGFuZCBSRUFERVJfVEVTVCAqLwoJCQlpbmNsdWRlX3Rlc3RbV1JJVEVSX1RFU1RdKys7CgkJCWluY2x1ZGVfdGVzdFtSRUFERVJfVEVTVF0rKzsKCQkJYnJlYWs7CgkJY2FzZSAncyc6IAkvKiBTZXQgZmlsZSBzaXplICovCiNpZmRlZiBOT19QUklOVF9MTEQKCQkJc3NjYW5mKG9wdGFyZywiJWxkIiwma2lsb2J5dGVzNjQpOwojZWxzZQoJCQlzc2NhbmYob3B0YXJnLCIlbGxkIiwma2lsb2J5dGVzNjQpOwojZW5kaWYKCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0naycgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0snKXsKCQkJCTsKCQkJfQoJCQlpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdtJyB8fAoJCQkJb3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nTScpewoJCQkJa2lsb2J5dGVzNjQgPSBraWxvYnl0ZXM2NCAqIDEwMjQ7CgkJCX0KCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nZycgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0cnKXsKCQkJCWtpbG9ieXRlczY0ID0ga2lsb2J5dGVzNjQgKjEwMjQgKiAxMDI0OwoJCQl9CgkJCWlmKGtpbG9ieXRlczY0IDw9IDApCgkJCQlraWxvYnl0ZXM2ND01MTI7CgoJCQlzX3JhbmdlW3NfY291bnQrK109a2lsb2J5dGVzNjQ7CgkJCW1heF9maWxlX3NpemUgPSAob2ZmNjRfdClzX3JhbmdlW3NfY291bnQtMV07ICAgLyogTWFrZSB2aXNhYmxlIGdsb2JhbGx5ICovCgkJCW1pbl9maWxlX3NpemUgPSAob2ZmNjRfdClzX3JhbmdlWzBdOyAgIC8qIE1ha2UgdmlzYWJsZSBnbG9iYWxseSAqLwoKI2lmZGVmIE5PX1BSSU5UX0xMRAoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0RmlsZSBzaXplIHNldCB0byAlbGQgS0JcbiIsa2lsb2J5dGVzNjQpOwojZWxzZQoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0RmlsZSBzaXplIHNldCB0byAlbGxkIEtCXG4iLGtpbG9ieXRlczY0KTsKI2VuZGlmCgkJCXNmbGFnKys7CgkJCWJyZWFrOwoJCWNhc2UgJ2wnOiAJLyogU2V0IGxvd2VyIHRocmVhZC9wcm9jIGxpbWl0ICAqLwoJCQltaW50ID0gKGxvbmcgbG9uZykoYXRvaShvcHRhcmcpKTsKCQkJaWYobWludCA8PSAwKQoJCQl7CgkJCQltaW50PTE7CgkJCQludW1fY2hpbGQ9MTsKCQkJfWVsc2UKCQkJCW51bV9jaGlsZD1taW50OwoJCQlpZihtaW50ID4gKHVuc2lnbmVkIGxvbmcgbG9uZylNQVhTVFJFQU1TKXsKCQkJICBwcmludGYoIkludmFsaWQgb3B0aW9uczogbWF4aW11bSBzdHJlYW1zIGZvciAiKTsKCQkJICBwcmludGYoInRocm91Z2hwdXQgaXMgTUFYU1RSRUFNU1xuIik7CgkJCSAgZXhpdCg0KTsKCQkJfQoJCQlsZmxhZysrOwoJCQl0cmZsYWcrKzsKCQkJaWYoVWZsYWcpCgkJCXsKCQkJCXByaW50ZigiQ2FuIG5vdCBydW4gdGhyb3VnaHB1dCB0ZXN0cyB3aXRoIHVubW91bnQgJiByZW1vdW50cy5cbiIpOwoJCQkJZXhpdCg1KTsKCQkJfQoJCQlicmVhazsKCQljYXNlICd1JzogCS8qIFNldCB1cHBlciB0aHJlYWQvcHJvYyBsaW1pdCAgKi8KCQkJbWF4dCA9IChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSk7CgkJCWlmKG1heHQgPD0gMCkKCQkJCW1heHQ9MTsKCQkJaWYobWF4dCA+IE1BWFNUUkVBTVMpewoJCQkgIHByaW50ZigiSW52YWxpZCBvcHRpb25zOiBtYXhpbXVtIHN0cmVhbXMgZm9yICIpOwoJCQkgIHByaW50ZigidGhyb3VnaHB1dCBpcyBNQVhTVFJFQU1TXG4iKTsKCQkJICBleGl0KDYpOwoJCQl9CgkJCXVmbGFnKys7CgkJCXRyZmxhZysrOwoJCQlpZihVZmxhZykKCQkJewoJCQkJcHJpbnRmKCJDYW4gbm90IHJ1biB0aHJvdWdocHV0IHRlc3RzIHdpdGggdW5tb3VudCAmIHJlbW91bnRzLlxuIik7CgkJCQlleGl0KDcpOwoJCQl9CgkJCWJyZWFrOwoJCWNhc2UgJ20nOgkvKiBVc2UgbXVsdGlwbGUgYnVmZmVycyAqLwoJCQlmZXRjaG9uPTA7CgkJCW11bHRpX2J1ZmZlcj0xOwoJCQltZmxhZysrOwogICAgIAkJCW1idWZmZXIgPSAoY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZylNQVhCVUZGRVJTSVpFLChpbnQpMCk7CgkJCWlmKG1idWZmZXIgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAJcGVycm9yKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQ6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgCWV4aXQoOCk7CgkJCX0KCSAgICAJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdE11bHRpX2J1ZmZlci4gV29yayBhcmVhICVkIGJ5dGVzXG4iLAoJCQkJTUFYQlVGRkVSU0laRSk7CgkJCWJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnTSc6ICAgICAgIC8qIFJlcG9ydCBtYWNoaW5lIG5hbWUgYW5kIE9TICovCgkJCWJ6ZXJvKHJlcGx5LHNpemVvZihyZXBseSkpOwogICAgICAgICAgICAgICAgICAgICAgICBwaT1wb3BlbigidW5hbWUgLWEiLCAiciIpOwoJCQlpZihwaSA9PSAoRklMRSAqKTApCgkJCXsKCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcblx0RXJyb3IgdXNpbmcgcG9wZW4oKSBvbiB1bmFtZVxuIik7CgkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQtTSBvcHRpb24gc3VwcHJlc3NlZC5cbiIpOwoJCQl9CgkJCWVsc2UKCQkJewogICAgICAgICAgICAgICAgICAgICAgICAJZnJlYWQocmVwbHksSUJVRlNJWkUtMSwxLHBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgCXBjbG9zZShwaSk7CgkJCQltPXJlcGx5OwogICAgICAgICAgICAgICAgICAgICAgICAJd2hpbGUoKm0pIC8qIFN0cmlwIG5ldyBsaW5lICovCgkJCQl7CgkJCQkJaWYoKm09PSdcbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCSAJKm09MDsKCQkJCQllbHNlCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkgCW0rKzsKCQkJCX0KICAgICAgICAgICAgICAgICAgICAgICAgCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcblx0TWFjaGluZSA9ICVzXG4iLHJlcGx5KTsKCQkJfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCgkJY2FzZSAnUCc6CS8qIFNldCBiZWdpbm5pbmcgcHJvY2Vzc29yIGZvciBiaW5kaW5nLiAqLwojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJCQludW1fcHJvY2Vzc29ycz0gcHRocmVhZF9udW1fcHJvY2Vzc29yc19ucCgpOwoJCQliZWdpbl9wcm9jID0gYXRvaShvcHRhcmcpOwoJCQlpZihiZWdpbl9wcm9jIDwgMCkKCQkJCWJlZ2luX3Byb2M9MDsKCQkJaWYoYmVnaW5fcHJvYyA+IG51bV9wcm9jZXNzb3JzKQoJCQkJYmVnaW5fcHJvYz0wOwogICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRCaW5kaW5nIG9mIHByb2Nlc3NvcnMgYmVnaW5uaW5nIHdpdGggJWQgXG4iLGJlZ2luX3Byb2MpOwoJCQlpb3pfcHJvY2Vzc29yX2JpbmQrKzsKI2Vsc2UKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UHJvY2Vzc29yIGJpbmRpbmcgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHZlcnNpb25cbiIpOwojZW5kaWYKI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJCWNhc2UgJ3AnOgkvKiBwdXJnZSB0aGUgcHJvY2Vzc29yIGNhY2hlICovCgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRQdXJnZSBNb2RlIE9uXG4iKTsKCQkJZmV0Y2hvbj0wOwoJCQlwZmxhZysrOwoJCQlwdXJnZT0xOwoJCQlicmVhazsKCQljYXNlICdoJzoJLyogc2hvdyBoZWxwICovCgkJCWhmbGFnKys7CgkgICAgCQlzaG93X2hlbHAoKTsKCQkJZXhpdCgwKTsKCQkJYnJlYWs7CgkJY2FzZSAnRSc6CS8qIEV4dGVuZGVkIHRlc3RpbmcgZm9yIHByZWFkL3B3cml0ZS4uLiAqLwoJCQlFZmxhZysrOwoJCQlicmVhazsKCQljYXNlICdSJzoJLyogR2VuZXJhdGUgRXhjZWwgY29tcGF0aWJsZSBSZXBvcnQgKi8KCQkJUmZsYWcrKzsKCSAgICAJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdEV4Y2VsIGNoYXJ0IGdlbmVyYXRpb24gZW5hYmxlZFxuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ28nOgkvKiBPcGVuIE9TWU5DICovCgkgICAgCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRTWU5DIE1vZGUuIFxuIik7CgkJCW9mbGFnKys7CgkJCWJyZWFrOwoJCWNhc2UgJ08nOgkvKiBSZXBvcnQgaW4gT3BzL3NlYyBpbnN0ZWFkIG9mIEtCL3NlYyAqLwoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0T1BTIE1vZGUuIE91dHB1dCBpcyBpbiBvcGVyYXRpb25zIHBlciBzZWNvbmQuXG4iKTsKCQkJT1BTX2ZsYWcrKzsKCQkJYnJlYWs7CgkJY2FzZSAnTic6CS8qIFJlcG9ydCBpbiB1c2VjL29wICAqLwoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0TWljcm9zZWNvbmRzL29wIE1vZGUuIE91dHB1dCBpcyBpbiBtaWNyb3NlY29uZHMgcGVyIG9wZXJhdGlvbi5cbiIpOwoJCQlNU19mbGFnKys7CgkJCWJyZWFrOwoJCWNhc2UgJ1YnOgkvKiBUdXJuIG9uIFZlcmlmeSBldmVyeSBieXRlICovCgkJCXN2ZXJpZnk9MDsKCQkJaW5wX3BhdCA9IChjaGFyKShhdG9pKG9wdGFyZykpOwoJCQlpZihpbnBfcGF0ID09IDApCgkJCQlpbnBfcGF0ID0gUEFUVEVSTjsKCQkJcGF0dGVybiA9ICgoaW5wX3BhdCA8PCAyNCkgfCAoaW5wX3BhdCA8PCAxNikgfCAoaW5wX3BhdCA8PCA4KSAKCQkJCXwgaW5wX3BhdCk7CgkJCXZlcmlmeT0xOwoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0VmVyaWZ5IE1vZGUuIFBhdHRlcm4gJXhcbiIscGF0dGVybik7CiAgICAJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRQZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgYXJlIGludmFsaWQgaW4gdGhpcyBtb2RlLlxuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ1MnOgkvKiBTZXQgdGhlIHByb2Nlc3NvciBjYWNoZSBzaXplICovCgkJCWNhY2hlX3NpemUgPSAobG9uZykoYXRvaShvcHRhcmcpKjEwMjQpOwoJCQlpZihjYWNoZV9zaXplID09IDApCgkJCQljYWNoZV9zaXplID0gQ0FDSEVfU0laRTsKCQkJYnJlYWs7CgkJY2FzZSAnTCc6CS8qIFNldCBwcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplICovCgkJCWNhY2hlX2xpbmVfc2l6ZSA9IChsb25nKShhdG9pKG9wdGFyZykpOwoJCQlpZihjYWNoZV9saW5lX3NpemUgPT0gMCkKCQkJCWNhY2hlX2xpbmVfc2l6ZSA9IENBQ0hFX0xJTkVfU0laRTsKCQkJYnJlYWs7CgkJY2FzZSAnZic6CS8qIFNwZWNpZnkgdGhlIGZpbGUgbmFtZSAqLwoJCQlpZihtZmZsYWcpIHsKCQkJICBwcmludGYoImludmFsaWQgb3B0aW9uczogLWYgYW5kIC1GIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcbiIpOwoJCQkgIGV4aXQoMTApOwoJCQl9CgkJCWZmbGFnKys7CgkJCXN0cmNweShmaWxlbmFtZSxvcHRhcmcpOwoJICAJCXNwcmludGYoZHVtbXlmaWxlWzBdLCIlcy5EVU1NWSIsb3B0YXJnKTsKCQkJYnJlYWs7CgkJY2FzZSAnYic6CS8qIFNwZWNpZnkgdGhlIGJpZmYgZmlsZSBuYW1lICovCgkJCVJmbGFnKys7CgkJCWJpZl9mbGFnKys7CgkJCXN0cmNweShiaWZfZmlsZW5hbWUsb3B0YXJnKTsKCQkJYnJlYWs7CgkJY2FzZSAnRic6CS8qIFNwZWNpZnkgbXVsdGlwbGUgZmlsZSBuYW1lcyBmb3IgLXQgKi8KCSAJCW1mZmxhZysrOwoJCQlpZihmZmxhZykgewoJCQkgIHByaW50ZigiaW52YWxpZCBvcHRpb25zOiAtZiBhbmQgLUYgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuIik7CgkJCSAgZXhpdCgxMSk7CgkJCX0KCQkJaWYoIXRyZmxhZykgewoJCQkgIHByaW50ZigiaW52YWxpZCBvcHRpb25zOiBtdXN0IHNwZWNpZnkgLXQgTiBiZWZvcmUgLUZcbiIpOwoJCQkgIGV4aXQoMTIpOwoJCQl9CgkJCW9wdGluZC0tOwoJCQlmb3IoZmlsZWluZHg9MDtmaWxlaW5keDxtYXh0O2ZpbGVpbmR4KyspIHsKCQkJICBmaWxlYXJyYXlbZmlsZWluZHhdPWFyZ3Zbb3B0aW5kKytdOwoJCQkgIGlmKG9wdGluZCA+IGFyZ2MpIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkgICAgcHJpbnRmKCJpbnZhbGlkIG9wdGlvbnM6IG5vdCBlbm91Z2ggZmlsZW5hbWVzIGZvciAlbGQgc3RyZWFtc1xuIixudW1fY2hpbGQpOwojZWxzZQoJCQkgICAgcHJpbnRmKCJpbnZhbGlkIG9wdGlvbnM6IG5vdCBlbm91Z2ggZmlsZW5hbWVzIGZvciAlbGxkIHN0cmVhbXNcbiIsbnVtX2NoaWxkKTsKI2VuZGlmCgkJCSAgICBleGl0KDEzKTsKCQkJICB9CgkJCX0KCQkJYnJlYWs7CgkJY2FzZSAncic6CS8qIFNwZWNpZnkgdGhlIHJlY29yZCBzaXplIHRvIHVzZSAqLwoJCQlyZmxhZysrOwoJCQlyZWNsZW4gPSAoKGxvbmcgbG9uZykoYXRvaShvcHRhcmcpKSoxMDI0KTsKCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0naycgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0snKXsKCQkJCXJlY2xlbiA9IChsb25nIGxvbmcpKDEwMjQgKiBhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J20nIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdNJyl7CgkJCQlyZWNsZW4gPSAobG9uZyBsb25nKSgxMDI0ICogMTAyNCAqIGF0b2kob3B0YXJnKSk7CgkJCX0KCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nZycgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0cnKXsKCQkJCXJlY2xlbiA9IChsb25nIGxvbmcpKDEwMjQgKiAxMDI0ICogMTAyNCAqKGxvbmcgbG9uZylhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKHJlY2xlbiA8PSAwKQoJCQkJcmVjbGVuPShsb25nIGxvbmcpNDA5NjsKCgkJCXJfcmFuZ2Vbcl9jb3VudCsrXT1yZWNsZW47CgkJCW1heF9yZWNfc2l6ZSA9IChvZmY2NF90KXJfcmFuZ2Vbcl9jb3VudC0xXTsgICAvKiBNYWtlIHZpc2FibGUgZ2xvYmFsbHkgKi8KCQkJbWluX3JlY19zaXplID0gKG9mZjY0X3Qpcl9yYW5nZVswXTsgICAvKiBNYWtlIHZpc2FibGUgZ2xvYmFsbHkgKi8KI2lmZGVmIE5PX1BSSU5UX0xMRAoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UmVjb3JkIFNpemUgJWxkIEtCXG4iLHJlY2xlbi8xMDI0KTsKI2Vsc2UKCSAgICAJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFJlY29yZCBTaXplICVsbGQgS0JcbiIscmVjbGVuLzEwMjQpOwojZW5kaWYKCQkJaWYobWF4X3JlY19zaXplID4gTUFYQlVGRkVSU0laRSkgewojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlwcmludGYoIkVycm9yOiBtYXhpbXVtIHJlY29yZCBzaXplICVsZCBLQiBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSBidWZmZXIgc2l6ZSAlbGQgS0JcbiAiLAoJCQkJCW1heF9yZWNfc2l6ZS8xMDI0LCBNQVhCVUZGRVJTSVpFLzEwMjQpOwojZWxzZQoJCQkJcHJpbnRmKCJFcnJvcjogbWF4aW11bSByZWNvcmQgc2l6ZSAlbGxkIEtCIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIGJ1ZmZlciBzaXplICVsbGQgS0JcbiAiLAoJCQkJCShsb25nIGxvbmcpKG1heF9yZWNfc2l6ZS8xMDI0TEwpLCAobG9uZyBsb25nKU1BWEJVRkZFUlNJWkUvMTAyNExMKTsKI2VuZGlmCgkJCQlleGl0KDIzKTsKCQkJfQoJCQlicmVhazsKCQljYXNlICdKJzoJLyogU3BlY2lmeSB0aGUgY29tcHV0ZSB0aW1lIGluIG1pbGxpc2VjcyAqLwoJCQljb21wdXRlX3RpbWUgPSAoZmxvYXQpKGF0b2kob3B0YXJnKSk7CgkJCWNvbXB1dGVfdGltZT1jb21wdXRlX3RpbWUvMTAwMDsJCgkJCWlmKGNvbXB1dGVfdGltZSA8IChmbG9hdCkwKQoJCQkJY29tcHV0ZV90aW1lPShmbG9hdCkwOwoJCQllbHNlCgkJCQljb21wdXRlX2ZsYWc9MTsKCQkJamZsYWcrKzsKCQkJYnJlYWs7CgkJY2FzZSAnaic6CS8qIFNwZWNpZnkgdGhlIHN0cmlkZSBpbiByZWNvcmRzICovCgkJCXN0cmlkZSA9IChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSk7CgkJCWlmKHN0cmlkZSA8IDApCgkJCQlzdHJpZGU9MDsKCQkJc3RyaWRlX2ZsYWc9MTsKCQkJYnJlYWs7CgkJY2FzZSAndCc6CS8qIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB0byBydW4gKi8KCQkJbnVtX2NoaWxkMT0oYXRvaShvcHRhcmcpKTsKCQkJbnVtX2NoaWxkID0gKGxvbmcgbG9uZyludW1fY2hpbGQxOwoJCQlpZihudW1fY2hpbGQgPiAobG9uZyBsb25nKU1BWFNUUkVBTVMpIHsKCQkJICBwcmludGYoImludmFsaWQgb3B0aW9uczogbWF4aW11bSBzdHJlYW1zIGZvciB0aHJvdWdocHV0IGlzIE1BWFNUUkVBTVNcbiIpOwojaWZkZWYgTk9fUFJJTlRfTExECgkJCSAgcHJpbnRmKCJOdW1jaGlsZCAlbGQgJXNcbiIsbnVtX2NoaWxkLG9wdGFyZyk7CiNlbHNlCgkJCSAgcHJpbnRmKCJOdW1jaGlsZCAlbGxkICVzXG4iLG51bV9jaGlsZCxvcHRhcmcpOwojZW5kaWYKCQkJICBleGl0KDE0KTsKCQkJfQoJCQlpZihudW1fY2hpbGQgPD0gMCkKCQkJCW51bV9jaGlsZCA9IDg7CgkJCWlmKG51bV9jaGlsZCA9PSAwKQoJCQkJbnVtX2NoaWxkPTE7CiAgICAgICAgICAgICAgICAgICAgICAgIHRfcmFuZ2VbdF9jb3VudCsrXT1udW1fY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heHQgPSAobWF4dD5udW1fY2hpbGQ/bWF4dDpudW1fY2hpbGQpOwoJCQl0cmZsYWcrKzsKCQkJaWYoVWZsYWcpCgkJCXsKCQkJCXByaW50ZigiQ2FuIG5vdCBydW4gdGhyb3VnaHB1dCB0ZXN0cyB3aXRoIHVubW91bnQgJiByZW1vdW50cy5cbiIpOwoJCQkJZXhpdCgxNSk7CgkJCX0KCQkJYnJlYWs7CgkJY2FzZSAnZCc6CS8qIFNwZWNpZnkgdGhlIGRlbGF5IG9mIGNoaWxkcmVuIHRvIHJ1biAqLwoJCQlkZWxheV9zdGFydCA9IChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSk7CgkJCWlmKGRlbGF5X3N0YXJ0IDwgMCkKCQkJCWRlbGF5X3N0YXJ0PTA7CgkJCWJyZWFrOwoJCWNhc2UgJ2knOgkvKiBTcGVjaWZ5IHNwZWNpZmljIHRlc3RzICovCgkJCXR2YWw9KGxvbmcgbG9uZykoYXRvaShvcHRhcmcpKTsKCQkJaWYodHZhbCA8IDApIHR2YWw9MDsKI2lmbmRlZiBIQVZFX1BSRUFECgkJCWlmKHR2YWwgPiBSQU5ET01fTUlYX1RFU1QpCgkJCXsKCQkJCXByaW50ZigiXHRQcmVhZCB0ZXN0cyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgb3BlcmF0aW5nIHN5c3RlbS5cbiIpOwoJCQkJZXhpdCgxODMpOwoJCQl9CiNlbmRpZgoJCQlpZih0dmFsID4gc2l6ZW9mKGZ1bmMpL3NpemVvZihjaGFyICopKSAKCQkJewoJCQkJdHZhbD0wOwoJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0U2VsZWN0ZWQgdGVzdCBub3QgYXZhaWxhYmxlIG9uIHRoZSB2ZXJzaW9uLlxuIik7CgkJCX0KCQkJaW5jbHVkZV90ZXN0W3R2YWxdKys7CgkJCWluY2x1ZGVfdGZsYWcrKzsKCQkJYnJlYWs7CgkJY2FzZSAndic6CS8qIFNob3cgdmVyc2lvbiBpbmZvcm1hdGlvbiAqLwogICAgCQkJZm9yKGluZD0wOyBzdHJsZW4oaGVhZDFbaW5kXSk7IGluZCsrKQogICAgCQkJewoJCQkJcHJpbnRmKCIlc1xuIiwgaGVhZDFbaW5kXSk7CiAgICAJCQl9CgkJCWV4aXQoMCk7CgkJCWJyZWFrOwoJCWNhc2UgJ1UnOgkvKiBTcGVjaWZ5IHRoZSBkZXYgbmFtZSBmb3IgdW1vdW50L21vdW50Ki8KCQkJVWZsYWcrKzsKCQkJc3RyY3B5KG1vdW50bmFtZSxvcHRhcmcpOwoJCQlpZih0cmZsYWcpCgkJCXsKCQkJCXByaW50ZigiQ2FuIG5vdCBydW4gdGhyb3VnaHB1dCB0ZXN0cyB3aXRoIHVubW91bnQgJiByZW1vdW50cy5cbiIpOwoJCQkJZXhpdCgxNik7CgkJCX0KCQkJYnJlYWs7CgkJY2FzZSAndyc6CS8qIERvIG5vdCB1bmxpbmsgZmlsZXMgKi8KCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0U2V0dGluZyBub191bmxpbmtcbiIpOwoJCQlub191bmxpbmsgPSAxOwoJCQlicmVhazsKCQljYXNlICdaJzoJLyogVHVybiBvbiB0aGUgbW1hcCBhbmQgZmlsZSBJL08gbWl4aW5nICovCgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdEVuYWJsZSBtbWFwICYgZmlsZSBJL08gbWl4aW5nLlxuIik7CgkJCW1tYXBfbWl4ID0gMTsKCQkJYnJlYWs7CgkJY2FzZSAnVyc6CS8qIFJlYWQvV3JpdGUgd2l0aCBmaWxlIGxvY2tlZCAqLwoJCQlmaWxlX2xvY2s9MTsKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0TG9jayBmaWxlIHdoZW4gcmVhZGluZy93cml0aW5nLlxuIik7CgkJCWJyZWFrOwoJCWNhc2UgJ0snOgkvKiBDYXVzZSBkaXNydXB0ZWQgcmVhZCBwYXR0ZXJuICovCgkJCWRpc3J1cHRfZmxhZz0xOwoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHREaXNydXB0ZWQgcmVhZCBwYXR0ZXJucyBzZWxlY3RlZC5cbiIpOwoJCQlicmVhazsKCQljYXNlICdYJzoJLyogT3BlbiB3cml0ZSB0ZWxlbWV0cnkgZmlsZSAqLwoJCQljb21wdXRlX2ZsYWc9MTsKCQkJc3ZlcmlmeT0yOyAgLyogdG91Y2ggbGlnaHRseSAqLwoJCQl3X3RyYWpfZmxhZz0xOwoJCQlzdHJjcHkod3JpdGVfdHJhal9maWxlbmFtZSxvcHRhcmcpOwoJCQl0cmFqX3ZlcnMoKTsKCQkJd190cmFqX3NpemUoKTsKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0VXNpbmcgd3JpdGUgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLAoJCQkJd3JpdGVfdHJhal9maWxlbmFtZSk7CgkJCXdfdHJhal9mZD1vcGVuX3dfdHJhaigpOwoJCQlpZih3X3RyYWpfZmQgPT0gKEZJTEUgKikwKQoJCQkJZXhpdCgyMDApOwoJCQlicmVhazsKCQljYXNlICdZJzoJLyogT3BlbiBSZWFkIHRlbGVtZXRyeSBmaWxlICovCgkJCWNvbXB1dGVfZmxhZz0xOwoJCQlzdmVyaWZ5PTI7ICAvKiB0b3VjaCBsaWdodGx5ICovCgkJCXJfdHJhal9mbGFnPTE7CgkJCXN0cmNweShyZWFkX3RyYWpfZmlsZW5hbWUsb3B0YXJnKTsKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0VXNpbmcgcmVhZCB0ZWxlbWV0cnkgZmlsZSBcIiVzXCJcbiIsCgkJCQlyZWFkX3RyYWpfZmlsZW5hbWUpOwoJCQl0cmFqX3ZlcnMoKTsKCQkJcl90cmFqX3NpemUoKTsKCQkJcl90cmFqX2ZkPW9wZW5fcl90cmFqKCk7CgkJCWlmKHJfdHJhal9mZCA9PSAoRklMRSopIDApCgkJCQlleGl0KDIwMCk7CgkJCWJyZWFrOwoJCWNhc2UgJ24nOgkvKiBTZXQgbWluIGZpbGUgc2l6ZSBmb3IgYXV0byBtb2RlICovCgkJCW5mbGFnPTE7CgkJCW1pbmltdW1fZmlsZV9zaXplID0gKG9mZjY0X3QpYXRvaShvcHRhcmcpOwoJCQlpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdrJyB8fAoJCQkJb3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nSycpewoJCQkJOwoJCQl9CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J20nIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdNJyl7CgkJCQltaW5pbXVtX2ZpbGVfc2l6ZSA9IChsb25nIGxvbmcpKDEwMjQgKiBhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2cnIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdHJyl7CgkJCQltaW5pbXVtX2ZpbGVfc2l6ZSA9IChsb25nIGxvbmcpKDEwMjQgKiAxMDI0ICogKGxvbmcgbG9uZylhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKG1pbmltdW1fZmlsZV9zaXplIDwgUkVDTEVOX1NUQVJULzEwMjQpCgkJCQltaW5pbXVtX2ZpbGVfc2l6ZT0ob2ZmNjRfdCkoUkVDTEVOX1NUQVJULzEwMjQpOwoJCQlpZihtaW5pbXVtX2ZpbGVfc2l6ZSA8IHBhZ2Vfc2l6ZS8xMDI0KQoJCQkJbWluaW11bV9maWxlX3NpemU9KG9mZjY0X3QpKHBhZ2Vfc2l6ZS8xMDI0KTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBtaW5pbXVtIGZpbGUgc2l6ZSBvZiAlbGQga2lsb2J5dGVzLlxuIixtaW5pbXVtX2ZpbGVfc2l6ZSk7CiNlbHNlCgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFVzaW5nIG1pbmltdW0gZmlsZSBzaXplIG9mICVsbGQga2lsb2J5dGVzLlxuIixtaW5pbXVtX2ZpbGVfc2l6ZSk7CiNlbmRpZgoJCQlicmVhazsKCQljYXNlICdnJzoJLyogU2V0IG1heGltdW0gZmlsZSBzaXplIGZvciBhdXRvIG1vZGUgKi8KCQkJZ2ZsYWc9MTsKCQkJbWF4aW11bV9maWxlX3NpemUgPSAob2ZmNjRfdClhdG9pKG9wdGFyZyk7CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2snIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdLJyl7CgkJCQk7CgkJCX0KCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nbScgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J00nKXsKCQkJCW1heGltdW1fZmlsZV9zaXplID0gKGxvbmcgbG9uZykoMTAyNCAqIGF0b2kob3B0YXJnKSk7CgkJCX0KCQkJaWYob3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nZycgfHwKCQkJCW9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J0cnKXsKCQkJCW1heGltdW1fZmlsZV9zaXplID0gKGxvbmcgbG9uZykoMTAyNCAqIDEwMjQgKiAobG9uZyBsb25nKWF0b2kob3B0YXJnKSk7CgkJCX0KCQkJaWYobWF4aW11bV9maWxlX3NpemUgPCBSRUNMRU5fU1RBUlQvMTAyNCkKCQkJCW1heGltdW1fZmlsZV9zaXplPShvZmY2NF90KShSRUNMRU5fU1RBUlQvMTAyNCk7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0VXNpbmcgbWF4aW11bSBmaWxlIHNpemUgb2YgJWxkIGtpbG9ieXRlcy5cbiIsbWF4aW11bV9maWxlX3NpemUpOwojZWxzZQoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBtYXhpbXVtIGZpbGUgc2l6ZSBvZiAlbGxkIGtpbG9ieXRlcy5cbiIsbWF4aW11bV9maWxlX3NpemUpOwojZW5kaWYKCQkJYnJlYWs7CgkJY2FzZSAneic6CS8qIFNldCBubyBjcm9zcyBvdmVyICovCgkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdENyb3NzIG92ZXIgb2YgcmVjb3JkIHNpemUgZGlzYWJsZWQuXG4iKTsKCQkJTk9DUk9TU2ZsYWc9MTsKCQkJYnJlYWs7CgkJY2FzZSAneSc6CQkvKiBTZXQgbWluIHJlY29yZCBzaXplIGZvciBhdXRvIG1vZGUgKi8KCQkJeWZsYWc9MTsKCQkJbWluX3JlY19zaXplID0gKChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSkqMTAyNCk7CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2snIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdLJyl7CgkJCQltaW5fcmVjX3NpemUgPSAobG9uZyBsb25nKSgxMDI0ICogYXRvaShvcHRhcmcpKTsKCQkJfQoJCQlpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdtJyB8fAoJCQkJb3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nTScpewoJCQkJbWluX3JlY19zaXplID0gKGxvbmcgbG9uZykoMTAyNCAqIDEwMjQgKiBhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2cnIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdHJyl7CgkJCQltaW5fcmVjX3NpemUgPSAobG9uZyBsb25nKSgxMDI0ICogMTAyNCAqIDEwMjQgKihsb25nIGxvbmcpYXRvaShvcHRhcmcpKTsKCQkJfQoJCQlpZihtaW5fcmVjX3NpemUgPD0gMCkKCQkJCW1pbl9yZWNfc2l6ZT0obG9uZyBsb25nKVJFQ0xFTl9TVEFSVDsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJICAgIAkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0VXNpbmcgTWluaW11bSBSZWNvcmQgU2l6ZSAlbGQgS0JcbiIsIG1pbl9yZWNfc2l6ZS8xMDI0KTsKI2Vsc2UKCSAgICAJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFVzaW5nIE1pbmltdW0gUmVjb3JkIFNpemUgJWxsZCBLQlxuIiwgbWluX3JlY19zaXplLzEwMjQpOwojZW5kaWYKCQkJYnJlYWs7CgkJY2FzZSAncSc6CQkvKiBTZXQgbWF4IHJlY29yZCBzaXplIGZvciBhdXRvIG1vZGUgKi8KCQkJcWZsYWc9MTsKCQkJbWF4X3JlY19zaXplID0gKChsb25nIGxvbmcpKGF0b2kob3B0YXJnKSkqMTAyNCk7CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2snIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdLJyl7CgkJCQltYXhfcmVjX3NpemUgPSAobG9uZyBsb25nKSgxMDI0ICogYXRvaShvcHRhcmcpKTsKCQkJfQoJCQlpZihvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdtJyB8fAoJCQkJb3B0YXJnW3N0cmxlbihvcHRhcmcpLTFdPT0nTScpewoJCQkJbWF4X3JlY19zaXplID0gKGxvbmcgbG9uZykoMTAyNCAqIDEwMjQgKiBhdG9pKG9wdGFyZykpOwoJCQl9CgkJCWlmKG9wdGFyZ1tzdHJsZW4ob3B0YXJnKS0xXT09J2cnIHx8CgkJCQlvcHRhcmdbc3RybGVuKG9wdGFyZyktMV09PSdHJyl7CgkJCQltYXhfcmVjX3NpemUgPSAobG9uZyBsb25nKSgxMDI0ICogMTAyNCAqIDEwMjQgKihsb25nIGxvbmcpYXRvaShvcHRhcmcpKTsKCQkJfQoJCQlpZihtYXhfcmVjX3NpemUgPD0gMCkKCQkJCW1pbl9yZWNfc2l6ZT0obG9uZyBsb25nKVJFQ0xFTl9FTkQ7CgkJCWlmKG1heF9yZWNfc2l6ZSA+IE1BWEJVRkZFUlNJWkUpIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkJcHJpbnRmKCJFcnJvcjogbWF4aW11bSByZWNvcmQgc2l6ZSAlbGQgS0IgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0gYnVmZmVyIHNpemUgJWxkIEtCXG4gIiwKCQkJCQltYXhfcmVjX3NpemUvMTAyNCwgTUFYQlVGRkVSU0laRS8xMDI0KTsKI2Vsc2UKCQkJCXByaW50ZigiRXJyb3I6IG1heGltdW0gcmVjb3JkIHNpemUgJWxsZCBLQiBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSBidWZmZXIgc2l6ZSAlbGxkIEtCXG4gIiwKCQkJCQkobG9uZyBsb25nKShtYXhfcmVjX3NpemUvMTAyNExMKSwgKGxvbmcgbG9uZylNQVhCVUZGRVJTSVpFLzEwMjRMTCk7CiNlbmRpZgoJCQkJZXhpdCgyMyk7CgkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBNYXhpbXVtIFJlY29yZCBTaXplICVsZCBLQlxuIiwgbWF4X3JlY19zaXplLzEwMjQpOwojZWxzZQoJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBNYXhpbXVtIFJlY29yZCBTaXplICVsbGQgS0JcbiIsIG1heF9yZWNfc2l6ZS8xMDI0KTsKI2VuZGlmCgkJCWJyZWFrOwoKCQkvKiAKCQkgKiBUaGUgKyBvcGVyYXRvciBpcyBmb3IgdGhlIG5ldyBleHRlbmRlZCBvcHRpb25zIG1lY2hhbmlzbSAKCQkgKiBTeW50YXggaXMgLSsgZm9sbG93ZWQgYnkgb3B0aW9uIGxldGVyLCBhbmQgaWYgdGhlIG9wdGlubwoJCSAqIHRha2VzIGFuIG9wZXJhbmQgIHRoZW4gaXQgaXMgaW1wbGVtZW50ZWQgYmVsb3cuIEFuIGV4YW1wbGUKCQkgKiAtK2EgYXJnICAgIGlzIHNob3duIGJlbG93LiBUaGlzIGlzIGEgc3ViIG9wdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgoJCSAqIC0rYiAgaXMgc2hvd24gYmVsb3cuIFRoaXMgaXMgYSBzdWIgb3B0aW9uIHdpdGggbm8gYXJndW1lbnQuCgkJICovCgkJY2FzZSAnKyc6CgkJCS8qIHByaW50ZigiUGx1cyBvcHRpb24gPSA+JXM8XG4iLG9wdGFyZyk7Ki8KCQkJc3dpdGNoICgqKChjaGFyICopb3B0YXJnKSkKCQkJewoJCQkJY2FzZSAnYSc6ICAvKiBFeGFtcGxlOiBIYXMgYXJndW1lbnQgKi8KCQkJCQlzdWJhcmc9YXJndltvcHRpbmQrK107CgkJCQkJLyogaWYoc3ViYXJnIT0oY2hhciAqKTApICAgRXJyb3IgY2hlY2tpbmcuICovCgkJCQkJLyogcHJpbnRmKCJQbHVzIG9wdGlvbiBhcmd1bWVudCA9ID4lczxcbiIsc3ViYXJnKTsqLwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnYic6ICAvKiBFeGFtcGxlOiBEb2VzIG5vdCBoYXZlIGFuIGFyZ3VtZW50ICovCgkJCQkJYnJlYWs7CgkJCQljYXNlICdjJzogIC8qIEFyZ3VtZW50IGlzIHRoZSBjb250cm9sbGluZyBob3N0IG5hbWUgKi8KCQkJCQkvKiBJIGFtIGEgY2xpZW50IGZvciBkaXN0cmlidXRlZCBJb3pvbmUgKi8KCQkJCQlzdWJhcmc9YXJndltvcHRpbmQrK107CgkJCQkJaWYoc3ViYXJnPT0oY2hhciAqKTApCgkJCQkJewoJCQkJCSAgICAgcHJpbnRmKCItK2MgdGFrZXMgYW4gb3BlcmFuZCAhIVxuIik7CgkJCQkJICAgICBleGl0KDIwMCk7CgkJCQkJfQoJCQkJCXN0cmNweShjb250cm9sbGluZ19ob3N0X25hbWUsc3ViYXJnKTsKCQkJCQlkaXN0cmlidXRlZD0xOwoJCQkJCWNsaWVudF9pb3pvbmU9MTsKCQkJCQltYXN0ZXJfaW96b25lPTA7CgkJCQkJYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6ICAvKiBBcmd1bWVudCBpcyB0aGUgY29udHJvbGxpbmcgaG9zdCBuYW1lICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhcmc9YXJndltvcHRpbmQrK107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzdWJhcmc9PShjaGFyICopMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItK2ggdGFrZXMgYW4gb3BlcmFuZCAhIVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMjAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweShjb250cm9sbGluZ19ob3N0X25hbWUsc3ViYXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdEhvc3RuYW1lID0gJXNcbiIsY29udHJvbGxpbmdfaG9zdF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJCQkJY2FzZSAnbSc6ICAvKiBJIGFtIHRoZSBjb250cm9sbGluZyBwcm9jZXNzIGZvciBkaXN0cmlidXRlZCBJb3pvbmUgKi8KCQkJCQkgICAvKiBEb2VzIG5vdCBoYXZlIGFuIGFyZ3VtZW50ICovCgkJCQkJc3ViYXJnPWFyZ3Zbb3B0aW5kKytdOwoJCQkJCWlmKHN1YmFyZz09KGNoYXIgKikwKQoJCQkJCXsKCQkJCQkgICAgIHByaW50ZigiLSttIHRha2VzIGFuIG9wZXJhbmQuICggZmlsZW5hbWUgKVxuIik7CgkJCQkJICAgICBleGl0KDIwMSk7CgkJCQkJfQoJCQkJCXN0cmNweShjbGllbnRfZmlsZW5hbWUsc3ViYXJnKTsKCQkJCQlyZXQ9Z2V0X2NsaWVudF9pbmZvKCk7CgkJCQkJaWYocmV0IDw9IDApCgkJCQkJewoJCQkJCQlwcmludGYoIkVycm9yIHJlYWRpbmcgY2xpZW50IGZpbGVcbiIpOwoJCQkJCQlleGl0KDE3OCk7CgkJCQkJfQoJCQkJCWNsaWVudHNfZm91bmQ9cmV0OwoJCQkJCWRpc3RyaWJ1dGVkPTE7CgkJCQkJbWFzdGVyX2lvem9uZT0xOwoJCQkJCWNsaWVudF9pb3pvbmU9MDsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHROZXR3b3JrIGRpc3RyaWJ1dGlvbiBtb2RlIGVuYWJsZWQuXG4iKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ04nOiAgLyogdHVybiBvZmYgdHJ1bmNhdGluZyB0aGUgZmlsZSBiZWZvcmUgd3JpdGUgdGVzdCAqLwoJCQkJCW5vdHJ1bmNhdGUgPSAxOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAndSc6CS8qIFNldCBDUFUgdXRpbGl6YXRpb24gb3V0cHV0IGZsYWcgKi8KCQkJCQljcHV1dGlsZmxhZyA9IDE7CS8qIG9ubHkgdXNlZCBpZiBSKGVwb3J0KSBmbGFnIGlzIGFsc28gc2V0ICovCgkJCQkJZ2V0X3J1c2FnZV9yZXNvbHV0aW9uKCk7CiAgICAJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdENQVSB1dGlsaXphdGlvbiBSZXNvbHV0aW9uID0gJTUuM2Ygc2Vjb25kcy5cbiIsY3B1dGltZV9yZXMpOwoJICAgIAkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRDUFUgdXRpbGl6YXRpb24gRXhjZWwgY2hhcnQgZW5hYmxlZFxuIik7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdzJzogIC8qIENsaWVudHMgb3BlcmF0ZSBpbiBzaWxlbnQgbW9kZS4gKi8KCQkJCQkgICAvKiBEb2VzIG5vdCBoYXZlIGFuIGFyZ3VtZW50ICovCgkJCQkJc2lsZW50PTE7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdkJzogIC8qIERpYWdub3N0aWNzIG1vZGUgKi8KCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQ+Pj4gSS9PIERpYWdub3N0aWMgbW9kZSBlbmFibGVkLiA8PDxcbiIpOwogICAgCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRQZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgYXJlIGludmFsaWQgaW4gdGhpcyBtb2RlLlxuIik7CgkJCQkJZGlhZ192PTE7CgkJCQkJc3ZlcmlmeT0wOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAneCc6ICAvKiBBcmd1bWVudCBpcyB0aGUgbXVsdGlwbGllciBmb3IgcmVjIHNpemUgYW5kIGZpbGUgc2l6ZSAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlpZihzdWJhcmc9PShjaGFyICopMCkKCQkJCQl7CgkJCQkJICAgICBwcmludGYoIi0rYyB0YWtlcyBhbiBvcGVyYW5kICEhXG4iKTsKCQkJCQkgICAgIGV4aXQoMjAwKTsKCQkJCQl9CgkJCQkJbXVsdGlwbGllciA9IGF0b2koc3ViYXJnKTsKCQkJCQlpZihtdWx0aXBsaWVyIDw9MSkKCQkJCQkJbXVsdGlwbGllciA9IDI7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdwJzogIC8qIEFyZ3VtZW50IGlzIHRoZSBwZXJjZW50YWdlIHJlYWQgKi8KCQkJCQlzdWJhcmc9YXJndltvcHRpbmQrK107CgkJCQkJaWYoc3ViYXJnPT0oY2hhciAqKTApCgkJCQkJewoJCQkJCSAgICAgcHJpbnRmKCItK3AgdGFrZXMgYW4gb3BlcmFuZCAhIVxuIik7CgkJCQkJICAgICBleGl0KDIwMCk7CgkJCQkJfQoJCQkJCXBjdF9yZWFkID0gYXRvaShzdWJhcmcpOwoJCQkJCWlmKHBjdF9yZWFkIDwgMSkKCQkJCQkJcGN0X3JlYWQgPSAxOwoJCQkJCWlmKHBjdF9yZWFkID49MTAwKQoJCQkJCQlwY3RfcmVhZCA9IDEwMDsKICAgIAkJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UGVyY2VudCByZWFkIGluIG1peCB0ZXN0IGlzICVkXG4iLHBjdF9yZWFkKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ3QnOiAgLyogU3BlZWQgY29kZSBhY3RpdmF0ZWQgKi8KCQkJCQlzcGVlZF9jb2RlPTE7CgkJCQkJYnJlYWs7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChzb2xhcmlzKQoJCQkJY2FzZSAncic6ICAvKiBSZWFkIHN5bmMgdG9vICovCgkJCQkJcmVhZF9zeW5jPTE7CiAgICAJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFJlYWQgJiBXcml0ZSBzeW5jIG1vZGUgYWN0aXZlLlxuIik7CgkJCQkJYnJlYWs7CiNlbmRpZgojaWZuZGVmIE5PX01BRFZJU0UKCQkJCWNhc2UgJ0EnOiAgLyogQXJndW1lbnQgaXMgbWFkdmlzZSBzZWxlY3RvciAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlhZHZpc2VfZmxhZz0xOwoJCQkJCWFkdmlzZV9vcD1hdG9pKHN1YmFyZyk7CgkJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0TWFkdmlzZSBlbmFibGVkOiAlZFxuIixhZHZpc2Vfb3ApOwoJCQkJCWJyZWFrOwojZW5kaWYKCQkJCWNhc2UgJ24nOgkvKiBTZXQgbm8tcmV0ZXN0ICovCgkJCQkJbm9yZXRlc3QgPSAxOwkKICAgIAkJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0Tm8gcmV0ZXN0IG9wdGlvbiBzZWxlY3RlZFxuIik7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdrJzoJLyogQ29uc3RhbnQgYWdncmVnYXRlIGRhdGEgc2V0IHNpemUgKi8KCQkJCQlhZ2dmbGFnPTE7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdxJzogIC8qIEFyZ3VtZW50IGlzIHRoZSByZXN0IHRpbWUgYmV0d2VlbiB0ZXN0cyBpbiBzZWNvbmRzICovCgkJCQkJc3ViYXJnPWFyZ3Zbb3B0aW5kKytdOwoJCQkJCWlmKHN1YmFyZz09KGNoYXIgKikwKQoJCQkJCXsKCQkJCQkgICAgIHByaW50ZigiLStxIHRha2VzIGFuIG9wZXJhbmQgISFcbiIpOwoJCQkJCSAgICAgZXhpdCgyMDApOwoJCQkJCX0KCQkJCQlyZXN0X3ZhbCA9IChsb25nIGxvbmcpYXRvaShzdWJhcmcpOwoJCQkJCWlmKHJlc3RfdmFsIDw9MCkKCQkJCQkJcmVzdF92YWwgPSAwOwoJCQkJCXJlc3RmPTE7CgkJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0RGVsYXkgJWQgc2Vjb25kcyBiZXR3ZWVuIHRlc3RzIGVuYWJsZWQuXG4iLGF0b2koc3ViYXJnKSk7CgkJCQkJYnJlYWs7CiNpZiBkZWZpbmVkKE9fRFNZTkMpCgkJCQljYXNlICdEJzogIC8qIE9fRFNZTkMgbW9kZSAqLwoJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdD4+PiBPX0RTWU5DIG1vZGUgZW5hYmxlZC4gPDw8XG4iKTsKCQkJCQlvZHN5bmM9MTsKCQkJCQlicmVhazsKI2VuZGlmCgkJCQljYXNlICdsJzogIC8qIFJlY29yZCBsb2NraW5nIG1vZGUgKi8KCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQ+Pj4gUmVjb3JkIGxvY2tpbmcgbW9kZSBlbmFibGVkLiA8PDxcbiIpOwoJCQkJCXJsb2NraW5nPTE7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdMJzogIC8qIFJlY29yZCBsb2NraW5nIG1vZGUgc2hhcmVkIGZpbGVzKi8KCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQ+Pj4gUmVjb3JkIGxvY2tpbmcsIHNoYXJlZCBmaWxlIG1vZGUgZW5hYmxlZC4gPDw8XG4iKTsKCQkJCQlzaGFyZV9maWxlPTE7CgkJCQkJcmxvY2tpbmc9MTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ1YnOiAgLyogTm8gUmVjb3JkIGxvY2tpbmcgc2hhcmVkIGZpbGVzKi8KCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQ+Pj4gU2hhcmVkIGZpbGUgbW9kZSBlbmFibGVkLiA8PDxcbiIpOwoJCQkJCXNoYXJlX2ZpbGU9MTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ0InOiAgLyogU2VxdWVudGlhbCBtaXggKi8KCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHQ+Pj4gU2VxdWVudGlhbCBNaXhlZCB3b3JrbG9hZC4gPDw8XG4iKTsKCQkJCQlzZXFfbWl4PTE7CgkJCQkJYnJlYWs7CiAJCQkJICAgICAgICAvKiBVc2UgYW4gZXhpc3RpbmcgdXNlciBmaWxlLCB0aGF0IGRvZXMKCQkJCQkgbm90IGNvbnRhaW4gSW96b25lJ3MgcGF0dGVybi4gVXNlIGZpbGUKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nLCBidXQgcmVhZCBvbmx5LCBhbmQgbm8gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuIEFsc28sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vIHBhdHRlcm4gdmVyaWZpY2F0aW9uLCBidXQgZG8gdG91Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFnZXMuICovCgkJCQljYXNlICdFJzogIAoJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdD4+PiBObyBWZXJpZnkgbW9kZS4gPDw8XG4iKTsKCQkJCQlzdmVyaWZ5PTI7CgkJCQkJbm9fdW5saW5rPTE7CgkJCQkJbm9fd3JpdGU9MTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ1QnOiAgLyogVGltZSBzdGFtcHMgb24gKi8KCQkJCQlMX2ZsYWc9MTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ1gnOiAvKiBTaG9ydCBjaXJjdWl0IHRlc3QgbW9kZSAqLwoJCQkJCVhfZmxhZyA9IDE7CgkJCQkJc3ZlcmlmeT0xOwoJCQkJCXZlcmlmeT0xOwoJCQkJCWlucF9wYXQgPSAweEJCOwoJCQkJCXBhdHRlcm4gPSAoKGlucF9wYXQgPDwgMjQpIHwgCgkJCQkJICAoaW5wX3BhdCA8PCAxNikgfCAoaW5wX3BhdCA8PCA4KSB8CgkJCQkJICAgaW5wX3BhdCk7CgkgICAgCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFNob3J0IGNpcmN1aXQgbW9kZS4gRm9yXG4iKTsKCSAgICAJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0IGZpbGVzeXN0ZW0gZGV2ZWxvcG1lbnQgdGVzdGluZyBPTkxZICFcbiIpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnWic6IC8qIENvbXBhdGliaWxpdHkgbW9kZSBmb3IgMHhBNSAqLwkKCQkJCQlaX2ZsYWcgPSAxOwoJCQkJCXN2ZXJpZnk9MTsKCQkJCQl2ZXJpZnk9MTsKCQkJCQlpbnBfcGF0ID0gMHhBNTsKCQkJCQlwYXR0ZXJuID0gKChpbnBfcGF0IDw8IDI0KSB8IAoJCQkJCSAgKGlucF9wYXQgPDwgMTYpIHwgKGlucF9wYXQgPDwgOCkgfAoJCQkJCSAgIGlucF9wYXQpOwoJICAgIAkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVc2luZyBvbGQgZGF0YSBzZXRzLlxuIik7CiAgICAJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdCBQZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgbWF5IGJlIGludmFsaWQgaW4gdGhpc1xuIik7CiAgICAJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdCBtb2RlIGR1ZSB0byBwdWJsaXNoZWQgaGFjay5cbiIpOwoJCQkJCWJyZWFrOwojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQkJY2FzZSAnVSc6ICAvKiBXaW5kb3dzIG9ubHkgVW5idWZmZXJkIEkvTyAqLwoJCQkJCXVuYnVmZmVyZWQ9MTsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRVbmJ1ZmZlcmVkIFdpbmRvd3MgQVBJIHVzYWdlLiA+Pj4gVmVyeSBFeHBlcmltZW50YWwgPDw8XG4iKTsKCQkJCQlicmVhazsKI2VuZGlmCgkJCQljYXNlICdLJzogIC8qIFNvbnkgc3BlY2lhbCBmb3IgbWFudWFsIGNvbnRyb2wgb2YgdGVzdCA4ICovCgkJCQkJc3ViYXJnPWFyZ3Zbb3B0aW5kKytdOwoJCQkJCWlmKHN1YmFyZz09KGNoYXIgKikwKQoJCQkJCXsKCQkJCQkgICAgIHByaW50ZigiLStLIHRha2VzIGFuIG9wZXJhbmQgISFcbiIpOwoJCQkJCSAgICAgZXhpdCgyMDQpOwoJCQkJCX0KCQkJCQlLcGx1c19yZWFkZXJzID0gKGludClhdG9pKHN1YmFyZyk7CgkJCQkJaWYoS3BsdXNfcmVhZGVycyA8PTApCgkJCQkJCUtwbHVzX3JlYWRlcnMgPSAxOwoJCQkJCUtwbHVzX2ZsYWc9MTsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHRNYW51YWwgY29udHJvbCBvZiB0ZXN0IDguID4+PiBWZXJ5IEV4cGVyaW1lbnRhbC4gU29ueSBzcGVjaWFsIDw8PFxuIik7CgkJCQkJYnJlYWs7CgkJCQljYXNlICd3JzogIC8qIEFyZ3VtZW50IGlzIHRoZSBwZXJjZW50IG9mIGRlZHVwICovCgkJCQkJICAgLyogU2V0cyBzaXplIG9mIGRlZHVwIHJlZ2lvbiBhY3Jvc3MgZmlsZXMgKi8KCQkJCQlzdWJhcmc9YXJndltvcHRpbmQrK107CgkJCQkJaWYoc3ViYXJnPT0oY2hhciAqKTApCgkJCQkJewoJCQkJCSAgICAgcHJpbnRmKCItK3cgdGFrZXMgYW4gb3BlcmFuZCAhIVxuIik7CgkJCQkJICAgICBleGl0KDIwMCk7CgkJCQkJfQoJCQkJCWRlZHVwID0gYXRvaShzdWJhcmcpOwoJCQkJCWlmKGRlZHVwIDw9MCkKCQkJCQkJZGVkdXAgPSAwOwoJCQkJCWlmKGRlZHVwID4xMDApCgkJCQkJCWRlZHVwID0gMTAwOwoJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdERlZHVwIGFjdGl2YXRlZCAlZCBwZXJjZW50LlxuIixkZWR1cCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICd5JzogIC8qIEFyZ3VtZW50IGlzIHRoZSBwZXJjZW50IG9mIGludGVyaW9yIGRlZHVwICovCgkJCQkJICAgLyogU2V0cyBzaXplIG9mIGRlZHVwIHJlZ2lvbiB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlpZihzdWJhcmc9PShjaGFyICopMCkKCQkJCQl7CgkJCQkJICAgICBwcmludGYoIi0reSB0YWtlcyBhbiBvcGVyYW5kICEhXG4iKTsKCQkJCQkgICAgIGV4aXQoMjAwKTsKCQkJCQl9CgkJCQkJZGVkdXBfaW50ZXJpb3IgPSBhdG9pKHN1YmFyZyk7CgkJCQkJaWYoZGVkdXBfaW50ZXJpb3IgPDApCgkJCQkJCWRlZHVwX2ludGVyaW9yID0gMDsKCQkJCQlpZihkZWR1cF9pbnRlcmlvciA+MTAwKQoJCQkJCQlkZWR1cF9pbnRlcmlvciA9IDEwMDsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHREZWR1cGUgd2l0aGluICYgYWNyb3NzICVkIHBlcmNlbnQuXG4iLGRlZHVwX2ludGVyaW9yKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ0MnOiAgLyogQXJndW1lbnQgaXMgdGhlIHBlcmNlbnQgb2YgZGVkdXBlIHdpdGhpbiAmICFhY3Jvc3MgKi8KCQkJCQkgICAvKiBTZXRzIHNpemUgb2YgZGVkdXAgcmVnaW9uIHdpdGhpbiBhbmQgIWFjcm9zcyBmaWxlcyAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlpZihzdWJhcmc9PShjaGFyICopMCkKCQkJCQl7CgkJCQkJICAgICBwcmludGYoIi0rQyB0YWtlcyBhbiBvcGVyYW5kICEhXG4iKTsKCQkJCQkgICAgIGV4aXQoMjAwKTsKCQkJCQl9CgkJCQkJZGVkdXBfY29tcHJlc3MgPSBhdG9pKHN1YmFyZyk7CgkJCQkJaWYoZGVkdXBfY29tcHJlc3MgPDApCgkJCQkJCWRlZHVwX2NvbXByZXNzID0gMDsKCQkJCQlpZihkZWR1cF9jb21wcmVzcyA+MTAwKQoJCQkJCQlkZWR1cF9jb21wcmVzcyA9IDEwMDsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHREZWR1cGUgd2l0aGluICVkIHBlcmNlbnQuXG4iLGRlZHVwX2NvbXByZXNzKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ1MnOiAgLyogQXJndW1lbnQgaXMgdGhlIHNlZWQgZm9yIGRlZHVwICovCgkJCQkJc3ViYXJnPWFyZ3Zbb3B0aW5kKytdOwoJCQkJCWlmKHN1YmFyZz09KGNoYXIgKikwKQoJCQkJCXsKCQkJCQkgICAgIHByaW50ZigiLStTIHRha2VzIGFuIG9wZXJhbmQgISFcbiIpOwoJCQkJCSAgICAgZXhpdCgyMDApOwoJCQkJCX0KCQkJCQlkZWR1cF9tc2VlZCA9IGF0b2koc3ViYXJnKTsKCQkJCQlpZihkZWR1cF9tc2VlZCA9PTApCgkJCQkJCWRlZHVwX21zZWVkID0gMTsKCQkJCQlzcHJpbnRmKHNwbGFzaFtzcGxhc2hfbGluZSsrXSwiXHREZWR1cCBtYW51YWwgc2VlZCAlZCAuXG4iLGRlZHVwX21zZWVkKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ0gnOiAgLyogQXJndW1lbnQgaXMgaG9zdG5hbWUgb2YgdGhlIFBJVCAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlpZihzdWJhcmc9PShjaGFyICopMCkKCQkJCQl7CgkJCQkJICAgICBwcmludGYoIi0rSCB0YWtlcyBvcGVyYW5kICEhXG4iKTsKCQkJCQkgICAgIGV4aXQoMjAwKTsKCQkJCQl9CgkJCQkJc3RyY3B5KHBpdF9ob3N0bmFtZSxzdWJhcmcpOwoJCQkJCXNwcmludGYoc3BsYXNoW3NwbGFzaF9saW5lKytdLCJcdFBJVF9ob3N0ICVzXG4iLHBpdF9ob3N0bmFtZSk7CgkJCQkJCgkJCQkJYnJlYWs7CgkJCQljYXNlICdQJzogIC8qIEFyZ3VtZW50IGlzIHBvcnQgb2YgdGhlIFBJVCAqLwoJCQkJCXN1YmFyZz1hcmd2W29wdGluZCsrXTsKCQkJCQlpZihzdWJhcmc9PShjaGFyICopMCkKCQkJCQl7CgkJCQkJICAgICBwcmludGYoIi0rUCB0YWtlcyBvcGVyYW5kICEhXG4iKTsKCQkJCQkgICAgIGV4aXQoMjAwKTsKCQkJCQl9CgkJCQkJc3RyY3B5KHBpdF9zZXJ2aWNlLHN1YmFyZyk7CgkJCQkJc3ByaW50ZihzcGxhc2hbc3BsYXNoX2xpbmUrK10sIlx0UElUX3BvcnQgJXNcbiIscGl0X3NlcnZpY2UpOwoJCQkJCWJyZWFrOwoJCQkJZGVmYXVsdDoKCQkJCQlwcmludGYoIlVuc3VwcG9ydGVkIFBsdXMgb3B0aW9uIC0+ICVzIDwtXG4iLG9wdGFyZyk7CgkJCQkJZXhpdCgwKTsKCQkJCQlicmVhazsKCQkJfQkKCQkJYnJlYWs7CgkJfQoJfQoJYmFzZV90aW1lPShsb25nKXRpbWVfc29fZmFyKCk7CglnZXRfcmVzb2x1dGlvbigpOyAJCS8qIEdldCBjbG9jayByZXNvbHV0aW9uICovCglpZihzcGVlZF9jb2RlKQoJewoJCWRvX3NwZWVkX2NoZWNrKGNsaWVudF9pb3pvbmUpOwoJCWV4aXQoMCk7Cgl9CglpZihyX2NvdW50ID4gMSkKCXsKCQlhZmxhZz0xOwoJCXJmbGFnPTA7CgkJTk9DUk9TU2ZsYWc9MTsKCX0KCWlmKHNfY291bnQgPiAxKQoJewoJCWFmbGFnPTE7CgkJc2ZsYWc9MDsKCQlOT0NST1NTZmxhZz0xOwoJfQoJLyoKICAgICAgICAgKiBJZiBub3QgaW4gc2lsZW50IG1vZGUgdGhlbiBkaXNwbGF5IHRoZSBzcGxhc2ggc2NyZWVuLgoJICovCglmb3IoaT0wO2k8c3BsYXNoX2xpbmU7aSsrKQoJCWlmKCFzaWxlbnQpIHByaW50ZigiJXMiLHNwbGFzaFtpXSk7CgkvKgoJICogU2F2ZSB0aGUgY29tbWFuZCBsaW5lIGZvciBsYXRlciAKCSAqLwoJcmVjb3JkX2NvbW1hbmRfbGluZShhcmdjc2F2ZSwgYXJndnNhdmUpOwoKCWlmKHBmbGFnKSAvKiBBbGxvY2F0ZSBhZnRlciBjYWNoZV9zaXplIGlzIHNldCAqLwoJewoJCWFsbG9jX3BidWYoKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CgkJaWYobWF4dCA+IGNsaWVudHNfZm91bmQpCgkJewoJCQlwcmludGYoIllvdSBjYW4gbm90IHNwZWNpZnkgbW9yZSB0aHJlYWRzL3Byb2Nlc3NlcyB0aGFuIHlvdSBoYXZlIGluIHRoZSBjbGllbnQgZmlsZSBsaXN0XG4iKTsKCQkJZXhpdCgyMDIpOwoJCX0KCX0KCQoJaWYoIU9QU19mbGFnICYmICFNU19mbGFnKQoJewoJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRPdXRwdXQgaXMgaW4gS2J5dGVzL3NlY1xuIik7Cgl9CglpZiAobWluX3JlY19zaXplID4gbWF4X3JlY19zaXplKSB7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIkVycm9yOiBtaW5pbXVtIHJlY29yZCBzaXplICVsZCBLQiBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSByZWNvcmQgc2l6ZSAlbGQgS0JcbiAiLAoJCQltaW5fcmVjX3NpemUvMTAyNCwgbWF4X3JlY19zaXplLzEwMjQpOwojZWxzZQoJCXByaW50ZigiRXJyb3I6IG1pbmltdW0gcmVjb3JkIHNpemUgJWxsZCBLQiBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSByZWNvcmQgc2l6ZSAlbGxkIEtCXG4gIiwKCQkJbWluX3JlY19zaXplLzEwMjQsIG1heF9yZWNfc2l6ZS8xMDI0KTsKI2VuZGlmCgkJZXhpdCgyMyk7CiAgICAgICAgfQoJb3JpZ19taW5fcmVjX3NpemU9bWluX3JlY19zaXplOwoJb3JpZ19tYXhfcmVjX3NpemU9bWF4X3JlY19zaXplOwoJLyoKIAkgKiBObyB0ZWxlbWV0cnkgZmlsZXMuLi4ganVzdCBvcHRpb24gc2VsZWN0ZWQgCgkgKi8KCWlmKGNvbXB1dGVfZmxhZyAmJiBqZmxhZyAgJiYgIShyX3RyYWpfZmxhZyB8fCB3X3RyYWpfZmxhZykpCgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENvbXB1dGUgdGltZSAlZiBzZWNvbmRzIGZvciByZWFkcyBhbmQgd3JpdGVzLlxuIixjb21wdXRlX3RpbWUpOwoJLyoKIAkgKiBSZWFkIHRlbGVtZXRyeSBmaWxlIGFuZCBvcHRpb24gc2VsZWN0ZWQKCSAqLwoJaWYoY29tcHV0ZV9mbGFnICYmIHJfdHJhal9mbGFnICYmICF3X3RyYWpfZmxhZykKCXsKCQlpZihyX3RyYWpfaXRlbXM9PTMpCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q29tcHV0ZSB0aW1lIGZyb20gdGVsZW1ldHJ5IGZpbGVzIGZvciByZWFkcy5cbiIpOwoJCX0KCQllbHNlCgkJewoJCQlpZihqZmxhZykKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDb21wdXRlIHRpbWUgJWYgc2Vjb25kcyBmb3IgcmVhZHMuXG4iLGNvbXB1dGVfdGltZSk7CgkJfQoJCWlmKGpmbGFnKQoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q29tcHV0ZSB0aW1lICVmIHNlY29uZHMgZm9yIHdyaXRlcy5cbiIsY29tcHV0ZV90aW1lKTsKCX0KCS8qCiAJICogV3JpdGUgdGVsZW1ldHJ5IGZpbGUgYW5kIG9wdGlvbiBzZWxlY3RlZAoJICovCglpZihjb21wdXRlX2ZsYWcgJiYgIXJfdHJhal9mbGFnICYmIHdfdHJhal9mbGFnKQoJewoJCWlmKHdfdHJhal9pdGVtcz09MykKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDb21wdXRlIHRpbWUgZnJvbSB0ZWxlbWV0cnkgZmlsZXMgZm9yIHdyaXRlcy5cbiIpOwoJCX0KCQllbHNlCgkJewoJCQlpZihqZmxhZykKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDb21wdXRlIHRpbWUgJWYgc2Vjb25kcyBmb3Igd3JpdGVzLlxuIixjb21wdXRlX3RpbWUpOwoJCX0KCQlpZihqZmxhZykKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENvbXB1dGUgdGltZSAlZiBzZWNvbmRzIGZvciByZWFkcy5cbiIsY29tcHV0ZV90aW1lKTsKCX0KCWlmKGNvbXB1dGVfZmxhZyAmJiByX3RyYWpfZmxhZyAmJiB3X3RyYWpfZmxhZyAmJiBqZmxhZykKCXsKCQlpZihyX3RyYWpfaXRlbXM9PTMpCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q29tcHV0ZSB0aW1lIGZyb20gdGVsZW1ldHJ5IGZpbGVzIGZvciByZWFkcy5cbiIpOwoJCX0KCQllbHNlCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q29tcHV0ZSB0aW1lICVmIHNlY29uZHMgZm9yIHJlYWRzLlxuIixjb21wdXRlX3RpbWUpOwoJCX0KCQlpZih3X3RyYWpfaXRlbXM9PTMpIAoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENvbXB1dGUgdGltZSBmcm9tIHRlbGVtZXRyeSBmaWxlcyBmb3Igd3JpdGVzLlxuIik7CgkJfQoJCWVsc2UKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDb21wdXRlIHRpbWUgJWYgc2Vjb25kcyBmb3Igd3JpdGVzLlxuIixjb21wdXRlX3RpbWUpOwoJCX0KCX0KCWlmKGNvbXB1dGVfZmxhZyAmJiByX3RyYWpfZmxhZyAmJiB3X3RyYWpfZmxhZyAmJiAhamZsYWcpCgl7CgkJaWYocl90cmFqX2l0ZW1zPT0zKQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENvbXB1dGUgdGltZSBmcm9tIHRlbGVtZXRyeSBmaWxlcyBmb3IgcmVhZHMuXG4iKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE5vIGNvbXB1dGUgdGltZSBmb3IgcmVhZHMuXG4iKTsKCQl9CgoJCWlmKHdfdHJhal9pdGVtcz09MykgCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q29tcHV0ZSB0aW1lIGZyb20gdGVsZW1ldHJ5IGZpbGVzIGZvciB3cml0ZXMuXG4iKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE5vIGNvbXB1dGUgdGltZSBmb3Igd3JpdGVzLlxuIik7CgkJfQoJfQoKICAgICAgICAvKiBFbmZvcmNlIG9ubHkgd3JpdGUscmV3cml0ZSxyZWFkLHJlcmVhZCAqLwogICAgICAgIGlmKHdfdHJhal9mbGFnIHx8IHJfdHJhal9mbGFnKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpPTI7aTxzaXplb2YoZnVuYykvc2l6ZW9mKGNoYXIgKik7aSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZihzZXFfbWl4ICYmIChpPT04KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3Rlc3RbaV0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCglpZihyX3RyYWpfZmxhZykKCXsKCQlpZihpbmNsdWRlX3Rlc3RbUkVBREVSX1RFU1RdID09IDApIAoJCXsKCQkJaW5jbHVkZV90ZXN0W1dSSVRFUl9URVNUXT0xOwoJCQlpbmNsdWRlX3Rlc3RbUkVBREVSX1RFU1RdPTE7CgkJCWluY2x1ZGVfdGZsYWc9MTsKCQl9Cgl9CglpZih3X3RyYWpfZmxhZykKCXsKCQlpZihpbmNsdWRlX3Rlc3RbV1JJVEVSX1RFU1RdID09IDApIAoJCXsKCQkJaW5jbHVkZV90ZXN0W1dSSVRFUl9URVNUXT0xOwoJCQlpbmNsdWRlX3RmbGFnPTE7CgkJfQoJfQoJaWYod190cmFqX2ZsYWcgJiYgd190cmFqX2ZzaXplICE9IDApCgkJa2lsb2J5dGVzNjQ9d190cmFqX2ZzaXplLzEwMjQ7CglpZihyX3RyYWpfZmxhZyAmJiByX3RyYWpfZnNpemUgIT0gMCkKCQlraWxvYnl0ZXM2ND1yX3RyYWpfZnNpemUvMTAyNDsKCglpZiggc3ZlcmlmeT09MCAmJiAod190cmFqX2ZsYWcgfHwgcl90cmFqX2ZsYWcpKQoJewoJCXByaW50ZigiXG5cdEZ1bGwgdmVyaWZpY2F0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGVsZW1ldHJ5IG1vZGUuXG5cbiIpOwoJCWV4aXQoMTcpOwoJfQoJOwoJaWYoZGlzcnVwdF9mbGFnICYmKHdfdHJhal9mbGFnIHx8IHJfdHJhal9mbGFnKSApCgl7CgkJcHJpbnRmKCJcblx0RGlzcnVwdCBub3Qgc3VwcG9ydGVkIGluIHRlbGVtZXRyeSBtb2RlLlxuXG4iKTsKCQlleGl0KDE3KTsKCX0KCWlmKGFmbGFnICYmKHdfdHJhal9mbGFnIHx8IHJfdHJhal9mbGFnKSApCgl7CgkJcHJpbnRmKCJcblx0QXV0byBtb2RlIG5vdCBzdXBwb3J0ZWQgaW4gdGVsZW1ldHJ5IG1vZGUuXG4iKTsKCQlwcmludGYoIlx0VHJ5OiAgIC1pIDAgLWkgMSBcblxuIik7CgkJZXhpdCgxNyk7Cgl9CglpZihzZmxhZyAmJiB3X3RyYWpfZmxhZyApCgl7CgkJcHJpbnRmKCJcblx0U2l6ZSBvZiBmaWxlIGlzIGRldGVybWluZWQgYnkgdGVsZW1ldHJ5IGZpbGUuXG5cbiIpOwoJCWV4aXQoMTcpOwoJfQoJaWYocmZsYWcgJiYgd190cmFqX2ZsYWcgKQoJewoJCXByaW50ZigiXG5cdFJlY29yZCBzaXplIG9mIGZpbGUgaXMgZGV0ZXJtaW5lZCBieSB0ZWxlbWV0cnkgZmlsZS5cblxuIik7CgkJZXhpdCgxNyk7Cgl9CglpZihzdHJpZGVfZmxhZyAmJiAod190cmFqX2ZsYWcgfHwgcl90cmFqX2ZsYWcpKQoJewoJCXByaW50ZigiXG5cdFN0cmlkZSBzaXplIGlzIGRldGVybWluZWQgYnkgdGVsZW1ldHJ5IGZpbGUuXG5cbiIpOwoJCWV4aXQoMTcpOwoJfQoJaWYodHJmbGFnICYmIE1TX2ZsYWcpCgl7CgkJcHJpbnRmKCJcblx0TWljcm9zZWNvbmQgbW9kZSBub3Qgc3VwcG9ydGVkIGluIHRocm91Z2hwdXQgbW9kZS5cblxuIik7CgkJZXhpdCgxNyk7Cgl9CglpZiAodHJmbGFnCS8qIHRocm91Z2hwdXQgbW9kZSwgZG9uJ3QgYWxsb3cgYXV0by1tb2RlIG9wdGlvbnM6ICovCgkJJiYgKGF1dG9fbW9kZSB8fCBhZmxhZyB8fCB5ZmxhZyB8fCBxZmxhZyB8fCBuZmxhZyB8fCBnZmxhZykpCgl7CgkJcHJpbnRmKCJcblx0Q2FuIG5vdCBtaXggdGhyb3VnaHB1dCBtb2RlIGFuZCBhdXRvLW1vZGUgZmxhZ3MuXG5cbiIpOwoJCWV4aXQoMTcpOwoJfQoJaWYoZmZsYWcgJiYgdHJmbGFnKQoJewoJCXByaW50ZigiXG5cdFlvdSBtdXN0IHVzZSAtRiB3aGVuIHVzaW5nIG11bHRpcGxlIHRocmVhZHMgb3IgcHJvY2Vzc2VzLlxuXG4iKTsKCQlleGl0KDE3KTsKCX0KCWlmKGFmbGFnICYmIG1mZmxhZykKCXsKCQlwcmludGYoIlxuXHRZb3UgbXVzdCB1c2UgLWYgd2hlbiB1c2luZyBhdXRvIG1vZGUuXG5cbiIpOwoJCWV4aXQoMTcpOwoJfQoJaWYoYXN5bmNfZmxhZyAmJiBtbWFwZmxhZykKCXsKCQlwcmludGYoIlxuXHRTb3JyeSAuLi4gT25seSBtbWFwIG9yIGFzeW5jIGJ1dCBub3QgYm90aFxuXG4iKTsKCQlleGl0KDE4KTsKCX0KI2lmbmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCXsKCQlwcmludGYoIlxuXHRTb3JyeSAuLi4gVGhpcyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgYXN5bmMgSS9PXG5cbiIpOwoJCWV4aXQoMTkpOwoJfQojZW5kaWYKCWlmKG5vX3dyaXRlKQoJewoJICAgaWYoIWluY2x1ZGVfdGZsYWcpCgkgICB7CgkgICAgIHByaW50ZigiWW91IG11c3Qgc3BlY2lmeSB3aGljaCB0ZXN0cyAoIC1pICMgKSB3aGVuIHVzaW5nIC0rRVxuIik7CgkgICAgIGV4aXQoMTkpOwoJICAgfQoJfQoJaWYoaW5jbHVkZV90ZmxhZykKCXsKCQlmb3IoaT0wO2k8c2l6ZW9mKGZ1bmMpL3NpemVvZihjaGFyICopO2krKykKCQkJaWYoaW5jbHVkZV90ZXN0W2ldKQoJCQkJaW5jbHVkZV9tYXNrfD0obG9uZyBsb25nKSgxPDxpKTsKCQkvKiBwcmludGYoIj4+ICVsbHgiLGluY2x1ZGVfbWFzayk7ICBIRVJFICovCgl9CglpZihub193cml0ZSkgLyogRGlzYWJsZSBpZiBhbnkgd3JpdGVyIHdvdWxkIGRpc3R1cmJlIGV4aXN0aW5nIGZpbGUgKi8KCXsKCSAgIGlmKGluY2x1ZGVfdGVzdFswXSB8fCBpbmNsdWRlX3Rlc3RbNF0gfHwKCSAgICAgIGluY2x1ZGVfdGVzdFs2XSB8fCBpbmNsdWRlX3Rlc3RbOF0gfHwgaW5jbHVkZV90ZXN0WzldIHx8CiAgICAgICAgICAgICAgaW5jbHVkZV90ZXN0WzExXSkKCSAgIHsKCSAgICAgIHByaW50ZigiWW91IG11c3QgZGlzYWJsZSBhbnkgdGVzdCB0aGF0IHdyaXRlcyB3aGVuIHVzaW5nIC0rRVxuIik7CgkgICAgICBleGl0KDIwKTsKCSAgIH0KCX0KCWlmKG5vX3dyaXRlKSAvKiBVc2VyIG11c3Qgc3BlY2lmeSB0aGUgZXhpc3RpbmcgZmlsZSBuYW1lICovCgl7CgkgICBpZighKGZmbGFnIHwgbWZmbGFnKSkKCSAgIHsKCSAgICAgIHByaW50ZigiWW91IG11c3QgdXNlIC1mIG9yIC1GIHdoZW4gdXNpbmcgLStFXG4iKTsKCSAgICAgIGV4aXQoMjApOwoJICAgfQoJfQoJaWYoaF9mbGFnICYmIGtfZmxhZykKCXsKCQlwcmludGYoIlxuXHRDYW4gbm90IGRvIGJvdGggLUggYW5kIC1rXG4iKTsKCQlleGl0KDIwKTsKCX0KCWlmKChkZWR1cCB8IGRlZHVwX2ludGVyaW9yKSAmJiBkaWFnX3YpCgl7CgkJcHJpbnRmKCJcblx0Q2FuIG5vdCBkbyBib3RoIC0rZCBhbmQgLSt3XG4iKTsKCQlleGl0KDIwKTsKCX0KCQkKCWlmKCFhZmxhZyAmJiAhcmZsYWcpCgkJbWF4X3JlY19zaXplPW1pbl9yZWNfc2l6ZTsKCglpbml0X3JlY29yZF9zaXplcyhtaW5fcmVjX3NpemUsbWF4X3JlY19zaXplKTsKICAgIAlpZighc2lsZW50KSBwcmludGYoIlx0VGltZSBSZXNvbHV0aW9uID0gJTEuNmYgc2Vjb25kcy5cbiIsdGltZV9yZXMpOwojaWZkZWYgTk9fUFJJTlRfTExECiAgICAJaWYoIXNpbGVudCkgcHJpbnRmKCJcdFByb2Nlc3NvciBjYWNoZSBzaXplIHNldCB0byAlbGQgS2J5dGVzLlxuIixjYWNoZV9zaXplLzEwMjQpOwogICAgCWlmKCFzaWxlbnQpIHByaW50ZigiXHRQcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplIHNldCB0byAlbGQgYnl0ZXMuXG4iLGNhY2hlX2xpbmVfc2l6ZSk7CglpZighc2lsZW50KSBwcmludGYoIlx0RmlsZSBzdHJpZGUgc2l6ZSBzZXQgdG8gJWxkICogcmVjb3JkIHNpemUuXG4iLHN0cmlkZSk7CiNlbHNlCiAgICAJaWYoIXNpbGVudCkgcHJpbnRmKCJcdFByb2Nlc3NvciBjYWNoZSBzaXplIHNldCB0byAlbGQgS2J5dGVzLlxuIixjYWNoZV9zaXplLzEwMjQpOwogICAgCWlmKCFzaWxlbnQpIHByaW50ZigiXHRQcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplIHNldCB0byAlbGQgYnl0ZXMuXG4iLGNhY2hlX2xpbmVfc2l6ZSk7CglpZighc2lsZW50KSBwcmludGYoIlx0RmlsZSBzdHJpZGUgc2l6ZSBzZXQgdG8gJWxsZCAqIHJlY29yZCBzaXplLlxuIixzdHJpZGUpOwojZW5kaWYKCWlmKCFyZmxhZykKCQlyZWNsZW49KGxvbmcgbG9uZyk0MDk2OwoKCWlmKHVmbGFnICYmICFsZmxhZykKCQludW1fY2hpbGQ9bWludCA9IDE7CglpZihsZmxhZyAmJiAhdWZsYWcpCgkJbWF4dCA9IG1pbnQ7CglpZih1c2VfdGhyZWFkKQoJCXBvcnQ9InRocmVhZCI7CgllbHNlCgkJcG9ydD0icHJvY2VzcyI7CglpZihsZmxhZyB8fCB1ZmxhZyl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlpZighc2lsZW50KSBwcmludGYoIlx0TWluICVzID0gJWxkIFxuIixwb3J0LG1pbnQpOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNYXggJXMgPSAlbGQgXG4iLHBvcnQsbWF4dCk7CiNlbHNlCgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiAlcyA9ICVsbGQgXG4iLHBvcnQsbWludCk7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1heCAlcyA9ICVsbGQgXG4iLHBvcnQsbWF4dCk7CiNlbmRpZgoJfQoJaWYodHJmbGFnKQoJewoJCWlmKG51bV9jaGlsZCA+IDEpCgkJewoJCQlpZih1c2VfdGhyZWFkKQoJCQl7CgkJCQlwb3J0PSJ0aHJlYWRzIjsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXBvcnQ9InByb2Nlc3NlcyI7CgkJCX0KCQl9CgojaWZkZWYgTk9fUFJJTlRfTExECgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdFRocm91Z2hwdXQgdGVzdCB3aXRoICVsZCAlc1xuIiwgbnVtX2NoaWxkLHBvcnQpOwojZWxzZQoJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRUaHJvdWdocHV0IHRlc3Qgd2l0aCAlbGxkICVzXG4iLCBudW1fY2hpbGQscG9ydCk7CiNlbmRpZgoJfQogICAgICAgIG51bXJlY3M2NCA9IChsb25nIGxvbmcpKGtpbG9ieXRlczY0KjEwMjQpL3JlY2xlbjsKICAgICAgICBpZiAocmVjbGVuID4gIChsb25nIGxvbmcpTUFYQlVGRkVSU0laRSkgewojaWZkZWYgTk9fUFJJTlRfTExECiAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yOiBNYXhpbXVtIHJlY29yZCBsZW5ndGggaXMgJWxkIGJ5dGVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWEJVRkZFUlNJWkUpOwojZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvcjogTWF4aW11bSByZWNvcmQgbGVuZ3RoIGlzICVsbGQgYnl0ZXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylNQVhCVUZGRVJTSVpFKTsKI2VuZGlmCiAgICAgICAgICAgICAgICBleGl0KDIxKTsKICAgICAgICB9CiAgICAgICAgaWYgKHJlY2xlbiA8IChsb25nIGxvbmcpTUlOQlVGRkVSU0laRSkgewojaWZkZWYgTk9fUFJJTlRfTExECiAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yOiBNaW5pbXVtIHJlY29yZCBsZW5ndGggaXMgJWxkIGJ5dGVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTkJVRkZFUlNJWkUpOwojZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvcjogTWluaW11bSByZWNvcmQgbGVuZ3RoIGlzICVsbGQgYnl0ZXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylNSU5CVUZGRVJTSVpFKTsKI2VuZGlmCiAgICAgICAgICAgICAgICBleGl0KDIyKTsKICAgICAgICB9CgkvKiBPbmx5IGJ6ZXJvIG9yIGZpbGwgdGhhdCB3aGljaCB5b3Ugd2lsbCB1c2UuIFRoZSBidWZmZXIgaXMgdmVyeSBsYXJnZSAqLwoJaWYodmVyaWZ5ICkJCgl7CgkJZmlsbF9idWZmZXIoKGNoYXIgKilidWZmZXIsbF9taW4ocmVjbGVuLChsb25nIGxvbmcpY2FjaGVfc2l6ZSksKGxvbmcgbG9uZylwYXR0ZXJuLChjaGFyKXN2ZXJpZnksKGxvbmcgbG9uZykwKTsKCQlpZihwZmxhZykKCQkJZmlsbF9idWZmZXIoKGNoYXIgKilwYnVmZmVyLGxfbWluKHJlY2xlbiwobG9uZyBsb25nKWNhY2hlX3NpemUpLChsb25nIGxvbmcpcGF0dGVybiwoY2hhcilzdmVyaWZ5LChsb25nIGxvbmcpMCk7CgkJaWYobWZsYWcpCgkJCWZpbGxfYnVmZmVyKChjaGFyICopbWJ1ZmZlcixsX21pbihyZWNsZW4sKGxvbmcgbG9uZyljYWNoZV9zaXplKSwobG9uZyBsb25nKXBhdHRlcm4sKGNoYXIpc3ZlcmlmeSwobG9uZyBsb25nKTApOwoJfQoJZWxzZQoJewoJCWJ6ZXJvKGJ1ZmZlciwoc2l6ZV90KWxfbWluKHJlY2xlbiwobG9uZyBsb25nKWNhY2hlX3NpemUpKTsKCX0KCiNpZm5kZWYgTk9fVEhSRUFEUwojaWZkZWYgX0hQVVhfU09VUkNFCglpZihpb3pfcHJvY2Vzc29yX2JpbmQpCgl7CgkJIGJpbmRfY3B1PWJlZ2luX3Byb2M7CgkJIHB0aHJlYWRfcHJvY2Vzc29yX2JpbmRfbnAoUFRIUkVBRF9CSU5EX0ZPUkNFRF9OUCwKICAgICAgICAgICAgICAgICAgICAgICAgIChwdGhyZWFkX3NwdV90ICopJmFud3NlciwgKHB0aHJlYWRfc3B1X3QpYmluZF9jcHUsIHB0aHJlYWRfc2VsZigpKTsKCQlteV9uYXAoNDApOwkvKiBTd2l0Y2ggdG8gbmV3IGNwdSAqLwoJfQojZW5kaWYKI2VuZGlmCglvcmlnX3NpemU9a2lsb2J5dGVzNjQ7CglpZih0cmZsYWcpewoJICAgICh2b2lkKW11bHRpX3Rocm91Z2hwdXRfdGVzdChtaW50LG1heHQpOwoJICAgIGdvdG8gb3V0OwoJfQoJaWYodHJmbGFnICYmIChtaW50ID09IG1heHQpKXsKCQlhdXRvX21vZGU9MDsKCQl0aHJvdWdocHV0X3Rlc3QoKTsKCSAgICAJZ290byBvdXQ7Cgl9CiAgICAJaWYgKGFmbGFnKSB7CgkJcHJpbnRfaGVhZGVyKCk7CgkJYXV0b190ZXN0KCk7CgkJZ290byBvdXQ7Cgl9IAoJcHJpbnRfaGVhZGVyKCk7Cgkodm9pZCkgYmVnaW4oa2lsb2J5dGVzNjQscmVjbGVuKTsKb3V0OgoJaWYocl90cmFqX2ZsYWcpCgkJZmNsb3NlKHJfdHJhal9mZCk7CglpZih3X3RyYWpfZmxhZykKCQlmY2xvc2Uod190cmFqX2ZkKTsKCWlmICghbm9fdW5saW5rKQoJewoJCWlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVswXSkpCgkgICAgICAJICAgdW5saW5rKGR1bW15ZmlsZVswXSk7CS8qIGRlbGV0ZSB0aGUgZmlsZSAqLwoJfQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbmlvem9uZSB0ZXN0IGNvbXBsZXRlLlxuIik7CglpZihyZXNfcHJvYikKCXsKCQlwcmludGYoIlRpbWVyIHJlc29sdXRpb24gaXMgcG9vci4gU29tZSBzbWFsbCB0cmFuc2ZlcnMgbWF5IGhhdmUgXG4iKTsKCQlwcmludGYoInJlcG9ydGVkIGluYWNjdXJhdGUgcmVzdWx0cy4gU2l6ZXMgJWxkIEtieXRlcyBhbmQgYmVsb3cuXG4iLAoJCQkobG9uZykocmVjX3Byb2IvKGxvbmcgbG9uZykxMDI0KSk7Cgl9CgoJaWYoUmZsYWcgJiYgIXRyZmxhZyl7CgkJZHVtcF9leGNlbCgpOwoJfQoJcmV0dXJuKDApOwkKfQoKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnJlY29yZF9jb21tYW5kX2xpbmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQojZWxzZQp2b2lkCnJlY29yZF9jb21tYW5kX2xpbmUoYXJnYywgYXJndikKaW50IGFyZ2M7CmNoYXIgKiphcmd2OwojZW5kaWYKewoJaW50IGl4LCBsZW4gPSAwOwoKCS8qIHByaW50IGFuZCBzYXZlIHRoZSBlbnRpcmUgY29tbWFuZCBsaW5lICovCglpZighc2lsZW50KSBwcmludGYoIlx0Q29tbWFuZCBsaW5lIHVzZWQ6Iik7Cglmb3IgKGl4PTA7IGl4IDwgYXJnYzsgaXgrKykgewoJCWlmKCFzaWxlbnQpIHByaW50ZigiICVzIiwgYXJndltpeF0pOwoJCWlmICgobGVuICsgc3RybGVuKGFyZ3ZbaXhdKSkgPCBzaXplb2YoY29tbWFuZF9saW5lKSkgewoJCQlzdHJjYXQgKGNvbW1hbmRfbGluZSwgYXJndltpeF0pOwoJCQlzdHJjYXQgKGNvbW1hbmRfbGluZSwgIiAiKTsKCQkJbGVuICs9IHN0cmxlbihhcmd2W2l4XSkgKyAxOwoJCX0KCQllbHNlIHsKCQkJcHJpbnRmICgiQ29tbWFuZCBsaW5lIHRvbyBsb25nIHRvIHNhdmUgY29tcGxldGVseS5cbiIpOwoJCQlicmVhazsKCQl9Cgl9CglpZighc2lsZW50KSBwcmludGYoIlxuIik7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBCRUdJTigpCQkJCQkJCQkgKi8KLyogVGhpcyBpcyB0aGUgbWFpbiB3b3JrIGhvcnNlLiBJdCBpcyBjYWxsZWQgZnJvbSBtYWluIGFuZCBmcm9tIAkgKi8KLyogYXV0b190ZXN0LiBUaGUgY2FsbGVyIHByb3ZpZGVzIHRoZSBzaXplIG9mIGZpbGUgYW5kIHRoZSByZWNvcmQgbGVuZ3RoLiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCmJlZ2luKG9mZjY0X3Qga2lsb3M2NCxsb25nIGxvbmcgcmVjbGVuZ3RoKQojZWxzZQp2b2lkCmJlZ2luKGtpbG9zNjQscmVjbGVuZ3RoKQpvZmY2NF90IGtpbG9zNjQ7CmxvbmcgbG9uZyByZWNsZW5ndGg7CiNlbmRpZgp7Cglsb25nIGxvbmcgbnVtX3Rlc3RzLHRlc3RfbnVtLGksajsKCWxvbmcgbG9uZyBkYXRhMVtNQVhURVNUU10sIGRhdGEyW01BWFRFU1RTXTsKCW51bV90ZXN0cyA9IHNpemVvZihmdW5jKS9zaXplb2YoY2hhciAqKTsKI2lmIGRlZmluZWQoSEFWRV9QUkVBRCkgCglpZighRWZsYWcpCgl7CiNpZiBkZWZpbmVkKEhBVkVfUFJFQUQpICYmIGRlZmluZWQoSEFWRV9QUkVBRFYpCgkJbnVtX3Rlc3RzIC09IDQ7CiNlbHNlCgkJbnVtX3Rlc3RzIC09IDI7CiNlbmRpZgoJCWlmKG1tYXBmbGFnIHx8IGFzeW5jX2ZsYWcpCgkJewoJCQludW1fdGVzdHMgLT0gMjsKCQl9Cgl9CgllbHNlCgl7CgkJaWYobW1hcGZsYWcgfHwgYXN5bmNfZmxhZykKI2lmIGRlZmluZWQoSEFWRV9QUkVBRCkgJiYgZGVmaW5lZChIQVZFX1BSRUFEVikKCQkJbnVtX3Rlc3RzIC09IDY7CiNlbHNlCgkJCW51bV90ZXN0cyAtPSA0OwojZW5kaWYKCX0KI2Vsc2UKCWlmKG1tYXBmbGFnIHx8IGFzeW5jX2ZsYWcpCgl7CgkJbnVtX3Rlc3RzIC09IDI7Cgl9CiNlbmRpZgoKCWlmKFJXT05MWWZsYWcpIG51bV90ZXN0cyA9IDI7CQkvKiBrY29sbGlucyA4LTIxLTk2Ki8KCXN5bmMoKTsgCQkvKiBqdXN0IGluIGNhc2UgdGhlcmUgd2VyZSBzb21lIGRpcnR5ICovCglzeW5jKCk7CglraWxvYnl0ZXM2ND1raWxvczY0OwoJcmVjbGVuPXJlY2xlbmd0aDsKCW51bXJlY3M2NCA9IChraWxvYnl0ZXM2NCoxMDI0KS9yZWNsZW47CglzdG9yZV92YWx1ZShraWxvYnl0ZXM2NCk7CglpZihyX3RyYWpfZmxhZyB8fCB3X3RyYWpfZmxhZykKCQlzdG9yZV92YWx1ZSgob2ZmNjRfdCkwKTsKCWVsc2UJCgkJc3RvcmVfdmFsdWUoKG9mZjY0X3QpKHJlY2xlbi8xMDI0KSk7CgojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiUxNmxkIixraWxvYnl0ZXM2NCk7CglpZihyX3RyYWpfZmxhZyB8fCB3X3RyYWpfZmxhZykKCXsKCQlpZighc2lsZW50KSBwcmludGYoIiU4bGQiLDApOwoJfQoJZWxzZQoJewoJCWlmKCFzaWxlbnQpIHByaW50ZigiJThsZCIscmVjbGVuLzEwMjQpOwoJfQojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIlMTZsbGQiLGtpbG9ieXRlczY0KTsKCWlmKHJfdHJhal9mbGFnIHx8IHdfdHJhal9mbGFnKQoJewoJCWlmKCFzaWxlbnQpIHByaW50ZigiJThsbGQiLChsb25nIGxvbmcgKTApOwoJfQoJZWxzZQoJewoJCWlmKCFzaWxlbnQpIHByaW50ZigiJThsbGQiLHJlY2xlbi8xMDI0KTsKCX0KI2VuZGlmCglpZihpbmNsdWRlX3RmbGFnKQoJewoJCWZvcihpPTA7aTxudW1fdGVzdHM7aSsrKQoJCXsKCQkJaWYoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZykoMTw8aSkpCgkJCSAgIGZ1bmNbaV0oa2lsb2J5dGVzNjQscmVjbGVuLCZkYXRhMVtpXSwmZGF0YTJbaV0pOwoJCQllbHNlCgkJCXsKCQkJICAgICAgIAlpZighc2lsZW50KSBwcmludGYoIiVzIix0ZXN0X291dHB1dFtpXSk7IAoJCQkJZmZsdXNoKHN0ZG91dCk7CgkJCQlmb3Ioaj0wO2o8dGVzdF9zb3V0cHV0W2ldO2orKykKCQkJCQlzdG9yZV92YWx1ZSgob2ZmNjRfdCkwKTsKCQkJfQoJCX0KCX0KCWVsc2UKCXsKCQlmb3IodGVzdF9udW09MDt0ZXN0X251bSA8IG51bV90ZXN0czt0ZXN0X251bSsrKQoJCXsKCQkJZnVuY1t0ZXN0X251bV0oa2lsb2J5dGVzNjQscmVjbGVuLCZkYXRhMVt0ZXN0X251bV0sJmRhdGEyW3Rlc3RfbnVtXSk7CgkJfTsKCX0KCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWlmKCFPUFNfZmxhZyAmJiAhaW5jbHVkZV90ZmxhZyl7CQkJLyogUmVwb3J0IGluIG9wcy9zZWMgPyAqLwoJICAgaWYoZGF0YTFbMV0hPTAgJiYgZGF0YTJbMV0gIT0gMCkKCSAgIHsgICAKCQl0b3RhbHRpbWUgPSBkYXRhMVsxXSArIGRhdGExWzBdOwoJCWlmICh0b3RhbHRpbWUgPCBUT09GQVNUKSAKCQl7CgkJICAgCWdvb2RraWxvcyA9IChUT09GQVNUL3RvdGFsdGltZSkqMipraWxvYnl0ZXM2NDsKCQkgICAgCXByaW50ZigiXG5UaGUgdGVzdCBjb21wbGV0ZWQgdG9vIHF1aWNrbHkgdG8gZ2l2ZSBhIGdvb2QgcmVzdWx0XG4iKTsKCQkgICAgCXByaW50ZigiWW91IHdpbGwgZ2V0IGEgbW9yZSBwcmVjaXNlIG1lYXN1cmUgb2YgdGhpcyBtYWNoaW5lJ3NcbiIpOwoJCSAgICAJcHJpbnRmKCJwZXJmb3JtYW5jZSBieSByZS1ydW5uaW5nIGlvem9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIpOwojaWZkZWYgTk9fUFJJTlRfTExECgkJICAgIAlwcmludGYoIlxuXHRpb3pvbmUgJWxkICIsIGdvb2RraWxvcyk7CgkJICAgIAlwcmludGYoIlx0KGkuZS4sIGZpbGUgc2l6ZSA9ICVsZCBraWxvYnl0ZXM2NClcbiIsIGdvb2RraWxvcyk7CiNlbHNlCgkJICAgIAlwcmludGYoIlxuXHRpb3pvbmUgJWxsZCAiLCBnb29ka2lsb3MpOwoJCSAgICAJcHJpbnRmKCJcdChpLmUuLCBmaWxlIHNpemUgPSAlbGxkIGtpbG9ieXRlczY0KVxuIiwgZ29vZGtpbG9zKTsKI2VuZGlmCgkJfQoJICAgfSBlbHNlIHsKCSAgICAJZ29vZHJlY2wgPSByZWNsZW4vMjsKCSAgICAJcHJpbnRmKCJcbkkvTyBlcnJvciBkdXJpbmcgcmVhZC4gIFRyeSBhZ2FpbiB3aXRoIHRoZSBjb21tYW5kOlxuIik7CiNpZmRlZiBOT19QUklOVF9MTEQKCSAgICAJcHJpbnRmKCJcblx0aW96b25lICVsZCAlbGQgIiwga2lsb2J5dGVzNjQsICBnb29kcmVjbCk7CgkgICAgCXByaW50ZigiXHQoaS5lLiByZWNvcmQgc2l6ZSA9ICVsZCBieXRlcylcbiIsICBnb29kcmVjbCk7CiNlbHNlCgkgICAgCXByaW50ZigiXG5cdGlvem9uZSAlbGxkICVsbGQgIiwga2lsb2J5dGVzNjQsICBnb29kcmVjbCk7CgkgICAgCXByaW50ZigiXHQoaS5lLiByZWNvcmQgc2l6ZSA9ICVsbGQgYnl0ZXMpXG4iLCAgZ29vZHJlY2wpOwojZW5kaWYKCSAgIH0KCX0KCWlmICghbm9fdW5saW5rKQoJewoJCWlmKGNoZWNrX2ZpbGVuYW1lKGZpbGVuYW1lKSkKICAgIAkJICB1bmxpbmsoZmlsZW5hbWUpOwkvKiBkZWxldGUgdGhlIGZpbGUgKi8KCX0KCQkJCQkvKnN0b3AgdGltZXIqLwoJcmV0dXJuIDsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogICAgU0hPV19IRUxQIC0tIHNob3cgZGV2ZWxvcG1lbnQgaGVscCBvZiB0aGlzIHByb2dyYW0KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHNob3dfaGVscCh2b2lkKQojZWxzZQp2b2lkIHNob3dfaGVscCgpCiNlbmRpZgp7CiAgICAJbG9uZyBsb25nIGk7CiAgICAJaWYoIXNpbGVudCkgcHJpbnRmKCJpb3pvbmU6IGhlbHAgbW9kZVxuXG4iKTsKICAgIAlmb3IoaT0wOyBzdHJsZW4oaGVscFtpXSk7IGkrKykKICAgIAl7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCIlc1xuIiwgaGVscFtpXSk7CiAgICAJfQp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICBTSUdOQUxfSEFORExFUiAtLSBjbGVhbiB1cCBpZiB1c2VyIGludGVycnVwdHMgdGhlIHByb2dyYW0KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHNpZ25hbF9oYW5kbGVyKHZvaWQpCiNlbHNlCnZvaWQgc2lnbmFsX2hhbmRsZXIoKQojZW5kaWYKewoJbG9uZyBsb25nIGk7CglpZihkaXN0cmlidXRlZCkKCXsKCQlpZihtYXN0ZXJfaW96b25lKQoJCQljbGVhbnVwX2NoaWxkcmVuKCk7Cgl9CglpZigobG9uZyBsb25nKWdldHBpZCgpPT1teWlkKQoJewogICAgCQlpZighc2lsZW50KSBwcmludGYoIlxuaW96b25lOiBpbnRlcnJ1cHRlZFxuXG4iKTsKI2lmbmRlZiBWTVMKCQlpZiAoIW5vX3VubGluaykKCQl7CgkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZmlsZW5hbWUpKQogICAgCQkJdW5saW5rKGZpbGVuYW1lKTsJLyogZGVsZXRlIHRoZSBmaWxlICovCgkJfQoJCWZvcihpPTE7aTxudW1fY2hpbGQ7aSsrKQoJCXsKCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbaV0pKQogICAgCQkJdW5saW5rKGR1bW15ZmlsZVtpXSk7CS8qIGRlbGV0ZSB0aGUgZmlsZSAqLwoJCX0KCQlpZiAoIW5vX3VubGluaykKCQl7CgkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlWzBdKSkKICAgIAkJCXVubGluayhkdW1teWZpbGVbMF0pOwkvKiBkZWxldGUgdGhlIGZpbGUgKi8KCQl9CgkJCiNlbmRpZgoJCWlmKFJmbGFnICYmICF0cmZsYWcpewoJCQlkdW1wX2V4Y2VsKCk7CgkJfQoJCWlmKFJmbGFnICYmIHRyZmxhZyl7CgkJCWR1bXBfdGhyb3VnaHB1dCgpOwoJCX0KCgkgICAgCWlmKCFzaWxlbnQpIHByaW50ZigiZXhpdGluZyBpb3pvbmVcblxuIik7CgkJaWYocmVzX3Byb2IpCgkJewoJCQlwcmludGYoIlRpbWVyIHJlc29sdXRpb24gaXMgcG9vci4gU29tZSBzbWFsbCB0cmFuc2ZlcnMgbWF5IGhhdmUgXG4iKTsKCQkJcHJpbnRmKCJyZXBvcnRlZCBpbmFjY3VyYXRlIHJlc3VsdHMuIFNpemVzICVsZCBLYnl0ZXMgYW5kIGJlbG93LlxuIiwKCQkJCShsb25nKXJlY19wcm9iLzEwMjQpOwoJCX0KCQlpZih0cmZsYWcgJiYgIXVzZV90aHJlYWQpCgkJICAgZm9yKGk9MDtpPG51bV9jaGlsZDtpKyspCgkJCWtpbGwoKHBpZF90KWNoaWxkaWRzW2ldLFNJR1RFUk0pOwoJCWlmKHJfdHJhal9mbGFnKQoJCQlmY2xvc2Uocl90cmFqX2ZkKTsKCQlpZih3X3RyYWpfZmxhZykKCQkJZmNsb3NlKHdfdHJhal9mZCk7Cgl9CglpZihzcF9tc2ZkKQoJCWNsb3NlKHNwX21zZmQpOwoJaWYoc3BfbXJmZCkKCQljbG9zZShzcF9tcmZkKTsKICAgIAlleGl0KDApOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCSovCi8qICAgQVVUT19URVNUIC0tIHBlcmZvcm0gc2VyaWVzIG9mIHRlc3RzIGFuZCB0YWJ1bGF0ZSByZXN1bHRzICAqLwovKgkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCAKYXV0b190ZXN0KHZvaWQpCiNlbHNlCnZvaWQgYXV0b190ZXN0KCkKI2VuZGlmCnsKICAgIAlvZmY2NF90IGtpbG9zaTsKCWxvbmcgbG9uZyByZWNzemksY291bnQxOwoJbG9uZyBsb25nIG11bHQ7Cglsb25nIGxvbmcgeHg7CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBTdGFydCB3aXRoIGZpbGUgc2l6ZSBvZiAxIG1lZ2FieXRlIGFuZCByZXBlYXQgdGhlIHRlc3QgCSovCgkvKiBLSUxPQllURVNfSVRFUl9MSU1JVCAgCQkJCQkqLwoJLyogdGltZXMuICBFYWNoIHRpbWUgd2UgcnVuLCB0aGUgZmlsZSBzaXplIGlzIGRvdWJsZWQJCSovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoKICAgICAgICBpZihzZmxhZykgewogICAgICAgICAgbWluX2ZpbGVfc2l6ZSA9IGtpbG9ieXRlczY0OwogICAgICAgICAgbWF4X2ZpbGVfc2l6ZSA9IGtpbG9ieXRlczY0OwogICAgICAgIH0KICAgICAgICBpZihyZmxhZykgewogICAgICAgICAgbWluX3JlY19zaXplID0gcmVjbGVuOwogICAgICAgICAgbWF4X3JlY19zaXplID0gcmVjbGVuOwogICAgICAgIH0KKi8KCWlmKGdmbGFnKQoJCW1heF9maWxlX3NpemUgPSBtYXhpbXVtX2ZpbGVfc2l6ZTsKCWlmKG5mbGFnKQoJCW1pbl9maWxlX3NpemUgPSBtaW5pbXVtX2ZpbGVfc2l6ZTsKCiAgICAgICAgaWYgKG1pbl9yZWNfc2l6ZSA+IChsb25nIGxvbmcpKG1pbl9maWxlX3NpemUqMTAyNCkpIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAogICAgICAgICAgICBwcmludGYoIkVycm9yOiByZWNvcmQgbGVuZ3RoICVsZCBpcyBncmVhdGVyIHRoYW4gZmlsZXNpemUgJWxkIEtCXG4gIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fcmVjX3NpemUsbWluX2ZpbGVfc2l6ZSk7CiNlbHNlCiAgICAgICAgICAgIHByaW50ZigiRXJyb3I6IHJlY29yZCBsZW5ndGggJWxsZCBpcyBncmVhdGVyIHRoYW4gZmlsZXNpemUgJWxsZCBLQlxuICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3JlY19zaXplLG1pbl9maWxlX3NpemUpOwojZW5kaWYKICAgICAgICAgICAgICAgIGV4aXQoMjMpOwogICAgICAgIH0KCglpZihOT0NST1NTZmxhZykgeG92ZXIgPSBtYXhfZmlsZV9zaXplOwoKCWluaXRfZmlsZV9zaXplcyhtaW5fZmlsZV9zaXplLCBtYXhfZmlsZV9zaXplKTsKCWRlbF9yZWNvcmRfc2l6ZXMoKTsKCW9yaWdfbWluX3JlY19zaXplPW1pbl9yZWNfc2l6ZTsKCW9yaWdfbWF4X3JlY19zaXplPW1heF9yZWNfc2l6ZTsKCWluaXRfcmVjb3JkX3NpemVzKG1pbl9yZWNfc2l6ZSwgbWF4X3JlY19zaXplKTsKCiAgICAgICAgZm9yKGtpbG9zaT1nZXRfbmV4dF9maWxlX3NpemUoKG9mZjY0X3QpMCk7IGtpbG9zaT4wOyBraWxvc2k9Z2V0X25leHRfZmlsZV9zaXplKGtpbG9zaSkpCiAgICAgICAgewoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBTdGFydCB3aXRoIHJlY29yZCBzaXplIG9mIG1pbl9yZWNfc2l6ZSBieXRlcyBhbmQgcmVwZWF0IHRoZSAJKi8KCS8qIHRlc3QsIG11bHRpcGx5aW5nIHRoZSByZWNvcmQgc2l6ZSBieSBNVUxUSVBMSUVSIGVhY2ggdGltZSwgCSovCgkvKiB1bnRpbCB3ZSByZWFjaCBtYXhfcmVjX3NpemUuCSBBdCB0aGUgQ1JPU1NPVkVSIHdlIHN0b3AgZG9pbmcgKi8KCS8qIHNtYWxsIGJ1ZmZlcnMgYXMgaXQgdGFrZXMgZm9yZXZlciBhbmQgYmVjb21lcyB2ZXJ5IAkJKi8KCS8qIHVuLWludGVyZXN0aW5nLgkJCQkJCSovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAgICAgICAgIGlmKCFyZmxhZyAmJiAhc2ZsYWcgJiYgIXlmbGFnICYmICFxZmxhZykKICAgICAgICAgICAgIAlpZihraWxvc2kgPiB4b3Zlcil7CiAgICAgICAgICAgICAgICAJbWluX3JlY19zaXplID0gTEFSR0VfUkVDOwoJCQltdWx0ID0gb3JpZ19taW5fcmVjX3NpemUvMTAyNDsKCQkJZGVsX3JlY29yZF9zaXplcygpOwoJCQlpbml0X3JlY29yZF9zaXplcyhtaW5fcmVjX3NpemUsIG1heF9yZWNfc2l6ZSk7CgkJICAgICAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCQkJLyogR2VuZXJhdGUgZHVtbXkgZW50cmllcyBpbiB0aGUgICAgKi8KCQkJLyogRXhjZWwgYnVmZmVyIGZvciBza2lwcGVkICAgICAgICAgKi8KCQkJLyogcmVjb3JkIHNpemVzCQkJICovCgkJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkJCWZvcihjb3VudDE9bWluX3JlY19zaXplOwoJCQkgICAgIAkoY291bnQxICE9IG9yaWdfbWluX3JlY19zaXplKSAmJiAoCgkJCQkgICAgIAltdWx0IDw9IChraWxvc2kqMTAyNCkpIDsKCQkJCQkJY291bnQxPShjb3VudDE+PjEpKQoJCQl7CgkJCSAgICAJY3VycmVudF94PTA7CgkJCSAgICAgCXN0b3JlX3ZhbHVlKChvZmY2NF90KWtpbG9zaSk7CgkJCSAgICAgCXN0b3JlX3ZhbHVlKChvZmY2NF90KW11bHQpOwoJCQkgICAgIAlmb3IoeHg9MDt4eDwyMDt4eCsrKQoJCQkgICAgIAkJc3RvcmVfdmFsdWUoKG9mZjY0X3QpMCk7CgkJCSAgICAgCW11bHQ9bXVsdCoyOwoJCQkgICAgIAljdXJyZW50X3krKzsKCQkJICAgICAJaWYoY3VycmVudF95Pm1heF95KQoJCQkgICAgIAkJbWF4X3k9Y3VycmVudF95OwoJCQkgICAgIAljdXJyZW50X3g9MDsKCQkJfQoJICAgICB9CgogICAgICAgICAgICAgZm9yIChyZWNzemk9Z2V0X25leHRfcmVjb3JkX3NpemUoKG9mZjY0X3QpMCk7cmVjc3ppIT0wO3JlY3N6aT1nZXRfbmV4dF9yZWNvcmRfc2l6ZShyZWNzemkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZihyZWNzemkgPiAoa2lsb3NpKjEwMjQpKSAKCQkJYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGJlZ2luKGtpbG9zaSwgcmVjc3ppICk7CgkJICAgICBjdXJyZW50X3g9MDsKCQkgICAgIGN1cnJlbnRfeSsrOwogICAgICAgICAgICAgfQoJfQp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qCQkJCQkJCQkqLwovKiBUSFJPVUdIUFVUX1RFU1QgKCkgTXVsdGkgcHJvY2VzcyB0aHJvdWdocHV0IHRlc3QJCSovCi8qCQkJCQkJCQkqLwovKiBOb3RlOiBTdGF0ZXMgZm9yIHNoYXJlIG1lbW9yeSBiYXJyaWVyIGFyZToJCQkqLwovKiAwID0gQ2hpbGQgbm90IHJ1bm5pbmcgb3IgaGFzIGZpbmlzaGVkLgkJCSovCi8qIDEgPSBDaGlsZCBpcyByZWFkeSB0byBiZWdpbi4JCQkJCSovCi8qIDIgPSBDaGlsZCBpcyB0b2xkIHRvIGJlZ2luLgkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIERhdGEgaW4gc2hhcmVkIG1lbW9yeSBmb3JtYXQgaXM6CQkJCSovCi8qCQkJCQkJCQkqLwovKiBzdHJ1Y3QgY2hpbGRfc3RhdHMgewkJCQkJCSovCi8qIAlsb25nIGxvbmcgZmxhZzsgCVVzZWQgdG8gYmFycmllcgkJCSovCi8qCWRvdWJsZSB3YWxsdGltZTsJQ2hpbGQncyBlbGFwc2VkIHRpbWUJCSovCi8qCWRvdWJsZSBjcHV0aW1lOwkJQ2hpbGQncyBDUFUgdGltZQkJKi8KLyogCWRvdWJsZSB0aHJvdWdocHV0OwlDaGlsZCdzIHRocm91Z2hwdXQJCSovCi8qIAlkb3VibGUgYWN0dWFsOwkJQ2hpbGQncyBhY3R1YWwgcmVhZC93cml0dGVuCSovCi8qIH0gCQkJCQkJCQkqLwovKgkJCQkJCQkJKi8KLyogVGhlcmUgaXMgYW4gYXJyYXkgb2YgY2hpbGRfc3RhdCBzdHJ1Y3R1cmVzIGxheWVkIG91dCBpbiAJKi8KLyogc2hhcmVkIG1lbW9yeS4JCQkJCQkqLwovKgkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCnRocm91Z2hwdXRfdGVzdCh2b2lkKQojZWxzZQp2b2lkIAp0aHJvdWdocHV0X3Rlc3QoKQojZW5kaWYKewoJY2hhciAqdW5pdDsKCWRvdWJsZSBzdGFydHRpbWUxID0gMDsKCWRvdWJsZSBqc3RhcnR0aW1lID0gMDsKCWRvdWJsZSBqdGltZSA9IDA7Cglkb3VibGUgd2FsbHRpbWUgPSAwOwoJZG91YmxlIGNwdXRpbWUgPSAwOwoJY2hhciAqcG9ydDsKCWNoYXIgZ2V0b3V0OwoJbG9uZyBsb25nIHRocm91Z2hzaXplID0gS0lMT0JZVEVTOwoJbG9uZyBsb25nIHh4LHh5LGk7Cglsb25nIGxvbmcgeHl6OwoJZG91YmxlIHB0b3RhbDsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJlYWRfc29fZmFyLCByZV93cml0dGVuX3NvX2ZhcixyZV9yZWFkX3NvX2ZhcjsKCVZPTEFUSUxFIGNoYXIgKnRlbXA7Cglkb3VibGUgbWluX3Rocm91Z2hwdXQgPSAwOwoJZG91YmxlIG1heF90aHJvdWdocHV0ID0gMDsKCWRvdWJsZSBhdmdfdGhyb3VnaHB1dCA9IDA7Cglkb3VibGUgbWluX3hmZXIgPSAwOyAKCgoJdG91dHB1dGluZGV4PTA7CglzdHJjcHkoJnRvdXRwdXRbMF1bMF0sdGhyb3VnaHB1dF90ZXN0c1swXSk7CglwdG90YWw9d3JpdHRlbl9zb19mYXI9cmVhZF9zb19mYXI9cmVfd3JpdHRlbl9zb19mYXI9cmVfcmVhZF9zb19mYXI9MCA7CgoJaWYoT1BTX2ZsYWcpCgkJdW5pdD0ib3BzIjsKCWVsc2UKCQl1bml0PSJLQiI7CgoJaWYoIWhhdmVzaG0pCgl7CgkJc2htYWRkcj0oc3RydWN0IGNoaWxkX3N0YXRzICopYWxsb2NfbWVtKChsb25nIGxvbmcpU0hNU0laRSwoaW50KTEpOwojaWZkZWYgXzY0QklUX0FSQ0hfCgkJaWYoKGxvbmcgbG9uZylzaG1hZGRyPT0obG9uZyBsb25nKS0xKQojZWxzZQoJCWlmKChsb25nIClzaG1hZGRyPT0obG9uZyktMSkKI2VuZGlmCgkJewoJCQlwcmludGYoIlxuU2hhcmVkIG1lbW9yeSBub3Qgd29ya2luZ1xuIik7CgkJCWV4aXQoMjQpOwoJCX0KCQloYXZlc2htPShjaGFyKilzaG1hZGRyOwoJfQoJZWxzZQoJCXNobWFkZHI9KHN0cnVjdCBjaGlsZF9zdGF0cyAqKWhhdmVzaG07CgoJaWYodXNlX3RocmVhZCkKCQlzdG9wX2ZsYWcgPSAmc3RvcHRpbWU7CgllbHNlCgl7CgkJdGVtcCA9IChjaGFyICopJnNobWFkZHJbMF07CgkJc3RvcF9mbGFnID0gKGNoYXIgKikmdGVtcFsobG9uZyBsb25nKVNITVNJWkVdLTQ7Cgl9Cglmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKyl7IC8qIGFsbCBjaGlsZHJlbiB0byBzdGF0ZSAwIChIT0xEKSAqLwoJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHl6XTsKCQljaGlsZF9zdGF0LT5mbGFnPUNISUxEX1NUQVRFX0hPTEQ7CgkJY2hpbGRfc3RhdC0+YWN0dWFsPTA7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dD0wOwoJCWNoaWxkX3N0YXQtPmNwdXRpbWU9MDsKCQljaGlsZF9zdGF0LT53YWxsdGltZT0wOwoJfQoJKnN0b3BfZmxhZyA9IDA7CglpZighc2ZsYWcpCgkJa2lsb2J5dGVzNjQ9dGhyb3VnaHNpemU7CglpZighcmZsYWcpCiAgICAgICAgCXJlY2xlbj0obG9uZyBsb25nKTQwOTY7CglpZihhZ2dmbGFnKQoJCWtpbG9ieXRlczY0PW9yaWdfc2l6ZS9udW1fY2hpbGQ7CiAgICAgICAgbnVtcmVjczY0ID0gKGxvbmcgbG9uZykoa2lsb2J5dGVzNjQqMTAyNCkvcmVjbGVuOwoJYnVmZmVyPW1haW5idWZmZXI7CglpZih1c2VfdGhyZWFkKQoJCXBvcnQ9InRocmVhZCI7CgllbHNlCgkJcG9ydD0icHJvY2VzcyI7CglpZih3X3RyYWpfZmxhZykKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEVhY2ggJXMgd3JpdGVzIGEgJWxkIEtieXRlIGZpbGUgaW4gdGVsZW1ldHJ5IGNvbnRyb2xsZWQgcmVjb3Jkc1xuIiwKCQlwb3J0LGtpbG9ieXRlczY0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRFYWNoICVzIHdyaXRlcyBhICVsbGQgS2J5dGUgZmlsZSBpbiB0ZWxlbWV0cnkgY29udHJvbGxlZCByZWNvcmRzXG4iLAoJCXBvcnQsa2lsb2J5dGVzNjQpOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEVhY2ggJXMgd3JpdGVzIGEgJWxkIEtieXRlIGZpbGUgaW4gJWxkIEtieXRlIHJlY29yZHNcbiIsCgkJcG9ydCxraWxvYnl0ZXM2NCxyZWNsZW4vMTAyNCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIlx0RWFjaCAlcyB3cml0ZXMgYSAlbGxkIEtieXRlIGZpbGUgaW4gJWxsZCBLYnl0ZSByZWNvcmRzXG4iLAoJCXBvcnQsa2lsb2J5dGVzNjQscmVjbGVuLzEwMjQpOwojZW5kaWYKCX0KCglpZihmZmxhZykJCS8qIEVhY2ggY2hpbGQgaGFzIGEgZmlsZSBuYW1lIHRvIHdyaXRlICovCgkgIGZvcih4eD0wO3h4PG51bV9jaGlsZDt4eCsrKQoJICAgIGZpbGVhcnJheVt4eF0gPSBmaWxlbmFtZTsKCW15aWQgPSAobG9uZyBsb25nKWdldHBpZCgpOwoKCS8qIHJhZ3M6IHNraXAgd3JpdGVyIHRlc3QgKi8KCWlmKGluY2x1ZGVfdGZsYWcpCgkJaWYoIShpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVdSSVRFUl9NQVNLKSkKCQl7CgkJCXN0b3JlX2R2YWx1ZSggKGRvdWJsZSkwKTsKCQkJc3RvcmVfZHZhbHVlKCAoZG91YmxlKTApOwoJCQl0b3V0cHV0aW5kZXgrKzsKCQkJZ290byBuZXh0MDsKCQl9CgoJaWYoKCFkaXN0cmlidXRlZCkgfHwgKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpKQoJCXN0YXJ0X21vbml0b3IoIldyaXRlIik7CgkvKiBIb29rcyB0byBzdGFydCB0aGUgZGlzdHJpYnV0ZWQgSW96b25lIGNsaWVudC9zZXJ2ZXIgY29kZSAqLwoJaWYoZGlzdHJpYnV0ZWQpCgl7CgkJdXNlX3RocmVhZD0wOyAgLyogVHVybiBvZiBhbnkgUG9zaXggdGhyZWFkcyAqLwoJCWlmKG1hc3Rlcl9pb3pvbmUpCgkJCW1hc3Rlcl9saXN0ZW5fc29ja2V0ID0gc3RhcnRfbWFzdGVyX2xpc3RlbigpOwoJCWVsc2UKCQkJYmVjb21lX2NsaWVudCgpOwoJfQoJaWYoIXVzZV90aHJlYWQpCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWNoaWxkaWRzW3h4XSA9IHN0YXJ0X2NoaWxkX3Byb2MoVEhSRUFEX1dSSVRFX1RFU1QsbnVtcmVjczY0LHJlY2xlbik7CgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5Gb3JrIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJaWYoIXVzZV90aHJlYWQpCgkJCQkJa2lsbCgocGlkX3QpY2hpbGRpZHNbeHldLFNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMjUpOwoJCX0KCQlpZihjaGlsZGlkc1t4eF0hPTAgJiYgZGVidWcxKQojaWZkZWYgTk9fUFJJTlRfTExECgkJCXByaW50ZigiUGFyZW50IHN0YXJ0aW5nIHNsb3QgJWxkXG4iLHh4KTsJCiNlbHNlCgkJCXByaW50ZigiUGFyZW50IHN0YXJ0aW5nIHNsb3QgJWxsZFxuIix4eCk7CQojZW5kaWYKCQlpZiggY2hpbGRpZHNbeHhdID09IDAgKXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCSAgdGhyZWFkX3dyaXRlX3Rlc3QoKHZvaWQgKil4eCk7CiNlbHNlCgkJICB0aHJlYWRfd3JpdGVfdGVzdCgodm9pZCAqKShsb25nKXh4KTsKI2VuZGlmCgkJfWVsc2UgewojaWZkZWYgTk9fUFJJTlRfTExECgkJICBzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsZCIsZmlsZWFycmF5W3h4XSwgeHgpOwojZWxzZQoJCSAgc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcy5EVU1NWS4lbGxkIixmaWxlYXJyYXlbeHhdLCB4eCk7CiNlbmRpZgoJCX0KCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsZCIsZmlsZWFycmF5W3h4XSwgeHgpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4XSwgeHgpOwojZW5kaWYKCQlpZighYmFycmF5W3h4XSkKCQl7CgkJCWJhcnJheVt4eF09KGNoYXIgKikgYWxsb2NfbWVtKChsb25nIGxvbmcpKE1BWEJVRkZFUlNJWkUrY2FjaGVfc2l6ZSksKGludCkwKTsKCQkJaWYoYmFycmF5W3h4XSA9PSAwKSB7CiAgICAgICAgCQkgICBwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZDoiKTsKICAgICAgICAJCSAgIGV4aXQoMjYpOwogICAgICAgIAkJfQogICAgIAkJCWJhcnJheVt4eF0gPShjaGFyICopKCgobG9uZyliYXJyYXlbeHhdICsgY2FjaGVfc2l6ZSApICYgCgkJCX4oY2FjaGVfc2l6ZS0xKSk7CgkJfQoKI2lmZGVmIF82NEJJVF9BUkNIXwoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSh0aHJlYWRfd3JpdGVfdGVzdCwodm9pZCopeHgpOwojZWxzZQoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSh0aHJlYWRfd3JpdGVfdGVzdCwodm9pZCopKGxvbmcpeHgpOwojZW5kaWYKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJUaHJlYWQgY3JlYXRlIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJa2lsbCgocGlkX3QpbXlpZCxTSUdURVJNKTsKCQkJfQoJCQlleGl0KDI3KTsKCQl9CgkgICB9Cgl9CiNlbmRpZgoJaWYoKGxvbmcgbG9uZylnZXRwaWQoKSA9PSBteWlkKQoJewoJCXByZXBhZ2UoYnVmZmVyLHJlY2xlbik7CQkvKiBGb3JjZSBjb3B5IG9uIHdyaXRlICovCgkJCQkvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdGFydCAqLwoJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJewoJCQlzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKCQl9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsJCgkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKykJLyogU3RhcnQgYWxsIGNoaWxkcmVuIGdvaW5nICovCgkJewoJCQlpZihkZWxheV9zdGFydCE9MCkKCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CgkJCQkJCS8qIFN0YXRlICJnbyIgKi8KCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsJCgkJCWNoaWxkX3N0YXQtPmZsYWc9Q0hJTERfU1RBVEVfQkVHSU47CgkJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJCQl0ZWxsX2NoaWxkcmVuX2JlZ2luKGkpOwoJCX0KCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsJLyogU3RhcnQgcGFyZW50cyB0aW1lciAqLwoJCWdvdG8gd2FpdG91dDsKCX0KCndhaXRvdXQ6CglnZXRvdXQ9MDsKCWlmKChsb25nIGxvbmcpZ2V0cGlkKCkgPT0gbXlpZCkgewkvKiBQYXJlbnQgb25seSAqLwoJCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOyAvKiBXYWl0IGZvciBhbGwgY2hpbGRyZW4gKi8KCQlmb3IoIGkgPSAwOyBpIDwgbnVtX2NoaWxkOyBpKyspewoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSAmc2htYWRkcltpXTsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCQkJewoJCQkJcHJpbnRmKCJcblx0VGVzdCBydW5uaW5nOiIpOwoJCQkJd2FpdF9kaXN0X2pvaW4oKTsKCQkJCWJyZWFrOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkgaWYodXNlX3RocmVhZCkKCQkJIHsKCQkJCXRocmVhZF9qb2luKGNoaWxkaWRzW2ldLCh2b2lkICopJnBzdGF0dXMpOwoJCQkgfQoJCQkgZWxzZQoJCQkgewoJCSAgIAkgCXdhaXQoMCk7CgkJCSB9CgkJCX0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7CgkJaWYoanRpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJCXsKCQkJanRpbWU9dGltZV9yZXM7IAoJCX0KCX0KCXRvdGFsX3RpbWUgPSAodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOyAvKiBnZXQgcGFyZW50cyB0b3RhbCB0aW1lICovCglpZih0b3RhbF90aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQl0b3RhbF90aW1lPXRpbWVfcmVzOyAKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KI2lmZGVmIEpUSU1FCgl0b3RhbF90aW1lPXRvdGFsX3RpbWUtanRpbWU7LyogUmVtb3ZlIHRoZSBqb2luIHRpbWUgKi8KCWlmKCFzaWxlbnQpIHByaW50ZigiXG5Kb2luIHRpbWUgJTEwLjJmXG4iLGp0aW1lKTsKI2VuZGlmCgoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJd2FsbHRpbWUgPSAwLjA7CgljcHV0aW1lID0gMC4wOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiIpOwoJZm9yKHh5ej0wO3h5ejxudW1fY2hpbGQ7eHl6KyspewoJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJdG90YWxfa2lsb3MgKz0gY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsgLyogYWRkIHVwIHRoZSBjaGlsZHJlbiAqLwoJCXB0b3RhbCArPSBjaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoY2hpbGRfc3RhdC0+YWN0dWFsIDwgbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IG1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPiBtYXhfdGhyb3VnaHB1dCkKCQkJbWF4X3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQkvKiBBZGQgdXAgdGhlIGNwdSB0aW1lcyBvZiBhbGwgY2hpbGRyZW4gKi8KCQljcHV0aW1lICs9IGNoaWxkX3N0YXQtPmNwdXRpbWU7CgoJCS8qIGFuZCBmaW5kIHRoZSBjaGlsZCB3aXRoIHRoZSBsb25nZXN0IHdhbGwgdGltZSAqLwoJCS8qIEdldCB0aGUgZWFybGllc3Qgc3RhcnQgdGltZSBhbmQgbGF0ZXN0IGZpbmkgdGltZSB0byBjYWxjLiBlbGFwc2VkIHRpbWUuICovCgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lIDwgY2hpbGRfc3RhdC0+Y3B1dGltZSkKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA+IHdhbGx0aW1lKQoJCQl3YWxsdGltZSA9IGNoaWxkX3N0YXQtPndhbGx0aW1lOwoJfQoJYXZnX3Rocm91Z2hwdXQ9dG90YWxfa2lsb3MvbnVtX2NoaWxkOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCX0KCQoJZm9yKHh5ej0wO3h5ejxudW1fY2hpbGQ7eHl6KyspewoJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7IC8qIFN0YXJ0IGNoaWxkcmVuIGF0IHN0YXRlIDAgKEhPTEQpICovCgl9CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyAod2FsbHRpbWUsIGNwdXRpbWUpOwkvKiBNdXN0IGJlIEJlZm9yZSBzdG9yZV9kdmFsdWUoKS4gKi8KCXN0b3JlX2R2YWx1ZSh0b3RhbF9raWxvcyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJTJsZCBpbml0aWFsIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICUybGQgaW5pdGlhbCB3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLG51bV9jaGlsZCwoKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lKSx1bml0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJTJsbGQgaW5pdGlhbCB3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlMmxsZCBpbml0aWFsIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsbnVtX2NoaWxkLCgoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUpLHVuaXQpOwojZW5kaWYKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNaW4gdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjIFxuIiwgcG9ydCxtaW5fdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNYXggdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LG1heF90aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEF2ZyB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIHBvcnQsYXZnX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHhmZXIgXHRcdFx0XHRcdD0gJTEwLjJmICVzXG4iLCBtaW5feGZlcix1bml0KTsKCS8qIENQVSUgY2FuIGJlID4gMTAwLjAgZm9yIG11bHRpcGxlIENQVXMgKi8KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmKHdhbGx0aW1lID09IDAuMCkKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDUFUgdXRpbGl6YXRpb246IFdhbGwgdGltZSAlOC4zZiAgICBDUFUgdGltZSAlOC4zZiAgICBDUFUgdXRpbGl6YXRpb24gJTYuMmYgJSVcblxuIiwKCQkJCXdhbGx0aW1lLCBjcHV0aW1lLCAwLjApOwoJCX0KCQllbHNlCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIFV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMTAwLjAgKiBjcHV0aW1lIC8gd2FsbHRpbWUpOwoJCX0KCX0KCWlmKENmbGFnKQoJewoJCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKQoJCXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikgJnNobWFkZHJbeHl6XTsKCQkJaWYoY3B1dXRpbGZsYWcpCgkJCXsKCQkJCWlmKCFzaWxlbnQpIAoJCQkJCXByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjLCB3YWxsPSU2LjNmLCBjcHU9JTYuM2YsICUlPSU2LjJmXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0LCBjaGlsZF9zdGF0LT53YWxsdGltZSwgCgkJCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY3B1X3V0aWwoY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0KTsKCQkJfQoJCX0KCX0KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdG9wX21vbml0b3IoIldyaXRlIik7CgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKiogRW5kIG9mIGludGl0aWFsIHdyaXRlciAqKioqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwoJKnN0b3BfZmxhZz0wOwoJaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCXsKCQlzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyogUmUtd3JpdGUgdGhyb3VnaHB1dCBwZXJmb3JtYW5jZSB0ZXN0LiAqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCXRvdGFsX2tpbG9zPTA7Cgl0b3V0cHV0aW5kZXg9MTsKCXN0cmNweSgmdG91dHB1dFsxXVswXSx0aHJvdWdocHV0X3Rlc3RzWzFdKTsKCWlmKG5vcmV0ZXN0KQoJewoJCXN0b3JlX2R2YWx1ZSggKGRvdWJsZSkwKTsKCQlnb3RvIG5leHQwOwoJfQoJaWYoKCFkaXN0cmlidXRlZCkgfHwgKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpKQoJCXN0YXJ0X21vbml0b3IoIlJld3JpdGUiKTsKCS8qIEhvb2tzIHRvIHN0YXJ0IHRoZSBkaXN0cmlidXRlZCBJb3pvbmUgY2xpZW50L3NlcnZlciBjb2RlICovCglpZihkaXN0cmlidXRlZCkKCXsKCQl1c2VfdGhyZWFkPTA7ICAvKiBUdXJuIG9mIGFueSBQb3NpeCB0aHJlYWRzICovCgkJaWYobWFzdGVyX2lvem9uZSkKCQkJbWFzdGVyX2xpc3Rlbl9zb2NrZXQgPSBzdGFydF9tYXN0ZXJfbGlzdGVuKCk7CgkJZWxzZQoJCQliZWNvbWVfY2xpZW50KCk7Cgl9CglpZighdXNlX3RocmVhZCkKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsKCQljaGlkPXh4OwoJCWNoaWxkaWRzW3h4XSA9IHN0YXJ0X2NoaWxkX3Byb2MoVEhSRUFEX1JFV1JJVEVfVEVTVCxudW1yZWNzNjQscmVjbGVuKTsKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlLaWxsKChsb25nIGxvbmcpY2hpbGRpZHNbeHldLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgyOCk7CgkJfQoJCWlmKGNoaWxkaWRzW3h4XSA9PSAwKXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCQl0aHJlYWRfcndyaXRlX3Rlc3QoKHZvaWQgKil4eCk7CiNlbHNlCgkJCXRocmVhZF9yd3JpdGVfdGVzdCgodm9pZCAqKSgobG9uZyl4eCkpOwojZW5kaWYKCQl9CQoJICAgfQoJfQojaWZuZGVmIE5PX1RIUkVBRFMKCWVsc2UKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsJLyogQ3JlYXRlIHRoZSBjaGlsZHJlbiAqLwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9yd3JpdGVfdGVzdCx4eCk7CiNlbHNlCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfcndyaXRlX3Rlc3QsKHZvaWQgKikobG9uZyl4eCk7CiNlbmRpZgoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuVGhyZWFkIGNyZWF0ZSBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCUtpbGwoKGxvbmcgbG9uZylteWlkLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgyOSk7CgkJfQoJICAgfQoJfQojZW5kaWYKCWlmKChsb25nIGxvbmcpbXlpZCA9PSBnZXRwaWQoKSkKCXsKCQlpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJCXsKCQkJc3RhcnRfbWFzdGVyX2xpc3Rlbl9sb29wKChpbnQpIG51bV9jaGlsZCk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCQkJLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RhcnQgKi8KCQkJd2hpbGUoY2hpbGRfc3RhdC0+ZmxhZz09Q0hJTERfU1RBVEVfSE9MRCkgCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9CRUdJTjsJLyogdGVsbCBjaGlsZHJlbiB0byBnbyAqLwoJCQlpZihkZWxheV9zdGFydCE9MCkKCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CgkJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJCQl0ZWxsX2NoaWxkcmVuX2JlZ2luKGkpOwoJCX0KCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCQlnb3RvIGp1bXAzOwoJfQoJCmp1bXAzOgoJZ2V0b3V0PTA7CglpZigobG9uZyBsb25nKW15aWQgPT0gZ2V0cGlkKCkpewkvKiBQYXJlbnQgb25seSBoZXJlICovCgkJZm9yKCBpID0gMDsgaSA8IG51bV9jaGlsZDsgaSsrKXsKCQkJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJCXsKCQkJCXByaW50ZigiXG5cdFRlc3QgcnVubmluZzoiKTsKCQkJCXdhaXRfZGlzdF9qb2luKCk7CgkJCQlicmVhazsKCQkJfQoJCQllbHNlCgkJCXsKCQkJICAgaWYodXNlX3RocmVhZCkKCQkJICAgewoJCQkJdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CgkJCSAgIH0KCQkJICAgZWxzZQoJCQkgICB7CgkJICAgCQl3YWl0KDApOwoJCQkgICB9CgkJCX0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7CgkJaWYoanRpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJCXsKCQkJanRpbWU9dGltZV9yZXM7CgkJfQoJfQoJdG90YWxfdGltZSA9ICh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMSktdGltZV9yZXM7IC8qIFBhcmVudHMgdG90YWwgdGltZSAqLwoJaWYodG90YWxfdGltZSAgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXRvdGFsX3RpbWU9dGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CiNpZmRlZiBKVElNRQoJdG90YWxfdGltZT10b3RhbF90aW1lLWp0aW1lOy8qIFJlbW92ZSB0aGUgam9pbiB0aW1lICovCglpZighc2lsZW50KSBwcmludGYoIlxuSm9pbiB0aW1lICUxMC4yZlxuIixqdGltZSk7CiNlbmRpZgoJCgoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoKCW1pbl90aHJvdWdocHV0PW1heF90aHJvdWdocHV0PW1pbl94ZmVyPTA7CglpZighc2lsZW50KSBwcmludGYoIlxuIik7Cglmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKyl7CgkJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHl6XTsKCQl0b3RhbF9raWxvcys9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlwdG90YWwrPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZihjaGlsZF9zdGF0LT5hY3R1YWwgPCBtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA+IG1heF90aHJvdWdocHV0KQoJCQltYXhfdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWNwdXRpbWUgKz0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQkvKiBHZXQgdGhlIGVhcmxpZXN0IHN0YXJ0IHRpbWUgYW5kIGxhdGVzdCBmaW5pIHRpbWUgdG8gY2FsYy4gZWxhcHNlZCB0aW1lLiAqLwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA8IGNoaWxkX3N0YXQtPmNwdXRpbWUpCgkJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPiB3YWxsdGltZSkKCQkJd2FsbHRpbWUgPSBjaGlsZF9zdGF0LT53YWxsdGltZTsKCX0KCWF2Z190aHJvdWdocHV0PXRvdGFsX2tpbG9zL251bV9jaGlsZDsKCWlmKGNwdXV0aWxmbGFnKQoJewovKgoJCWlmICh3YWxsdGltZSA8IGNwdXRpbWVfcmVzKQoJCQl3YWxsdGltZSA9IDAuMDsKKi8KCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJfQoKCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsJLyogUmVzZXQgc3RhdGUgdG8gMCAoSE9MRCkgKi8KCQljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eXpdOwoJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJfQoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMgKHdhbGx0aW1lLCBjcHV0aW1lKTsJLyogTXVzdCBiZSBCZWZvcmUgc3RvcmVfZHZhbHVlKCkuICovCglzdG9yZV9kdmFsdWUodG90YWxfa2lsb3MpOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICUybGQgcmV3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlMmxkIHJld3JpdGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCAoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUsdW5pdCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICUybGxkIHJld3JpdGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCB0b3RhbF9raWxvcyx1bml0KTsKCWlmKCFzaWxlbnQgJiYgIWRpc3RyaWJ1dGVkKSBwcmludGYoIlx0UGFyZW50IHNlZXMgdGhyb3VnaHB1dCBmb3IgJTJsbGQgcmV3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9Cgkqc3RvcF9mbGFnPTA7CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJSZXdyaXRlIik7CgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKiogRW5kIG9mIHJld3JpdGUgdGhyb3VnaHB1dCAqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwoJaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCXsKCQlzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQpuZXh0MDoKCWlmKGluY2x1ZGVfdGZsYWcpCgkJaWYoIShpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVJFQURFUl9NQVNLKSkKCQkJZ290byBuZXh0MTsKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKiogUmVhZGVyIHRocm91Z2hwdXQgdGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdGFydF9tb25pdG9yKCJSZWFkIik7Cgl0b3V0cHV0aW5kZXgrKzsKCXN0cmNweSgmdG91dHB1dFt0b3V0cHV0aW5kZXhdWzBdLHRocm91Z2hwdXRfdGVzdHNbMl0pOwoJd2FsbHRpbWUgPSAwLjA7CgljcHV0aW1lID0gMC4wOwoJanN0YXJ0dGltZT0wOwoJdG90YWxfa2lsb3M9MDsKCWlmKGRpc3RyaWJ1dGVkKQoJewoJCXVzZV90aHJlYWQ9MDsKCQlpZihtYXN0ZXJfaW96b25lKQoJCQltYXN0ZXJfbGlzdGVuX3NvY2tldD1zdGFydF9tYXN0ZXJfbGlzdGVuKCk7CgkJZWxzZQoJCQliZWNvbWVfY2xpZW50KCk7Cgl9CglpZighdXNlX3RocmVhZCkKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsKCQljaGlkPXh4OwoJCWNoaWxkaWRzW3h4XSA9IHN0YXJ0X2NoaWxkX3Byb2MoVEhSRUFEX1JFQURfVEVTVCxudW1yZWNzNjQscmVjbGVuKTsKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlLaWxsKChsb25nIGxvbmcpY2hpbGRpZHNbeHldLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzMCk7CgkJfQoJCWlmKGNoaWxkaWRzW3h4XT09MCl7CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQkJdGhyZWFkX3JlYWRfdGVzdCgodm9pZCAqKXh4KTsKI2Vsc2UKCQkJdGhyZWFkX3JlYWRfdGVzdCgodm9pZCAqKSgobG9uZyl4eCkpOwojZW5kaWYKCQl9CQoJICAgfQoJfQojaWZuZGVmIE5PX1RIUkVBRFMKCWVsc2UKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsJLyogQ3JlYXRlIHRoZSBjaGlsZHJlbiAqLwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9yZWFkX3Rlc3QseHgpOwojZWxzZQoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSggdGhyZWFkX3JlYWRfdGVzdCwodm9pZCAqKShsb25nKXh4KTsKI2VuZGlmCgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5UaHJlYWQgY3JlYXRlIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJa2lsbCgocGlkX3QpbXlpZCwoaW50KVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzEpOwoJCX0KCSAgIH0KCX0KI2VuZGlmCglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewoJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJewoJCQlzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKCQl9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RhcnQgKi8KCQkJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKykKCQl7CgkJCWNoaWxkX3N0YXQ9KHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfQkVHSU47IC8qIHRlbGwgY2hpbGRyZW4gdG8gZ28gKi8KCQkJaWYoZGVsYXlfc3RhcnQhPTApCgkJCQlQb2xsKChsb25nIGxvbmcpZGVsYXlfc3RhcnQpOwoJCQlpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJCQkJdGVsbF9jaGlsZHJlbl9iZWdpbihpKTsKCQl9CgkJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CgkJZ290byBqdW1wZW5kOwoJfQpqdW1wZW5kOgoJZ2V0b3V0PTA7CglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewkvKiBQYXJlbnQgaGVyZSAqLwoJCWZvciggaSA9IDA7IGkgPCBudW1fY2hpbGQ7IGkrKyl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJCXsKCQkJCXByaW50ZigiXG5cdFRlc3QgcnVubmluZzoiKTsKCQkJCXdhaXRfZGlzdF9qb2luKCk7CgkJCQlicmVhazsKCQkJfQoJCQllbHNlCgkJCXsKCQkJICAgaWYodXNlX3RocmVhZCkKCQkJICAgewoJCQkJdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CgkJCSAgIH0KCQkJICAgZWxzZQoJCQkgICB7CgkJCQl3YWl0KDApOwoJCQkgICB9CgkJCX0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7IAoJCWlmKGp0aW1lIDwgKGRvdWJsZSkuMDAwMDAxKQoJCXsKCQkJanRpbWU9dGltZV9yZXM7IAoJCX0KCX0KCXRvdGFsX3RpbWUgPSAodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOyAvKiBQYXJlbnRzIHRpbWUgKi8KCWlmKHRvdGFsX3RpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXRvdGFsX3RpbWU9dGltZV9yZXM7IAoJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQlyZXNfcHJvYj0xOwoJfQojaWZkZWYgSlRJTUUKCXRvdGFsX3RpbWU9dG90YWxfdGltZS1qdGltZTsvKiBSZW1vdmUgdGhlIGpvaW4gdGltZSAqLwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbkpvaW4gdGltZSAlMTAuMmZcbiIsanRpbWUpOwojZW5kaWYKCQoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJbWluX3Rocm91Z2hwdXQ9bWF4X3Rocm91Z2hwdXQ9bWluX3hmZXI9MDsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsKCQljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eXpdOwoJCXRvdGFsX2tpbG9zKz1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCXB0b3RhbCs9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKGNoaWxkX3N0YXQtPmFjdHVhbCA8IG1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCBtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0ID4gbWF4X3Rocm91Z2hwdXQpCgkJCW1heF90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJY3B1dGltZSArPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCS8qIEdldCB0aGUgZWFybGllc3Qgc3RhcnQgdGltZSBhbmQgbGF0ZXN0IGZpbmkgdGltZSB0byBjYWxjLiBlbGFwc2VkIHRpbWUuICovCgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lIDwgY2hpbGRfc3RhdC0+Y3B1dGltZSkKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA+IHdhbGx0aW1lKQoJCQl3YWxsdGltZSA9IGNoaWxkX3N0YXQtPndhbGx0aW1lOwoJfQoJYXZnX3Rocm91Z2hwdXQ9dG90YWxfa2lsb3MvbnVtX2NoaWxkOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzICh3YWxsdGltZSwgY3B1dGltZSk7CS8qIE11c3QgYmUgQmVmb3JlIHN0b3JlX2R2YWx1ZSgpLiAqLwoJc3RvcmVfZHZhbHVlKHRvdGFsX2tpbG9zKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlMmxkIHJlYWRlcnMgXHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCB0b3RhbF9raWxvcyx1bml0KTsKCWlmKCFzaWxlbnQgJiYgIWRpc3RyaWJ1dGVkKSBwcmludGYoIlx0UGFyZW50IHNlZXMgdGhyb3VnaHB1dCBmb3IgJTJsZCByZWFkZXJzIFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlMmxsZCByZWFkZXJzIFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICUybGxkIHJlYWRlcnMgXHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCAoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUsdW5pdCk7CiNlbmRpZgoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWMgXG4iLCBwb3J0LG1pbl90aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1heCB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIHBvcnQsbWF4X3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0QXZnIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxhdmdfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNaW4geGZlciBcdFx0XHRcdFx0PSAlMTAuMmYgJXNcbiIsIG1pbl94ZmVyLHVuaXQpOwoJLyogQ1BVJSBjYW4gYmUgPiAxMDAuMCBmb3IgbXVsdGlwbGUgQ1BVcyAqLwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJaWYod2FsbHRpbWUgPT0gMC4wKQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDAuMCk7CgkJfQoJCWVsc2UKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDUFUgdXRpbGl6YXRpb246IFdhbGwgdGltZSAlOC4zZiAgICBDUFUgdGltZSAlOC4zZiAgICBDUFUgdXRpbGl6YXRpb24gJTYuMmYgJSVcblxuIiwKCQkJCXdhbGx0aW1lLCBjcHV0aW1lLCAxMDAuMCAqIGNwdXRpbWUgLyB3YWxsdGltZSk7CgkJfQoJfQoJaWYoQ2ZsYWcpCgl7CgkJZm9yKHh5ej0wO3h5ejxudW1fY2hpbGQ7eHl6KyspCgkJewoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSAmc2htYWRkclt4eXpdOwoJCQlpZihjcHV1dGlsZmxhZykKCQkJewoJCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkWyVsZF0geGZlciBjb3VudCA9ICUxMC4yZiAlcywgVGhyb3VnaHB1dCA9ICUxMC4yZiAlcy9zZWMsIHdhbGw9JTYuM2YsIGNwdT0lNi4zZiwgJSU9JTYuMmZcbiIsCgkJCQkJKGxvbmcpeHl6LCBjaGlsZF9zdGF0LT5hY3R1YWwsIHVuaXQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsIHVuaXQsIGNoaWxkX3N0YXQtPndhbGx0aW1lLCAKCQkJCQljaGlsZF9zdGF0LT5jcHV0aW1lLCBjcHVfdXRpbChjaGlsZF9zdGF0LT5jcHV0aW1lLCBjaGlsZF9zdGF0LT53YWxsdGltZSkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkWyVsZF0geGZlciBjb3VudCA9ICUxMC4yZiAlcywgVGhyb3VnaHB1dCA9ICUxMC4yZiAlcy9zZWNcbiIsCgkJCQkJKGxvbmcpeHl6LCBjaGlsZF9zdGF0LT5hY3R1YWwsIHVuaXQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsIHVuaXQpOwoJCQl9CgkJfQoJfQoJaWYoKCFkaXN0cmlidXRlZCkgfHwgKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpKQoJCXN0b3BfbW9uaXRvcigiUmVhZCIpOwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqIEVuZCBvZiByZWFkZXJzIHRocm91Z2hwdXQgKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJc3luYygpOwoJc2xlZXAoMik7CglpZihyZXN0ZikKCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CgkJc3RvcF9tYXN0ZXJfbGlzdGVuKG1hc3Rlcl9saXN0ZW5fc29ja2V0KTsKCQljbGVhbnVwX2NvbW0oKTsKCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqIFJlUmVhZGVyIHRocm91Z2hwdXQgdGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCXRvdXRwdXRpbmRleCsrOwoJc3RyY3B5KCZ0b3V0cHV0W3RvdXRwdXRpbmRleF1bMF0sdGhyb3VnaHB1dF90ZXN0c1szXSk7CglpZihub3JldGVzdCkKCXsKCQlzdG9yZV9kdmFsdWUoIChkb3VibGUpMCk7CgkJZ290byBuZXh0MTsKCX0KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdGFydF9tb25pdG9yKCJSZXJlYWQiKTsKCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCSpzdG9wX2ZsYWc9MDsKCXRvdGFsX2tpbG9zPTA7CiAgICAgICAgLyogSG9va3MgdG8gc3RhcnQgdGhlIGRpc3RyaWJ1dGVkIElvem9uZSBjbGllbnQvc2VydmVyIGNvZGUgKi8KICAgICAgICBpZihkaXN0cmlidXRlZCkKICAgICAgICB7CiAgICAgICAgICAgICAgICB1c2VfdGhyZWFkPTA7ICAvKiBUdXJuIG9mIGFueSBQb3NpeCB0aHJlYWRzICovCiAgICAgICAgICAgICAgICBpZihtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfbGlzdGVuX3NvY2tldCA9IHN0YXJ0X21hc3Rlcl9saXN0ZW4oKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lX2NsaWVudCgpOwogICAgICAgIH0KCWlmKCF1c2VfdGhyZWFkKQoJewoJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewoJCWNoaWQ9eHg7CgkJY2hpbGRpZHNbeHhdID0gc3RhcnRfY2hpbGRfcHJvYyhUSFJFQURfUkVSRUFEX1RFU1QsIG51bXJlY3M2NCxyZWNsZW4pOwoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuRm9yayBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCUtpbGwoKGxvbmcgbG9uZyljaGlsZGlkc1t4eV0sKGxvbmcgbG9uZylTSUdURVJNKTsKCQkJfQoJCQlleGl0KDMyKTsKCQl9CgkJaWYoY2hpbGRpZHNbeHhdPT0wKXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCQl0aHJlYWRfcnJlYWRfdGVzdCgodm9pZCAqKXh4KTsKI2Vsc2UKCQkJdGhyZWFkX3JyZWFkX3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJfQkKCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9ycmVhZF90ZXN0LHh4KTsKI2Vsc2UKCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9ycmVhZF90ZXN0LCh2b2lkICopKGxvbmcpeHgpOwojZW5kaWYKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcblRocmVhZCBjcmVhdGUgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlraWxsKChwaWRfdClteWlkLChpbnQpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzMyk7CgkJfQoJICAgfQoJfQojZW5kaWYKCWlmKG15aWQgPT0gKGxvbmcgbG9uZylnZXRwaWQoKSl7CiAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKICAgICAgICAgICAgICAgIH0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdGFydCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnPT1DSElMRF9TVEFURV9IT0xEKQoJCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJCX0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspewoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfQkVHSU47CS8qIHRlbGwgY2hpbGRyZW4gdG8gZ28gKi8KCQkJaWYoZGVsYXlfc3RhcnQhPTApCgkJCQlQb2xsKChsb25nIGxvbmcpZGVsYXlfc3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVsbF9jaGlsZHJlbl9iZWdpbihpKTsKCQl9CgkJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CgkJZ290byBqdW1wZW5kMjsKCX0KCQpqdW1wZW5kMjoKCWdldG91dD0wOwoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsJIC8qIFBhcmVudCBoZXJlICovCgkJZm9yKCBpID0gMDsgaSA8IG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RvcCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICB7CgkJCQlwcmludGYoIlxuXHRUZXN0IHJ1bm5pbmc6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9kaXN0X2pvaW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJICAgaWYodXNlX3RocmVhZCkKCQkJICAgewoJCQkJdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CgkJCSAgIH0KCQkJICAgZWxzZQoJCQkgICB7CgkJCQl3YWl0KDApOwoJCQkgICB9CgkJCX0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7IAoJCWlmKGp0aW1lIDwgKGRvdWJsZSkuMDAwMDAxKQoJCXsKCQkJanRpbWU9dGltZV9yZXM7CgkJfQoJfQoJdG90YWxfdGltZSA9ICh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMSktdGltZV9yZXM7IC8qIFBhcmVudHMgdGltZSAqLwoJaWYodG90YWxfdGltZSA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJdG90YWxfdGltZT10aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KI2lmZGVmIEpUSU1FCgl0b3RhbF90aW1lPXRvdGFsX3RpbWUtanRpbWU7LyogUmVtb3ZlIHRoZSBqb2luIHRpbWUgKi8KCWlmKCFzaWxlbnQpIHByaW50ZigiXG5Kb2luIHRpbWUgJTEwLjJmXG4iLGp0aW1lKTsKI2VuZGlmCgltaW5fdGhyb3VnaHB1dD1tYXhfdGhyb3VnaHB1dD1taW5feGZlcj0wOwoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiIpOwoJZm9yKHh5ej0wO3h5ejxudW1fY2hpbGQ7eHl6KyspewoJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHl6XTsKCQl0b3RhbF9raWxvcys9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlwdG90YWwrPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZihjaGlsZF9zdGF0LT5hY3R1YWwgPCBtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA+IG1heF90aHJvdWdocHV0KQoJCQltYXhfdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWNwdXRpbWUgKz0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQkvKiBHZXQgdGhlIGVhcmxpZXN0IHN0YXJ0IHRpbWUgYW5kIGxhdGVzdCBmaW5pIHRpbWUgdG8gY2FsYy4gZWxhcHNlZCB0aW1lLiAqLwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA8IGNoaWxkX3N0YXQtPmNwdXRpbWUpCgkJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPiB3YWxsdGltZSkKCQkJd2FsbHRpbWUgPSBjaGlsZF9zdGF0LT53YWxsdGltZTsKCX0KCWF2Z190aHJvdWdocHV0PXRvdGFsX2tpbG9zL251bV9jaGlsZDsKCWlmKGNwdXV0aWxmbGFnKQoJewovKgoJCWlmICh3YWxsdGltZSA8IGNwdXRpbWVfcmVzKQoJCQl3YWxsdGltZSA9IDAuMDsKKi8KCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJfQoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMgKHdhbGx0aW1lLCBjcHV0aW1lKTsJLyogTXVzdCBiZSBCZWZvcmUgc3RvcmVfZHZhbHVlKCkuICovCglzdG9yZV9kdmFsdWUodG90YWxfa2lsb3MpOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICVsZCByZS1yZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGQgcmUtcmVhZGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCAoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUsdW5pdCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICVsbGQgcmUtcmVhZGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCB0b3RhbF9raWxvcyx1bml0KTsKCWlmKCFzaWxlbnQgJiYgIWRpc3RyaWJ1dGVkKSBwcmludGYoIlx0UGFyZW50IHNlZXMgdGhyb3VnaHB1dCBmb3IgJWxsZCByZS1yZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJSZXJlYWQiKTsKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKiBFbmQgb2YgcmUtcmVhZGVycyB0aHJvdWdocHV0ICoqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCXN5bmMoKTsKCXNsZWVwKDIpOwoJaWYocmVzdGYpCgkJc2xlZXAoKGludClyZXN0X3ZhbCk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCXsKICAgICAgICAgICAgICAgIHN0b3BfbWFzdGVyX2xpc3RlbihtYXN0ZXJfbGlzdGVuX3NvY2tldCk7CgkJY2xlYW51cF9jb21tKCk7Cgl9CgpuZXh0MToKCWlmKGluY2x1ZGVfdGZsYWcpCgkJaWYoIShpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVJFVkVSU0VfTUFTSykpCgkJCWdvdG8gbmV4dDI7CglzeW5jKCk7CglzbGVlcCgyKTsKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqIFJldmVyc2UgcmVhZGVyIHRocm91Z2hwdXQgdGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgl0b3V0cHV0aW5kZXgrKzsKCXN0cmNweSgmdG91dHB1dFt0b3V0cHV0aW5kZXhdWzBdLHRocm91Z2hwdXRfdGVzdHNbNF0pOwoJaWYoKCFkaXN0cmlidXRlZCkgfHwgKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpKQoJCXN0YXJ0X21vbml0b3IoIlJldnJlYWQiKTsKCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCSpzdG9wX2ZsYWc9MDsKCXRvdGFsX2tpbG9zPTA7CiAgICAgICAgLyogSG9va3MgdG8gc3RhcnQgdGhlIGRpc3RyaWJ1dGVkIElvem9uZSBjbGllbnQvc2VydmVyIGNvZGUgKi8KICAgICAgICBpZihkaXN0cmlidXRlZCkKICAgICAgICB7CiAgICAgICAgICAgICAgICB1c2VfdGhyZWFkPTA7ICAvKiBUdXJuIG9mIGFueSBQb3NpeCB0aHJlYWRzICovCiAgICAgICAgICAgICAgICBpZihtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfbGlzdGVuX3NvY2tldCA9IHN0YXJ0X21hc3Rlcl9saXN0ZW4oKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lX2NsaWVudCgpOwogICAgICAgIH0KCWlmKCF1c2VfdGhyZWFkKQoJewoJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewoJCWNoaWQ9eHg7CgkJY2hpbGRpZHNbeHhdID0gc3RhcnRfY2hpbGRfcHJvYyhUSFJFQURfUkVWRVJTRV9SRUFEX1RFU1QsbnVtcmVjczY0LHJlY2xlbik7CgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5Gb3JrIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJS2lsbCgobG9uZyBsb25nKWNoaWxkaWRzW3h5XSwobG9uZyBsb25nKVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzQpOwoJCX0KCQlpZihjaGlsZGlkc1t4eF09PTApewojaWZkZWYgXzY0QklUX0FSQ0hfCgkJCXRocmVhZF9yZXZlcnNlX3JlYWRfdGVzdCgodm9pZCAqKXh4KTsKI2Vsc2UKCQkJdGhyZWFkX3JldmVyc2VfcmVhZF90ZXN0KCh2b2lkICopKChsb25nKXh4KSk7CiNlbmRpZgoJCX0JCgkgICB9Cgl9CiNpZm5kZWYgTk9fVEhSRUFEUwoJZWxzZQoJewoJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewkvKiBDcmVhdGUgdGhlIGNoaWxkcmVuICovCgkJY2hpZD14eDsKCQlpZighYmFycmF5W3h4XSkKCQl7CgkJCWJhcnJheVt4eF09KGNoYXIgKikgYWxsb2NfbWVtKChsb25nIGxvbmcpKE1BWEJVRkZFUlNJWkUrY2FjaGVfc2l6ZSksKGludCkwKTsKCQkJaWYoYmFycmF5W3h4XSA9PSAwKSB7CiAgICAgICAgCQkgICBwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZDoiKTsKICAgICAgICAJCSAgIGV4aXQoMjYpOwogICAgICAgIAkJfQogICAgIAkJCWJhcnJheVt4eF0gPShjaGFyICopKCgobG9uZyliYXJyYXlbeHhdICsgY2FjaGVfc2l6ZSApICYgCgkJCX4oY2FjaGVfc2l6ZS0xKSk7CgkJfQojaWZkZWYgXzY0QklUX0FSQ0hfCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfcmV2ZXJzZV9yZWFkX3Rlc3QseHgpOwojZWxzZQoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSggdGhyZWFkX3JldmVyc2VfcmVhZF90ZXN0LCh2b2lkICopKGxvbmcpeHgpOwojZW5kaWYKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcblRocmVhZCBjcmVhdGUgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlraWxsKChwaWRfdClteWlkLChpbnQpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzNSk7CgkJfQoJICAgfQoJfQojZW5kaWYKCWlmKG15aWQgPT0gKGxvbmcgbG9uZylnZXRwaWQoKSl7CiAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKICAgICAgICAgICAgICAgIH0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdGFydCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnPT1DSElMRF9TVEFURV9IT0xEKQoJCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJCX0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspewoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfQkVHSU47CS8qIHRlbGwgY2hpbGRyZW4gdG8gZ28gKi8KCQkJaWYoZGVsYXlfc3RhcnQhPTApCgkJCQlQb2xsKChsb25nIGxvbmcpZGVsYXlfc3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVsbF9jaGlsZHJlbl9iZWdpbihpKTsKCQl9CgkJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7Cgl9CgkKCWdldG91dD0wOwoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsJIC8qIFBhcmVudCBoZXJlICovCgkJZm9yKCBpID0gMDsgaSA8IG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RvcCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICB7CgkJCQlwcmludGYoIlxuXHRUZXN0IHJ1bm5pbmc6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9kaXN0X2pvaW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodXNlX3RocmVhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9qb2luKGNoaWxkaWRzW2ldLCh2b2lkICopJnBzdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoJCQlpZighanN0YXJ0dGltZSkKCQkJCWpzdGFydHRpbWUgPSB0aW1lX3NvX2ZhcigpOyAKCQl9CgkJanRpbWUgPSAodGltZV9zb19mYXIoKS1qc3RhcnR0aW1lKS10aW1lX3JlczsKCQlpZihqdGltZSA8IChkb3VibGUpLjAwMDAwMSkKCQl7CgkJCWp0aW1lPXRpbWVfcmVzOwoJCX0KCX0KCXRvdGFsX3RpbWUgPSAodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOyAvKiBQYXJlbnRzIHRpbWUgKi8KCWlmKHRvdGFsX3RpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXRvdGFsX3RpbWU9dGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CiNpZmRlZiBKVElNRQoJdG90YWxfdGltZT10b3RhbF90aW1lLWp0aW1lOy8qIFJlbW92ZSB0aGUgam9pbiB0aW1lICovCglpZighc2lsZW50KSBwcmludGYoIlxuSm9pbiB0aW1lICUxMC4yZlxuIixqdGltZSk7CiNlbmRpZgoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJbWluX3Rocm91Z2hwdXQ9bWF4X3Rocm91Z2hwdXQ9bWluX3hmZXI9MDsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsKCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h5el07CgkJdG90YWxfa2lsb3MrPWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJcHRvdGFsKz1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoY2hpbGRfc3RhdC0+YWN0dWFsIDwgbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IG1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPiBtYXhfdGhyb3VnaHB1dCkKCQkJbWF4X3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQkvKiB3YWxsdGltZSArPSBjaGlsZF9zdGF0LT53YWxsdGltZTsgKi8KCQljcHV0aW1lICs9IGNoaWxkX3N0YXQtPmNwdXRpbWU7CgkJLyogR2V0IHRoZSBlYXJsaWVzdCBzdGFydCB0aW1lIGFuZCBsYXRlc3QgZmluaSB0aW1lIHRvIGNhbGMuIGVsYXBzZWQgdGltZS4gKi8KCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPCBjaGlsZF9zdGF0LT5jcHV0aW1lKQoJCQljaGlsZF9zdGF0LT53YWxsdGltZSA9IGNoaWxkX3N0YXQtPmNwdXRpbWU7CgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lID4gd2FsbHRpbWUpCgkJCXdhbGx0aW1lID0gY2hpbGRfc3RhdC0+d2FsbHRpbWU7Cgl9CglhdmdfdGhyb3VnaHB1dD10b3RhbF9raWxvcy9udW1fY2hpbGQ7CglpZihjcHV1dGlsZmxhZykKCXsKLyoKCQlpZiAod2FsbHRpbWUgPCBjcHV0aW1lX3JlcykKCQkJd2FsbHRpbWUgPSAwLjA7CiovCgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzICh3YWxsdGltZSwgY3B1dGltZSk7CS8qIE11c3QgYmUgQmVmb3JlIHN0b3JlX2R2YWx1ZSgpLiAqLwoJc3RvcmVfZHZhbHVlKHRvdGFsX2tpbG9zKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGQgcmV2ZXJzZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGQgcmV2ZXJzZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxsZCByZXZlcnNlIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsbGQgcmV2ZXJzZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJSZXZyZWFkIik7CglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CiAgICAgICAgICAgICAgICBzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQpuZXh0MjoKCWlmKGluY2x1ZGVfdGZsYWcpCgkJaWYoIShpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVNUUklERV9SRUFEX01BU0spKQoJCQlnb3RvIG5leHQzOwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKiBzdHJpZGUgcmVhZGVyIHRocm91Z2hwdXQgdGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgl0b3V0cHV0aW5kZXgrKzsKCXN0cmNweSgmdG91dHB1dFt0b3V0cHV0aW5kZXhdWzBdLHRocm91Z2hwdXRfdGVzdHNbNV0pOwoJaWYoKCFkaXN0cmlidXRlZCkgfHwgKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpKQoJCXN0YXJ0X21vbml0b3IoIlN0cmlkZXJlYWQiKTsKCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCXN5bmMoKTsKCXNsZWVwKDIpOwoJKnN0b3BfZmxhZz0wOwoJdG90YWxfa2lsb3M9MDsKICAgICAgICAvKiBIb29rcyB0byBzdGFydCB0aGUgZGlzdHJpYnV0ZWQgSW96b25lIGNsaWVudC9zZXJ2ZXIgY29kZSAqLwogICAgICAgIGlmKGRpc3RyaWJ1dGVkKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHVzZV90aHJlYWQ9MDsgIC8qIFR1cm4gb2YgYW55IFBvc2l4IHRocmVhZHMgKi8KICAgICAgICAgICAgICAgIGlmKG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9saXN0ZW5fc29ja2V0ID0gc3RhcnRfbWFzdGVyX2xpc3RlbigpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVfY2xpZW50KCk7CiAgICAgICAgfQoJaWYoIXVzZV90aHJlYWQpCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CgkJY2hpZD14eDsKCQljaGlsZGlkc1t4eF0gPSBzdGFydF9jaGlsZF9wcm9jKFRIUkVBRF9TVFJJREVfVEVTVCxudW1yZWNzNjQscmVjbGVuKTsKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlLaWxsKChsb25nIGxvbmcpY2hpbGRpZHNbeHldLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzNik7CgkJfQoJCWlmKGNoaWxkaWRzW3h4XT09MCl7CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQkJdGhyZWFkX3N0cmlkZV9yZWFkX3Rlc3QoKHZvaWQgKil4eCk7CiNlbHNlCgkJCXRocmVhZF9zdHJpZGVfcmVhZF90ZXN0KCh2b2lkICopKChsb25nKXh4KSk7CiNlbmRpZgoJCX0JCgkgICB9Cgl9CiNpZm5kZWYgTk9fVEhSRUFEUwoJZWxzZQoJewoJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewkvKiBDcmVhdGUgdGhlIGNoaWxkcmVuICovCgkJY2hpZD14eDsKCQlpZighYmFycmF5W3h4XSkKCQl7CgkJCWJhcnJheVt4eF09KGNoYXIgKikgYWxsb2NfbWVtKChsb25nIGxvbmcpKE1BWEJVRkZFUlNJWkUrY2FjaGVfc2l6ZSksKGludCkwKTsKCQkJaWYoYmFycmF5W3h4XSA9PSAwKSB7CiAgICAgICAgCQkgICBwZXJyb3IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZDoiKTsKICAgICAgICAJCSAgIGV4aXQoMjYpOwogICAgICAgIAkJfQogICAgIAkJCWJhcnJheVt4eF0gPShjaGFyICopKCgobG9uZyliYXJyYXlbeHhdICsgY2FjaGVfc2l6ZSApICYgCgkJCX4oY2FjaGVfc2l6ZS0xKSk7CgkJfQojaWZkZWYgXzY0QklUX0FSQ0hfCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfc3RyaWRlX3JlYWRfdGVzdCx4eCk7CiNlbHNlCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfc3RyaWRlX3JlYWRfdGVzdCwodm9pZCAqKShsb25nKXh4KTsKI2VuZGlmCgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5UaHJlYWQgY3JlYXRlIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJa2lsbCgocGlkX3QpbXlpZCwoaW50KVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzcpOwoJCX0KCSAgIH0KCX0KI2VuZGlmCglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewogICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbWFzdGVyX2xpc3Rlbl9sb29wKChpbnQpIG51bV9jaGlsZCk7CiAgICAgICAgICAgICAgICB9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RhcnQgKi8KCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJd2hpbGUoY2hpbGRfc3RhdC0+ZmxhZz09Q0hJTERfU1RBVEVfSE9MRCkKCQkJCVBvbGwoKGxvbmcgbG9uZykxKTsKCQl9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0JFR0lOOwkvKiB0ZWxsIGNoaWxkcmVuIHRvIGdvICovCgkJCWlmKGRlbGF5X3N0YXJ0IT0wKQoJCQkJUG9sbCgobG9uZyBsb25nKWRlbGF5X3N0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGxfY2hpbGRyZW5fYmVnaW4oaSk7CgkJfQoJCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJfQoJCglnZXRvdXQ9MDsKCWlmKG15aWQgPT0gKGxvbmcgbG9uZylnZXRwaWQoKSl7CSAvKiBQYXJlbnQgaGVyZSAqLwoJCWZvciggaSA9IDA7IGkgPCBudW1fY2hpbGQ7IGkrKyl7IC8qIHdhaXQgZm9yIGNoaWxkcmVuIHRvIHN0b3AgKi8KCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgewoJCQkJcHJpbnRmKCJcblx0VGVzdCBydW5uaW5nOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfZGlzdF9qb2luKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVzZV90aHJlYWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfam9pbihjaGlsZGlkc1tpXSwodm9pZCAqKSZwc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7CgkJaWYoanRpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJCXsKCQkJanRpbWU9dGltZV9yZXM7IAoJCX0KCX0KCXRvdGFsX3RpbWUgPSAodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOyAvKiBQYXJlbnRzIHRpbWUgKi8KCWlmKHRvdGFsX3RpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXRvdGFsX3RpbWU9dGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CiNpZmRlZiBKVElNRQoJdG90YWxfdGltZT10b3RhbF90aW1lLWp0aW1lOy8qIFJlbW92ZSB0aGUgam9pbiB0aW1lICovCglpZighc2lsZW50KSBwcmludGYoIlxuSm9pbiB0aW1lICUxMC4yZlxuIixqdGltZSk7CiNlbmRpZgoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJbWluX3Rocm91Z2hwdXQ9bWF4X3Rocm91Z2hwdXQ9bWluX3hmZXI9MDsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsKCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h5el07CgkJdG90YWxfa2lsb3MrPWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJcHRvdGFsKz1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoY2hpbGRfc3RhdC0+YWN0dWFsIDwgbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IG1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPiBtYXhfdGhyb3VnaHB1dCkKCQkJbWF4X3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQkvKiB3YWxsdGltZSArPSBjaGlsZF9zdGF0LT53YWxsdGltZTsgKi8KCQljcHV0aW1lICs9IGNoaWxkX3N0YXQtPmNwdXRpbWU7CgkJLyogR2V0IHRoZSBiaWdnZXN0IHdhbGx0aW1lICovCgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lIDwgY2hpbGRfc3RhdC0+Y3B1dGltZSkKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA+IHdhbGx0aW1lKQoJCQl3YWxsdGltZSA9IGNoaWxkX3N0YXQtPndhbGx0aW1lOwoJfQoJYXZnX3Rocm91Z2hwdXQ9dG90YWxfa2lsb3MvbnVtX2NoaWxkOwoJaWYoY3B1dXRpbGZsYWcpCgl7Ci8qCgkJaWYgKHdhbGx0aW1lIDwgY3B1dGltZV9yZXMpCgkJCXdhbGx0aW1lID0gMC4wOwoqLwoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7Cgl9CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyAod2FsbHRpbWUsIGNwdXRpbWUpOwkvKiBNdXN0IGJlIEJlZm9yZSBzdG9yZV9kdmFsdWUoKS4gKi8KCXN0b3JlX2R2YWx1ZSh0b3RhbF9raWxvcyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxkIHN0cmlkZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGQgc3RyaWRlIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGxkIHN0cmlkZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGxkIHN0cmlkZSByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJTdHJpZGVyZWFkIik7CglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CiAgICAgICAgICAgICAgICBzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKiByYW5kb20gcmVhZGVyIHRocm91Z2hwdXQgdGVzdHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpuZXh0MzoKCWlmKGluY2x1ZGVfdGZsYWcpCgkJaWYoIShpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVJBTkRPTV9SV19NQVNLKSkKCQkJZ290byBuZXh0NDsKCQoJdG91dHB1dGluZGV4Kys7CglzdHJjcHkoJnRvdXRwdXRbdG91dHB1dGluZGV4XVswXSx0aHJvdWdocHV0X3Rlc3RzWzZdKTsKCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdGFydF9tb25pdG9yKCJSYW5kcmVhZCIpOwoJd2FsbHRpbWUgPSAwLjA7CgljcHV0aW1lID0gMC4wOwoJanN0YXJ0dGltZT0wOwoJc3luYygpOwoJc2xlZXAoMik7Cgkqc3RvcF9mbGFnPTA7Cgl0b3RhbF9raWxvcz0wOwogICAgICAgIC8qIEhvb2tzIHRvIHN0YXJ0IHRoZSBkaXN0cmlidXRlZCBJb3pvbmUgY2xpZW50L3NlcnZlciBjb2RlICovCiAgICAgICAgaWYoZGlzdHJpYnV0ZWQpCiAgICAgICAgewogICAgICAgICAgICAgICAgdXNlX3RocmVhZD0wOyAgLyogVHVybiBvZiBhbnkgUG9zaXggdGhyZWFkcyAqLwogICAgICAgICAgICAgICAgaWYobWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX2xpc3Rlbl9zb2NrZXQgPSBzdGFydF9tYXN0ZXJfbGlzdGVuKCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZV9jbGllbnQoKTsKICAgICAgICB9CglpZighdXNlX3RocmVhZCkKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsKCQljaGlkPXh4OwoJCWNoaWxkaWRzW3h4XSA9IHN0YXJ0X2NoaWxkX3Byb2MoVEhSRUFEX1JBTkRPTV9SRUFEX1RFU1QsbnVtcmVjczY0LHJlY2xlbik7CgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5Gb3JrIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJS2lsbCgobG9uZyBsb25nKWNoaWxkaWRzW3h5XSwobG9uZyBsb25nKVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzgpOwoJCX0KCQlpZihjaGlsZGlkc1t4eF09PTApewojaWZkZWYgXzY0QklUX0FSQ0hfCgkJCXRocmVhZF9yYW5yZWFkX3Rlc3QoKHZvaWQgKil4eCk7CiNlbHNlCgkJCXRocmVhZF9yYW5yZWFkX3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJfQkKCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9yYW5yZWFkX3Rlc3QseHgpOwojZWxzZQoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSggdGhyZWFkX3JhbnJlYWRfdGVzdCwodm9pZCAqKShsb25nKXh4KTsKI2VuZGlmCgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5UaHJlYWQgY3JlYXRlIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJa2lsbCgocGlkX3QpbXlpZCwoaW50KVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzkpOwoJCX0KCSAgIH0KCX0KI2VuZGlmCglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewogICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbWFzdGVyX2xpc3Rlbl9sb29wKChpbnQpIG51bV9jaGlsZCk7CiAgICAgICAgICAgICAgICB9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RhcnQgKi8KCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJd2hpbGUoY2hpbGRfc3RhdC0+ZmxhZz09Q0hJTERfU1RBVEVfSE9MRCkKCQkJCVBvbGwoKGxvbmcgbG9uZykxKTsKCQl9CgkJZm9yKGk9MDtpPG51bV9jaGlsZDsgaSsrKXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0JFR0lOOwkvKiB0ZWxsIGNoaWxkcmVuIHRvIGdvICovCgkJCWlmKGRlbGF5X3N0YXJ0IT0wKQoJCQkJUG9sbCgobG9uZyBsb25nKWRlbGF5X3N0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGxfY2hpbGRyZW5fYmVnaW4oaSk7CgkJfQoJCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJfQoJCglnZXRvdXQ9MDsKCWlmKG15aWQgPT0gKGxvbmcgbG9uZylnZXRwaWQoKSl7CSAvKiBQYXJlbnQgaGVyZSAqLwoJCWZvciggaSA9IDA7IGkgPCBudW1fY2hpbGQ7IGkrKyl7IC8qIHdhaXQgZm9yIGNoaWxkcmVuIHRvIHN0b3AgKi8KCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgewoJCQkJcHJpbnRmKCJcblx0VGVzdCBydW5uaW5nOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfZGlzdF9qb2luKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVzZV90aHJlYWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfam9pbihjaGlsZGlkc1tpXSwodm9pZCAqKSZwc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJaWYoIWpzdGFydHRpbWUpCgkJCQlqc3RhcnR0aW1lID0gdGltZV9zb19mYXIoKTsgCgkJfQoJCWp0aW1lID0gKHRpbWVfc29fZmFyKCktanN0YXJ0dGltZSktdGltZV9yZXM7CgkJaWYoanRpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJCXsKCQkJanRpbWU9dGltZV9yZXM7IAoJCX0KCX0KCXRvdGFsX3RpbWUgPSAodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOyAvKiBQYXJlbnRzIHRpbWUgKi8KCWlmKHRvdGFsX3RpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXRvdGFsX3RpbWU9dGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CiNpZmRlZiBKVElNRQoJdG90YWxfdGltZT10b3RhbF90aW1lLWp0aW1lOy8qIFJlbW92ZSB0aGUgam9pbiB0aW1lICovCglpZighc2lsZW50KSBwcmludGYoIlxuSm9pbiB0aW1lICUxMC4yZlxuIixqdGltZSk7CiNlbmRpZgoJdG90YWxfa2lsb3M9MDsKCXB0b3RhbD0wOwoJbWluX3Rocm91Z2hwdXQ9bWF4X3Rocm91Z2hwdXQ9bWluX3hmZXI9MDsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsKCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h5el07CgkJdG90YWxfa2lsb3MrPWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJcHRvdGFsKz1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoY2hpbGRfc3RhdC0+YWN0dWFsIDwgbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IG1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPiBtYXhfdGhyb3VnaHB1dCkKCQkJbWF4X3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQljcHV0aW1lICs9IGNoaWxkX3N0YXQtPmNwdXRpbWU7CgkJLyogR2V0IHRoZSBiaWdnZXN0IHdhbGx0aW1lICovCgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lIDwgY2hpbGRfc3RhdC0+Y3B1dGltZSkKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA+IHdhbGx0aW1lKQoJCQl3YWxsdGltZSA9IGNoaWxkX3N0YXQtPndhbGx0aW1lOwoJfQoJYXZnX3Rocm91Z2hwdXQ9dG90YWxfa2lsb3MvbnVtX2NoaWxkOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzICh3YWxsdGltZSwgY3B1dGltZSk7CS8qIE11c3QgYmUgQmVmb3JlIHN0b3JlX2R2YWx1ZSgpLiAqLwoJc3RvcmVfZHZhbHVlKHRvdGFsX2tpbG9zKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGQgcmFuZG9tIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsZCByYW5kb20gcmVhZGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCAoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUsdW5pdCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICVsbGQgcmFuZG9tIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsbGQgcmFuZG9tIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZW5kaWYKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNaW4gdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjIFxuIiwgcG9ydCxtaW5fdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNYXggdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LG1heF90aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEF2ZyB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIHBvcnQsYXZnX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHhmZXIgXHRcdFx0XHRcdD0gJTEwLjJmICVzXG4iLCBtaW5feGZlcix1bml0KTsKCS8qIENQVSUgY2FuIGJlID4gMTAwLjAgZm9yIG11bHRpcGxlIENQVXMgKi8KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmKHdhbGx0aW1lID09IDAuMCkKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDUFUgdXRpbGl6YXRpb246IFdhbGwgdGltZSAlOC4zZiAgICBDUFUgdGltZSAlOC4zZiAgICBDUFUgdXRpbGl6YXRpb24gJTYuMmYgJSVcblxuIiwKCQkJCXdhbGx0aW1lLCBjcHV0aW1lLCAwLjApOwoJCX0KCQllbHNlCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMTAwLjAgKiBjcHV0aW1lIC8gd2FsbHRpbWUpOwoJCX0KCX0KCWlmKENmbGFnKQoJewoJCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKQoJCXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikgJnNobWFkZHJbeHl6XTsKCQkJaWYoY3B1dXRpbGZsYWcpCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjLCB3YWxsPSU2LjNmLCBjcHU9JTYuM2YsICUlPSU2LjJmXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0LCBjaGlsZF9zdGF0LT53YWxsdGltZSwgCgkJCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY3B1X3V0aWwoY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0KTsKCQkJfQoJCX0KCX0KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdG9wX21vbml0b3IoIlJhbmRyZWFkIik7CglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CiAgICAgICAgICAgICAgICBzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKiAgbWl4ZWQgd29ya2xvYWQgdGhyb3VnaHB1dCB0ZXN0cyAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCm5leHQ0OgoJaWYoaW5jbHVkZV90ZmxhZykKCQlpZighKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUkFORE9NX01JWF9NQVNLKSkKCQkJZ290byBuZXh0NTsKCQoJdG91dHB1dGluZGV4Kys7CglzdHJjcHkoJnRvdXRwdXRbdG91dHB1dGluZGV4XVswXSx0aHJvdWdocHV0X3Rlc3RzWzddKTsKCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdGFydF9tb25pdG9yKCJNaXhlZCIpOwoJd2FsbHRpbWUgPSAwLjA7CgljcHV0aW1lID0gMC4wOwoJanN0YXJ0dGltZT0wOwoJc3luYygpOwoJc2xlZXAoMik7Cgkqc3RvcF9mbGFnPTA7Cgl0b3RhbF9raWxvcz0wOwogICAgICAgIC8qIEhvb2tzIHRvIHN0YXJ0IHRoZSBkaXN0cmlidXRlZCBJb3pvbmUgY2xpZW50L3NlcnZlciBjb2RlICovCiAgICAgICAgaWYoZGlzdHJpYnV0ZWQpCiAgICAgICAgewogICAgICAgICAgICAgICAgdXNlX3RocmVhZD0wOyAgLyogVHVybiBvZiBhbnkgUG9zaXggdGhyZWFkcyAqLwogICAgICAgICAgICAgICAgaWYobWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX2xpc3Rlbl9zb2NrZXQgPSBzdGFydF9tYXN0ZXJfbGlzdGVuKCk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZV9jbGllbnQoKTsKICAgICAgICB9CglpZighdXNlX3RocmVhZCkKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsKCQljaGlkPXh4OwoJCWNoaWxkaWRzW3h4XSA9IHN0YXJ0X2NoaWxkX3Byb2MoVEhSRUFEX1JBTkRPTV9NSVhfVEVTVCxudW1yZWNzNjQscmVjbGVuKTsKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlLaWxsKChsb25nIGxvbmcpY2hpbGRpZHNbeHldLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzOCk7CgkJfQoJCWlmKGNoaWxkaWRzW3h4XT09MCl7CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQkJdGhyZWFkX21peF90ZXN0KCh2b2lkICopeHgpOwojZWxzZQoJCQl0aHJlYWRfbWl4X3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJfQkKCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9taXhfdGVzdCx4eCk7CiNlbHNlCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfbWl4X3Rlc3QsKHZvaWQgKikobG9uZyl4eCk7CiNlbmRpZgoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuVGhyZWFkIGNyZWF0ZSBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCWtpbGwoKHBpZF90KW15aWQsKGludClTSUdURVJNKTsKCQkJfQoJCQlleGl0KDM5KTsKCQl9CgkgICB9Cgl9CiNlbmRpZgoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsKICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcCgoaW50KSBudW1fY2hpbGQpOwogICAgICAgICAgICAgICAgfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7IC8qIHdhaXQgZm9yIGNoaWxkcmVuIHRvIHN0YXJ0ICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9CRUdJTjsJLyogdGVsbCBjaGlsZHJlbiB0byBnbyAqLwoJCQlpZihkZWxheV9zdGFydCE9MCkKCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWxsX2NoaWxkcmVuX2JlZ2luKGkpOwoJCX0KCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCX0KCQoJZ2V0b3V0PTA7CglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewkgLyogUGFyZW50IGhlcmUgKi8KCQlmb3IoIGkgPSAwOyBpIDwgbnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdG9wICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJCXByaW50ZigiXG5cdFRlc3QgcnVubmluZzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2Rpc3Rfam9pbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICBpZih1c2VfdGhyZWFkKQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgkJCWlmKCFqc3RhcnR0aW1lKQoJCQkJanN0YXJ0dGltZSA9IHRpbWVfc29fZmFyKCk7IAoJCX0KCQlqdGltZSA9ICh0aW1lX3NvX2ZhcigpLWpzdGFydHRpbWUpLXRpbWVfcmVzOwoJCWlmKGp0aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCWp0aW1lPXRpbWVfcmVzOyAKCQl9Cgl9Cgl0b3RhbF90aW1lID0gKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlczsgLyogUGFyZW50cyB0aW1lICovCglpZih0b3RhbF90aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQl0b3RhbF90aW1lPXRpbWVfcmVzOwoJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQlyZXNfcHJvYj0xOwoJfQojaWZkZWYgSlRJTUUKCXRvdGFsX3RpbWU9dG90YWxfdGltZS1qdGltZTsvKiBSZW1vdmUgdGhlIGpvaW4gdGltZSAqLwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbkpvaW4gdGltZSAlMTAuMmZcbiIsanRpbWUpOwojZW5kaWYKCXRvdGFsX2tpbG9zPTA7CglwdG90YWw9MDsKCW1pbl90aHJvdWdocHV0PW1heF90aHJvdWdocHV0PW1pbl94ZmVyPTA7CglpZighc2lsZW50KSBwcmludGYoIlxuIik7Cglmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKyl7CgkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eXpdOwoJCXRvdGFsX2tpbG9zKz1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCXB0b3RhbCs9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKGNoaWxkX3N0YXQtPmFjdHVhbCA8IG1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCBtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0ID4gbWF4X3Rocm91Z2hwdXQpCgkJCW1heF90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJY3B1dGltZSArPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCS8qIEdldCB0aGUgYmlnZ2VzdCB3YWxsdGltZSAqLwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA8IGNoaWxkX3N0YXQtPmNwdXRpbWUpCgkJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPiB3YWxsdGltZSkKCQkJd2FsbHRpbWUgPSBjaGlsZF9zdGF0LT53YWxsdGltZTsKCX0KCWF2Z190aHJvdWdocHV0PXRvdGFsX2tpbG9zL251bV9jaGlsZDsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7Cgl9CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyAod2FsbHRpbWUsIGNwdXRpbWUpOwkvKiBNdXN0IGJlIEJlZm9yZSBzdG9yZV9kdmFsdWUoKS4gKi8KCXN0b3JlX2R2YWx1ZSh0b3RhbF9raWxvcyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxkIG1peGVkIHdvcmtsb2FkIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGQgbWl4ZWQgd29ya2xvYWQgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGxkIG1peGVkIHdvcmtsb2FkIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGxkIG1peGVkIHdvcmtsb2FkIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJNaXhlZCIpOwoJc3luYygpOwoJc2xlZXAoMik7CglpZihyZXN0ZikKCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJewogICAgICAgICAgICAgICAgc3RvcF9tYXN0ZXJfbGlzdGVuKG1hc3Rlcl9saXN0ZW5fc29ja2V0KTsKCQljbGVhbnVwX2NvbW0oKTsKCX0KbmV4dDU6CgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqIHJhbmRvbSB3cml0ZXIgdGhyb3VnaHB1dCB0ZXN0cyAgKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglpZihpbmNsdWRlX3RmbGFnKQoJCWlmKCEoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylSQU5ET01fUldfTUFTSykgfHwgbm9fd3JpdGUpCgkJCWdvdG8gbmV4dDY7CgkKCXRvdXRwdXRpbmRleCsrOwoJc3RyY3B5KCZ0b3V0cHV0W3RvdXRwdXRpbmRleF1bMF0sdGhyb3VnaHB1dF90ZXN0c1s4XSk7CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RhcnRfbW9uaXRvcigiUmFuZHdyaXRlIik7Cgl3YWxsdGltZSA9IDAuMDsKCWNwdXRpbWUgPSAwLjA7Cglqc3RhcnR0aW1lPTA7CglzeW5jKCk7CglzbGVlcCgyKTsKCSpzdG9wX2ZsYWc9MDsKCXRvdGFsX2tpbG9zPTA7CiAgICAgICAgLyogSG9va3MgdG8gc3RhcnQgdGhlIGRpc3RyaWJ1dGVkIElvem9uZSBjbGllbnQvc2VydmVyIGNvZGUgKi8KICAgICAgICBpZihkaXN0cmlidXRlZCkKICAgICAgICB7CiAgICAgICAgICAgICAgICB1c2VfdGhyZWFkPTA7ICAvKiBUdXJuIG9mIGFueSBQb3NpeCB0aHJlYWRzICovCiAgICAgICAgICAgICAgICBpZihtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfbGlzdGVuX3NvY2tldCA9IHN0YXJ0X21hc3Rlcl9saXN0ZW4oKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lX2NsaWVudCgpOwogICAgICAgIH0KCWlmKCF1c2VfdGhyZWFkKQoJewoJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewoJCWNoaWQ9eHg7CgkJY2hpbGRpZHNbeHhdID0gc3RhcnRfY2hpbGRfcHJvYyhUSFJFQURfUkFORE9NX1dSSVRFX1RFU1QsbnVtcmVjczY0LHJlY2xlbik7CgkJaWYoY2hpbGRpZHNbeHhdPT0tMSl7CgkJCXByaW50ZigiXG5Gb3JrIGZhaWxlZFxuIik7CgkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJS2lsbCgobG9uZyBsb25nKWNoaWxkaWRzW3h5XSwobG9uZyBsb25nKVNJR1RFUk0pOwoJCQl9CgkJCWV4aXQoMzgpOwoJCX0KCQlpZihjaGlsZGlkc1t4eF09PTApewojaWZkZWYgXzY0QklUX0FSQ0hfCgkJCXRocmVhZF9yYW53cml0ZV90ZXN0KCh2b2lkICopeHgpOwojZWxzZQoJCQl0aHJlYWRfcmFud3JpdGVfdGVzdCgodm9pZCAqKSgobG9uZyl4eCkpOwojZW5kaWYKCQl9CQoJICAgfQoJfQojaWZuZGVmIE5PX1RIUkVBRFMKCWVsc2UKCXsKCSAgIGZvcih4eCA9IDA7IHh4PCBudW1fY2hpbGQgOyB4eCsrKXsJLyogQ3JlYXRlIHRoZSBjaGlsZHJlbiAqLwoJCWNoaWQ9eHg7CgkJaWYoIWJhcnJheVt4eF0pCgkJewoJCQliYXJyYXlbeHhdPShjaGFyICopIGFsbG9jX21lbSgobG9uZyBsb25nKShNQVhCVUZGRVJTSVpFK2NhY2hlX3NpemUpLChpbnQpMCk7CgkJCWlmKGJhcnJheVt4eF0gPT0gMCkgewogICAgICAgIAkJICAgcGVycm9yKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQ6Iik7CiAgICAgICAgCQkgICBleGl0KDI2KTsKICAgICAgICAJCX0KICAgICAJCQliYXJyYXlbeHhdID0oY2hhciAqKSgoKGxvbmcpYmFycmF5W3h4XSArIGNhY2hlX3NpemUgKSAmIAoJCQl+KGNhY2hlX3NpemUtMSkpOwoJCX0KI2lmZGVmIF82NEJJVF9BUkNIXwoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSggdGhyZWFkX3JhbndyaXRlX3Rlc3QseHgpOwojZWxzZQoJCWNoaWxkaWRzW3h4XSA9IG15dGhyZWFkX2NyZWF0ZSggdGhyZWFkX3JhbndyaXRlX3Rlc3QsKHZvaWQgKikobG9uZyl4eCk7CiNlbmRpZgoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuVGhyZWFkIGNyZWF0ZSBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCWtpbGwoKHBpZF90KW15aWQsKGludClTSUdURVJNKTsKCQkJfQoJCQlleGl0KDM5KTsKCQl9CgkgICB9Cgl9CiNlbmRpZgoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsKICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcCgoaW50KSBudW1fY2hpbGQpOwogICAgICAgICAgICAgICAgfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7IC8qIHdhaXQgZm9yIGNoaWxkcmVuIHRvIHN0YXJ0ICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9CRUdJTjsJLyogdGVsbCBjaGlsZHJlbiB0byBnbyAqLwoJCQlpZihkZWxheV9zdGFydCE9MCkKCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWxsX2NoaWxkcmVuX2JlZ2luKGkpOwoJCX0KCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCX0KCQoJZ2V0b3V0PTA7CglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewkgLyogUGFyZW50IGhlcmUgKi8KCQlmb3IoIGkgPSAwOyBpIDwgbnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdG9wICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJCXByaW50ZigiXG5cdFRlc3QgcnVubmluZzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2Rpc3Rfam9pbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICBpZih1c2VfdGhyZWFkKQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgkJCWlmKCFqc3RhcnR0aW1lKQoJCQkJanN0YXJ0dGltZSA9IHRpbWVfc29fZmFyKCk7IAoJCX0KCQlqdGltZSA9ICh0aW1lX3NvX2ZhcigpLWpzdGFydHRpbWUpLXRpbWVfcmVzOwoJCWlmKGp0aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCWp0aW1lPXRpbWVfcmVzOyAKCQl9Cgl9Cgl0b3RhbF90aW1lID0gKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlczsgLyogUGFyZW50cyB0aW1lICovCglpZih0b3RhbF90aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQl0b3RhbF90aW1lPXRpbWVfcmVzOwoJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQlyZXNfcHJvYj0xOwoJfQojaWZkZWYgSlRJTUUKCXRvdGFsX3RpbWU9dG90YWxfdGltZS1qdGltZTsvKiBSZW1vdmUgdGhlIGpvaW4gdGltZSAqLwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbkpvaW4gdGltZSAlMTAuMmZcbiIsanRpbWUpOwojZW5kaWYKCXRvdGFsX2tpbG9zPTA7CglwdG90YWw9MDsKCW1pbl90aHJvdWdocHV0PW1heF90aHJvdWdocHV0PW1pbl94ZmVyPTA7CglpZighc2lsZW50KSBwcmludGYoIlxuIik7Cglmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKyl7CgkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eXpdOwoJCXRvdGFsX2tpbG9zKz1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCXB0b3RhbCs9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKGNoaWxkX3N0YXQtPmFjdHVhbCA8IG1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCBtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0ID4gbWF4X3Rocm91Z2hwdXQpCgkJCW1heF90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJY3B1dGltZSArPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCS8qIEdldCB0aGUgYmlnZ2VzdCB3YWxsdGltZSAqLwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA8IGNoaWxkX3N0YXQtPmNwdXRpbWUpCgkJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPiB3YWxsdGltZSkKCQkJd2FsbHRpbWUgPSBjaGlsZF9zdGF0LT53YWxsdGltZTsKCX0KCWF2Z190aHJvdWdocHV0PXRvdGFsX2tpbG9zL251bV9jaGlsZDsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7Cgl9CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyAod2FsbHRpbWUsIGNwdXRpbWUpOwkvKiBNdXN0IGJlIEJlZm9yZSBzdG9yZV9kdmFsdWUoKS4gKi8KCXN0b3JlX2R2YWx1ZSh0b3RhbF9raWxvcyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxkIHJhbmRvbSB3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGQgcmFuZG9tIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGxkIHJhbmRvbSB3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGxkIHJhbmRvbSB3cml0ZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlYyBcbiIsIHBvcnQsbWluX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWF4IHRocm91Z2hwdXQgcGVyICVzIFx0XHRcdD0gJTEwLjJmICVzL3NlY1xuIiwgcG9ydCxtYXhfdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRBdmcgdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LGF2Z190aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdE1pbiB4ZmVyIFx0XHRcdFx0XHQ9ICUxMC4yZiAlc1xuIiwgbWluX3hmZXIsdW5pdCk7CgkvKiBDUFUlIGNhbiBiZSA+IDEwMC4wIGZvciBtdWx0aXBsZSBDUFVzICovCglpZihjcHV1dGlsZmxhZykKCXsKCQlpZih3YWxsdGltZSA9PSAwLjApCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMC4wKTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENQVSB1dGlsaXphdGlvbjogV2FsbCB0aW1lICU4LjNmICAgIENQVSB0aW1lICU4LjNmICAgIENQVSB1dGlsaXphdGlvbiAlNi4yZiAlJVxuXG4iLAoJCQkJd2FsbHRpbWUsIGNwdXRpbWUsIDEwMC4wICogY3B1dGltZSAvIHdhbGx0aW1lKTsKCQl9Cgl9CglpZihDZmxhZykKCXsKCQlmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKykKCQl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopICZzaG1hZGRyW3h5el07CgkJCWlmKGNwdXV0aWxmbGFnKQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlYywgd2FsbD0lNi4zZiwgY3B1PSU2LjNmLCAlJT0lNi4yZlxuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsIAoJCQkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNwdV91dGlsKGNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRbJWxkXSB4ZmVyIGNvdW50ID0gJTEwLjJmICVzLCBUaHJvdWdocHV0ID0gJTEwLjJmICVzL3NlY1xuIiwKCQkJCQkobG9uZyl4eXosIGNoaWxkX3N0YXQtPmFjdHVhbCwgdW5pdCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgdW5pdCk7CgkJCX0KCQl9Cgl9CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RvcF9tb25pdG9yKCJSYW5kd3JpdGUiKTsKCXN5bmMoKTsKCXNsZWVwKDIpOwoJaWYocmVzdGYpCgkJc2xlZXAoKGludClyZXN0X3ZhbCk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCXsKICAgICAgICAgICAgICAgIHN0b3BfbWFzdGVyX2xpc3RlbihtYXN0ZXJfbGlzdGVuX3NvY2tldCk7CgkJY2xlYW51cF9jb21tKCk7Cgl9Cm5leHQ2OgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKiBQd3JpdGUgd3JpdGVyIHRocm91Z2hwdXQgdGVzdHMgICoqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZuZGVmIEhBVkVfUFJFQUQKCQlnb3RvIG5leHQ3OwojZWxzZQoJaWYoaW5jbHVkZV90ZmxhZykKCQlpZighKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUFdSSVRFUl9NQVNLKSkKCQkJZ290byBuZXh0NzsKCQoJdG91dHB1dGluZGV4Kys7CglzdHJjcHkoJnRvdXRwdXRbdG91dHB1dGluZGV4XVswXSx0aHJvdWdocHV0X3Rlc3RzWzldKTsKCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdGFydF9tb25pdG9yKCJQd3JpdGUiKTsKCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCXN5bmMoKTsKCXNsZWVwKDIpOwoJKnN0b3BfZmxhZz0wOwoJdG90YWxfa2lsb3M9MDsKICAgICAgICAvKiBIb29rcyB0byBzdGFydCB0aGUgZGlzdHJpYnV0ZWQgSW96b25lIGNsaWVudC9zZXJ2ZXIgY29kZSAqLwogICAgICAgIGlmKGRpc3RyaWJ1dGVkKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHVzZV90aHJlYWQ9MDsgIC8qIFR1cm4gb2YgYW55IFBvc2l4IHRocmVhZHMgKi8KICAgICAgICAgICAgICAgIGlmKG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9saXN0ZW5fc29ja2V0ID0gc3RhcnRfbWFzdGVyX2xpc3RlbigpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVfY2xpZW50KCk7CiAgICAgICAgfQoJaWYoIXVzZV90aHJlYWQpCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CgkJY2hpZD14eDsKCQljaGlsZGlkc1t4eF0gPSBzdGFydF9jaGlsZF9wcm9jKFRIUkVBRF9QV1JJVEVfVEVTVCxudW1yZWNzNjQscmVjbGVuKTsKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlLaWxsKChsb25nIGxvbmcpY2hpbGRpZHNbeHldLChsb25nIGxvbmcpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzOCk7CgkJfQoJCWlmKGNoaWxkaWRzW3h4XT09MCl7CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQkJdGhyZWFkX3B3cml0ZV90ZXN0KCh2b2lkICopeHgpOwojZWxzZQoJCQl0aHJlYWRfcHdyaXRlX3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJfQkKCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9wd3JpdGVfdGVzdCx4eCk7CiNlbHNlCgkJY2hpbGRpZHNbeHhdID0gbXl0aHJlYWRfY3JlYXRlKCB0aHJlYWRfcHdyaXRlX3Rlc3QsKHZvaWQgKikobG9uZyl4eCk7CiNlbmRpZgoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuVGhyZWFkIGNyZWF0ZSBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCWtpbGwoKHBpZF90KW15aWQsKGludClTSUdURVJNKTsKCQkJfQoJCQlleGl0KDM5KTsKCQl9CgkgICB9Cgl9CiNlbmRpZgoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsKICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcCgoaW50KSBudW1fY2hpbGQpOwogICAgICAgICAgICAgICAgfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7IC8qIHdhaXQgZm9yIGNoaWxkcmVuIHRvIHN0YXJ0ICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpCgkJCQlQb2xsKChsb25nIGxvbmcpMSk7CgkJfQoJCWZvcihpPTA7aTxudW1fY2hpbGQ7IGkrKyl7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9CRUdJTjsJLyogdGVsbCBjaGlsZHJlbiB0byBnbyAqLwoJCQlpZihkZWxheV9zdGFydCE9MCkKCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWxsX2NoaWxkcmVuX2JlZ2luKGkpOwoJCX0KCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCX0KCQoJZ2V0b3V0PTA7CglpZihteWlkID09IChsb25nIGxvbmcpZ2V0cGlkKCkpewkgLyogUGFyZW50IGhlcmUgKi8KCQlmb3IoIGkgPSAwOyBpIDwgbnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdG9wICovCgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCQkJCXByaW50ZigiXG5cdFRlc3QgcnVubmluZzoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2Rpc3Rfam9pbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICBpZih1c2VfdGhyZWFkKQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2pvaW4oY2hpbGRpZHNbaV0sKHZvaWQgKikmcHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgkJCWlmKCFqc3RhcnR0aW1lKQoJCQkJanN0YXJ0dGltZSA9IHRpbWVfc29fZmFyKCk7IAoJCX0KCQlqdGltZSA9ICh0aW1lX3NvX2ZhcigpLWpzdGFydHRpbWUpLXRpbWVfcmVzOwoJCWlmKGp0aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCWp0aW1lPXRpbWVfcmVzOyAKCQl9Cgl9Cgl0b3RhbF90aW1lID0gKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlczsgLyogUGFyZW50cyB0aW1lICovCglpZih0b3RhbF90aW1lIDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQl0b3RhbF90aW1lPXRpbWVfcmVzOwoJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQlyZXNfcHJvYj0xOwoJfQojaWZkZWYgSlRJTUUKCXRvdGFsX3RpbWU9dG90YWxfdGltZS1qdGltZTsvKiBSZW1vdmUgdGhlIGpvaW4gdGltZSAqLwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbkpvaW4gdGltZSAlMTAuMmZcbiIsanRpbWUpOwojZW5kaWYKCXRvdGFsX2tpbG9zPTA7CglwdG90YWw9MDsKCW1pbl90aHJvdWdocHV0PW1heF90aHJvdWdocHV0PW1pbl94ZmVyPTA7CglpZighc2lsZW50KSBwcmludGYoIlxuIik7Cglmb3IoeHl6PTA7eHl6PG51bV9jaGlsZDt4eXorKyl7CgkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eXpdOwoJCXRvdGFsX2tpbG9zKz1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCXB0b3RhbCs9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKGNoaWxkX3N0YXQtPmFjdHVhbCA8IG1pbl94ZmVyKQoJCQltaW5feGZlcj1jaGlsZF9zdGF0LT5hY3R1YWw7CgkJaWYoIW1pbl90aHJvdWdocHV0KQoJCQltaW5fdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCBtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0ID4gbWF4X3Rocm91Z2hwdXQpCgkJCW1heF90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJY3B1dGltZSArPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCS8qIEdldCB0aGUgYmlnZ2VzdCB3YWxsdGltZSovCgkJaWYgKGNoaWxkX3N0YXQtPndhbGx0aW1lIDwgY2hpbGRfc3RhdC0+Y3B1dGltZSkKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBjaGlsZF9zdGF0LT5jcHV0aW1lOwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA+IHdhbGx0aW1lKQoJCQl3YWxsdGltZSA9IGNoaWxkX3N0YXQtPndhbGx0aW1lOwoJfQoJYXZnX3Rocm91Z2hwdXQ9dG90YWxfa2lsb3MvbnVtX2NoaWxkOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzICh3YWxsdGltZSwgY3B1dGltZSk7CS8qIE11c3QgYmUgQmVmb3JlIHN0b3JlX2R2YWx1ZSgpLiAqLwoJc3RvcmVfZHZhbHVlKHRvdGFsX2tpbG9zKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdENoaWxkcmVuIHNlZSB0aHJvdWdocHV0IGZvciAlbGQgcHdyaXRlIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsZCBwd3JpdGUgd3JpdGVycyBcdD0gJTEwLjJmICVzL3NlY1xuIiwgbnVtX2NoaWxkLCAoZG91YmxlKShwdG90YWwpL3RvdGFsX3RpbWUsdW5pdCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIlx0Q2hpbGRyZW4gc2VlIHRocm91Z2hwdXQgZm9yICVsbGQgcHdyaXRlIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsbGQgcHdyaXRlIHdyaXRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZW5kaWYKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNaW4gdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjIFxuIiwgcG9ydCxtaW5fdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNYXggdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LG1heF90aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEF2ZyB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIHBvcnQsYXZnX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHhmZXIgXHRcdFx0XHRcdD0gJTEwLjJmICVzXG4iLCBtaW5feGZlcix1bml0KTsKCS8qIENQVSUgY2FuIGJlID4gMTAwLjAgZm9yIG11bHRpcGxlIENQVXMgKi8KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmKHdhbGx0aW1lID09IDAuMCkKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDUFUgdXRpbGl6YXRpb246IFdhbGwgdGltZSAlOC4zZiAgICBDUFUgdGltZSAlOC4zZiAgICBDUFUgdXRpbGl6YXRpb24gJTYuMmYgJSVcblxuIiwKCQkJCXdhbGx0aW1lLCBjcHV0aW1lLCAwLjApOwoJCX0KCQllbHNlCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMTAwLjAgKiBjcHV0aW1lIC8gd2FsbHRpbWUpOwoJCX0KCX0KCWlmKENmbGFnKQoJewoJCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKQoJCXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikgJnNobWFkZHJbeHl6XTsKCQkJaWYoY3B1dXRpbGZsYWcpCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjLCB3YWxsPSU2LjNmLCBjcHU9JTYuM2YsICUlPSU2LjJmXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0LCBjaGlsZF9zdGF0LT53YWxsdGltZSwgCgkJCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY3B1X3V0aWwoY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0KTsKCQkJfQoJCX0KCX0KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdG9wX21vbml0b3IoIlB3cml0ZSIpOwoJc3luYygpOwoJc2xlZXAoMik7CglpZihyZXN0ZikKCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJewogICAgICAgICAgICAgICAgc3RvcF9tYXN0ZXJfbGlzdGVuKG1hc3Rlcl9saXN0ZW5fc29ja2V0KTsKCQljbGVhbnVwX2NvbW0oKTsKCX0KI2VuZGlmCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqIFByZWFkIHJlYWRlciB0aHJvdWdocHV0IHRlc3RzICAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KbmV4dDc6CgojaWZuZGVmIEhBVkVfUFJFQUQKCQlnb3RvIG5leHQ4OwojZWxzZQoJaWYoaW5jbHVkZV90ZmxhZykKCQlpZighKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUFJFQURFUl9NQVNLKSkKCQkJZ290byBuZXh0ODsKCQoJdG91dHB1dGluZGV4Kys7CglzdHJjcHkoJnRvdXRwdXRbdG91dHB1dGluZGV4XVswXSx0aHJvdWdocHV0X3Rlc3RzWzEwXSk7CglpZigoIWRpc3RyaWJ1dGVkKSB8fCAoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkpCgkJc3RhcnRfbW9uaXRvcigiUHJlYWQiKTsKCXdhbGx0aW1lID0gMC4wOwoJY3B1dGltZSA9IDAuMDsKCWpzdGFydHRpbWU9MDsKCXN5bmMoKTsKCXNsZWVwKDIpOwoJKnN0b3BfZmxhZz0wOwoJdG90YWxfa2lsb3M9MDsKICAgICAgICAvKiBIb29rcyB0byBzdGFydCB0aGUgZGlzdHJpYnV0ZWQgSW96b25lIGNsaWVudC9zZXJ2ZXIgY29kZSAqLwogICAgICAgIGlmKGRpc3RyaWJ1dGVkKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHVzZV90aHJlYWQ9MDsgIC8qIFR1cm4gb2YgYW55IFBvc2l4IHRocmVhZHMgKi8KICAgICAgICAgICAgICAgIGlmKG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9saXN0ZW5fc29ja2V0ID0gc3RhcnRfbWFzdGVyX2xpc3RlbigpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVfY2xpZW50KCk7CiAgICAgICAgfQoJaWYoIXVzZV90aHJlYWQpCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CgkJY2hpZD14eDsKCQljaGlsZGlkc1t4eF0gPSBzdGFydF9jaGlsZF9wcm9jKFRIUkVBRF9QUkVBRF9URVNULG51bXJlY3M2NCxyZWNsZW4pOwoJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQlwcmludGYoIlxuRm9yayBmYWlsZWRcbiIpOwoJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCUtpbGwoKGxvbmcgbG9uZyljaGlsZGlkc1t4eV0sKGxvbmcgbG9uZylTSUdURVJNKTsKCQkJfQoJCQlleGl0KDM4KTsKCQl9CgkJaWYoY2hpbGRpZHNbeHhdPT0wKXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCQl0aHJlYWRfcHJlYWRfdGVzdCgodm9pZCAqKXh4KTsKI2Vsc2UKCQkJdGhyZWFkX3ByZWFkX3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJfQkKCSAgIH0KCX0KI2lmbmRlZiBOT19USFJFQURTCgllbHNlCgl7CgkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KCQljaGlkPXh4OwoJCWlmKCFiYXJyYXlbeHhdKQoJCXsKCQkJYmFycmF5W3h4XT0oY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoTUFYQlVGRkVSU0laRStjYWNoZV9zaXplKSwoaW50KTApOwoJCQlpZihiYXJyYXlbeHhdID09IDApIHsKICAgICAgICAJCSAgIHBlcnJvcigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkOiIpOwogICAgICAgIAkJICAgZXhpdCgyNik7CiAgICAgICAgCQl9CiAgICAgCQkJYmFycmF5W3h4XSA9KGNoYXIgKikoKChsb25nKWJhcnJheVt4eF0gKyBjYWNoZV9zaXplICkgJiAKCQkJfihjYWNoZV9zaXplLTEpKTsKCQl9CiNpZmRlZiBfNjRCSVRfQVJDSF8KCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9wcmVhZF90ZXN0LHh4KTsKI2Vsc2UKCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9wcmVhZF90ZXN0LCh2b2lkICopKGxvbmcpeHgpOwojZW5kaWYKCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJcHJpbnRmKCJcblRocmVhZCBjcmVhdGUgZmFpbGVkXG4iKTsKCQkJZm9yKHh5ID0gMDsgeHk8IHh4IDsgeHkrKyl7CgkJCQlraWxsKChwaWRfdClteWlkLChpbnQpU0lHVEVSTSk7CgkJCX0KCQkJZXhpdCgzOSk7CgkJfQoJICAgfQoJfQojZW5kaWYKCWlmKG15aWQgPT0gKGxvbmcgbG9uZylnZXRwaWQoKSl7CiAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKICAgICAgICAgICAgICAgIH0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspeyAvKiB3YWl0IGZvciBjaGlsZHJlbiB0byBzdGFydCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnPT1DSElMRF9TVEFURV9IT0xEKQoJCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJCX0KCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspewoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwoJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfQkVHSU47CS8qIHRlbGwgY2hpbGRyZW4gdG8gZ28gKi8KCQkJaWYoZGVsYXlfc3RhcnQhPTApCgkJCQlQb2xsKChsb25nIGxvbmcpZGVsYXlfc3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVsbF9jaGlsZHJlbl9iZWdpbihpKTsKCQl9CgkJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7Cgl9CgkKCWdldG91dD0wOwoJaWYobXlpZCA9PSAobG9uZyBsb25nKWdldHBpZCgpKXsJIC8qIFBhcmVudCBoZXJlICovCgkJZm9yKCBpID0gMDsgaSA8IG51bV9jaGlsZDsgaSsrKXsgLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RvcCAqLwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICB7CgkJCQlwcmludGYoIlxuXHRUZXN0IHJ1bm5pbmc6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9kaXN0X2pvaW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodXNlX3RocmVhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9qb2luKGNoaWxkaWRzW2ldLCh2b2lkICopJnBzdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoJCQlpZighanN0YXJ0dGltZSkKCQkJCWpzdGFydHRpbWUgPSB0aW1lX3NvX2ZhcigpOyAKCQl9CgkJanRpbWUgPSAodGltZV9zb19mYXIoKS1qc3RhcnR0aW1lKS10aW1lX3JlczsKCQlpZihqdGltZSA8IChkb3VibGUpLjAwMDAwMSkgCgkJewoJCQlqdGltZT10aW1lX3JlczsgCgkJfQoJfQoJdG90YWxfdGltZSA9ICh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMSktdGltZV9yZXM7IC8qIFBhcmVudHMgdGltZSAqLwoJaWYodG90YWxfdGltZSA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJdG90YWxfdGltZT10aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KI2lmZGVmIEpUSU1FCgl0b3RhbF90aW1lPXRvdGFsX3RpbWUtanRpbWU7LyogUmVtb3ZlIHRoZSBqb2luIHRpbWUgKi8KCWlmKCFzaWxlbnQpIHByaW50ZigiXG5Kb2luIHRpbWUgJTEwLjJmXG4iLGp0aW1lKTsKI2VuZGlmCgl0b3RhbF9raWxvcz0wOwoJcHRvdGFsPTA7CgltaW5fdGhyb3VnaHB1dD1tYXhfdGhyb3VnaHB1dD1taW5feGZlcj0wOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiIpOwoJZm9yKHh5ej0wO3h5ejxudW1fY2hpbGQ7eHl6KyspewoJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHl6XTsKCQl0b3RhbF9raWxvcys9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlwdG90YWwrPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZighbWluX3hmZXIpCgkJCW1pbl94ZmVyPWNoaWxkX3N0YXQtPmFjdHVhbDsKCQlpZihjaGlsZF9zdGF0LT5hY3R1YWwgPCBtaW5feGZlcikKCQkJbWluX3hmZXI9Y2hpbGRfc3RhdC0+YWN0dWFsOwoJCWlmKCFtaW5fdGhyb3VnaHB1dCkKCQkJbWluX3Rocm91Z2hwdXQ9Y2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgbWluX3Rocm91Z2hwdXQpCgkJCW1pbl90aHJvdWdocHV0PWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA+IG1heF90aHJvdWdocHV0KQoJCQltYXhfdGhyb3VnaHB1dD1jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWNwdXRpbWUgKz0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQkvKiBHZXQgdGhlIGJpZ2dlc3Qgd2FsbHRpbWUqLwoJCWlmIChjaGlsZF9zdGF0LT53YWxsdGltZSA8IGNoaWxkX3N0YXQtPmNwdXRpbWUpCgkJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gY2hpbGRfc3RhdC0+Y3B1dGltZTsKCQlpZiAoY2hpbGRfc3RhdC0+d2FsbHRpbWUgPiB3YWxsdGltZSkKCQkJd2FsbHRpbWUgPSBjaGlsZF9zdGF0LT53YWxsdGltZTsKCX0KCWF2Z190aHJvdWdocHV0PXRvdGFsX2tpbG9zL251bV9jaGlsZDsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7Cgl9CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyAod2FsbHRpbWUsIGNwdXRpbWUpOwkvKiBNdXN0IGJlIEJlZm9yZSBzdG9yZV9kdmFsdWUoKS4gKi8KCXN0b3JlX2R2YWx1ZSh0b3RhbF9raWxvcyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxkIHByZWFkIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgdG90YWxfa2lsb3MsdW5pdCk7CglpZighc2lsZW50ICYmICFkaXN0cmlidXRlZCkgcHJpbnRmKCJcdFBhcmVudCBzZWVzIHRocm91Z2hwdXQgZm9yICVsZCBwcmVhZCByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIChkb3VibGUpKHB0b3RhbCkvdG90YWxfdGltZSx1bml0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZHJlbiBzZWUgdGhyb3VnaHB1dCBmb3IgJWxsZCBwcmVhZCByZWFkZXJzIFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBudW1fY2hpbGQsIHRvdGFsX2tpbG9zLHVuaXQpOwoJaWYoIXNpbGVudCAmJiAhZGlzdHJpYnV0ZWQpIHByaW50ZigiXHRQYXJlbnQgc2VlcyB0aHJvdWdocHV0IGZvciAlbGxkIHByZWFkIHJlYWRlcnMgXHQ9ICUxMC4yZiAlcy9zZWNcbiIsIG51bV9jaGlsZCwgKGRvdWJsZSkocHRvdGFsKS90b3RhbF90aW1lLHVuaXQpOwojZW5kaWYKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNaW4gdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjIFxuIiwgcG9ydCxtaW5fdGhyb3VnaHB1dCx1bml0KTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXHRNYXggdGhyb3VnaHB1dCBwZXIgJXMgXHRcdFx0PSAlMTAuMmYgJXMvc2VjXG4iLCBwb3J0LG1heF90aHJvdWdocHV0LHVuaXQpOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcdEF2ZyB0aHJvdWdocHV0IHBlciAlcyBcdFx0XHQ9ICUxMC4yZiAlcy9zZWNcbiIsIHBvcnQsYXZnX3Rocm91Z2hwdXQsdW5pdCk7CglpZighc2lsZW50KSBwcmludGYoIlx0TWluIHhmZXIgXHRcdFx0XHRcdD0gJTEwLjJmICVzXG4iLCBtaW5feGZlcix1bml0KTsKCS8qIENQVSUgY2FuIGJlID4gMTAwLjAgZm9yIG11bHRpcGxlIENQVXMgKi8KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWlmKHdhbGx0aW1lID09IDAuMCkKCQl7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDUFUgdXRpbGl6YXRpb246IFdhbGwgdGltZSAlOC4zZiAgICBDUFUgdGltZSAlOC4zZiAgICBDUFUgdXRpbGl6YXRpb24gJTYuMmYgJSVcblxuIiwKCQkJCXdhbGx0aW1lLCBjcHV0aW1lLCAwLjApOwoJCX0KCQllbHNlCgkJewoJCQlpZighc2lsZW50KSBwcmludGYoIlx0Q1BVIHV0aWxpemF0aW9uOiBXYWxsIHRpbWUgJTguM2YgICAgQ1BVIHRpbWUgJTguM2YgICAgQ1BVIHV0aWxpemF0aW9uICU2LjJmICUlXG5cbiIsCgkJCQl3YWxsdGltZSwgY3B1dGltZSwgMTAwLjAgKiBjcHV0aW1lIC8gd2FsbHRpbWUpOwoJCX0KCX0KCWlmKENmbGFnKQoJewoJCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKQoJCXsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikgJnNobWFkZHJbeHl6XTsKCQkJaWYoY3B1dXRpbGZsYWcpCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjLCB3YWxsPSU2LjNmLCBjcHU9JTYuM2YsICUlPSU2LjJmXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0LCBjaGlsZF9zdGF0LT53YWxsdGltZSwgCgkJCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY3B1X3V0aWwoY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKCFzaWxlbnQpIHByaW50ZigiXHRDaGlsZFslbGRdIHhmZXIgY291bnQgPSAlMTAuMmYgJXMsIFRocm91Z2hwdXQgPSAlMTAuMmYgJXMvc2VjXG4iLAoJCQkJCShsb25nKXh5eiwgY2hpbGRfc3RhdC0+YWN0dWFsLCB1bml0LCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCB1bml0KTsKCQkJfQoJCX0KCX0KCWlmKCghZGlzdHJpYnV0ZWQpIHx8IChkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKSkKCQlzdG9wX21vbml0b3IoIlByZWFkIik7CglzeW5jKCk7CglzbGVlcCgyKTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgl7CiAgICAgICAgICAgICAgICBzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQpOwoJCWNsZWFudXBfY29tbSgpOwoJfQojZW5kaWYKbmV4dDg6CglzbGVlcCgyKTsgLyogWW91IG5lZWQgdGhpcy4gSWYgeW91IHN0b3AgYW5kIHJlc3RhcnQgdGhlIAoJCSAgICAgbWFzdGVyX2xpc3RlbiBpdCB3aWxsIGZhaWwgb24gTGludXggKi8KCWlmICghbm9fdW5saW5rKSB7CgkJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkJLyogQ2xlYW51cCBhbGwgb2YgdGhlIHRlbXBvcmFyeSBmaWxlcyAJCQkgICovCgkJLyogVGhpcyBpcyBub3QgcmVhbGx5IGEgdGVzdC4gSXQgYmVoYXZlcyBsaWtlIGEgdGVzdCBzbyAgICovCgkJLyogaXQgY2FuIHVubGluayBhbGwgb2YgdGhlIHNhbWUgZmlsZXMgdGhhdCB0aGUgb3RoZXIgICAgICovCgkJLyogdGVzdHMgbGVmdCBoYW5naW5nIGFyb3VuZC4JCQkJICAqLwoJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJCS8qIEhvb2tzIHRvIHN0YXJ0IHRoZSBkaXN0cmlidXRlZCBJb3pvbmUgY2xpZW50L3NlcnZlciBjb2RlICovCgkJaWYoZGlzdHJpYnV0ZWQpCgkJewoJCQl1c2VfdGhyZWFkPTA7ICAvKiBUdXJuIG9mIGFueSBQb3NpeCB0aHJlYWRzICovCgkJCWlmKG1hc3Rlcl9pb3pvbmUpCgkJCQltYXN0ZXJfbGlzdGVuX3NvY2tldCA9IHN0YXJ0X21hc3Rlcl9saXN0ZW4oKTsKCQkJZWxzZQoJCQkJYmVjb21lX2NsaWVudCgpOwoJCX0KCQlpZighdXNlX3RocmVhZCkKCQl7CgkJICAgZm9yKHh4ID0gMDsgeHg8IG51bV9jaGlsZCA7IHh4KyspewoJCQljaGlkPXh4OwoJCQljaGlsZGlkc1t4eF0gPSBzdGFydF9jaGlsZF9wcm9jKFRIUkVBRF9DTEVBTlVQX1RFU1QsbnVtcmVjczY0LHJlY2xlbik7CgkJCWlmKGNoaWxkaWRzW3h4XT09LTEpewoJCQkJcHJpbnRmKCJcbkZvcmsgZmFpbGVkXG4iKTsKCQkJCWZvcih4eSA9IDA7IHh5PCB4eCA7IHh5KyspewoJCQkJCUtpbGwoKGxvbmcgbG9uZyljaGlsZGlkc1t4eV0sKGxvbmcgbG9uZylTSUdURVJNKTsKCQkJCX0KCQkJCWV4aXQoMjgpOwoJCQl9CgkJCWlmKGNoaWxkaWRzW3h4XSA9PSAwKXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCQkJdGhyZWFkX2NsZWFudXBfdGVzdCgodm9pZCAqKXh4KTsKI2Vsc2UKCQkJCXRocmVhZF9jbGVhbnVwX3Rlc3QoKHZvaWQgKikoKGxvbmcpeHgpKTsKI2VuZGlmCgkJCX0JCgkJICAgfQoJCX0KI2lmbmRlZiBOT19USFJFQURTCgkJZWxzZQoJCXsKCQkgICBmb3IoeHggPSAwOyB4eDwgbnVtX2NoaWxkIDsgeHgrKyl7CS8qIENyZWF0ZSB0aGUgY2hpbGRyZW4gKi8KI2lmZGVmIF82NEJJVF9BUkNIXwoJCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9jbGVhbnVwX3Rlc3QseHgpOwojZWxzZQoJCQljaGlsZGlkc1t4eF0gPSBteXRocmVhZF9jcmVhdGUoIHRocmVhZF9jbGVhbnVwX3Rlc3QsKHZvaWQgKikobG9uZyl4eCk7CiNlbmRpZgoJCQlpZihjaGlsZGlkc1t4eF09PS0xKXsKCQkJCXByaW50ZigiXG5UaHJlYWQgY3JlYXRlIGZhaWxlZFxuIik7CgkJCQlmb3IoeHkgPSAwOyB4eTwgeHggOyB4eSsrKXsKCQkJCQlLaWxsKChsb25nIGxvbmcpbXlpZCwobG9uZyBsb25nKVNJR1RFUk0pOwoJCQkJfQoJCQkJZXhpdCgyOSk7CgkJCX0KCQkgICB9CgkJfQojZW5kaWYKCQlpZigobG9uZyBsb25nKW15aWQgPT0gZ2V0cGlkKCkpCgkJewoJCQlpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJCQl7CgkJCQlzdGFydF9tYXN0ZXJfbGlzdGVuX2xvb3AoKGludCkgbnVtX2NoaWxkKTsKCQkJfQoJCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspewoJCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJCQkJLyogd2FpdCBmb3IgY2hpbGRyZW4gdG8gc3RhcnQgKi8KCQkJCXdoaWxlKGNoaWxkX3N0YXQtPmZsYWc9PUNISUxEX1NUQVRFX0hPTEQpIAoJCQkJCVBvbGwoKGxvbmcgbG9uZykxKTsKCQkJfQoJCQlmb3IoaT0wO2k8bnVtX2NoaWxkOyBpKyspCgkJCXsKCQkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfQkVHSU47CS8qIHRlbGwgY2hpbGRyZW4gdG8gZ28gKi8KCQkJCWlmKGRlbGF5X3N0YXJ0IT0wKQoJCQkJCVBvbGwoKGxvbmcgbG9uZylkZWxheV9zdGFydCk7CgkJCQlpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJCQkJCXRlbGxfY2hpbGRyZW5fYmVnaW4oaSk7CgkJCX0KCQl9CgkKCQlnZXRvdXQ9MDsKCQlpZigobG9uZyBsb25nKW15aWQgPT0gZ2V0cGlkKCkpewkvKiBQYXJlbnQgb25seSBoZXJlICovCgkJCWZvciggaSA9IDA7IGkgPCBudW1fY2hpbGQ7IGkrKyl7CgkJCQljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsKCQkJCWlmKGRpc3RyaWJ1dGVkICYmIG1hc3Rlcl9pb3pvbmUpCgkJCQl7CgkJCQkJcHJpbnRmKCJcblx0VGVzdCBjbGVhbnVwOiIpOwoJCQkJCXdhaXRfZGlzdF9qb2luKCk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkgICBpZih1c2VfdGhyZWFkKQoJCQkJICAgewoJCQkJCXRocmVhZF9qb2luKGNoaWxkaWRzW2ldLCh2b2lkICopJnBzdGF0dXMpOwoJCQkJICAgfQoJCQkJICAgZWxzZQoJCQkJICAgewoJCQkgICAJCXdhaXQoMCk7CgkJCQkgICB9CgkJCQl9CgkJCX0KCQl9CgoJCWZvcih4eXo9MDt4eXo8bnVtX2NoaWxkO3h5eisrKXsJLyogUmVzZXQgc3RhdGUgdG8gMCAoSE9MRCkgKi8KCQkJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHl6XTsKCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJfQoJCXN5bmMoKTsKCQlzbGVlcCgyKTsKCQlpZihkaXN0cmlidXRlZCAmJiBtYXN0ZXJfaW96b25lKQoJCXsKCQkJc3RvcF9tYXN0ZXJfbGlzdGVuKG1hc3Rlcl9saXN0ZW5fc29ja2V0KTsKI2lmZGVmIFdpbmRvd3MKCQkJLyogd2luZG93cyBuZWVkcyB0aW1lIGJlZm9yZSBzaHV0dGluZyBkb3duIHNvY2tldHMgKi8KCQkJc2xlZXAoMSk7CiNlbmRpZgoJCQljbGVhbnVwX2NvbW0oKTsKCQl9Cgl9CgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBFbmQgb2YgY2xlYW51cAkJCQkJKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCXN5bmMoKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCXJldHVybjsKfQoKCQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaW1lIG1lYXN1cmVtZW50IHJvdXRpbmVzLgkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnN0YXRpYyBkb3VibGUKdGltZV9zb19mYXIodm9pZCkKI2Vsc2UKc3RhdGljIGRvdWJsZQp0aW1lX3NvX2ZhcigpCiNlbmRpZgp7CiNpZmRlZiBXaW5kb3dzCiAgIExBUkdFX0lOVEVHRVIgZnJlcSxjb3VudGVyOwogICBkb3VibGUgd2ludGltZSxiaWdjb3VudGVyOwogICBzdHJ1Y3QgdGltZXZhbCB0cDsKICAgLyogRm9yIFdpbmRvd3MgdGhlIHRpbWVfb2ZfZGF5KCkgaXMgdXNlbGVzcy4gSXQgaW5jcmVtZW50cyBpbiA1NSBtaWxsaSAKICAgICogc2Vjb25kIGluY3JlbWVudHMuIEJ5IHVzaW5nIHRoZSBXaW4zMmFwaSBvbmUgY2FuIGdldCBhY2Nlc3MgdG8gdGhlIAogICAgKiBoaWdoIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IGludGVyZmFjZXMuIFdpdGggdGhpcyBvbmUgY2FuIGdldCBiYWNrIAogICAgKiBpbnRvIHRoZSA4IHRvIDkgbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4KICAgICovCiAgIGlmKHBpdF9ob3N0bmFtZVswXSl7CiAgICAgaWYgKHBpdF9nZXR0aW1lb2ZkYXkoJnRwLCAoc3RydWN0IHRpbWV6b25lICopIE5VTEwsIHBpdF9ob3N0bmFtZSwgCiAJCXBpdF9zZXJ2aWNlKSA9PSAtMSkKICAgICAgICAgcGVycm9yKCJwaXRfZ2V0dGltZW9mZGF5Iik7CiAgCSByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKSArICgoKGRvdWJsZSkgdHAudHZfdXNlYykgKiAwLjAwMDAwMSApOwogICB9CiAgIGVsc2UKICAgewogICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXEpOwogICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjb3VudGVyKTsKICAgICAgICBiaWdjb3VudGVyPShkb3VibGUpY291bnRlci5IaWdoUGFydCAqKGRvdWJsZSkweGZmZmZmZmZmICsKICAgICAgICAgICAgICAgIChkb3VibGUpY291bnRlci5Mb3dQYXJ0OwogICAgICAgIHdpbnRpbWUgPSAoZG91YmxlKShiaWdjb3VudGVyLyhkb3VibGUpZnJlcS5Mb3dQYXJ0KTsKICAgICAgICByZXR1cm4oKGRvdWJsZSl3aW50aW1lKTsKICAgfQojZWxzZQojaWYgZGVmaW5lZCAoT1NGVjQpIHx8IGRlZmluZWQoT1NGVjMpIHx8IGRlZmluZWQoT1NGVjUpCiAgc3RydWN0IHRpbWVzcGVjIGdwOwoKICBpZiAoZ2V0Y2xvY2soVElNRU9GREFZLCAoc3RydWN0IHRpbWVzcGVjICopICZncCkgPT0gLTEpCiAgICBwZXJyb3IoImdldGNsb2NrIik7CiAgcmV0dXJuICgoIChkb3VibGUpIChncC50dl9zZWMpKSArCiAgICAoICgoZmxvYXQpKGdwLnR2X25zZWMpKSAqIDAuMDAwMDAwMDAxICkpOwojZWxzZQogIHN0cnVjdCB0aW1ldmFsIHRwOwoKICBpZihwaXRfaG9zdG5hbWVbMF0pewogICAgIGlmIChwaXRfZ2V0dGltZW9mZGF5KCZ0cCwgKHN0cnVjdCB0aW1lem9uZSAqKSBOVUxMLCBwaXRfaG9zdG5hbWUsIHBpdF9zZXJ2aWNlKSA9PSAtMSkKICAgICAgICAgcGVycm9yKCJwaXRfZ2V0dGltZW9mZGF5Iik7CiAgCSByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKSArICgoKGRvdWJsZSkgdHAudHZfdXNlYykgKiAwLjAwMDAwMSApOwogIH0KICBlbHNlCiAgewogICAgIGlmIChnZXR0aW1lb2ZkYXkoJnRwLCAoc3RydWN0IHRpbWV6b25lICopIE5VTEwpID09IC0xKQogICAgICAgICBwZXJyb3IoImdldHRpbWVvZmRheSIpOwogIAkgcmV0dXJuICgoZG91YmxlKSAodHAudHZfc2VjKSkgKyAoKChkb3VibGUpIHRwLnR2X3VzZWMpICogMC4wMDAwMDEgKTsKICB9CiNlbmRpZgojZW5kaWYKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogRkVUQ0hJVCAoKQkJCQkJCQkJKi8KLyoJCQkJCQkJCQkqLwovKiBSb3V0aW5lIHRvIG1ha2UgdGhlIG9uIGNoaXAgZGF0YSBjYWNoZSBob3QgZm9yIHRoaXMgYnVmZmVyLiBUaGUJKi8KLyogb24gY2hpcCBjYWNoZSBtYXkgaGF2ZSBiZWVuIGJsb3duIGJ5IG90aGVyIGNvZGUgaW4gdGhlIGFwcGxpY2F0aW9uCSovCi8qIG9yIGluIHRoZSBPUy4gIFJlbWVtYmVyLCBvbiBzb21lIG1hY2hpbmVzLCB0aGUgZGF0YSBjYWNoZSBpcyBkaXJlY3QgICovCi8qIG1hcHBlZCBhbmQgdmlydHVhbCBpbmRleGVkLgkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgZmV0Y2hpdChjaGFyICpidWZmZXIsbG9uZyBsb25nIGxlbmd0aCkKI2Vsc2UKdm9pZCBmZXRjaGl0KGJ1ZmZlcixsZW5ndGgpCmNoYXIgKmJ1ZmZlcjsKbG9uZyBsb25nIGxlbmd0aDsKI2VuZGlmCnsKCWNoYXIgKndoZXJlOwoJdm9sYXRpbGUgbG9uZyBsb25nIHhbNF07Cglsb25nIGxvbmcgaTsKCXdoZXJlPShjaGFyICopYnVmZmVyOwoJZm9yKGk9MDtpPChsZW5ndGgvY2FjaGVfbGluZV9zaXplKTtpKyspCgl7CgkJeFsoaSAmIDMpXT0qKHdoZXJlKTsKCQl3aGVyZSs9Y2FjaGVfbGluZV9zaXplOwoJCQoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBWZXJpZnkgdGhhdCB0aGUgYnVmZmVyIGNvbnRhaW5zIGV4cGVjdGVkIHBhdHRlcm4JCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBzdmVyaWZ5ID09IDAgbWVhbnMgZnVsbCBjaGVjayBvZiBwYXR0ZXJuIGZvciBldmVyeSBieXRlLiAgICAgICAgICAgICAqLwovKiBzZXZlcmlmeSA9PSAxIG1lYW5zIHBhcnRpYWwgY2hlY2sgb2YgcGF0dGVybiBmb3IgZWFjaCBwYWdlLiAgICAgICAgICAqLwovKiBzdmVyaWZ5ID09IDIgbWVhbnMgbm8gY2hlY2ssIGJ1dCBwYXJ0aWFsIHRvdWNoIGZvciBlYWNoIHBhZ2UuICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwpsb25nIGxvbmcgCnZlcmlmeV9idWZmZXIodm9sYXRpbGUgY2hhciAqYnVmZmVyLGxvbmcgbG9uZyBsZW5ndGgsIG9mZjY0X3QgcmVjbnVtLCBsb25nIGxvbmcgcmVjc2l6ZSx1bnNpZ25lZCBsb25nIGxvbmcgcGF0dCwKCWNoYXIgc3ZlcmlmeSkKI2Vsc2UKbG9uZyBsb25nIAp2ZXJpZnlfYnVmZmVyKGJ1ZmZlcixsZW5ndGgsIHJlY251bSwgcmVjc2l6ZSxwYXR0LHN2ZXJpZnkpCmNoYXIgKmJ1ZmZlcjsKbG9uZyBsb25nIGxlbmd0aDsgCm9mZjY0X3QgcmVjbnVtOyAKbG9uZyBsb25nIHJlY3NpemU7CnVuc2lnbmVkIGxvbmcgbG9uZyBwYXR0OwpjaGFyIHN2ZXJpZnk7CiNlbmRpZgp7Cgl2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmcgKndoZXJlOwoJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nIGR1bW15OwoJbG9uZyAqZGVfaWJ1ZiwgKmRlX29idWY7Cglsb25nIGxvbmcgaixrOwoJb2ZmNjRfdCBmaWxlX3Bvc2l0aW9uPTA7CglvZmY2NF90IGk7CgljaGFyICp3aGVyZTI7CgljaGFyICpwYXR0ZXJuX3B0cjsKCWxvbmcgbG9uZyBtcGF0dGVybix4eDI7Cgl1bnNpZ25lZCBpbnQgc2VlZDsKCXVuc2lnbmVkIGxvbmcgeDsKCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSx2YWx1ZTE7Cgl1bnNpZ25lZCBsb25nIGxvbmcgYT0gMHgwMTAyMDMwNDsKCXVuc2lnbmVkIGxvbmcgbG9uZyBiID0gMHgwNTA2MDcwODsKCXVuc2lnbmVkIGxvbmcgbG9uZyBjPSAweDAxMDEwMTAxOwoJdW5zaWduZWQgbG9uZyBsb25nIGQgPSAweDAxMDEwMTAxOwoJdW5zaWduZWQgbG9uZyBsb25nIHBhdHRlcm5fYnVmOwoJaW50IGxpdGUgPSAxOwkvKiBPbmx5IHZhbGlkYXRlIDEgbG9uZyB3aGVuIHJ1bm5pbmcgCgkJCSAgIGRlLWRldXAgdmFsaWRhdGlvbiAqLwoKCXZhbHVlID0gKGE8PDMyKSB8IGI7Cgl2YWx1ZTEgPSAoYzw8MzIpIHwgZDsKCgkvKiBwcmludGYoIlZlcmlmeSBTdmVyaWZ5ICVkIHZlcmlmeSAlZCBkaWFnX3YgJWRcbiIsc3ZlcmlmeSx2ZXJpZnksZGlhZ192KTsgKi8KCXg9MDsKCXh4Mj1jaGlkOwoJaWYoc2hhcmVfZmlsZSkKCQl4eDI9KGxvbmcgbG9uZykwOwoJbXBhdHRlcm49cGF0dDsKCXBhdHRlcm5fYnVmPXBhdHQ7Cgl3aGVyZT0odW5zaWduZWQgbG9uZyBsb25nICopYnVmZmVyOwoJaWYoc3ZlcmlmeSA9PSAyKQoJewoJICBmb3IoaT0wO2k8KGxlbmd0aCk7aSs9cGFnZV9zaXplKQoJICB7CgkgICAgICBkdW1teSA9ICp3aGVyZTsKCSAgICAgIHdoZXJlKz0ocGFnZV9zaXplL3NpemVvZihsb25nIGxvbmcpKTsKCSAgfQoJICByZXR1cm4oMCk7Cgl9CglpZihkZWR1cCkKCXsKCQlnZW5fbmV3X2J1ZigoY2hhciAqKWRlZHVwX2lidWYsKGNoYXIgKilkZWR1cF90ZW1wLCAobG9uZylyZWNudW0sIChpbnQpbGVuZ3RoLChpbnQpZGVkdXAsIChpbnQpIGRlZHVwX2ludGVyaW9yLCBkZWR1cF9jb21wcmVzcywgMCk7CgkJZGVfaWJ1ZiA9IChsb25nICopYnVmZmVyOwoJCWRlX29idWYgPSAobG9uZyAqKWRlZHVwX3RlbXA7CgkJaWYobGl0ZSkJLyogc2hvcnQgdG91Y2ggdG8gcmVkdWNlIGludHJ1c2lvbiAqLwoJCQlsZW5ndGggPSAobG9uZykgc2l6ZW9mKGxvbmcpOwoJCWZvcihpPTA7aTxsZW5ndGgvc2l6ZW9mKGxvbmcpO2krKykKCQl7CgkJCWlmKGRlX2lidWZbaV0hPSBkZV9vYnVmW2ldKQoJCQl7CgkJCQlpZighc2lsZW50KQojaWZkZWYgTk9fUFJJTlRfTExECgkJCQkgICBwcmludGYoIlxuRGVkdXAgbWlzLWNvbXBhcmUgYXQgJWxkXG4iLAoJCQkJCShsb25nIGxvbmcpKChyZWNudW0qcmVjc2l6ZSkrKGkqc2l6ZW9mKGxvbmcpKSkgKTsKI2Vsc2UKCQkJCSAgIHByaW50ZigiXG5EZWR1cCBtaXMtY29tcGFyZSBhdCAlbGxkXG4iLAoJCQkJCShsb25nIGxvbmcpKChyZWNudW0qcmVjc2l6ZSkrKGkqc2l6ZW9mKGxvbmcpKSkgKTsKCQkJCSAgIHByaW50ZigiRm91bmQgJS5seCBFeHBlY3RpbmcgJS5seCBcbiIsZGVfaWJ1ZltpXSwgZGVfb2J1ZltpXSk7CiNlbmRpZgoJCQkJcmV0dXJuKDEpOwoJCQl9CgkJfQoJCXJldHVybigwKTsKCX0KCWlmKGRpYWdfdikKCXsKCQlpZihub191bmxpbmspCgkJCWJhc2VfdGltZT0wOwoJCXNlZWQ9ICh1bnNpZ25lZCBpbnQpKGJhc2VfdGltZSt4eDIrcmVjbnVtKTsKCSAgICAgICAgc3JhbmQoc2VlZCk7CgkgICAgICAgIG1wYXR0ZXJuPShsb25nIGxvbmcpcmFuZCgpOwoJICAgICAgICBtcGF0dGVybj0obXBhdHRlcm48PDQ4KSB8IChtcGF0dGVybjw8MzIpIHwgKG1wYXR0ZXJuPDwxNikgfCBtcGF0dGVybjsKCQltcGF0dGVybj1tcGF0dGVybit2YWx1ZTsKCX0KCgkvKiBwcmludGYoInZlcmlmeSBwYXR0ICVsbHggQ0hpZCAlZFxuIixtcGF0dGVybixjaGlkKTsqLwoKCXdoZXJlPSh1bnNpZ25lZCBsb25nIGxvbmcgKilidWZmZXI7CgoJaWYoIXZlcmlmeSkKCQlwcmludGYoIlxuT09QUyBZb3UgaGF2ZSBlbnRlcmVkIHZlcmlmeV9idWZmZXIgdW5leHBlY3RlZGx5ICEhISBcbiIpOwoKCWlmKHN2ZXJpZnkgPT0gMSkKCXsKCSAgZm9yKGk9MDtpPChsZW5ndGgpO2krPXBhZ2Vfc2l6ZSkKCSAgewoJICAgICAgaWYoKHVuc2lnbmVkIGxvbmcgbG9uZykoKndoZXJlKSAhPSAodW5zaWduZWQgbG9uZyBsb25nKSgocGF0dGVybl9idWY8PDMyKSB8IHBhdHRlcm5fYnVmKSkKCSAgICAgIHsKCQkgICBmaWxlX3Bvc2l0aW9uID0gKG9mZjY0X3QpKCAocmVjbnVtICogcmVjc2l6ZSkrIGkpOwoJcHJpbnRmKCJcblxuIik7CiNpZmRlZiBOT19QUklOVF9MTEQKCXByaW50ZigiRXJyb3IgaW4gZmlsZTogRm91bmQgPyVseD8gRXhwZWN0aW5nID8lbHg/IGFkZHIgJWx4XG4iLCp3aGVyZSwgKGxvbmcgbG9uZykoKHBhdHRlcm5fYnVmPDwzMil8cGF0dGVybl9idWYpLHdoZXJlKTsKCXByaW50ZigiRXJyb3IgaW4gZmlsZTogUG9zaXRpb24gJWxkIFxuIixmaWxlX3Bvc2l0aW9uKTsKCXByaW50ZigiUmVjb3JkICMgJWxkIFJlY29yZCBzaXplICVsZCBrYiBcbiIscmVjbnVtLHJlY3NpemUvMTAyNCk7CglwcmludGYoIndoZXJlICU4LjhsbHggbG9vcCAlbGRcbiIsd2hlcmUsaSk7CiNlbHNlCglwcmludGYoIkVycm9yIGluIGZpbGU6IEZvdW5kID8lbGx4PyBFeHBlY3RpbmcgPyVsbHg/IGFkZHIgJWx4XG4iLCp3aGVyZSwgKGxvbmcgbG9uZykoKHBhdHRlcm5fYnVmPDwzMil8cGF0dGVybl9idWYpLCgobG9uZyl3aGVyZSkpOwoJcHJpbnRmKCJFcnJvciBpbiBmaWxlOiBQb3NpdGlvbiAlbGxkIFxuIixmaWxlX3Bvc2l0aW9uKTsKCXByaW50ZigiUmVjb3JkICMgJWxsZCBSZWNvcmQgc2l6ZSAlbGxkIGtiIFxuIixyZWNudW0scmVjc2l6ZS8xMDI0KTsKCXByaW50Zigid2hlcmUgJTguOGx4IGxvb3AgJWxsZFxuIiwobG9uZyl3aGVyZSwobG9uZyBsb25nKWkpOwojZW5kaWYKCQkgICByZXR1cm4oMSk7CgkgICAgICB9CgkgICAgICB3aGVyZSs9KHBhZ2Vfc2l6ZS9zaXplb2YobG9uZyBsb25nKSk7CgkgIH0KCX0KCWlmKHN2ZXJpZnkgPT0gMCkKCXsKCSAgZm9yKGk9MDtpPChsZW5ndGgvY2FjaGVfbGluZV9zaXplKTtpKyspCgkgIHsKCSAgIGZvcihqPTA7ajwoY2FjaGVfbGluZV9zaXplL3NpemVvZihsb25nIGxvbmcpKTtqKyspCgkgICB7CiAgICAgICAgICAgICAgaWYoZGlhZ192KQoJICAgICAgewoJCSBwYXR0ZXJuX2J1Zj1tcGF0dGVybjsKCSAgICAgIH0KCSAgICAgIGVsc2UKICAgICAgICAgICAgICB7CgkJcGF0dGVybl9idWY9IG1wYXR0ZXJuPDwzMiB8IG1wYXR0ZXJuOwoJICAgICAgfQoKCSAgICAgIHBhdHRlcm5fcHRyID0oY2hhciAqKSZwYXR0ZXJuX2J1ZjsKCgkgICAgICBpZigqd2hlcmUgIT0gKHVuc2lnbmVkIGxvbmcgbG9uZylwYXR0ZXJuX2J1ZikKCSAgICAgIHsKCQkgICBmaWxlX3Bvc2l0aW9uID0gKG9mZjY0X3QpKCAocmVjbnVtICogcmVjc2l6ZSkpKwoJCQkoKGkqY2FjaGVfbGluZV9zaXplKSsoaipzaXplb2YobG9uZyBsb25nKSkpOwoJCSAgIHdoZXJlMj0oY2hhciAqKXdoZXJlOwoJCSAgIGZvcihrPTA7azxzaXplb2YobG9uZyBsb25nKTtrKyspewoJCSAgIAlpZigqd2hlcmUyICE9ICpwYXR0ZXJuX3B0cikKCQkJCWJyZWFrOwoJCSAgIAl3aGVyZTIrKzsKCQkgICAJcGF0dGVybl9wdHIrKzsKCQkgICB9CgkJICAgZmlsZV9wb3NpdGlvbis9azsKCXByaW50ZigiXG5cbiIpOwojaWZkZWYgTk9fUFJJTlRfTExECglwcmludGYoIkVycm9yIGluIGZpbGU6IFBvc2l0aW9uICVsZCAlbGQgJWxkIFxuIixpLGosayk7CglwcmludGYoIkVycm9yIGluIGZpbGU6IFBvc2l0aW9uICVsZCBcbiIsZmlsZV9wb3NpdGlvbik7CglwcmludGYoIlJlY29yZCAjICVsZCBSZWNvcmQgc2l6ZSAlbGQga2IgXG4iLHJlY251bSxyZWNzaXplLzEwMjQpOwojZWxzZQoJcHJpbnRmKCJFcnJvciBpbiBmaWxlOiBQb3NpdGlvbiAlbGxkICVsbGQgJWxsZCBcbiIsaSxqLGspOwoJcHJpbnRmKCJFcnJvciBpbiBmaWxlOiBQb3NpdGlvbiAlbGxkIFxuIixmaWxlX3Bvc2l0aW9uKTsKCXByaW50ZigiUmVjb3JkICMgJWxsZCBSZWNvcmQgc2l6ZSAlbGxkIGtiIFxuIixyZWNudW0scmVjc2l6ZS8xMDI0KTsKI2VuZGlmCglwcmludGYoIkZvdW5kIHBhdHRlcm46IENoYXIgPj4lYzw8IEV4cGVjdGluZyA+PiVjPDxcbiIsICp3aGVyZTIsKnBhdHRlcm5fcHRyKTsKCXByaW50ZigiRm91bmQgcGF0dGVybjogSGV4ID4+JXg8PCBFeHBlY3RpbmcgPj4leDw8XG4iLCAqd2hlcmUyLCpwYXR0ZXJuX3B0cik7CgkJICAgcmV0dXJuKDEpOwoJICAgICAgfQoJICAgICAgd2hlcmUrKzsKCSAgICAgIGlmKGRpYWdfdikKCSAgICAgICAgIG1wYXR0ZXJuPW1wYXR0ZXJuK3ZhbHVlMTsKCSAgIH0JCgkgIH0KCX0KCXJldHVybigwKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBGaWxsICB0aGUgYnVmZmVyIAkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCmZpbGxfYnVmZmVyKGNoYXIgKmJ1ZmZlcixsb25nIGxvbmcgbGVuZ3RoLGxvbmcgbG9uZyBwYXR0ZXJuLGNoYXIgc3ZlcmlmeSxsb25nIGxvbmcgcmVjbnVtKQojZWxzZQp2b2lkIApmaWxsX2J1ZmZlcihidWZmZXIsbGVuZ3RoLHBhdHRlcm4sc3ZlcmlmeSxyZWNudW0pCmNoYXIgKmJ1ZmZlcjsKbG9uZyBsb25nIGxlbmd0aDsKbG9uZyBsb25nIHBhdHRlcm47CmxvbmcgbG9uZyByZWNudW07CmNoYXIgc3ZlcmlmeTsKI2VuZGlmCnsKCXVuc2lnbmVkIGxvbmcgbG9uZyAqd2hlcmU7Cglsb25nIGxvbmcgaSxqLHh4MjsKCWxvbmcgbG9uZyBtcGF0dGVybjsKCXVuc2lnbmVkIGludCBzZWVkOwoJdW5zaWduZWQgbG9uZyB4OwoJdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlLHZhbHVlMTsKCXVuc2lnbmVkIGxvbmcgbG9uZyBhID0gMHgwMTAyMDMwNDsKCXVuc2lnbmVkIGxvbmcgbG9uZyBiID0gMHgwNTA2MDcwODsKCXVuc2lnbmVkIGxvbmcgbG9uZyBjID0gMHgwMTAxMDEwMTsKCXVuc2lnbmVkIGxvbmcgbG9uZyBkID0gMHgwMTAxMDEwMTsKCgl2YWx1ZSA9IChhIDw8IDMyKSB8IGI7Cgl2YWx1ZTEgPSAoYyA8PCAzMikgfCBkOwoKCXh4Mj1jaGlkOwoJaWYoc2hhcmVfZmlsZSkKCQl4eDI9KGxvbmcgbG9uZykwOwoJeD0wOwoJbXBhdHRlcm49cGF0dGVybjsKCS8qIHByaW50ZigiRmlsbDogU3ZlcmlmeSAlZCB2ZXJpZnkgJWQgZGlhZ192ICVkXG4iLHN2ZXJpZnksdmVyaWZ5LGRpYWdfdik7Ki8KCWlmKGRlZHVwKQoJewoJCWdlbl9uZXdfYnVmKChjaGFyICopZGVkdXBfaWJ1ZiwoY2hhciAqKWJ1ZmZlciwgKGxvbmcpcmVjbnVtLCAoaW50KWxlbmd0aCwoaW50KWRlZHVwLCAoaW50KSBkZWR1cF9pbnRlcmlvciwgZGVkdXBfY29tcHJlc3MsIDEpOwoJCXJldHVybjsKCX0KCWlmKGRpYWdfdikKCXsKCQkvKmlmKGNsaWVudF9pb3pvbmUpCgkJCWJhc2VfdGltZT0wOwoJCSovCgkJaWYobm9fdW5saW5rKQoJCQliYXNlX3RpbWU9MDsKCQlzZWVkPSAodW5zaWduZWQgaW50KShiYXNlX3RpbWUreHgyK3JlY251bSk7CgkgICAgICAgIHNyYW5kKHNlZWQpOwoJCW1wYXR0ZXJuPShsb25nIGxvbmcpcmFuZCgpOwoJCW1wYXR0ZXJuPShtcGF0dGVybjw8NDgpIHwgKG1wYXR0ZXJuPDwzMikgfCAobXBhdHRlcm48PDE2KSB8IG1wYXR0ZXJuOwoJCW1wYXR0ZXJuPW1wYXR0ZXJuK3ZhbHVlOwoJfQoJd2hlcmU9KHVuc2lnbmVkIGxvbmcgbG9uZyAqKWJ1ZmZlcjsKCWlmKHN2ZXJpZnkgPT0gMSkKCXsKCQlmb3IoaT0wO2k8KGxlbmd0aCk7aSs9cGFnZV9zaXplKQoJCXsKCQkJKndoZXJlID0gKGxvbmcgbG9uZykoKHBhdHRlcm48PDMyKSB8IHBhdHRlcm4pOwoJCQl3aGVyZSs9KHBhZ2Vfc2l6ZS9zaXplb2YobG9uZyBsb25nKSk7IAoJCQkvKiBwcmludGYoIkZpbGxpbmcgcGFnZSAlbGxkIFxuIixpL3BhZ2Vfc2l6ZSk7Ki8KCQl9CQoJfQoJZWxzZQoJewoJCWZvcihpPTA7aTwobGVuZ3RoL2NhY2hlX2xpbmVfc2l6ZSk7aSsrKQoJCXsKCQkJZm9yKGo9MDtqPChjYWNoZV9saW5lX3NpemUvc2l6ZW9mKGxvbmcgbG9uZykpO2orKykKCQkJewoJCQkJaWYoZGlhZ192KQoJCQkJewoJCQkJCSp3aGVyZSA9IChsb25nIGxvbmcpKG1wYXR0ZXJuKTsKCQkJCQltcGF0dGVybj1tcGF0dGVybit2YWx1ZTE7CgkJCQl9CgkJCQllbHNlCgkJCQkJKndoZXJlID0gKGxvbmcgbG9uZykoKHBhdHRlcm48PDMyKSB8IHBhdHRlcm4pOwoJCQkJd2hlcmUrKzsKCQkJfQkKCQl9Cgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFBVUkdFSVQoKSAJCQkJCQkJCSovCi8qIAkgCQkJCQkJCQkqLwovKiBSb3V0aW5lIHRvIG1ha2UgdGhlIG9uIGNoaXAgZGF0YSBjYWNoZSBjb2xkIGZvciB0aGlzIGJ1ZmZlci4JCSovCi8qIFJlbWVtYmVyLCBvbiBzb21lIG1hY2hpbmVzLCB0aGUgZGF0YSBjYWNoZSBpcyBkaXJlY3QgbWFwcGVkIGFuZAkqLwovKiB2aXJ0dWFsIGluZGV4ZWQuCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCnB1cmdlaXQoY2hhciAqYnVmZmVyLGxvbmcgbG9uZyByZWNsZW4pCiNlbHNlCnZvaWQgCnB1cmdlaXQoYnVmZmVyLHJlY2xlbikKY2hhciAqYnVmZmVyOwpsb25nIGxvbmcgcmVjbGVuOwojZW5kaWYKewoJY2hhciAqd2hlcmU7Cglsb25nIHJzaXplOwoJbG9uZyB0c2l6ZTsKCVZPTEFUSUxFIGxvbmcgbG9uZyB4WzIwMF07Cglsb25nIGksY2FjaGVfbGluZXNfcGVyX3JlYzsKCWxvbmcgY2FjaGVfbGluZXNfcGVyX2NhY2hlOwoJdHNpemUgPSAyMDA7CgljYWNoZV9saW5lc19wZXJfcmVjID0gKGxvbmcpKHJlY2xlbi9jYWNoZV9saW5lX3NpemUpOwoJY2FjaGVfbGluZXNfcGVyX2NhY2hlID0gKGxvbmcpKGNhY2hlX3NpemUvY2FjaGVfbGluZV9zaXplKTsKCXJzaXplID0gKGxvbmcpbF9taW4oKGxvbmcgbG9uZyljYWNoZV9saW5lc19wZXJfcmVjLChsb25nIGxvbmcpY2FjaGVfbGluZXNfcGVyX2NhY2hlKTsKI2lmZGVmIF82NEJJVF9BUkNIXwoJd2hlcmU9KGNoYXIgKilwYnVmZmVyICsgKCh1bnNpZ25lZCBsb25nIGxvbmcpYnVmZmVyICYgKGNhY2hlX3NpemUtMSkpOwojZWxzZQoJd2hlcmU9KGNoYXIgKilwYnVmZmVyICsgKChsb25nKWJ1ZmZlciAmICgobG9uZyljYWNoZV9zaXplLTEpKTsKI2VuZGlmCglmb3IoaT0wO2k8KHJzaXplKTtpKyspCgl7CgkJeFtpJXRzaXplXT0qKHdoZXJlKTsKCQl3aGVyZSs9Y2FjaGVfbGluZV9zaXplOwoKCX0KfQoKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnByZXBhZ2UoY2hhciAqYnVmZmVyLGxvbmcgbG9uZyByZWNsZW4pCiNlbHNlCnZvaWQKcHJlcGFnZShidWZmZXIsIHJlY2xlbikKY2hhciAqYnVmZmVyOwpsb25nIGxvbmcgcmVjbGVuOyAKI2VuZGlmCnsKCWNoYXIgKndoZXJlOwoJbG9uZyBsb25nIGk7Cgl3aGVyZT0oY2hhciAqKWJ1ZmZlcjsKCWZvcihpPTA7aTwocmVjbGVuL2NhY2hlX2xpbmVfc2l6ZSk7aSsrKQoJewoJCSood2hlcmUpPVBBVFRFUk47CgkJd2hlcmUrPWNhY2hlX2xpbmVfc2l6ZTsKCX0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogd3JpdGVfcGVyZl90ZXN0ICgpCQkJCSAgICAgICAgCQkqLwovKiBXcml0ZSBhbmQgcmUtd3JpdGUgdGVzdAkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCB3cml0ZV9wZXJmX3Rlc3Qob2ZmNjRfdCBraWxvNjQsbG9uZyBsb25nIHJlY2xlbiAsbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIHdyaXRlX3BlcmZfdGVzdChraWxvNjQscmVjbGVuICxkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTE7CmxvbmcgbG9uZyAqZGF0YTI7CiNlbmRpZgp7Cglkb3VibGUgc3RhcnR0aW1lMTsKCWRvdWJsZSB3cml0ZXRpbWVbMl07Cglkb3VibGUgd2FsbHRpbWVbMl0sIGNwdXRpbWVbMl07Cglkb3VibGUgcXRpbWVfc3RhcnQscXRpbWVfc3RvcDsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKI2lmZGVmIHVuaXgKCWRvdWJsZSBxdGltZV91X3N0YXJ0LHF0aW1lX3Vfc3RvcDsKCWRvdWJsZSBxdGltZV9zX3N0YXJ0LHF0aW1lX3Nfc3RvcDsKI2VuZGlmCglsb25nIGxvbmcgaSxqOwoJb2ZmNjRfdCBudW1yZWNzNjQsdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cglsb25nIGxvbmcgSW5kZXggPSAwOwoJbG9uZyBsb25nIGZpbGVfZmxhZ3MgPSAwOwoJbG9uZyBsb25nIHRyYWpfc2l6ZTsKCXVuc2lnbmVkIGxvbmcgbG9uZyB3cml0ZXJhdGVbMl07CglvZmY2NF90IGZpbGVieXRlczY0OwoJaW50IGx0ZXN0OwoJY2hhciAqbWFkZHI7CgljaGFyICp3bWFkZHIsKmZyZWVfYWRkcjsKCWNoYXIgKnBidWZmOwoJY2hhciAqbmJ1ZmY7CglpbnQgZmQsd3ZhbDsKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CiNlbHNlCglsb25nIGxvbmcgKmdjPTA7CiNlbmRpZgoKCWludCB0ZXN0X2ZvbzsKCiNpZmRlZiB1bml4CglxdGltZV91X3N0YXJ0PXF0aW1lX3Vfc3RvcD0wOwoJcXRpbWVfc19zdGFydD1xdGltZV9zX3N0b3A9MDsKI2VuZGlmCgluYnVmZj13bWFkZHI9ZnJlZV9hZGRyPTA7Cgl0cmFqX29mZnNldD0wOwoJdGVzdF9mb289MDsKCXF0aW1lX3N0YXJ0PXF0aW1lX3N0b3A9MDsKCW1hZGRyPTA7CglwYnVmZj1tYWluYnVmZmVyOwoJaWYod190cmFqX2ZsYWcpCgl7CgkJZmlsZWJ5dGVzNjQgPSB3X3RyYWpfZnNpemU7CgkJbnVtcmVjczY0PXdfdHJhal9vcHM7Cgl9CgllbHNlCgl7CgkJbnVtcmVjczY0ID0gKGtpbG82NCoxMDI0KS9yZWNsZW47CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoKCWlmKFFfZmxhZyAmJiAoIXdvbF9vcGVuZWQpKQoJewoJCXdvbF9vcGVuZWQrKzsKCQl3cWZkPWZvcGVuKCJ3b2wuZGF0IiwiYSIpOwoJCWlmKHdxZmQ9PTApCgkJewoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIHdvbC5kYXRcbiIpOwoJCQlleGl0KDQwKTsKCQl9CgkJZnByaW50Zih3cWZkLCJPZmZzZXQgaW4gS2J5dGVzICAgTGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMgIFRyYW5zZmVyIHNpemUgaW4gYnl0ZXNcbiIpOwoJCXJ3cWZkPWZvcGVuKCJyd29sLmRhdCIsImEiKTsKCQlpZihyd3FmZD09MCkKCQl7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gcndvbC5kYXRcbiIpOwoJCQlleGl0KDQxKTsKCQl9CgkJZnByaW50Zihyd3FmZCwiT2Zmc2V0IGluIEtieXRlcyAgIExhdGVuY3kgaW4gbWljcm9zZWNvbmRzICBUcmFuc2ZlciBzaXplIGluIGJ5dGVzXG4iKTsKCX0KCWZkID0gMDsKCWlmKG9mbGFnKQoJCWZpbGVfZmxhZ3MgPSBPX1JEV1J8T19TWU5DOwoJZWxzZQoJCWZpbGVfZmxhZ3MgPSBPX1JEV1I7CiNpZiBkZWZpbmVkKE9fRFNZTkMpCglpZihvZHN5bmMpCgkJZmlsZV9mbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCglpZihyZWFkX3N5bmMpCgkJZmlsZV9mbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmlsZV9mbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmaWxlX2ZsYWdzIHw9T19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgoKLyogU2FuaXR5IGNoZWNrICovCi8qIFNvbWUgZmlsZXN5c3RlbXMgZG8gbm90IGJlaGF2ZSBjb3JyZWN0bHkgYW5kIGZhaWwKICogd2hlbiB0aGlzIHNlcXVlbmNlIGlzIHBlcmZvcm1uZWQuIFRoaXMgaXMgYSB2ZXJ5CiAqIGJhZCB0aGluZy4gSXQgYnJlYWtzIG1hbnkgYXBwbGljYXRpb25zIGFuZCBsdXJrcwogKiBhcm91bmQgcXVpZXRseS4gVGhpcyBjb2RlIHNob3VsZCBuZXZlciBnZXQKICogdHJpZ2dlcmVkLCBidXQgaW4gdGhlIGNhc2Ugb2YgcnVubmluZyBpb3pvbmUgb24KICogYW4gTkZTIGNsaWVudCwgdGhlIGZpbGVzeXN0ZW0gdHlwZSBvbiB0aGUgc2VydmVyCiAqIHRoYXQgaXMgYmVpbmcgZXhwb3J0ZWQgY2FuIGNhdXNlIHRoaXMgZmFpbHVyZS4KICogSWYgdGhpcyBmYWlsdXJlIGhhcHBlbnMsIHRoZW4gdGhlIE5GUyBjbGllbnQgaXMKICogZ29pbmcgdG8gZ29pbmcgdG8gaGF2ZSBwcm9ibGVtcywgYnV0IHRoZSBhY3V0YWwKICogcHJvYmxlbSBpcyB0aGUgZmlsZXN5c3RlbSBvbiB0aGUgTkZTIHNlcnZlci4KICogSXQncyBub3QgTkZTLCBpdCdzIHRoZSBsb2NhbCBmaWxlc3lzdGVtIG9uIHRoZQogKiBORlMgc2VydmVyIHRoYXQgaXMgbm90IGNvcnJlY3RseSBwZXJtaXR0aW5nCiAqIHRoZSBzZXF1ZW5jZSB0byBmdW5jdGlvbi4KICovCiAgICAgICAgaWYoKGZkID0gSV9PUEVOKGZpbGVuYW1lLCAoaW50KU9fQ1JFQVR8T19XUk9OTFksMCkpPDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wIGZpbGU6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CiAgICAgICAgICAgICAgICBwZXJyb3IoIm9wZW4iKTsKICAgICAgICAgICAgICAgIGV4aXQoNDQpOwogICAgICAgIH0KCQlpZighbm90cnVuY2F0ZSkKCQl7CgkJCWlmKGNoZWNrX2ZpbGVuYW1lKGZpbGVuYW1lKSkKCQkJewoJCQkJd3ZhbD1mdHJ1bmNhdGUoZmQsMCk7CgkJCQlpZih3dmFsIDwgMCkKCQkJCXsKCQkJCQlwcmludGYoIlxuXG5TYW5pdHkgY2hlY2sgZmFpbGVkLiBEbyBub3QgZGVwbG95IHRoaXMgZmlsZXN5c3RlbSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgIVxuIik7CgkJCQkJZXhpdCg0NCk7CgkJCQl9CgkJCX0KCQkJY2xvc2UoZmQpOwoKCQkJaWYoY2hlY2tfZmlsZW5hbWUoZmlsZW5hbWUpKQoJCQkJdW5saW5rKGZpbGVuYW1lKTsKCQl9Ci8qIFNhbml0eSBjaGVjayAqLwoKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCglmb3IoIGo9MDsgajxsdGVzdDsgaisrKQoJewoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJCWlmKGo9PTApCgkJewojaWYgZGVmaW5lZChXaW5kb3dzKQoJICAgICAgICAJaWYodW5idWZmZXJlZCkKCQkgICAgICAgIHsKCQkgICAgICAgIAloYW5kPUNyZWF0ZUZpbGUoZmlsZW5hbWUsCgkJCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJCQkgICAgICAgICAgRklMRV9TSEFSRV9XUklURXxGSUxFX1NIQVJFX1JFQUQsCgkJCQkgIE5VTEwsT1BFTl9BTFdBWVMsRklMRV9GTEFHX05PX0JVRkZFUklOR3wKCQkJCSAgRklMRV9GTEFHX1dSSVRFX1RIUk9VR0h8RklMRV9GTEFHX1BPU0lYX1NFTUFOVElDUywKCQkJCSAgTlVMTCk7CiAgICAgICAgICAgIAkJfQoJCSAgICAgICAgZWxzZQoJCSAgICAgICAgewojZW5kaWYKCQkJCWlmKCFub3RydW5jYXRlKQoJCQkJewoJICAJCSAgIAkJaWYoKGZkID0gSV9DUkVBVChmaWxlbmFtZSwgMDY0MCkpPDApCgkgIAkJICAgCQl7CgkJCQkJCXByaW50ZigiXG5DYW4gbm90IGNyZWF0ZSB0ZW1wIGZpbGU6ICVzXG4iLCAKCQkJCQkJCWZpbGVuYW1lKTsKCQkJCQkJcGVycm9yKCJjcmVhdCIpOwoJCQkJCQlleGl0KDQyKTsKCSAgCQkgICAJCX0KCQkJCX0KI2lmIGRlZmluZWQoV2luZG93cykKCQkJfQojZW5kaWYKCQl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJaWYodW5idWZmZXJlZCkKCQkJQ2xvc2VIYW5kbGUoaGFuZCk7CgkJZWxzZQoJCXsKI2VuZGlmCgkJICBpZihmZCkgCgkJCWNsb3NlKGZkKTsKI2lmIGRlZmluZWQoV2luZG93cykKCQl9CiNlbmRpZgoKI2lmIGRlZmluZWQoV2luZG93cykKCSAgICAgICAJaWYodW5idWZmZXJlZCkKCSAgICAgICAgewoJICAgICAgICAJaGFuZD1DcmVhdGVGaWxlKGZpbGVuYW1lLAoJCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJCSAgICAgICAgICBGSUxFX1NIQVJFX1dSSVRFfEZJTEVfU0hBUkVfUkVBRCwKCQkJICBOVUxMLE9QRU5fRVhJU1RJTkcsRklMRV9GTEFHX05PX0JVRkZFUklOR3wKCQkJICBGSUxFX0ZMQUdfV1JJVEVfVEhST1VHSHxGSUxFX0ZMQUdfUE9TSVhfU0VNQU5USUNTLAoJCQkgIE5VTEwpOwogICAgICAgICAgICAJfQoJICAgICAgICBlbHNlCgkgICAgICAgIHsKI2VuZGlmCgkgIAkgICBpZigoZmQgPSBJX09QRU4oZmlsZW5hbWUsIChpbnQpZmlsZV9mbGFncywwKSk8MCkKCSAgCSAgIHsKCQkJcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wIGZpbGU6ICVzXG4iLCAKCQkJCWZpbGVuYW1lKTsKCQkJcGVycm9yKCJvcGVuIik7CgkJCWV4aXQoNDQpOwoJICAJICAgfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJICAJfQojZW5kaWYKI2lmZGVmIFZYRlMKCQlpZihkaXJlY3RfZmxhZykKCQl7CgkJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJCWlmKHRlc3RfZm9vID09IDApCgkJCXsKCQkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJCWV4aXQoMyk7CgkJCX0KCQl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KI2VuZGlmCgoJCWlmKGZpbGVfbG9jaykKCQkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMSwgKGludCkwKSE9MCkKCQkJCXByaW50ZigiRmlsZSBsb2NrIGZvciB3cml0ZSBmYWlsZWQuICVkXG4iLGVycm5vKTsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsZmlsZWJ5dGVzNjQsMSxQUk9UX1JFQUR8UFJPVF9XUklURSk7CgkJfQoJCWlmKG1tYXBfbWl4KQoJCXsKCQkJd3ZhbD13cml0ZShmZCwgcGJ1ZmYsIChzaXplX3QpIHBhZ2Vfc2l6ZSk7CgkJCWlmKHd2YWwgIT0gcGFnZV9zaXplKQoJCQl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJICAgIAlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayAlbGQsIGZkPSAlZFxuIiwgKGxvbmcgbG9uZykwLCBmZCk7CiNlbHNlCgkJCSAgICAJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCAobG9uZyBsb25nKTAsIGZkKTsKI2VuZGlmCgkJCQlpZih3dmFsPT0tMSkKCQkJCQlwZXJyb3IoIndyaXRlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJCUlfTFNFRUsoZmQsMCxTRUVLX1NFVCk7CgkJfTsKCQl3dmFsPWZzeW5jKGZkKTsKCQlpZih3dmFsPT0tMSl7CgkJCXBlcnJvcigiZnN5bmMiKTsKCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQl9CiNpZmRlZiBBU1lOQ19JTwoJCWlmKGFzeW5jX2ZsYWcpCgkJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCgkJcGJ1ZmY9bWFpbmJ1ZmZlcjsKCQlpZihmZXRjaG9uKQoJCQlmZXRjaGl0KHBidWZmLHJlY2xlbik7CgkJaWYodmVyaWZ5IHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQlmaWxsX2J1ZmZlcihwYnVmZixyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnksKGxvbmcgbG9uZykwKTsKCQlzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKI2lmZGVmIHVuaXgKCQlpZihRX2ZsYWcpCgkJewoJCQlxdGltZV91X3N0YXJ0PXV0aW1lX3NvX2ZhcigpOwoJCQlxdGltZV9zX3N0YXJ0PXN0aW1lX3NvX2ZhcigpOwoJCX0KI2VuZGlmCgkJaWYod190cmFqX2ZsYWcpCgkJewoJCQlyZXdpbmQod190cmFqX2ZkKTsKCQl9CgkJY29tcHV0ZV92YWw9KGRvdWJsZSkwOwoJCXdfdHJhal9vcHNfY29tcGxldGVkPTA7CgkJd190cmFqX2J5dGVzX2NvbXBsZXRlZD0wOwoJCWZvcihpPTA7IGk8bnVtcmVjczY0OyBpKyspewoJCQlpZih3X3RyYWpfZmxhZykKCQkJewoJCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWood190cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmY29tcHV0ZV90aW1lLChsb25nKTEpOwoJCQkJcmVjbGVuPXRyYWpfc2l6ZTsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICBTZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKXRyYWpfb2Zmc2V0LDAsRklMRV9CRUdJTik7CgkJCWVsc2UKI2VuZGlmCgkJCQlJX0xTRUVLKGZkLHRyYWpfb2Zmc2V0LFNFRUtfU0VUKTsKCQkJfQoJCQlpZihRX2ZsYWcpCgkJCXsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICB0cmFqX29mZnNldD1TZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKTAsMCxGSUxFX0NVUlJFTlQpOwoJCQllbHNlCiNlbmRpZgoJCQkJdHJhal9vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJfQoJCQlpZihybG9ja2luZykKCQkJewoJCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJCX0KCQkJaWYoKHZlcmlmeSAmJiBkaWFnX3YpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQkJZmlsbF9idWZmZXIocGJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LGkpOwoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwoJCQlpZihtdWx0aV9idWZmZXIpCgkJCXsKCQkJCUluZGV4ICs9cmVjbGVuOwoJCQkJaWYoSW5kZXggPiAoTUFYQlVGRkVSU0laRS1yZWNsZW4pKQoJCQkJCUluZGV4PTA7CgkJCQlwYnVmZiA9IG1idWZmZXIgKyBJbmRleDsJCgkJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQkJZmlsbF9idWZmZXIocGJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LChsb25nIGxvbmcpMCk7CgkJCX0KCQkJaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCXsKCQkJCWZyZWVfYWRkcj1uYnVmZj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXJlY2xlbitwYWdlX3NpemUpOwoJCQkJbmJ1ZmY9KGNoYXIgKikoKChsb25nKW5idWZmKyhsb25nKXBhZ2Vfc2l6ZSkgJiAobG9uZyl+KHBhZ2Vfc2l6ZS0xKSk7CgkJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LGkpOwoJCQkJaWYocHVyZ2UpCgkJCQkJcHVyZ2VpdChuYnVmZixyZWNsZW4pOwoJCQl9CgkJCWlmKHB1cmdlKQoJCQkJcHVyZ2VpdChwYnVmZixyZWNsZW4pOwoJCQlpZihRX2ZsYWcpCgkJCXsKCQkJCXF0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CgkJCX0KCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCXdtYWRkciA9ICZtYWRkcltpKnJlY2xlbl07CgkJCQlmaWxsX2FyZWEoKGxvbmcgbG9uZyopcGJ1ZmYsKGxvbmcgbG9uZyopd21hZGRyLChsb25nIGxvbmcpcmVjbGVuKTsKCQkJCWlmKCFtbWFwbnNmbGFnKQoJCQkJewoJCQkJICBpZihtbWFwYXNmbGFnKQoJCQkJICAgIG1zeW5jKHdtYWRkciwoc2l6ZV90KXJlY2xlbixNU19BU1lOQyk7CgkJCQkgIGlmKG1tYXBzc2ZsYWcpCgkJCQkgICAgbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX1NZTkMpOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkgIGlmKGFzeW5jX2ZsYWcpCgkJCSAgewoJCQkgICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgIGFzeW5jX3dyaXRlX25vX2NvcHkoZ2MsIChsb25nIGxvbmcpZmQsIG5idWZmLCByZWNsZW4sIChpKnJlY2xlbiksIGRlcHRoLGZyZWVfYWRkcik7CgkJCSAgICAgZWxzZQoJCQkgICAgICAgYXN5bmNfd3JpdGUoZ2MsIChsb25nIGxvbmcpZmQsIHBidWZmLCByZWNsZW4sIChpKnJlY2xlbiksIGRlcHRoKTsKCQkJICB9CgkJCSAgZWxzZQoJCQkgIHsKI2lmIGRlZmluZWQoV2luZG93cykKICAgICAgIAkJCSAgICBpZih1bmJ1ZmZlcmVkKQogICAgICAgIAkJICAgIHsKCQkJCVdyaXRlRmlsZShoYW5kLCBwYnVmZiwgcmVjbGVuLChMUERXT1JEKSZ3dmFsLAoJCQkJCTApOwoJCQkgICAgfQoJCQkgICAgZWxzZQoJCQkgICAgewojZW5kaWYKCQkJICAgIHd2YWw9d3JpdGUoZmQsIHBidWZmLCAoc2l6ZV90ICkgcmVjbGVuKTsKCQkJICAgIGlmKHd2YWwgIT0gcmVjbGVuKQoJCQkgICAgewojaWZkZWYgTk9fUFJJTlRfTExECgkJCSAgICAJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2Vsc2UKCQkJICAgIAlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayAlbGxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2VuZGlmCgkJCSAgICAJaWYod3ZhbCA9PSAtMSkKCQkJCQlwZXJyb3IoIndyaXRlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQkgICAgfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQkgICAgfQojZW5kaWYKCQkJICB9CgkJCX0KCQkJaWYoUV9mbGFnKQoJCQl7CgkJCQlxdGltZV9zdG9wPXRpbWVfc29fZmFyKCk7CgkJCQlpZihqPT0wKQojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlmcHJpbnRmKHdxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgocXRpbWVfc3RvcC1xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKCQkJCWVsc2UKCQkJCWZwcmludGYocndxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgocXRpbWVfc3RvcC1xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2Vsc2UKCQkJCWZwcmludGYod3FmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHF0aW1lX3N0b3AtcXRpbWVfc3RhcnQtdGltZV9yZXMpKSoxMDAwMDAwLHJlY2xlbik7CgkJCQllbHNlCgkJCQlmcHJpbnRmKHJ3cWZkLCIlMTAuMWxsZCAlMTAuMGYgJTEwLjFsbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgocXRpbWVfc3RvcC1xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCgkJCX0KCQkJd190cmFqX29wc19jb21wbGV0ZWQrKzsKCQkJd190cmFqX2J5dGVzX2NvbXBsZXRlZCs9cmVjbGVuOwoJCQlpZihybG9ja2luZykKCQkJewoJCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMCwgKGludCkwLAoJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJfQoJCX0KI2lmZGVmIHVuaXgKCQlpZihRX2ZsYWcpCgkJewoJCSAgIHF0aW1lX3Vfc3RvcD11dGltZV9zb19mYXIoKTsKCQkgICBxdGltZV9zX3N0b3A9c3RpbWVfc29fZmFyKCk7CgkJICAgaWYoaj09MCkKCQkJIGZwcmludGYod3FmZCwiXG5TeXN0ZW0gdGltZSAlMTAuM2YgVXNlciB0aW1lICUxMC4zZiBSZWFsICUxMC4zZiAgKHNlY29uZHMpXG4iLAoJCQkJKHF0aW1lX3Nfc3RvcC1xdGltZV9zX3N0YXJ0KS9zY19jbGtfdGNrLAoJCQkJKHF0aW1lX3Vfc3RvcC1xdGltZV91X3N0YXJ0KS9zY19jbGtfdGNrLAoJCQkJdGltZV9zb19mYXIoKS1zdGFydHRpbWUxKTsKCQkgICBlbHNlCgkJCWZwcmludGYocndxZmQsIlxuU3lzdGVtIHRpbWUgJTEwLjNmIFVzZXIgdGltZSAlMTAuM2YgUmVhbCAlMTAuM2YgIChzZWNvbmRzKVxuIiwKCQkJCShxdGltZV9zX3N0b3AtcXRpbWVfc19zdGFydCkvc2NfY2xrX3RjaywKCQkJCShxdGltZV91X3N0b3AtcXRpbWVfdV9zdGFydCkvc2NfY2xrX3RjaywKCQkJCXRpbWVfc29fZmFyKCktc3RhcnR0aW1lMSk7CgkJfQojZW5kaWYKCiNpZmRlZiBBU1lOQ19JTwoJCWlmKGFzeW5jX2ZsYWcpCgkJewoJCQllbmRfYXN5bmMoZ2MpOwoJCQlnYz0wOwoJCX0KI2VuZGlmCgkJaWYoaW5jbHVkZV9mbHVzaCkKCQl7CgkJCWlmKG1tYXBmbGFnKXsKCQkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl3dmFsPWZzeW5jKGZkKTsKCQkJCWlmKHd2YWw9PS0xKXsKCQkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJCX0KCQkJfQoJCX0KCQlpZihmaWxlX2xvY2spCgkJCWlmKG15bG9ja2YoKGludCkgZmQsKGludCkwLChpbnQpMCkpCgkJCQlwcmludGYoIlVubG9jayBmYWlsZWQgJWRcbiIsZXJybm8pOwoJCWlmKGluY2x1ZGVfY2xvc2UpCgkJewoJCQlpZihtbWFwZmxhZykKCQkJewoJCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJCX0KI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCQllbHNlCiNlbmRpZgoJCQkgICB3dmFsPWNsb3NlKGZkKTsKCQkJICAgaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJjbG9zZSIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJICAgfQoJCX0KCQl3cml0ZXRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHdyaXRldGltZVtqXSA8IChkb3VibGUpLjAwMDAwMSkgCgkJewoJCQl3cml0ZXRpbWVbal09dGltZV9yZXM7CgkJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCXJlc19wcm9iPTE7CgkJfQoJCWlmKCFpbmNsdWRlX2Nsb3NlKQoJCXsKCQkJaWYobW1hcGZsYWcpCgkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOy8qIENsZWFuIHVwIGJlZm9yZSByZWFkIHN0YXJ0cyAqLwoJCQllbHNlCgkJCXsKCQkJCXd2YWw9ZnN5bmMoZmQpOwoJCQkJaWYod3ZhbD09LTEpewoJCQkJCXBlcnJvcigiZnN5bmMiKTsKCQkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQkJfQoJCQl9CgkJCWlmKG1tYXBmbGFnKQoJCQl7CgkJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKWZpbGVieXRlczY0KTsKCQkJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQlpZih1bmJ1ZmZlcmVkKQoJCQkJQ2xvc2VIYW5kbGUoaGFuZCk7CgkJCWVsc2UKI2VuZGlmCgkJCXd2YWw9Y2xvc2UoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImNsb3NlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJY3B1dGltZVtqXSAgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZVtqXTsKCQkJaWYgKGNwdXRpbWVbal0gPCBjcHV0aW1lX3JlcykKCQkJCWNwdXRpbWVbal0gPSAwLjA7CgkJCXdhbGx0aW1lW2pdID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lW2pdOwoJCQlpZiAod2FsbHRpbWVbal0gPCBjcHV0aW1lW2pdKQoJCQkgICB3YWxsdGltZVtqXSA9IGNwdXRpbWVbal07CgkJfQoJCWlmKHJlc3RmKQoJCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKCX0KCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9d190cmFqX29wc19jb21wbGV0ZWQ7CgkgICAvKmZpbGVieXRlczY0PWZpbGVieXRlczY0L3JlY2xlbjsqLwoJfWVsc2UKCSAgIGZpbGVieXRlczY0PXdfdHJhal9ieXRlc19jb21wbGV0ZWQ7CgkJCiAgICAgICAgZm9yKGo9MDtqPGx0ZXN0O2orKykKICAgICAgICB7CgkJaWYoTVNfZmxhZykKCQl7CgkJCXdyaXRlcmF0ZVtqXT0xMDAwMDAwLjAqKHdyaXRldGltZVtqXSAvIChkb3VibGUpZmlsZWJ5dGVzNjQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHdyaXRlcmF0ZVtqXSA9IAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHdyaXRldGltZVtqXSk7CiAgICAgICAgICAgIH0KCQlpZighKE9QU19mbGFnIHx8IE1TX2ZsYWcpKQoJCSAgIHdyaXRlcmF0ZVtqXSA+Pj0gMTA7Cgl9CglkYXRhMVswXT13cml0ZXJhdGVbMF07CglpZihub3JldGVzdCkKCXsJCgkJd3JpdGVyYXRlWzFdPShsb25nIGxvbmcpIDA7CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQl3YWxsdGltZVsxXT0wLjA7CgkJCWNwdXRpbWVbMV09MC4wOwoJCX0KCX0KCS8qIE11c3Qgc2F2ZSB3YWxsdGltZSAmIGNwdXRpbWUgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IgZWFjaC9hbnkgY2VsbC4qLwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMF0sIGNwdXRpbWVbMF0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3Qpd3JpdGVyYXRlWzBdKTsKCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lWzFdLCBjcHV0aW1lWzFdKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXdyaXRlcmF0ZVsxXSk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsZCIsd3JpdGVyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsZCIsd3JpdGVyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxsZCIsd3JpdGVyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsbGQiLHdyaXRlcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2VuZGlmCn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogZndyaXRlX3BlcmZfdGVzdCAoKQkJCQkgICAgICAgIAkJKi8KLyogZldyaXRlIGFuZCBmcmUtd3JpdGUgdGVzdAkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCBmd3JpdGVfcGVyZl90ZXN0KG9mZjY0X3Qga2lsbzY0LGxvbmcgbG9uZyByZWNsZW4gLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCBmd3JpdGVfcGVyZl90ZXN0KGtpbG82NCxyZWNsZW4gLGRhdGExLGRhdGEyKQpvZmY2NF90IGtpbG82NDsKbG9uZyBsb25nIHJlY2xlbjsKbG9uZyBsb25nICpkYXRhMTsKbG9uZyBsb25nICpkYXRhMjsKI2VuZGlmCnsKCWRvdWJsZSBzdGFydHRpbWUxOwoJZG91YmxlIHdyaXRldGltZVsyXTsKCWRvdWJsZSB3YWxsdGltZVsyXSwgY3B1dGltZVsyXTsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWxvbmcgbG9uZyBpLGo7CglvZmY2NF90IG51bXJlY3M2NDsKCWxvbmcgbG9uZyBJbmRleCA9IDA7Cgl1bnNpZ25lZCBsb25nIGxvbmcgd3JpdGVyYXRlWzJdOwoJb2ZmNjRfdCBmaWxlYnl0ZXM2NDsKCUZJTEUgKnN0cmVhbSA9IE5VTEw7CglpbnQgZmQ7CglpbnQgd3ZhbDsKCWludCBsdGVzdDsKCWNoYXIgKmhvdzsKCWNoYXIgKnN0ZGlvX2J1ZjsKCglpZihtbWFwZmxhZyB8fCBhc3luY19mbGFnKQoJCXJldHVybjsKCW51bXJlY3M2NCA9IChraWxvNjQqMTAyNCkvcmVjbGVuOwoJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJc3RkaW9fYnVmPShjaGFyICopbWFsbG9jKChzaXplX3QpcmVjbGVuKTsKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCglmb3IoIGo9MDsgajxsdGVzdDsgaisrKQoJewoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJCWlmKGo9PTApCgkJewoJCQlpZihjaGVja19maWxlbmFtZShmaWxlbmFtZSkpCgkJCQlob3c9InIrIjsgLyogZmlsZSBleGlzdHMsIGRvbid0IGNyZWF0ZSBhbmQgemVybyBhIG5ldyBvbmUuICovCgkJCWVsc2UKCQkJCWhvdz0idysiOyAvKiBmaWxlIGRvZXNuJ3QgZXhpc3QuIGNyZWF0ZSBpdC4gKi8KCQl9CgkJZWxzZQoJCQlob3c9InIrIjsgLyogcmUtdGVzdHMgc2hvdWxkIGVycm9yIG91dCBpZiBmaWxlIGRvZXMgbm90IGV4aXN0LiAqLwojaWZkZWYgSVJJWDY0CgkJaWYoKHN0cmVhbT0oRklMRSAqKWZvcGVuKGZpbGVuYW1lLGhvdykpID09IDApCgkJewoJCQlwcmludGYoIlxuQ2FuIG5vdCBmZG9wZW4gdGVtcCBmaWxlOiAlcyAlbGxkXG4iLCAKCQkJCWZpbGVuYW1lLGVycm5vKTsKCQkJcGVycm9yKCJmZG9wZW4iKTsKCQkJZXhpdCg0OCk7CgkJfQojZWxzZQoJCWlmKChzdHJlYW09KEZJTEUgKilJX0ZPUEVOKGZpbGVuYW1lLGhvdykpID09IDApCgkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCXByaW50ZigiXG5DYW4gbm90IGZkb3BlbiB0ZW1wIGZpbGU6ICVzICVkXG4iLCAKCQkJCWZpbGVuYW1lLGVycm5vKTsKI2Vsc2UKCQkJcHJpbnRmKCJcbkNhbiBub3QgZmRvcGVuIHRlbXAgZmlsZTogJXMgJWRcbiIsIAoJCQkJZmlsZW5hbWUsZXJybm8pOwojZW5kaWYKCQkJcGVycm9yKCJmZG9wZW4iKTsKCQkJZXhpdCg0OSk7CgkJfQojZW5kaWYKCQlmZD1maWxlbm8oc3RyZWFtKTsKCQlmc3luYyhmZCk7CgkJc2V0dmJ1ZihzdHJlYW0sc3RkaW9fYnVmLF9JT0ZCRixyZWNsZW4pOwoJCWJ1ZmZlcj1tYWluYnVmZmVyOwoJCWlmKGZldGNob24pCgkJCWZldGNoaXQoYnVmZmVyLHJlY2xlbik7CgkJaWYodmVyaWZ5IHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQlmaWxsX2J1ZmZlcihidWZmZXIscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LChsb25nIGxvbmcpMCk7CgkJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CgkJY29tcHV0ZV92YWw9KGRvdWJsZSkwOwoJCWZvcihpPTA7IGk8bnVtcmVjczY0OyBpKyspewoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwoJCQlpZihtdWx0aV9idWZmZXIpCgkJCXsKCQkJCUluZGV4ICs9cmVjbGVuOwoJCQkJaWYoSW5kZXggPiAoTUFYQlVGRkVSU0laRS1yZWNsZW4pKQoJCQkJCUluZGV4PTA7CgkJCQlidWZmZXIgPSBtYnVmZmVyICsgSW5kZXg7CQoJCQl9CgkJCWlmKCh2ZXJpZnkgJiBkaWFnX3YpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQkJZmlsbF9idWZmZXIoYnVmZmVyLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxpKTsKCQkJaWYocHVyZ2UpCgkJCQlwdXJnZWl0KGJ1ZmZlcixyZWNsZW4pOwoJCQlpZihmd3JpdGUoYnVmZmVyLCAoc2l6ZV90KSByZWNsZW4sIDEsIHN0cmVhbSkgIT0gMSkKCQkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCSAgICAJcHJpbnRmKCJcbkVycm9yIGZ3cml0aW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbHNlCgkJCSAgICAJcHJpbnRmKCJcbkVycm9yIGZ3cml0aW5nIGJsb2NrICVsbGQsIGZkPSAlZFxuIiwgaSwKCQkJCQkgZmQpOwojZW5kaWYKCQkJCXBlcnJvcigiZndyaXRlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoKCQlpZihpbmNsdWRlX2ZsdXNoKQoJCXsKCQkJZmZsdXNoKHN0cmVhbSk7CgkJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoJCWlmKGluY2x1ZGVfY2xvc2UpCgkJewoJCQl3dmFsPWZjbG9zZShzdHJlYW0pOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZjbG9zZSIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCX0KCQl3cml0ZXRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHdyaXRldGltZVtqXSA8IChkb3VibGUpLjAwMDAwMSkgCgkJewoJCQl3cml0ZXRpbWVbal09IHRpbWVfcmVzOwoJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCXJlY19wcm9iID0gcmVjbGVuOwoJCQlyZXNfcHJvYj0xOwoJCX0KCQlpZighaW5jbHVkZV9jbG9zZSkKCQl7CgkJCXd2YWw9ZmZsdXNoKHN0cmVhbSk7CgkJCWlmKHd2YWw9PS0xKXsKCQkJCXBlcnJvcigiZmZsdXNoIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJCXd2YWw9ZmNsb3NlKHN0cmVhbSk7CgkJCWlmKHd2YWw9PS0xKXsKCQkJCXBlcnJvcigiZmNsb3NlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkJCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCQljcHV0aW1lW2pdID0gMC4wOwoJCQl3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZVtqXTsKCQkJaWYgKHdhbGx0aW1lW2pdIDwgY3B1dGltZVtqXSkKCQkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJCX0KCQlpZihyZXN0ZikKCQkJc2xlZXAoKGludCkoaW50KXJlc3RfdmFsKTsKCX0KCWZyZWUoc3RkaW9fYnVmKTsKCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOwoJfQogICAgICAgIGZvcihqPTA7ajxsdGVzdDtqKyspCiAgICAgICAgewoJCWlmKE1TX2ZsYWcpCgkJewoJCQl3cml0ZXJhdGVbal09MTAwMDAwMC4wKih3cml0ZXRpbWVbal0gLyAoZG91YmxlKWZpbGVieXRlczY0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgd3JpdGVyYXRlW2pdID0gCgkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKChkb3VibGUpIGZpbGVieXRlczY0IC8gd3JpdGV0aW1lW2pdKTsKICAgICAgICAgICAgfQoJCWlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJCXdyaXRlcmF0ZVtqXSA+Pj0gMTA7Cgl9CgkvKiBNdXN0IHNhdmUgd2FsbHRpbWUgJiBjcHV0aW1lIGJlZm9yZSBjYWxsaW5nIHN0b3JlX3ZhbHVlKCkgZm9yIGVhY2gvYW55IGNlbGwuKi8KCWlmKG5vcmV0ZXN0KQoJewoJCXdyaXRlcmF0ZVsxXT0obG9uZyBsb25nKTA7CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQl3YWxsdGltZVsxXT0wLjA7CgkJCWNwdXRpbWVbMV09MC4wOwoJCX0KCX0KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lWzBdLCBjcHV0aW1lWzBdKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXdyaXRlcmF0ZVswXSk7CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZVsxXSwgY3B1dGltZVsxXSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdCl3cml0ZXJhdGVbMV0pOwoJZGF0YTFbMF09d3JpdGVyYXRlWzBdOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiU5bGQiLHdyaXRlcmF0ZVswXSk7CglpZighc2lsZW50KSBwcmludGYoIiU5bGQiLHdyaXRlcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiJTlsbGQiLHdyaXRlcmF0ZVswXSk7CglpZighc2lsZW50KSBwcmludGYoIiU5bGxkIix3cml0ZXJhdGVbMV0pOwoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7CiNlbmRpZgp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBmcmVhZF9wZXJmX3Rlc3QJCQkJICAgICAgICAJCSovCi8qIGZSZWFkIGFuZCBmcmUtcmVhZCB0ZXN0CQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIGZyZWFkX3BlcmZfdGVzdChvZmY2NF90IGtpbG82NCxsb25nIGxvbmcgcmVjbGVuLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCBmcmVhZF9wZXJmX3Rlc3Qoa2lsbzY0LHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTEsKmRhdGEyOwojZW5kaWYKewoJZG91YmxlIHN0YXJ0dGltZTI7Cglkb3VibGUgcmVhZHRpbWVbMl07Cglkb3VibGUgd2FsbHRpbWVbMl0sIGNwdXRpbWVbMl07Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglsb25nIGxvbmcgajsKCW9mZjY0X3QgaSxudW1yZWNzNjQ7Cglsb25nIGxvbmcgSW5kZXggPSAwOwoJdW5zaWduZWQgbG9uZyBsb25nIHJlYWRyYXRlWzJdOwoJb2ZmNjRfdCBmaWxlYnl0ZXM2NDsKCUZJTEUgKnN0cmVhbSA9IDA7CgljaGFyICpzdGRpb19idWY7CglpbnQgZmQsbHRlc3Q7CgoJaWYobW1hcGZsYWcgfHwgYXN5bmNfZmxhZykKCQlyZXR1cm47CgludW1yZWNzNjQgPSAoa2lsbzY0KjEwMjQpL3JlY2xlbjsKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCXN0ZGlvX2J1Zj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXJlY2xlbik7CgoJaWYobm9yZXRlc3QpCgkJbHRlc3Q9MTsKCWVsc2UKCQlsdGVzdD0yOwoKCWZvciggaj0wOyBqPGx0ZXN0OyBqKysgKQoJewoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoKCQlpZihVZmxhZykgLyogVW5tb3VudCBhbmQgcmUtbW91bnQgdGhlIG1vdW50cG9pbnQgKi8KCQl7CgkJCXB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJCX0KI2lmZGVmIElSSVg2NAoJCWlmKChzdHJlYW09KEZJTEUgKilmb3BlbihmaWxlbmFtZSwiciIpKSA9PSAwKQoJCXsKCQkJcHJpbnRmKCJcbkNhbiBub3QgZmRvcGVuIHRlbXAgZmlsZTogJXNcbiIsIAoJCQkJZmlsZW5hbWUpOwoJCQlwZXJyb3IoImZkb3BlbiIpOwoJCQlleGl0KDUxKTsKCQl9CiNlbHNlCgkJaWYoKHN0cmVhbT0oRklMRSAqKUlfRk9QRU4oZmlsZW5hbWUsInIiKSkgPT0gMCkKCQl7CgkJCXByaW50ZigiXG5DYW4gbm90IGZkb3BlbiB0ZW1wIGZpbGU6ICVzXG4iLCAKCQkJCWZpbGVuYW1lKTsKCQkJcGVycm9yKCJmZG9wZW4iKTsKCQkJZXhpdCg1Mik7CgkJfQojZW5kaWYKCQlmZD1JX09QRU4oZmlsZW5hbWUsT19SRE9OTFksMCk7CgkJZnN5bmMoZmQpOwoJCWNsb3NlKGZkKTsKCQlzZXR2YnVmKHN0cmVhbSxzdGRpb19idWYsX0lPRkJGLHJlY2xlbik7CgkJYnVmZmVyPW1haW5idWZmZXI7CgkJaWYoZmV0Y2hvbikKCQkJZmV0Y2hpdChidWZmZXIscmVjbGVuKTsKCQljb21wdXRlX3ZhbD0oZG91YmxlKTA7CgkJc3RhcnR0aW1lMiA9IHRpbWVfc29fZmFyKCk7CgkJZm9yKGk9MDsgaTxudW1yZWNzNjQ7IGkrKykgCgkJewoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihtdWx0aV9idWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleD0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG1idWZmZXIgKyBJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoJCQlpZihwdXJnZSkKCQkJCXB1cmdlaXQoYnVmZmVyLHJlY2xlbik7CgkJCWlmKGZyZWFkKGJ1ZmZlciwgKHNpemVfdCkgcmVjbGVuLDEsIHN0cmVhbSkgIT0gMSkKCQkJewojaWZkZWYgXzY0QklUX0FSQ0hfCiNpZmRlZiBOT19QUklOVF9MTEQKCQkJCXByaW50ZigiXG5FcnJvciBmcmVhZGluZyBibG9jayAlbGQgJXhcbiIsIGksCgkJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylidWZmZXIpOwojZWxzZQoJCQkJcHJpbnRmKCJcbkVycm9yIGZyZWFkaW5nIGJsb2NrICVsZCAleFxuIiwgaSwKCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKWJ1ZmZlcik7CiNlbmRpZgojZWxzZQojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlwcmludGYoIlxuRXJyb3IgZnJlYWRpbmcgYmxvY2sgJWxkICVseFxuIiwgaSwKCQkJCQkobG9uZylidWZmZXIpOwojZWxzZQoJCQkJcHJpbnRmKCJcbkVycm9yIGZyZWFkaW5nIGJsb2NrICVsbGQgJWx4XG4iLCBpLAoJCQkJCShsb25nKWJ1ZmZlcik7CiNlbmRpZgojZW5kaWYKCQkJCXBlcnJvcigicmVhZCIpOwoJCQkJZXhpdCg1NCk7CgkJCX0KCQkJaWYodmVyaWZ5KXsKCQkJCWlmKHZlcmlmeV9idWZmZXIoYnVmZmVyLHJlY2xlbiwob2ZmNjRfdClpLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJCWV4aXQoNTUpOwoJCQkJfQoJCQl9CgkJfQoJCWlmKGluY2x1ZGVfZmx1c2gpCgkJCWZmbHVzaChzdHJlYW0pOwoJCWlmKGluY2x1ZGVfY2xvc2UpCgkJewoJCQlmY2xvc2Uoc3RyZWFtKTsKCQl9CgkJcmVhZHRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUyKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHJlYWR0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXJlYWR0aW1lW2pdPSB0aW1lX3JlczsKCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJcmVzX3Byb2I9MTsKCQl9CgkJaWYoIWluY2x1ZGVfY2xvc2UpCgkJewoJCQlmZmx1c2goc3RyZWFtKTsKCQkJZmNsb3NlKHN0cmVhbSk7CgkJfQoJCXN0cmVhbSA9IE5VTEw7CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lW2pdOwoJCQlpZiAoY3B1dGltZVtqXSA8IGNwdXRpbWVfcmVzKQoJCQkJY3B1dGltZVtqXSA9IDAuMDsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWVbal07CgkJCWlmICh3YWxsdGltZVtqXSA8IGNwdXRpbWVbal0pCgkJCSAgIHdhbGx0aW1lW2pdID0gY3B1dGltZVtqXTsKCQl9CgkJaWYocmVzdGYpCgkJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgCX0KCWZyZWUoc3RkaW9fYnVmKTsKCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOwoJfQogICAgICAgIGZvcihqPTA7ajxsdGVzdDtqKyspCiAgICAgICAgewoJCWlmKE1TX2ZsYWcpCgkJewoJCQlyZWFkcmF0ZVtqXT0xMDAwMDAwLjAqKHJlYWR0aW1lW2pdIC8gKGRvdWJsZSlmaWxlYnl0ZXM2NCk7CgkJCWNvbnRpbnVlOwoJCX0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHJlYWRyYXRlW2pdID0gCiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHJlYWR0aW1lW2pdKTsKICAgICAgICAgICAgfQoJCWlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJCXJlYWRyYXRlW2pdID4+PSAxMDsKCX0KCWRhdGExWzBdPXJlYWRyYXRlWzBdOwoJZGF0YTJbMF09MTsKCWlmKG5vcmV0ZXN0KQoJewoJCXJlYWRyYXRlWzFdPShsb25nIGxvbmcpMDsKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCXdhbGx0aW1lWzFdPTAuMDsKCQkJY3B1dGltZVsxXT0wLjA7CgkJfQoJfQoJLyogTXVzdCBzYXZlIHdhbGx0aW1lICYgY3B1dGltZSBiZWZvcmUgY2FsbGluZyBzdG9yZV92YWx1ZSgpIGZvciBlYWNoL2FueSBjZWxsLiovCglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZVswXSwgY3B1dGltZVswXSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdClyZWFkcmF0ZVswXSk7CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZVsxXSwgY3B1dGltZVsxXSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdClyZWFkcmF0ZVsxXSk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsZCIscmVhZHJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxkIixyZWFkcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsbGQiLHJlYWRyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJTlsbGQiLHJlYWRyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZW5kaWYKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogcmVhZF9wZXJmX3Rlc3QJCQkJICAgICAgICAJCSovCi8qIFJlYWQgYW5kIHJlLWZyZWFkIHRlc3QJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCnJlYWRfcGVyZl90ZXN0KG9mZjY0X3Qga2lsbzY0LGxvbmcgbG9uZyByZWNsZW4sbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIApyZWFkX3BlcmZfdGVzdChraWxvNjQscmVjbGVuLGRhdGExLGRhdGEyKQpvZmY2NF90IGtpbG82NDsKbG9uZyBsb25nIHJlY2xlbjsKbG9uZyBsb25nICpkYXRhMSwqZGF0YTI7CiNlbmRpZgp7Cglkb3VibGUgc3RhcnR0aW1lMjsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWRvdWJsZSByZWFkdGltZVsyXTsKCWRvdWJsZSB3YWxsdGltZVsyXSwgY3B1dGltZVsyXTsKI2lmZGVmIHVuaXgKCWRvdWJsZSBxdGltZV91X3N0YXJ0LHF0aW1lX3Vfc3RvcDsKCWRvdWJsZSBxdGltZV9zX3N0YXJ0LHF0aW1lX3Nfc3RvcDsKI2VuZGlmCglsb25nIGxvbmcgajsKCWxvbmcgbG9uZyB0cmFqX3NpemU7CglvZmY2NF90IGksbnVtcmVjczY0LHRyYWpfb2Zmc2V0OwoJb2ZmNjRfdCBsb2NrX29mZnNldD0wOwoJbG9uZyBsb25nIEluZGV4ID0gMDsKCXVuc2lnbmVkIGxvbmcgbG9uZyByZWFkcmF0ZVsyXTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7Cgl2b2xhdGlsZSBjaGFyICpidWZmZXIxOwoJY2hhciAqbmJ1ZmY7CgljaGFyICptYWRkcjsKCWNoYXIgKndtYWRkcjsKCWludCBmZCxvcGVuX2ZsYWdzOwoJaW50IHRlc3RfZm9vLGx0ZXN0OwoJbG9uZyB3dmFsOwoJZG91YmxlIHF0aW1lX3N0YXJ0LHF0aW1lX3N0b3A7CiNpZmRlZiBBU1lOQ19JTwoJc3RydWN0IGNhY2hlICpnYz0wOwoKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCiNpZmRlZiB1bml4CglxdGltZV91X3N0YXJ0PXF0aW1lX3Vfc3RvcD0wOwoJcXRpbWVfc19zdGFydD1xdGltZV9zX3N0b3A9MDsKI2VuZGlmCglxdGltZV9zdGFydD1xdGltZV9zdG9wPTA7CgltYWRkcj0wOwoJdHJhal9vZmZzZXQ9MDsKCXRlc3RfZm9vPTA7CgludW1yZWNzNjQgPSAoa2lsbzY0KjEwMjQpL3JlY2xlbjsKCglvcGVuX2ZsYWdzID0gT19SRE9OTFk7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlvcGVuX2ZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCW9wZW5fZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJb3Blbl9mbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKCWlmKHJfdHJhal9mbGFnKQoJewoJCW51bXJlY3M2ND1yX3RyYWpfb3BzOwoJCWZpbGVieXRlczY0ID0gcl90cmFqX2ZzaXplOwoJfSBlbHNlCgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJZmQgPSAwOwoJaWYoUV9mbGFnICYmICghcm9sX29wZW5lZCkpCgl7CgkJcm9sX29wZW5lZCsrOwoJCXJxZmQ9Zm9wZW4oInJvbC5kYXQiLCJhIik7CgkJaWYocnFmZD09MCkKCQl7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gcm9sLmRhdFxuIik7CgkJCWV4aXQoNTYpOwoJCX0KCQlmcHJpbnRmKHJxZmQsIk9mZnNldCBpbiBLYnl0ZXMgICBMYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyAgVHJhbnNmZXIgc2l6ZSBpbiBieXRlc1xuIik7CgkJcnJxZmQ9Zm9wZW4oInJyb2wuZGF0IiwiYSIpOwoJCWlmKHJycWZkPT0wKQoJCXsKCQkJcHJpbnRmKCJVbmFibGUgdG8gb3BlbiBycm9sLmRhdFxuIik7CgkJCWV4aXQoNTcpOwoJCX0KCQlmcHJpbnRmKHJycWZkLCJPZmZzZXQgaW4gS2J5dGVzICAgTGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMgIFRyYW5zZmVyIHNpemUgaW4gYnl0ZXNcbiIpOwoJfQoJLyogCgkgKiBiZWdpbiByZWFsIHRlc3RpbmcKCSAqLwoJaWYobm9yZXRlc3QpCgkJbHRlc3Q9MTsKCWVsc2UKCQlsdGVzdD0yOwoKCWZvciggaj0wOyBqPGx0ZXN0OyBqKysgKQoJewoKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCXdhbGx0aW1lW2pdID0gdGltZV9zb19mYXIoKTsKCQkJY3B1dGltZVtqXSAgPSBjcHV0aW1lX3NvX2ZhcigpOwoJCX0KCgkJaWYoVWZsYWcpIC8qIFVubW91bnQgYW5kIHJlLW1vdW50IHRoZSBtb3VudHBvaW50ICovCgkJewoJCQlwdXJnZV9idWZmZXJfY2FjaGUoKTsKCQl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkgICAgICAgCWlmKHVuYnVmZmVyZWQpCgkgICAgICAgIHsKCSAgICAgICAgCWhhbmQ9Q3JlYXRlRmlsZShmaWxlbmFtZSwKCQkJICBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSwKCQkgICAgICAgICAgRklMRV9TSEFSRV9XUklURXxGSUxFX1NIQVJFX1JFQUQsCgkJCSAgTlVMTCxPUEVOX0VYSVNUSU5HLEZJTEVfRkxBR19OT19CVUZGRVJJTkd8CgkJCSAgRklMRV9GTEFHX1dSSVRFX1RIUk9VR0h8RklMRV9GTEFHX1BPU0lYX1NFTUFOVElDUywKCQkJICBOVUxMKTsKICAgICAgICAgICAgCX0KCSAgICAgICAgZWxzZQoJICAgICAgICB7CiNlbmRpZgoJCWlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgb3Blbl9mbGFncywwKSk8MCkKCQl7CgkJCXByaW50ZigiXG5DYW4gbm90IG9wZW4gdGVtcG9yYXJ5IGZpbGUgJXMgZm9yIHJlYWRcbiIsZmlsZW5hbWUpOwoJCQlwZXJyb3IoIm9wZW4iKTsKCQkJZXhpdCg1OCk7CgkJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCX0KI2VuZGlmCiNpZmRlZiBBU1lOQ19JTwoJCWlmKGFzeW5jX2ZsYWcpCgkJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCgojaWZkZWYgVlhGUwoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQkJaWYodGVzdF9mb28gPT0gMCkKCQkJewoJCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQojZW5kaWYKCQlpZihmaWxlX2xvY2spCgkJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSkgIT0gMCkKCQkJCXByaW50ZigiRmlsZSBsb2NrIGZvciByZWFkIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbWFkZHI9KGNoYXIgKilpbml0ZmlsZShmZCxmaWxlYnl0ZXM2NCwwLFBST1RfUkVBRCk7CgkJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKCF1bmJ1ZmZlcmVkKQojZW5kaWYKCQkgIGZzeW5jKGZkKTsKCQkvKiAKCQkgKiAgTmVlZCB0byBwcmltZSB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGUgJiBUTEIKCQkgKi8KCQluYnVmZj1tYWluYnVmZmVyOwoJCWlmKGZldGNob24pCgkJCWZldGNoaXQobmJ1ZmYscmVjbGVuKTsKI2lmIGRlZmluZWQoV2luZG93cykKCQlpZighdW5idWZmZXJlZCkKCQl7CiNlbmRpZgoJCWlmKHJlYWQoZmQsICh2b2lkICopbmJ1ZmYsIChzaXplX3QpIHBhZ2Vfc2l6ZSkgIT0gcGFnZV9zaXplKQoJCXsKI2lmZGVmIF82NEJJVF9BUkNIXwoJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlZCAleFxuIiwgMCwKCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpbmJ1ZmYpOwojZWxzZQoJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlZCAlbHhcbiIsIDAsCgkJCQkobG9uZyluYnVmZik7CiNlbmRpZgoJCQlwZXJyb3IoInJlYWQiKTsKCQkJZXhpdCg2MCk7CgkJfQoJCUlfTFNFRUsoZmQsMCxTRUVLX1NFVCk7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJfQoJCWlmKHVuYnVmZmVyZWQpCgkJCVNldEZpbGVQb2ludGVyKGhhbmQsKExPTkcpMCwwLEZJTEVfQkVHSU4pOwojZW5kaWYKCQluYnVmZj1tYWluYnVmZmVyOwoKCQlpZihmZXRjaG9uKQoJCQlmZXRjaGl0KG5idWZmLHJlY2xlbik7CgkJc3RhcnR0aW1lMiA9IHRpbWVfc29fZmFyKCk7CiNpZmRlZiB1bml4CgkJaWYoUV9mbGFnKQoJCXsKCQkJcXRpbWVfdV9zdGFydD11dGltZV9zb19mYXIoKTsKCQkJcXRpbWVfc19zdGFydD1zdGltZV9zb19mYXIoKTsKCQl9CiNlbmRpZgoJCWlmKHJfdHJhal9mbGFnKQoJCXsKCQkJcmV3aW5kKHJfdHJhal9mZCk7CgkJfQoJCWNvbXB1dGVfdmFsPShkb3VibGUpMDsKCQlyX3RyYWpfb3BzX2NvbXBsZXRlZD0wOwoJCXJfdHJhal9ieXRlc19jb21wbGV0ZWQ9MDsKCQlmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSAKCQl7CgkJCWlmKGRpc3J1cHRfZmxhZyAmJiAoKGklRElTUlVQVCk9PTApKQoJCQl7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkKCQkJCWlmKHVuYnVmZmVyZWQpCgkJCQkgICBkaXNydXB0dyhoYW5kKTsKCQkJCWVsc2UKCQkJCSAgIGRpc3J1cHQoZmQpOwojZWxzZQoJCQkJZGlzcnVwdChmZCk7CiNlbmRpZgoJCQl9CgkJCWlmKHJfdHJhal9mbGFnKQoJCQl7CgkJCQl0cmFqX29mZnNldD1nZXRfdHJhaihyX3RyYWpfZmQsIChsb25nIGxvbmcgKikmdHJhal9zaXplLChmbG9hdCAqKSZjb21wdXRlX3RpbWUsIChsb25nKTApOwoJCQkJcmVjbGVuPXRyYWpfc2l6ZTsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICBTZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKXRyYWpfb2Zmc2V0LDAsRklMRV9CRUdJTik7CgkJCWVsc2UKI2VuZGlmCgkJCQlJX0xTRUVLKGZkLHRyYWpfb2Zmc2V0LFNFRUtfU0VUKTsKCQkJfQoJCQlpZihRX2ZsYWcpCgkJCXsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICB0cmFqX29mZnNldD1TZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKTAsMCxGSUxFX0NVUlJFTlQpOwoJCQllbHNlCiNlbmRpZgoJCQkJdHJhal9vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJfQoJCQlpZihybG9ja2luZykKCQkJewoJCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJCX0KCQkJaWYoY29tcHV0ZV9mbGFnKQoJCQkJY29tcHV0ZV92YWwrPWRvX2NvbXB1dGUoY29tcHV0ZV90aW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobXVsdGlfYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggKz1yZWNsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoSW5kZXggPiAoTUFYQlVGRkVSU0laRS1yZWNsZW4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnVmZiA9IG1idWZmZXIgKyBJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoJCQlpZihwdXJnZSkKCQkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQkJaWYoUV9mbGFnKQoJCQkJcXRpbWVfc3RhcnQ9dGltZV9zb19mYXIoKTsKCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCXdtYWRkcj0mbWFkZHJbaSpyZWNsZW5dOwoJCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCSAgaWYoYXN5bmNfZmxhZykKCQkJICB7CgkJCSAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgIGFzeW5jX3JlYWRfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgJmJ1ZmZlcjEsIChpKnJlY2xlbiksIHJlY2xlbiwKCQkJICAgIAkxTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgIGVsc2UKCQkJICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIChpKnJlY2xlbikscmVjbGVuLAoJCQkgICAgCTFMTCwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewojaWYgZGVmaW5lZChXaW5kb3dzKQogICAgICAgCQkJICAgIGlmKHVuYnVmZmVyZWQpCiAgICAgICAgCQkgICAgewoJCQkJUmVhZEZpbGUoaGFuZCwgbmJ1ZmYsIHJlY2xlbiwoTFBEV09SRCkmd3ZhbCwKCQkJCQkwKTsKCQkJICAgIH0KCQkJICAgIGVsc2UKI2VuZGlmCgkJCSAgICAgIHd2YWw9cmVhZCgoaW50KWZkLCAodm9pZCopbmJ1ZmYsIChzaXplX3QpIHJlY2xlbik7CgkJCSAgICBpZih3dmFsICE9IHJlY2xlbikKCQkJICAgIHsKI2lmZGVmIF82NEJJVF9BUkNIXwojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlbGQgJWx4XG4iLCBpLAoJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpbmJ1ZmYpOwojZWxzZQoJCQkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxsZCAlbGx4XG4iLCBpLAoJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpbmJ1ZmYpOwojZW5kaWYKI2Vsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxkICV4XG4iLCBpLAoJCQkJCShsb25nKW5idWZmKTsKI2Vsc2UKCQkJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrICVsbGQgJWx4XG4iLCBpLAoJCQkJCShsb25nKW5idWZmKTsKI2VuZGlmCiNlbmRpZgoJCQkJcGVycm9yKCJyZWFkIik7CgkJCQlleGl0KDYxKTsKCQkJICAgIH0KCQkJICB9CgkJCX0KCQkJaWYodmVyaWZ5KSB7CgkJCSAgaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCSAgewoJCQkJaWYodmVyaWZ5X2J1ZmZlcihidWZmZXIxLHJlY2xlbiwob2ZmNjRfdClpLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJCWV4aXQoNjIpOwoJCQkJfQoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewoJCQkJaWYodmVyaWZ5X2J1ZmZlcihuYnVmZixyZWNsZW4sKG9mZjY0X3QpaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCQlleGl0KDYzKTsKCQkJCX0KCQkJICB9CgkJCX0KCQkJaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCQlhc3luY19yZWxlYXNlKGdjKTsKCQkJYnVmZmVyMT0wOwoJCQlpZihRX2ZsYWcpCgkJCXsKCQkJCXF0aW1lX3N0b3A9dGltZV9zb19mYXIoKTsKCQkJCWlmKGo9PTApCiNpZmRlZiBOT19QUklOVF9MTEQKCQkJCWZwcmludGYocnFmZCwiJTEwLjFsZCAlMTAuMGYgJTEwLjFsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKHF0aW1lX3N0b3AtcXRpbWVfc3RhcnQtdGltZV9yZXMpKjEwMDAwMDAscmVjbGVuKTsKCQkJCWVsc2UKCQkJCWZwcmludGYocnJxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LChxdGltZV9zdG9wLXF0aW1lX3N0YXJ0LXRpbWVfcmVzKSoxMDAwMDAwLHJlY2xlbik7CiNlbHNlCgkJCQlmcHJpbnRmKHJxZmQsIiUxMC4xbGxkICUxMC4wZiAlMTAuMWxsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKHF0aW1lX3N0b3AtcXRpbWVfc3RhcnQtdGltZV9yZXMpKjEwMDAwMDAscmVjbGVuKTsKCQkJCWVsc2UKCQkJCWZwcmludGYocnJxZmQsIiUxMC4xbGxkICUxMC4wZiAlMTAuMWxsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKHF0aW1lX3N0b3AtcXRpbWVfc3RhcnQtdGltZV9yZXMpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCgkJCX0KCQkJcl90cmFqX29wc19jb21wbGV0ZWQrKzsKCQkJcl90cmFqX2J5dGVzX2NvbXBsZXRlZCs9cmVjbGVuOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoZmlsZV9sb2NrKQoJCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEpKQoJCQkJcHJpbnRmKCJSZWFkIHVubG9jayBmYWlsZWQuICVkXG4iLGVycm5vKTsKI2lmZGVmIHVuaXgKCQlpZihRX2ZsYWcpCgkJewoJCSAgIHF0aW1lX3Vfc3RvcD11dGltZV9zb19mYXIoKTsKCQkgICBxdGltZV9zX3N0b3A9c3RpbWVfc29fZmFyKCk7CgkJICAgaWYoaj09MCkKCQkJIGZwcmludGYocnFmZCwiXG5TeXN0ZW0gdGltZSAlMTAuM2YgVXNlciB0aW1lICUxMC4zZiBSZWFsICUxMC4zZiAgKHNlY29uZHMpXG4iLAoJCQkJKHF0aW1lX3Nfc3RvcC1xdGltZV9zX3N0YXJ0KS9zY19jbGtfdGNrLAoJCQkJKHF0aW1lX3Vfc3RvcC1xdGltZV91X3N0YXJ0KS9zY19jbGtfdGNrLAoJCQkJdGltZV9zb19mYXIoKS1zdGFydHRpbWUyKTsKCQkgICBlbHNlCgkJCWZwcmludGYocnJxZmQsIlxuU3lzdGVtIHRpbWUgJTEwLjNmIFVzZXIgdGltZSAlMTAuM2YgUmVhbCAlMTAuM2YgIChzZWNvbmRzKVxuIiwKCQkJCShxdGltZV9zX3N0b3AtcXRpbWVfc19zdGFydCkvc2NfY2xrX3RjaywKCQkJCShxdGltZV91X3N0b3AtcXRpbWVfdV9zdGFydCkvc2NfY2xrX3RjaywKCQkJCXRpbWVfc29fZmFyKCktc3RhcnR0aW1lMik7CgkJfQojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCgkJaWYoYXN5bmNfZmxhZykKCQl7CgkJCWVuZF9hc3luYyhnYyk7CgkJCWdjPTA7CgkJfQojZW5kaWYKCQlpZihpbmNsdWRlX2ZsdXNoKQoJCXsKCQkJaWYobW1hcGZsYWcpCgkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCQllbHNlCgkJCQlmc3luYyhmZCk7CgkJfQoJCWlmKGluY2x1ZGVfY2xvc2UpCgkJewoJCQlpZihtbWFwZmxhZykKCQkJewoJCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJCX0KI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCQllbHNlCiNlbmRpZgoJCQljbG9zZShmZCk7CgkJfQoJCXJlYWR0aW1lW2pdID0gKCh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMiktdGltZV9yZXMpLWNvbXB1dGVfdmFsOwoJCWlmKHJlYWR0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXJlYWR0aW1lW2pdPSB0aW1lX3JlczsKCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJcmVzX3Byb2I9MTsKCQl9CgkJaWYoIWluY2x1ZGVfY2xvc2UpCgkJewoJCQlpZihtbWFwZmxhZykKCQkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7CgkJCWVsc2UKCQkJCWZzeW5jKGZkKTsKCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCQl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJCWlmKHVuYnVmZmVyZWQpCgkJCQlDbG9zZUhhbmRsZShoYW5kKTsKCQkJZWxzZQojZW5kaWYKCQkJY2xvc2UoZmQpOwoJCX0KCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkJCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCQljcHV0aW1lW2pdID0gMC4wOwoJCQl3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZVtqXTsKCQkJaWYgKHdhbGx0aW1lW2pdIDwgY3B1dGltZVtqXSkKCQkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJCX0KCQlpZihyZXN0ZikKCQkJc2xlZXAoKGludClyZXN0X3ZhbCk7CiAgICAJfQoJaWYoT1BTX2ZsYWcgfHwgTVNfZmxhZyl7CgkgICBmaWxlYnl0ZXM2ND1yX3RyYWpfb3BzX2NvbXBsZXRlZDsKCSAgIC8qZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOyovCgl9IGVsc2UKCSAgIGZpbGVieXRlczY0PXJfdHJhal9ieXRlc19jb21wbGV0ZWQ7CgogICAgICAgIGZvcihqPTA7ajxsdGVzdDtqKyspCiAgICAgICAgewoJCWlmKE1TX2ZsYWcpCgkJewoJCQlyZWFkcmF0ZVtqXT0xMDAwMDAwLjAqKHJlYWR0aW1lW2pdIC8gKGRvdWJsZSlmaWxlYnl0ZXM2NCk7CgkJCWNvbnRpbnVlOwoJCX0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHJlYWRyYXRlW2pdID0gCiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHJlYWR0aW1lW2pdKTsKICAgICAgICAgICAgfQoJCWlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJCXJlYWRyYXRlW2pdID4+PSAxMDsKCQkJCgl9CglkYXRhMVswXT1yZWFkcmF0ZVswXTsKCWRhdGEyWzBdPTE7CglpZihub3JldGVzdCkKCXsKCQlyZWFkcmF0ZVsxXT0obG9uZyBsb25nKTA7CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQl3YWxsdGltZVsxXT0wLjA7CgkJCWNwdXRpbWVbMV09MC4wOwoJCX0KCX0KCS8qIE11c3Qgc2F2ZSB3YWxsdGltZSAmIGNwdXRpbWUgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IgZWFjaC9hbnkgY2VsbC4qLwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMF0sIGNwdXRpbWVbMF0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcmVhZHJhdGVbMF0pOwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMV0sIGNwdXRpbWVbMV0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcmVhZHJhdGVbMV0pOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiU5bGQiLHJlYWRyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJTlsZCIscmVhZHJhdGVbMV0pOwoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIiU5bGxkIixyZWFkcmF0ZVswXSk7CglpZighc2lsZW50KSBwcmludGYoIiU5bGxkIixyZWFkcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2VuZGlmCn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiByYW5kb21fcGVyZl90ZXN0CQkJCSAgICAgICAgCQkqLwovKiBSYW5kb20gcmVhZCBhbmQgd3JpdGUgdGVzdAkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCByYW5kb21fcGVyZl90ZXN0KG9mZjY0X3Qga2lsbzY0LGxvbmcgbG9uZyByZWNsZW4sbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIHJhbmRvbV9wZXJmX3Rlc3Qoa2lsbzY0LHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTEsICpkYXRhMjsKI2VuZGlmCnsKCWRvdWJsZSByYW5kcmVhZHRpbWVbMl07Cglkb3VibGUgc3RhcnR0aW1lMjsKCWRvdWJsZSB3YWxsdGltZVsyXSwgY3B1dGltZVsyXTsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKI2lmIGRlZmluZWQgKGJzZDRfMikgfHwgZGVmaW5lZChXaW5kb3dzKQoJbG9uZyBsb25nIHJhbmQxLHJhbmQyLHJhbmQzOwojZW5kaWYKCXVuc2lnbmVkIGxvbmcgbG9uZyBiaWdfcmFuZDsKCWxvbmcgbG9uZyBqOwoJb2ZmNjRfdCBpLG51bXJlY3M2NDsKCWxvbmcgbG9uZyBJbmRleD0wOwoJaW50IGZsYWdzOwoJdW5zaWduZWQgbG9uZyBsb25nIHJhbmRyZWFkcmF0ZVsyXTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cgl2b2xhdGlsZSBjaGFyICpidWZmZXIxOwoJY2hhciAqd21hZGRyLCpuYnVmZjsKCWNoYXIgKm1hZGRyLCpmcmVlX2FkZHI7CglpbnQgZmQsd3ZhbDsKCWxvbmcgbG9uZyAqcmVjbnVtPSAwOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb289MDsKI2VuZGlmCiNpZmRlZiBBU1lOQ19JTwoJc3RydWN0IGNhY2hlICpnYz0wOwojZWxzZQoJbG9uZyBsb25nICpnYz0wOwojZW5kaWYKI2lmZGVmIE1FUlNFTk5FCiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW5pdFs0XT17MHgxMjM0NVVMTCwgMHgyMzQ1NlVMTCwgMHgzNDU2N1VMTCwgMHg0NTY3OFVMTH07CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoPTQ7CiNlbmRpZgoKCW1hZGRyPWZyZWVfYWRkcj0wOwoJbnVtcmVjczY0ID0gKGtpbG82NCoxMDI0KS9yZWNsZW47CiNpZmRlZiBNRVJTRU5ORQogICAgICAgaW5pdF9ieV9hcnJheTY0KGluaXQsIGxlbmd0aCk7CiNlbHNlCiNpZmRlZiBic2Q0XzIKICAgICAgICBzcmFuZCgwKTsKI2Vsc2UKI2lmZGVmIFdpbmRvd3MKICAgICAgICBzcmFuZCgwKTsKI2Vsc2UKICAgICAgICBzcmFuZDQ4KDApOwojZW5kaWYKI2VuZGlmCiNlbmRpZgogICAgICAgIHJlY251bSA9IChsb25nIGxvbmcgKiltYWxsb2Moc2l6ZW9mKCpyZWNudW0pKm51bXJlY3M2NCk7CiAgICAgICAgaWYgKHJlY251bSl7CiAgICAgICAgICAgICAvKiBwcmUtY29tcHV0ZSByYW5kb20gc2VxdWVuY2UgYmFzZWQgb24gCgkJRmlzY2hlci1ZYXRlcyAoS251dGgpIGNhcmQgc2h1ZmZsZSAqLwogICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBudW1yZWNzNjQ7IGkrKyl7CiAgICAgICAgICAgICAgICByZWNudW1baV0gPSBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IG51bXJlY3M2NDsgaSsrKSB7CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgdG1wOwojaWZkZWYgTUVSU0VOTkUKICAgICAgCSAgICAgICBiaWdfcmFuZD1nZW5yYW5kNjRfaW50NjQoKTsKI2Vsc2UKI2lmZGVmIGJzZDRfMgogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQogICAgICAgICAgICAgICBiaWdfcmFuZCA9IGxyYW5kNDgoKTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKICAgICAgICAgICAgICAgYmlnX3JhbmQgPSBiaWdfcmFuZCVudW1yZWNzNjQ7CiAgICAgICAgICAgICAgIHRtcCA9IHJlY251bVtpXTsKICAgICAgICAgICAgICAgcmVjbnVtW2ldID0gcmVjbnVtW2JpZ19yYW5kXTsKICAgICAgICAgICAgICAgcmVjbnVtW2JpZ19yYW5kXSA9IHRtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KCWVsc2UKCXsKCQlmcHJpbnRmKHN0ZGVyciwiUmFuZG9tIHVuaXF1ZW5lc3MgZmFsbGJhY2suXG4iKTsKCX0KCWZsYWdzID0gT19SRFdSOwojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgoJZmQ9MDsKCWlmKG9mbGFnKQoJCWZsYWdzIHw9IE9fU1lOQzsKI2lmIGRlZmluZWQoT19EU1lOQykKCWlmKG9kc3luYykKCQlmbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJZm9yKCBqPTA7IGo8MjsgaisrICkKCXsKCQlpZihqPT0wKQoJCQlmbGFncyB8PU9fQ1JFQVQ7CgkJaWYgKG5vX3dyaXRlICYmIChqID09IDEpKQoJCQljb250aW51ZTsKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJICAgICB3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCk7CgkJICAgICBjcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkgICAgIH0KCSAgICAgaWYoVWZsYWcpIC8qIFVubW91bnQgYW5kIHJlLW1vdW50IHRoZSBtb3VudHBvaW50ICovCgkgICAgIHsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkgICAgIH0KCSAgICAgaWYoKGZkID0gSV9PUEVOKGZpbGVuYW1lLCAoKGludClmbGFncyksMDY0MCkpPDApewoJCQlwcmludGYoIlxuQ2FuIG5vdCBvcGVuIHRlbXBvcmFyeSBmaWxlIGZvciByZWFkL3dyaXRlXG4iKTsKCQkJcGVycm9yKCJvcGVuIik7CgkJCWV4aXQoNjYpOwoJICAgICB9CiNpZmRlZiBBU1lOQ19JTwoJCWlmKGFzeW5jX2ZsYWcpCgkJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCgojaWZkZWYgVlhGUwoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQkJaWYodGVzdF9mb28gPT0gMCkKCQkJewoJCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQojZW5kaWYKCSAgICAgaWYobW1hcGZsYWcpCgkgICAgIHsKCQkJbWFkZHI9KGNoYXIgKilpbml0ZmlsZShmZCxmaWxlYnl0ZXM2NCwwLFBST1RfUkVBRHxQUk9UX1dSSVRFKTsKCSAgICAgfQoJICAgICBuYnVmZj1tYWluYnVmZmVyOwoJICAgICBpZihmZXRjaG9uKQoJCSAgIGZldGNoaXQobmJ1ZmYscmVjbGVuKTsKI2lmZGVmIE1FUlNFTk5FCiAgICAJICAgIGluaXRfYnlfYXJyYXk2NChpbml0LCBsZW5ndGgpOwojZWxzZQojaWZkZWYgYnNkNF8yCgkgICAgIHNyYW5kKDApOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgICAgICAgc3JhbmQoMCk7CiNlbHNlCiAgICAgICAgICAgICBzcmFuZDQ4KDApOwojZW5kaWYKI2VuZGlmCiNlbmRpZgoJICAgICBjb21wdXRlX3ZhbD0oZG91YmxlKTA7CgkgICAgIHN0YXJ0dGltZTIgPSB0aW1lX3NvX2ZhcigpOwoJICAgICBpZiAoIGo9PTAgKXsKCQlmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSB7CgkJCWlmKGNvbXB1dGVfZmxhZykKCQkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGNvbXB1dGVfdGltZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG11bHRpX2J1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ICs9cmVjbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEluZGV4ID4gKE1BWEJVRkZFUlNJWkUtcmVjbGVuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4PTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ1ZmYgPSBtYnVmZmVyICsgSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJaWYocHVyZ2UpCgkJCQlwdXJnZWl0KG5idWZmLHJlY2xlbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNudW0pIHsKCQkJCW9mZnNldDY0ID0gcmVjbGVuICogKGxvbmcgbG9uZylyZWNudW1baV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJZWxzZQoJCQl7CgojaWZkZWYgTUVSU0VOTkUKICAgICAgCQkJICAgYmlnX3JhbmQgPWdlbnJhbmQ2NF9pbnQ2NCgpOwoJCQkgICBvZmZzZXQ2NCA9IHJlY2xlbiAqIChiaWdfcmFuZCVudW1yZWNzNjQpOwojZWxzZQojaWZkZWYgYnNkNF8yCgkJCSAgIHJhbmQxPShsb25nIGxvbmcpcmFuZCgpOwoJCQkgICByYW5kMj0obG9uZyBsb25nKXJhbmQoKTsKCQkJICAgcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJCSAgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCiNpZmRlZiBXaW5kb3dzCgkJCSAgIHJhbmQxPShsb25nIGxvbmcpcmFuZCgpOwoJCQkgICByYW5kMj0obG9uZyBsb25nKXJhbmQoKTsKCQkJICAgcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJCSAgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCgkJCSAgIG9mZnNldDY0ID0gcmVjbGVuICogKGxyYW5kNDgoKSVudW1yZWNzNjQpOwojZW5kaWYKI2VuZGlmCiNlbmRpZgoJCQl9CgoJCQlpZiggIShoX2ZsYWcgfHwga19mbGFnIHx8IG1tYXBmbGFnKSkKCQkJewoJCQkgICBpZihJX0xTRUVLKCBmZCwgb2Zmc2V0NjQsIFNFRUtfU0VUICk8MCkKCQkJICAgewoJCQkJcGVycm9yKCJsc2VlayIpOwoJCQkJZXhpdCg2OCk7CgkJCSAgIH07CgkJCX0KCQkJaWYocmxvY2tpbmcpCgkJCXsKCQkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAxLCAoaW50KTEsCgkJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCQl9CgkJCWlmKG1tYXBmbGFnKQoJCQl7CgkJCQl3bWFkZHI9Jm1hZGRyW29mZnNldDY0XTsKCQkJCWZpbGxfYXJlYSgobG9uZyBsb25nKil3bWFkZHIsKGxvbmcgbG9uZyopbmJ1ZmYsKGxvbmcgbG9uZylyZWNsZW4pOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkgIGlmKGFzeW5jX2ZsYWcpCgkJCSAgewoJCQkgICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgICBhc3luY19yZWFkX25vX2NvcHkoZ2MsIChsb25nIGxvbmcpZmQsICZidWZmZXIxLCBvZmZzZXQ2NCxyZWNsZW4sCgkJCSAgICAJICAwTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgICBlbHNlCgkJCQkgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIChvZmZzZXQ2NCkscmVjbGVuLAoJCQkJCSAgICAJMExMLChudW1yZWNzNjQqcmVjbGVuKSwwTEwpOwoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewoJCSAgCSAgICAgaWYocmVhZChmZCwgKHZvaWQgKiluYnVmZiwgKHNpemVfdClyZWNsZW4pICE9IHJlY2xlbikKCQkgIAkgICAgIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkJIHByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrIGF0ICVsZFxuIiwKCQkJCQkgb2Zmc2V0NjQpOyAKI2Vsc2UKCQkJCSBwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayBhdCAlbGxkXG4iLAoJCQkJCSBvZmZzZXQ2NCk7IAojZW5kaWYKCQkJCSBwZXJyb3IoInJlYWQiKTsKCQkJCSBleGl0KDcwKTsKCQkgCSAgICAgfQoJCQkgIH0KCQkJfQoJCQlpZih2ZXJpZnkpewoJCQkgIGlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQkgIHsKCQkJCWlmKHZlcmlmeV9idWZmZXIoYnVmZmVyMSxyZWNsZW4sKG9mZjY0X3Qpb2Zmc2V0NjQvcmVjbGVuLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJCWV4aXQoNzEpOwoJCQkJfQoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewoJCQkJaWYodmVyaWZ5X2J1ZmZlcihuYnVmZixyZWNsZW4sKG9mZjY0X3Qpb2Zmc2V0NjQvcmVjbGVuLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJCWV4aXQoNzIpOwoJCQkJfQoJCQkgIH0KCQkJfQoJCQlpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkJCWFzeW5jX3JlbGVhc2UoZ2MpOwoJCQlpZihybG9ja2luZykKCQkJewoJCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJCX0KCQl9CgkgICAgIH0KCSAgICAgZWxzZQoJICAgICB7CgkJCWlmKHZlcmlmeSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKTApOwoJCQlmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSAKCQkJewoJCQkJaWYoY29tcHV0ZV9mbGFnKQoJCQkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGNvbXB1dGVfdGltZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIAlpZihtdWx0aV9idWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIAl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgIEluZGV4ICs9cmVjbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAgSW5kZXg9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgbmJ1ZmYgPSBtYnVmZmVyICsgSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY251bSkgewoJCQkJICBvZmZzZXQ2NCA9IHJlY2xlbiAqIChsb25nIGxvbmcpcmVjbnVtW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJICAgICAgICBlbHNlCgkJCSAgICAgICAgewojaWZkZWYgYnNkNF8yCgkJCQkgIHJhbmQxPShsb25nIGxvbmcpcmFuZCgpOwoJCQkJICByYW5kMj0obG9uZyBsb25nKXJhbmQoKTsKCQkJCSAgcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJCQkgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CgkJCQkgIG9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCiNpZmRlZiBXaW5kb3dzCgkJCQkgIHJhbmQxPShsb25nIGxvbmcpcmFuZCgpOwoJCQkJICByYW5kMj0obG9uZyBsb25nKXJhbmQoKTsKCQkJCSAgcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJCQkgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CgkJCQkgIG9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCgkJCQkgIG9mZnNldDY0ID0gcmVjbGVuICogKGxyYW5kNDgoKSVudW1yZWNzNjQpOwojZW5kaWYKI2VuZGlmCgkJCQl9CgkJCQlpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkJCXsKCQkJCQlmcmVlX2FkZHI9bmJ1ZmY9KGNoYXIgKiltYWxsb2MoKHNpemVfdClyZWNsZW4rcGFnZV9zaXplKTsKCQkJCQluYnVmZj0oY2hhciAqKSgoKGxvbmcpbmJ1ZmYrKGxvbmcpcGFnZV9zaXplKSAmIChsb25nKX4ocGFnZV9zaXplLTEpKTsKCQkJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxvZmZzZXQ2NC9yZWNsZW4pOwoJCQkJfQoJCQkJaWYocHVyZ2UpCgkJCQkJcHVyZ2VpdChuYnVmZixyZWNsZW4pOwoKCQkJCWlmKCh2ZXJpZnkgJiBkaWFnX3YpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxvZmZzZXQ2NC9yZWNsZW4pOwoKCQkJCWlmICghKGhfZmxhZyB8fCBrX2ZsYWcgfHwgbW1hcGZsYWcpKQoJCQkJewoJCQkJICBJX0xTRUVLKCBmZCwgb2Zmc2V0NjQsIFNFRUtfU0VUICk7CgkJCQl9CgkJCQlpZihybG9ja2luZykKCQkJCXsKCQkJCQlsb2NrX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCQkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCQkJfQoJCQkJaWYobW1hcGZsYWcpCgkJCQl7CgkJCQkJd21hZGRyPSZtYWRkcltvZmZzZXQ2NF07CgkJCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKW5idWZmLChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKXJlY2xlbik7CgkJCQkJaWYoIW1tYXBuc2ZsYWcpCgkJCQkJewoJCQkJCSAgCWlmKG1tYXBhc2ZsYWcpCgkJCQkJCSAgICAJbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX0FTWU5DKTsKCQkJCQkgIAlpZihtbWFwc3NmbGFnKQoJCQkJCSAgICAJCW1zeW5jKHdtYWRkciwoc2l6ZV90KXJlY2xlbixNU19TWU5DKTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCSAgCQlpZihhc3luY19mbGFnKQoJCQkJCXsKCQkJICAgICAJCSAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgIAkJICAgICAgYXN5bmNfd3JpdGVfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgb2Zmc2V0NjQsIAoJCQkJCSAgIAlkZXB0aCxmcmVlX2FkZHIpOwoJCQkJCSAgIGVsc2UKCQkJICAgICAgCQkJYXN5bmNfd3JpdGUoZ2MsIChsb25nIGxvbmcpZmQsIG5idWZmLCByZWNsZW4sIG9mZnNldDY0LCBkZXB0aCk7CgkJCSAgCQl9CgkJCSAgCQllbHNlCgkJCSAgCQl7CgkJCSAgCQkgIHd2YWw9d3JpdGUoZmQsIG5idWZmLChzaXplX3QpcmVjbGVuKTsKCQkJICAJCSAgaWYod3ZhbCAhPSByZWNsZW4pCgkJCSAgCQkgIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkJCQlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayBhdCAlbGRcbiIsCgkJCQkJCQlvZmZzZXQ2NCk7IAojZWxzZQoJCQkJCQlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayBhdCAlbGxkXG4iLAoJCQkJCQkJb2Zmc2V0NjQpOyAKI2VuZGlmCgkJCQkJCWlmKHd2YWw9PS0xKQoJCQkJCQkJcGVycm9yKCJ3cml0ZSIpOwoJCQkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQkgCQkgIH0KCQkJCQl9CgkJCQl9CgkJCQlpZihybG9ja2luZykKCQkJCXsKCQkJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTAsCgkJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJCX0KCQkJfQoJICAgICB9IAkvKiBlbmQgb2YgbW9kaWZpY2F0aW9ucwkqa2NvbGxpbnM6Mi01LTk2ICovCiNpZmRlZiBBU1lOQ19JTwoJICAgICBpZihhc3luY19mbGFnKQoJICAgICB7CgkJZW5kX2FzeW5jKGdjKTsKCSAgICAgICAgZ2M9MDsKICAgICAgICAgICAgIH0JCiNlbmRpZgoJICAgICBpZihpbmNsdWRlX2ZsdXNoKQoJICAgICB7CgkJaWYobW1hcGZsYWcpCgkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7LyogQ2xlYW4gdXAgYmVmb3JlIHJlYWQgc3RhcnRzIHJ1bm5pbmcgKi8KCQllbHNlCgkJewoJICAgICAJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoJICAgICB9CgkgICAgIGlmKGluY2x1ZGVfY2xvc2UpCgkgICAgIHsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCX0KCQl3dmFsPWNsb3NlKGZkKTsKCQlpZih3dmFsPT0tMSl7CgkJCXBlcnJvcigiY2xvc2UiKTsKCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQl9CgkgICAgIH0KCSAgICAgcmFuZHJlYWR0aW1lW2pdID0gKCh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMiktdGltZV9yZXMpLQoJCQljb21wdXRlX3ZhbDsKCSAgICAgaWYocmFuZHJlYWR0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCSAgICAgewoJCQlyYW5kcmVhZHRpbWVbal09dGltZV9yZXM7CgkJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCXJlc19wcm9iPTE7CgkgICAgIH0KCSAgICBpZighaW5jbHVkZV9jbG9zZSkKCSAgICB7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOy8qIENsZWFuIHVwIGJlZm9yZSByZWFkIHN0YXJ0cyBydW5uaW5nICovCgkJfQoJCWVsc2UKCQl7CgkgICAgIAkJd3ZhbD1mc3luYyhmZCk7CgkJCWlmKHd2YWw9PS0xKXsKCQkJCXBlcnJvcigiZnN5bmMiKTsKCQkJCXNpZ25hbF9oYW5kbGVyKCk7CgkJCX0KCQl9CgkJaWYobW1hcGZsYWcpCgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCXd2YWw9Y2xvc2UoZmQpOwoJCWlmKHd2YWw9PS0xKXsKCQkJcGVycm9yKCJjbG9zZSIpOwoJCQlzaWduYWxfaGFuZGxlcigpOwoJCX0KIAkgICAgfQogICAgICAgICAgICBpZihjcHV1dGlsZmxhZykKCSAgICB7CgkgICAgCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkgICAgCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWVbal0gPSAwLjA7CgkgICAgCXdhbGx0aW1lW2pdID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lW2pdOwoJCWlmICh3YWxsdGltZVtqXSA8IGNwdXRpbWVbal0pCgkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJICAgIH0KCSAgICBpZihyZXN0ZikKCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKICAgIAl9CglpZihPUFNfZmxhZyB8fCBNU19mbGFnKXsKCSAgIGZpbGVieXRlczY0PWZpbGVieXRlczY0L3JlY2xlbjsKCX0KICAgICAgICBmb3Ioaj0wO2o8MjtqKyspCiAgICAgICAgewoJICAgIGlmKG5vX3dyaXRlICYmIChqPT0xKSkKCSAgICB7CgkgICAgICAgIHJhbmRyZWFkcmF0ZVsxXSA9IDAuMDsKCQljb250aW51ZTsKCSAgICB9CgkgICAgaWYoTVNfZmxhZykKCSAgICB7CgkJcmFuZHJlYWRyYXRlW2pdPTEwMDAwMDAuMCoocmFuZHJlYWR0aW1lW2pdIC8gKGRvdWJsZSlmaWxlYnl0ZXM2NCk7CgkJY29udGludWU7CgkgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcmFuZHJlYWRyYXRlW2pdID0gCgkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKChkb3VibGUpIGZpbGVieXRlczY0IC8gcmFuZHJlYWR0aW1lW2pdKTsKICAgICAgICAgICAgfQoJICAgIGlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJcmFuZHJlYWRyYXRlW2pdID4+PSAxMDsKCX0KCS8qIE11c3Qgc2F2ZSB3YWxsdGltZSAmIGNwdXRpbWUgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IgZWFjaC9hbnkgY2VsbC4qLwogICAgICAgIGlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lWzBdLCBjcHV0aW1lWzBdKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXJhbmRyZWFkcmF0ZVswXSk7CiAgICAgICAgaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMV0sIGNwdXRpbWVbMV0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcmFuZHJlYWRyYXRlWzFdKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxkIixyYW5kcmVhZHJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxkIixyYW5kcmVhZHJhdGVbMV0pOwoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIiU4bGxkIixyYW5kcmVhZHJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxsZCIscmFuZHJlYWRyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZW5kaWYKCWlmKHJlY251bSkKCQlmcmVlKHJlY251bSk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHJldmVyc2VfcGVyZl90ZXN0CQkJCSAgICAgICAgCQkqLwovKiBSZXZlcnNlIHJlYWQgdGVzdAkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgcmV2ZXJzZV9wZXJmX3Rlc3Qob2ZmNjRfdCBraWxvNjQsbG9uZyBsb25nIHJlY2xlbixsb25nIGxvbmcgKmRhdGExLGxvbmcgbG9uZyAqZGF0YTIpCiNlbHNlCnZvaWQgcmV2ZXJzZV9wZXJmX3Rlc3Qoa2lsbzY0LHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTEsKmRhdGEyOwojZW5kaWYKewoJZG91YmxlIHJldnJlYWR0aW1lWzJdOwoJZG91YmxlIHN0YXJ0dGltZTI7Cglkb3VibGUgd2FsbHRpbWVbMl0sIGNwdXRpbWVbMl07Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglsb25nIGxvbmcgajsKCW9mZjY0X3QgaSxudW1yZWNzNjQ7Cglsb25nIGxvbmcgSW5kZXggPSAwOwoJdW5zaWduZWQgbG9uZyBsb25nIHJldnJlYWRyYXRlWzJdOwoJb2ZmNjRfdCBmaWxlYnl0ZXM2NDsKCW9mZjY0X3QgbG9ja19vZmZzZXQ9MDsKCWludCBmZCxvcGVuX2ZsYWdzOwoJY2hhciAqbWFkZHIsKndtYWRkcjsKCXZvbGF0aWxlIGNoYXIgKmJ1ZmZlcjE7CglpbnQgbHRlc3Q7CgljaGFyICpuYnVmZjsKI2lmIGRlZmluZWQoVlhGUykgfHwgZGVmaW5lZChzb2xhcmlzKQoJaW50IHRlc3RfZm9vPTA7CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCXN0cnVjdCBjYWNoZSAqZ2M9MDsKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCgoJbWFkZHI9d21hZGRyPTA7CglvcGVuX2ZsYWdzPU9fUkRPTkxZOwojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCW9wZW5fZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJb3Blbl9mbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCW9wZW5fZmxhZ3MgfD1PX1JTWU5DfE9fU1lOQzsKI2VuZGlmCgludW1yZWNzNjQgPSAoa2lsbzY0KjEwMjQpL3JlY2xlbjsKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCWZkID0gMDsKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCWZvciggaj0wOyBqPGx0ZXN0OyBqKysgKQoJewoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJIAlpZigoZmQgPSBJX09QRU4oZmlsZW5hbWUsIG9wZW5fZmxhZ3MsMCkpPDApewoJIAkJcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSBmb3IgcmVhZFxuIik7CgkgCQlwZXJyb3IoIm9wZW4iKTsKCSAJCWV4aXQoNzUpOwoJIAl9CiNpZmRlZiBBU1lOQ19JTwoJCWlmKGFzeW5jX2ZsYWcpCgkJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCgojaWZkZWYgVlhGUwoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQkJaWYodGVzdF9mb28gPT0gMCkKCQkJewoJCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQojZW5kaWYKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsZmlsZWJ5dGVzNjQsMCxQUk9UX1JFQUQpOwoJCX0KCQlmc3luYyhmZCk7CgkJbmJ1ZmY9bWFpbmJ1ZmZlcjsKCQltYnVmZmVyPW1haW5idWZmZXI7CgkJaWYoZmV0Y2hvbikKCQkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJCXN0YXJ0dGltZTIgPSB0aW1lX3NvX2ZhcigpOwoJCWlmICghKGhfZmxhZyB8fCBrX2ZsYWcgfHwgbW1hcGZsYWcpKQoJCXsKCQkgIGlmKGNoZWNrX2ZpbGVuYW1lKGZpbGVuYW1lKSkKCQkgIHsKCQkgIAlpZihJX0xTRUVLKCBmZCwgLXJlY2xlbiwgU0VFS19FTkQgKTwwKQoJCSAgCXsKCQkJCXBlcnJvcigibHNlZWsiKTsKCQkJCWV4aXQoNzcpOwoJCSAgCX07CgkJICB9CgkJICBlbHNlCgkJICB7CgkJICAJaWYoSV9MU0VFSyggZmQsIGZpbGVieXRlczY0LXJlY2xlbiwgU0VFS19TRVQgKTwwKQoJCSAgCXsKCQkJCXBlcnJvcigibHNlZWsiKTsKCQkJCWV4aXQoNzcpOwoJCSAgCX07CiAgCQkgIH0KCQl9CgkgICAgICAgIGNvbXB1dGVfdmFsPShkb3VibGUpMDsKCQlmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSAKCQl7CgkJCWlmKHJsb2NraW5nKQoJCQl7CgkJCQlsb2NrX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkxLAoJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJfQoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihtdWx0aV9idWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleD0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5idWZmID0gbWJ1ZmZlciArIEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICB9CgoJCQlpZihwdXJnZSkKCQkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCXdtYWRkciA9ICZtYWRkclsoKG51bXJlY3M2NC0xKS1pKSpyZWNsZW5dOwoJCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJCX0KCQkJZWxzZQoJCQlpZihhc3luY19mbGFnKQoJCQl7CgkJCSAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgICBhc3luY19yZWFkX25vX2NvcHkoZ2MsIChsb25nIGxvbmcpZmQsICZidWZmZXIxLCAoKCgobnVtcmVjczY0LTEpLWkpKnJlY2xlbikpLAoJCQkgICAgICAgICAgcmVjbGVuLCAtMUxMLChudW1yZWNzNjQqcmVjbGVuKSxkZXB0aCk7CgkJCSAgICBlbHNlCgkJCSAgICAgICBhc3luY19yZWFkKGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgKCgobnVtcmVjczY0LTEpLWkpKnJlY2xlbiksCgkJCSAgICAgICAJICByZWNsZW4sLTFMTCwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQl9ZWxzZQoJCQl7CgkJCQlpZihyZWFkKChpbnQpZmQsICh2b2lkKiluYnVmZiwgKHNpemVfdCkgcmVjbGVuKSAhPSByZWNsZW4pCgkJCQl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlbGRcbiIsIGkpOyAKI2Vsc2UKCQkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlbGxkXG4iLCBpKTsgCiNlbmRpZgoJCQkJCXBlcnJvcigicmVhZCIpOwoJCQkJCWV4aXQoNzkpOwoJCQkJfQoJCQl9CgkJCWlmKHZlcmlmeSl7CgkJCSAgIGlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQkgICB7CgkJCQlpZih2ZXJpZnlfYnVmZmVyKGJ1ZmZlcjEscmVjbGVuLChvZmY2NF90KShudW1yZWNzNjQtMSktaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCQlleGl0KDgwKTsKCQkJCX0KCQkJICAgfQoJCQkgICBlbHNlCgkJCSAgIHsKCQkJCWlmKHZlcmlmeV9idWZmZXIobmJ1ZmYscmVjbGVuLChvZmY2NF90KShudW1yZWNzNjQtMSktaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCQlleGl0KDgxKTsKCQkJCX0KCQkJICAgfQoJCQl9CgkJCWlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQkJYXN5bmNfcmVsZWFzZShnYyk7CgkJCWlmKHJsb2NraW5nKQoJCQl7CgkJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEsCgkJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCQl9CgkJCWlmICghKGhfZmxhZyB8fCBrX2ZsYWcgfHwgbW1hcGZsYWcpKQoJCQl7CgkJCSAgSV9MU0VFSyggZmQsIChvZmY2NF90KS0yKnJlY2xlbiwgU0VFS19DVVIgKTsKCQkJfQoJCX0KI2lmZGVmIEFTWU5DX0lPCgkJaWYoYXN5bmNfZmxhZykKCQl7CgkJCWVuZF9hc3luYyhnYyk7CgkJCWdjPTA7CgkJfQojZW5kaWYKCQlpZihpbmNsdWRlX2ZsdXNoKQkKCQl7CgkJCWlmKG1tYXBmbGFnKQoJCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsKCQkJZWxzZQoJCQkJZnN5bmMoZmQpOwoJCX0KCQlpZihpbmNsdWRlX2Nsb3NlKQoJCXsKCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCQl9CgkJCWNsb3NlKGZkKTsKCQl9CgkJcmV2cmVhZHRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUyKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHJldnJlYWR0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXJldnJlYWR0aW1lW2pdPSB0aW1lX3JlczsKCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJcmVzX3Byb2I9MTsKCQl9CgkJaWYoIWluY2x1ZGVfY2xvc2UpCgkJewoJCQlpZihtbWFwZmxhZykKCQkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7CgkJCWVsc2UKCQkJCWZzeW5jKGZkKTsKCQkJaWYobW1hcGZsYWcpCgkJCXsKCQkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCQl9CgkJCWNsb3NlKGZkKTsKCQl9CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lW2pdOwoJCQlpZiAoY3B1dGltZVtqXSA8IGNwdXRpbWVfcmVzKQoJCQkJY3B1dGltZVtqXSA9IDAuMDsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWVbal07CgkJCWlmICh3YWxsdGltZVtqXSA8IGNwdXRpbWVbal0pCgkJCSAgIHdhbGx0aW1lW2pdID0gY3B1dGltZVtqXTsKCQl9CgkJaWYocmVzdGYpCgkJCXNsZWVwKChpbnQpcmVzdF92YWwpOwogICAgICAgIH0KCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOwoJfQoJZm9yKGo9MDtqPGx0ZXN0O2orKyl7CgkJaWYoTVNfZmxhZykKCQl7CgkJCXJldnJlYWRyYXRlW2pdPTEwMDAwMDAuMCoocmV2cmVhZHRpbWVbal0gLyAoZG91YmxlKWZpbGVieXRlczY0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcmV2cmVhZHJhdGVbal0gPSAKCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSAoKGRvdWJsZSkgZmlsZWJ5dGVzNjQgLyByZXZyZWFkdGltZVtqXSk7CiAgICAgICAgICAgIH0KCQlpZighKE9QU19mbGFnIHx8IE1TX2ZsYWcpKQoJCQlyZXZyZWFkcmF0ZVtqXSA+Pj0gMTA7Cgl9CgkvKiBNdXN0IHNhdmUgd2FsbHRpbWUgJiBjcHV0aW1lIGJlZm9yZSBjYWxsaW5nIHN0b3JlX3ZhbHVlKCkgZm9yIGVhY2gvYW55IGNlbGwuKi8KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lWzBdLCBjcHV0aW1lWzBdKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXJldnJlYWRyYXRlWzBdKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxkIixyZXZyZWFkcmF0ZVswXSk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIiU4bGxkIixyZXZyZWFkcmF0ZVswXSk7CiNlbmRpZgoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHJld3JpdGVyZWNfcGVyZl90ZXN0CQkJCSAgICAgICAgCQkqLwovKiBSZS13cml0ZSB0aGUgc2FtZSByZWNvcmQgCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHJld3JpdGVyZWNfcGVyZl90ZXN0KG9mZjY0X3Qga2lsbzY0ICxsb25nIGxvbmcgcmVjbGVuLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCByZXdyaXRlcmVjX3BlcmZfdGVzdChraWxvNjQgLHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTEsKmRhdGEyOwojZW5kaWYKewoJZG91YmxlIHdyaXRlaW50aW1lOwoJZG91YmxlIHN0YXJ0dGltZTE7Cglkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglsb25nIGxvbmcgaTsKCW9mZjY0X3QgbnVtcmVjczY0OwoJbG9uZyBsb25nIGZsYWdzOwoJbG9uZyBsb25nIEluZGV4PTA7Cgl1bnNpZ25lZCBsb25nIGxvbmcgd3JpdGVpbnJhdGU7CglvZmY2NF90IGZpbGVieXRlczY0OwoJb2ZmNjRfdCBsb2NrX29mZnNldD0wOwoJaW50IGZkLHd2YWw7CgljaGFyICptYWRkcjsKCWNoYXIgKndtYWRkciwqZnJlZV9hZGRyLCpuYnVmZjsKI2lmIGRlZmluZWQoVlhGUykgfHwgZGVmaW5lZChzb2xhcmlzKQoJaW50IHRlc3RfZm9vPTA7CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCXN0cnVjdCBjYWNoZSAqZ2M9MDsKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCgoJd2FsbHRpbWU9Y3B1dGltZT0wOwoJbWFkZHI9d21hZGRyPWZyZWVfYWRkcj1uYnVmZj0wOwoJbnVtcmVjczY0ID0gKGtpbG82NCoxMDI0KS9yZWNsZW47CglmaWxlYnl0ZXM2NCA9IG51bXJlY3M2NCpyZWNsZW47Ci8qCWZsYWdzID0gT19SRFdSfE9fQ1JFQVR8T19UUlVOQzsqLwoJZmxhZ3MgPSBPX1JEV1J8T19DUkVBVDsKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKCWlmKG9mbGFnKQoJCWZsYWdzIHw9IE9fU1lOQzsKI2lmIGRlZmluZWQoT19EU1lOQykKCWlmKG9kc3luYykKCQlmbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgovKgoJaWYgKCFub191bmxpbmspCgl7CgkgICBpZihjaGVja19maWxlbmFtZShmaWxlbmFtZSkpCgkJdW5saW5rKGZpbGVuYW1lKTsKCX0KKi8KCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJewoJCXB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJfQogICAgICAgIGlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgKGludClmbGFncywwNjQwKSk8MCkKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSAlcyBmb3Igd3JpdGUuXG4iLGZpbGVuYW1lKTsKCQkgICAgcGVycm9yKCJvcGVuIik7CiAgICAgICAgICAgICAgICAgICAgZXhpdCg4NCk7CiAgICAgICAgfQojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KI2VuZGlmCglpZihtbWFwZmxhZykKCXsKCQltYWRkcj0oY2hhciAqKWluaXRmaWxlKGZkLGZpbGVieXRlczY0LDEsUFJPVF9SRUFEfFBST1RfV1JJVEUpOwoJfQojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgkJYXN5bmNfaW5pdCgmZ2MsZmQsZGlyZWN0X2ZsYWcpOwojZW5kaWYKCXd2YWw9ZnN5bmMoZmQpOwoJaWYod3ZhbD09LTEpewoJCXBlcnJvcigiZnN5bmMiKTsKCQlzaWduYWxfaGFuZGxlcigpOwoJfQoJbmJ1ZmY9bWFpbmJ1ZmZlcjsKCW1idWZmZXI9bWFpbmJ1ZmZlcjsKCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJLyoKCXd2YWw9d3JpdGUoZmQsIG5idWZmLCAoc2l6ZV90KSByZWNsZW4pOwoJaWYod3ZhbCAhPSByZWNsZW4pCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCSAgICAJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxkLCBmZD0gJWRcbiIsIDAsIGZkKTsKI2Vsc2UKCSAgICAJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCAwLCBmZCk7CiNlbmRpZgoJCWlmKHd2YWw9PS0xKQoJCQlwZXJyb3IoIndyaXRlIik7CgkJc2lnbmFsX2hhbmRsZXIoKTsKCX0KCSovCglpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LChsb25nIGxvbmcpMCk7CglzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKTsKCQljcHV0aW1lICA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwogICAgICAgIAlpZihtdWx0aV9idWZmZXIpCiAgICAgICAgCXsKICAgICAgICAgICAgICAgIAlJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoSW5kZXggPiAoTUFYQlVGRkVSU0laRS1yZWNsZW4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4PTA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5idWZmID0gbWJ1ZmZlciArIEluZGV4OwogICAgICAgICAgICAgICAgfQoJCWlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCXsKCQkJZnJlZV9hZGRyPW5idWZmPShjaGFyICopbWFsbG9jKChzaXplX3QpcmVjbGVuK3BhZ2Vfc2l6ZSk7CgkJCW5idWZmPShjaGFyICopKCgobG9uZyluYnVmZisobG9uZylwYWdlX3NpemUpICYgKGxvbmcpfihwYWdlX3NpemUtMSkpOwoJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQlmaWxsX2J1ZmZlcihuYnVmZixyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnksKGxvbmcgbG9uZykwKTsKCQl9CgkJaWYoKHZlcmlmeSAmIGRpYWdfdikgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKTApOwoJCWlmKHB1cmdlKQoJCQlwdXJnZWl0KG5idWZmLHJlY2xlbik7CgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbaSpyZWNsZW5dOwoJCQlmaWxsX2FyZWEoKGxvbmcgbG9uZyopbmJ1ZmYsKGxvbmcgbG9uZyopd21hZGRyLChsb25nIGxvbmcpcmVjbGVuKTsKCQkJaWYoIW1tYXBuc2ZsYWcpCgkJCXsKCQkJICBpZihtbWFwYXNmbGFnKQoJCQkgICAgbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX0FTWU5DKTsKCQkJICBpZihtbWFwc3NmbGFnKQoJCQkgICAgbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX1NZTkMpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSAgaWYoYXN5bmNfZmxhZykKCQkJICB7CgkJCSAgICAgaWYobm9fY29weV9mbGFnKQoJCQkgICAgICAgYXN5bmNfd3JpdGVfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgKGkqcmVjbGVuKSwgZGVwdGgsZnJlZV9hZGRyKTsKCQkJICAgICBlbHNlCgkJCSAgICAgICBhc3luY193cml0ZShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgKGkqcmVjbGVuKSwgZGVwdGgpOwoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewoJCQkgICAgICAgd3ZhbD13cml0ZShmZCwgbmJ1ZmYsIChzaXplX3QpIHJlY2xlbik7CgkJCSAgICAgICBpZih3dmFsICE9IHJlY2xlbikKCQkJICAgICAgIHsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCSAgICAJCSAgIHByaW50ZigiXG5FcnJvciB3cml0aW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLCBmZCk7CiNlbHNlCgkJICAgIAkJICAgcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLCBmZCk7CiNlbmRpZgoJCQkJICAgaWYod3ZhbD09LTEpCgkJCQkgICAJcGVycm9yKCJ3cml0ZSIpOwoJCQkJICAgc2lnbmFsX2hhbmRsZXIoKTsKCQkJICAgICAgIH0KCQkJICB9CgkJfQoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMCwgKGludCkwLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQlpZiAoIShoX2ZsYWcgfHwga19mbGFnIHx8IG1tYXBmbGFnKSkKCQl7CgkJICBJX0xTRUVLKGZkLCAob2ZmNjRfdCkwLFNFRUtfU0VUKTsKCQl9Cgl9CgojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7LyogQ2xlYW4gdXAgYmVmb3JlIHJlYWQgc3RhcnRzIHJ1bm5pbmcgKi8KCQllbHNlCgkJewoJCQl3dmFsPWZzeW5jKGZkKTsKCQkJaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJmc3luYyIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCX0KCX0KCWlmKGluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCXd2YWw9Y2xvc2UoZmQpOwoJCWlmKHd2YWw9PS0xKXsKCQkJcGVycm9yKCJjbG9zZSIpOwoJCQlzaWduYWxfaGFuZGxlcigpOwoJCX0KCX0KCXdyaXRlaW50aW1lID0gKCh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpLQoJCWNvbXB1dGVfdmFsOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJY3B1dGltZSAgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZTsKCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lOwoJCWlmICh3YWxsdGltZSA8IGNwdXRpbWUpCgkJICAgd2FsbHRpbWUgPSBjcHV0aW1lOwoJfQoJaWYod3JpdGVpbnRpbWUgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCXdyaXRlaW50aW1lPSB0aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsvKiBDbGVhbiB1cCBiZWZvcmUgcmVhZCBzdGFydHMgcnVubmluZyAqLwoJCWVsc2UKCQl7CgkJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoJCWlmKG1tYXBmbGFnKQoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKWZpbGVieXRlczY0KTsKCQl3dmFsPWNsb3NlKGZkKTsKCQlpZih3dmFsPT0tMSl7CgkJCXBlcnJvcigiY2xvc2UiKTsKCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQl9CgoJfQoKCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOwoJfQoJaWYoTVNfZmxhZykKCXsKCQl3cml0ZWlucmF0ZT0xMDAwMDAwLjAqKHdyaXRlaW50aW1lIC8gKGRvdWJsZSlmaWxlYnl0ZXM2NCk7Cgl9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICAgICB3cml0ZWlucmF0ZSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHdyaXRlaW50aW1lKTsKICAgICAgfQoJaWYoIShPUFNfZmxhZyB8fCBNU19mbGFnKSkKCQl3cml0ZWlucmF0ZSA+Pj0gMTA7CgkvKiBNdXN0IHNhdmUgd2FsbHRpbWUgJiBjcHV0aW1lIGJlZm9yZSBjYWxsaW5nIHN0b3JlX3ZhbHVlKCkgZm9yIGVhY2gvYW55IGNlbGwuKi8KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lLCBjcHV0aW1lKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXdyaXRlaW5yYXRlKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIgJThsZCIsd3JpdGVpbnJhdGUpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIgJThsbGQiLHdyaXRlaW5yYXRlKTsKI2VuZGlmCglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKCWlmKHJlc3RmKQoJCXNsZWVwKChpbnQpcmVzdF92YWwpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiByZWFkX3N0cmlkZV9wZXJmX3Rlc3QJCQkgICAgICAgIAkJKi8KLyogUmVhZCB3aXRoIGEgY29uc3RhbnQgc3RyaWRlIHRlc3QJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCByZWFkX3N0cmlkZV9wZXJmX3Rlc3Qob2ZmNjRfdCBraWxvczY0LGxvbmcgbG9uZyByZWNsZW4sbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIHJlYWRfc3RyaWRlX3BlcmZfdGVzdChraWxvczY0LHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvczY0Owpsb25nIGxvbmcgcmVjbGVuOwpsb25nIGxvbmcgKmRhdGExLCAqZGF0YTI7CiNlbmRpZgp7Cglkb3VibGUgc3RyaWRlaW50aW1lOwoJZG91YmxlIHN0YXJ0dGltZTE7Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7CglvZmY2NF90IG51bXJlY3M2NCxjdXJyZW50X3Bvc2l0aW9uOwoJbG9uZyBsb25nIEluZGV4ID0gMDsKCW9mZjY0X3QgaSxzYXZlcG9zNjQgPSAwOwoJdW5zaWduZWQgbG9uZyBsb25nIHN0cmlkZWlucmF0ZTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cglsb25nIGxvbmcgdXU7CglvZmY2NF90IHN0cmlwZXdyYXA9MDsKCWludCBmZCxvcGVuX2ZsYWdzOwoJdm9sYXRpbGUgY2hhciAqYnVmZmVyMTsKCWNoYXIgKm5idWZmOwoJY2hhciAqbWFkZHI7CgljaGFyICp3bWFkZHI7CiNpZiBkZWZpbmVkKFZYRlMpIHx8IGRlZmluZWQoc29sYXJpcykKCWludCB0ZXN0X2Zvbz0wOwojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CiNlbHNlCglsb25nIGxvbmcgKmdjPTA7CiNlbmRpZgoKCXdhbGx0aW1lPWNwdXRpbWU9MDsKCW5idWZmPW1hZGRyPXdtYWRkcj0wOwoJb3Blbl9mbGFncz1PX1JET05MWTsKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlvcGVuX2ZsYWdzIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCW9wZW5fZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlvcGVuX2ZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoJbmV4dDY0ID0gKG9mZjY0X3QpMDsKCW51bXJlY3M2NCA9IChraWxvczY0KjEwMjQpL3JlY2xlbjsKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJewoJCXB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJfQogICAgICAgIGlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgKGludClvcGVuX2ZsYWdzLCAwNjQwKSk8MCkKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSBmb3IgcmVhZFxuIik7CgkJICAgIHBlcnJvcigib3BlbiIpOwogICAgICAgICAgICAgICAgICAgIGV4aXQoODYpOwogICAgICAgIH0KI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCgojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KI2VuZGlmCglpZihtbWFwZmxhZykKCXsKCQltYWRkcj0oY2hhciAqKWluaXRmaWxlKGZkLGZpbGVieXRlczY0LDAsUFJPVF9SRUFEKTsKCX0KCWZzeW5jKGZkKTsKCWN1cnJlbnRfcG9zaXRpb249MDsKCW5idWZmPW1haW5idWZmZXI7CgltYnVmZmVyPW1haW5idWZmZXI7CglpZihmZXRjaG9uKQoJCWZldGNoaXQobmJ1ZmYscmVjbGVuKTsKCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJd2FsbHRpbWUgPSB0aW1lX3NvX2ZhcigpOwoJCWNwdXRpbWUgID0gY3B1dGltZV9zb19mYXIoKTsKCX0KCWZvcihpPTA7IGk8bnVtcmVjczY0OyBpKyspewoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkxLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQlpZihjb21wdXRlX2ZsYWcpCgkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGNvbXB1dGVfdGltZSk7CiAgICAgICAgCWlmKG11bHRpX2J1ZmZlcikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICBJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg9MDsKICAgICAgICAgICAgICAgICAgICAgICBuYnVmZiA9IG1idWZmZXIgKyBJbmRleDsKICAgICAgICAgICAgICAgIH0KCQlpZihwdXJnZSkKCQkJcHVyZ2VpdChuYnVmZixyZWNsZW4pOwoJCWlmKHZlcmlmeSkKCQl7CgkJCXNhdmVwb3M2ND1jdXJyZW50X3Bvc2l0aW9uL3JlY2xlbjsKCQl9CgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbY3VycmVudF9wb3NpdGlvbl07CgkJCWZpbGxfYXJlYSgobG9uZyBsb25nKil3bWFkZHIsKGxvbmcgbG9uZyopbmJ1ZmYsKGxvbmcgbG9uZylyZWNsZW4pOwoJCX0KCQllbHNlCgkJewoJCQlpZihhc3luY19mbGFnKQoJCQl7CgkJCSAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgIGFzeW5jX3JlYWRfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgJmJ1ZmZlcjEsIGN1cnJlbnRfcG9zaXRpb24sCgkJCSAgICAgIAlyZWNsZW4sIHN0cmlkZSwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQkgICAgZWxzZQoJCQkgICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIGN1cnJlbnRfcG9zaXRpb24sIHJlY2xlbiwKCQkJICAgIAkgc3RyaWRlLChudW1yZWNzNjQqcmVjbGVuKSxkZXB0aCk7CgkJICAgCX0KCQkJZWxzZQoJCQl7CgkJICAgCSAgaWYoKHV1PXJlYWQoKGludClmZCwgKHZvaWQqKW5idWZmLCAoc2l6ZV90KSByZWNsZW4pKSAhPSByZWNsZW4pCgkJICAgCSAgewojaWZkZWYgTk9fUFJJTlRfTExECgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxkLCBmZD0gJWQgRmlsZW5hbWUgJXMgUmVhZCByZXR1cm5lZCAlbGRcbiIsIGksIGZkLGZpbGVuYW1lLHV1KTsKCQkgICAgCQlwcmludGYoIlxuU2Vla2VkIHRvICVsZCBSZWNsZW4gPSAlbGRcbiIsIHNhdmVwb3M2NCxyZWNsZW4pOwojZWxzZQoJCSAgICAJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrICVsbGQsIGZkPSAlZCBGaWxlbmFtZSAlcyBSZWFkIHJldHVybmVkICVsbGRcbiIsIGksIGZkLGZpbGVuYW1lLHV1KTsKCQkgICAgCQlwcmludGYoIlxuU2Vla2VkIHRvICVsbGQgUmVjbGVuID0gJWxsZFxuIiwgc2F2ZXBvczY0LHJlY2xlbik7CiNlbmRpZgoJCQkJcGVycm9yKCJyZWFkIik7CgkJICAgIAkJZXhpdCg4OCk7CgkJICAgCSAgfQoJCQl9CgkJfQoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMCwgKGludCkxLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQljdXJyZW50X3Bvc2l0aW9uKz1yZWNsZW47CgkJaWYodmVyaWZ5KXsKCQkJaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCXsKCQkJICAgaWYodmVyaWZ5X2J1ZmZlcihidWZmZXIxLHJlY2xlbiwgKG9mZjY0X3Qpc2F2ZXBvczY0ICxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWV4aXQoODkpOwoJCQkgICB9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCSAgIGlmKHZlcmlmeV9idWZmZXIobmJ1ZmYscmVjbGVuLCAob2ZmNjRfdClzYXZlcG9zNjQgLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJZXhpdCg5MCk7CgkJCSAgIH0KCQkJfQoJCX0KCQlpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkJYXN5bmNfcmVsZWFzZShnYyk7CgkJCQoJCS8qIFRoaXMgaXMgYSBiaXQgdHJpY2t5LiAgVGhlIGdvYWwgaXMgdG8gcmVhZCB3aXRoIGEgc3RyaWRlIHRocm91Z2gKCQkgICB0aGUgZmlsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB5b3UgbmVlZCB0byB0b3VjaCBhbGwgb2YgdGhlIGZpbGUKCQkgICBibG9ja3MuIFNvLi4gdGhlIGZpcnN0IHBhc3MgdGhyb3VnaCB5b3UgcmVhZCB3aXRoIGEgY29uc3RhbnQgc3RyaWRlLgoJCSAgIFdoZW4geW91IGhpdCBlb2YgdGhlbiBhZGQgMSB0byB0aGUgYmVnaW5uaW5nIG9mZnNldCBvZiB0aGUgbmV4dAoJCSAgIHRpbWUgdGhyb3VnaCB0aGUgZmlsZS4gVGhlIHJ1YiBoZXJlIGlzIHRoYXQgZXZlbnR1YWxseSBhZGRpbmcKCQkgICAxIHdpbGwgY2F1c2UgdGhlIGluaXRpYWwgc3RhcnQgbG9jYXRpb24gcGx1cyB0aGUgU1RSSURFIHRvIGJlCgkJICAgYmV5b25kIGVvZi4gU28uLi4gd2hlbiB0aGlzIGhhcHBlbnMgdGhlIGluaXRpYWwgb2Zmc2V0IGZvciB0aGUKCQkgICBuZXh0IHBhc3MgbmVlZHMgdG8gYmUgc2V0IGJhY2sgdG8gMC4KCQkqLwoJCWlmKGN1cnJlbnRfcG9zaXRpb24gKyAoc3RyaWRlICogcmVjbGVuKSA+PSAobnVtcmVjczY0ICogcmVjbGVuKS1yZWNsZW4pIAoJCXsKCQkJY3VycmVudF9wb3NpdGlvbj0wOwoKCQkJc3RyaXBld3JhcCsrOwoJCQkgIAoJCQlpZihudW1yZWNzNjQgPD0gc3RyaWRlKQoJCQl7CgkJCQljdXJyZW50X3Bvc2l0aW9uPTA7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQljdXJyZW50X3Bvc2l0aW9uID0gKG9mZjY0X3QpKChzdHJpcGV3cmFwKSVudW1yZWNzNjQpKnJlY2xlbjsKCQkJfQoKCQkJaWYgKCEoaF9mbGFnIHx8IGtfZmxhZyB8fCBtbWFwZmxhZykpCgkJCXsKCQkJICBpZihJX0xTRUVLKGZkLGN1cnJlbnRfcG9zaXRpb24sU0VFS19TRVQpPDApCgkJCSAgewoJCQkJcGVycm9yKCJsc2VlayIpOwoJCQkJZXhpdCg5MSk7CgkJCSAgfQoJCQl9CgkJfQoJCWVsc2UJCQkKCQl7CgkJCWN1cnJlbnRfcG9zaXRpb24rPShzdHJpZGUqcmVjbGVuKS1yZWNsZW47CgkJCWlmICghKGhfZmxhZyB8fCBrX2ZsYWcgfHwgbW1hcGZsYWcpKQoJCQl7CgkJCSAgaWYoSV9MU0VFSyhmZCxjdXJyZW50X3Bvc2l0aW9uLFNFRUtfU0VUKTwwKQoJCQkgIHsKCQkJCXBlcnJvcigibHNlZWsiKTsKCQkJCWV4aXQoOTMpOwoJCQkgIH07CgkJCX0KCQl9Cgl9CglpZihjcHV1dGlsZmxhZykKCXsKCQljcHV0aW1lICA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lOwoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7CgkJd2FsbHRpbWUgPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWU7CgkJaWYgKHdhbGx0aW1lIDwgY3B1dGltZSkKCQkgICB3YWxsdGltZSA9IGNwdXRpbWU7Cgl9CgojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7CgkJZWxzZQoJCQlmc3luYyhmZCk7Cgl9CglpZihpbmNsdWRlX2Nsb3NlKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJfQoJCWNsb3NlKGZkKTsKCX0KCXN0cmlkZWludGltZSA9ICgodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzKQoJCS1jb21wdXRlX3ZhbDsKCWlmKHN0cmlkZWludGltZSA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJc3RyaWRlaW50aW1lPSB0aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsKCQllbHNlCgkJCWZzeW5jKGZkKTsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCX0KCQljbG9zZShmZCk7Cgl9CgoJaWYoT1BTX2ZsYWcgfHwgTVNfZmxhZyl7CgkgICBmaWxlYnl0ZXM2ND1maWxlYnl0ZXM2NC9yZWNsZW47Cgl9CglpZihNU19mbGFnKQoJewoJCXN0cmlkZWlucmF0ZT0xMDAwMDAwLjAqKHN0cmlkZWludGltZSAvIChkb3VibGUpZmlsZWJ5dGVzNjQpOwoJfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAgICAgc3RyaWRlaW5yYXRlID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgKChkb3VibGUpIGZpbGVieXRlczY0IC8gc3RyaWRlaW50aW1lKTsKICAgICAgfQoJaWYoIShPUFNfZmxhZyB8fCBNU19mbGFnKSkKCQlzdHJpZGVpbnJhdGUgPj49IDEwOwoJLyogTXVzdCBzYXZlIHdhbGx0aW1lICYgY3B1dGltZSBiZWZvcmUgY2FsbGluZyBzdG9yZV92YWx1ZSgpIGZvciBlYWNoL2FueSBjZWxsLiovCglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZSwgY3B1dGltZSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdClzdHJpZGVpbnJhdGUpOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiAlOGxkIixzdHJpZGVpbnJhdGUpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIgJThsbGQiLHN0cmlkZWlucmF0ZSk7CiNlbmRpZgoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7CglpZihyZXN0ZikKCQlzbGVlcCgoaW50KXJlc3RfdmFsKTsKfQoKI2lmZGVmIEhBVkVfUFJFQUQKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogcHdyaXRlX3BlcmZfdGVzdAkJCQkgICAgICAgIAkJKi8KLyogcHdyaXRlIGFuZCByZS13cml0ZSB0ZXN0CQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHB3cml0ZV9wZXJmX3Rlc3Qob2ZmNjRfdCBraWxvczY0LGxvbmcgbG9uZyByZWNsZW4sbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIHB3cml0ZV9wZXJmX3Rlc3Qoa2lsb3M2NCxyZWNsZW4sZGF0YTEsZGF0YTIpCm9mZjY0X3Qga2lsb3M2NDsKbG9uZyBsb25nIHJlY2xlbjsKbG9uZyBsb25nICpkYXRhMSwqZGF0YTI7CiNlbmRpZgp7Cglkb3VibGUgcHdyaXRldGltZVsyXTsKCWRvdWJsZSBzdGFydHRpbWUxOwoJZG91YmxlIHdhbGx0aW1lWzJdLCBjcHV0aW1lWzJdOwoJZG91YmxlIGNvbXB1dGVfdmFsID0gKGRvdWJsZSkwOwoJbG9uZyBsb25nIGksajsKCWxvbmcgbG9uZyBJbmRleCA9IDA7Cgl1bnNpZ25lZCBsb25nIGxvbmcgcHdyaXRlcmF0ZVsyXTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7Cglsb25nIGxvbmcgZmxhZ3NfaGVyZSA9IDA7CglpbnQgZmQsbHRlc3Qsd3ZhbDsKCW9mZjY0X3QgbnVtcmVjczY0LHRyYWpfb2Zmc2V0OwoJb2ZmNjRfdCBsb2NrX29mZnNldD0wOwoJbG9uZyBsb25nIHRyYWpfc2l6ZTsKI2lmIGRlZmluZWQoVlhGUykgfHwgZGVmaW5lZChzb2xhcmlzKQoJaW50IHRlc3RfZm9vPTA7CiNlbmRpZgoJY2hhciAqbmJ1ZmY7CgoJdHJhal9vZmZzZXQ9MDsKCW5idWZmPW1haW5idWZmZXI7CglpZih3X3RyYWpfZmxhZykKCXsKCQlmaWxlYnl0ZXM2NCA9IHdfdHJhal9mc2l6ZTsKCQludW1yZWNzNjQ9d190cmFqX29wczsKCX0KCWVsc2UKCXsKCQludW1yZWNzNjQgPSAoa2lsb3M2NCoxMDI0KS9yZWNsZW47CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoJZmQgPSAwOwoJaWYob2ZsYWcpewoJCWZsYWdzX2hlcmUgPSBPX1NZTkN8T19SRFdSOwoJfQoJZWxzZQoJewoJCWZsYWdzX2hlcmUgPSBPX1JEV1I7Cgl9CiNpZiBkZWZpbmVkKE9fRFNZTkMpCglpZihvZHN5bmMpCgkJZmxhZ3NfaGVyZSB8PSBPX0RTWU5DOwojZW5kaWYKCiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFnc19oZXJlIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFnc19oZXJlIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzX2hlcmUgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCglpZihub3JldGVzdCkKCQlsdGVzdD0xOwoJZWxzZQoJCWx0ZXN0PTI7Cglmb3IoIGo9MDsgajxsdGVzdDsgaisrKQoJewoJCWlmKGo9PTApCgkJCWZsYWdzX2hlcmUgfD1PX0NSRUFUOwoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJCWlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgKGludClmbGFnc19oZXJlLDA2NDApKTwwKQoJCXsKCQkJcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wIGZpbGU6ICVzXG4iLCAKCQkJCWZpbGVuYW1lKTsKCQkJcGVycm9yKCJvcGVuIik7CgkJCWV4aXQoOTcpOwoJCX0KI2lmZGVmIFZYRlMKCQlpZihkaXJlY3RfZmxhZykKCQl7CgkJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJCWlmKHRlc3RfZm9vID09IDApCgkJCXsKCQkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJCWV4aXQoMyk7CgkJCX0KCQl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwoJCQlpZih0ZXN0X2ZvbyAhPSAwKQoJCQl7CgkJCQlpZighY2xpZW50X2lvem9uZSkKCQkJCQlwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCgkJZnN5bmMoZmQpOwoJCW5idWZmPW1haW5idWZmZXI7CgkJbWJ1ZmZlcj1tYWluYnVmZmVyOwoJCWlmKGZldGNob24pCgkJCWZldGNoaXQobmJ1ZmYscmVjbGVuKTsKCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKTApOwoJCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJICAgICAgICBjb21wdXRlX3ZhbD0oZG91YmxlKTA7CgkJaWYod190cmFqX2ZsYWcpCgkJewoJCQlyZXdpbmQod190cmFqX2ZkKTsKCQl9CgkJZm9yKGk9MDsgaTxudW1yZWNzNjQ7IGkrKyl7CgkJCWlmKHdfdHJhal9mbGFnKQoJCQl7CgkJCQl0cmFqX29mZnNldD1nZXRfdHJhaih3X3RyYWpfZmQsIChsb25nIGxvbmcgKikmdHJhal9zaXplLChmbG9hdCAqKSZjb21wdXRlX3RpbWUsKGxvbmcpMSk7CgkJCQlyZWNsZW49dHJhal9zaXplOwoJCQl9CgkJCWVsc2UKCQkJCXRyYWpfb2Zmc2V0PShpICogcmVjbGVuKTsKCQkJaWYocmxvY2tpbmcpCgkJCXsKCQkJCWxvY2tfb2Zmc2V0PXRyYWpfb2Zmc2V0OwoJCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkwLAoJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJfQoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihtdWx0aV9idWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleD0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5idWZmID0gbWJ1ZmZlciArIEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICB9CgkJCWlmKCh2ZXJpZnkgJiYgZGlhZ192KSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxpKTsKCQkJaWYocHVyZ2UpCgkJCQlwdXJnZWl0KG5idWZmLHJlY2xlbik7CgkJCWlmKElfUFdSSVRFKGZkLCBuYnVmZiwgcmVjbGVuLCB0cmFqX29mZnNldCkgIT0gcmVjbGVuKQoJCQl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJICAgIAlwcmludGYoIlxuRXJyb3IgcHdyaXRpbmcgYmxvY2sgJWxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2Vsc2UKCQkJICAgIAlwcmludGYoIlxuRXJyb3IgcHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbmRpZgoJCQkJcGVycm9yKCJwd3JpdGUiKTsKCQkJCXNpZ25hbF9oYW5kbGVyKCk7CgkJCX0KCQkJaWYocmxvY2tpbmcpCgkJCXsKCQkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMCwKCQkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJCX0KCQl9CgkJaWYoaW5jbHVkZV9mbHVzaCkKCQl7CgkJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoJCWlmKGluY2x1ZGVfY2xvc2UpCgkJewoJCQl3dmFsPWNsb3NlKGZkKTsKCQkJaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJjbG9zZSIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCX0KCQlwd3JpdGV0aW1lW2pdID0gKCh0aW1lX3NvX2ZhcigpIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpCgkJCS1jb21wdXRlX3ZhbDsKCQlpZihwd3JpdGV0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXB3cml0ZXRpbWVbal09IHRpbWVfcmVzOwoJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCXJlY19wcm9iID0gcmVjbGVuOwoJCQlyZXNfcHJvYj0xOwoJCX0KCQlpZighaW5jbHVkZV9jbG9zZSkKCQl7CgkJCXd2YWw9ZnN5bmMoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImZzeW5jIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJCXd2YWw9Y2xvc2UoZmQpOwoJCQlpZih3dmFsPT0tMSl7CgkJCQlwZXJyb3IoImNsb3NlIik7CgkJCQlzaWduYWxfaGFuZGxlcigpOwoJCQl9CgkJfQoKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkJCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCQljcHV0aW1lW2pdID0gMC4wOwoJCQl3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZVtqXTsKCQkJaWYgKHdhbGx0aW1lW2pdIDwgY3B1dGltZVtqXSkKCQkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJCX0KCQlpZihyZXN0ZikKCQkJc2xlZXAoKGludClyZXN0X3ZhbCk7Cgl9CglpZihPUFNfZmxhZyB8fCBNU19mbGFnKXsKCSAgIGZpbGVieXRlczY0PWZpbGVieXRlczY0L3JlY2xlbjsKCX0KCWZvcihqPTA7ajxsdGVzdDtqKyspewoJCWlmKE1TX2ZsYWcpCgkJewoJCQlwd3JpdGVyYXRlW2pdPTEwMDAwMDAuMCoocHdyaXRldGltZVtqXSAvIChkb3VibGUpZmlsZWJ5dGVzNjQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBwd3JpdGVyYXRlW2pdID0gCgkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKChkb3VibGUpIGZpbGVieXRlczY0IC8gcHdyaXRldGltZVtqXSk7CiAgICAgICAgICAgIH0KCQlpZighKE9QU19mbGFnIHx8IE1TX2ZsYWcpKQoJCQlwd3JpdGVyYXRlW2pdID4+PSAxMDsKCX0KCS8qIE11c3Qgc2F2ZSB3YWxsdGltZSAmIGNwdXRpbWUgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IgZWFjaC9hbnkgY2VsbC4qLwoJaWYobm9yZXRlc3QpCgl7CgkJcHdyaXRlcmF0ZVsxXT0obG9uZyBsb25nKTA7CgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQl3YWxsdGltZVsxXT0wLjA7CgkJCWNwdXRpbWVbMV09MC4wOwoJCX0KCX0KCQoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMF0sIGNwdXRpbWVbMF0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcHdyaXRlcmF0ZVswXSk7CglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZVsxXSwgY3B1dGltZVsxXSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdClwd3JpdGVyYXRlWzFdKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxkIixwd3JpdGVyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJTlsZCIscHdyaXRlcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiJThsbGQiLHB3cml0ZXJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxsZCIscHdyaXRlcmF0ZVsxXSk7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2VuZGlmCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHByZWFkX3BlcmZfdGVzdAkJCQkgICAgICAgIAkJKi8KLyogcHJlYWQgYW5kIHJlLXByZWFkIHRlc3QJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9QUkVBRAojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgcHJlYWRfcGVyZl90ZXN0KG9mZjY0X3Qga2lsb3M2NCxsb25nIGxvbmcgcmVjbGVuLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCBwcmVhZF9wZXJmX3Rlc3Qoa2lsb3M2NCxyZWNsZW4sZGF0YTEsZGF0YTIpCm9mZjY0X3Qga2lsb3M2NDsKbG9uZyBsb25nIHJlY2xlbjsKbG9uZyBsb25nICpkYXRhMSwgKmRhdGEyOwojZW5kaWYKewoJZG91YmxlIHN0YXJ0dGltZTI7Cglkb3VibGUgcHJlYWR0aW1lWzJdOwoJZG91YmxlIHdhbGx0aW1lWzJdLCBjcHV0aW1lWzJdOwoJZG91YmxlIGNvbXB1dGVfdmFsID0gKGRvdWJsZSkwOwoJbG9uZyBsb25nIG51bXJlY3M2NCxpOwoJbG9uZyBsb25nIGo7Cglsb25nIGxvbmcgSW5kZXggPSAwOwoJdW5zaWduZWQgbG9uZyBsb25nIHByZWFkcmF0ZVsyXTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7CglpbnQgZmQsb3Blbl9mbGFnczsKCWludCBsdGVzdDsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7Cglsb25nIGxvbmcgdHJhal9zaXplOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKCWNoYXIgKm5idWZmOwoKCXRyYWpfb2Zmc2V0PTA7CgluYnVmZj1tYWluYnVmZmVyOwoJb3Blbl9mbGFncz1PX1JET05MWTsKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlvcGVuX2ZsYWdzIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCW9wZW5fZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQoJaWYocmVhZF9zeW5jKQoJCW9wZW5fZmxhZ3MgfD1PX1JTWU5DfE9fU1lOQzsKI2VuZGlmCglpZihyX3RyYWpfZmxhZykKCXsKCQlmaWxlYnl0ZXM2NCA9IHJfdHJhal9mc2l6ZTsKCQludW1yZWNzNjQ9cl90cmFqX29wczsKCX0KCWVsc2UKCXsKCQludW1yZWNzNjQgPSAoa2lsb3M2NCoxMDI0KS9yZWNsZW47CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoKCWZkID0gMDsKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCWZvciggaj0wOyBqPGx0ZXN0OyBqKysgKSAJCS8qIFByZWFkIGFuZCBSZS1QcmVhZCAqLwoJewoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJCWlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgKGludClvcGVuX2ZsYWdzLDApKTwwKQoJCXsKCQkJcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSAlcyBmb3IgcmVhZFxuIixmaWxlbmFtZSk7CgkJCXBlcnJvcigib3BlbiIpOwoJCQlleGl0KDEwMSk7CgkJfQojaWZkZWYgVlhGUwoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQkJaWYodGVzdF9mb28gPT0gMCkKCQkJewoJCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQojZW5kaWYKCQluYnVmZj1tYWluYnVmZmVyOwoJCW1idWZmZXI9bWFpbmJ1ZmZlcjsKCQlpZihmZXRjaG9uKQoJCQlmZXRjaGl0KG5idWZmLHJlY2xlbik7CgkJc3RhcnR0aW1lMiA9IHRpbWVfc29fZmFyKCk7CgkgICAgICAgIGNvbXB1dGVfdmFsPShkb3VibGUpMDsKCQlpZihyX3RyYWpfZmxhZykKCQl7CgkJCXJld2luZChyX3RyYWpfZmQpOwoJCX0KCQlmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSAKCQl7CgkJCWlmKHJfdHJhal9mbGFnKQoJCQl7CgkJCQl0cmFqX29mZnNldD1nZXRfdHJhaihyX3RyYWpfZmQsIChsb25nIGxvbmcgKikmdHJhal9zaXplLChmbG9hdCAqKSZjb21wdXRlX3RpbWUsKGxvbmcpMSk7CgkJCQlyZWNsZW49dHJhal9zaXplOwoJCQl9CgkJCWVsc2UKCQkJCXRyYWpfb2Zmc2V0PShpICogcmVjbGVuKTsKCQkJaWYocmxvY2tpbmcpCgkJCXsKCQkJCWxvY2tfb2Zmc2V0PXRyYWpfb2Zmc2V0OwoJCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkxLAoJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJfQoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihtdWx0aV9idWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCArPXJlY2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihJbmRleCA+IChNQVhCVUZGRVJTSVpFLXJlY2xlbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleD0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5idWZmID0gbWJ1ZmZlciArIEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICB9CgoJCQlpZihwdXJnZSkKCQkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQkJaWYoSV9QUkVBRCgoKGludClmZCksICgodm9pZCopbmJ1ZmYpLCAoKHNpemVfdCkgcmVjbGVuKSx0cmFqX29mZnNldCApIAoJCQkJCSE9IHJlY2xlbikKCQkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlbGQgJWx4XG4iLCBpLCh1bnNpZ25lZCBsb25nKW5idWZmKTsKI2Vsc2UKCQkJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrICVsbGQgJWx4XG4iLCBpLCh1bnNpZ25lZCBsb25nKW5idWZmKTsKI2VuZGlmCgkJCQlwZXJyb3IoInByZWFkIik7CgkJCQlleGl0KDEwMyk7CgkJCX0KCQkJaWYodmVyaWZ5KXsKCQkJCWlmKHZlcmlmeV9idWZmZXIobmJ1ZmYscmVjbGVuLChvZmY2NF90KWkscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5KSl7CgkJCQkJZXhpdCgxMDQpOwoJCQkJfQoJCQl9CgkJCWlmKHJsb2NraW5nKQoJCQl7CgkJCQlsb2NrX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkxLAoJCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQkJfQoJCX0KCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQlmc3luYyhmZCk7CgkJaWYoaW5jbHVkZV9jbG9zZSkKCQkJY2xvc2UoZmQpOwoJCXByZWFkdGltZVtqXSA9ICgodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTIpLXRpbWVfcmVzKQoJCQktY29tcHV0ZV92YWw7CgkJaWYocHJlYWR0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXByZWFkdGltZVtqXT0gdGltZV9yZXM7CgkJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCXJlc19wcm9iPTE7CgkJfQoJCWlmKCFpbmNsdWRlX2Nsb3NlKQoJCXsKCQkJZnN5bmMoZmQpOwoJCQljbG9zZShmZCk7CgkJfQoKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkJCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCQljcHV0aW1lW2pdID0gMC4wOwoJCQl3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZVtqXTsKCQkJaWYgKHdhbGx0aW1lW2pdIDwgY3B1dGltZVtqXSkKCQkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJCX0KCQlpZihyZXN0ZikKCQkJc2xlZXAoKGludClyZXN0X3ZhbCk7CiAgICAJfQoKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCWlmKE9QU19mbGFnIHx8IE1TX2ZsYWcpewoJICAgZmlsZWJ5dGVzNjQ9ZmlsZWJ5dGVzNjQvcmVjbGVuOwoJfQoJZm9yKGo9MDtqPGx0ZXN0O2orKyl7CgkJaWYoTVNfZmxhZykKCQl7CgkJCXByZWFkcmF0ZVtqXT0xMDAwMDAwLjAqKHByZWFkdGltZVtqXSAvIChkb3VibGUpZmlsZWJ5dGVzNjQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBwcmVhZHJhdGVbal0gPSAKCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgKChkb3VibGUpIGZpbGVieXRlczY0IC8gcHJlYWR0aW1lW2pdKTsKICAgICAgICAgICAgfQoJCWlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJCXByZWFkcmF0ZVtqXSA+Pj0gMTA7Cgl9CglpZihub3JldGVzdCkKCXsKCQlwcmVhZHJhdGVbMV09KGxvbmcgbG9uZykwOwoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbMV09MC4wOwoJCQljcHV0aW1lWzFdPTAuMDsKCQl9Cgl9CgoJLyogTXVzdCBzYXZlIHdhbGx0aW1lICYgY3B1dGltZSBiZWZvcmUgY2FsbGluZyBzdG9yZV92YWx1ZSgpIGZvciBlYWNoL2FueSBjZWxsLiovCglpZihjcHV1dGlsZmxhZykKCQlzdG9yZV90aW1lcyh3YWxsdGltZVswXSwgY3B1dGltZVswXSk7CglzdG9yZV92YWx1ZSgob2ZmNjRfdClwcmVhZHJhdGVbMF0pOwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMV0sIGNwdXRpbWVbMV0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcHJlYWRyYXRlWzFdKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOGxkIixwcmVhZHJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxkIixwcmVhZHJhdGVbMV0pOwoJaWYoIXNpbGVudCkgZmZsdXNoKHN0ZG91dCk7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIiU4bGxkIixwcmVhZHJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxsZCIscHJlYWRyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZW5kaWYKfQojZW5kaWYKCiNpZmRlZiBIQVZFX1BSRUFEVgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBwd3JpdGV2X3BlcmZfdGVzdAkJCQkgICAgICAgIAkJKi8KLyogcHdyaXRldiBhbmQgcmUtcHdyaXRldiB0ZXN0CQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHB3cml0ZXZfcGVyZl90ZXN0KG9mZjY0X3Qga2lsb3M2NCxsb25nIGxvbmcgcmVjbGVuLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCBwd3JpdGV2X3BlcmZfdGVzdChraWxvczY0LHJlY2xlbixkYXRhMSxkYXRhMikKb2ZmNjRfdCBraWxvczY0Owpsb25nIGxvbmcgcmVjbGVuOwpsb25nIGxvbmcgKmRhdGExLCpkYXRhMjsKI2VuZGlmCnsKCWRvdWJsZSBzdGFydHRpbWUxOwoJZG91YmxlIHB3cml0ZXZ0aW1lWzJdOwoJZG91YmxlIHdhbGx0aW1lWzJdLCBjcHV0aW1lWzJdOwoJZG91YmxlIGNvbXB1dGVfdmFsID0gKGRvdWJsZSkwOwoJbG9uZyBsb25nIGxpc3Rfb2ZmW1BWRUNNQVhdOwoJbG9uZyBsb25nIG51bXZlY3Msaix4eDsKCXVuc2lnbmVkIGxvbmcgbG9uZyBwd3JpdGV2cmF0ZVsyXTsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQsaTsKCW9mZjY0X3QgbnVtcmVjczY0OwoJaW50IGZkLGx0ZXN0OwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKCWxvbmcgbG9uZyBmbGFnc19oZXJlOwoJY2hhciAqbmJ1ZmY7CiNpZmRlZiBNRVJTRU5ORQogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbml0WzRdPXsweDEyMzQ1VUxMLCAweDIzNDU2VUxMLCAweDM0NTY3VUxMLCAweDQ1Njc4VUxMfSwgbGVuZ3RoPTQ7CiNlbmRpZgoKCW51bXJlY3M2NCA9IChraWxvczY0KjEwMjQpL3JlY2xlbjsKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCW5idWZmID0gbWFpbmJ1ZmZlcjsKCWZkID0gMDsKCWlmKG9mbGFnKQoJCWZsYWdzX2hlcmUgPSBPX1NZTkN8T19SRFdSOwoJZWxzZQoJCWZsYWdzX2hlcmUgPSBPX1JEV1I7CiNpZiBkZWZpbmVkKE9fRFNZTkMpCglpZihvZHN5bmMpCgkJZmxhZ3NfaGVyZSB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzX2hlcmUgfD1PX1JTWU5DfE9fU1lOQzsKI2VuZGlmCgojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzX2hlcmUgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3NfaGVyZSB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKCSAKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCglmb3IoIGo9MDsgajxsdGVzdDsgaisrKQoJewoJCWlmKGo9PTApCgkJCWZsYWdzX2hlcmUgfD1PX0NSRUFUOwoJCWlmKGNwdXV0aWxmbGFnKQoJCXsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpOwoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKFVmbGFnKSAvKiBVbm1vdW50IGFuZCByZS1tb3VudCB0aGUgbW91bnRwb2ludCAqLwoJCXsKCQkJcHVyZ2VfYnVmZmVyX2NhY2hlKCk7CgkJfQoJCWlmKChmZCA9IElfT1BFTihmaWxlbmFtZSwgKGludClmbGFnc19oZXJlLDA2NDApKTwwKQoJCXsKCQkJcHJpbnRmKCJcbkNhbiBub3Qgb3BlbiB0ZW1wIGZpbGU6ICVzXG4iLCAKCQkJCWZpbGVuYW1lKTsKCQkJcGVycm9yKCJvcGVuIik7CgkJCWV4aXQoMTA5KTsKCQl9CiNpZmRlZiBWWEZTCgkJaWYoZGlyZWN0X2ZsYWcpCgkJewoJCQlpb2N0bChmZCxWWF9TRVRDQUNIRSxWWF9ESVJFQ1QpOwoJCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCQlpZih0ZXN0X2ZvbyA9PSAwKQoJCQl7CgkJCQlpZighY2xpZW50X2lvem9uZSkKCQkJCQlwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJCWV4aXQoMyk7CgkJCX0KCQl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQoJCWlmKGRpcmVjdF9mbGFnKQoJCXsKCQkJdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwoJCQlpZih0ZXN0X2ZvbyAhPSAwKQoJCQl7CgkJCQlpZighY2xpZW50X2lvem9uZSkKCQkJCQlwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwoJCQkJZXhpdCgzKTsKCQkJfQoJCX0KI2VuZGlmCgkJbmJ1ZmY9bWFpbmJ1ZmZlcjsKCQltYnVmZmVyPW1haW5idWZmZXI7CgkJaWYoZmV0Y2hvbikKCQkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJCW51bXZlY3M9UFZFQ01BWDsKICAgICAgICAgICAgICAgIGlmKG51bXJlY3M2NCA8IG51bXZlY3MpIG51bXZlY3M9bnVtcmVjczY0OwogICAgICAgICAgICAgICAgaWYoTUFYQlVGRkVSU0laRS9yZWNsZW4gPCBQVkVDTUFYKSBudW12ZWNzPU1BWEJVRkZFUlNJWkUvcmVjbGVuOwoKI2lmZGVmIE1FUlNFTk5FCiAgICAJICAgICAgICBpbml0X2J5X2FycmF5NjQoaW5pdCwgbGVuZ3RoKTsKI2Vsc2UKI2lmZGVmIGJzZDRfMgoJICAgICAgICBzcmFuZCgwKTsKI2Vsc2UKI2lmZGVmIFdpbmRvd3MKICAgICAgICAgICAgICAgIHNyYW5kKDApOwojZWxzZQoJICAgICAgICBzcmFuZDQ4KDApOwojZW5kaWYKI2VuZGlmCiNlbmRpZgoJCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJICAgICAgICBjb21wdXRlX3ZhbD0oZG91YmxlKTA7CgkJZm9yKGk9MDsgaTxudW1yZWNzNjQ7IGkrPW51bXZlY3MpewoJCQlpZihjb21wdXRlX2ZsYWcpCgkJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShjb21wdXRlX3RpbWUpOwoJCQlpZigobnVtcmVjczY0LWkpIDwgbnVtdmVjcykgCgkJCQludW12ZWNzPW51bXJlY3M2NC1pOwoJCQljcmVhdGVfbGlzdCgobG9uZyBsb25nICopbGlzdF9vZmYsIHJlY2xlbiwgbnVtcmVjczY0KTsKCQkJZm9yKHh4PTA7eHg8bnVtdmVjczt4eCsrKQoJCQl7CgkJCQlwaW92W3h4XS5waW92X2Jhc2UgPSAKCQkJCQkoY2FkZHJfdCkobmJ1ZmYrKHh4ICogcmVjbGVuKSk7CgkJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQkJZmlsbF9idWZmZXIocGlvdlt4eF0ucGlvdl9iYXNlLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxpKTsKCQkJCXBpb3ZbeHhdLnBpb3ZfbGVuID0gcmVjbGVuOwojaWZkZWYgUEVSX1ZFQ1RPUl9PRkZTRVQKCQkJCXBpb3ZbeHhdLnBpb3Zfb2Zmc2V0ID0gbGlzdF9vZmZbeHhdOwojZW5kaWYKCQkJCWlmKHB1cmdlKQoJCQkJCXB1cmdlaXQocGlvdlt4eF0ucGlvdl9iYXNlLHJlY2xlbik7CgkJCX0KCQkJaWYocHdyaXRldihmZCwgcGlvdixudW12ZWNzCiNpZmRlZiBQRVJfVkVDVE9SX09GRlNFVAoJCQkJLCBsaXN0X29mZlswXQojZW5kaWYKCQkJCSkgIT0gKHJlY2xlbipudW12ZWNzKSkKCQkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCSAgICAJcHJpbnRmKCJcbkVycm9yIHB3cml0ZXZpbmcgYmxvY2sgJWxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2Vsc2UKCQkJICAgIAlwcmludGYoIlxuRXJyb3IgcHdyaXRldmluZyBibG9jayAlbGxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2VuZGlmCgkJCQlwZXJyb3IoInB3cml0ZXYiKTsKCQkJICAgIAlleGl0KDExMyk7CgkJCX0KCQl9CgoJCWlmKGluY2x1ZGVfZmx1c2gpCgkJewoJCQl3dmFsPWZzeW5jKGZkKTsKCQkJaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJmc3luYyIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCX0KCQlpZihpbmNsdWRlX2Nsb3NlKQoJCXsKCQkJd3ZhbD1jbG9zZShmZCk7CgkJCWlmKHd2YWw9PS0xKXsKCQkJCXBlcnJvcigiY2xvc2UiKTsKCQkJCXNpZ25hbF9oYW5kbGVyKCk7CgkJCX0KCQl9CgkJcHdyaXRldnRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUxKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHB3cml0ZXZ0aW1lW2pdIDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCXB3cml0ZXZ0aW1lW2pdPSB0aW1lX3JlczsKCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJcmVzX3Byb2I9MTsKCQl9CgkJaWYoIWluY2x1ZGVfY2xvc2UpCgkJewoJCQl3dmFsPWZzeW5jKGZkKTsKCQkJaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJmc3luYyIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCQl3dmFsPWNsb3NlKGZkKTsKCQkJaWYod3ZhbD09LTEpewoJCQkJcGVycm9yKCJjbG9zZSIpOwoJCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQkJfQoJCX0KCgkJaWYoY3B1dXRpbGZsYWcpCgkJewoJCQljcHV0aW1lW2pdICA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lW2pdOwoJCQlpZiAoY3B1dGltZVtqXSA8IGNwdXRpbWVfcmVzKQoJCQkJY3B1dGltZVtqXSA9IDAuMDsKCQkJd2FsbHRpbWVbal0gPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWVbal07CgkJCWlmICh3YWxsdGltZVtqXSA8IGNwdXRpbWVbal0pCgkJCSAgIHdhbGx0aW1lW2pdID0gY3B1dGltZVtqXTsKCQl9CgkJaWYocmVzdGYpCgkJCXNsZWVwKChpbnQpcmVzdF92YWwpOwoJfQoJaWYoT1BTX2ZsYWcgfHwgTVNfZmxhZyl7CgkgICBmaWxlYnl0ZXM2ND1maWxlYnl0ZXM2NC9yZWNsZW47Cgl9Cglmb3Ioaj0wO2o8bHRlc3Q7aisrKXsKCQlpZihNU19mbGFnKQoJCXsKCQkJcHdyaXRldnJhdGVbal09MTAwMDAwMC4wKihwd3JpdGV2dGltZVtqXSAvIChkb3VibGUpZmlsZWJ5dGVzNjQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBwd3JpdGV2cmF0ZVtqXSA9IAoJCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHB3cml0ZXZ0aW1lW2pdKTsKICAgICAgICAgICAgfQoJCWlmKCEoT1BTX2ZsYWcgfHwgTVNfZmxhZykpCgkJCXB3cml0ZXZyYXRlW2pdID4+PSAxMDsKCX0KCWlmKG5vcmV0ZXN0KQoJewoJCXB3cml0ZXZyYXRlWzFdPShsb25nIGxvbmcpMDsKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCXdhbGx0aW1lWzFdPTAuMDsKCQkJY3B1dGltZVsxXT0wLjA7CgkJfQoJfQkKCS8qIE11c3Qgc2F2ZSB3YWxsdGltZSAmIGNwdXRpbWUgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IgZWFjaC9hbnkgY2VsbC4qLwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMF0sIGNwdXRpbWVbMF0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcHdyaXRldnJhdGVbMF0pOwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMV0sIGNwdXRpbWVbMV0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcHdyaXRldnJhdGVbMV0pOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiU5bGQiLHB3cml0ZXZyYXRlWzBdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiJTEwbGQiLHB3cml0ZXZyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxsZCIscHdyaXRldnJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlMTBsbGQiLHB3cml0ZXZyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZW5kaWYKfQojZW5kaWYKCgojaWZkZWYgSEFWRV9QUkVBRFYKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBjcmVhdGVfbGlzdCgpIAkJCQkJCQkgICovCi8qIENyZWF0ZXMgYSBsaXN0IG9mIFBWRUNNQVggZW50cmllcyB0aGF0IGFyZSB1bmlxdWUgKG5vbiBvdmVyIGxhcHBpbmcgKS4gKi8KLyogRWFjaCBvZiB0aGVzZSBvZmZzZXRzIGFyZSB0aGVuIHVzZWQgaW4gYSB2ZWN0b3IgKHByZWFkdi9wd3JpdGV2KQkgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIGNyZWF0ZV9saXN0KGxvbmcgbG9uZyAqbGlzdF9vZmYsIGxvbmcgbG9uZyByZWNsZW4sIG9mZjY0X3QgbnVtcmVjczY0KQojZWxzZQp2b2lkIGNyZWF0ZV9saXN0KGxpc3Rfb2ZmLCByZWNsZW4sIG51bXJlY3M2NCkKbG9uZyBsb25nICpsaXN0X29mZjsKbG9uZyBsb25nIHJlY2xlbjsgCm9mZjY0X3QgbnVtcmVjczY0OwojZW5kaWYKewoJbG9uZyBsb25nIGZvdW5kLGksajsKCWxvbmcgbG9uZyBudW12ZWNzOwojaWYgZGVmaW5lZCAoYnNkNF8yKSB8fCBkZWZpbmVkKFdpbmRvd3MpCglsb25nIGxvbmcgcmFuZDEscmFuZDIscmFuZDM7Cgl1bnNpZ25lZCBsb25nIGxvbmcgYmlnX3JhbmQ7CiNlbmRpZgoKCW51bXZlY3MgPSBQVkVDTUFYOwoJaWYobnVtcmVjczY0PCBudW12ZWNzKQoJCW51bXZlY3MgPSBudW1yZWNzNjQ7Cglmb3Ioaj0wO2o8bnVtdmVjcztqKyspCgkJbGlzdF9vZmZbal09MDsJCglmb3Ioaj0wO2o8bnVtdmVjcztqKyspCgl7CmFnYWluOgoJCWZvdW5kID0gMDsKI2lmZGVmIE1FUlNFTk5FCiAgICAgICAgICAgICAgICBiaWdfcmFuZCA9IGdlbnJhbmQ2NF9pbnQ2NCgpOwoJCW9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCiNpZmRlZiBic2Q0XzIKCQlyYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKCQlyYW5kMj0obG9uZyBsb25nKXJhbmQoKTsKCQlyYW5kMz0obG9uZyBsb25nKXJhbmQoKTsKCQliaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwoJCW9mZnNldDY0ID0gcmVjbGVuICogKGJpZ19yYW5kJW51bXJlY3M2NCk7CiNlbHNlCiNpZmRlZiBXaW5kb3dzCgkJcmFuZDE9KGxvbmcgbG9uZylyYW5kKCk7CgkJcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CgkJcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJYmlnX3JhbmQ9KHJhbmQxPDwzMil8KHJhbmQyPDwxNil8KHJhbmQzKTsKCQlvZmZzZXQ2NCA9IHJlY2xlbiAqIChiaWdfcmFuZCVudW1yZWNzNjQpOwojZWxzZQoJCW9mZnNldDY0ID0gcmVjbGVuICogKGxyYW5kNDgoKSVudW1yZWNzNjQpOwojZW5kaWYKI2VuZGlmCiNlbmRpZgoKCQlmb3IoaT0wO2k8ajtpKyspCgkJewoJCQlpZihsaXN0X29mZltpXSA9PSBvZmZzZXQ2NCkKCQkJewoJCQkJZm91bmQrKzsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKCFmb3VuZCkKCQkJbGlzdF9vZmZbal09b2Zmc2V0NjQ7CgkJZWxzZQoJCXsKCQkJZ290byBhZ2FpbjsKCQl9Cgl9Cn0KI2VuZGlmCgojaWZkZWYgSEFWRV9QUkVBRFYKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogcHJlYWR2X3BlcmZfdGVzdAkJCQkgICAgICAgIAkJKi8KLyogcHJlYWR2IGFuZCByZS1wcmVhZHYgdGVzdAkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCBwcmVhZHZfcGVyZl90ZXN0KG9mZjY0X3Qga2lsb3M2NCxsb25nIGxvbmcgcmVjbGVuLGxvbmcgbG9uZyAqZGF0YTEsbG9uZyBsb25nICpkYXRhMikKI2Vsc2UKdm9pZCBwcmVhZHZfcGVyZl90ZXN0KGtpbG9zNjQscmVjbGVuLGRhdGExLGRhdGEyKQpvZmY2NF90IGtpbG9zNjQ7CmxvbmcgbG9uZyByZWNsZW47CmxvbmcgbG9uZyAqZGF0YTEsKmRhdGEyOwojZW5kaWYKewoJZG91YmxlIHN0YXJ0dGltZTI7Cglkb3VibGUgcHJlYWR2dGltZVsyXTsKCWRvdWJsZSB3YWxsdGltZVsyXSwgY3B1dGltZVsyXTsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWxvbmcgbG9uZyBsaXN0X29mZltQVkVDTUFYXTsKCWxvbmcgbG9uZyBudW12ZWNzLGksaix4eDsKCW9mZjY0X3QgbnVtcmVjczY0OwoJdW5zaWduZWQgbG9uZyBsb25nIHByZWFkdnJhdGVbMl07CglvZmY2NF90IGZpbGVieXRlczY0OwoJaW50IGZkLG9wZW5fZmxhZ3MsbHRlc3Q7CiNpZiBkZWZpbmVkKFZYRlMpIHx8IGRlZmluZWQoc29sYXJpcykKCWludCB0ZXN0X2ZvbyA9IDA7CiNlbmRpZgoJY2hhciAqbmJ1ZmY7CiNpZmRlZiBNRVJTRU5ORQogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbml0WzRdPXsweDEyMzQ1VUxMLCAweDIzNDU2VUxMLCAweDM0NTY3VUxMLCAweDQ1Njc4VUxMfSwgbGVuZ3RoPTQ7CiNlbmRpZgoKCW9wZW5fZmxhZ3M9T19SRE9OTFk7CiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJb3Blbl9mbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlvcGVuX2ZsYWdzIHw9T19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgojaWYgZGVmaW5lZChfSFBVWF9TT1VSQ0UpIHx8IGRlZmluZWQobGludXgpCglpZihyZWFkX3N5bmMpCgkJb3Blbl9mbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCW51bXJlY3M2NCA9IChraWxvczY0KjEwMjQpL3JlY2xlbjsKCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCW5idWZmID0gbWFpbmJ1ZmZlcjsKCWZkID0gMDsKCWlmKG5vcmV0ZXN0KQoJCWx0ZXN0PTE7CgllbHNlCgkJbHRlc3Q9MjsKCglmb3IoIGo9MDsgajxsdGVzdDsgaisrICkKCXsKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCXdhbGx0aW1lW2pdID0gdGltZV9zb19mYXIoKTsKCQkJY3B1dGltZVtqXSAgPSBjcHV0aW1lX3NvX2ZhcigpOwoJCX0KCQlpZihVZmxhZykgLyogVW5tb3VudCBhbmQgcmUtbW91bnQgdGhlIG1vdW50cG9pbnQgKi8KCQl7CgkJCXB1cmdlX2J1ZmZlcl9jYWNoZSgpOwoJCX0KCgkJaWYoKGZkID0gSV9PUEVOKGZpbGVuYW1lLCAoaW50KW9wZW5fZmxhZ3MsMCkpPDApCgkJewoJCQlwcmludGYoIlxuQ2FuIG5vdCBvcGVuIHRlbXBvcmFyeSBmaWxlIGZvciBwcmVhZHZcbiIpOwoJCQlwZXJyb3IoIm9wZW4iKTsKCQkJZXhpdCgxMTQpOwoJCX0KI2lmZGVmIFZYRlMKCQlpZihkaXJlY3RfZmxhZykKCQl7CgkJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJCWlmKHRlc3RfZm9vID09IDApCgkJCXsKCQkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJCWV4aXQoMyk7CgkJCX0KCQl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KI2VuZGlmCgkJbmJ1ZmY9bWFpbmJ1ZmZlcjsKCQltYnVmZmVyPW1haW5idWZmZXI7CgkJaWYoZmV0Y2hvbikKCQkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJCW51bXZlY3M9UFZFQ01BWDsKICAgICAgICAgICAgICAgIGlmKG51bXJlY3M2NCA8IG51bXZlY3MpIG51bXZlY3M9bnVtcmVjczY0OwogICAgICAgICAgICAgICAgaWYoTUFYQlVGRkVSU0laRS9yZWNsZW4gPCBQVkVDTUFYKSBudW12ZWNzPU1BWEJVRkZFUlNJWkUvcmVjbGVuOwoKI2lmZGVmIE1FUlNFTk5FCiAgICAJICAgICAgIGluaXRfYnlfYXJyYXk2NChpbml0LCBsZW5ndGgpOwojZWxzZQojaWZkZWYgYnNkNF8yCgkgICAgICAgIHNyYW5kKDApOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgICAgICAgICAgc3JhbmQoMCk7CiNlbHNlCgkgICAgICAgIHNyYW5kNDgoMCk7CiNlbmRpZgojZW5kaWYKI2VuZGlmCgkJc3RhcnR0aW1lMiA9IHRpbWVfc29fZmFyKCk7CgkgICAgICAgIGNvbXB1dGVfdmFsPShkb3VibGUpMDsKCQlmb3IoaT0wOyBpPChudW1yZWNzNjQpOyBpKz1udW12ZWNzKSAKCQl7CgkJCWlmKGNvbXB1dGVfZmxhZykKCQkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGNvbXB1dGVfdGltZSk7CgkJCWlmKChudW1yZWNzNjQtaSkgPCBudW12ZWNzKSAKCQkJCW51bXZlY3M9bnVtcmVjczY0LWk7CgkJCWNyZWF0ZV9saXN0KChsb25nIGxvbmcgKilsaXN0X29mZiwgcmVjbGVuLCBudW1yZWNzNjQpOwoJCQlmb3IoeHg9MDt4eDxudW12ZWNzO3h4KyspCgkJCXsKCQkJCXBpb3ZbeHhdLnBpb3ZfYmFzZSA9IAoJCQkJCShjYWRkcl90KShuYnVmZisoeHggKiByZWNsZW4pKTsKCQkJCXBpb3ZbeHhdLnBpb3ZfbGVuID0gcmVjbGVuOwojaWZkZWYgUEVSX1ZFQ1RPUl9PRkZTRVQKCQkJCXBpb3ZbeHhdLnBpb3Zfb2Zmc2V0ID0gbGlzdF9vZmZbeHhdOwojZW5kaWYKCQkJCWlmKHB1cmdlKQoJCQkJICAgcHVyZ2VpdChwaW92W3h4XS5waW92X2Jhc2UscmVjbGVuKTsKCQkJfQoJCQlpZihwcmVhZHYoZmQsIHBpb3YsIG51bXZlY3MKI2lmZGVmIFBFUlZFQ1RPUl9PRkZTRVQKCQkJCSwgbGlzdF9vZmZbMF0KI2VuZGlmCgkJCQkpICE9IChudW12ZWNzICogcmVjbGVuKSkKCQkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCQlwcmludGYoIlxuRXJyb3IgcHJlYWR2aW5nIGJsb2NrICVsZCBcbiIsIGkpOwojZWxzZQoJCQkJcHJpbnRmKCJcbkVycm9yIHByZWFkdmluZyBibG9jayAlbGxkIFxuIiwgaSk7CiNlbmRpZgoJCQkJcGVycm9yKCJwcmVhZHYiKTsKCQkJCWV4aXQoMTE2KTsKCQkJfQoJCX0KCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQlmc3luYyhmZCk7CgkJaWYoaW5jbHVkZV9jbG9zZSkKCQkJY2xvc2UoZmQpOwoJCXByZWFkdnRpbWVbal0gPSAoKHRpbWVfc29fZmFyKCkgLSBzdGFydHRpbWUyKS10aW1lX3JlcykKCQkJLWNvbXB1dGVfdmFsOwoJCWlmKHByZWFkdnRpbWVbal0gPCAoZG91YmxlKS4wMDAwMDEpIAoJCXsKCQkJcHJlYWR2dGltZVtqXT0gdGltZV9yZXM7CgkJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCXJlc19wcm9iPTE7CgkJfQoJCWlmKCFpbmNsdWRlX2Nsb3NlKQoJCXsKCQkJZnN5bmMoZmQpOwoJCQljbG9zZShmZCk7CgkJfQoKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCWNwdXRpbWVbal0gID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWVbal07CgkJCWlmIChjcHV0aW1lW2pdIDwgY3B1dGltZV9yZXMpCgkJCQljcHV0aW1lW2pdID0gMC4wOwoJCQl3YWxsdGltZVtqXSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZVtqXTsKCQkJaWYgKHdhbGx0aW1lW2pdIDwgY3B1dGltZVtqXSkKCQkJICAgd2FsbHRpbWVbal0gPSBjcHV0aW1lW2pdOwoJCX0KCQlpZihyZXN0ZikKCQkJc2xlZXAoKGludClyZXN0X3ZhbCk7CiAgICAJfQoJaWYoT1BTX2ZsYWcgfHwgTVNfZmxhZyl7CgkgICBmaWxlYnl0ZXM2ND1maWxlYnl0ZXM2NC9yZWNsZW47Cgl9Cglmb3Ioaj0wO2o8bHRlc3Q7aisrKXsKCQlpZihNU19mbGFnKQoJCXsKCQkJcHJlYWR2cmF0ZVtqXT0xMDAwMDAwLjAqKHByZWFkdnRpbWVbal0gLyAoZG91YmxlKWZpbGVieXRlczY0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcHJlYWR2cmF0ZVtqXSA9IAoJCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpICgoZG91YmxlKSBmaWxlYnl0ZXM2NCAvIHByZWFkdnRpbWVbal0pOwogICAgICAgICAgICB9CgkJaWYoIShPUFNfZmxhZyB8fCBNU19mbGFnKSkKCQkJcHJlYWR2cmF0ZVtqXSA+Pj0gMTA7Cgl9CglpZihub3JldGVzdCkKCXsKCQlwcmVhZHZyYXRlWzFdPShsb25nIGxvbmcpMDsKCQlpZihjcHV1dGlsZmxhZykKCQl7CgkJCXdhbGx0aW1lWzFdPTAuMDsKCQkJY3B1dGltZVsxXT0wLjA7CgkJfQoJfQoJCgkvKiBNdXN0IHNhdmUgd2FsbHRpbWUgJiBjcHV0aW1lIGJlZm9yZSBjYWxsaW5nIHN0b3JlX3ZhbHVlKCkgZm9yIGVhY2gvYW55IGNlbGwuKi8KCWlmKGNwdXV0aWxmbGFnKQoJCXN0b3JlX3RpbWVzKHdhbGx0aW1lWzBdLCBjcHV0aW1lWzBdKTsKCXN0b3JlX3ZhbHVlKChvZmY2NF90KXByZWFkdnJhdGVbMF0pOwoJaWYoY3B1dXRpbGZsYWcpCgkJc3RvcmVfdGltZXMod2FsbHRpbWVbMV0sIGNwdXRpbWVbMV0pOwoJc3RvcmVfdmFsdWUoKG9mZjY0X3QpcHJlYWR2cmF0ZVsxXSk7CiNpZmRlZiBOT19QUklOVF9MTEQKCWlmKCFzaWxlbnQpIHByaW50ZigiJTEwbGQiLHByZWFkdnJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxkIixwcmVhZHZyYXRlWzFdKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWlmKCFzaWxlbnQpIGZmbHVzaChzdGRvdXQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIlMTBsbGQiLHByZWFkdnJhdGVbMF0pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCIlOWxsZCIscHJlYWR2cmF0ZVsxXSk7CglpZighc2lsZW50KSBwcmludGYoIlxuIik7CglpZighc2lsZW50KSBmZmx1c2goc3Rkb3V0KTsKI2VuZGlmCn0KI2VuZGlmCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBwcmludF9oZWFkZXIoKQkJCQkJCQkqLwovKiBQcmludHMgdGhlIGhlYWRlciBmb3IgdGhlIG91dHB1dCBmcm9tIElvem9uZS4JCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZW5kaWYKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIHByaW50X2hlYWRlcih2b2lkKQojZWxzZQp2b2lkIHByaW50X2hlYWRlcigpCiNlbmRpZgp7CglpZihFZmxhZykKCXsKICAgIAkgICBpZighc2lsZW50KSBwcmludGYoQ09OVFJPTF9TVFJJTkcyLAoJCSIgIiwgCgkJIiAiLAoJCSIgIiwKCQkiICIsCgkJIiAiLAoJCSIgIiwKCQkicmFuZG9tIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJInJhbmRvbSIsCQkJLyprY29sbGluczoyLTUtOTYqLwoJCSJia3dkIiwKCQkicmVjb3JkIiwKCQkic3RyaWRlIiwKCQkiICIsCgkJIiAiLAoJCSIgIiwKCQkiICIKI2lmZGVmIEhBVkVfUFJFQUQKCQksIiAiLAoJCSIgIiwKCQkiICIsCgkJIiAiCiNpZmRlZiBIQVZFX1BSRUFEVgoJCSwiICIsCgkJIiAiLAoJCSIgIiwKCQkiICIKI2VuZGlmCiNlbmRpZgoJCSk7CiAgICAJaWYoIXNpbGVudCkgcHJpbnRmKENPTlRST0xfU1RSSU5HMiwKCQkiS0IiLCAKCQkicmVjbGVuIiwKCQkid3JpdGUiLAoJCSJyZXdyaXRlIiwKCQkicmVhZCIsCgkJInJlcmVhZCIsCgkJInJlYWQiLAkJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJIndyaXRlIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJInJlYWQiLAoJCSJyZXdyaXRlIiwKCQkicmVhZCIsCgkJImZ3cml0ZSIsCgkJImZyZXdyaXRlIiwKCQkiZnJlYWQiLAoJCSJmcmVyZWFkIgojaWZkZWYgSEFWRV9QUkVBRAoJCSwicHdyaXRlIiwKCQkicmVwd3JpdGUiLAoJCSJwcmVhZCIsCgkJInJlcHJlYWQiCiNpZmRlZiBIQVZFX1BSRUFEVgoJCSwicHdyaXRldiIsCgkJInJlcHdyaXRldiIsCgkJInByZWFkdiIsCgkJInJlcHJlYWR2IgojZW5kaWYKI2VuZGlmCgkJKTsKCX1lbHNlIAoJaWYoUldPTkxZZmxhZyl7CQkJCS8qa2NvbGxpbnMgOC0yMS05NiovCiAgICAJICAgaWYoIXNpbGVudCkgcHJpbnRmKENPTlRST0xfU1RSSU5HNCwJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJIiAiLCAJCQkJLyprY29sbGlucyA4LTIxLTk2Ki8KCQkiICIsCQkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJIiAiLAkJCQkvKmtjb2xsaW5zIDgtMjEtOTYqLwoJCSIgIiwJCQkJLyprY29sbGlucyA4LTIxLTk2Ki8KCQkiICIsCQkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJIiAiCQkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJKTsJCQkJLyprY29sbGlucyA4LTIxLTk2Ki8KICAgIAlpZighc2lsZW50KSBwcmludGYoQ09OVFJPTF9TVFJJTkc0LAkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJIktCIiwgCQkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJInJlY2xlbiIsCQkJLyprY29sbGlucyA4LTIxLTk2Ki8KCQkid3JpdGUiLAkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJInJld3JpdGUiLAkJCS8qa2NvbGxpbnMgOC0yMS05NiovCgkJInJlYWQiLAkJCQkvKmtjb2xsaW5zIDgtMjEtOTYqLwoJCSJyZXJlYWQiCQkJLyprY29sbGlucyA4LTIxLTk2Ki8KCQkpOwkJCQkvKmtjb2xsaW5zIDgtMjEtOTYqLwoJfWVsc2V7CgkgICBpZighKG1tYXBmbGFnIHx8IGFzeW5jX2ZsYWcpKQoJICAgewogICAgCSAgIAlpZighc2lsZW50KSBwcmludGYoQ09OVFJPTF9TVFJJTkczLAoJCQkiICIsIAoJCQkiICIsCgkJCSIgIiwKCQkJIiAiLAoJCQkiICIsCgkJCSIgIiwKCQkJInJhbmRvbSIsCQkJLyprY29sbGluczoyLTUtOTYqLwoJCQkicmFuZG9tIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJCSJia3dkIiwKCQkJInJlY29yZCIsCgkJCSJzdHJpZGUiLAoJCQkiIiwKCQkJIiIsCgkJCSIiLAoJCQkiIgoJCQkpOwogICAgCQlpZighc2lsZW50KSBwcmludGYoQ09OVFJPTF9TVFJJTkczLAoJCQkiS0IiLCAKCQkJInJlY2xlbiIsCgkJCSJ3cml0ZSIsCgkJCSJyZXdyaXRlIiwKCQkJInJlYWQiLAoJCQkicmVyZWFkIiwKCQkJInJlYWQiLAkJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJCSJ3cml0ZSIsCQkJLyprY29sbGluczoyLTUtOTYqLwoJCQkicmVhZCIsCgkJCSJyZXdyaXRlIiwKCQkJInJlYWQiLAoJCQkiZndyaXRlIiwKCQkJImZyZXdyaXRlIiwKCQkJImZyZWFkIiwKCQkJImZyZXJlYWQiIAoJCQkpOwoJCX1lbHNlCgkJewogICAgCSAgIAkJaWYoIXNpbGVudCkgcHJpbnRmKENPTlRST0xfU1RSSU5HMywKCQkJCSIgIiwgCgkJCQkiICIsCgkJCQkiICIsCgkJCQkiICIsCgkJCQkiICIsCgkJCQkiICIsCgkJCQkicmFuZG9tIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJCQkicmFuZG9tIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJCQkiYmt3ZCIsCgkJCQkicmVjb3JkIiwKCQkJCSJzdHJpZGUiLAoJCQkJIiIsCgkJCQkiIiwKCQkJCSIiLAoJCQkJIiIKCQkJCSk7CiAgICAJCQlpZighc2lsZW50KSBwcmludGYoQ09OVFJPTF9TVFJJTkczLAoJCQkJIktCIiwgCgkJCQkicmVjbGVuIiwKCQkJCSJ3cml0ZSIsCgkJCQkicmV3cml0ZSIsCgkJCQkicmVhZCIsCgkJCQkicmVyZWFkIiwKCQkJCSJyZWFkIiwJCQkJLyprY29sbGluczoyLTUtOTYqLwoJCQkJIndyaXRlIiwJCQkvKmtjb2xsaW5zOjItNS05NiovCgkJCQkicmVhZCIsCgkJCQkicmV3cml0ZSIsCgkJCQkicmVhZCIsCgkJCQkiIiwKCQkJCSIiLAoJCQkJIiIsCgkJCQkiIiAKCQkJCSk7CgkJfQoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBzdG9yZV92YWx1ZSgpCQkJCQkJCSovCi8qIFN0b3JlcyBhIHZhbHVlIGluIGFuIGluIG1lbW9yeSBhcnJheS4gVXNlZCBieSB0aGUgcmVwb3J0IGZ1bmN0aW9uICAgICovCi8qIHRvIHJlLW9yZ2FuaXplIHRoZSBvdXRwdXQgZm9yIEV4Y2VsCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3RvcmVfdmFsdWUob2ZmNjRfdCB2YWx1ZSkKI2Vsc2UKc3RvcmVfdmFsdWUodmFsdWUpCm9mZjY0X3QgdmFsdWU7CiNlbmRpZgp7CglyZXBvcnRfYXJyYXlbY3VycmVudF94XVtjdXJyZW50X3ldPXZhbHVlOwoJY3VycmVudF94Kys7CglpZihjdXJyZW50X3ggPiBtYXhfeCkKCQltYXhfeD1jdXJyZW50X3g7CglpZihjdXJyZW50X3kgPiBtYXhfeSkKCQltYXhfeT1jdXJyZW50X3k7CglpZihtYXhfeCA+PSBNQVhfWCkKCXsKCQlwcmludGYoIlxuTUFYX1ggdG9vIHNtYWxsXG4iKTsKCQlleGl0KDExNyk7Cgl9CglpZihtYXhfeSA+PSBNQVhfWSkKCXsKCQlwcmludGYoIlxuTUFYX1kgdG9vIHNtYWxsXG4iKTsKCQlleGl0KDExOCk7Cgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHN0b3JlX3RpbWVzKCkJCQkJCQkJKi8KLyogU3RvcmVzIHJ1bnRpbWUgKHdhbGx0aW1lICYgY3B1dGltZSkgaW4gYSBtZW1vcnkgYXJyYXkuCQkqLwovKiBVc2VkIGJ5IHRoZSByZXBvcnQgZnVuY3Rpb24gdG8gcmUtb3JnYW5pemUgdGhlIG91dHB1dCBmb3IgRXhjZWwJKi8KLyogRm9yIG5vdywgbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGNhbGxpbmcgc3RvcmVfdmFsdWUoKSBmb3IJKi8KLyogZWFjaCBjZWxsLgkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnN0b3JlX3RpbWVzKGRvdWJsZSB3YWxsdGltZSwgZG91YmxlIGNwdXRpbWUpCiNlbHNlCnN0b3JlX3RpbWVzKHdhbGx0aW1lLCBjcHV0aW1lKQpkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7CiNlbmRpZgp7CglydW50aW1lcyBbY3VycmVudF94XVtjdXJyZW50X3ldLndhbGx0aW1lID0gd2FsbHRpbWU7CglydW50aW1lcyBbY3VycmVudF94XVtjdXJyZW50X3ldLmNwdXRpbWUgID0gY3B1dGltZTsKCXJ1bnRpbWVzIFtjdXJyZW50X3hdW2N1cnJlbnRfeV0uY3B1dXRpbCAgPSBjcHVfdXRpbChjcHV0aW1lLCB3YWxsdGltZSk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIGR1bXBfcmVwb3J0KCkJCQkJCQkJKi8KLyogRHVtcHMgdGhlIEV4Y2VsIHJlcG9ydCBvbiBzdGFuZGFyZCBvdXRwdXQuCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCBkdW1wX3JlcG9ydChsb25nIGxvbmcgd2hvKQojZWxzZQpkdW1wX3JlcG9ydCh3aG8pCmxvbmcgbG9uZyB3aG87CiNlbmRpZgp7Cglsb25nIGxvbmcgaTsKCW9mZjY0X3QgY3VycmVudF9maWxlX3NpemU7CglvZmY2NF90IHJlY19zaXplOwoKCWlmKGJpZl9mbGFnKQoJCWJpZl9jb2x1bW4rKzsKCWlmKCFzaWxlbnQpIHByaW50ZigiICAgICAgIik7CgoJLyogCgkgKiBOZWVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNvcmQgc2l6ZSBsaXN0CgkgKiBhcyB0aGUgY3Jvc3NvdmVyIGluIC1hIGNoYW5nZWQgdGhlIGxpc3QuCgkqLwoJZGVsX3JlY29yZF9zaXplcygpOwoJaW5pdF9yZWNvcmRfc2l6ZXMob3JpZ19taW5fcmVjX3NpemUsIG9yaWdfbWF4X3JlY19zaXplKTsKCglmb3IocmVjX3NpemU9Z2V0X25leHRfcmVjb3JkX3NpemUoMCk7IHJlY19zaXplIDw9IG9yaWdfbWF4X3JlY19zaXplOwoJCXJlY19zaXplPWdldF9uZXh0X3JlY29yZF9zaXplKHJlY19zaXplKSkKCXsKCQlpZiAocmVjX3NpemUgPT0gMCkgYnJlYWs7CgkJaWYoYmlmX2ZsYWcpCgkJCWRvX2Zsb2F0KGJpZl9mZCwoZG91YmxlKShyZWNfc2l6ZS8xMDI0KSxiaWZfcm93LGJpZl9jb2x1bW4rKyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlpZighc2lsZW50KSBwcmludGYoIiAgJWMlbGQlYyIsMDQyLHJlY19zaXplLzEwMjQsMDQyKTsKI2Vsc2UKCQlpZighc2lsZW50KSBwcmludGYoIiAgJWMlbGxkJWMiLDA0MixyZWNfc2l6ZS8xMDI0LDA0Mik7CiNlbmRpZgoJfQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiIpOwoJaWYoYmlmX2ZsYWcpCgl7CgkJYmlmX2NvbHVtbj0wOwoJCWJpZl9yb3crKzsKCX0KCgljdXJyZW50X2ZpbGVfc2l6ZSA9IHJlcG9ydF9hcnJheVswXVswXTsKCWlmKGJpZl9mbGFnKQoJewoJCWRvX2Zsb2F0KGJpZl9mZCwoZG91YmxlKShjdXJyZW50X2ZpbGVfc2l6ZSksYmlmX3JvdyxiaWZfY29sdW1uKyspOwoJfQojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIiVjJWxkJWMgICIsMDQyLGN1cnJlbnRfZmlsZV9zaXplLDA0Mik7CiNlbHNlCglpZighc2lsZW50KSBwcmludGYoIiVjJWxsZCVjICAiLDA0MixjdXJyZW50X2ZpbGVfc2l6ZSwwNDIpOwojZW5kaWYKCWZvcihpPTA7aTw9bWF4X3k7aSsrKXsKCQlpZihyZXBvcnRfYXJyYXlbMF1baV0gIT0gY3VycmVudF9maWxlX3NpemUpewoJCQlpZighc2lsZW50KSBwcmludGYoIlxuIik7CgkJCWN1cnJlbnRfZmlsZV9zaXplID0gcmVwb3J0X2FycmF5WzBdW2ldOwoJCQlpZihiaWZfZmxhZykKCQkJewoJCQkJYmlmX3JvdysrOwoJCQkJYmlmX2NvbHVtbj0wOwoJCQkJZG9fZmxvYXQoYmlmX2ZkLChkb3VibGUpKGN1cnJlbnRfZmlsZV9zaXplKSxiaWZfcm93LGJpZl9jb2x1bW4rKyk7CgkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlpZighc2lsZW50KSBwcmludGYoIiVjJWxkJWMgICIsMDQyLGN1cnJlbnRfZmlsZV9zaXplLDA0Mik7CiNlbHNlCgkJCWlmKCFzaWxlbnQpIHByaW50ZigiJWMlbGxkJWMgICIsMDQyLGN1cnJlbnRfZmlsZV9zaXplLDA0Mik7CiNlbmRpZgoJCX0KCQlpZihiaWZfZmxhZykKCQkJZG9fZmxvYXQoYmlmX2ZkLChkb3VibGUpKHJlcG9ydF9hcnJheVt3aG9dW2ldKSxiaWZfcm93LGJpZl9jb2x1bW4rKyk7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlpZighc2lsZW50KSBwcmludGYoIiAlbGQgIixyZXBvcnRfYXJyYXlbd2hvXVtpXSk7CiNlbHNlCgkJaWYoIXNpbGVudCkgcHJpbnRmKCIgJWxsZCAiLHJlcG9ydF9hcnJheVt3aG9dW2ldKTsKI2VuZGlmCgl9CglpZihiaWZfZmxhZykKCXsKCQliaWZfcm93Kys7CgkJYmlmX2NvbHVtbj0wOwoJfQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiIpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBXcmFwcGVyIHRoYXQgZHVtcHMgZWFjaCBvZiB0aGUgY29sbGVjdGVkIGRhdGEgc2V0cy4JCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgZHVtcF9leGNlbCh2b2lkKQojZWxzZQp2b2lkIGR1bXBfZXhjZWwoKQojZW5kaWYKewoJaWYoYmlmX2ZsYWcpCgl7CgkJYmlmX2ZkPWNyZWF0ZV94bHMoYmlmX2ZpbGVuYW1lKTsKCQlkb19sYWJlbChiaWZfZmQsY29tbWFuZF9saW5lLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlkb19sYWJlbChiaWZfZmQsIiAiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKICAgICAgICAgICAgICAgIGRvX2xhYmVsKGJpZl9mZCwiVGhlIHRvcCByb3cgaXMgcmVjb3JkcyBzaXplcywgdGhlIGxlZnQgY29sdW1uIGlzIGZpbGUgc2l6ZXMiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCX0KCWlmKCFzaWxlbnQpIHByaW50ZigiRXhjZWwgb3V0cHV0IGlzIGJlbG93OlxuIik7CgogICAgaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpV1JJVEVSX01BU0spKSB7CglpZihiaWZfZmxhZykKCQlkb19sYWJlbChiaWZfZmQsIldyaXRlciBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1dyaXRlciByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCWR1bXBfcmVwb3J0KDIpOyAKCWlmKGJpZl9mbGFnKQoJCWRvX2xhYmVsKGJpZl9mZCwiUmUtd3JpdGVyIFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUmUtd3JpdGVyIHJlcG9ydCVjXG4iLDA0MiwwNDIpOwoJZHVtcF9yZXBvcnQoMyk7IAogICAgfQoKICAgIGlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVJFQURFUl9NQVNLKSkgewoJaWYoYmlmX2ZsYWcpCgkJZG9fbGFiZWwoYmlmX2ZkLCJSZWFkZXIgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CglpZighc2lsZW50KSBwcmludGYoIlxuJWNSZWFkZXIgcmVwb3J0JWNcbiIsMDQyLDA0Mik7CglkdW1wX3JlcG9ydCg0KTsgCglpZihiaWZfZmxhZykKCQlkb19sYWJlbChiaWZfZmQsIlJlLXJlYWRlciBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLVJlYWRlciByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCWR1bXBfcmVwb3J0KDUpOyAKICAgIH0KCglpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylSQU5ET01fUldfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCJSYW5kb20gUmVhZCBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSYW5kb20gcmVhZCByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCg2KTsgCgkJaWYoYmlmX2ZsYWcpCgkJCWRvX2xhYmVsKGJpZl9mZCwiUmFuZG9tIFdyaXRlIFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JhbmRvbSB3cml0ZSByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCg3KTsgCgl9CgoJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUkVWRVJTRV9NQVNLKSkgewoJCWlmKGJpZl9mbGFnKQoJCQlkb19sYWJlbChiaWZfZmQsIkJhY2t3YXJkIFJlYWQgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjQmFja3dhcmQgcmVhZCByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCg4KTsgCgl9CgoJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUkVXUklURV9SRUNfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCJSZWNvcmQgUmV3cml0ZSBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZWNvcmQgcmV3cml0ZSByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCg5KTsgCgl9CgoJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpU1RSSURFX1JFQURfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCJTdHJpZGUgUmVhZCBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNTdHJpZGUgcmVhZCByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCgxMCk7IAoJfQoKCWlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKUZXUklURVJfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCJGd3JpdGUgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjRndyaXRlIHJlcG9ydCVjXG4iLDA0MiwwNDIpOwoJCWR1bXBfcmVwb3J0KDExKTsgCgkJaWYoYmlmX2ZsYWcpCgkJCWRvX2xhYmVsKGJpZl9mZCwiUmUtZndyaXRlIFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLUZ3cml0ZSByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCgxMik7IAoJfQoKCWlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKUZSRUFERVJfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCJGcmVhZCBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNGcmVhZCByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3JlcG9ydCgxMyk7IAoJCWlmKGJpZl9mbGFnKQoJCQlkb19sYWJlbChiaWZfZmQsIlJlLWZyZWFkIFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLUZyZWFkIHJlcG9ydCVjXG4iLDA0MiwwNDIpOwoJCWR1bXBfcmVwb3J0KDE0KTsgCgl9CgojaWZkZWYgSEFWRV9QUkVBRAoJaWYoRWZsYWcpCgl7CgkJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUFdSSVRFUl9NQVNLKSkgewoJCQlpZihiaWZfZmxhZykKCQkJCWRvX2xhYmVsKGJpZl9mZCwiUHdyaXRlIFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwoJCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNQd3JpdGUgcmVwb3J0JWNcbiIsMDQyLDA0Mik7CgkJCWR1bXBfcmVwb3J0KDE1KTsgCgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCJSZS1wd3JpdGUgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CgkJIAlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZS1Qd3JpdGUgcmVwb3J0JWNcbiIsMDQyLDA0Mik7CgkJIAlkdW1wX3JlcG9ydCgxNik7IAoJCX0KCgkJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUFJFQURFUl9NQVNLKSkgewoJCQlpZihiaWZfZmxhZykKCQkJCWRvX2xhYmVsKGJpZl9mZCwiUHJlYWQgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CgkJIAlpZighc2lsZW50KSBwcmludGYoIlxuJWNQcmVhZCByZXBvcnQlY1xuIiwwNDIsMDQyKTsKCQkgCWR1bXBfcmVwb3J0KDE3KTsgCgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCJSZS1wcmVhZCBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQkgCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLVByZWFkIHJlcG9ydCVjXG4iLDA0MiwwNDIpOwoJCSAJZHVtcF9yZXBvcnQoMTgpOyAKCQl9CgojaWZkZWYgSEFWRV9QUkVBRFYKCQlpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylQV1JJVEVWX01BU0spKSB7CgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCJQd3JpdGV2IFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwogCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUHdyaXRldiByZXBvcnQlY1xuIiwwNDIsMDQyKTsKIAkJCWR1bXBfcmVwb3J0KDE5KTsgCgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCJSZS1wd3JpdGV2IFJlcG9ydCIsYmlmX3JvdysrLGJpZl9jb2x1bW4pOwogCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUmUtUHdyaXRldiByZXBvcnQlY1xuIiwwNDIsMDQyKTsKIAkJCWR1bXBfcmVwb3J0KDIwKTsgCgkJfQoKCQlpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylQUkVBRFZfTUFTSykpIHsKCQkJaWYoYmlmX2ZsYWcpCgkJCQlkb19sYWJlbChiaWZfZmQsIlByZWFkdiBSZXBvcnQiLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKIAkJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1ByZWFkdiByZXBvcnQlY1xuIiwwNDIsMDQyKTsKIAkJCWR1bXBfcmVwb3J0KDIxKTsgCgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCJSZS1wcmVhZHYgUmVwb3J0IixiaWZfcm93KyssYmlmX2NvbHVtbik7CiAJCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZS1QcmVhZHYgcmVwb3J0JWNcbiIsMDQyLDA0Mik7CiAJCQlkdW1wX3JlcG9ydCgyMik7IAoJCX0KI2VuZGlmCgl9CiNlbmRpZgoJaWYgKGNwdXV0aWxmbGFnKQoJCWR1bXBfY3B1dGltZXMoKTsKCWlmKGJpZl9mbGFnKQoJCWNsb3NlX3hscyhiaWZfZmQpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBkdW1wX3RpbWVzKCkJCSAJCQkJCQkqLwovKiBEdW1wcyB0aGUgRXhjZWwgQ1BVIHRpbWVzIHJlcG9ydCB0byBzdGRvdXQgYW5kIHRvIHRoZSBiaWYgZmlsZS4JKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIGR1bXBfdGltZXMobG9uZyBsb25nIHdobykKI2Vsc2UKZHVtcF90aW1lcyh3aG8pCmxvbmcgbG9uZyB3aG87CiNlbmRpZgp7Cglsb25nIGxvbmcgaTsKCW9mZjY0X3QgY3VycmVudF9maWxlX3NpemU7CglvZmY2NF90IHJlY19zaXplOwoKCWlmIChiaWZfZmxhZykKCQliaWZfY29sdW1uKys7CglpZighc2lsZW50KSBwcmludGYoIiAgICAgICIpOwoKCWZvciAocmVjX3NpemUgPSBnZXRfbmV4dF9yZWNvcmRfc2l6ZSgwKTsgcmVjX3NpemUgPD0gb3JpZ19tYXhfcmVjX3NpemU7CgkJcmVjX3NpemUgPSBnZXRfbmV4dF9yZWNvcmRfc2l6ZShyZWNfc2l6ZSkpCgl7CgkJaWYgKHJlY19zaXplID09IDApIGJyZWFrOwoJCWlmIChiaWZfZmxhZykKCQkJZG9fZmxvYXQoYmlmX2ZkLCAoZG91YmxlKShyZWNfc2l6ZS8xMDI0KSwgYmlmX3JvdywgYmlmX2NvbHVtbisrKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCWlmKCFzaWxlbnQpIHByaW50ZigiICAlYyVsZCVjIiwwNDIscmVjX3NpemUvMTAyNCwwNDIpOwojZWxzZQoJCWlmKCFzaWxlbnQpIHByaW50ZigiICAlYyVsbGQlYyIsMDQyLHJlY19zaXplLzEwMjQsMDQyKTsKI2VuZGlmCgl9CglpZighc2lsZW50KSBwcmludGYoIlxuIik7CglpZiAoYmlmX2ZsYWcpCgl7CgkJYmlmX2NvbHVtbj0wOwoJCWJpZl9yb3crKzsKCX0KCgljdXJyZW50X2ZpbGVfc2l6ZSA9IHJlcG9ydF9hcnJheVswXVswXTsKCWlmIChiaWZfZmxhZykKCXsKCQlkb19mbG9hdChiaWZfZmQsIChkb3VibGUpKGN1cnJlbnRfZmlsZV9zaXplKSwgYmlmX3JvdywgYmlmX2NvbHVtbisrKTsKCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCIlYyVsZCVjICAiLDA0MixjdXJyZW50X2ZpbGVfc2l6ZSwwNDIpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCIlYyVsbGQlYyAgIiwwNDIsY3VycmVudF9maWxlX3NpemUsMDQyKTsKI2VuZGlmCglmb3IgKGkgPSAwOyBpIDw9IG1heF95OyBpKyspIHsKCQlpZiAocmVwb3J0X2FycmF5WzBdW2ldICE9IGN1cnJlbnRfZmlsZV9zaXplKSB7CgkJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCQkJY3VycmVudF9maWxlX3NpemUgPSByZXBvcnRfYXJyYXlbMF1baV07CgkJCWlmIChiaWZfZmxhZykKCQkJewoJCQkJYmlmX3JvdysrOwoJCQkJYmlmX2NvbHVtbj0wOwoJCQkJZG9fZmxvYXQoYmlmX2ZkLCAoZG91YmxlKShjdXJyZW50X2ZpbGVfc2l6ZSksIGJpZl9yb3csIGJpZl9jb2x1bW4rKyk7CgkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlpZighc2lsZW50KSBwcmludGYoIiVjJWxkJWMgICIsMDQyLGN1cnJlbnRfZmlsZV9zaXplLDA0Mik7CiNlbHNlCgkJCWlmKCFzaWxlbnQpIHByaW50ZigiJWMlbGxkJWMgICIsMDQyLGN1cnJlbnRfZmlsZV9zaXplLDA0Mik7CiNlbmRpZgoJCX0KCQlpZiAoYmlmX2ZsYWcpCgkJCWRvX2Zsb2F0KGJpZl9mZCwgKGRvdWJsZSkocnVudGltZXMgW3dob11baV0uY3B1dXRpbCksIGJpZl9yb3csIGJpZl9jb2x1bW4rKyk7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCIgJTYuMmYiLCBydW50aW1lcyBbd2hvXVtpXS5jcHV1dGlsKTsKCX0KCWlmKCFzaWxlbnQpIHByaW50ZigiXG4iKTsKCWlmIChiaWZfZmxhZykKCXsKCQliaWZfcm93Kys7CgkJYmlmX2NvbHVtbj0wOwoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBXcmFwcGVyIHRoYXQgZHVtcHMgZWFjaCBvZiB0aGUgY29sbGVjdGVkIGRhdGEgc2V0cy4JCQkqLwovKiBUaGlzIG9uZSBkdW1wcyBvbmx5IHRoZSBjb2xsZWN0ZWQgQ1BVIHRpbWVzLgkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgZHVtcF9jcHV0aW1lcyh2b2lkKQojZWxzZQp2b2lkIGR1bXBfY3B1dGltZXModm9pZCkKI2VuZGlmCnsKCWJpZl9yb3crKzsKCWJpZl9jb2x1bW4gPSAwOwoKICAgIGlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVdSSVRFUl9NQVNLKSkgewoJaWYoYmlmX2ZsYWcpCgkJZG9fbGFiZWwoYmlmX2ZkLCAiV3JpdGVyIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSIsIGJpZl9yb3crKywgYmlmX2NvbHVtbik7CglpZighc2lsZW50KSBwcmludGYoIlxuJWNXcml0ZXIgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CglkdW1wX3RpbWVzKDIpOyAKCWlmKGJpZl9mbGFnKQoJCWRvX2xhYmVsKGJpZl9mZCwgIlJlLXdyaXRlciBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUmUtd3JpdGVyIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwoJZHVtcF90aW1lcygzKTsgCiAgICB9CgogICAgaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUkVBREVSX01BU0spKSB7CglpZihiaWZfZmxhZykKCQlkb19sYWJlbChiaWZfZmQsICJSZWFkZXIgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlYWRlciBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCWR1bXBfdGltZXMoNCk7IAoJaWYoYmlmX2ZsYWcpCgkJZG9fbGFiZWwoYmlmX2ZkLCAiUmUtcmVhZGVyIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSIsIGJpZl9yb3crKywgYmlmX2NvbHVtbik7CglpZighc2lsZW50KSBwcmludGYoIlxuJWNSZS1SZWFkZXIgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CglkdW1wX3RpbWVzKDUpOyAKICAgIH0KCglpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylSQU5ET01fUldfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCAiUmFuZG9tIFJlYWQgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSYW5kb20gcmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3RpbWVzKDYpOyAKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCAiUmFuZG9tIFdyaXRlIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSIsIGJpZl9yb3crKywgYmlmX2NvbHVtbik7CgkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUmFuZG9tIHdyaXRlIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwoJCWR1bXBfdGltZXMoNyk7IAoJfQoKCWlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVJFVkVSU0VfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCAiQmFja3dhcmQgUmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY0JhY2t3YXJkIHJlYWQgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CgkJZHVtcF90aW1lcyg4KTsgCgl9CgoJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUkVXUklURV9SRUNfTUFTSykpIHsKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCAiUmVjb3JkIFJld3JpdGUgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZWNvcmQgcmV3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3RpbWVzKDkpOyAKCX0KCglpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylTVFJJREVfUkVBRF9NQVNLKSkgewoJCWlmKGJpZl9mbGFnKQoJCQlkb19sYWJlbChiaWZfZmQsICJTdHJpZGUgUmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1N0cmlkZSByZWFkIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwoJCWR1bXBfdGltZXMoMTApOyAKCX0KCglpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylGV1JJVEVSX01BU0spKSB7CgkJaWYoYmlmX2ZsYWcpCgkJCWRvX2xhYmVsKGJpZl9mZCwgIkZ3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY0Z3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3RpbWVzKDExKTsgCgkJaWYoYmlmX2ZsYWcpCgkJCWRvX2xhYmVsKGJpZl9mZCwgIlJlLWZ3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLUZ3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3RpbWVzKDEyKTsgCgl9CgoJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpRlJFQURFUl9NQVNLKSkgewoJCWlmKGJpZl9mbGFnKQoJCQlkb19sYWJlbChiaWZfZmQsICJGcmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY0ZyZWFkIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwoJCWR1bXBfdGltZXMoMTMpOyAKCQlpZihiaWZfZmxhZykKCQkJZG9fbGFiZWwoYmlmX2ZkLCAiUmUtZnJlYWQgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZS1GcmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQlkdW1wX3RpbWVzKDE0KTsgCgl9CgojaWZkZWYgSEFWRV9QUkVBRAoJaWYoRWZsYWcpCgl7CgkJaWYgKCghaW5jbHVkZV90ZmxhZykgfHwgKGluY2x1ZGVfbWFzayAmIChsb25nIGxvbmcpUFdSSVRFUl9NQVNLKSkgewoJCQlpZihiaWZfZmxhZykKCQkJCWRvX2xhYmVsKGJpZl9mZCwgIlB3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNQd3JpdGUgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CgkJCWR1bXBfdGltZXMoMTUpOyAKCQkJaWYoYmlmX2ZsYWcpCgkJCQlkb19sYWJlbChiaWZfZmQsICJSZS1wd3JpdGUgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQkgCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLVB3cml0ZSBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCklY1xuIiwwNDIsMDQyKTsKCQkgCWR1bXBfdGltZXMoMTYpOyAKCQl9CgoJCWlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVBSRUFERVJfTUFTSykpIHsKCQkJaWYoYmlmX2ZsYWcpCgkJCQlkb19sYWJlbChiaWZfZmQsICJQcmVhZCBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCSAJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUHJlYWQgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CgkJIAlkdW1wX3RpbWVzKDE3KTsgCgkJCWlmKGJpZl9mbGFnKQoJCQkJZG9fbGFiZWwoYmlmX2ZkLCAiUmUtcHJlYWQgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQkgCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLVByZWFkIENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwoJCSAJZHVtcF90aW1lcygxOCk7IAoJCX0KCiNpZmRlZiBIQVZFX1BSRUFEVgoJCWlmICgoIWluY2x1ZGVfdGZsYWcpIHx8IChpbmNsdWRlX21hc2sgJiAobG9uZyBsb25nKVBXUklURVZfTUFTSykpIHsKCQkJaWYoYmlmX2ZsYWcpCgkJCQlkb19sYWJlbChiaWZfZmQsICJQd3JpdGV2IENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSIsIGJpZl9yb3crKywgYmlmX2NvbHVtbik7CiAJCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNQd3JpdGV2IENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwogCQkJZHVtcF90aW1lcygxOSk7IAoJCQlpZihiaWZfZmxhZykKCQkJCWRvX2xhYmVsKGJpZl9mZCwgIlJlLXB3cml0ZXYgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKIAkJCWlmKCFzaWxlbnQpIHByaW50ZigiXG4lY1JlLVB3cml0ZXYgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CiAJCQlkdW1wX3RpbWVzKDIwKTsgCgkJfQoKCQlpZiAoKCFpbmNsdWRlX3RmbGFnKSB8fCAoaW5jbHVkZV9tYXNrICYgKGxvbmcgbG9uZylQUkVBRFZfTUFTSykpIHsKCQkJaWYoYmlmX2ZsYWcpCgkJCQlkb19sYWJlbChiaWZfZmQsICJQcmVhZHYgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpIiwgYmlmX3JvdysrLCBiaWZfY29sdW1uKTsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCJcbiVjUHJlYWR2IENQVSB1dGlsaXphdGlvbiByZXBvcnQgKFplcm8gdmFsdWVzIHNob3VsZCBiZSBpZ25vcmVkKSVjXG4iLDA0MiwwNDIpOwogCQkJZHVtcF90aW1lcygyMSk7IAoJCQlpZihiaWZfZmxhZykKCQkJCWRvX2xhYmVsKGJpZl9mZCwgIlJlLXByZWFkdiBDUFUgdXRpbGl6YXRpb24gcmVwb3J0IChaZXJvIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCkiLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCQlpZighc2lsZW50KSBwcmludGYoIlxuJWNSZS1QcmVhZHYgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydCAoWmVybyB2YWx1ZXMgc2hvdWxkIGJlIGlnbm9yZWQpJWNcbiIsMDQyLDA0Mik7CgkJCWR1bXBfdGltZXMoMjIpOyAKCQl9CiNlbmRpZgoJfQojZW5kaWYKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogSW50ZXJuYWwgbWVtb3J5IGFsbG9jYXRpb24gbWVjaGFuaXNtLiBVc2VzIHNoYXJlZCBtZW1vcnkgb3IgbW1hcCAJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwpjaGFyICoKYWxsb2NfbWVtKGxvbmcgbG9uZyBzaXplLCBpbnQgc2hhcmVkX2ZsYWcpCiNlbHNlCmNoYXIgKgphbGxvY19tZW0oc2l6ZSxzaGFyZWRfZmxhZykKbG9uZyBsb25nIHNpemU7CmludCBzaGFyZWRfZmxhZzsKI2VuZGlmCnsKCWxvbmcgbG9uZyBzaXplMTsKCWNoYXIgKmFkZHIsKmR1bWI7CglpbnQgc2htaWQ7CglpbnQgdGZkOwoJbG9uZyBsb25nIHRtcDsKI2lmIGRlZmluZWQoc29sYXJpcykgCiAgICAgICAgY2hhciBtbWFwRmlsZU5hbWVbXT0ibW1hcF90bXBfWFhYWFhYIjsKI2VuZGlmCgoJdG1wID0gMDsKCWR1bWIgPSAoY2hhciAqKTA7Cgl0ZmQ9MDsKCXNpemUxPWxfbWF4KHNpemUscGFnZV9zaXplKTsKCWlmKCFkaXN0cmlidXRlZCkKCXsKCQlpZighdHJmbGFnKQoJCXsKCQkJYWRkcj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXNpemUxKTsKCQkJcmV0dXJuKGFkZHIpOwoJCX0KCQlpZih1c2VfdGhyZWFkKQoJCXsKCQkJYWRkcj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXNpemUxKTsKCQkJcmV0dXJuKGFkZHIpOwoJCX0KCX0KCWlmKCFzaGFyZWRfZmxhZykKCXsKCQlhZGRyPShjaGFyICopbWFsbG9jKChzaXplX3Qpc2l6ZTEpOwoJCXJldHVybihhZGRyKTsKCX0KI2lmZGVmIFNIQVJFRF9NRU0KCXNpemUxPWxfbWF4KHNpemUscGFnZV9zaXplKTsKCXNpemUxPShzaXplMSArcGFnZV9zaXplKSAmIH4ocGFnZV9zaXplLTEpOwoJc2htaWQ9KGludClzaG1nZXQoKGtleV90KShJUENfUFJJVkFURSksIChzaXplX3Qpc2l6ZTEgLCAoaW50KShJUENfQ1JFQVR8MDY2NikpOwogICAgICAgIGlmKHNobWlkIDwgKGludCkwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiXG5VbmFibGUgdG8gZ2V0IHNoYXJlZCBtZW1vcnkgc2VnbWVudChzaG1nZXQpXG4iKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAogICAgICAgICAgICAgICAgcHJpbnRmKCJzaG1pZCA9ICVkLCBzaXplID0gJWxkLCBzaXplMSA9ICVkLCBFcnJvciAlZFxuIixzaG1pZCxzaXplLChzaXplX3Qpc2l6ZTEsZXJybm8pOwojZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmKCJzaG1pZCA9ICVkLCBzaXplID0gJWxsZCwgc2l6ZTEgPSAlZCwgRXJyb3IgJWRcbiIsc2htaWQsc2l6ZSwoc2l6ZV90KXNpemUxLGVycm5vKTsKI2VuZGlmCiAgICAgICAgICAgICAgICBleGl0KDExOSk7CiAgICAgICAgfQogICAgICAgIC8qYWRkciA9IChjaGFyICopc2htYXQoc2htaWQsIDAsIFNITV9XKTsqLwoJLyogU29tZSBzeXN0ZW1zIHdpbGwgbm90IHRha2UgdGhlIGFib3ZlIGJ1dAoJICogd2lsbCBkZWZhdWx0IHRvIHJlYWQvd3JpdGUgaWYgbm8gZmxhZ3MKCSAqIGFyZSBwcm92aWRlZC4gKEFJWCkKCSAqIFRoZSBQT1NJWCBzdGFuZGFyZCBzdGF0ZXMgdGhhdCBpZiBTSE1fUkRPTkxZCgkgKiBpcyBub3Qgc3BlY2lmaWVkIHRoZW4gaXQgd2lsbCBiZSByZWFkL3dyaXRlLgoJICovCiAgICAgICAgYWRkciA9IChjaGFyICopc2htYXQoKGludClzaG1pZCwgMCwgMCk7CiNpZmRlZiBfNjRCSVRfQVJDSF8KICAgICAgICBpZigobG9uZyBsb25nKWFkZHIgPT0gKGxvbmcgbG9uZyktMSkKI2Vsc2UKICAgICAgICBpZigobG9uZylhZGRyID09IChsb25nKS0xKQojZW5kaWYKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIlxuVW5hYmxlIHRvIGdldCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRcbiIpOwogICAgICAgICAgICAgICAgcHJpbnRmKCIuLkVycm9yICVkXG4iLGVycm5vKTsKICAgICAgICAgICAgICAgIGV4aXQoMTIwKTsKICAgICAgICB9CglzaG1jdGwoc2htaWQsIElQQ19STUlELCAwKTsKCXJldHVybihhZGRyKTsKI2Vsc2UKCglzaXplMT1sX21heChzaXplLHBhZ2Vfc2l6ZSk7CglzaXplMT0oc2l6ZTEgK3BhZ2Vfc2l6ZSkgJiB+KHBhZ2Vfc2l6ZS0xKTsKI2lmIGRlZmluZWQoYnNkNF8yKSAmJiAhZGVmaW5lZChtYWNvc3gpCglpZigodGZkID0gY3JlYXQoIm1tYXAudG1wIiwgMDY2NikpPDApCgl7CgkJcHJpbnRmKCJVbmFibGUgdG8gY3JlYXRlIHRtcCBmaWxlXG4iKTsKCQlleGl0KDEyMSk7Cgl9CglhZGRyPShjaGFyICopbW1hcCgwLCZzaXplMSxQUk9UX1dSSVRFfFBST1RfUkVBRCwKCQlNQVBfQU5PTnxNQVBfU0hBUkVELCB0ZmQsIDApOwoJdW5saW5rKCJtbWFwLnRtcCIpOwojZWxzZQoKCiNpZiBkZWZpbmVkKHNvbGFyaXMpIAoJdGZkPW1rc3RlbXAobW1hcEZpbGVOYW1lKTsKICAgICAgICBpZih0ZmQgPCAwKQoJewoJCXByaW50ZigiVW5hYmxlIHRvIGNyZWF0ZSB0bXAgZmlsZVxuIik7CgkJZXhpdCgxMjEpOwoJfQoJZHVtYj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXNpemUxKTsKCWJ6ZXJvKGR1bWIsc2l6ZTEpOwoJd3JpdGUodGZkLGR1bWIsc2l6ZTEpOwoJZnJlZShkdW1iKTsKCWFkZHI9KGNoYXIgKiltbWFwKDAsKHNpemVfdClzaXplMSxQUk9UX1dSSVRFfFBST1RfUkVBRCwKCQlNQVBfU0hBUkVELCB0ZmQsIDApOwoJdW5saW5rKG1tYXBGaWxlTmFtZSk7CiNlbHNlCiNpZiBkZWZpbmVkKFNDTykgfHwgZGVmaW5lZChTQ09fVW5peHdhcmVfZ2NjKSB8fCBkZWZpbmVkKFdpbmRvd3MpCiAgICAgICAgY2hhciBtbWFwRmlsZU5hbWVbXT0ibW1hcF90bXBfWFhYWFhYIjsKCXRmZD1ta3N0ZW1wKG1tYXBGaWxlTmFtZSk7CiAgICAgICAgaWYodGZkIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIlVuYWJsZSB0byBjcmVhdGUgdG1wIGZpbGVcbiIpOwogICAgICAgICAgICAgICAgZXhpdCgxMjEpOwogICAgICAgIH0KICAgICAgICBkdW1iPShjaGFyICopbWFsbG9jKChzaXplX3Qpc2l6ZTEpOwoJYnplcm8oZHVtYixzaXplMSk7CiAgICAgICAgd3JpdGUodGZkLGR1bWIsc2l6ZTEpOwogICAgICAgIGZyZWUoZHVtYik7CiAgICAgICAgYWRkcj0oY2hhciAqKW1tYXAoMCwoc2l6ZV90KXNpemUxLFBST1RfV1JJVEV8UFJPVF9SRUFELAogICAgICAgICAgICAgICAgTUFQX1NIQVJFRCwgdGZkLCAwKTsKCXVubGluayhtbWFwRmlsZU5hbWUpOwojZWxzZQoJYWRkcj0oY2hhciAqKW1tYXAoMCwoc2l6ZV90KXNpemUxLFBST1RfV1JJVEV8UFJPVF9SRUFELAoJCU1BUF9BTk9OWU1PVVN8TUFQX1NIQVJFRCwgLTEsIDApOwojZW5kaWYKI2VuZGlmCiNlbmRpZgoJaWYoKGNoYXIgKilhZGRyID09IChjaGFyICopLTEpCgl7CgkJcHJpbnRmKCJcblVuYWJsZSB0byBnZXQgbWVtb3J5IHNlZ21lbnRcbiIpOwoJCXByaW50ZigiRXJyb3IgJWRcbiIsZXJybm8pOwoJCWV4aXQoMTIyKTsKCX0KCWlmKGRlYnVnMSkKCQlwcmludGYoIkdvdCBzaGFyZWQgbWVtb3J5IGZvciBzaXplICVkXG4iLHNpemUxKTsKCglyZXR1cm4oYWRkcik7CiNlbmRpZgp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBJbXBsZW1lbnRhdGlvbiBvZiBwb2xsKCkgZnVuY3Rpb24uCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgUG9sbChsb25nIGxvbmcgdGltZTEpCiNlbHNlCnZvaWQgUG9sbCh0aW1lMSkKbG9uZyAgbG9uZyB0aW1lMTsKI2VuZGlmCnsKCXN0cnVjdCB0aW1ldmFsIGhvd2xvbmc7Cglob3dsb25nLnR2X3NlYz0oaW50KSh0aW1lMS8xMDAwMDApOwoJaG93bG9uZy50dl91c2VjPShpbnQpKHRpbWUxJTEwMDAwMCk7IC8qIEdldCBpbnRvIHUucy4gKi8KCXNlbGVjdCgwLCAwLCAwLCAwLCAmaG93bG9uZyk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEltcGxlbWVudGF0aW9uIG9mIG1heCgpIGZ1bmN0aW9uLgkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwpsb25nIGxvbmcgbF9tYXgobG9uZyBsb25nIG9uZSxsb25nIGxvbmcgdHdvKQojZWxzZQpsb25nIGxvbmcgbF9tYXgob25lLHR3bykKbG9uZyBsb25nIG9uZSx0d287CiNlbmRpZgp7CglpZihvbmUgPiB0d28pCgkJcmV0dXJuKG9uZSk7CgllbHNlCgkJcmV0dXJuKHR3byk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEludGVybmFsIEtpbGwuIFdpdGggc3RvbmV3YWxsaW5nIGRpc2FibGVkLCBraWxsIGRvZXMgbm90aGluZyAJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIEtpbGwobG9uZyBsb25nIHBpZCxsb25nIGxvbmcgc2lnKQojZWxzZQp2b2lkIEtpbGwocGlkLHNpZykKbG9uZyBsb25nIHBpZCxzaWc7CiNlbmRpZgp7CglpZigheGZsYWcpCgl7CgkJLypwcmludGYoIktpbGxpbmcgJWRcbiIscGlkKTsqLwoJCWtpbGwoKHBpZF90KXBpZCwoaW50KXNpZyk7Cgl9Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogSW1wbGVtZW50YXRpb24gb2YgbWluKCkgZnVuY3Rpb24uCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwpsb25nIGxvbmcgbF9taW4obG9uZyBsb25nIG51bTEsbG9uZyBsb25nIG51bTIpCiNlbHNlCmxvbmcgbG9uZyBsX21pbihudW0xLG51bTIpCmxvbmcgbG9uZyBudW0xLG51bTI7CiNlbmRpZgp7CglpZihudW0xID49IG51bTIpCgkJcmV0dXJuIG51bTI7CgllbHNlCgkJcmV0dXJuIG51bTE7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJvdXRpbmUgdG8gY2FsbCB0aHJvdWdocHV0IHRlc3RzIG1hbnkgdGltZXMuCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKbXVsdGlfdGhyb3VnaHB1dF90ZXN0KGxvbmcgbG9uZyBtaW50LGxvbmcgbG9uZyBtYXh0KQojZWxzZQp2b2lkIG11bHRpX3Rocm91Z2hwdXRfdGVzdChtaW50LCBtYXh0KQpsb25nIGxvbmcgbWludCwgbWF4dDsKI2VuZGlmCnsKICAgICAgICBpbnQgKnRfcmFuZ2VwdHIsICp0X3JhbmdlY3VyczsKICAgICAgICBpbnQgKnNhdmVwdHIgPSAoaW50ICopMDsKICAgICAgICBpbnQgdG9mcmVlID0gMDsKCWxvbmcgbG9uZyBpOwogICAgICAgIGlmKHRfY291bnQgPT0gMCl7CiAgICAgICAgICAgIHRfY291bnQgPSAoaW50KSBtYXh0IC0gbWludCArIDE7CiAgICAgICAgICAgIHRfcmFuZ2VwdHIgPSAoaW50ICopIG1hbGxvYygoc2l6ZV90KXNpemVvZihpbnQpKnRfY291bnQpOwoJICAgIHNhdmVwdHIgPSB0X3JhbmdlcHRyOwogICAgICAgICAgICB0b2ZyZWUgPSAxOwogICAgICAgICAgICB0X3JhbmdlY3VycyA9IHRfcmFuZ2VwdHI7CiAgICAgICAgICAgIGZvcihpPW1pbnQ7IGk8PSBtYXh0OyBpKyspIHsKICAgICAgICAgICAgICAgICoodF9yYW5nZWN1cnMrKykgPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0X3JhbmdlcHRyID0gJnRfcmFuZ2VbMF07CiAgICAgICAgfQoJZm9yKGk9MDsgaSA8IHRfY291bnQ7IGkrKyl7CgkJbnVtX2NoaWxkID0gKih0X3JhbmdlcHRyKyspOwoJCWN1cnJlbnRfY2xpZW50X251bWJlcj0wOyAvKiBOZWVkIHRvIHN0YXJ0IHdpdGggMSAqLwoJCXRocm91Z2hwdXRfdGVzdCgpOwoJCWN1cnJlbnRfeD0wOwoJCWN1cnJlbnRfeSsrOwoJfQoJaWYoUmZsYWcpCgkJZHVtcF90aHJvdWdocHV0KCk7CiAgICAgICAgaWYodG9mcmVlKQogICAgICAgICAgICBmcmVlKHNhdmVwdHIpOwoKfQoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBSb3V0aW5lIHRvIHB1cmdlIHRoZSBidWZmZXIgY2FjaGUgYnkgdW5tb3VudGluZyBkcml2ZS4JCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApwdXJnZV9idWZmZXJfY2FjaGUoKQojZWxzZQpwdXJnZV9idWZmZXJfY2FjaGUoKQojZW5kaWYKewoJY2hhciBjb21tYW5kWzEwMjRdOwoJaW50IHJldCxpOwoJc3RyY3B5KGNvbW1hbmQsInVtb3VudCAiKTsKCXN0cmNhdChjb21tYW5kLCBtb3VudG5hbWUpOwogICAgICAgIC8qCiAgICAgICAgICAgdW1vdW50IG1pZ2h0IGZhaWwgaWYgdGhlIGRldmljZSBpcyBzdGlsbCBidXN5LCBzbwogICAgICAgICAgIHJldHJ5IHVubW91bnRpbmcgc2V2ZXJhbCB0aW1lcyB3aXRoIGluY3JlYXNpbmcgZGVsYXlzCiAgICAgICAgKi8KICAgICAgICBmb3IgKGkgPSAxOyBpIDwgMTA7ICsraSkgewogICAgICAgICAgICAgICByZXQgPSBzeXN0ZW0oY29tbWFuZCk7CiAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgc2xlZXAoaSk7IC8qIHNlY29uZHMgKi8KICAgICAgICB9CglzdHJjcHkoY29tbWFuZCwibW91bnQgIik7CglzdHJjYXQoY29tbWFuZCwgbW91bnRuYW1lKTsKCS8qCiAgICAgICAgIG1vdW50IG1pZ2h0IGZhaWwgaWYgdGhlIGRldmljZSBpcyBzdGlsbCBidXN5LCBzbwogICAgICAgICByZXRyeSBtb3VudGluZyBzZXZlcmFsIHRpbWVzIHdpdGggaW5jcmVhc2luZyBkZWxheXMKICAgICAgICAqLwogICAgICAgIGZvciAoaSA9IDE7IGkgPCAxMDsgKytpKSB7CiAgICAgICAgICAgICAgcmV0ID0gc3lzdGVtKGNvbW1hbmQpOwogICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkKICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgc2xlZXAoaSk7IC8qIHNlY29uZHMgKi8KICAgICAgICAgfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWQgd3JpdGUgdGVzdAkJCQkgICAgICAgIAkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX3dyaXRlX3Rlc3Qodm9pZCAqeCkKI2Vsc2UKdm9pZCAqCnRocmVhZF93cml0ZV90ZXN0KCB4KQojZW5kaWYKewoKCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCWRvdWJsZSBzdGFydHRpbWUxID0gMDsKCWRvdWJsZSB0ZW1wX3RpbWU7Cglkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7CglmbG9hdCBkZWxheSA9IChmbG9hdCkwOwoJZG91YmxlIHRocmVhZF9xdGltZV9zdG9wLHRocmVhZF9xdGltZV9zdGFydDsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7CglvZmY2NF90IHNhdmVfb2Zmc2V0PTA7Cglsb25nIGxvbmcgZmxhZ3MsdHJhal9zaXplOwoJbG9uZyBsb25nIHdfdHJhal9ieXRlc19jb21wbGV0ZWQ7Cglsb25nIGxvbmcgd190cmFqX29wc19jb21wbGV0ZWQ7CglGSUxFICp3X3RyYWpfZmQ7CglpbnQgZmQ7Cglsb25nIGxvbmcgcmVjc19wZXJfYnVmZmVyOwoJbG9uZyBsb25nIHN0b3BwZWQsaTsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJlYWRfc29fZmFyLCByZV93cml0dGVuX3NvX2ZhcixyZV9yZWFkX3NvX2ZhcjsKCWxvbmcgbG9uZyB4eCx4eDI7CgljaGFyICpkdW1teWZpbGUgW01BWFNUUkVBTVNdOyAgICAgICAgICAgLyogbmFtZSBvZiBkdW1teSBmaWxlICAgICAqLwoJY2hhciAqbmJ1ZmY7CgljaGFyICptYWRkcjsKCWNoYXIgKndtYWRkciwqZnJlZV9hZGRyOwoJY2hhciBub3dfc3RyaW5nWzMwXTsKCWludCBhbndzZXIsYmluZF9jcHUsd3ZhbDsKI2lmIGRlZmluZWQoVlhGUykgfHwgZGVmaW5lZChzb2xhcmlzKQoJaW50IHRlc3RfZm9vID0gMDsKI2VuZGlmCglvZmY2NF90IGZpbGVieXRlczY0OwoJY2hhciB0bXBuYW1lWzI1Nl07CglGSUxFICp0aHJlYWRfd3FmZDsKCUZJTEUgKnRocmVhZF9Md3FmZDsKCiNpZmRlZiBBU1lOQ19JTwoJc3RydWN0IGNhY2hlICpnYz0wOwoKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCgoJaWYoY29tcHV0ZV9mbGFnKQoJCWRlbGF5PWNvbXB1dGVfdGltZTsKCW5idWZmPW1hZGRyPXdtYWRkcj1mcmVlX2FkZHI9MDsKCXRocmVhZF9xdGltZV9zdG9wPXRocmVhZF9xdGltZV9zdGFydD0wOwoJdGhyZWFkX3dxZmQ9d190cmFqX2ZkPXRocmVhZF9Md3FmZD0oRklMRSAqKTA7Cgl0cmFqX29mZnNldD13YWxsdGltZT1jcHV0aW1lPTA7CglhbndzZXI9YmluZF9jcHU9MDsKCWlmKHdfdHJhal9mbGFnKQoJewoJCWZpbGVieXRlczY0ID0gd190cmFqX2ZzaXplOwoJCW51bXJlY3M2ND13X3RyYWpfb3BzOwoJfQoJZWxzZQoJewoJCWZpbGVieXRlczY0ID0gbnVtcmVjczY0KnJlY2xlbjsKCX0KCXdyaXR0ZW5fc29fZmFyPXJlYWRfc29fZmFyPXJlX3dyaXR0ZW5fc29fZmFyPXJlX3JlYWRfc29fZmFyPTA7Cgl3X3RyYWpfYnl0ZXNfY29tcGxldGVkPXdfdHJhal9vcHNfY29tcGxldGVkPTA7CglyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCXsKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJfQoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglpZihkZWJ1ZzEgKQoJewoJICAgaWYodXNlX3RocmVhZCkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBjaGlsZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5TdGFydGluZyBjaGlsZCAlbGxkXG4iLHh4KTsKI2VuZGlmCgkgICBlbHNlCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsZFxuIixnZXRwaWQoKSx4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIHByb2Nlc3MgJWQgc2xvdCAlbGxkXG4iLGdldHBpZCgpLHh4KTsKI2VuZGlmCgkJCgl9CglkdW1teWZpbGVbeHhdPShjaGFyICopbWFsbG9jKChzaXplX3QpTUFYTkFNRVNJWkUpOwoJeHgyPXh4OwoJaWYoc2hhcmVfZmlsZSkKCQl4eDI9KGxvbmcgbG9uZykwOwoJaWYobWZmbGFnKQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMiLGZpbGVhcnJheVt4eDJdKTsKI2VuZGlmCgl9CgllbHNlCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2Vsc2UKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsbGQiLGZpbGVhcnJheVt4eDJdLHh4Mik7CiNlbmRpZgoJfQoJLyoqKioqKioqKioqKioqKioqLwoJLyogQ2hpbGRyZW4gb25seSAqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBJbml0aWFsIHdyaXRlIHRocm91Z2hwdXQgcGVyZm9ybWFuY2UgdGVzdC4gKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWYgZGVmaW5lZChXaW5kb3dzKQoJaWYodW5idWZmZXJlZCkKCXsKCQloYW5kPUNyZWF0ZUZpbGUoZHVtbXlmaWxlW3h4XSwKCQkJR0VORVJJQ19SRUFEfEdFTkVSSUNfV1JJVEUsCgkJCUZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELAoJCQlOVUxMLE9QRU5fQUxXQVlTLEZJTEVfRkxBR19OT19CVUZGRVJJTkd8CgkJCUZJTEVfRkxBR19XUklURV9USFJPVUdIfEZJTEVfRkxBR19QT1NJWF9TRU1BTlRJQ1MsCgkJCU5VTEwpOwoJCUNsb3NlSGFuZGxlKGhhbmQpOwoJfQojZW5kaWYKCWlmKG9mbGFnKQoJCWZsYWdzPU9fUkRXUnxPX1NZTkN8T19DUkVBVDsKCWVsc2UKCQlmbGFncz1PX1JEV1J8T19DUkVBVDsKI2lmIGRlZmluZWQoT19EU1lOQykKCWlmKG9kc3luYykKCQlmbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKI2lmIGRlZmluZWQoV2luZG93cykKICAgICAgIAlpZih1bmJ1ZmZlcmVkKQogICAgICAgIHsKICAgICAgICAJaGFuZD1DcmVhdGVGaWxlKGR1bW15ZmlsZVt4eF0sCgkJICBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSwKCSAgICAgICAgICBGSUxFX1NIQVJFX1dSSVRFfEZJTEVfU0hBUkVfUkVBRCwKCQkgIE5VTEwsT1BFTl9FWElTVElORyxGSUxFX0ZMQUdfTk9fQlVGRkVSSU5HfAoJCSAgRklMRV9GTEFHX1dSSVRFX1RIUk9VR0h8RklMRV9GTEFHX1BPU0lYX1NFTUFOVElDUywKCQkgIE5VTEwpOwogICAgICAgCX0KICAgICAgICBlbHNlCiAgICAgICAgewojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoaW50KWZsYWdzLDA2NDApKTwwKQoJewoJCWNsaWVudF9lcnJvcj1lcnJubzsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCQlwcmludGYoIlxuQ2FuIG5vdCBvcGVuIHRlbXAgZmlsZTogJXNcbiIsIAoJCQlmaWxlbmFtZSk7CgkJcGVycm9yKCJvcGVuIik7CgkJZXhpdCgxMjUpOwoJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJfQojZW5kaWYKI2lmZGVmIFZYRlMKCWlmKGRpcmVjdF9mbGFnKQoJewoJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQlpZih0ZXN0X2ZvbyA9PSAwKQoJCXsKCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCSAgcHJpbnRmKCJcblZ4RlMgYWR2YW5jZWQgc2V0Y2FjaGUgZmVhdHVyZSBub3QgYXZhaWxhYmxlLlxuIik7CgkJCWV4aXQoMyk7CgkJfQoJfQojZW5kaWYKI2lmIGRlZmluZWQoc29sYXJpcykKICAgICAgICAgICAgICAgaWYoZGlyZWN0X2ZsYWcpCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZvbyA9IGRpcmVjdGlvKGZkLCBESVJFQ1RJT19PTik7CiAgICAgICAgICAgICAgICAgICAgICAgaWYodGVzdF9mb28gIT0gMCkKICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighY2xpZW50X2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpcmVjdGlvIG5vdCBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgkJYXN5bmNfaW5pdCgmZ2MsZmQsZGlyZWN0X2ZsYWcpOwojZW5kaWYKCWlmKG1tYXBmbGFnKQoJewoJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsKGZpbGVieXRlczY0KSwxLFBST1RfUkVBRHxQUk9UX1dSSVRFKTsKCX0KCWlmKHJlY2xlbiA8IGNhY2hlX3NpemUgKQoJewoJCXJlY3NfcGVyX2J1ZmZlciA9IGNhY2hlX3NpemUvcmVjbGVuIDsKCQluYnVmZj0mbmJ1ZmZbKHh4JXJlY3NfcGVyX2J1ZmZlcikqcmVjbGVuXTsKCX0KCWlmKGZldGNob24pCQkJLyogUHJlZmV0Y2ggaW50byBwcm9jZXNzb3IgY2FjaGUgKi8KCQlmZXRjaGl0KG5idWZmLHJlY2xlbik7CglpZigodmVyaWZ5ICYmICFub19jb3B5X2ZsYWcpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKTApOwoKCWlmKHdfdHJhal9mbGFnKQoJCXdfdHJhal9mZD1vcGVuX3dfdHJhaigpOwoKCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwkKCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAwOwoJY2hpbGRfc3RhdC0+YWN0dWFsID0gMDsKCWNoaWxkX3N0YXQtPmZsYWc9Q0hJTERfU1RBVEVfUkVBRFk7IC8qIFRlbGwgcGFyZW50IGNoaWxkIGlzIHJlYWR5IHRvIGdvICovCglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXRlbGxfbWFzdGVyX3JlYWR5KGNoaWQpOwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCXsKCQlpZihjZGVidWcpCgkJewoJCQlwcmludGYoIkNoaWxkICVkIHdhaXRpbmcgZm9yIGdvIGZyb20gbWFzdGVyXG4iLChpbnQpeHgpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJd2FpdF9mb3JfbWFzdGVyX2dvKGNoaWQpOwoJCWlmKGNkZWJ1ZykKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcmVjZWl2ZWQgZ28gZnJvbSBtYXN0ZXJcbiIsKGludCl4eCk7CgkJCWZmbHVzaChzdGRvdXQpOwoJCX0KCX0KCWVsc2UKCXsKCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAvKiBXYWl0IGZvciBzaWduYWwgZnJvbSBwYXJlbnQgKi8KCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJfQoKCXdyaXR0ZW5fc29fZmFyPTA7CgljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h4XTsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCXN0b3BwZWQ9MDsKCWlmKGZpbGVfbG9jaykKCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAxLCAoaW50KTApICE9IDApCgkJCXByaW50ZigiRmlsZSBsb2NrIGZvciB3cml0ZSBmYWlsZWQuICVkXG4iLGVycm5vKTsKCWlmKFFfZmxhZykKCXsKCQlzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3dvbC5kYXQiLChpbnQpeHgpOwoJCXRocmVhZF93cWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKCQlpZih0aHJlYWRfd3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZnByaW50Zih0aHJlYWRfd3FmZCwiT2Zmc2V0IGluIEtieXRlcyAgIExhdGVuY3kgaW4gbWljcm9zZWNvbmRzIFRyYW5zZmVyIHNpemUgaW4gYnl0ZXNcbiIpOwoJfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiV3JpdGUgdGVzdCBzdGFydDogIixub3dfc3RyaW5nKTsKCX0KCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJd2FsbHRpbWUgPSBzdGFydHRpbWUxOwoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpOwoJfQoJaWYod190cmFqX2ZsYWcpCgkJcmV3aW5kKHdfdHJhal9mZCk7Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQlpZih3X3RyYWpfZmxhZykKCQl7CgkJCXRyYWpfb2Zmc2V0PWdldF90cmFqKHdfdHJhal9mZCwgKGxvbmcgbG9uZyAqKSZ0cmFqX3NpemUsKGZsb2F0ICopJmRlbGF5LCAobG9uZykxKTsKCQkJcmVjbGVuPXRyYWpfc2l6ZTsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICBTZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKXRyYWpfb2Zmc2V0LDAsRklMRV9CRUdJTik7CgkJCWVsc2UKI2VuZGlmCgkJCUlfTFNFRUsoZmQsdHJhal9vZmZzZXQsU0VFS19TRVQpOwoJCX0KCQlpZihRX2ZsYWcpCgkJewojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQlpZih1bmJ1ZmZlcmVkKQoJCQkgIHRyYWpfb2Zmc2V0PVNldEZpbGVQb2ludGVyKGhhbmQsMCwwLEZJTEVfQ1VSUkVOVCk7CgkJCWVsc2UKI2VuZGlmCgkJCXRyYWpfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJfQoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkwLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQlpZigodmVyaWZ5ICYmICFub19jb3B5X2ZsYWcpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQlmaWxsX2J1ZmZlcihuYnVmZixyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnksaSk7CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoKnN0b3BfZmxhZyAmJiAhc3RvcHBlZCl7CgkJCWlmKGluY2x1ZGVfZmx1c2gpCgkJCXsKCQkJCWlmKG1tYXBmbGFnKQoJCQkJCW1zeW5jKG1hZGRyLChzaXplX3QpZmlsZWJ5dGVzNjQsTVNfU1lOQyk7CgkJCQllbHNlCgkJCQkJZnN5bmMoZmQpOwoJCQl9CgkJCS8qIENsb3NlIGFuZCByZS1vcGVuIHRvIGdldCBjbG9zZSBpbiBtZWFzdXJtZW50ICovCgkJCWlmKGluY2x1ZGVfY2xvc2UpCgkJCXsKCQkJICBzYXZlX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCQkgIGNsb3NlKGZkKTsKCQkJfQoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCQkodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOwoJCQlpZihpbmNsdWRlX2Nsb3NlKQoJCQl7CgkJCSAgaWYoKGZkID0gSV9PUEVOKGR1bW15ZmlsZVt4eF0sIChpbnQpZmxhZ3MsMCkpPDApCgkJCSAgewoJCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCQlzZW5kX3N0b3AoKTsKCQkJCXByaW50ZigiXG5DYW4gbm90IG9wZW4gdGVtcCBmaWxlOiAlc1xuIiwgCgkJCQkJZmlsZW5hbWUpOwoJCQkJcGVycm9yKCJvcGVuIik7CgkJCQlleGl0KDEyNSk7CgkJCSAgfQoJCQkgIElfTFNFRUsoZmQsc2F2ZV9vZmZzZXQsU0VFS19TRVQpOwoJCQl9CgkJCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCAoZG91YmxlKS4wMDAwMDEpIAoJCQl7CgkJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gdGltZV9yZXM7CgkJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJCXJlc19wcm9iPTE7CgkJCX0KCgkJCWlmKE9QU19mbGFnKXsKCQkJICAgLyp3cml0dGVuX3NvX2Zhcj0od3JpdHRlbl9zb19mYXIqMTAyNCkvcmVjbGVuOyovCgkJCSAgIHdyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJCQl9CgkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAKCQkJICAoZG91YmxlKXdyaXR0ZW5fc29fZmFyL2NoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJCWNoaWxkX3N0YXQtPmFjdHVhbCA9IChkb3VibGUpd3JpdHRlbl9zb19mYXI7CgkJCWlmKGRlYnVnMSkKCQkJewoJCQkJcHJpbnRmKCJcbiglbGQpIFN0b3BwZWQgYnkgYW5vdGhlclxuIiwgKGxvbmcpeHgpOwoJCQl9CgkJCXN0b3BwZWQ9MTsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQlpZihRX2ZsYWcpCgkJewoJCQl0aHJlYWRfcXRpbWVfc3RhcnQ9dGltZV9zb19mYXIoKTsKCQl9CmFnYWluOgkJCgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbaSpyZWNsZW5dOwoJCQlmaWxsX2FyZWEoKGxvbmcgbG9uZyopbmJ1ZmYsKGxvbmcgbG9uZyopd21hZGRyLChsb25nIGxvbmcpcmVjbGVuKTsKCQkJLypwcmludGYoIkNIaWQ6ICVsbGQgIFdyaXRpbmcgb2Zmc2V0ICVsbGQgZm9yIGxlbmd0aCBvZiAlbGxkXG4iLGNoaWQsaSpyZWNsZW4scmVjbGVuKTsqLwoJCQlpZighbW1hcG5zZmxhZykKCQkJewoJCQkgIGlmKG1tYXBhc2ZsYWcpCgkJCSAgICBtc3luYyh3bWFkZHIsKHNpemVfdClyZWNsZW4sTVNfQVNZTkMpOwoJCQkgIGlmKG1tYXBzc2ZsYWcpCgkJCSAgICBtc3luYyh3bWFkZHIsKHNpemVfdClyZWNsZW4sTVNfU1lOQyk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkgICBpZihhc3luY19mbGFnKQoJCSAgIHsKCQkJICAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgewoJCQkJZnJlZV9hZGRyPW5idWZmPShjaGFyICopbWFsbG9jKChzaXplX3QpcmVjbGVuK3BhZ2Vfc2l6ZSk7CgkJCQluYnVmZj0oY2hhciAqKSgoKGxvbmcpbmJ1ZmYrKGxvbmcpcGFnZV9zaXplKSAmIChsb25nKX4ocGFnZV9zaXplLTEpKTsKCQkJCWlmKHZlcmlmeSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQkJCQlmaWxsX2J1ZmZlcihuYnVmZixyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnksaSk7CgkJCSAgICAgICAgYXN5bmNfd3JpdGVfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgKGkqcmVjbGVuKSwgZGVwdGgsZnJlZV9hZGRyKTsKCQkJICAgICB9CgkJCSAgICAgZWxzZQoJCQkJYXN5bmNfd3JpdGUoZ2MsIChsb25nIGxvbmcpZmQsIG5idWZmLCByZWNsZW4sIChpKnJlY2xlbiksIGRlcHRoKTsKCQkgICB9CgkJICAgZWxzZQoJCSAgIHsKI2lmIGRlZmluZWQoV2luZG93cykKCQkgICAgICBpZih1bmJ1ZmZlcmVkKQoJCSAgICAgIHsKCQkJV3JpdGVGaWxlKGhhbmQsbmJ1ZmYscmVjbGVuLCAoTFBEV09SRCkmd3ZhbCwwKTsKCQkgICAgICB9CgkJICAgICAgZWxzZQoJCSAgICAgIHsKI2VuZGlmCgkJICAgICAgd3ZhbD13cml0ZShmZCwgbmJ1ZmYsIChzaXplX3QpIHJlY2xlbik7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJICAgICAgfQojZW5kaWYKCQkgICAgICBpZih3dmFsICE9IHJlY2xlbikKCQkgICAgICB7CgkJCWlmKCpzdG9wX2ZsYWcgJiYgIXN0b3BwZWQpewoJCQkJaWYoaW5jbHVkZV9mbHVzaCkKCQkJCXsKCQkJCQlpZihtbWFwZmxhZykKCQkJCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsKCQkJCQllbHNlCgkJCQkJCWZzeW5jKGZkKTsKCQkJCX0KCQkJCXRlbXBfdGltZSA9IHRpbWVfc29fZmFyKCk7CgkJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCQkJKHRlbXBfdGltZSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOwoJCQkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IChkb3VibGUpLjAwMDAwMSkgCgkJCQl7CgkJCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dD0gdGltZV9yZXM7CgkJCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQkJCXJlY19wcm9iID0gcmVjbGVuOwoJCQkJCXJlc19wcm9iPTE7CgkJCQl9CgoJCQkJaWYoT1BTX2ZsYWcpewoJCQkJICAgLyp3cml0dGVuX3NvX2Zhcj0od3JpdHRlbl9zb19mYXIqMTAyNCkvcmVjbGVuOyovCgkJCQkgICB3cml0dGVuX3NvX2Zhcj13X3RyYWpfb3BzX2NvbXBsZXRlZDsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAKCQkJCSAgKGRvdWJsZSl3cml0dGVuX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCQkJY2hpbGRfc3RhdC0+YWN0dWFsID0gKGRvdWJsZSl3cml0dGVuX3NvX2ZhcjsKCQkJCWlmKGRlYnVnMSkKCQkJCXsKCQkJCQlwcmludGYoIlxuKCVsZCkgU3RvcHBlZCBieSBhbm90aGVyXG4iLCAobG9uZyl4eCk7CgkJCQl9CgkJCQlzdG9wcGVkPTE7CgkJCQlnb3RvIGFnYWluOwoJCQl9CgkJCS8qIE5vdGU6IFdyaXRlciBtdXN0IGZpbmlzaCBldmVuIHRob3VnaCB0b2xkCgkJCSAgIHRvIHN0b3AuIE90aGVyd2lzZSB0aGUgcmVhZGVycyB3aWxsIGZhaWwuCgkJCSAgIFRoZSBjb2RlIHdpbGwgY2FwdHVyZSBieXRlcyB0cmFuc2ZlcmVkCgkJCSAgIGJlZm9yZSB0b2xkIHRvIHN0b3AgYnV0IGxldCB0aGUgd3JpdGVyCgkJCSAgIGNvbXBsZXRlLgoJCQkqLwojaWZkZWYgTk9fUFJJTlRfTExECgkJICAgIAlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayAlbGQsIGZkPSAlZFxuIiwgaSwKCQkJCSBmZCk7CiNlbHNlCgkJICAgIAlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayAlbGxkLCBmZD0gJWRcbiIsIGksCgkJCQkgZmQpOwojZW5kaWYKCQkJaWYod3ZhbD09LTEpCgkJCQlwZXJyb3IoIndyaXRlIik7CgkJCWlmICghbm9fdW5saW5rKQoJCQl7CgkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQl9CgkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCSAgICAJZXhpdCgxMjcpOwoJCSAgICAgIH0KCQkgICAgfQoJCX0KCQlpZihRX2ZsYWcpCgkJewoJCQl0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECgkJCWZwcmludGYodGhyZWFkX3dxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZWxzZQoJCQlmcHJpbnRmKHRocmVhZF93cWZkLCIlMTAuMWxsZCAlMTAuMGYgJTEwLjFsbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZW5kaWYKCQl9CgkJd190cmFqX29wc19jb21wbGV0ZWQrKzsKCQl3X3RyYWpfYnl0ZXNfY29tcGxldGVkKz1yZWNsZW47CgkJd3JpdHRlbl9zb19mYXIrPXJlY2xlbi8xMDI0OwoJCWlmKCpzdG9wX2ZsYWcpCgkJewoJCQl3cml0dGVuX3NvX2Zhci09cmVjbGVuLzEwMjQ7CgkJCXdfdHJhal9ieXRlc19jb21wbGV0ZWQtPXJlY2xlbjsKCQl9CgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTAsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJfQoJCgoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMCkpCgkJCXByaW50ZigiV3JpdGUgdW5sb2NrIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJCiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCXsKCQllbmRfYXN5bmMoZ2MpOwoJCWdjPTA7Cgl9CiNlbmRpZgoJaWYoIXhmbGFnKQoJewoJCSpzdG9wX2ZsYWc9MTsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCX0KCQoJaWYoaW5jbHVkZV9mbHVzaCkKCXsKCQlpZihtbWFwZmxhZykKCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsKCQllbHNlCgkJCWZzeW5jKGZkKTsKCX0KCWlmKGluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKHVuYnVmZmVyZWQpCgkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCWVsc2UKI2VuZGlmCgkJY2xvc2UoZmQpOwoJfQoJaWYoIXN0b3BwZWQpewoJCXRlbXBfdGltZSA9IHRpbWVfc29fZmFyKCk7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9ICgodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpCgkJCS1jb21wdXRlX3ZhbDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ9IHRpbWVfcmVzOwoJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCXJlY19wcm9iID0gcmVjbGVuOwoJCQlyZXNfcHJvYj0xOwoJCX0KCgkJaWYoT1BTX2ZsYWcpewoJCSAgIC8qd3JpdHRlbl9zb19mYXI9KHdyaXR0ZW5fc29fZmFyKjEwMjQpL3JlY2xlbjsqLwoJCSAgIHdyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJCX0KCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0KCQkJKGRvdWJsZSl3cml0dGVuX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWNoaWxkX3N0YXQtPmFjdHVhbCA9IChkb3VibGUpd3JpdHRlbl9zb19mYXI7Cgl9CglpZihjZGVidWcpCgl7CgkJcHJpbnRmKCJDaGlsZCAlZDogdGhyb3VnaHB1dCAlZiBhY3R1YWwgJWYgXG4iLChpbnQpY2hpZCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwKCQkJY2hpbGRfc3RhdC0+YWN0dWFsKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZTsKCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJCWNoaWxkX3N0YXQtPmNwdXRpbWUgPSBjcHV0aW1lOwoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lOwoJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gd2FsbHRpbWU7Cgl9CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXRlbGxfbWFzdGVyX3N0YXRzKFRIUkVBRF9XUklURV9URVNULCBjaGlkLCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCAKCQkJY2hpbGRfc3RhdC0+YWN0dWFsLCAKCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsCgkJCShjaGFyKSpzdG9wX2ZsYWcsCgkJCShsb25nIGxvbmcpQ0hJTERfU1RBVEVfSE9MRCk7CgkJCQoJaWYgKGRlYnVnMSkgewoJCXByaW50ZigiIGNoaWxkL3Nsb3Q6ICVsbGQsIHdhbGwtY3B1OiAlOC4zZiAlOC4zZkMiICIgLT4gJTYuMmYlJVxuIiwKCQkJeHgsIHdhbGx0aW1lLCBjcHV0aW1lLAoJCQljcHVfdXRpbChjcHV0aW1lLCB3YWxsdGltZSkpOwoJfQoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7IC8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCglzdG9wcGVkPTA7CgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qIEVuZCB3cml0ZSBwZXJmb3JtYW5jZSB0ZXN0LiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglpZihkZWJ1ZzEpCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxkXG4iLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxsZFxuIix4eCk7CiNlbmRpZgoJaWYoIWluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KW51bXJlY3M2NCpyZWNsZW4sTVNfU1lOQyk7IC8qQ2xlYW4gdXAgYmVmb3JlIHJlYWQgc3RhcnRzIHJ1bm5pbmcqLyAKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZyludW1yZWNzNjQqcmVjbGVuKTsKCQl9ZWxzZQoJCQlmc3luYyhmZCk7CgkJCQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKHVuYnVmZmVyZWQpCgkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCWVsc2UKI2VuZGlmCgkJY2xvc2UoZmQpOwoJfQoJaWYoUV9mbGFnICYmICh0aHJlYWRfd3FmZCAhPTApICkKCQlmY2xvc2UodGhyZWFkX3dxZmQpOwoJZnJlZShkdW1teWZpbGVbeHhdKTsKCWlmKHdfdHJhal9mbGFnKQoJCWZjbG9zZSh3X3RyYWpfZmQpOwoKCWlmKExfZmxhZykKCXsKCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJXcml0ZSB0ZXN0IGZpbmlzaGVkOiAiLG5vd19zdHJpbmcpOwoJCWZjbG9zZSh0aHJlYWRfTHdxZmQpOwoJfQoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQlyZXR1cm4oMCk7CiNpZmRlZiBOT19USFJFQURTCglleGl0KDApOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl0aHJlYWRfZXhpdCgpOwoJZWxzZQoJCWV4aXQoMCk7CiNlbmRpZgpyZXR1cm4oMCk7Cn0KCiNpZmRlZiBIQVZFX1BSRUFECi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRocmVhZCBwd3JpdGUgdGVzdAkJCQkgICAgICAgIAkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX3B3cml0ZV90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfcHdyaXRlX3Rlc3QoIHgpCiNlbmRpZgp7CgoJc3RydWN0IGNoaWxkX3N0YXRzICpjaGlsZF9zdGF0OwoJZG91YmxlIHN0YXJ0dGltZTEgPSAwOwoJZG91YmxlIHRlbXBfdGltZTsKCWRvdWJsZSB3YWxsdGltZSwgY3B1dGltZTsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWZsb2F0IGRlbGF5ID0gKGZsb2F0KTA7Cglkb3VibGUgdGhyZWFkX3F0aW1lX3N0b3AsdGhyZWFkX3F0aW1lX3N0YXJ0OwoJb2ZmNjRfdCB0cmFqX29mZnNldDsKCW9mZjY0X3QgbG9ja19vZmZzZXQ9MDsKCWxvbmcgbG9uZyBmbGFncyx0cmFqX3NpemU7Cglsb25nIGxvbmcgd190cmFqX2J5dGVzX2NvbXBsZXRlZDsKCWxvbmcgbG9uZyB3X3RyYWpfb3BzX2NvbXBsZXRlZDsKCUZJTEUgKndfdHJhal9mZDsKCWludCBmZDsKCWxvbmcgbG9uZyByZWNzX3Blcl9idWZmZXI7Cglsb25nIGxvbmcgc3RvcHBlZCxpOwoJb2ZmNjRfdCB3cml0dGVuX3NvX2ZhciwgcmVhZF9zb19mYXIsIHJlX3dyaXR0ZW5fc29fZmFyLHJlX3JlYWRfc29fZmFyOwoJbG9uZyBsb25nIHh4LHh4MjsKCWNoYXIgKmR1bW15ZmlsZSBbTUFYU1RSRUFNU107ICAgICAgICAgICAvKiBuYW1lIG9mIGR1bW15IGZpbGUgICAgICovCgljaGFyICpuYnVmZjsKCWNoYXIgKm1hZGRyOwoJY2hhciAqd21hZGRyLCpmcmVlX2FkZHI7CgljaGFyIG5vd19zdHJpbmdbMzBdOwoJaW50IGFud3NlcixiaW5kX2NwdSx3dmFsOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7CgljaGFyIHRtcG5hbWVbMjU2XTsKCUZJTEUgKnRocmVhZF93cWZkOwoJRklMRSAqdGhyZWFkX0x3cWZkOwoKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CgojZWxzZQoJbG9uZyBsb25nICpnYz0wOwojZW5kaWYKCglpZihjb21wdXRlX2ZsYWcpCgkJZGVsYXk9Y29tcHV0ZV90aW1lOwoJbmJ1ZmY9bWFkZHI9d21hZGRyPWZyZWVfYWRkcj0wOwoJdGhyZWFkX3F0aW1lX3N0b3A9dGhyZWFkX3F0aW1lX3N0YXJ0PTA7Cgl0aHJlYWRfd3FmZD13X3RyYWpfZmQ9dGhyZWFkX0x3cWZkPShGSUxFICopMDsKCXRyYWpfb2Zmc2V0PXdhbGx0aW1lPWNwdXRpbWU9MDsKCWFud3Nlcj1iaW5kX2NwdT0wOwoJaWYod190cmFqX2ZsYWcpCgl7CgkJZmlsZWJ5dGVzNjQgPSB3X3RyYWpfZnNpemU7CgkJbnVtcmVjczY0PXdfdHJhal9vcHM7Cgl9CgllbHNlCgl7CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoJd3JpdHRlbl9zb19mYXI9cmVhZF9zb19mYXI9cmVfd3JpdHRlbl9zb19mYXI9cmVfcmVhZF9zb19mYXI9MDsKCXdfdHJhal9ieXRlc19jb21wbGV0ZWQ9d190cmFqX29wc19jb21wbGV0ZWQ9MDsKCXJlY3NfcGVyX2J1ZmZlciA9IGNhY2hlX3NpemUvcmVjbGVuIDsKI2lmZGVmIE5PX1RIUkVBRFMKCXh4PWNoaWQ7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJewoJCXh4ID0gKGxvbmcgbG9uZykoKGxvbmcpeCk7Cgl9CgllbHNlCgl7CgkJeHg9Y2hpZDsKCX0KI2VuZGlmCiNpZm5kZWYgTk9fVEhSRUFEUwojaWZkZWYgX0hQVVhfU09VUkNFCglpZihpb3pfcHJvY2Vzc29yX2JpbmQpCgl7CgkJIGJpbmRfY3B1PShiZWdpbl9wcm9jKyhpbnQpeHgpJW51bV9wcm9jZXNzb3JzOwoJCSBwdGhyZWFkX3Byb2Nlc3Nvcl9iaW5kX25wKFBUSFJFQURfQklORF9GT1JDRURfTlAsCiAgICAgICAgICAgICAgICAgICAgICAgICAocHRocmVhZF9zcHVfdCAqKSZhbndzZXIsIChwdGhyZWFkX3NwdV90KWJpbmRfY3B1LCBwdGhyZWFkX3NlbGYoKSk7CgkJbXlfbmFwKDQwKTsJLyogU3dpdGNoIHRvIG5ldyBjcHUgKi8KCX0KI2VuZGlmCiNlbmRpZgoJaWYodXNlX3RocmVhZCkKCQluYnVmZj1iYXJyYXlbeHhdOwoJZWxzZQoJCW5idWZmPWJ1ZmZlcjsKCWlmKGRlYnVnMSApCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCSAgIHNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMiLGZpbGVhcnJheVt4eDJdKTsKI2Vsc2UKCSAgIHNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMiLGZpbGVhcnJheVt4eDJdKTsKI2VuZGlmCgl9CgllbHNlCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCSAgIHNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJICAgc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcy5EVU1NWS4lbGxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZW5kaWYKCX0KCS8qKioqKioqKioqKioqKioqKi8KCS8qIENoaWxkcmVuIG9ubHkgKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyogSW5pdGlhbCB3cml0ZSB0aHJvdWdocHV0IHBlcmZvcm1hbmNlIHRlc3QuICoqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCWlmKCFub3RydW5jYXRlKQoJewoJCWlmKChmZCA9IElfQ1JFQVQoZHVtbXlmaWxlW3h4XSwgMDY0MCkpPDApCgkJewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKCQkJcGVycm9yKGR1bW15ZmlsZVt4eF0pOwoJCQlleGl0KDEyMyk7CgkJfQoJCWNsb3NlKGZkKTsKCX0KCWlmKG9mbGFnKQoJCWZsYWdzPU9fUkRXUnxPX1NZTkN8T19DUkVBVDsKCWVsc2UKCQlmbGFncz1PX1JEV1J8T19DUkVBVDsKI2lmIGRlZmluZWQoT19EU1lOQykKCWlmKG9kc3luYykKCQlmbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoaW50KWZsYWdzLDA2NDApKTwwKQoJewoJCWNsaWVudF9lcnJvcj1lcnJubzsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCQlwcmludGYoIlxuQ2FuIG5vdCBvcGVuIHRlbXAgZmlsZTogJXNcbiIsIAoJCQlmaWxlbmFtZSk7CgkJcGVycm9yKCJvcGVuIik7CgkJZXhpdCgxMjUpOwoJfQojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCglpZihtbWFwZmxhZykKCXsKCQltYWRkcj0oY2hhciAqKWluaXRmaWxlKGZkLChmaWxlYnl0ZXM2NCksMSxQUk9UX1JFQUR8UFJPVF9XUklURSk7Cgl9CglpZihyZWNsZW4gPCBjYWNoZV9zaXplICkKCXsKCQlyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CgkJbmJ1ZmY9Jm5idWZmWyh4eCVyZWNzX3Blcl9idWZmZXIpKnJlY2xlbl07Cgl9CglpZihmZXRjaG9uKQkJCS8qIFByZWZldGNoIGludG8gcHJvY2Vzc29yIGNhY2hlICovCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJaWYoKHZlcmlmeSAmJiAhbm9fY29weV9mbGFnKSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQlmaWxsX2J1ZmZlcihuYnVmZixyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnksKGxvbmcgbG9uZykwKTsKCglpZih3X3RyYWpfZmxhZykKCQl3X3RyYWpfZmQ9b3Blbl93X3RyYWooKTsKCgljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h4XTsJCgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CgljaGlsZF9zdGF0LT5mbGFnPUNISUxEX1NUQVRFX1JFQURZOyAvKiBUZWxsIHBhcmVudCBjaGlsZCBpcyByZWFkeSB0byBnbyAqLwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQl0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgl7CgkJaWYoY2RlYnVnKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCB3YWl0aW5nIGZvciBnbyBmcm9tIG1hc3RlclxuIiwoaW50KXh4KTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKCQlpZihjZGVidWcpCgkJewoJCQlwcmludGYoIkNoaWxkICVkIHJlY2VpdmVkIGdvIGZyb20gbWFzdGVyXG4iLChpbnQpeHgpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9Cgl9CgllbHNlCgl7CgkJd2hpbGUoY2hpbGRfc3RhdC0+ZmxhZyE9Q0hJTERfU1RBVEVfQkVHSU4pICAgLyogV2FpdCBmb3Igc2lnbmFsIGZyb20gcGFyZW50ICovCgkJCVBvbGwoKGxvbmcgbG9uZykxKTsKCX0KCgl3cml0dGVuX3NvX2Zhcj0wOwoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT5hY3R1YWwgPSAwOwoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IDA7CglzdG9wcGVkPTA7CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMSwgKGludCkwKSAhPSAwKQoJCQlwcmludGYoIkZpbGUgbG9jayBmb3Igd3JpdGUgZmFpbGVkLiAlZFxuIixlcnJubyk7CglpZihRX2ZsYWcpCgl7CgkJc3ByaW50Zih0bXBuYW1lLCJDaGlsZF8lZF9wd29sLmRhdCIsKGludCl4eCk7CgkJdGhyZWFkX3dxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF93cWZkPT0wKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWV4aXQoNDApOwoJCX0KCQlmcHJpbnRmKHRocmVhZF93cWZkLCJPZmZzZXQgaW4gS2J5dGVzICAgTGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMgIFRyYW5zZmVyIHNpemUgaW4gYnl0ZXNcbiIpOwoJfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiUHdyaXRlIHRlc3Qgc3RhcnQ6ICIsbm93X3N0cmluZyk7Cgl9CglzdGFydHRpbWUxID0gdGltZV9zb19mYXIoKTsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCXdhbGx0aW1lID0gc3RhcnR0aW1lMTsKCQljcHV0aW1lID0gY3B1dGltZV9zb19mYXIoKTsKCX0KCWlmKHdfdHJhal9mbGFnKQoJCXJld2luZCh3X3RyYWpfZmQpOwoJZm9yKGk9MDsgaTxudW1yZWNzNjQ7IGkrKyl7CgkJdHJhal9vZmZzZXQ9ICggaSAqIHJlY2xlbiApOwoJCWlmKHdfdHJhal9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWood190cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmZGVsYXksIChsb25nKTEpOwoJCQlyZWNsZW49dHJhal9zaXplOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoKHZlcmlmeSAmJiAhbm9fY29weV9mbGFnKSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LGkpOwoJCWlmKGNvbXB1dGVfZmxhZykKCQkJY29tcHV0ZV92YWwrPWRvX2NvbXB1dGUoZGVsYXkpOwoJCWlmKCpzdG9wX2ZsYWcgJiYgIXN0b3BwZWQpewoJCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQl7CgkJCQlpZihtbWFwZmxhZykKCQkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCQkJZWxzZQoJCQkJCWZzeW5jKGZkKTsKCQkJfQoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCQkodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOwoJCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQkJewoJCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IHRpbWVfcmVzOwoJCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCQlyZXNfcHJvYj0xOwoJCQl9CgoJCQlpZihPUFNfZmxhZyl7CgkJCSAgIC8qd3JpdHRlbl9zb19mYXI9KHdyaXR0ZW5fc29fZmFyKjEwMjQpL3JlY2xlbjsqLwoJCQkgICB3cml0dGVuX3NvX2Zhcj13X3RyYWpfb3BzX2NvbXBsZXRlZDsKCQkJfQoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCSAgKGRvdWJsZSl3cml0dGVuX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCQljaGlsZF9zdGF0LT5hY3R1YWwgPSAoZG91YmxlKXdyaXR0ZW5fc29fZmFyOwoJCQlpZihkZWJ1ZzEpCgkJCXsKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXJcbiIsIChsb25nKXh4KTsKCQkJfQoJCQlzdG9wcGVkPTE7CgkJfQoJCWlmKHB1cmdlKQoJCQlwdXJnZWl0KG5idWZmLHJlY2xlbik7CgkJaWYoUV9mbGFnKQoJCXsKCQkJdGhyZWFkX3F0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CgkJfQphZ2FpbjoJCQoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJd21hZGRyID0gJm1hZGRyW3RyYWpfb2Zmc2V0XTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKW5idWZmLChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKXJlY2xlbik7CgkJCS8qcHJpbnRmKCJDSGlkOiAlbGxkICBXcml0aW5nIG9mZnNldCAlbGxkIGZvciBsZW5ndGggb2YgJWxsZFxuIixjaGlkLGkqcmVjbGVuLHJlY2xlbik7Ki8KCQkJaWYoIW1tYXBuc2ZsYWcpCgkJCXsKCQkJICBpZihtbWFwYXNmbGFnKQoJCQkgICAgbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX0FTWU5DKTsKCQkJICBpZihtbWFwc3NmbGFnKQoJCQkgICAgbXN5bmMod21hZGRyLChzaXplX3QpcmVjbGVuLE1TX1NZTkMpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJICAgaWYoYXN5bmNfZmxhZykKCQkgICB7CgkJCSAgICAgaWYobm9fY29weV9mbGFnKQoJCQkgICAgIHsKCQkJCWZyZWVfYWRkcj1uYnVmZj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXJlY2xlbitwYWdlX3NpemUpOwoJCQkJbmJ1ZmY9KGNoYXIgKikoKChsb25nKW5idWZmKyhsb25nKXBhZ2Vfc2l6ZSkgJiAobG9uZyl+KHBhZ2Vfc2l6ZS0xKSk7CgkJCQlpZih2ZXJpZnkgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJCQkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LGkpOwoJCQkgICAgICAgIGFzeW5jX3dyaXRlX25vX2NvcHkoZ2MsIChsb25nIGxvbmcpZmQsIG5idWZmLCByZWNsZW4sICh0cmFqX29mZnNldCksIGRlcHRoLGZyZWVfYWRkcik7CgkJCSAgICAgfQoJCQkgICAgIGVsc2UKCQkJCWFzeW5jX3dyaXRlKGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgcmVjbGVuLCAodHJhal9vZmZzZXQpLCBkZXB0aCk7CgkJICAgfQoJCSAgIGVsc2UKCQkgICB7CgkJICAgICAgd3ZhbD1JX1BXUklURShmZCwgbmJ1ZmYsIHJlY2xlbiwgdHJhal9vZmZzZXQpOwoJCSAgICAgIGlmKHd2YWwgIT0gcmVjbGVuKQoJCSAgICAgIHsKCQkJaWYoKnN0b3BfZmxhZyAmJiAhc3RvcHBlZCl7CgkJCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQkJewoJCQkJCWlmKG1tYXBmbGFnKQoJCQkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCQkJCWVsc2UKCQkJCQkJZnN5bmMoZmQpOwoJCQkJfQoJCQkJdGVtcF90aW1lID0gdGltZV9zb19mYXIoKTsKCQkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAKCQkJCQkodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXM7CgkJCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQkJCXsKCQkJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQkJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCQkJcmVzX3Byb2I9MTsKCQkJCX0KCgkJCQlpZihPUFNfZmxhZyl7CgkJCQkgICAvKndyaXR0ZW5fc29fZmFyPSh3cml0dGVuX3NvX2ZhcioxMDI0KS9yZWNsZW47Ki8KCQkJCSAgIHdyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IAoJCQkJICAoZG91YmxlKXdyaXR0ZW5fc29fZmFyL2NoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJCQljaGlsZF9zdGF0LT5hY3R1YWwgPSAoZG91YmxlKXdyaXR0ZW5fc29fZmFyOwoJCQkJaWYoZGVidWcxKQoJCQkJewoJCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXJcbiIsIChsb25nKXh4KTsKCQkJCX0KCQkJCXN0b3BwZWQ9MTsKCQkJCWdvdG8gYWdhaW47CgkJCX0KCQkJLyogTm90ZTogV3JpdGVyIG11c3QgZmluaXNoIGV2ZW4gdGhvdWdoIHRvbGQKCQkJICAgdG8gc3RvcC4gT3RoZXJ3aXNlIHRoZSByZWFkZXJzIHdpbGwgZmFpbC4KCQkJICAgVGhlIGNvZGUgd2lsbCBjYXB0dXJlIGJ5dGVzIHRyYW5zZmVyZWQKCQkJICAgYmVmb3JlIHRvbGQgdG8gc3RvcCBidXQgbGV0IHRoZSB3cml0ZXIKCQkJICAgY29tcGxldGUuCgkJCSovCiNpZmRlZiBOT19QUklOVF9MTEQKCQkgICAgCXByaW50ZigiXG5FcnJvciBwd3JpdGluZyBibG9jayAlbGQsIGZkPSAlZFxuIiwgaSwKCQkJCSBmZCk7CiNlbHNlCgkJICAgIAlwcmludGYoIlxuRXJyb3IgcHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJIGZkKTsKI2VuZGlmCgkJCWlmKHd2YWw9PS0xKQoJCQkJcGVycm9yKCJwd3JpdGUiKTsKCQkJaWYgKCFub191bmxpbmspCgkJCXsKCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCX0KCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJICAgIAlleGl0KDEyNyk7CgkJICAgICAgfQoJCSAgICB9CgkJfQoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMCwgKGludCkwLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQlpZihRX2ZsYWcpCgkJewoJCQl0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECgkJCWZwcmludGYodGhyZWFkX3dxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZWxzZQoJCQlmcHJpbnRmKHRocmVhZF93cWZkLCIlMTAuMWxsZCAlMTAuMGYgJTEwLjFsbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZW5kaWYKCQl9CgkJd190cmFqX29wc19jb21wbGV0ZWQrKzsKCQl3X3RyYWpfYnl0ZXNfY29tcGxldGVkKz1yZWNsZW47CgkJd3JpdHRlbl9zb19mYXIrPXJlY2xlbi8xMDI0OwoJCWlmKCpzdG9wX2ZsYWcpCgkJewoJCQl3cml0dGVuX3NvX2Zhci09cmVjbGVuLzEwMjQ7CgkJCXdfdHJhal9ieXRlc19jb21wbGV0ZWQtPXJlY2xlbjsKCQl9Cgl9CgkKCglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMCwgKGludCkwKSkKCQkJcHJpbnRmKCJXcml0ZSB1bmxvY2sgZmFpbGVkLiAlZFxuIixlcnJubyk7CgkKI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJewoJCWVuZF9hc3luYyhnYyk7CgkJZ2M9MDsKCX0KI2VuZGlmCglpZigheGZsYWcpCgl7CgkJKnN0b3BfZmxhZz0xOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJfQoJCglpZihpbmNsdWRlX2ZsdXNoKQoJewoJCWlmKG1tYXBmbGFnKQoJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCWVsc2UKCQkJZnN5bmMoZmQpOwoJfQoJaWYoaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJY2xvc2UoZmQpOwoJfQoJaWYoIXN0b3BwZWQpewoJCXRlbXBfdGltZSA9IHRpbWVfc29fZmFyKCk7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9ICgodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpCgkJCS1jb21wdXRlX3ZhbDsKCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQl7CgkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ9IHRpbWVfcmVzOwoJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCXJlY19wcm9iID0gcmVjbGVuOwoJCQlyZXNfcHJvYj0xOwoJCX0KCgkJaWYoT1BTX2ZsYWcpewoJCSAgIC8qd3JpdHRlbl9zb19mYXI9KHdyaXR0ZW5fc29fZmFyKjEwMjQpL3JlY2xlbjsqLwoJCSAgIHdyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJCX0KCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0KCQkJKGRvdWJsZSl3cml0dGVuX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCWNoaWxkX3N0YXQtPmFjdHVhbCA9IChkb3VibGUpd3JpdHRlbl9zb19mYXI7Cgl9CglpZihjZGVidWcpCgl7CgkJcHJpbnRmKCJDaGlsZCAlZDogdGhyb3VnaHB1dCAlZiBhY3R1YWwgJWYgXG4iLChpbnQpY2hpZCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwKCQkJY2hpbGRfc3RhdC0+YWN0dWFsKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZTsKCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJCWNoaWxkX3N0YXQtPmNwdXRpbWUgPSBjcHV0aW1lOwoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lOwoJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gd2FsbHRpbWU7Cgl9CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXRlbGxfbWFzdGVyX3N0YXRzKFRIUkVBRF9QV1JJVEVfVEVTVCwgY2hpZCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwgCgkJCWNoaWxkX3N0YXQtPmFjdHVhbCwgCgkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lLAoJCQkoY2hhcikqc3RvcF9mbGFnLAoJCQkobG9uZyBsb25nKUNISUxEX1NUQVRFX0hPTEQpOwoJCQkKCWlmIChkZWJ1ZzEpIHsKCQlwcmludGYoIiBjaGlsZC9zbG90OiAlbGxkLCB3YWxsLWNwdTogJTguM2YgJTguM2ZDIiAiIC0+ICU2LjJmJSVcbiIsCgkJCXh4LCB3YWxsdGltZSwgY3B1dGltZSwKCQkJY3B1X3V0aWwoY3B1dGltZSwgd2FsbHRpbWUpKTsKCX0KCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOyAvKiBUZWxsIHBhcmVudCBJJ20gZG9uZSAqLwoJc3RvcHBlZD0wOwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBFbmQgcHdyaXRlIHBlcmZvcm1hbmNlIHRlc3QuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCWlmKGRlYnVnMSkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGxkXG4iLHh4KTsKI2VuZGlmCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpbnVtcmVjczY0KnJlY2xlbixNU19TWU5DKTsgLypDbGVhbiB1cCBiZWZvcmUgcmVhZCBzdGFydHMgcnVubmluZyovIAoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKW51bXJlY3M2NCpyZWNsZW4pOwoJCX1lbHNlCgkJCWZzeW5jKGZkKTsKCQkJCgkJY2xvc2UoZmQpOwoJfQoJaWYoUV9mbGFnICYmICh0aHJlYWRfd3FmZCAhPTApICkKCQlmY2xvc2UodGhyZWFkX3dxZmQpOwoJZnJlZShkdW1teWZpbGVbeHhdKTsKCWlmKHdfdHJhal9mbGFnKQoJCWZjbG9zZSh3X3RyYWpfZmQpOwoKCWlmKExfZmxhZykKCXsKCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJQd3JpdGUgdGVzdCBmaW5pc2hlZDogIixub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVGhyZWFkIHJlLXdyaXRlIHRlc3QJCQkJICAgICAgICAJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCAqCnRocmVhZF9yd3JpdGVfdGVzdCh2b2lkICp4KQojZWxzZQp2b2lkICoKdGhyZWFkX3J3cml0ZV90ZXN0KHgpCiNlbmRpZgp7CgkvKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyogQ2hpbGRyZW4gb25seSBoZXJlIAkqLwoJLyoqKioqKioqKioqKioqKioqKioqKioqKi8KCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCWxvbmcgbG9uZyB4eCx4eDI7Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7CglmbG9hdCBkZWxheSA9IChmbG9hdCkwOwoJZG91YmxlIHRocmVhZF9xdGltZV9zdG9wLHRocmVhZF9xdGltZV9zdGFydDsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cglsb25nIGxvbmcgd190cmFqX2J5dGVzX2NvbXBsZXRlZDsKCWxvbmcgbG9uZyB3X3RyYWpfb3BzX2NvbXBsZXRlZDsKCWludCBmZDsKCUZJTEUgKndfdHJhal9mZDsKCWxvbmcgbG9uZyBmbGFncyA9IDA7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJbG9uZyBsb25nIHJlY3NfcGVyX2J1ZmZlcix0cmFqX3NpemU7Cglsb25nIGxvbmcgaTsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJlYWRfc29fZmFyLCByZV93cml0dGVuX3NvX2ZhcixyZV9yZWFkX3NvX2Zhcj0wOwoJY2hhciAqZHVtbXlmaWxlIFtNQVhTVFJFQU1TXTsgICAgICAgICAgIC8qIG5hbWUgb2YgZHVtbXkgZmlsZSAgICAgKi8KCWNoYXIgKm5idWZmOwoJY2hhciAqbWFkZHIsKmZyZWVfYWRkcjsKCWNoYXIgKndtYWRkcjsKCWNoYXIgbm93X3N0cmluZ1szMF07CglpbnQgYW53c2VyLGJpbmRfY3B1LHd2YWw7CglGSUxFICp0aHJlYWRfcndxZmQsKnRocmVhZF9Md3FmZDsKCWNoYXIgdG1wbmFtZVsyNTZdOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CgojZWxzZQoJbG9uZyBsb25nICpnYz0wOwojZW5kaWYKCglpZihjb21wdXRlX2ZsYWcpCgkJZGVsYXk9Y29tcHV0ZV90aW1lOwoJd21hZGRyPW5idWZmPW1hZGRyPWZyZWVfYWRkcj0wOwoJdGhyZWFkX3J3cWZkPXdfdHJhal9mZD10aHJlYWRfTHdxZmQ9KEZJTEUgKikwOwoJdHJhal9vZmZzZXQ9dGhyZWFkX3F0aW1lX3N0b3A9dGhyZWFkX3F0aW1lX3N0YXJ0PTA7Cgl3YWxsdGltZT1jcHV0aW1lPTA7CglhbndzZXI9YmluZF9jcHU9MDsKCXdfdHJhal9ieXRlc19jb21wbGV0ZWQ9d190cmFqX29wc19jb21wbGV0ZWQ9MDsKCXdyaXR0ZW5fc29fZmFyPXJlYWRfc29fZmFyPXJlX3dyaXR0ZW5fc29fZmFyPXJlX3JlYWRfc29fZmFyPTA7CglyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CglpZih3X3RyYWpfZmxhZykKCXsKCQlmaWxlYnl0ZXM2NCA9IHdfdHJhal9mc2l6ZTsKCQludW1yZWNzNjQ9d190cmFqX29wczsKCX0KCWVsc2UKCXsKCQlmaWxlYnl0ZXM2NCA9IG51bXJlY3M2NCpyZWNsZW47Cgl9CiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl4eD0obG9uZyBsb25nKSgobG9uZyl4KTsKCWVsc2UKCXsKCQl4eD1jaGlkOwoJfQojZW5kaWYKI2lmbmRlZiBOT19USFJFQURTCiNpZmRlZiBfSFBVWF9TT1VSQ0UKCWlmKGlvel9wcm9jZXNzb3JfYmluZCkKCXsKCQkgYmluZF9jcHU9KGJlZ2luX3Byb2MrKGludCl4eCklbnVtX3Byb2Nlc3NvcnM7CgkJIHB0aHJlYWRfcHJvY2Vzc29yX2JpbmRfbnAoUFRIUkVBRF9CSU5EX0ZPUkNFRF9OUCwKICAgICAgICAgICAgICAgICAgICAgICAgIChwdGhyZWFkX3NwdV90ICopJmFud3NlciwgKHB0aHJlYWRfc3B1X3QpYmluZF9jcHUsIHB0aHJlYWRfc2VsZigpKTsKCQlteV9uYXAoNDApOwkvKiBTd2l0Y2ggdG8gbmV3IGNwdSAqLwoJfQojZW5kaWYKI2VuZGlmCglpZih1c2VfdGhyZWFkKQoJCW5idWZmPWJhcnJheVt4eF07CgllbHNlCgkJbmJ1ZmY9YnVmZmVyOwoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CglmbGFncyA9IE9fUkRXUjsKCWlmKG9mbGFnKQoJCWZsYWdzfD0gT19TWU5DOwojaWYgZGVmaW5lZChPX0RTWU5DKQoJaWYob2RzeW5jKQoJCWZsYWdzfD0gT19EU1lOQzsKI2VuZGlmCiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChXaW5kb3dzKQogICAgICAgCWlmKHVuYnVmZmVyZWQpCiAgICAgICAgewogICAgICAgIAloYW5kPUNyZWF0ZUZpbGUoZHVtbXlmaWxlW3h4XSwKCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJICAgICAgICAgIEZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELAoJCSAgTlVMTCxPUEVOX0FMV0FZUyxGSUxFX0ZMQUdfTk9fQlVGRkVSSU5HfAoJCSAgRklMRV9GTEFHX1dSSVRFX1RIUk9VR0h8RklMRV9GTEFHX1BPU0lYX1NFTUFOVElDUywKCQkgIE5VTEwpOwogICAgICAgCX0KICAgICAgICBlbHNlCiAgICAgICAgewojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoaW50KWZsYWdzLDApKTwwKQoJewoJCWNsaWVudF9lcnJvcj1lcnJubzsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5DaGlsZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5DaGlsZCAlbGxkXG4iLHh4KTsKI2VuZGlmCgkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJcGVycm9yKGR1bW15ZmlsZVt4eF0pOwoJCWV4aXQoMTI4KTsKCX0KI2lmIGRlZmluZWQoV2luZG93cykKCX0KI2VuZGlmCiNpZmRlZiBWWEZTCglpZihkaXJlY3RfZmxhZykKCXsKCQlpb2N0bChmZCxWWF9TRVRDQUNIRSxWWF9ESVJFQ1QpOwoJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJaWYodGVzdF9mb28gPT0gMCkKCQl7CgkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQlleGl0KDMpOwoJCX0KCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgaWYoZGlyZWN0X2ZsYWcpCiAgICAgICAgewogICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgaWYodGVzdF9mb28gIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpcmVjdGlvIG5vdCBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgkJYXN5bmNfaW5pdCgmZ2MsZmQsZGlyZWN0X2ZsYWcpOwojZW5kaWYKCWlmKG1tYXBmbGFnKQoJewoJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsKG51bXJlY3M2NCpyZWNsZW4pLDEsUFJPVF9SRUFEfFBST1RfV1JJVEUpOwoJfQoJaWYoZmV0Y2hvbikKCQlmZXRjaGl0KG5idWZmLHJlY2xlbik7CglpZih3X3RyYWpfZmxhZykKCQl3X3RyYWpfZmQ9b3Blbl93X3RyYWooKTsKCWlmKFFfZmxhZykKCXsKCQlzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3J3b2wuZGF0IiwoaW50KXh4KTsKCQl0aHJlYWRfcndxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9yd3FmZD09MCkKCQl7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlleGl0KDQwKTsKCQl9CgkJZnByaW50Zih0aHJlYWRfcndxZmQsIk9mZnNldCBpbiBLYnl0ZXMgICBMYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyAgVHJhbnNmZXIgc2l6ZSBpbiBieXRlc1xuIik7Cgl9CglpZihMX2ZsYWcpCgl7CgkJc3ByaW50Zih0bXBuYW1lLCJDaGlsZF8lZC5sb2ciLChpbnQpeHgpOwoJCXRocmVhZF9Md3FmZD1mb3Blbih0bXBuYW1lLCJhIik7CgkJaWYodGhyZWFkX0x3cWZkPT0wKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWV4aXQoNDApOwoJCX0KCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJSZXdyaXRlIHRlc3Qgc3RhcnQ6ICIsbm93X3N0cmluZyk7Cgl9CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXRlbGxfbWFzdGVyX3JlYWR5KGNoaWQpOwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCXsKCQlpZihjZGVidWcpCgkJCXByaW50ZigiQ2hpbGQgJWQgd2FpdGluZyBmb3IgZ28gZnJvbSBtYXN0ZXJcbiIsKGludCl4eCk7CgkJd2FpdF9mb3JfbWFzdGVyX2dvKGNoaWQpOwoJCWlmKGNkZWJ1ZykKCQkJcHJpbnRmKCJDaGlsZCAlZCByZWNlaXZlZCBnbyBmcm9tIG1hc3RlclxuIiwoaW50KXh4KTsKCX0KCWVsc2UKCXsKCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAvKiBXYWl0IGZvciBzaWduYWwgZnJvbSBwYXJlbnQgKi8KCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJfQoJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMSwgKGludCkwKSAhPSAwKQoJCQlwcmludGYoIkZpbGUgbG9jayBmb3Igd3JpdGUgZmFpbGVkLiAlZFxuIixlcnJubyk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CglpZih3X3RyYWpfZmxhZykKCQlyZXdpbmQod190cmFqX2ZkKTsKCWlmKCh2ZXJpZnkgJiYgIW5vX2NvcHlfZmxhZykgfHwgZGVkdXAgfHwgZGVkdXBfaW50ZXJpb3IpCgkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LChsb25nIGxvbmcpMCk7Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQl0cmFqX29mZnNldD0gaSpyZWNsZW4gOwoJCWlmKHdfdHJhal9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWood190cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmZGVsYXksKGxvbmcpMSk7CgkJCXJlY2xlbj10cmFqX3NpemU7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJCWlmKHVuYnVmZmVyZWQpCgkJCSAgU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORyl0cmFqX29mZnNldCwwLEZJTEVfQkVHSU4pOwoJCQllbHNlCiNlbmRpZgoJCQlJX0xTRUVLKGZkLHRyYWpfb2Zmc2V0LFNFRUtfU0VUKTsKCQl9CgkJaWYoUV9mbGFnKQoJCXsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICB0cmFqX29mZnNldD1TZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKTAsMCxGSUxFX0NVUlJFTlQpOwoJCQllbHNlCiNlbmRpZgoJCQl0cmFqX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoKnN0b3BfZmxhZyAmJiAhbW1hcGZsYWcpCgkJewoJCQlpZihkZWJ1ZzEpCgkJCQlwcmludGYoIlxuU3RvcF9mbGFnIDFcbiIpOwoJCQlicmVhazsKCQl9CgkJaWYoKHZlcmlmeSAmJiAhbm9fY29weV9mbGFnKSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQl7CgkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxpKTsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQlpZihRX2ZsYWcpCgkJewoJCQl0aHJlYWRfcXRpbWVfc3RhcnQ9dGltZV9zb19mYXIoKTsKCQl9CgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbaSpyZWNsZW5dOwoJCQlpZihjZGVidWcpCnByaW50ZigiQ2hpZDogJWxsZCBSZXdyaXRpbmcgb2Zmc2V0ICVsbGQgZm9yIGxlbmd0aCBvZiAlbGxkXG4iLGNoaWQsIGkqcmVjbGVuLHJlY2xlbik7CgkJCWZpbGxfYXJlYSgobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKil3bWFkZHIsKGxvbmcgbG9uZylyZWNsZW4pOwoJCQlpZighbW1hcG5zZmxhZykKCQkJewoJCQkgIGlmKG1tYXBhc2ZsYWcpCgkJCSAgICBtc3luYyh3bWFkZHIsKHNpemVfdClyZWNsZW4sTVNfQVNZTkMpOwoJCQkgIGlmKG1tYXBzc2ZsYWcpCgkJCSAgICBtc3luYyh3bWFkZHIsKHNpemVfdClyZWNsZW4sTVNfU1lOQyk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkgICAJaWYoYXN5bmNfZmxhZykKCQkgICAJewoJCQkgICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICB7CgkJCQlmcmVlX2FkZHI9bmJ1ZmY9KGNoYXIgKiltYWxsb2MoKHNpemVfdClyZWNsZW4rcGFnZV9zaXplKTsKCQkJCW5idWZmPShjaGFyICopKCgobG9uZyluYnVmZisobG9uZylwYWdlX3NpemUpICYgKGxvbmcpfihwYWdlX3NpemUtMSkpOwoJCQkJaWYodmVyaWZ5IHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSxpKTsKCQkJICAgICAgICBhc3luY193cml0ZV9ub19jb3B5KGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgcmVjbGVuLCAoaSpyZWNsZW4pLCBkZXB0aCxmcmVlX2FkZHIpOwoJCQkgICAgIH0KCQkJICAgICBlbHNlCgkJCQlhc3luY193cml0ZShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgKGkqcmVjbGVuKSwgZGVwdGgpOwoJCSAgIAl9CgkJCWVsc2UKCQkJewojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQkgICBpZih1bmJ1ZmZlcmVkKQoJCQkgICB7CgkJCQlXcml0ZUZpbGUoaGFuZCxuYnVmZixyZWNsZW4sKExQRFdPUkQpJnd2YWwsMCk7CgkJCSAgIH0KCQkJICAgZWxzZQojZW5kaWYKCQkJICAgd3ZhbD13cml0ZShmZCwgbmJ1ZmYsIChzaXplX3QpIHJlY2xlbik7CgkJCSAgIGlmKHd2YWwgIT0gcmVjbGVuKQoJCQkgICB7CgkJCQlpZigqc3RvcF9mbGFnKQoJCQkJewoJCQkJCWlmKGRlYnVnMSkKCQkJCQkJcHJpbnRmKCJcblN0b3BfZmxhZyAyXG4iKTsKCQkJCQlicmVhazsKCQkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCSAgICAJCXByaW50ZigiXG5FcnJvciB3cml0aW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbHNlCgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbmRpZgoJCQkJaWYod3ZhbD09LTEpCgkJCQkJcGVycm9yKCJ3cml0ZSIpOwoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCXNpZ25hbF9oYW5kbGVyKCk7CgkJCSAgIH0KCQkJfQoJCX0KCQlyZV93cml0dGVuX3NvX2Zhcis9cmVjbGVuLzEwMjQ7CgkgICAJd190cmFqX29wc19jb21wbGV0ZWQrKzsKCQl3X3RyYWpfYnl0ZXNfY29tcGxldGVkKz1yZWNsZW47CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCXJlX3dyaXR0ZW5fc29fZmFyLT1yZWNsZW4vMTAyNDsKCQkJd190cmFqX2J5dGVzX2NvbXBsZXRlZC09cmVjbGVuOwoJCX0KCQlpZihRX2ZsYWcpCgkJewoJCQl0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECgkJCWZwcmludGYodGhyZWFkX3J3cWZkLCIlMTAuMWxkICUxMC4wZiAlMTAuMWxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2Vsc2UKCQkJZnByaW50Zih0aHJlYWRfcndxZmQsIiUxMC4xbGxkICUxMC4wZiAlMTAuMWxsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKCh0aHJlYWRfcXRpbWVfc3RvcC10aHJlYWRfcXRpbWVfc3RhcnQtdGltZV9yZXMpKSoxMDAwMDAwLHJlY2xlbik7CiNlbmRpZgoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9Cgl9CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMCwgKGludCkwKSkKCQkJcHJpbnRmKCJXcml0ZSB1bmxvY2sgZmFpbGVkLiAlZFxuIixlcnJubyk7CiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCXsKCQllbmRfYXN5bmMoZ2MpOwoJCWdjPTA7Cgl9CiNlbmRpZgoJaWYoaW5jbHVkZV9mbHVzaCkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpKGZpbGVieXRlczY0KSxNU19TWU5DKTsKCQl9ZWxzZQoJCQlmc3luYyhmZCk7Cgl9CglpZihpbmNsdWRlX2Nsb3NlKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKHVuYnVmZmVyZWQpCgkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCWVsc2UKI2VuZGlmCgkJY2xvc2UoZmQpOwoJfQoJdGVtcF90aW1lPXRpbWVfc29fZmFyKCk7CgljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gKCh0ZW1wX3RpbWUgLSBzdGFydHRpbWUxKS10aW1lX3JlcykKCQktY29tcHV0ZV92YWw7CglpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KCglpZihPUFNfZmxhZyl7CgkgICAvKnJlX3dyaXR0ZW5fc29fZmFyPShyZV93cml0dGVuX3NvX2ZhcioxMDI0KS9yZWNsZW47Ki8KCSAgIHJlX3dyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJfQoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IAoJCShkb3VibGUpcmVfd3JpdHRlbl9zb19mYXIvY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IChkb3VibGUpcmVfd3JpdHRlbl9zb19mYXI7CglpZigheGZsYWcpCgl7CgkJKnN0b3BfZmxhZz0xOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJfQoJaWYoY2RlYnVnKQoJCXByaW50ZigiQ2hpbGQgJWQ6IHRocm91Z2hwdXQgJWYgYWN0dWFsICVmIFxuIiwoaW50KWNoaWQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCgkJCWNoaWxkX3N0YXQtPmFjdHVhbCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQljcHV0aW1lID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWU7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCQljaGlsZF9zdGF0LT5jcHV0aW1lID0gY3B1dGltZTsKCQl3YWxsdGltZSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZTsKCQljaGlsZF9zdGF0LT53YWxsdGltZSA9IHdhbGx0aW1lOwoJfQoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQl0ZWxsX21hc3Rlcl9zdGF0cyhUSFJFQURfUkVXUklURV9URVNULCBjaGlkLCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LCAKCQkJY2hpbGRfc3RhdC0+YWN0dWFsLAoJCQljaGlsZF9zdGF0LT5jcHV0aW1lLCBjaGlsZF9zdGF0LT53YWxsdGltZSwKCQkJKGNoYXIpKnN0b3BfZmxhZywKCQkJKGxvbmcgbG9uZylDSElMRF9TVEFURV9IT0xEKTsKCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwkvKiBUZWxsIHBhcmVudCBJJ20gZG9uZSAqLwoJaWYoIWluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShmaWxlYnl0ZXM2NCksTVNfU1lOQyk7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCX0KCQllbHNlCgkJCWZzeW5jKGZkKTsKI2lmIGRlZmluZWQoV2luZG93cykKCQlpZih1bmJ1ZmZlcmVkKQoJCQlDbG9zZUhhbmRsZShoYW5kKTsKCQllbHNlCiNlbmRpZgoJCWNsb3NlKGZkKTsKCX0KCWZyZWUoZHVtbXlmaWxlW3h4XSk7CgoJaWYoUV9mbGFnICYmICh0aHJlYWRfcndxZmQgIT0wKSApCgkJZmNsb3NlKHRocmVhZF9yd3FmZCk7CgoJaWYod190cmFqX2ZsYWcpCgkJZmNsb3NlKHdfdHJhal9mZCk7CglpZihkZWJ1ZzEpCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuQ2hpbGQgU3RvcHBpbmcgICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcbkNoaWxkIFN0b3BwaW5nICAlbGxkXG4iLHh4KTsKI2VuZGlmCgoJaWYoTF9mbGFnKQoJewoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJld3JpdGUgdGVzdCBmaW5pc2hlZDogIixub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWQgcmVhZCB0ZXN0CQkJCSAgICAgICAgCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgKgp0aHJlYWRfcmVhZF90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfcmVhZF90ZXN0KHgpCiNlbmRpZgp7Cglsb25nIGxvbmcgeHgseHgyOwoJc3RydWN0IGNoaWxkX3N0YXRzICpjaGlsZF9zdGF0OwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJbG9uZyBsb25nIHJfdHJhal9ieXRlc19jb21wbGV0ZWQ7Cglsb25nIGxvbmcgcl90cmFqX29wc19jb21wbGV0ZWQ7CglpbnQgZmQ7CglGSUxFICpyX3RyYWpfZmQsKnRocmVhZF9ycWZkOwoJRklMRSAqdGhyZWFkX0x3cWZkOwoJbG9uZyBsb25nIGZsYWdzID0gMDsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7CglmbG9hdCBkZWxheSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJZG91YmxlIHRocmVhZF9xdGltZV9zdGFydCx0aHJlYWRfcXRpbWVfc3RvcDsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJlYWRfc29fZmFyLCByZV93cml0dGVuX3NvX2ZhcixyZV9yZWFkX3NvX2ZhcjsKCWxvbmcgbG9uZyByZWNzX3Blcl9idWZmZXIsdHJhal9zaXplOwoJb2ZmNjRfdCBpOwoJY2hhciAqZHVtbXlmaWxlW01BWFNUUkVBTVNdOyAgICAgICAgICAgLyogbmFtZSBvZiBkdW1teSBmaWxlICAgICAqLwoJY2hhciAqbmJ1ZmY9MDsKCWNoYXIgKm1hZGRyPTA7CgljaGFyICp3bWFkZHI9MDsKCWNoYXIgdG1wbmFtZVsyNTZdOwoJdm9sYXRpbGUgY2hhciAqYnVmZmVyMTsKCWNoYXIgbm93X3N0cmluZ1szMF07CglpbnQgYW53c2VyLGJpbmRfY3B1OwoJbG9uZyB3dmFsOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CiNlbHNlCglsb25nIGxvbmcgKmdjPTA7CiNlbmRpZgoKCWlmKGNvbXB1dGVfZmxhZykKCQlkZWxheT1jb21wdXRlX3RpbWU7Cgl0aHJlYWRfcnFmZD10aHJlYWRfTHdxZmQ9cl90cmFqX2ZkPShGSUxFICopMDsKCXRyYWpfb2Zmc2V0PXRocmVhZF9xdGltZV9zdG9wPXRocmVhZF9xdGltZV9zdGFydD0wOwoJd2FsbHRpbWU9Y3B1dGltZT0wOwoJYW53c2VyPWJpbmRfY3B1PTA7CglyX3RyYWpfYnl0ZXNfY29tcGxldGVkPXJfdHJhal9vcHNfY29tcGxldGVkPTA7Cgl3cml0dGVuX3NvX2Zhcj1yZWFkX3NvX2Zhcj1yZV93cml0dGVuX3NvX2Zhcj1yZV9yZWFkX3NvX2Zhcj0wOwoJcmVjc19wZXJfYnVmZmVyID0gY2FjaGVfc2l6ZS9yZWNsZW4gOwoJaWYocl90cmFqX2ZsYWcpCgl7CgkJZmlsZWJ5dGVzNjQgPSByX3RyYWpfZnNpemU7CgkJbnVtcmVjczY0PXJfdHJhal9vcHM7Cgl9CgllbHNlCgl7CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoJCiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglkdW1teWZpbGVbeHhdPShjaGFyICopbWFsbG9jKChzaXplX3QpTUFYTkFNRVNJWkUpOwoJeHgyPXh4OwoJaWYoc2hhcmVfZmlsZSkKCQl4eDI9KGxvbmcgbG9uZykwOwoJaWYobWZmbGFnKQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMiLGZpbGVhcnJheVt4eDJdKTsKI2VuZGlmCgl9CgllbHNlCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2Vsc2UKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsbGQiLGZpbGVhcnJheVt4eDJdLHh4Mik7CiNlbmRpZgoJfQoJaWYob2ZsYWcpCgkJZmxhZ3M9T19SRE9OTFl8T19TWU5DOwoJZWxzZQoJCWZsYWdzPU9fUkRPTkxZOwojaWYgZGVmaW5lZChfSFBVWF9TT1VSQ0UpIHx8IGRlZmluZWQobGludXgpCglpZihyZWFkX3N5bmMpCgkJZmxhZ3MgfD1PX1JTWU5DfE9fU1lOQzsKI2VuZGlmCgojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgojaWYgZGVmaW5lZChXaW5kb3dzKQogICAgICAgCWlmKHVuYnVmZmVyZWQpCiAgICAgICAgewogICAgICAgIAloYW5kPUNyZWF0ZUZpbGUoZHVtbXlmaWxlW3h4XSwKCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJICAgICAgICAgIEZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELAoJCSAgTlVMTCxPUEVOX0VYSVNUSU5HLEZJTEVfRkxBR19OT19CVUZGRVJJTkd8CgkJICBGSUxFX0ZMQUdfV1JJVEVfVEhST1VHSHxGSUxFX0ZMQUdfUE9TSVhfU0VNQU5USUNTLAoJCSAgTlVMTCk7CgkJU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORykwLDAsRklMRV9CRUdJTik7CiAgICAgICAJfQoJZWxzZQoJewojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoaW50KWZsYWdzLDApKTwwKQoJewoJCWNsaWVudF9lcnJvcj1lcnJubzsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCQlwZXJyb3IoZHVtbXlmaWxlW3h4XSk7CgkJZXhpdCgxMzApOwoJfQojaWYgZGVmaW5lZChXaW5kb3dzKQoJfQojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCiNpZmRlZiBWWEZTCglpZihkaXJlY3RfZmxhZykKCXsKCQlpb2N0bChmZCxWWF9TRVRDQUNIRSxWWF9ESVJFQ1QpOwoJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJaWYodGVzdF9mb28gPT0gMCkKCQl7CgkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQlleGl0KDMpOwoJCX0KCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgaWYoZGlyZWN0X2ZsYWcpCiAgICAgICAgewogICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgaWYodGVzdF9mb28gIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpcmVjdGlvIG5vdCBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiNlbmRpZgoJaWYobW1hcGZsYWcpCgl7CgkJbWFkZHI9KGNoYXIgKilpbml0ZmlsZShmZCwobnVtcmVjczY0KnJlY2xlbiksMCxQUk9UX1JFQUQpOwoJfQoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCS8qKioqKioqKioqKioqKioqKi8KCS8qIENoaWxkcmVuIG9ubHkgKi8KCS8qKioqKioqKioqKioqKioqKi8KCWlmKFFfZmxhZykKCXsKCQlzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3JvbC5kYXQiLChpbnQpeHgpOwoJCXRocmVhZF9ycWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKCQlpZih0aHJlYWRfcnFmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZnByaW50Zih0aHJlYWRfcnFmZCwiT2Zmc2V0IGluIEtieXRlcyAgIExhdGVuY3kgaW4gbWljcm9zZWNvbmRzICBUcmFuc2ZlciBzaXplIGluIGJ5dGVzXG4iKTsKCX0KCWlmKExfZmxhZykKCXsKCQlzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkLmxvZyIsKGludCl4eCk7CgkJdGhyZWFkX0x3cWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKCQlpZih0aHJlYWRfTHdxZmQ9PTApCgkJewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKCQkJcHJpbnRmKCJVbmFibGUgdG8gb3BlbiAlc1xuIix0bXBuYW1lKTsKCQkJZXhpdCg0MCk7CgkJfQoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJlYWQgdGVzdCBzdGFydDogIixub3dfc3RyaW5nKTsKCX0KCglpZihyX3RyYWpfZmxhZykKCQlyX3RyYWpfZmQ9b3Blbl9yX3RyYWooKTsKCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX1JFQURZOwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CgkJdGVsbF9tYXN0ZXJfcmVhZHkoY2hpZCk7CiAgICAgICAgICAgICAgICB3YWl0X2Zvcl9tYXN0ZXJfZ28oY2hpZCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CgkJLyogV2FpdCBmb3Igc2lnbmFsIGZyb20gcGFyZW50ICovCiAgICAgICAgICAgICAgICB3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAKICAgICAgICAgICAgICAgICAgICAgICAgUG9sbCgobG9uZyBsb25nKTEpOwogICAgICAgIH0KCWlmKGZpbGVfbG9jaykKCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAxLCAoaW50KTEpICE9IDApCgkJCXByaW50ZigiRmlsZSBsb2NrIGZvciByZWFkIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CgoJaWYocl90cmFqX2ZsYWcpCgkJcmV3aW5kKHJfdHJhal9mZCk7Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQl0cmFqX29mZnNldD0gaSpyZWNsZW47CgkJaWYoZGlzcnVwdF9mbGFnICYmICgoaSVESVNSVVBUKT09MCkpCgkJewojaWYgZGVmaW5lZChXaW5kb3dzKQoJCgkJCWlmKHVuYnVmZmVyZWQpCgkJCSAgIGRpc3J1cHR3KGhhbmQpOwoJCQllbHNlCgkJCSAgIGRpc3J1cHQoZmQpOwojZWxzZQoJCQlkaXNydXB0KGZkKTsKI2VuZGlmCgkJfQoJCWlmKHJfdHJhal9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWoocl90cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmZGVsYXksKGxvbmcpMCk7CgkJCXJlY2xlbj10cmFqX3NpemU7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJCWlmKHVuYnVmZmVyZWQpCgkJCSAgU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORyl0cmFqX29mZnNldCwwLEZJTEVfQkVHSU4pOwoJCQllbHNlCiNlbmRpZgoJCQlJX0xTRUVLKGZkLHRyYWpfb2Zmc2V0LFNFRUtfU0VUKTsKCQl9CgkJaWYoUV9mbGFnKQoJCXsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICB0cmFqX29mZnNldD1TZXRGaWxlUG9pbnRlcihoYW5kLDAsMCxGSUxFX0NVUlJFTlQpOwoJCQllbHNlCiNlbmRpZgoJCQl0cmFqX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCWlmKGRlYnVnMSkKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgMlxuIiwgKGxvbmcpeHgpOwoJCQlicmVhazsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQlpZihRX2ZsYWcpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9xdGltZV9zdGFydD10aW1lX3NvX2ZhcigpOwogICAgICAgICAgICAgICAgfQoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJd21hZGRyID0gJm1hZGRyW2kqcmVjbGVuXTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJfQoJCWVsc2UKCQl7CgkJCSAgaWYoYXN5bmNfZmxhZykKCQkJICB7CgkJCSAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgIGFzeW5jX3JlYWRfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgJmJ1ZmZlcjEsIChpKnJlY2xlbiksIHJlY2xlbiwKCQkJICAgIAkxTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgIGVsc2UKCQkJICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIChpKnJlY2xlbiksIHJlY2xlbiwKCQkJICAgIAkxTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICB9CgkJCSAgZWxzZQoJCQkgIHsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJICAgICAgaWYodW5idWZmZXJlZCkKCQkJICAgICAgewoJCQkJUmVhZEZpbGUoaGFuZCxuYnVmZixyZWNsZW4sKExQRFdPUkQpJnd2YWwsMCk7CgkJCSAgICAgIH0KCQkJICAgICAgZWxzZQojZW5kaWYKCQkJICAgICAgd3ZhbD1yZWFkKChpbnQpZmQsICh2b2lkKiluYnVmZiwgKHNpemVfdCkgcmVjbGVuKTsKCQkJICAgICAgaWYod3ZhbCAhPSByZWNsZW4pCgkJCSAgICAgIHsKCQkJCWlmKCpzdG9wX2ZsYWcpCgkJCQl7CgkJCQkJaWYoZGVidWcxKQoJCQkJCQlwcmludGYoIlxuKCVsZCkgU3RvcHBlZCBieSBhbm90aGVyIDJcbiIsIChsb25nKXh4KTsKCQkJCQlicmVhazsKCQkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCSAgICAJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbHNlCgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbmRpZgoJCQkJcGVycm9yKCJyZWFkIik7CgkJCQlpZiAoIW5vX3VubGluaykKCQkJCXsKCQkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCSAgICAJCWV4aXQoMTMyKTsKCQkJICAgICAgfQoJCQkgIH0KCQl9CgkJaWYodmVyaWZ5KXsKCQkgICBpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkgICB7CgkJCSAgIGlmKHZlcmlmeV9idWZmZXIoYnVmZmVyMSxyZWNsZW4sKG9mZjY0X3QpaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDEzMyk7CgkJCSAgIH0KCQkgICB9CgkJICAgZWxzZQoJCSAgIHsKCQkJICAgaWYodmVyaWZ5X2J1ZmZlcihuYnVmZixyZWNsZW4sKG9mZjY0X3QpaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDEzNCk7CgkJCSAgIH0KCQkgICB9CgkJfQoJCWlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQlhc3luY19yZWxlYXNlKGdjKTsKCQlyZWFkX3NvX2Zhcis9cmVjbGVuLzEwMjQ7CgkJcl90cmFqX2J5dGVzX2NvbXBsZXRlZCs9cmVjbGVuOwoJCXJfdHJhal9vcHNfY29tcGxldGVkKys7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCXJlYWRfc29fZmFyLT1yZWNsZW4vMTAyNDsKCQkJcl90cmFqX2J5dGVzX2NvbXBsZXRlZC09cmVjbGVuOwoJCX0KICAgICAgICAgICAgICAgIGlmKFFfZmxhZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0b3A9dGltZV9zb19mYXIoKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAogICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHRocmVhZF9ycWZkLCIlMTAuMWxkICUxMC4wZiAlMTAuMWxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50Zih0aHJlYWRfcnFmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCiAgICAgICAgICAgICAgICB9CgoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMCwgKGludCkxLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCX0KCWlmKGZpbGVfbG9jaykKCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEpKQoJCQlwcmludGYoIlJlYWQgdW5sb2NrIGZhaWxlZC4gJWRcbiIsZXJybm8pOwojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShmaWxlYnl0ZXM2NCksTVNfU1lOQyk7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJfQoJaWYoaW5jbHVkZV9jbG9zZSkKCXsJCgkJaWYobW1hcGZsYWcpCgkJewoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKWZpbGVieXRlczY0KTsKCQl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJaWYodW5idWZmZXJlZCkKCQkgIENsb3NlSGFuZGxlKGhhbmQpOwoJCWVsc2UKI2VuZGlmCgkJY2xvc2UoZmQpOwoJfQoJdGVtcF90aW1lID0gdGltZV9zb19mYXIoKTsKCWNoaWxkX3N0YXQ9KHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW3h4XTsKCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAoKHRlbXBfdGltZSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzKQoJCS1jb21wdXRlX3ZhbDsKCWlmKGNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPCAoZG91YmxlKS4wMDAwMDEpIAoJewoJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQ9IHRpbWVfcmVzOwoJCWlmKHJlY19wcm9iIDwgcmVjbGVuKQoJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQlyZXNfcHJvYj0xOwoJfQoKCWlmKE9QU19mbGFnKXsKCSAgIC8qcmVhZF9zb19mYXI9KHJlYWRfc29fZmFyKjEwMjQpL3JlY2xlbjsqLwoJICAgcmVhZF9zb19mYXI9cl90cmFqX29wc19jb21wbGV0ZWQ7Cgl9CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gcmVhZF9zb19mYXIvY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IHJlYWRfc29fZmFyOwoJaWYoIXhmbGFnKQoJewoJCSpzdG9wX2ZsYWc9MTsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCX0KICAgICAgICBpZihjZGVidWcpCiAgICAgICAgICAgICAgICBwcmludGYoIkNoaWxkICVkOiB0aHJvdWdocHV0ICVmIGFjdHVhbCAlZiBcbiIsKGludCljaGlkLGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3N0YXQtPmFjdHVhbCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQljcHV0aW1lID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWU7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCQljaGlsZF9zdGF0LT5jcHV0aW1lID0gY3B1dGltZTsKCQl3YWxsdGltZSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZTsKCQljaGlsZF9zdGF0LT53YWxsdGltZSA9IHdhbGx0aW1lOwoJfQogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9zdGF0cyhUSFJFQURfUkVBRF9URVNULCBjaGlkLCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LAogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9zdGF0LT5hY3R1YWwsIAoJCQljaGlsZF9zdGF0LT5jcHV0aW1lLCBjaGlsZF9zdGF0LT53YWxsdGltZSwKCQkJKGNoYXIpKnN0b3BfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylDSElMRF9TVEFURV9IT0xEKTsKCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOyAJLyogVGVsbCBwYXJlbnQgSSdtIGRvbmUgKi8KCS8qZnN5bmMoZmQpOyovCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpKGZpbGVieXRlczY0KSxNU19TWU5DKTsKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKHVuYnVmZmVyZWQpCgkJICBDbG9zZUhhbmRsZShoYW5kKTsKCQllbHNlCiNlbmRpZgoJCWNsb3NlKGZkKTsKCX0KICAgICAgICBpZihRX2ZsYWcgJiYgKHRocmVhZF9ycWZkICE9MCkgKQogICAgICAgICAgICAgICAgZmNsb3NlKHRocmVhZF9ycWZkKTsKCWZyZWUoZHVtbXlmaWxlW3h4XSk7CglpZihyX3RyYWpfZmxhZykKCQlmY2xvc2Uocl90cmFqX2ZkKTsKCWlmKGRlYnVnMSkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGxkXG4iLHh4KTsKI2VuZGlmCgoJaWYoTF9mbGFnKQoJewoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJlYWQgdGVzdCBmaW5pc2hlZDogIixub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CgojaWZkZWYgSEFWRV9QUkVBRAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWQgcHJlYWQgdGVzdAkJCQkgICAgICAgIAkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX3ByZWFkX3Rlc3Qodm9pZCAqeCkKI2Vsc2UKdm9pZCAqCnRocmVhZF9wcmVhZF90ZXN0KHgpCiNlbmRpZgp7Cglsb25nIGxvbmcgeHgseHgyOwoJc3RydWN0IGNoaWxkX3N0YXRzICpjaGlsZF9zdGF0OwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJbG9uZyBsb25nIHJfdHJhal9ieXRlc19jb21wbGV0ZWQ7Cglsb25nIGxvbmcgcl90cmFqX29wc19jb21wbGV0ZWQ7CglpbnQgZmQ7CglGSUxFICpyX3RyYWpfZmQsKnRocmVhZF9ycWZkOwoJRklMRSAqdGhyZWFkX0x3cWZkOwoJbG9uZyBsb25nIGZsYWdzID0gMDsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7CglmbG9hdCBkZWxheSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJZG91YmxlIHRocmVhZF9xdGltZV9zdGFydCx0aHJlYWRfcXRpbWVfc3RvcDsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJlYWRfc29fZmFyLCByZV93cml0dGVuX3NvX2ZhcixyZV9yZWFkX3NvX2ZhcjsKCWxvbmcgbG9uZyByZWNzX3Blcl9idWZmZXIsdHJhal9zaXplOwoJb2ZmNjRfdCBpOwoJY2hhciAqZHVtbXlmaWxlW01BWFNUUkVBTVNdOyAgICAgICAgICAgLyogbmFtZSBvZiBkdW1teSBmaWxlICAgICAqLwoJY2hhciAqbmJ1ZmY9MDsKCWNoYXIgKm1hZGRyPTA7CgljaGFyICp3bWFkZHI9MDsKCWNoYXIgdG1wbmFtZVsyNTZdOwoJY2hhciBub3dfc3RyaW5nWzMwXTsKCXZvbGF0aWxlIGNoYXIgKmJ1ZmZlcjE7CglpbnQgYW53c2VyLGJpbmRfY3B1OwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CiNlbHNlCglsb25nIGxvbmcgKmdjPTA7CiNlbmRpZgoKCWlmKGNvbXB1dGVfZmxhZykKCQlkZWxheT1jb21wdXRlX3RpbWU7Cgl0aHJlYWRfcnFmZD10aHJlYWRfTHdxZmQ9cl90cmFqX2ZkPShGSUxFICopMDsKCXRyYWpfb2Zmc2V0PXRocmVhZF9xdGltZV9zdG9wPXRocmVhZF9xdGltZV9zdGFydD0wOwoJd2FsbHRpbWU9Y3B1dGltZT0wOwoJYW53c2VyPWJpbmRfY3B1PTA7CglyX3RyYWpfYnl0ZXNfY29tcGxldGVkPXJfdHJhal9vcHNfY29tcGxldGVkPTA7Cgl3cml0dGVuX3NvX2Zhcj1yZWFkX3NvX2Zhcj1yZV93cml0dGVuX3NvX2Zhcj1yZV9yZWFkX3NvX2Zhcj0wOwoJcmVjc19wZXJfYnVmZmVyID0gY2FjaGVfc2l6ZS9yZWNsZW4gOwoJaWYocl90cmFqX2ZsYWcpCgl7CgkJZmlsZWJ5dGVzNjQgPSByX3RyYWpfZnNpemU7CgkJbnVtcmVjczY0PXJfdHJhal9vcHM7Cgl9CgllbHNlCgl7CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoJCiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglkdW1teWZpbGVbeHhdPShjaGFyICopbWFsbG9jKChzaXplX3QpTUFYTkFNRVNJWkUpOwoJeHgyPXh4OwoJaWYoc2hhcmVfZmlsZSkKCQl4eDI9KGxvbmcgbG9uZykwOwoJaWYobWZmbGFnKQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMiLGZpbGVhcnJheVt4eDJdKTsKI2VuZGlmCgl9CgllbHNlCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2Vsc2UKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzLkRVTU1ZLiVsbGQiLGZpbGVhcnJheVt4eDJdLHh4Mik7CiNlbmRpZgoJfQoJaWYob2ZsYWcpCgkJZmxhZ3M9T19SRE9OTFl8T19TWU5DOwoJZWxzZQoJCWZsYWdzPU9fUkRPTkxZOwojaWYgZGVmaW5lZChfSFBVWF9TT1VSQ0UpIHx8IGRlZmluZWQobGludXgpCglpZihyZWFkX3N5bmMpCgkJZmxhZ3MgfD1PX1JTWU5DfE9fU1lOQzsKI2VuZGlmCgojaWYgISBkZWZpbmVkKERPTlRfSEFWRV9PX0RJUkVDVCkKI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19BSVhfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKElSSVg2NCkgfHwgZGVmaW5lZChXaW5kb3dzKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCWZsYWdzIHw9T19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgoJaWYoKGZkID0gSV9PUEVOKGR1bW15ZmlsZVt4eF0sIChpbnQpZmxhZ3MsMCkpPDApCgl7CgkJY2xpZW50X2Vycm9yPWVycm5vOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJCXBlcnJvcihkdW1teWZpbGVbeHhdKTsKCQlleGl0KDEzMCk7Cgl9CiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCQlhc3luY19pbml0KCZnYyxmZCxkaXJlY3RfZmxhZyk7CiNlbmRpZgojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQojZW5kaWYKCWlmKG1tYXBmbGFnKQoJewoJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsKG51bXJlY3M2NCpyZWNsZW4pLDAsUFJPVF9SRUFEKTsKCX0KCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IDA7CgljaGlsZF9zdGF0LT5hY3R1YWwgPSAwOwoJaWYoZGVidWcxKQoJewoJICAgaWYodXNlX3RocmVhZCkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBjaGlsZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5TdGFydGluZyBjaGlsZCAlbGxkXG4iLHh4KTsKI2VuZGlmCgkgICBlbHNlCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsZFxuIixnZXRwaWQoKSx4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIHByb2Nlc3MgJWQgc2xvdCAlbGxkXG4iLGdldHBpZCgpLHh4KTsKI2VuZGlmCgkJCgl9CgkvKioqKioqKioqKioqKioqKiovCgkvKiBDaGlsZHJlbiBvbmx5ICovCgkvKioqKioqKioqKioqKioqKiovCglpZihRX2ZsYWcpCgl7CgkJc3ByaW50Zih0bXBuYW1lLCJDaGlsZF8lZF9wcm9sLmRhdCIsKGludCl4eCk7CgkJdGhyZWFkX3JxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9ycWZkPT0wKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWV4aXQoNDApOwoJCX0KCQlmcHJpbnRmKHRocmVhZF9ycWZkLCJPZmZzZXQgaW4gS2J5dGVzICAgTGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMgIFRyYW5zZmVyIHNpemUgaW4gYnl0ZXNcbiIpOwoJfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiUHJlYWQgdGVzdCBzdGFydDogIixub3dfc3RyaW5nKTsKCX0KCglpZihyX3RyYWpfZmxhZykKCQlyX3RyYWpfZmQ9b3Blbl9yX3RyYWooKTsKCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX1JFQURZOwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CgkJdGVsbF9tYXN0ZXJfcmVhZHkoY2hpZCk7CiAgICAgICAgICAgICAgICB3YWl0X2Zvcl9tYXN0ZXJfZ28oY2hpZCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CgkJLyogV2FpdCBmb3Igc2lnbmFsIGZyb20gcGFyZW50ICovCiAgICAgICAgICAgICAgICB3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAKICAgICAgICAgICAgICAgICAgICAgICAgUG9sbCgobG9uZyBsb25nKTEpOwogICAgICAgIH0KCWlmKGZpbGVfbG9jaykKCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAxLCAoaW50KTEpICE9IDApCgkJCXByaW50ZigiRmlsZSBsb2NrIGZvciByZWFkIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CgoJaWYocl90cmFqX2ZsYWcpCgkJcmV3aW5kKHJfdHJhal9mZCk7Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQl0cmFqX29mZnNldCA9IGkqcmVjbGVuOwoJCWlmKGRpc3J1cHRfZmxhZyAmJiAoKGklRElTUlVQVCk9PTApKQoJCXsKCQkJZGlzcnVwdChmZCk7CgkJfQoJCWlmKHJfdHJhal9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWoocl90cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmZGVsYXksKGxvbmcpMCk7CgkJCXJlY2xlbj10cmFqX3NpemU7CgkJCUlfTFNFRUsoZmQsdHJhal9vZmZzZXQsU0VFS19TRVQpOwoJCX0KCQlpZihRX2ZsYWcpCgkJewoJCQl0cmFqX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCWlmKGRlYnVnMSkKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgMlxuIiwgKGxvbmcpeHgpOwoJCQlicmVhazsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKCQlpZihRX2ZsYWcpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9xdGltZV9zdGFydD10aW1lX3NvX2ZhcigpOwogICAgICAgICAgICAgICAgfQoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJd21hZGRyID0gJm1hZGRyW3RyYWpfb2Zmc2V0XTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJfQoJCWVsc2UKCQl7CgkJCSAgaWYoYXN5bmNfZmxhZykKCQkJICB7CgkJCSAgICBpZihub19jb3B5X2ZsYWcpCgkJCSAgICAgIGFzeW5jX3JlYWRfbm9fY29weShnYywgKGxvbmcgbG9uZylmZCwgJmJ1ZmZlcjEsIChpKnJlY2xlbiksIHJlY2xlbiwKCQkJICAgIAkxTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgIGVsc2UKCQkJICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsICh0cmFqX29mZnNldCksIHJlY2xlbiwKCQkJICAgIAkxTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICB9CgkJCSAgZWxzZQoJCQkgIHsKCQkJCWlmKElfUFJFQUQoKGludClmZCwgKHZvaWQqKW5idWZmLCAoc2l6ZV90KSByZWNsZW4sKHRyYWpfb2Zmc2V0KSApICE9IHJlY2xlbikKCQkJICAgICAgewoJCQkJaWYoKnN0b3BfZmxhZykKCQkJCXsKCQkJCQlpZihkZWJ1ZzEpCgkJCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgMlxuIiwgKGxvbmcpeHgpOwoJCQkJCWJyZWFrOwoJCQkJfQojaWZkZWYgTk9fUFJJTlRfTExECgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHByZWFkaW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJCSBmZCk7CiNlbHNlCgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHByZWFkaW5nIGJsb2NrICVsbGQsIGZkPSAlZFxuIiwgaSwKCQkJCQkgZmQpOwojZW5kaWYKCQkJCXBlcnJvcigicHJlYWQiKTsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJICAgIAkJZXhpdCgxMzIpOwoJCQkgICAgICB9CgkJCSAgfQoJCX0KCQlpZih2ZXJpZnkpewoJCSAgIGlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCSAgIHsKCQkJICAgaWYodmVyaWZ5X2J1ZmZlcihidWZmZXIxLHJlY2xlbiwob2ZmNjRfdClpLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCWV4aXQoMTMzKTsKCQkJICAgfQoJCSAgIH0KCQkgICBlbHNlCgkJICAgewoJCQkgICBpZih2ZXJpZnlfYnVmZmVyKG5idWZmLHJlY2xlbiwob2ZmNjRfdClpLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCWV4aXQoMTM0KTsKCQkJICAgfQoJCSAgIH0KCQl9CgkJaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCWFzeW5jX3JlbGVhc2UoZ2MpOwoJCXJlYWRfc29fZmFyKz1yZWNsZW4vMTAyNDsKCQlyX3RyYWpfYnl0ZXNfY29tcGxldGVkKz1yZWNsZW47CgkJcl90cmFqX29wc19jb21wbGV0ZWQrKzsKCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJcmVhZF9zb19mYXItPXJlY2xlbi8xMDI0OwoJCQlyX3RyYWpfYnl0ZXNfY29tcGxldGVkLT1yZWNsZW47CgkJfQogICAgICAgICAgICAgICAgaWYoUV9mbGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3JxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHRocmVhZF9ycWZkLCIlMTAuMWxsZCAlMTAuMGYgJTEwLjFsbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZW5kaWYKICAgICAgICAgICAgICAgIH0KCgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJfQoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMSkpCgkJCXByaW50ZigiUmVhZCB1bmxvY2sgZmFpbGVkLiAlZFxuIixlcnJubyk7CiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCXsKCQllbmRfYXN5bmMoZ2MpOwoJCWdjPTA7Cgl9CiNlbmRpZgoJaWYoaW5jbHVkZV9mbHVzaCkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpKGZpbGVieXRlczY0KSxNU19TWU5DKTsKCQl9ZWxzZQoJCQlmc3luYyhmZCk7Cgl9CglpZihpbmNsdWRlX2Nsb3NlKQoJewkKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCX0KCQljbG9zZShmZCk7Cgl9Cgl0ZW1wX3RpbWUgPSB0aW1lX3NvX2ZhcigpOwoJY2hpbGRfc3RhdD0oc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9ICgodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpCgkJLWNvbXB1dGVfdmFsOwoJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dD0gdGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CgoJaWYoT1BTX2ZsYWcpewoJICAgLypyZWFkX3NvX2Zhcj0ocmVhZF9zb19mYXIqMTAyNCkvcmVjbGVuOyovCgkgICByZWFkX3NvX2Zhcj1yX3RyYWpfb3BzX2NvbXBsZXRlZDsKCX0KCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSByZWFkX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJY2hpbGRfc3RhdC0+YWN0dWFsID0gcmVhZF9zb19mYXI7CglpZigheGZsYWcpCgl7CgkJKnN0b3BfZmxhZz0xOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJfQogICAgICAgIGlmKGNkZWJ1ZykKICAgICAgICAgICAgICAgIHByaW50ZigiQ2hpbGQgJWQ6IHRocm91Z2hwdXQgJWYgYWN0dWFsICVmIFxuIiwoaW50KWNoaWQsY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfc3RhdC0+YWN0dWFsKTsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZTsKCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJCWNoaWxkX3N0YXQtPmNwdXRpbWUgPSBjcHV0aW1lOwoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lOwoJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gd2FsbHRpbWU7Cgl9CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICAgICAgICAgIHRlbGxfbWFzdGVyX3N0YXRzKFRIUkVBRF9SRUFEX1RFU1QsIGNoaWQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3N0YXQtPmFjdHVhbCwKCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsCgkJCShjaGFyKSpzdG9wX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpQ0hJTERfU1RBVEVfSE9MRCk7CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsgCS8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCgkvKmZzeW5jKGZkKTsqLwoJaWYoIWluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShmaWxlYnl0ZXM2NCksTVNfU1lOQyk7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCX1lbHNlCgkJCWZzeW5jKGZkKTsKCQljbG9zZShmZCk7Cgl9CiAgICAgICAgaWYoUV9mbGFnICYmICh0aHJlYWRfcnFmZCAhPTApICkKICAgICAgICAgICAgICAgIGZjbG9zZSh0aHJlYWRfcnFmZCk7CglmcmVlKGR1bW15ZmlsZVt4eF0pOwoJaWYocl90cmFqX2ZsYWcpCgkJZmNsb3NlKHJfdHJhal9mZCk7CglpZihkZWJ1ZzEpCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxkXG4iLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxsZFxuIix4eCk7CiNlbmRpZgoKCWlmKExfZmxhZykKCXsKCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJQcmVhZCB0ZXN0IGZpbmlzaGVkOiAiLAoJCQlub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVGhyZWFkIHJlLXJlYWQgdGVzdAkJCQkgICAgICAgIAkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX3JyZWFkX3Rlc3Qodm9pZCAqeCkKI2Vsc2UKdm9pZCAqCnRocmVhZF9ycmVhZF90ZXN0KHgpCiNlbmRpZgp7Cglsb25nIGxvbmcgeHgseHgyOwoJY2hhciAqbmJ1ZmY7CglzdHJ1Y3QgY2hpbGRfc3RhdHMgKmNoaWxkX3N0YXQ7CglpbnQgZmQ7CglGSUxFICpyX3RyYWpfZmQsKnRocmVhZF9ycnFmZDsKCUZJTEUgKnRocmVhZF9Md3FmZDsKCWxvbmcgbG9uZyByX3RyYWpfYnl0ZXNfY29tcGxldGVkOwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJbG9uZyBsb25nIHJfdHJhal9vcHNfY29tcGxldGVkOwoJb2ZmNjRfdCB0cmFqX29mZnNldDsKCW9mZjY0X3QgbG9ja19vZmZzZXQ9MDsKCWxvbmcgbG9uZyBmbGFncyA9IDA7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7CglmbG9hdCBkZWxheSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJZG91YmxlIHRocmVhZF9xdGltZV9zdGFydCx0aHJlYWRfcXRpbWVfc3RvcDsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWxvbmcgbG9uZyByZWNzX3Blcl9idWZmZXIsdHJhal9zaXplOwoJb2ZmNjRfdCBpOwoJb2ZmNjRfdCB3cml0dGVuX3NvX2ZhciwgcmVhZF9zb19mYXIsIHJlX3dyaXR0ZW5fc29fZmFyLAoJCXJlX3JlYWRfc29fZmFyOwoJY2hhciAqZHVtbXlmaWxlW01BWFNUUkVBTVNdOyAgICAgICAgICAgLyogbmFtZSBvZiBkdW1teSBmaWxlICAgICAqLwoJY2hhciAqbWFkZHI9MDsKCWNoYXIgKndtYWRkcj0wOwoJY2hhciBub3dfc3RyaW5nWzMwXTsKCXZvbGF0aWxlIGNoYXIgKmJ1ZmZlcjE7CglpbnQgYW53c2VyLGJpbmRfY3B1OwoJbG9uZyB3dmFsOwoJY2hhciB0bXBuYW1lWzI1Nl07CiNpZiBkZWZpbmVkKFZYRlMpIHx8IGRlZmluZWQoc29sYXJpcykKCWludCB0ZXN0X2ZvbyA9IDA7CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCXN0cnVjdCBjYWNoZSAqZ2M9MDsKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCgkvKioqKioqKioqKioqKioqKiovCgkvKiBDaGlsZHJlbiBvbmx5ICovCgkvKioqKioqKioqKioqKioqKiovCglpZihjb21wdXRlX2ZsYWcpCgkJZGVsYXk9Y29tcHV0ZV90aW1lOwoJdGhyZWFkX3F0aW1lX3N0b3A9dGhyZWFkX3F0aW1lX3N0YXJ0PTA7Cgl0aHJlYWRfcnJxZmQ9cl90cmFqX2ZkPXRocmVhZF9Md3FmZD0oRklMRSAqKTA7Cgl0cmFqX29mZnNldD13YWxsdGltZT1jcHV0aW1lPTA7CglhbndzZXI9YmluZF9jcHU9MDsKCXJfdHJhal9ieXRlc19jb21wbGV0ZWQ9cl90cmFqX29wc19jb21wbGV0ZWQ9MDsKCXdyaXR0ZW5fc29fZmFyPXJlYWRfc29fZmFyPXJlX3dyaXR0ZW5fc29fZmFyPXJlX3JlYWRfc29fZmFyPTA7CglyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYocl90cmFqX2ZsYWcpCgl7CgkJZmlsZWJ5dGVzNjQgPSByX3RyYWpfZnNpemU7CgkJbnVtcmVjczY0PXJfdHJhal9vcHM7Cgl9CgllbHNlCgl7CgkJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJfQoJaWYodXNlX3RocmVhZCkKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CglpZihvZmxhZykKCQlmbGFncz1PX1JET05MWXxPX1NZTkM7CgllbHNlCgkJZmxhZ3M9T19SRE9OTFk7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChXaW5kb3dzKQogICAgICAgCWlmKHVuYnVmZmVyZWQpCiAgICAgICAgewogICAgICAgIAloYW5kPUNyZWF0ZUZpbGUoZHVtbXlmaWxlW3h4XSwKCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJICAgICAgICAgIEZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELAoJCSAgTlVMTCxPUEVOX0VYSVNUSU5HLEZJTEVfRkxBR19OT19CVUZGRVJJTkd8CgkJICBGSUxFX0ZMQUdfV1JJVEVfVEhST1VHSHxGSUxFX0ZMQUdfUE9TSVhfU0VNQU5USUNTLAoJCSAgTlVMTCk7CgkJU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORykwLDAsRklMRV9CRUdJTik7CiAgICAgICAJfQoJZWxzZQoJewojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoKGludClmbGFncyksMCkpPDApCgl7CgkJY2xpZW50X2Vycm9yPWVycm5vOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJCXBlcnJvcihkdW1teWZpbGVbeHhdKTsKCQlleGl0KDEzNSk7Cgl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgl9CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgkJYXN5bmNfaW5pdCgmZ2MsZmQsZGlyZWN0X2ZsYWcpOwojZW5kaWYKI2lmZGVmIFZYRlMKCWlmKGRpcmVjdF9mbGFnKQoJewoJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQlpZih0ZXN0X2ZvbyA9PSAwKQoJCXsKCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCSAgcHJpbnRmKCJcblZ4RlMgYWR2YW5jZWQgc2V0Y2FjaGUgZmVhdHVyZSBub3QgYXZhaWxhYmxlLlxuIik7CgkJCWV4aXQoMyk7CgkJfQoJfQojZW5kaWYKI2lmIGRlZmluZWQoc29sYXJpcykKICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZXN0X2ZvbyA9IGRpcmVjdGlvKGZkLCBESVJFQ1RJT19PTik7CiAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZighY2xpZW50X2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KI2VuZGlmCglpZihtbWFwZmxhZykKCXsKCQltYWRkcj0oY2hhciAqKWluaXRmaWxlKGZkLChmaWxlYnl0ZXM2NCksMCxQUk9UX1JFQUQpOwoJfQoJaWYocl90cmFqX2ZsYWcpCgkJcl90cmFqX2ZkPW9wZW5fcl90cmFqKCk7CglpZihmZXRjaG9uKQoJCWZldGNoaXQobmJ1ZmYscmVjbGVuKTsKICAgICAgICBpZihRX2ZsYWcpCiAgICAgICAgewogICAgICAgICAgICAgICAgc3ByaW50Zih0bXBuYW1lLCJDaGlsZF8lZF9ycm9sLmRhdCIsKGludCl4eCk7CiAgICAgICAgICAgICAgICB0aHJlYWRfcnJxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwogICAgICAgICAgICAgICAgaWYodGhyZWFkX3JycWZkPT0wKQogICAgICAgICAgICAgICAgewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJVbmFibGUgdG8gb3BlbiAlc1xuIix0bXBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCg0MCk7CiAgICAgICAgICAgICAgICB9CgkJZnByaW50Zih0aHJlYWRfcnJxZmQsIk9mZnNldCBpbiBLYnl0ZXMgICBMYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyAgVHJhbnNmZXIgc2l6ZSBpbiBieXRlc1xuIik7CiAgICAgICAgfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiUmVyZWFkIHRlc3Qgc3RhcnQ6ICIsbm93X3N0cmluZyk7Cgl9CgoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CgoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCXsKCQl0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKCQl3YWl0X2Zvcl9tYXN0ZXJfZ28oY2hpZCk7Cgl9CgllbHNlCgkKCQkvKiBXYWl0IGZvciBzaWduYWwgZnJvbSBwYXJlbnQgKi8KICAgICAgICAgICAgICAgIHdoaWxlKGNoaWxkX3N0YXQtPmZsYWchPUNISUxEX1NUQVRFX0JFR0lOKSAgIAogICAgICAgICAgICAgICAgICAgICAgICBQb2xsKChsb25nIGxvbmcpMSk7CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMSwgKGludCkxKSAhPSAwKQoJCQlwcmludGYoIkZpbGUgbG9jayBmb3IgcmVhZCBmYWlsZWQuICVkXG4iLGVycm5vKTsKCXN0YXJ0dGltZTEgPSB0aW1lX3NvX2ZhcigpOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJd2FsbHRpbWUgPSBzdGFydHRpbWUxOwoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpOwoJfQoKCWlmKHJfdHJhal9mbGFnKQoJCXJld2luZChyX3RyYWpfZmQpOwoJZm9yKGk9MDsgaTxudW1yZWNzNjQ7IGkrKyl7CgkJdHJhal9vZmZzZXQ9aSpyZWNsZW47CgkJaWYoZGlzcnVwdF9mbGFnICYmICgoaSVESVNSVVBUKT09MCkpCgkJewojaWYgZGVmaW5lZChXaW5kb3dzKQoJCgkJCWlmKHVuYnVmZmVyZWQpCgkJCSAgIGRpc3J1cHR3KGhhbmQpOwoJCQllbHNlCgkJCSAgIGRpc3J1cHQoZmQpOwojZWxzZQoJCQlkaXNydXB0KGZkKTsKI2VuZGlmCgkJfQoJCWlmKHJfdHJhal9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9Z2V0X3RyYWoocl90cmFqX2ZkLCAobG9uZyBsb25nICopJnRyYWpfc2l6ZSwoZmxvYXQgKikmZGVsYXksKGxvbmcpMCk7CgkJCXJlY2xlbj10cmFqX3NpemU7CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJCWlmKHVuYnVmZmVyZWQpCgkJCSAgU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORyl0cmFqX29mZnNldCwwLEZJTEVfQkVHSU4pOwoJCQllbHNlCiNlbmRpZgoJCQlJX0xTRUVLKGZkLHRyYWpfb2Zmc2V0LFNFRUtfU0VUKTsKCQl9CgkJaWYoUV9mbGFnKQoJCXsKI2lmIGRlZmluZWQoV2luZG93cykKCQkJaWYodW5idWZmZXJlZCkKCQkJICB0cmFqX29mZnNldD1TZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKTAsMCxGSUxFX0NVUlJFTlQpOwoJCQllbHNlCiNlbmRpZgoJCQl0cmFqX29mZnNldD1JX0xTRUVLKGZkLDAsU0VFS19DVVIpOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCWlmKGRlYnVnMSkKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgM1xuIiwgKGxvbmcpeHgpOwoJCQlicmVhazsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKICAgICAgICAgICAgICAgIGlmKFFfZmxhZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CiAgICAgICAgICAgICAgICB9CgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbaSpyZWNsZW5dOwoJCQlmaWxsX2FyZWEoKGxvbmcgbG9uZyopd21hZGRyLChsb25nIGxvbmcqKW5idWZmLChsb25nIGxvbmcpcmVjbGVuKTsKCQl9CgkJZWxzZQoJCXsKCQkJICBpZihhc3luY19mbGFnKQoJCQkgIHsKCQkJICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgYXN5bmNfcmVhZF9ub19jb3B5KGdjLCAobG9uZyBsb25nKWZkLCAmYnVmZmVyMSwgKGkqcmVjbGVuKSxyZWNsZW4sCgkJCSAgICAJMUxMLChmaWxlYnl0ZXM2NCksZGVwdGgpOwoJCQkgICAgZWxzZQoJCQkgICAgICBhc3luY19yZWFkKGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgKGkqcmVjbGVuKSxyZWNsZW4sCgkJCSAgICAJMUxMLChmaWxlYnl0ZXM2NCksZGVwdGgpOwoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewojaWYgZGVmaW5lZChXaW5kb3dzKQoJCQkgICAgICBpZih1bmJ1ZmZlcmVkKQoJCQkgICAgICB7CgkJCQlSZWFkRmlsZShoYW5kLG5idWZmLHJlY2xlbiwoTFBEV09SRCkmd3ZhbCwwKTsKCQkJICAgICAgfQoJCQkgICAgICBlbHNlCiNlbmRpZgoJCQkgICAgICB3dmFsPXJlYWQoKGludClmZCwgKHZvaWQqKW5idWZmLCAoc2l6ZV90KSByZWNsZW4pOwoJCQkgICAgICBpZih3dmFsICE9IHJlY2xlbikKCQkJICAgICAgewoJCQkJaWYoKnN0b3BfZmxhZykKCQkJCXsKCQkJCQlpZihkZWJ1ZzEpCgkJCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgNFxuIiwgKGxvbmcpeHgpOwoJCQkJCWJyZWFrOwoJCQkJfQojaWZkZWYgTk9fUFJJTlRfTExECgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHdyaXRpbmcgYmxvY2sgJWxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2Vsc2UKCQkgICAgCQlwcmludGYoIlxuRXJyb3Igd3JpdGluZyBibG9jayAlbGxkLCBmZD0gJWRcbiIsIGksCgkJCQkJIGZkKTsKI2VuZGlmCgkJCQlwZXJyb3IoInJlYWQiKTsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJICAgIAkJZXhpdCgxMzcpOwoJCQkgICAgICB9CgkJCSAgIH0KCQl9CgkJaWYodmVyaWZ5KXsKCQkgICBpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkgICB7CgkJCWlmKHZlcmlmeV9idWZmZXIoYnVmZmVyMSxyZWNsZW4sKG9mZjY0X3QpaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDEzOCk7CgkJCX0KCQkgICB9CgkJICAgZWxzZQoJCSAgIHsKCQkJaWYodmVyaWZ5X2J1ZmZlcihuYnVmZixyZWNsZW4sKG9mZjY0X3QpaSxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDEzOSk7CgkJCX0KCQkgICB9CgkJfQoJCWlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQlhc3luY19yZWxlYXNlKGdjKTsKCQlyZV9yZWFkX3NvX2Zhcis9cmVjbGVuLzEwMjQ7CgkJcl90cmFqX2J5dGVzX2NvbXBsZXRlZCs9cmVjbGVuOwoJCXJfdHJhal9vcHNfY29tcGxldGVkKys7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCXJlX3JlYWRfc29fZmFyLT1yZWNsZW4vMTAyNDsKCQkJcl90cmFqX2J5dGVzX2NvbXBsZXRlZC09cmVjbGVuOwoJCX0KICAgICAgICAgICAgICAgIGlmKFFfZmxhZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0b3A9dGltZV9zb19mYXIoKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAogICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHRocmVhZF9ycnFmZCwiJTEwLjFsZCAlMTAuMGYgJTEwLjFsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKCh0aHJlYWRfcXRpbWVfc3RvcC10aHJlYWRfcXRpbWVfc3RhcnQtdGltZV9yZXMpKSoxMDAwMDAwLHJlY2xlbik7CiNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3JycWZkLCIlMTAuMWxsZCAlMTAuMGYgJTEwLjFsbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZW5kaWYKICAgICAgICAgICAgICAgIH0KCgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJfQoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMSkpCgkJCXByaW50ZigiUmVhZCB1bmxvY2sgZmFpbGVkLiAlZFxuIixlcnJubyk7CgkvKmZzeW5jKGZkKTsqLwojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShmaWxlYnl0ZXM2NCksTVNfU1lOQyk7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJfQoJaWYoaW5jbHVkZV9jbG9zZSkKCXsJCgkJaWYobW1hcGZsYWcpCgkJewoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKWZpbGVieXRlczY0KTsKCQl9CiNpZiBkZWZpbmVkKFdpbmRvd3MpCgkJaWYodW5idWZmZXJlZCkKCQkJQ2xvc2VIYW5kbGUoaGFuZCk7CgkJZWxzZQojZW5kaWYKCQljbG9zZShmZCk7Cgl9Cgl0ZW1wX3RpbWUgPSB0aW1lX3NvX2ZhcigpOwoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9ICgodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXMpCgkJLWNvbXB1dGVfdmFsOwoJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dD0gdGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CgoJaWYoT1BTX2ZsYWcpewoJICAgLypyZV9yZWFkX3NvX2Zhcj0ocmVfcmVhZF9zb19mYXIqMTAyNCkvcmVjbGVuOyovCgkgICByZV9yZWFkX3NvX2Zhcj1yX3RyYWpfb3BzX2NvbXBsZXRlZDsKCX0KCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSByZV9yZWFkX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJY2hpbGRfc3RhdC0+YWN0dWFsID0gcmVfcmVhZF9zb19mYXI7CglpZigheGZsYWcpCgl7CgkJKnN0b3BfZmxhZz0xOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJfQoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lOwoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7CgkJY2hpbGRfc3RhdC0+Y3B1dGltZSA9IGNwdXRpbWU7CgkJd2FsbHRpbWUgPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWU7CgkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSB3YWxsdGltZTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgl7CgkJdGVsbF9tYXN0ZXJfc3RhdHMoVEhSRUFEX1JFUkVBRF9URVNULGNoaWQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCgkJCWNoaWxkX3N0YXQtPmFjdHVhbCwgCgkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lLAoJCQkoY2hhcikqc3RvcF9mbGFnLAoJCQkobG9uZyBsb25nKUNISUxEX1NUQVRFX0hPTEQpOwoJfQoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CS8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpKGZpbGVieXRlczY0KSxNU19TWU5DKTsKCQkJbW1hcF9lbmQobWFkZHIsKHVuc2lnbmVkIGxvbmcgbG9uZylmaWxlYnl0ZXM2NCk7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwojaWYgZGVmaW5lZChXaW5kb3dzKQoJCWlmKHVuYnVmZmVyZWQpCgkJCUNsb3NlSGFuZGxlKGhhbmQpOwoJCWVsc2UKI2VuZGlmCgkJY2xvc2UoZmQpOwoJfQogICAgICAgIGlmKFFfZmxhZyAmJiAodGhyZWFkX3JycWZkICE9MCkgKQogICAgICAgICAgICAgICAgZmNsb3NlKHRocmVhZF9ycnFmZCk7CglmcmVlKGR1bW15ZmlsZVt4eF0pOwoJaWYocl90cmFqX2ZsYWcpCgkJZmNsb3NlKHJfdHJhal9mZCk7CglpZihkZWJ1ZzEpCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxkXG4iLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxsZFxuIix4eCk7CiNlbmRpZgoKCWlmKExfZmxhZykKCXsKCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJSZXJlYWQgdGVzdCBmaW5pc2hlZDogIixub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWRfcmV2ZXJzZV9wZXJmX3Rlc3QJCQkJICAgICAgICAJKi8KLyogUmV2ZXJzZSByZWFkIHRlc3QJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX3JldmVyc2VfcmVhZF90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfcmV2ZXJzZV9yZWFkX3Rlc3QoeCkKI2VuZGlmCnsKCWxvbmcgbG9uZyB4eCx4eDI7CgljaGFyICpuYnVmZjsKCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCWludCBmZDsKCWxvbmcgbG9uZyBmbGFncyA9IDA7Cglkb3VibGUgd2FsbHRpbWUsIGNwdXRpbWU7Cglkb3VibGUgdGhyZWFkX3F0aW1lX3N0b3AsdGhyZWFkX3F0aW1lX3N0YXJ0OwoJZG91YmxlIHN0YXJ0dGltZTIgPSAwOwoJZmxvYXQgZGVsYXkgPSAwOwoJZG91YmxlIHRlbXBfdGltZTsKCWRvdWJsZSBjb21wdXRlX3ZhbCA9IChkb3VibGUpMDsKCWxvbmcgbG9uZyByZWNzX3Blcl9idWZmZXI7CglvZmY2NF90IGksdF9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7CglvZmY2NF90IGN1cnJlbnRfcG9zaXRpb249MDsKCW9mZjY0X3Qgd3JpdHRlbl9zb19mYXIsIHJldmVyc2VfcmVhZCwgcmVfcmVhZF9zb19mYXIscmVhZF9zb19mYXI7CgljaGFyICpkdW1teWZpbGVbTUFYU1RSRUFNU107ICAgICAgICAgICAvKiBuYW1lIG9mIGR1bW15IGZpbGUgICAgICovCgljaGFyICptYWRkcj0wOwoJY2hhciAqd21hZGRyPTA7CgljaGFyIG5vd19zdHJpbmdbMzBdOwoJdm9sYXRpbGUgY2hhciAqYnVmZmVyMTsKCWludCBhbndzZXIsYmluZF9jcHU7CglvZmY2NF90IHRyYWpfb2Zmc2V0OwoJY2hhciB0bXBuYW1lWzI1Nl07CglGSUxFICp0aHJlYWRfcmV2cWZkPTA7CglGSUxFICp0aHJlYWRfTHdxZmQ9MDsKI2lmIGRlZmluZWQoVlhGUykgfHwgZGVmaW5lZChzb2xhcmlzKQoJaW50IHRlc3RfZm9vID0gMDsKI2VuZGlmCiNpZmRlZiBBU1lOQ19JTwoJc3RydWN0IGNhY2hlICpnYz0wOwojZWxzZQoJbG9uZyBsb25nICpnYz0wOwojZW5kaWYKCS8qKioqKioqKioqKioqKioqKi8KCS8qIENoaWxkcmVuIG9ubHkgKi8KCS8qKioqKioqKioqKioqKioqKi8KCWlmKGNvbXB1dGVfZmxhZykKCQlkZWxheT1jb21wdXRlX3RpbWU7Cgl0aHJlYWRfcXRpbWVfc3RvcD10aHJlYWRfcXRpbWVfc3RhcnQ9MDsKCXRyYWpfb2Zmc2V0PXdhbGx0aW1lPWNwdXRpbWU9MDsKCWFud3Nlcj1iaW5kX2NwdT0wOwoJd3JpdHRlbl9zb19mYXI9cmVhZF9zb19mYXI9cmV2ZXJzZV9yZWFkPXJlX3JlYWRfc29fZmFyPTA7CglyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CglpZihvZmxhZykKCQlmbGFncz1PX1JET05MWXxPX1NZTkM7CgllbHNlCgkJZmxhZ3M9T19SRE9OTFk7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKFdpbmRvd3MpCiAgICAgICAJaWYodW5idWZmZXJlZCkKICAgICAgICB7CiAgICAgICAgCWhhbmQ9Q3JlYXRlRmlsZShkdW1teWZpbGVbeHhdLAoJCSAgR0VORVJJQ19SRUFEfEdFTkVSSUNfV1JJVEUsCgkgICAgICAgICAgRklMRV9TSEFSRV9XUklURXxGSUxFX1NIQVJFX1JFQUQsCgkJICBOVUxMLE9QRU5fRVhJU1RJTkcsRklMRV9GTEFHX05PX0JVRkZFUklOR3wKCQkgIEZJTEVfRkxBR19XUklURV9USFJPVUdIfEZJTEVfRkxBR19QT1NJWF9TRU1BTlRJQ1MsCgkJICBOVUxMKTsKICAgICAgIAl9CiNlbmRpZgoKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoKGludClmbGFncyksMCkpPDApCgl7CgkJY2xpZW50X2Vycm9yPWVycm5vOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJCXBlcnJvcihkdW1teWZpbGVbeHhdKTsKCQlleGl0KDE0MCk7Cgl9CiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCQlhc3luY19pbml0KCZnYyxmZCxkaXJlY3RfZmxhZyk7CiNlbmRpZgojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQojZW5kaWYKCWlmKG1tYXBmbGFnKQoJewoJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsKG51bXJlY3M2NCpyZWNsZW4pLDAsUFJPVF9SRUFEKTsKCX0KCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwogICAgICAgIGlmKFFfZmxhZykKICAgICAgICB7CiAgICAgICAgICAgICAgICBzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3Jldm9sLmRhdCIsKGludCl4eCk7CiAgICAgICAgICAgICAgICB0aHJlYWRfcmV2cWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKICAgICAgICAgICAgICAgIGlmKHRocmVhZF9yZXZxZmQ9PTApCiAgICAgICAgICAgICAgICB7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDQwKTsKICAgICAgICAgICAgICAgIH0KCQlmcHJpbnRmKHRocmVhZF9yZXZxZmQsIk9mZnNldCBpbiBLYnl0ZXMgICBMYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyAgVHJhbnNmZXIgc2l6ZSBpbiBieXRlc1xuIik7CiAgICAgICAgfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiUmV2ZXJzZSByZWFkIHN0YXJ0OiAiLG5vd19zdHJpbmcpOwoJfQoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKICAgICAgICAgICAgICAgIHdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgICAgIHdoaWxlKGNoaWxkX3N0YXQtPmZsYWchPUNISUxEX1NUQVRFX0JFR0lOKSAgIC8qIFdhaXQgZm9yIHNpZ25hbCBmcm9tIHBhcmVudCAqLwogICAgICAgICAgICAgICAgICAgICAgICBQb2xsKChsb25nIGxvbmcpMSk7CiAgICAgICAgfQoJc3RhcnR0aW1lMiA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTI7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CgoJdF9vZmZzZXQgPSAob2ZmNjRfdClyZWNsZW47CglpZiAoIShoX2ZsYWcgfHwga19mbGFnIHx8IG1tYXBmbGFnKSkKCXsKCSAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkgIHsKCSAgCWlmKChJX0xTRUVLKCBmZCwgLXRfb2Zmc2V0LCBTRUVLX0VORCApKTwwKQoJICAJewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKCQkJcGVycm9yKCJsc2VlayIpOwoJCQlleGl0KDE0Mik7CgkgIAl9CgkgIH0KCSAgZWxzZQoJICB7CgkJaWYoSV9MU0VFSyggZmQsIChudW1yZWNzNjQqcmVjbGVuKS10X29mZnNldCwgU0VFS19TRVQgKTwwKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXBlcnJvcigibHNlZWsiKTsKCQkJZXhpdCg3Nyk7CgkJfQoJICB9Cgl9CgljdXJyZW50X3Bvc2l0aW9uPShyZWNsZW4qbnVtcmVjczY0KS1yZWNsZW47CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwgKGludCkgMSwgKGludCkxKSE9MCkKCQkJcHJpbnRmKCJGaWxlIGxvY2sgZm9yIHJlYWQgZmFpbGVkLiAlZFxuIixlcnJubyk7Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKSAKCXsKCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoZGlzcnVwdF9mbGFnICYmICgoaSVESVNSVVBUKT09MCkpCgkJewoJCQlkaXNydXB0KGZkKTsKCQl9CgkJaWYoY29tcHV0ZV9mbGFnKQoJCQljb21wdXRlX3ZhbCs9ZG9fY29tcHV0ZShkZWxheSk7CgkJaWYoUV9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQl9CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCWlmKGRlYnVnMSkKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXIgM1xuIiwgKGxvbmcpeHgpOwoJCQlicmVhazsKCQl9CgkJaWYocHVyZ2UpCgkJCXB1cmdlaXQobmJ1ZmYscmVjbGVuKTsKICAgICAgICAgICAgICAgIGlmKFFfZmxhZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CiAgICAgICAgICAgICAgICB9CgkJaWYobW1hcGZsYWcpCgkJewoJCQl3bWFkZHIgPSAmbWFkZHJbY3VycmVudF9wb3NpdGlvbl07CgkJCWZpbGxfYXJlYSgobG9uZyBsb25nKil3bWFkZHIsKGxvbmcgbG9uZyopbmJ1ZmYsKGxvbmcgbG9uZylyZWNsZW4pOwoJCX0KCQllbHNlCgkJewoJCQkgIGlmKGFzeW5jX2ZsYWcpCgkJCSAgewoJCQkgICAgaWYobm9fY29weV9mbGFnKQoJCQkgICAgICBhc3luY19yZWFkX25vX2NvcHkoZ2MsIChsb25nIGxvbmcpZmQsICZidWZmZXIxLCAoY3VycmVudF9wb3NpdGlvbiksCgkJCSAgICAgIAlyZWNsZW4sIC0xTEwsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgIGVsc2UKCQkJICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIChjdXJyZW50X3Bvc2l0aW9uKSxyZWNsZW4sCgkJCSAgICAJLTFMTCwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQkgIH0KCQkJICBlbHNlCgkJCSAgewoJCQkgICAgICBpZihyZWFkKChpbnQpZmQsICh2b2lkKiluYnVmZiwgKHNpemVfdCkgcmVjbGVuKSAhPSByZWNsZW4pCgkJCSAgICAgIHsKCQkJCWlmKCpzdG9wX2ZsYWcpCgkJCQl7CgkJCQkJaWYoZGVidWcxKQoJCQkJCQlwcmludGYoIlxuKCVsZCkgU3RvcHBlZCBieSBhbm90aGVyIDRcbiIsIChsb25nKXh4KTsKCQkJCQlicmVhazsKCQkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxkXG4iLCBpKTsgCiNlbHNlCgkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayAlbGxkXG4iLCBpKTsgCiNlbmRpZgoJCQkJcGVycm9yKCJyZWFkIik7CgkJCQlpZiAoIW5vX3VubGluaykKCQkJCXsKCQkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCQkJZXhpdCgxNDQpOwoJCQkgICAgICB9CgkJCSAgfQoJCX0KCQlpZih2ZXJpZnkpewoJCSAgIGlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCSAgIHsKCQkJaWYodmVyaWZ5X2J1ZmZlcihidWZmZXIxLHJlY2xlbiwob2ZmNjRfdCkoY3VycmVudF9wb3NpdGlvbi9yZWNsZW4pLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCWV4aXQoMTQ1KTsKCQkJfQoJCSAgIH0KCQkgICBlbHNlCgkJICAgewoJCQlpZih2ZXJpZnlfYnVmZmVyKG5idWZmLHJlY2xlbiwob2ZmNjRfdCkoY3VycmVudF9wb3NpdGlvbi9yZWNsZW4pLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCWV4aXQoMTQ2KTsKCQkJfQoJCSAgIH0KCQl9CgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJCWN1cnJlbnRfcG9zaXRpb24rPXJlY2xlbjsKCQlpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkJYXN5bmNfcmVsZWFzZShnYyk7CgkJdF9vZmZzZXQgPSAob2ZmNjRfdClyZWNsZW4qMjsKCQlpZiAoIShoX2ZsYWcgfHwga19mbGFnIHx8IG1tYXBmbGFnKSkKCQl7CgkJICBJX0xTRUVLKCBmZCwgLXRfb2Zmc2V0LCBTRUVLX0NVUiApOwoJCX0KCQljdXJyZW50X3Bvc2l0aW9uLT0oMiAqcmVjbGVuKTsKCQlyZXZlcnNlX3JlYWQgKz1yZWNsZW4vMTAyNDsKCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJcmV2ZXJzZV9yZWFkIC09cmVjbGVuLzEwMjQ7CgkJfQogICAgICAgICAgICAgICAgaWYoUV9mbGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3JldnFmZCwiJTEwLjFsZCAlMTAuMGYgJTEwLjFsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKCh0aHJlYWRfcXRpbWVfc3RvcC10aHJlYWRfcXRpbWVfc3RhcnQtdGltZV9yZXMpKSoxMDAwMDAwLHJlY2xlbik7CiNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3JldnFmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCiAgICAgICAgICAgICAgICB9Cgl9CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwoaW50KTAsIChpbnQpMSkpCgkJCXByaW50ZigiUmVhZCB1bmxvY2sgZmFpbGVkICVkXG4iLGVycm5vKTsKI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJewoJCWVuZF9hc3luYyhnYyk7CgkJZ2M9MDsKCX0KI2VuZGlmCglpZihpbmNsdWRlX2ZsdXNoKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbXN5bmMobWFkZHIsKHNpemVfdCkobnVtcmVjczY0KnJlY2xlbiksTVNfU1lOQyk7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJfQoJaWYoaW5jbHVkZV9jbG9zZSkKCXsJCgkJaWYobW1hcGZsYWcpCgkJewoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKW51bXJlY3M2NCpyZWNsZW4pOwoJCX0KCQljbG9zZShmZCk7Cgl9Cgl0ZW1wX3RpbWUgPSB0aW1lX3NvX2ZhcigpOwoJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9ICgodGVtcF90aW1lIC0gc3RhcnR0aW1lMiktdGltZV9yZXMpCgkJLWNvbXB1dGVfdmFsOwoJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IChkb3VibGUpLjAwMDAwMSkgCgl7CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dD0gdGltZV9yZXM7CgkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCXJlY19wcm9iID0gcmVjbGVuOwoJCXJlc19wcm9iPTE7Cgl9CglpZihPUFNfZmxhZyl7CgkgICByZXZlcnNlX3JlYWQ9KHJldmVyc2VfcmVhZCoxMDI0KS9yZWNsZW47Cgl9CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gcmV2ZXJzZV9yZWFkL2NoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgljaGlsZF9zdGF0LT5hY3R1YWwgPSByZXZlcnNlX3JlYWQ7CglpZigheGZsYWcpCgl7CgkJKnN0b3BfZmxhZz0xOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJfQoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lOwoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7CgkJY2hpbGRfc3RhdC0+Y3B1dGltZSA9IGNwdXRpbWU7CgkJd2FsbHRpbWUgPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWU7CgkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSB3YWxsdGltZTsKCX0KICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgdGVsbF9tYXN0ZXJfc3RhdHMoVEhSRUFEX1JFVkVSU0VfUkVBRF9URVNULCBjaGlkLCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LAogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9zdGF0LT5hY3R1YWwsCgkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lLAoJCQkoY2hhcikqc3RvcF9mbGFnLAoJCQkobG9uZyBsb25nKUNISUxEX1NUQVRFX0hPTEQpOwoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CS8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCglpZighaW5jbHVkZV9jbG9zZSkKCXsKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1zeW5jKG1hZGRyLChzaXplX3QpKG51bXJlY3M2NCpyZWNsZW4pLE1TX1NZTkMpOwoJCQltbWFwX2VuZChtYWRkciwodW5zaWduZWQgbG9uZyBsb25nKW51bXJlY3M2NCpyZWNsZW4pOwoJCX1lbHNlCgkJCWZzeW5jKGZkKTsKCQljbG9zZShmZCk7Cgl9CglmcmVlKGR1bW15ZmlsZVt4eF0pOwogICAgICAgIGlmKFFfZmxhZyAmJiAodGhyZWFkX3JldnFmZCAhPTApICkKICAgICAgICAgICAgICAgIGZjbG9zZSh0aHJlYWRfcmV2cWZkKTsKCWlmKGRlYnVnMSkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGRcbiIseHgpOwojZWxzZQoJCXByaW50ZigiXG5DaGlsZCBmaW5pc2hlZCAlbGxkXG4iLHh4KTsKI2VuZGlmCgoJaWYoTF9mbGFnKQoJewoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJldmVyc2UgcmVhZCBmaW5pc2hlZDogIiwKCQkJbm93X3N0cmluZyk7CgkJZmNsb3NlKHRocmVhZF9Md3FmZCk7Cgl9CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXJldHVybigwKTsKI2lmZGVmIE5PX1RIUkVBRFMKCWV4aXQoMCk7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJCXRocmVhZF9leGl0KCk7CgllbHNlCgkJZXhpdCgwKTsKI2VuZGlmCnJldHVybigwKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWRfc3RyaWRlX3JlYWRfdGVzdAkJCQkgICAgICAgIAkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgKgp0aHJlYWRfc3RyaWRlX3JlYWRfdGVzdCh2b2lkICp4KQojZWxzZQp2b2lkICoKdGhyZWFkX3N0cmlkZV9yZWFkX3Rlc3QoeCkKI2VuZGlmCnsKCWxvbmcgbG9uZyB4eCx4eDI7CgljaGFyICpuYnVmZj0wOwoJc3RydWN0IGNoaWxkX3N0YXRzICpjaGlsZF9zdGF0OwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJaW50IGZkOwoJbG9uZyBsb25nIGZsYWdzID0gMDsKCWRvdWJsZSB0aHJlYWRfcXRpbWVfc3RvcCx0aHJlYWRfcXRpbWVfc3RhcnQ7Cglkb3VibGUgc3RhcnR0aW1lMiA9IDA7CglmbG9hdCBkZWxheSA9IDA7Cglkb3VibGUgY29tcHV0ZV92YWwgPSAoZG91YmxlKTA7Cglkb3VibGUgdGVtcF90aW1lOwoJbG9uZyBsb25nIHJlY3NfcGVyX2J1ZmZlcjsKCW9mZjY0X3QgaTsKCW9mZjY0X3QgbG9ja19vZmZzZXQ9MDsKCW9mZjY0X3Qgc2F2ZXBvczY0PTA7CglvZmY2NF90IHdyaXR0ZW5fc29fZmFyLCBzdHJpZGVfcmVhZCxyZV9yZWFkX3NvX2ZhcixyZWFkX3NvX2ZhcjsKCW9mZjY0X3Qgc3RyaXBld3JhcCA9IDA7CglvZmY2NF90IGN1cnJlbnRfcG9zaXRpb24gPSAwOwoJY2hhciAqZHVtbXlmaWxlW01BWFNUUkVBTVNdOyAgICAgICAgICAgLyogbmFtZSBvZiBkdW1teSBmaWxlICAgICAqLwoJY2hhciAqbWFkZHI9MDsKCWNoYXIgKndtYWRkcj0wOwoJdm9sYXRpbGUgY2hhciAqYnVmZmVyMTsKCWludCBhbndzZXIsYmluZF9jcHU7CglvZmY2NF90IHRyYWpfb2Zmc2V0OwoJY2hhciB0bXBuYW1lWzI1Nl07CgljaGFyIG5vd19zdHJpbmdbMzBdOwoJRklMRSAqdGhyZWFkX3N0cnFmZD0wOwoJRklMRSAqdGhyZWFkX0x3cWZkPTA7CiNpZiBkZWZpbmVkKFZYRlMpIHx8IGRlZmluZWQoc29sYXJpcykKCWludCB0ZXN0X2ZvbyA9IDA7CiNlbmRpZgojaWZkZWYgQVNZTkNfSU8KCXN0cnVjdCBjYWNoZSAqZ2M9MDsKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCgkvKioqKioqKioqKioqKioqKiovCgkvKiBDaGlsZHJlbiBvbmx5ICovCgkvKioqKioqKioqKioqKioqKiovCglpZihjb21wdXRlX2ZsYWcpCgkJZGVsYXk9Y29tcHV0ZV90aW1lOwoJdGhyZWFkX3F0aW1lX3N0b3A9dGhyZWFkX3F0aW1lX3N0YXJ0PTA7Cgl0cmFqX29mZnNldD13YWxsdGltZT1jcHV0aW1lPTA7CglhbndzZXI9YmluZF9jcHU9MDsKCXdyaXR0ZW5fc29fZmFyPXJlYWRfc29fZmFyPXN0cmlkZV9yZWFkPXJlX3JlYWRfc29fZmFyPTA7CglyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CiNpZmRlZiBOT19USFJFQURTCgl4eD1jaGlkOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl4eCA9IChsb25nIGxvbmcpKChsb25nKXgpOwoJZWxzZQoJewoJCXh4PWNoaWQ7Cgl9CiNlbmRpZgojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIF9IUFVYX1NPVVJDRQoJaWYoaW96X3Byb2Nlc3Nvcl9iaW5kKQoJewoJCSBiaW5kX2NwdT0oYmVnaW5fcHJvYysoaW50KXh4KSVudW1fcHJvY2Vzc29yczsKCQkgcHRocmVhZF9wcm9jZXNzb3JfYmluZF9ucChQVEhSRUFEX0JJTkRfRk9SQ0VEX05QLAogICAgICAgICAgICAgICAgICAgICAgICAgKHB0aHJlYWRfc3B1X3QgKikmYW53c2VyLCAocHRocmVhZF9zcHVfdCliaW5kX2NwdSwgcHRocmVhZF9zZWxmKCkpOwoJCW15X25hcCg0MCk7CS8qIFN3aXRjaCB0byBuZXcgY3B1ICovCgl9CiNlbmRpZgojZW5kaWYKCWlmKHVzZV90aHJlYWQpCgkJbmJ1ZmY9YmFycmF5W3h4XTsKCWVsc2UKCQluYnVmZj1idWZmZXI7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CglpZihvZmxhZykKCQlmbGFncz1PX1JET05MWXxPX1NZTkM7CgllbHNlCgkJZmxhZ3M9T19SRE9OTFk7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkKFdpbmRvd3MpCiAgICAgICAJaWYodW5idWZmZXJlZCkKICAgICAgICB7CiAgICAgICAgCWhhbmQ9Q3JlYXRlRmlsZShkdW1teWZpbGVbeHhdLAoJCSAgR0VORVJJQ19SRUFEfEdFTkVSSUNfV1JJVEUsCgkgICAgICAgICAgRklMRV9TSEFSRV9XUklURXxGSUxFX1NIQVJFX1JFQUQsCgkJICBOVUxMLE9QRU5fRVhJU1RJTkcsRklMRV9GTEFHX05PX0JVRkZFUklOR3wKCQkgIEZJTEVfRkxBR19XUklURV9USFJPVUdIfEZJTEVfRkxBR19QT1NJWF9TRU1BTlRJQ1MsCgkJICBOVUxMKTsKICAgICAgIAl9CiNlbmRpZgoJaWYoKGZkID0gSV9PUEVOKGR1bW15ZmlsZVt4eF0sICgoaW50KWZsYWdzKSwwKSk8MCkKCXsKCQljbGllbnRfZXJyb3I9ZXJybm87CgkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJc2VuZF9zdG9wKCk7CgkJcGVycm9yKGR1bW15ZmlsZVt4eF0pOwoJCWV4aXQoMTQ3KTsKCX0KI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCiNpZmRlZiBWWEZTCglpZihkaXJlY3RfZmxhZykKCXsKCQlpb2N0bChmZCxWWF9TRVRDQUNIRSxWWF9ESVJFQ1QpOwoJCWlvY3RsKGZkLFZYX0dFVENBQ0hFLCZ0ZXN0X2Zvbyk7CgkJaWYodGVzdF9mb28gPT0gMCkKCQl7CgkJCWlmKCFjbGllbnRfaW96b25lKQoJCQkgIHByaW50ZigiXG5WeEZTIGFkdmFuY2VkIHNldGNhY2hlIGZlYXR1cmUgbm90IGF2YWlsYWJsZS5cbiIpOwoJCQlleGl0KDMpOwoJCX0KCX0KI2VuZGlmCiNpZiBkZWZpbmVkKHNvbGFyaXMpCiAgICAgICAgaWYoZGlyZWN0X2ZsYWcpCiAgICAgICAgewogICAgICAgICAgICAgICAgdGVzdF9mb28gPSBkaXJlY3RpbyhmZCwgRElSRUNUSU9fT04pOwogICAgICAgICAgICAgICAgaWYodGVzdF9mb28gIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbmRpcmVjdGlvIG5vdCBhdmFpbGFibGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiNlbmRpZgoKCWlmKG1tYXBmbGFnKQoJewoJCW1hZGRyPShjaGFyICopaW5pdGZpbGUoZmQsKG51bXJlY3M2NCpyZWNsZW4pLDAsUFJPVF9SRUFEKTsKCX0KCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwogICAgICAgIGlmKFFfZmxhZykKICAgICAgICB7CiAgICAgICAgICAgICAgICBzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3N0cm9sLmRhdCIsKGludCl4eCk7CiAgICAgICAgICAgICAgICB0aHJlYWRfc3RycWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKICAgICAgICAgICAgICAgIGlmKHRocmVhZF9zdHJxZmQ9PTApCiAgICAgICAgICAgICAgICB7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDQwKTsKICAgICAgICAgICAgICAgIH0KCQlmcHJpbnRmKHRocmVhZF9zdHJxZmQsIk9mZnNldCBpbiBLYnl0ZXMgICBMYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyAgVHJhbnNmZXIgc2l6ZSBpbiBieXRlc1xuIik7CiAgICAgICAgfQoJaWYoTF9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWQubG9nIiwoaW50KXh4KTsKCQl0aHJlYWRfTHdxZmQ9Zm9wZW4odG1wbmFtZSwiYSIpOwoJCWlmKHRocmVhZF9Md3FmZD09MCkKCQl7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuICVzXG4iLHRtcG5hbWUpOwoJCQlleGl0KDQwKTsKCQl9CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiU3RyaWRlIHRlc3Qgc3RhcnQ6ICIsCgkJCW5vd19zdHJpbmcpOwoJfQoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKICAgICAgICAgICAgICAgIHdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQoKCQkvKiB3YWl0IGZvciBwYXJlbnQgdG8gc2F5IGdvICovCiAgICAgICAgICAgICAgICB3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgUG9sbCgobG9uZyBsb25nKTEpOwoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDEsICAoaW50KTEpIT0wKQoJCQlwcmludGYoIkZpbGUgbG9jayBmb3Igd3JpdGUgZmFpbGVkLiAlZFxuIixlcnJubyk7CglzdGFydHRpbWUyID0gdGltZV9zb19mYXIoKTsKCWlmKGNwdXV0aWxmbGFnKQoJewoJCXdhbGx0aW1lID0gc3RhcnR0aW1lMjsKCQljcHV0aW1lID0gY3B1dGltZV9zb19mYXIoKTsKCX0KCWZvcihpPTA7IGk8bnVtcmVjczY0OyBpKyspewoJCWlmKGRpc3J1cHRfZmxhZyAmJiAoKGklRElTUlVQVCk9PTApKQoJCXsKCQkJZGlzcnVwdChmZCk7CgkJfQoJCWlmKGNvbXB1dGVfZmxhZykKCQkJY29tcHV0ZV92YWwrPWRvX2NvbXB1dGUoZGVsYXkpOwoJCWlmKFFfZmxhZykKCQl7CgkJCXRyYWpfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJfQoJCWlmKHJsb2NraW5nKQoJCXsKCQkJbG9ja19vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCQkJbXlsb2NrcigoaW50KSBmZCwgKGludCkgMSwgKGludCkxLAoJCQkgIGxvY2tfb2Zmc2V0LCByZWNsZW4pOwoJCX0KCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJaWYoZGVidWcxKQoJCQkJcHJpbnRmKCJcbiglbGQpIFN0b3BwZWQgYnkgYW5vdGhlciAzXG4iLCAobG9uZyl4eCk7CgkJCWJyZWFrOwoJCX0KCQlpZihwdXJnZSkKCQkJcHVyZ2VpdChuYnVmZixyZWNsZW4pOwogICAgICAgICAgICAgICAgaWYoUV9mbGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfcXRpbWVfc3RhcnQ9dGltZV9zb19mYXIoKTsKICAgICAgICAgICAgICAgIH0KCQlpZih2ZXJpZnkpCgkJCXNhdmVwb3M2ND1jdXJyZW50X3Bvc2l0aW9uLyhvZmY2NF90KXJlY2xlbjsKCQlpZihtbWFwZmxhZykKCQl7CgkJCXdtYWRkciA9ICZtYWRkcltjdXJyZW50X3Bvc2l0aW9uXTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJfQoJCWVsc2UKCQl7CgkJCWlmKGFzeW5jX2ZsYWcpCgkJCXsKCQkJICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgYXN5bmNfcmVhZF9ub19jb3B5KGdjLCAobG9uZyBsb25nKWZkLCAmYnVmZmVyMSwgKGN1cnJlbnRfcG9zaXRpb24pLAoJCQkgICAgICAJcmVjbGVuLCBzdHJpZGUsKG51bXJlY3M2NCpyZWNsZW4pLGRlcHRoKTsKCQkJICAgIGVsc2UKCQkJICAgICAgYXN5bmNfcmVhZChnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIChjdXJyZW50X3Bvc2l0aW9uKSxyZWNsZW4sCgkJCSAgICAJc3RyaWRlLChudW1yZWNzNjQqcmVjbGVuKSxkZXB0aCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCSAgaWYocmVhZCgoaW50KWZkLCAodm9pZCopbmJ1ZmYsIChzaXplX3QpIHJlY2xlbikgIT0gcmVjbGVuKQoJCQkgIHsKCQkJCWlmKCpzdG9wX2ZsYWcpCgkJCQl7CgkJCQkJaWYoZGVidWcxKQoJCQkJCQlwcmludGYoIlxuKCVsZCkgU3RvcHBlZCBieSBhbm90aGVyIDRcbiIsIChsb25nKXh4KTsKCQkJCQlicmVhazsKCQkJCX0KI2lmZGVmIE5PX1BSSU5UX0xMRAoJCSAgICAJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLCBmZCk7CiNlbHNlCgkJICAgIAkJcHJpbnRmKCJcbkVycm9yIHJlYWRpbmcgYmxvY2sgJWxsZCwgZmQ9ICVkXG4iLCBpLCBmZCk7CiNlbmRpZgoJCQkJcGVycm9yKCJyZWFkIik7CgkJCQlpZiAoIW5vX3VubGluaykKCQkJCXsKCQkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCSAgICAJCWV4aXQoMTQ5KTsKCQkJICB9CgkJCX0KCQl9CgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTEsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJCWN1cnJlbnRfcG9zaXRpb24rPXJlY2xlbjsKCQlpZih2ZXJpZnkpewoJCSAgIGlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCSAgIHsKCQkJaWYodmVyaWZ5X2J1ZmZlcihidWZmZXIxLHJlY2xlbiwob2ZmNjRfdClzYXZlcG9zNjQscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5KSl7CgkJCQlpZiAoIW5vX3VubGluaykKCQkJCXsKCQkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCQkJZXhpdCgxNTApOwoJCQl9CgkJICAgfQoJCSAgIGVsc2UKCQkgICB7CgkJCWlmKHZlcmlmeV9idWZmZXIobmJ1ZmYscmVjbGVuLChvZmY2NF90KXNhdmVwb3M2NCxyZWNsZW4sKGxvbmcgbG9uZylwYXR0ZXJuLHN2ZXJpZnkpKXsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDE1MSk7CgkJCX0KCQkgICB9CgkJfQoJCWlmKGFzeW5jX2ZsYWcgJiYgbm9fY29weV9mbGFnKQoJCQlhc3luY19yZWxlYXNlKGdjKTsKCQlpZihjdXJyZW50X3Bvc2l0aW9uICsgKHN0cmlkZSAqIHJlY2xlbikgPj0gKG51bXJlY3M2NCAqIHJlY2xlbiktcmVjbGVuKSAKCQl7CgkJCWN1cnJlbnRfcG9zaXRpb249MDsKCgkJCXN0cmlwZXdyYXArKzsKCQkJICAKCQkJaWYobnVtcmVjczY0IDw9IHN0cmlkZSkKCQkJewoJCQkJY3VycmVudF9wb3NpdGlvbj0wOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJY3VycmVudF9wb3NpdGlvbiA9IChvZmY2NF90KSgoc3RyaXBld3JhcCklbnVtcmVjczY0KSpyZWNsZW47CgkJCX0KCQkJaWYgKCEoaF9mbGFnIHx8IGtfZmxhZyB8fCBtbWFwZmxhZykpCgkJCXsKCQkJICBpZihJX0xTRUVLKGZkLGN1cnJlbnRfcG9zaXRpb24sU0VFS19TRVQpPDApCgkJCSAgewoJCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCQlzZW5kX3N0b3AoKTsKCQkJCXBlcnJvcigibHNlZWsiKTsKCQkJCWV4aXQoMTUyKTsKCQkJICB9CgkJCX0KCQl9CgkJZWxzZQkJCQoJCXsKCQkJY3VycmVudF9wb3NpdGlvbis9KHN0cmlkZSpyZWNsZW4pLXJlY2xlbjsKCQkJaWYgKCEoaF9mbGFnIHx8IGtfZmxhZyB8fCBtbWFwZmxhZykpCgkJCXsKCQkJICBpZihJX0xTRUVLKGZkLGN1cnJlbnRfcG9zaXRpb24sU0VFS19TRVQpPDApCgkJCSAgewoJCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCQlzZW5kX3N0b3AoKTsKCQkJCXBlcnJvcigibHNlZWsiKTsKCQkJCWV4aXQoMTU0KTsKCQkJICB9OwoJCQl9CgkJfQoJCXN0cmlkZV9yZWFkICs9cmVjbGVuLzEwMjQ7CgkJaWYoKnN0b3BfZmxhZykKCQl7CgkJCXN0cmlkZV9yZWFkIC09cmVjbGVuLzEwMjQ7CgkJfQogICAgICAgICAgICAgICAgaWYoUV9mbGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfcXRpbWVfc3RvcD10aW1lX3NvX2ZhcigpOwojaWZkZWYgTk9fUFJJTlRfTExECiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3N0cnFmZCwiJTEwLjFsZCAlMTAuMGYgJTEwLjFsZFxuIiwodHJhal9vZmZzZXQpLzEwMjQsKCh0aHJlYWRfcXRpbWVfc3RvcC10aHJlYWRfcXRpbWVfc3RhcnQtdGltZV9yZXMpKSoxMDAwMDAwLHJlY2xlbik7CiNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYodGhyZWFkX3N0cnFmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCiAgICAgICAgICAgICAgICB9Cgl9CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwoaW50KTAsKGludCkxKSkKCQkJcHJpbnRmKCJSZWFkIHVubG9jayBmYWlsZWQgJWRcbiIsZXJybm8pOwojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShudW1yZWNzNjQqcmVjbGVuKSxNU19TWU5DKTsKCQl9ZWxzZQoJCQlmc3luYyhmZCk7Cgl9CglpZihpbmNsdWRlX2Nsb3NlKQoJewkKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpbnVtcmVjczY0KnJlY2xlbik7CgkJfQoJCWNsb3NlKGZkKTsKCX0KCXRlbXBfdGltZSA9IHRpbWVfc29fZmFyKCk7CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gKCh0ZW1wX3RpbWUgLSBzdGFydHRpbWUyKS10aW1lX3JlcykKCQktY29tcHV0ZV92YWw7CglpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KCWlmKE9QU19mbGFnKXsKCSAgIHN0cmlkZV9yZWFkPShzdHJpZGVfcmVhZCoxMDI0KS9yZWNsZW47Cgl9CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gc3RyaWRlX3JlYWQvY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IHN0cmlkZV9yZWFkOwoJaWYoIXhmbGFnKQoJewoJCSpzdG9wX2ZsYWc9MTsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCX0KCWlmKGNwdXV0aWxmbGFnKQoJewoJCWNwdXRpbWUgPSBjcHV0aW1lX3NvX2ZhcigpIC0gY3B1dGltZTsKCQlpZiAoY3B1dGltZSA8IGNwdXRpbWVfcmVzKQoJCQljcHV0aW1lID0gMC4wOwoJCWNoaWxkX3N0YXQtPmNwdXRpbWUgPSBjcHV0aW1lOwoJCXdhbGx0aW1lID0gdGltZV9zb19mYXIoKSAtIHdhbGx0aW1lOwoJCWNoaWxkX3N0YXQtPndhbGx0aW1lID0gd2FsbHRpbWU7Cgl9CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9zdGF0cyhUSFJFQURfU1RSSURFX1RFU1QsY2hpZCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfc3RhdC0+YWN0dWFsLAoJCQljaGlsZF9zdGF0LT5jcHV0aW1lLCBjaGlsZF9zdGF0LT53YWxsdGltZSwKCQkJKGNoYXIpKnN0b3BfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylDSElMRF9TVEFURV9IT0xEKTsKICAgICAgICB9CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsJLyogVGVsbCBwYXJlbnQgSSdtIGRvbmUgKi8KCWlmKCFpbmNsdWRlX2Nsb3NlKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbXN5bmMobWFkZHIsKHNpemVfdCkobnVtcmVjczY0KnJlY2xlbiksTVNfU1lOQyk7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpbnVtcmVjczY0KnJlY2xlbik7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJCWNsb3NlKGZkKTsKCX0KICAgICAgICBpZihRX2ZsYWcgJiYgKHRocmVhZF9zdHJxZmQgIT0wKSApCiAgICAgICAgICAgICAgICBmY2xvc2UodGhyZWFkX3N0cnFmZCk7CglmcmVlKGR1bW15ZmlsZVt4eF0pOwoJaWYoZGVidWcxKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcbkNoaWxkIGZpbmlzaGVkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcbkNoaWxkIGZpbmlzaGVkICVsbGRcbiIseHgpOwojZW5kaWYKCglpZihMX2ZsYWcpCgl7CgkJZ2V0X2RhdGUobm93X3N0cmluZyk7CgkJZnByaW50Zih0aHJlYWRfTHdxZmQsIiUtMjVzICVzIiwiU3RyaWRlIHRlc3QgZmluaXNoZWQ6ICIsCgkJCW5vd19zdHJpbmcpOwoJCWZjbG9zZSh0aHJlYWRfTHdxZmQpOwoJfQoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQlyZXR1cm4oMCk7CiNpZmRlZiBOT19USFJFQURTCglleGl0KDApOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl0aHJlYWRfZXhpdCgpOwoJZWxzZQoJCWV4aXQoMCk7CiNlbmRpZgpyZXR1cm4oMCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRocmVhZCByYW5kb20gdGVzdAkJCQkgICAgICAgIAkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX21peF90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfbWl4X3Rlc3QoeCkKI2VuZGlmCnsKCWludCBzZWxlY3RvcjsKCWludCBudW1fcmVhZGVyczsKCWxvbmcgeHg7CgojaWZkZWYgTk9fVEhSRUFEUwoJeHg9Y2hpZDsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgl7CgkJeHggPSAobG9uZyl4OwoJfQoJZWxzZQoJewoJCXh4PShsb25nKWNoaWQ7Cgl9CiNlbmRpZgoJaWYocGN0X3JlYWQhPTApCgl7CiAJCW51bV9yZWFkZXJzID0gKHBjdF9yZWFkICogbnVtX2NoaWxkKS8xMDA7CiAgICAgICAgICAgICAgICBpZih4eCA8IG51bV9yZWFkZXJzKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvcj0wOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvcj0xOwoJfQoJZWxzZQoJewoJICAgaWYoS3BsdXNfZmxhZykKCSAgIHsKCQlpZih4eCsxIDw9IEtwbHVzX3JlYWRlcnMpCgkJCXNlbGVjdG9yPTA7CgkJZWxzZQoJCQlzZWxlY3Rvcj0xOwoJICAgfQoJICAgZWxzZQoJICAgewoJCS8qIFNpbXBsZSByb3VuZCByb2JpbiAqLwoJCXNlbGVjdG9yPSAoKGludCl4eCkgJSAyOwoJICAgfQkJCgl9CglpZihzZWxlY3Rvcj09MCkKCXsKCQlpZihjZGVidWcgfHwgbWRlYnVnKSBwcmludGYoIk1peCByZWFkICVkXG4iLHNlbGVjdG9yKTsKCQlpZihzZXFfbWl4KQoJCQl0aHJlYWRfcmVhZF90ZXN0KHgpOwoJCWVsc2UKCQkJdGhyZWFkX3JhbnJlYWRfdGVzdCh4KTsKCX0KCWVsc2UKCXsKCQlpZihjZGVidWcgfHwgbWRlYnVnKSBwcmludGYoIk1peCB3cml0ZSAlZFxuIixzZWxlY3Rvcik7CgkJaWYoc2VxX21peCkKCQkJdGhyZWFkX3dyaXRlX3Rlc3QoeCk7CgkJZWxzZQoJCQl0aHJlYWRfcmFud3JpdGVfdGVzdCh4KTsKCX0KCXJldHVybigwKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaHJlYWQgcmFuZG9tIHJlYWQgdGVzdAkJCQkgICAgICAgIAkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgKgp0aHJlYWRfcmFucmVhZF90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfcmFucmVhZF90ZXN0KHgpCiNlbmRpZgp7Cglsb25nIGxvbmcgeHgseHgyOwoJc3RydWN0IGNoaWxkX3N0YXRzICpjaGlsZF9zdGF0OwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJaW50IGZkOwoJbG9uZyBsb25nIGZsYWdzID0gMDsKCWRvdWJsZSB0aHJlYWRfcXRpbWVfc3RvcCx0aHJlYWRfcXRpbWVfc3RhcnQ7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7CglmbG9hdCBkZWxheSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJZG91YmxlIGNvbXB1dGVfdmFsID0gKGRvdWJsZSkwOwoJb2ZmNjRfdCB3cml0dGVuX3NvX2ZhciwgcmFucmVhZF9zb19mYXIsIHJlX3dyaXR0ZW5fc29fZmFyLHJlX3JlYWRfc29fZmFyOwoJbG9uZyBsb25nIHJlY3NfcGVyX2J1ZmZlcjsKCW9mZjY0X3QgY3VycmVudF9vZmZzZXQ9MDsKCW9mZjY0X3QgaTsKCWNoYXIgKmR1bW15ZmlsZVtNQVhTVFJFQU1TXTsgICAgICAgICAgIC8qIG5hbWUgb2YgZHVtbXkgZmlsZSAgICAgKi8KCWNoYXIgKm5idWZmPTA7CgljaGFyICptYWRkcj0wOwoJY2hhciAqd21hZGRyPTA7Cgl2b2xhdGlsZSBjaGFyICpidWZmZXIxOwoJaW50IGFud3NlcixiaW5kX2NwdTsKCW9mZjY0X3QgdHJhal9vZmZzZXQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7CgljaGFyIHRtcG5hbWVbMjU2XTsKCWNoYXIgbm93X3N0cmluZ1szMF07CglGSUxFICp0aHJlYWRfcmFuZHJmZD0wOwoJRklMRSAqdGhyZWFkX0x3cWZkPTA7Cglsb25nIGxvbmcgKnJlY251bT0wOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKCWxvbmcgbG9uZyBzYXZlX3BvczsKI2lmIGRlZmluZWQgKGJzZDRfMikgfHwgZGVmaW5lZChXaW5kb3dzKQoJbG9uZyBsb25nIHJhbmQxLHJhbmQyLHJhbmQzOwojZW5kaWYKCXVuc2lnbmVkIGxvbmcgbG9uZyBiaWdfcmFuZDsKI2lmZGVmIEFTWU5DX0lPCglzdHJ1Y3QgY2FjaGUgKmdjPTA7CiNlbHNlCglsb25nIGxvbmcgKmdjPTA7CiNlbmRpZgojaWZkZWYgTUVSU0VOTkUKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW5pdFs0XT17MHgxMjM0NVVMTCwgMHgyMzQ1NlVMTCwgMHgzNDU2N1VMTCwgMHg0NTY3OFVMTH0sIGxlbmd0aD00OwojZW5kaWYKCiNpZmRlZiBNRVJTRU5ORQogICAgICAgIGluaXRfYnlfYXJyYXk2NChpbml0LCBsZW5ndGgpOwojZWxzZQojaWZkZWYgYnNkNF8yCiAgICAgICAgc3JhbmQoMCk7CiNlbHNlCiNpZmRlZiBXaW5kb3dzCiAgICAgICAgc3JhbmQoMCk7CiNlbHNlCiAgICAgICAgc3JhbmQ0OCgwKTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKICAgICAgICByZWNudW0gPSAobG9uZyBsb25nICopbWFsbG9jKHNpemVvZigqcmVjbnVtKSpudW1yZWNzNjQpOwogICAgICAgIGlmIChyZWNudW0pewogICAgICAgICAgICAgLyogcHJlLWNvbXB1dGUgcmFuZG9tIHNlcXVlbmNlIGJhc2VkIG9uIAoJCUZpc2NoZXItWWF0ZXMgKEtudXRoKSBjYXJkIHNodWZmbGUgKi8KICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgbnVtcmVjczY0OyBpKyspewogICAgICAgICAgICAgICAgcmVjbnVtW2ldID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBudW1yZWNzNjQ7IGkrKykgewogICAgICAgICAgICAgICAgbG9uZyBsb25nIHRtcCA9IHJlY251bVtpXTsKI2lmZGVmIE1FUlNFTk5FCiAgICAgIAkgICAgICAgYmlnX3JhbmQgPSBnZW5yYW5kNjRfaW50NjQoKTsKI2Vsc2UKI2lmZGVmIGJzZDRfMgogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQogICAgICAgICAgICAgICBiaWdfcmFuZCA9IGxyYW5kNDgoKTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKICAgICAgICAgICAgICAgYmlnX3JhbmQgPSBiaWdfcmFuZCVudW1yZWNzNjQ7CiAgICAgICAgICAgICAgIHRtcCA9IHJlY251bVtpXTsKICAgICAgICAgICAgICAgcmVjbnVtW2ldID0gcmVjbnVtW2JpZ19yYW5kXTsKICAgICAgICAgICAgICAgcmVjbnVtW2JpZ19yYW5kXSA9IHRtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KCWVsc2UKCXsKCQlmcHJpbnRmKHN0ZGVyciwiUmFuZG9tIHVuaXF1ZW5lc3MgZmFsbGJhY2suXG4iKTsKCX0KCWlmKGNvbXB1dGVfZmxhZykKCQlkZWxheT1jb21wdXRlX3RpbWU7Cgl0aHJlYWRfcXRpbWVfc3RvcD10aHJlYWRfcXRpbWVfc3RhcnQ9MDsKCXRyYWpfb2Zmc2V0PXdhbGx0aW1lPWNwdXRpbWU9MDsKCWFud3Nlcj1iaW5kX2NwdT0wOwoJd3JpdHRlbl9zb19mYXI9cmFucmVhZF9zb19mYXI9cmVfd3JpdHRlbl9zb19mYXI9cmVfcmVhZF9zb19mYXI9MDsKCXJlY3NfcGVyX2J1ZmZlciA9IGNhY2hlX3NpemUvcmVjbGVuIDsKI2lmZGVmIE5PX1RIUkVBRFMKCXh4PWNoaWQ7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJCXh4ID0gKGxvbmcgbG9uZykoKGxvbmcpeCk7CgllbHNlCgl7CgkJeHg9Y2hpZDsKCX0KI2VuZGlmCiNpZm5kZWYgTk9fVEhSRUFEUwojaWZkZWYgX0hQVVhfU09VUkNFCglpZihpb3pfcHJvY2Vzc29yX2JpbmQpCgl7CgkJIGJpbmRfY3B1PShiZWdpbl9wcm9jKyhpbnQpeHgpJW51bV9wcm9jZXNzb3JzOwoJCSBwdGhyZWFkX3Byb2Nlc3Nvcl9iaW5kX25wKFBUSFJFQURfQklORF9GT1JDRURfTlAsCiAgICAgICAgICAgICAgICAgICAgICAgICAocHRocmVhZF9zcHVfdCAqKSZhbndzZXIsIChwdGhyZWFkX3NwdV90KWJpbmRfY3B1LCBwdGhyZWFkX3NlbGYoKSk7CgkJbXlfbmFwKDQwKTsJLyogU3dpdGNoIHRvIG5ldyBjcHUgKi8KCX0KI2VuZGlmCiNlbmRpZgoJaWYodXNlX3RocmVhZCkKCQluYnVmZj1iYXJyYXlbeHhdOwoJZWxzZQoJCW5idWZmPWJ1ZmZlcjsKCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CglpZihvZmxhZykKCXsKCQlmbGFncz1PX1JET05MWXxPX1NZTkM7Cgl9CgllbHNlCgkJZmxhZ3M9T19SRE9OTFk7CiNpZiBkZWZpbmVkKF9IUFVYX1NPVVJDRSkgfHwgZGVmaW5lZChsaW51eCkKCWlmKHJlYWRfc3luYykKCQlmbGFncyB8PU9fUlNZTkN8T19TWU5DOwojZW5kaWYKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVDsKI2VuZGlmCiNpZiBkZWZpbmVkKFRSVTY0KQoJaWYoZGlyZWN0X2ZsYWcpCgkJZmxhZ3MgfD1PX0RJUkVDVElPOwojZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChXaW5kb3dzKQogICAgICAgCWlmKHVuYnVmZmVyZWQpCiAgICAgICAgewogICAgICAgIAloYW5kPUNyZWF0ZUZpbGUoZHVtbXlmaWxlW3h4XSwKCQkgIEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFLAoJICAgICAgICAgIEZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELAoJCSAgTlVMTCxPUEVOX0VYSVNUSU5HLEZJTEVfRkxBR19OT19CVUZGRVJJTkd8CgkJICBGSUxFX0ZMQUdfV1JJVEVfVEhST1VHSHxGSUxFX0ZMQUdfUE9TSVhfU0VNQU5USUNTLAoJCSAgTlVMTCk7CiAgICAgICAJfQojZW5kaWYKCWlmKChmZCA9IElfT1BFTihkdW1teWZpbGVbeHhdLCAoKGludClmbGFncyksMCkpPDApCgl7CgkJY2xpZW50X2Vycm9yPWVycm5vOwoJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCXNlbmRfc3RvcCgpOwoJCXBlcnJvcihkdW1teWZpbGVbeHhdKTsKCQlleGl0KDE1Nik7Cgl9CiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCQlhc3luY19pbml0KCZnYyxmZCxkaXJlY3RfZmxhZyk7CiNlbmRpZgoKI2lmZGVmIFZYRlMKCWlmKGRpcmVjdF9mbGFnKQoJewoJCWlvY3RsKGZkLFZYX1NFVENBQ0hFLFZYX0RJUkVDVCk7CgkJaW9jdGwoZmQsVlhfR0VUQ0FDSEUsJnRlc3RfZm9vKTsKCQlpZih0ZXN0X2ZvbyA9PSAwKQoJCXsKCQkJaWYoIWNsaWVudF9pb3pvbmUpCgkJCSAgcHJpbnRmKCJcblZ4RlMgYWR2YW5jZWQgc2V0Y2FjaGUgZmVhdHVyZSBub3QgYXZhaWxhYmxlLlxuIik7CgkJCWV4aXQoMyk7CgkJfQoJfQojZW5kaWYKI2lmIGRlZmluZWQoc29sYXJpcykKICAgICAgICBpZihkaXJlY3RfZmxhZykKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZXN0X2ZvbyA9IGRpcmVjdGlvKGZkLCBESVJFQ1RJT19PTik7CiAgICAgICAgICAgICAgICBpZih0ZXN0X2ZvbyAhPSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZighY2xpZW50X2lvem9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuZGlyZWN0aW8gbm90IGF2YWlsYWJsZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDMpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KI2VuZGlmCgoJaWYobW1hcGZsYWcpCgl7CgkJbWFkZHI9KGNoYXIgKilpbml0ZmlsZShmZCwobnVtcmVjczY0KnJlY2xlbiksMCxQUk9UX1JFQUQpOwoJfQoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gMDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IDA7CglpZihkZWJ1ZzEpCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCS8qKioqKioqKioqKioqKioqKi8KCS8qIENoaWxkcmVuIG9ubHkgKi8KCS8qKioqKioqKioqKioqKioqKi8KCWlmKGZldGNob24pCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwogICAgICAgIGlmKFFfZmxhZykKICAgICAgICB7CiAgICAgICAgICAgICAgICBzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkX3JhbmRyb2wuZGF0IiwoaW50KXh4KTsKICAgICAgICAgICAgICAgIHRocmVhZF9yYW5kcmZkPWZvcGVuKHRtcG5hbWUsImEiKTsKICAgICAgICAgICAgICAgIGlmKHRocmVhZF9yYW5kcmZkPT0wKQogICAgICAgICAgICAgICAgewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJVbmFibGUgdG8gb3BlbiAlc1xuIix0bXBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCg0MCk7CiAgICAgICAgICAgICAgICB9CgkJZnByaW50Zih0aHJlYWRfcmFuZHJmZCwiT2Zmc2V0IGluIEtieXRlcyAgIExhdGVuY3kgaW4gbWljcm9zZWNvbmRzICBUcmFuc2ZlciBzaXplIGluIGJ5dGVzXG4iKTsKICAgICAgICB9CglpZihMX2ZsYWcpCgl7CgkJc3ByaW50Zih0bXBuYW1lLCJDaGlsZF8lZC5sb2ciLChpbnQpeHgpOwoJCXRocmVhZF9Md3FmZD1mb3Blbih0bXBuYW1lLCJhIik7CgkJaWYodGhyZWFkX0x3cWZkPT0wKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWV4aXQoNDApOwoJCX0KCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJSYW5kb20gcmVhZCBzdGFydDogIiwKCQkJbm93X3N0cmluZyk7Cgl9CgljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKICAgICAgICAgICAgICAgIHdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgICAgIHdoaWxlKGNoaWxkX3N0YXQtPmZsYWchPUNISUxEX1NUQVRFX0JFR0lOKSAgIC8qIFdhaXQgZm9yIHNpZ25hbCBmcm9tIHBhcmVudCAqLwogICAgICAgICAgICAgICAgICAgICAgICBQb2xsKChsb25nIGxvbmcpMSk7CiAgICAgICAgfQoJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9CgojaWZkZWYgTUVSU0VOTkUKICAgICAgICBpbml0X2J5X2FycmF5NjQoaW5pdCwgbGVuZ3RoKTsKI2Vsc2UKI2lmZGVmIGJzZDRfMgogICAgICAgIHNyYW5kKDApOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgIHNyYW5kKDApOwojZWxzZQoJc3JhbmQ0OCgwKTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKCWlmKGZpbGVfbG9jaykKCQlpZihteWxvY2tmKChpbnQpIGZkLCAoaW50KSAxLCAoaW50KTEpIT0wKQoJCQlwcmludGYoIkZpbGUgbG9jayBmb3IgcmVhZCBmYWlsZWQuICVkXG4iLGVycm5vKTsKCWZvcihpPTA7IGk8bnVtcmVjczY0OyBpKyspIHsKCQlpZihjb21wdXRlX2ZsYWcpCgkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGRlbGF5KTsKCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJaWYoZGVidWcxKQoJCQkJcHJpbnRmKCJcbiglbGQpIFN0b3BwZWQgYnkgYW5vdGhlciAyXG4iLCAobG9uZyl4eCk7CgkJCWJyZWFrOwoJCX0KCQlpZihwdXJnZSkKCQkJcHVyZ2VpdChuYnVmZixyZWNsZW4pOwoJCWlmIChyZWNudW0pIHsKCQkJY3VycmVudF9vZmZzZXQgPSByZWNsZW4gKiAobG9uZyBsb25nKXJlY251bVtpXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiNpZmRlZiBNRVJTRU5ORQogICAgICAgICAgICAgICAgICAgYmlnX3JhbmQgPSBnZW5yYW5kNjRfaW50NjQoKTsKCQkgICBjdXJyZW50X29mZnNldCA9IChvZmY2NF90KXJlY2xlbiAqIChiaWdfcmFuZCVudW1yZWNzNjQpOwojZWxzZQojaWZkZWYgYnNkNF8yCgkJICAgcmFuZDE9KGxvbmcgbG9uZylyYW5kKCk7CgkJICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CgkJICAgcmFuZDM9KGxvbmcgbG9uZylyYW5kKCk7CgkJICAgYmlnX3JhbmQ9KHJhbmQxPDwzMil8KHJhbmQyPDwxNil8KHJhbmQzKTsKCQkgICBjdXJyZW50X29mZnNldCA9IChvZmY2NF90KXJlY2xlbiAqIChiaWdfcmFuZCVudW1yZWNzNjQpOwojZWxzZQojaWZkZWYgV2luZG93cwoJCSAgIHJhbmQxPShsb25nIGxvbmcpcmFuZCgpOwoJCSAgIHJhbmQyPShsb25nIGxvbmcpcmFuZCgpOwoJCSAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwoJCSAgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CgkJICAgY3VycmVudF9vZmZzZXQgPSAob2ZmNjRfdClyZWNsZW4gKiAoYmlnX3JhbmQlbnVtcmVjczY0KTsKI2Vsc2UKCQkgICBjdXJyZW50X29mZnNldCA9IHJlY2xlbiAqIChscmFuZDQ4KCklbnVtcmVjczY0KTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKCQl9CgoJCWlmICghKGhfZmxhZyB8fCBrX2ZsYWcgfHwgbW1hcGZsYWcpKQoJCXsKCQkgIGlmKElfTFNFRUsoIGZkLCBjdXJyZW50X29mZnNldCwgU0VFS19TRVQgKTwwKQoJCSAgewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKCQkJcGVycm9yKCJsc2VlayIpOwoJCQlleGl0KDE1OCk7CgkJICB9OwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoUV9mbGFnKQoJCXsKCQkJdHJhal9vZmZzZXQ9SV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CgkJfQoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJd21hZGRyID0gJm1hZGRyW2N1cnJlbnRfb2Zmc2V0XTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKiluYnVmZiwobG9uZyBsb25nKXJlY2xlbik7CgkJfQoJCWVsc2UKCQl7CgkJCWlmKGFzeW5jX2ZsYWcpCgkJCXsKCQkJICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICAgYXN5bmNfcmVhZF9ub19jb3B5KGdjLCAobG9uZyBsb25nKWZkLCAmYnVmZmVyMSwgKGN1cnJlbnRfb2Zmc2V0KSwKCQkJICAgICAgCSByZWNsZW4sIDBMTCwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQkgICAgZWxzZQoJCQkgICAgICBhc3luY19yZWFkKGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgKGN1cnJlbnRfb2Zmc2V0KSwgcmVjbGVuLAoJCQkgICAgCTBMTCwobnVtcmVjczY0KnJlY2xlbiksZGVwdGgpOwoJCQl9CgkJCWVsc2UKCQkJewoJICAJCSAgaWYocmVhZCgoaW50KWZkLCAodm9pZCopbmJ1ZmYsIChzaXplX3QpcmVjbGVuKSAhPSByZWNsZW4pCgkgIAkJICB7CgkJCQlpZigqc3RvcF9mbGFnKQoJCQkJewoJCQkJCWlmKGRlYnVnMSkKCQkJCQkJcHJpbnRmKCJcbiglbGQpIFN0b3BwZWQgYnkgYW5vdGhlciAyXG4iLCAobG9uZyl4eCk7CgkJCQkJYnJlYWs7CgkJCQl9CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJCXByaW50ZigiXG5FcnJvciByZWFkaW5nIGJsb2NrIGF0ICVsZFxuIiwKCQkJCQkgb2Zmc2V0KTsgCiNlbHNlCgkJCQlwcmludGYoIlxuRXJyb3IgcmVhZGluZyBibG9jayBhdCAlbGxkXG4iLAoJCQkJCSBvZmZzZXQpOyAKI2VuZGlmCgkJCQlwZXJyb3IoInJhbnJlYWQiKTsKCQkJCWlmICghbm9fdW5saW5rKQoJCQkJewoJCQkJICAgaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW3h4XSkpCgkJCQkJdW5saW5rKGR1bW15ZmlsZVt4eF0pOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7CgkJCQlleGl0KDE2MCk7CgkgCQkgIH0KCQkJfQoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMSwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJc2F2ZV9wb3M9Y3VycmVudF9vZmZzZXQvcmVjbGVuOwoJCWN1cnJlbnRfb2Zmc2V0Kz1yZWNsZW47CgkJaWYodmVyaWZ5KXsKCQkgICBpZihhc3luY19mbGFnICYmIG5vX2NvcHlfZmxhZykKCQkgICB7CgkJCWlmKHZlcmlmeV9idWZmZXIoYnVmZmVyMSxyZWNsZW4sKG9mZjY0X3Qpc2F2ZV9wb3MscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5KSl7CgkJCQlpZiAoIW5vX3VubGluaykKCQkJCXsKCQkJCSAgIGlmKGNoZWNrX2ZpbGVuYW1lKGR1bW15ZmlsZVt4eF0pKQoJCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJCX0KCQkJCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOwoJCQkJZXhpdCgxNjEpOwoJCQl9CgkJICAgfQoJCSAgIGVsc2UKCQkgICB7CgkJCWlmKHZlcmlmeV9idWZmZXIobmJ1ZmYscmVjbGVuLChvZmY2NF90KXNhdmVfcG9zLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSkpewoJCQkJaWYgKCFub191bmxpbmspCgkJCQl7CgkJCQkgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7CgkJCQl9CgkJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkJCWV4aXQoMTYyKTsKCQkJfQoJCSAgIH0KCQl9CgkJaWYoYXN5bmNfZmxhZyAmJiBub19jb3B5X2ZsYWcpCgkJCWFzeW5jX3JlbGVhc2UoZ2MpOwoJCXJhbnJlYWRfc29fZmFyKz1yZWNsZW4vMTAyNDsKCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJcmFucmVhZF9zb19mYXItPXJlY2xlbi8xMDI0OwoJCX0KICAgICAgICAgICAgICAgIGlmKFFfZmxhZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3F0aW1lX3N0b3A9dGltZV9zb19mYXIoKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAogICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHRocmVhZF9yYW5kcmZkLCIlMTAuMWxkICUxMC4wZiAlMTAuMWxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50Zih0aHJlYWRfcmFuZHJmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCiAgICAgICAgICAgICAgICB9Cgl9CglpZihmaWxlX2xvY2spCgkJaWYobXlsb2NrZigoaW50KSBmZCwoaW50KTAsKGludCkxKSkKCQkJcHJpbnRmKCJSZWFkIHVubG9jayBmYWlsZWQgJWRcbiIsZXJybm8pOwojaWZkZWYgQVNZTkNfSU8KCWlmKGFzeW5jX2ZsYWcpCgl7CgkJZW5kX2FzeW5jKGdjKTsKCQlnYz0wOwoJfQojZW5kaWYKCWlmKGluY2x1ZGVfZmx1c2gpCgl7CgkJaWYobW1hcGZsYWcpCgkJewoJCQltc3luYyhtYWRkciwoc2l6ZV90KShudW1yZWNzNjQqcmVjbGVuKSxNU19TWU5DKTsKCQl9ZWxzZQoJCQlmc3luYyhmZCk7Cgl9CglpZihpbmNsdWRlX2Nsb3NlKQoJewkKCQlpZihtbWFwZmxhZykKCQl7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpbnVtcmVjczY0KnJlY2xlbik7CgkJfQoJCWNsb3NlKGZkKTsKCX0KCXRlbXBfdGltZSA9IHRpbWVfc29fZmFyKCk7CgljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gKCh0ZW1wX3RpbWUgLSBzdGFydHRpbWUxKS10aW1lX3JlcykKCQktY29tcHV0ZV92YWw7CglpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCXsKCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJcmVzX3Byb2I9MTsKCX0KCWlmKE9QU19mbGFnKXsKCSAgIHJhbnJlYWRfc29fZmFyPShyYW5yZWFkX3NvX2ZhcioxMDI0KS9yZWNsZW47Cgl9CgljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gcmFucmVhZF9zb19mYXIvY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCWNoaWxkX3N0YXQtPmFjdHVhbCA9IHJhbnJlYWRfc29fZmFyOwoJaWYoIXhmbGFnKQoJewoJCSpzdG9wX2ZsYWc9MTsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCX0KICAgICAgICBpZihjZGVidWcpCiAgICAgICAgICAgICAgICBwcmludGYoIkNoaWxkICVkOiB0aHJvdWdocHV0ICVmIGFjdHVhbCAlZiBcbiIsKGludCljaGlkLGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3N0YXQtPmFjdHVhbCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQljcHV0aW1lID0gY3B1dGltZV9zb19mYXIoKSAtIGNwdXRpbWU7CgkJaWYgKGNwdXRpbWUgPCBjcHV0aW1lX3JlcykKCQkJY3B1dGltZSA9IDAuMDsKCQljaGlsZF9zdGF0LT5jcHV0aW1lID0gY3B1dGltZTsKCQl3YWxsdGltZSA9IHRpbWVfc29fZmFyKCkgLSB3YWxsdGltZTsKCQljaGlsZF9zdGF0LT53YWxsdGltZSA9IHdhbGx0aW1lOwoJfQogICAgICAgIGlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCiAgICAgICAgICAgICAgICB0ZWxsX21hc3Rlcl9zdGF0cyhUSFJFQURfUkFORE9NX1JFQURfVEVTVCwgY2hpZCwgY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfc3RhdC0+YWN0dWFsLAoJCQljaGlsZF9zdGF0LT5jcHV0aW1lLCBjaGlsZF9zdGF0LT53YWxsdGltZSwKCQkJKGNoYXIpKnN0b3BfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylDSElMRF9TVEFURV9IT0xEKTsKCWNoaWxkX3N0YXQtPmZsYWcgPSBDSElMRF9TVEFURV9IT0xEOyAJLyogVGVsbCBwYXJlbnQgSSdtIGRvbmUgKi8KCWlmKCFpbmNsdWRlX2Nsb3NlKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbXN5bmMobWFkZHIsKHNpemVfdCkobnVtcmVjczY0KnJlY2xlbiksTVNfU1lOQyk7CgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpbnVtcmVjczY0KnJlY2xlbik7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJCWNsb3NlKGZkKTsKCX0KICAgICAgICBpZihRX2ZsYWcgJiYgKHRocmVhZF9yYW5kcmZkICE9MCkgKQogICAgICAgICAgICAgICAgZmNsb3NlKHRocmVhZF9yYW5kcmZkKTsKCWZyZWUoZHVtbXlmaWxlW3h4XSk7CglpZihkZWJ1ZzEpCiNpZmRlZiBOT19QUklOVF9MTEQKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxkXG4iLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuQ2hpbGQgZmluaXNoZWQgJWxsZFxuIix4eCk7CiNlbmRpZgoKCWlmKExfZmxhZykKCXsKCQlnZXRfZGF0ZShub3dfc3RyaW5nKTsKCQlmcHJpbnRmKHRocmVhZF9Md3FmZCwiJS0yNXMgJXMiLCJSYW5kb20gcmVhZCBmaW5pc2hlZDogIixub3dfc3RyaW5nKTsKCQlmY2xvc2UodGhyZWFkX0x3cWZkKTsKCX0KCWlmKHJlY251bSkKCQlmcmVlKHJlY251bSk7CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCXJldHVybigwKTsKI2lmZGVmIE5PX1RIUkVBRFMKCWV4aXQoMCk7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJCXRocmVhZF9leGl0KCk7CgllbHNlCgkJZXhpdCgwKTsKI2VuZGlmCnJldHVybigwKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVGhyZWFkIHJhbmRvbSB3cml0ZSB0ZXN0CQkJICAgICAgICAJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCAqCnRocmVhZF9yYW53cml0ZV90ZXN0KHZvaWQgKngpCiNlbHNlCnZvaWQgKgp0aHJlYWRfcmFud3JpdGVfdGVzdCggeCkKI2VuZGlmCnsKCglzdHJ1Y3QgY2hpbGRfc3RhdHMgKmNoaWxkX3N0YXQ7Cglkb3VibGUgc3RhcnR0aW1lMSA9IDA7Cglkb3VibGUgdGVtcF90aW1lOwoJZG91YmxlIHdhbGx0aW1lLCBjcHV0aW1lOwoJZG91YmxlIGNvbXB1dGVfdmFsID0gKGRvdWJsZSkwOwoJZmxvYXQgZGVsYXkgPSAoZG91YmxlKTA7Cglkb3VibGUgdGhyZWFkX3F0aW1lX3N0b3AsdGhyZWFkX3F0aW1lX3N0YXJ0OwoJb2ZmNjRfdCB0cmFqX29mZnNldDsKCW9mZjY0X3QgY3VycmVudF9vZmZzZXQ9MDsKCWxvbmcgbG9uZyBmbGFnczsKCWxvbmcgbG9uZyB3X3RyYWpfYnl0ZXNfY29tcGxldGVkOwoJbG9uZyBsb25nIHdfdHJhal9vcHNfY29tcGxldGVkOwoJaW50IGZkOwoJbG9uZyBsb25nIHJlY3NfcGVyX2J1ZmZlcjsKCWxvbmcgbG9uZyBzdG9wcGVkLGk7CglvZmY2NF90IHdyaXR0ZW5fc29fZmFyLCByZWFkX3NvX2ZhciwgcmVfd3JpdHRlbl9zb19mYXIscmVfcmVhZF9zb19mYXI7Cglsb25nIGxvbmcgeHgseHgyOwoJY2hhciAqZHVtbXlmaWxlIFtNQVhTVFJFQU1TXTsgICAgICAgICAgIC8qIG5hbWUgb2YgZHVtbXkgZmlsZSAgICAgKi8KCWNoYXIgKm5idWZmPTA7CgljaGFyICptYWRkcj0wOwoJY2hhciAqd21hZGRyPTA7CgljaGFyICpmcmVlX2FkZHI9MDsKCWludCBhbndzZXIsYmluZF9jcHUsd3ZhbDsKCW9mZjY0X3QgZmlsZWJ5dGVzNjQ7CglvZmY2NF90IGxvY2tfb2Zmc2V0PTA7CgljaGFyIHRtcG5hbWVbMjU2XTsKCWNoYXIgbm93X3N0cmluZ1szMF07CglGSUxFICp0aHJlYWRfcmFuZHdxZmQ9MDsKCUZJTEUgKnRocmVhZF9Md3FmZD0wOwoJbG9uZyBsb25nICpyZWNudW0gPSAwOwojaWYgZGVmaW5lZChWWEZTKSB8fCBkZWZpbmVkKHNvbGFyaXMpCglpbnQgdGVzdF9mb28gPSAwOwojZW5kaWYKI2lmIGRlZmluZWQgKGJzZDRfMikgfHwgZGVmaW5lZChXaW5kb3dzKQoJbG9uZyBsb25nIHJhbmQxLHJhbmQyLHJhbmQzOwojZW5kaWYKCXVuc2lnbmVkIGxvbmcgbG9uZyBiaWdfcmFuZDsKCiNpZmRlZiBBU1lOQ19JTwoJc3RydWN0IGNhY2hlICpnYz0wOwoKI2Vsc2UKCWxvbmcgbG9uZyAqZ2M9MDsKI2VuZGlmCiNpZmRlZiBNRVJTRU5ORQogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbml0WzRdPXsweDEyMzQ1VUxMLCAweDIzNDU2VUxMLCAweDM0NTY3VUxMLCAweDQ1Njc4VUxMfSwgbGVuZ3RoPTQ7CiNlbmRpZgoKCWlmKGNvbXB1dGVfZmxhZykKCQlkZWxheT1jb21wdXRlX3RpbWU7Cgl0aHJlYWRfcXRpbWVfc3RvcD10aHJlYWRfcXRpbWVfc3RhcnQ9MDsKCXRyYWpfb2Zmc2V0PXdhbGx0aW1lPWNwdXRpbWU9MDsKCWFud3Nlcj1iaW5kX2NwdT0wOwoJZmlsZWJ5dGVzNjQgPSBudW1yZWNzNjQqcmVjbGVuOwoJd3JpdHRlbl9zb19mYXI9cmVhZF9zb19mYXI9cmVfd3JpdHRlbl9zb19mYXI9cmVfcmVhZF9zb19mYXI9MDsKCXdfdHJhal9ieXRlc19jb21wbGV0ZWQ9d190cmFqX29wc19jb21wbGV0ZWQ9MDsKCXJlY3NfcGVyX2J1ZmZlciA9IGNhY2hlX3NpemUvcmVjbGVuIDsKI2lmZGVmIE1FUlNFTk5FCiAgICAgICAgaW5pdF9ieV9hcnJheTY0KGluaXQsIGxlbmd0aCk7CiNlbHNlCiNpZmRlZiBic2Q0XzIKICAgICAgICBzcmFuZCgwKTsKI2Vsc2UKI2lmZGVmIFdpbmRvd3MKICAgICAgICBzcmFuZCgwKTsKI2Vsc2UKICAgICAgICBzcmFuZDQ4KDApOwojZW5kaWYKI2VuZGlmCiNlbmRpZgogICAgICAgIHJlY251bSA9IChsb25nIGxvbmcgKikgbWFsbG9jKHNpemVvZigqcmVjbnVtKSpudW1yZWNzNjQpOwogICAgICAgIGlmIChyZWNudW0pewogICAgICAgICAgICAgLyogcHJlLWNvbXB1dGUgcmFuZG9tIHNlcXVlbmNlIGJhc2VkIG9uIAoJCUZpc2NoZXItWWF0ZXMgKEtudXRoKSBjYXJkIHNodWZmbGUgKi8KICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgbnVtcmVjczY0OyBpKyspewogICAgICAgICAgICAgICAgcmVjbnVtW2ldID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBudW1yZWNzNjQ7IGkrKykgewogICAgICAgICAgICAgICAgbG9uZyBsb25nIHRtcCA9IHJlY251bVtpXTsKI2lmZGVmIE1FUlNFTk5FCiAgICAgIAkgICAgICAgYmlnX3JhbmQgPSBnZW5yYW5kNjRfaW50NjQoKTsKI2Vsc2UKI2lmZGVmIGJzZDRfMgogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQojaWZkZWYgV2luZG93cwogICAgICAgICAgICAgICByYW5kMT0obG9uZyBsb25nKXJhbmQoKTsKICAgICAgICAgICAgICAgcmFuZDI9KGxvbmcgbG9uZylyYW5kKCk7CiAgICAgICAgICAgICAgIHJhbmQzPShsb25nIGxvbmcpcmFuZCgpOwogICAgICAgICAgICAgICBiaWdfcmFuZD0ocmFuZDE8PDMyKXwocmFuZDI8PDE2KXwocmFuZDMpOwojZWxzZQogICAgICAgICAgICAgICBiaWdfcmFuZCA9IGxyYW5kNDgoKTsKI2VuZGlmCiNlbmRpZgojZW5kaWYKICAgICAgICAgICAgICAgYmlnX3JhbmQgPSBiaWdfcmFuZCVudW1yZWNzNjQ7CiAgICAgICAgICAgICAgIHRtcCA9IHJlY251bVtpXTsKICAgICAgICAgICAgICAgcmVjbnVtW2ldID0gcmVjbnVtW2JpZ19yYW5kXTsKICAgICAgICAgICAgICAgcmVjbnVtW2JpZ19yYW5kXSA9IHRtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KCWVsc2UKCXsKCQlmcHJpbnRmKHN0ZGVyciwiUmFuZG9tIHVuaXF1ZW5lc3MgZmFsbGJhY2suXG4iKTsKCX0KI2lmZGVmIE5PX1RIUkVBRFMKCXh4PWNoaWQ7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJewoJCXh4ID0gKGxvbmcgbG9uZykoKGxvbmcpeCk7Cgl9CgllbHNlCgl7CgkJeHg9Y2hpZDsKCX0KI2VuZGlmCiNpZm5kZWYgTk9fVEhSRUFEUwojaWZkZWYgX0hQVVhfU09VUkNFCglpZihpb3pfcHJvY2Vzc29yX2JpbmQpCgl7CgkJIGJpbmRfY3B1PShiZWdpbl9wcm9jKyhpbnQpeHgpJW51bV9wcm9jZXNzb3JzOwoJCSBwdGhyZWFkX3Byb2Nlc3Nvcl9iaW5kX25wKFBUSFJFQURfQklORF9GT1JDRURfTlAsCiAgICAgICAgICAgICAgICAgICAgICAgICAocHRocmVhZF9zcHVfdCAqKSZhbndzZXIsIChwdGhyZWFkX3NwdV90KWJpbmRfY3B1LCBwdGhyZWFkX3NlbGYoKSk7CgkJbXlfbmFwKDQwKTsJLyogU3dpdGNoIHRvIG5ldyBjcHUgKi8KCX0KI2VuZGlmCiNlbmRpZgoJaWYodXNlX3RocmVhZCkKCQluYnVmZj1iYXJyYXlbeHhdOwoJZWxzZQoJCW5idWZmPWJ1ZmZlcjsKCWlmKGRlYnVnMSApCgl7CgkgICBpZih1c2VfdGhyZWFkKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcblN0YXJ0aW5nIGNoaWxkICVsbGRcbiIseHgpOwojZW5kaWYKCSAgIGVsc2UKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXByaW50ZigiXG5TdGFydGluZyBwcm9jZXNzICVkIHNsb3QgJWxkXG4iLGdldHBpZCgpLHh4KTsKI2Vsc2UKCQlwcmludGYoIlxuU3RhcnRpbmcgcHJvY2VzcyAlZCBzbG90ICVsbGRcbiIsZ2V0cGlkKCkseHgpOwojZW5kaWYKCQkKCX0KCWR1bW15ZmlsZVt4eF09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7Cgl4eDI9eHg7CglpZihzaGFyZV9maWxlKQoJCXh4Mj0obG9uZyBsb25nKTA7CglpZihtZmZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKGR1bW15ZmlsZVt4eF0sIiVzIixmaWxlYXJyYXlbeHgyXSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4Ml0pOwojZW5kaWYKCX0KCWVsc2UKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxkIixmaWxlYXJyYXlbeHgyXSx4eDIpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4Ml0seHgyKTsKI2VuZGlmCgl9CgkvKioqKioqKioqKioqKioqKiovCgkvKiBDaGlsZHJlbiBvbmx5ICovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qIFJhbmRvbSB3cml0ZSB0aHJvdWdocHV0IHBlcmZvcm1hbmNlIHRlc3QuICoqKioqKioqKioqKioqKioqKioqKiovCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCWlmKG9mbGFnKQoJCWZsYWdzPU9fUkRXUnxPX1NZTkN8T19DUkVBVDsKCWVsc2UKCQlmbGFncz1PX1JEV1J8T19DUkVBVDsKI2lmIGRlZmluZWQoT19EU1lOQykKCWlmKG9kc3luYykKCQlmbGFncyB8PSBPX0RTWU5DOwojZW5kaWYKI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKGxpbnV4KQoJaWYocmVhZF9zeW5jKQoJCWZsYWdzIHw9T19SU1lOQ3xPX1NZTkM7CiNlbmRpZgoKI2lmICEgZGVmaW5lZChET05UX0hBVkVfT19ESVJFQ1QpCiNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fQUlYX18pIHx8IGRlZmluZWQoSVJJWCkgfHwgZGVmaW5lZChJUklYNjQpIHx8IGRlZmluZWQoV2luZG93cykgfHwgZGVmaW5lZCAoX19GcmVlQlNEX18pCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUOwojZW5kaWYKI2lmIGRlZmluZWQoVFJVNjQpCglpZihkaXJlY3RfZmxhZykKCQlmbGFncyB8PU9fRElSRUNUSU87CiNlbmRpZgojZW5kaWYKI2lmIGRlZmluZWQoV2luZG93cykKICAgICAgIAlpZih1bmJ1ZmZlcmVkKQogICAgICAgIHsKICAgICAgICAJaGFuZD1DcmVhdGVGaWxlKGR1bW15ZmlsZVt4eF0sCgkJICBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSwKCSAgICAgICAgICBGSUxFX1NIQVJFX1dSSVRFfEZJTEVfU0hBUkVfUkVBRCwKCQkgIE5VTEwsT1BFTl9FWElTVElORyxGSUxFX0ZMQUdfTk9fQlVGRkVSSU5HfAoJCSAgRklMRV9GTEFHX1dSSVRFX1RIUk9VR0h8RklMRV9GTEFHX1BPU0lYX1NFTUFOVElDUywKCQkgIE5VTEwpOwogICAgICAgCX0KI2VuZGlmCglpZigoZmQgPSBJX09QRU4oZHVtbXlmaWxlW3h4XSwgKChpbnQpZmxhZ3MpLDA2NDApKTwwKQoJewoJCWNsaWVudF9lcnJvcj1lcnJubzsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCQlwcmludGYoIlxuQ2FuIG5vdCBvcGVuIHRlbXAgZmlsZTogJXNcbiIsIAoJCQlmaWxlbmFtZSk7CgkJcGVycm9yKCJvcGVuIik7CgkJZXhpdCgxMjUpOwoJfQojaWZkZWYgVlhGUwoJaWYoZGlyZWN0X2ZsYWcpCgl7CgkJaW9jdGwoZmQsVlhfU0VUQ0FDSEUsVlhfRElSRUNUKTsKCQlpb2N0bChmZCxWWF9HRVRDQUNIRSwmdGVzdF9mb28pOwoJCWlmKHRlc3RfZm9vID09IDApCgkJewoJCQlpZighY2xpZW50X2lvem9uZSkKCQkJICBwcmludGYoIlxuVnhGUyBhZHZhbmNlZCBzZXRjYWNoZSBmZWF0dXJlIG5vdCBhdmFpbGFibGUuXG4iKTsKCQkJZXhpdCgzKTsKCQl9Cgl9CiNlbmRpZgojaWYgZGVmaW5lZChzb2xhcmlzKQogICAgICAgIGlmKGRpcmVjdF9mbGFnKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHRlc3RfZm9vID0gZGlyZWN0aW8oZmQsIERJUkVDVElPX09OKTsKICAgICAgICAgICAgICAgIGlmKHRlc3RfZm9vICE9IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG5kaXJlY3RpbyBub3QgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQojZW5kaWYKI2lmZGVmIEFTWU5DX0lPCglpZihhc3luY19mbGFnKQoJCWFzeW5jX2luaXQoJmdjLGZkLGRpcmVjdF9mbGFnKTsKI2VuZGlmCglpZihtbWFwZmxhZykKCXsKCQltYWRkcj0oY2hhciAqKWluaXRmaWxlKGZkLChmaWxlYnl0ZXM2NCksMSxQUk9UX1JFQUR8UFJPVF9XUklURSk7Cgl9CglpZihyZWNsZW4gPCBjYWNoZV9zaXplICkKCXsKCQlyZWNzX3Blcl9idWZmZXIgPSBjYWNoZV9zaXplL3JlY2xlbiA7CgkJbmJ1ZmY9Jm5idWZmWyh4eCVyZWNzX3Blcl9idWZmZXIpKnJlY2xlbl07Cgl9CglpZihmZXRjaG9uKQkJCS8qIFByZWZldGNoIGludG8gcHJvY2Vzc29yIGNhY2hlICovCgkJZmV0Y2hpdChuYnVmZixyZWNsZW4pOwoKCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwkKCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAwOwoJY2hpbGRfc3RhdC0+YWN0dWFsID0gMDsKCWNoaWxkX3N0YXQtPmZsYWc9Q0hJTERfU1RBVEVfUkVBRFk7IC8qIFRlbGwgcGFyZW50IGNoaWxkIGlzIHJlYWR5IHRvIGdvICovCglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJewoJCXRlbGxfbWFzdGVyX3JlYWR5KGNoaWQpOwoJCXdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKCX0KCWVsc2UKCXsKCQl3aGlsZShjaGlsZF9zdGF0LT5mbGFnIT1DSElMRF9TVEFURV9CRUdJTikgICAvKiBXYWl0IGZvciBzaWduYWwgZnJvbSBwYXJlbnQgKi8KCQkJUG9sbCgobG9uZyBsb25nKTEpOwoJfQoJd3JpdHRlbl9zb19mYXI9MDsKCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbeHhdOwoJY2hpbGRfc3RhdC0+YWN0dWFsID0gMDsKCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAwOwoJc3RvcHBlZD0wOwoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCkgIT0gMCkKCQkJcHJpbnRmKCJGaWxlIGxvY2sgZm9yIHdyaXRlIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJaWYoUV9mbGFnKQoJewoJCXNwcmludGYodG1wbmFtZSwiQ2hpbGRfJWRfcmFuZHdvbC5kYXQiLChpbnQpeHgpOwoJCXRocmVhZF9yYW5kd3FmZD1mb3Blbih0bXBuYW1lLCJhIik7CgkJaWYodGhyZWFkX3JhbmR3cWZkPT0wKQoJCXsKCQkJY2xpZW50X2Vycm9yPWVycm5vOwoJCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQkJc2VuZF9zdG9wKCk7CgkJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gJXNcbiIsdG1wbmFtZSk7CgkJCWV4aXQoNDApOwoJCX0KCQlmcHJpbnRmKHRocmVhZF9yYW5kd3FmZCwiT2Zmc2V0IGluIEtieXRlcyAgIExhdGVuY3kgaW4gbWljcm9zZWNvbmRzICBUcmFuc2ZlciBzaXplIGluIGJ5dGVzXG4iKTsKCX0KCWlmKExfZmxhZykKCXsKCQlzcHJpbnRmKHRtcG5hbWUsIkNoaWxkXyVkLmxvZyIsKGludCl4eCk7CgkJdGhyZWFkX0x3cWZkPWZvcGVuKHRtcG5hbWUsImEiKTsKCQlpZih0aHJlYWRfTHdxZmQ9PTApCgkJewoJCQljbGllbnRfZXJyb3I9ZXJybm87CgkJCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJCQlzZW5kX3N0b3AoKTsKCQkJcHJpbnRmKCJVbmFibGUgdG8gb3BlbiAlc1xuIix0bXBuYW1lKTsKCQkJZXhpdCg0MCk7CgkJfQoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJhbmRvbSB3cml0ZSBzdGFydDogIiwKCQkJbm93X3N0cmluZyk7Cgl9CglpZigodmVyaWZ5ICYmICFub19jb3B5X2ZsYWcpIHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKTApOwoJc3RhcnR0aW1lMSA9IHRpbWVfc29fZmFyKCk7CglpZihjcHV1dGlsZmxhZykKCXsKCQl3YWxsdGltZSA9IHN0YXJ0dGltZTE7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCk7Cgl9Cglmb3IoaT0wOyBpPG51bXJlY3M2NDsgaSsrKXsKCQlpZihjb21wdXRlX2ZsYWcpCgkJCWNvbXB1dGVfdmFsKz1kb19jb21wdXRlKGRlbGF5KTsKCQlpZiAocmVjbnVtKSB7CgkJCWN1cnJlbnRfb2Zmc2V0ID0gcmVjbGVuICogKGxvbmcgbG9uZylyZWNudW1baV07CiAgICAgICAgICAgICAgICB9IGVsc2UgewojaWZkZWYgYnNkNF8yCgkJICAgcmFuZDE9cmFuZCgpOwoJCSAgIHJhbmQyPXJhbmQoKTsKCQkgICByYW5kMz1yYW5kKCk7CgkJICAgYmlnX3JhbmQ9KHJhbmQxPDwzMil8KHJhbmQyPDwxNil8KHJhbmQzKTsKCQkgICBjdXJyZW50X29mZnNldCA9IChvZmY2NF90KXJlY2xlbiAqIChiaWdfcmFuZCVudW1yZWNzNjQpOwojZWxzZQojaWZkZWYgV2luZG93cwoJCSAgIHJhbmQxPXJhbmQoKTsKCQkgICByYW5kMj1yYW5kKCk7CgkJICAgcmFuZDM9cmFuZCgpOwoJCSAgIGJpZ19yYW5kPShyYW5kMTw8MzIpfChyYW5kMjw8MTYpfChyYW5kMyk7CgkJICAgY3VycmVudF9vZmZzZXQgPSAob2ZmNjRfdClyZWNsZW4gKiAoYmlnX3JhbmQlbnVtcmVjczY0KTsKI2Vsc2UKCQkgICBjdXJyZW50X29mZnNldCA9IHJlY2xlbiAqIChscmFuZDQ4KCklbnVtcmVjczY0KTsKI2VuZGlmCiNlbmRpZgoJCX0KCgkJaWYgKCEoaF9mbGFnIHx8IGtfZmxhZyB8fCBtbWFwZmxhZykpCgkJewoJCSAgaWYoSV9MU0VFSyggZmQsIGN1cnJlbnRfb2Zmc2V0LCBTRUVLX1NFVCApPDApCgkJICB7CgkJCWNsaWVudF9lcnJvcj1lcnJubzsKCQkJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQkJCXNlbmRfc3RvcCgpOwoJCQlwZXJyb3IoImxzZWVrIik7CgkJCWV4aXQoMTU4KTsKCQkgIH07CgkJfQoJCWlmKFFfZmxhZykKCQl7CgkJCXRyYWpfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9xdGltZV9zdGFydD10aW1lX3NvX2ZhcigpOwoJCX0KCQlpZihybG9ja2luZykKCQl7CgkJCWxvY2tfb2Zmc2V0PUlfTFNFRUsoZmQsMCxTRUVLX0NVUik7CgkJCW15bG9ja3IoKGludCkgZmQsIChpbnQpIDEsIChpbnQpMCwKCQkJICBsb2NrX29mZnNldCwgcmVjbGVuKTsKCQl9CgkJaWYoKHZlcmlmeSAmJiAhbm9fY29weV9mbGFnKSB8fCBkZWR1cCB8fCBkZWR1cF9pbnRlcmlvcikKCQkJZmlsbF9idWZmZXIobmJ1ZmYscmVjbGVuLChsb25nIGxvbmcpcGF0dGVybixzdmVyaWZ5LChsb25nIGxvbmcpKGN1cnJlbnRfb2Zmc2V0L3JlY2xlbikpOwoJCWlmKCpzdG9wX2ZsYWcgJiYgIXN0b3BwZWQpewoJCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQl7CgkJCQlpZihtbWFwZmxhZykKCQkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCQkJZWxzZQoJCQkJCWZzeW5jKGZkKTsKCQkJfQoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCQkodGltZV9zb19mYXIoKSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzOwoJCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQkJewoJCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IHRpbWVfcmVzOwoJCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCQlyZXNfcHJvYj0xOwoJCQl9CgoJCQlpZihPUFNfZmxhZyl7CgkJCSAgIC8qd3JpdHRlbl9zb19mYXI9KHdyaXR0ZW5fc29fZmFyKjEwMjQpL3JlY2xlbjsqLwoJCQkgICB3cml0dGVuX3NvX2Zhcj13X3RyYWpfb3BzX2NvbXBsZXRlZDsKCQkJfQoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0ID0gCgkJCSAgKGRvdWJsZSl3cml0dGVuX3NvX2Zhci9jaGlsZF9zdGF0LT50aHJvdWdocHV0OwoJCQljaGlsZF9zdGF0LT5hY3R1YWwgPSAoZG91YmxlKXdyaXR0ZW5fc29fZmFyOwoJCQlpZihkZWJ1ZzEpCgkJCXsKCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXJcbiIsIChsb25nKXh4KTsKCQkJfQoJCQlzdG9wcGVkPTE7CgkJfQoJCWlmKHB1cmdlKQoJCQlwdXJnZWl0KG5idWZmLHJlY2xlbik7CgkJaWYoUV9mbGFnKQoJCXsKCQkJdGhyZWFkX3F0aW1lX3N0YXJ0PXRpbWVfc29fZmFyKCk7CgkJfQphZ2FpbjoJCQoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJd21hZGRyID0gJm1hZGRyW2N1cnJlbnRfb2Zmc2V0XTsKCQkJZmlsbF9hcmVhKChsb25nIGxvbmcqKW5idWZmLChsb25nIGxvbmcqKXdtYWRkciwobG9uZyBsb25nKXJlY2xlbik7CgkJCWlmKCFtbWFwbnNmbGFnKQoJCQl7CgkJCSAgaWYobW1hcGFzZmxhZykKCQkJICAgIG1zeW5jKHdtYWRkciwoc2l6ZV90KXJlY2xlbixNU19BU1lOQyk7CgkJCSAgaWYobW1hcHNzZmxhZykKCQkJICAgIG1zeW5jKHdtYWRkciwoc2l6ZV90KXJlY2xlbixNU19TWU5DKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCSAgIGlmKGFzeW5jX2ZsYWcpCgkJICAgewoJCQkgICAgIGlmKG5vX2NvcHlfZmxhZykKCQkJICAgICB7CgkJCQlmcmVlX2FkZHI9bmJ1ZmY9KGNoYXIgKiltYWxsb2MoKHNpemVfdClyZWNsZW4rcGFnZV9zaXplKTsKCQkJCW5idWZmPShjaGFyICopKCgobG9uZyluYnVmZisobG9uZylwYWdlX3NpemUpICYgKGxvbmcpfihwYWdlX3NpemUtMSkpOwoJCQkJaWYodmVyaWZ5IHx8IGRlZHVwIHx8IGRlZHVwX2ludGVyaW9yKQoJCQkJCWZpbGxfYnVmZmVyKG5idWZmLHJlY2xlbiwobG9uZyBsb25nKXBhdHRlcm4sc3ZlcmlmeSwobG9uZyBsb25nKShjdXJyZW50X29mZnNldC9yZWNsZW4pKTsKCQkJICAgICAgICBhc3luY193cml0ZV9ub19jb3B5KGdjLCAobG9uZyBsb25nKWZkLCBuYnVmZiwgcmVjbGVuLCAoY3VycmVudF9vZmZzZXQpLCBkZXB0aCxmcmVlX2FkZHIpOwoJCQkgICAgIH0KCQkJICAgICBlbHNlCgkJCQlhc3luY193cml0ZShnYywgKGxvbmcgbG9uZylmZCwgbmJ1ZmYsIHJlY2xlbiwgY3VycmVudF9vZmZzZXQsIGRlcHRoKTsKCQkgICB9CgkJICAgZWxzZQoJCSAgIHsKCQkgICAgICB3dmFsID0gd3JpdGUoZmQsIG5idWZmLCAoc2l6ZV90KSByZWNsZW4pOwoJCSAgICAgIGlmKHd2YWwgIT0gcmVjbGVuKQoJCSAgICAgIHsKCQkJaWYoKnN0b3BfZmxhZyAmJiAhc3RvcHBlZCl7CgkJCQlpZihpbmNsdWRlX2ZsdXNoKQoJCQkJewoJCQkJCWlmKG1tYXBmbGFnKQoJCQkJCQltc3luYyhtYWRkciwoc2l6ZV90KWZpbGVieXRlczY0LE1TX1NZTkMpOwoJCQkJCWVsc2UKCQkJCQkJZnN5bmMoZmQpOwoJCQkJfQoJCQkJdGVtcF90aW1lID0gdGltZV9zb19mYXIoKTsKCQkJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAKCQkJCQkodGVtcF90aW1lIC0gc3RhcnR0aW1lMSktdGltZV9yZXM7CgkJCQlpZihjaGlsZF9zdGF0LT50aHJvdWdocHV0IDwgKGRvdWJsZSkuMDAwMDAxKSAKCQkJCXsKCQkJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQkJCQlpZihyZWNfcHJvYiA8IHJlY2xlbikKCQkJCQkJcmVjX3Byb2IgPSByZWNsZW47CgkJCQkJcmVzX3Byb2I9MTsKCQkJCX0KCgkJCQlpZihPUFNfZmxhZyl7CgkJCQkgICAvKndyaXR0ZW5fc29fZmFyPSh3cml0dGVuX3NvX2ZhcioxMDI0KS9yZWNsZW47Ki8KCQkJCSAgIHdyaXR0ZW5fc29fZmFyPXdfdHJhal9vcHNfY29tcGxldGVkOwoJCQkJfQoJCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IAoJCQkJICAoZG91YmxlKXdyaXR0ZW5fc29fZmFyL2NoaWxkX3N0YXQtPnRocm91Z2hwdXQ7CgkJCQljaGlsZF9zdGF0LT5hY3R1YWwgPSAoZG91YmxlKXdyaXR0ZW5fc29fZmFyOwoJCQkJaWYoZGVidWcxKQoJCQkJewoJCQkJCXByaW50ZigiXG4oJWxkKSBTdG9wcGVkIGJ5IGFub3RoZXJcbiIsIChsb25nKXh4KTsKCQkJCX0KCQkJCXN0b3BwZWQ9MTsKCQkJCWdvdG8gYWdhaW47CgkJCX0KCQkJLyogTm90ZTogV3JpdGVyIG11c3QgZmluaXNoIGV2ZW4gdGhvdWdoIHRvbGQKCQkJICAgdG8gc3RvcC4gT3RoZXJ3aXNlIHRoZSByZWFkZXJzIHdpbGwgZmFpbC4KCQkJICAgVGhlIGNvZGUgd2lsbCBjYXB0dXJlIGJ5dGVzIHRyYW5zZmVyZWQKCQkJICAgYmVmb3JlIHRvbGQgdG8gc3RvcCBidXQgbGV0IHRoZSB3cml0ZXIKCQkJICAgY29tcGxldGUuCgkJCSovCiNpZmRlZiBOT19QUklOVF9MTEQKCQkgICAgCXByaW50ZigiXG5FcnJvciB3cml0aW5nIGJsb2NrICVsZCwgZmQ9ICVkXG4iLCBpLAoJCQkJIGZkKTsKI2Vsc2UKCQkgICAgCXByaW50ZigiXG5FcnJvciB3cml0aW5nIGJsb2NrICVsbGQsIGZkPSAlZFxuIiwgaSwKCQkJCSBmZCk7CiNlbmRpZgoJCQlpZih3dmFsPT0tMSkKCQkJCXBlcnJvcigid3JpdGUiKTsKCQkJaWYgKCFub191bmxpbmspCgkJCXsKCQkgICAgICAgICAgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQkJCXVubGluayhkdW1teWZpbGVbeHhdKTsKCQkJfQoJCQljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsKCQkgICAgCWV4aXQoMTI3KTsKCQkgICAgICB9CgkJICAgIH0KCQl9CgkJaWYocmxvY2tpbmcpCgkJewoJCQlteWxvY2tyKChpbnQpIGZkLCAoaW50KSAwLCAoaW50KTAsCgkJCSAgbG9ja19vZmZzZXQsIHJlY2xlbik7CgkJfQoJCWlmKFFfZmxhZykKCQl7CgkJCXRocmVhZF9xdGltZV9zdG9wPXRpbWVfc29fZmFyKCk7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJZnByaW50Zih0aHJlYWRfcmFuZHdxZmQsIiUxMC4xbGQgJTEwLjBmICUxMC4xbGRcbiIsKHRyYWpfb2Zmc2V0KS8xMDI0LCgodGhyZWFkX3F0aW1lX3N0b3AtdGhyZWFkX3F0aW1lX3N0YXJ0LXRpbWVfcmVzKSkqMTAwMDAwMCxyZWNsZW4pOwojZWxzZQoJCQlmcHJpbnRmKHRocmVhZF9yYW5kd3FmZCwiJTEwLjFsbGQgJTEwLjBmICUxMC4xbGxkXG4iLCh0cmFqX29mZnNldCkvMTAyNCwoKHRocmVhZF9xdGltZV9zdG9wLXRocmVhZF9xdGltZV9zdGFydC10aW1lX3JlcykpKjEwMDAwMDAscmVjbGVuKTsKI2VuZGlmCgkJfQoJCXdfdHJhal9vcHNfY29tcGxldGVkKys7CgkJd190cmFqX2J5dGVzX2NvbXBsZXRlZCs9cmVjbGVuOwoJCXdyaXR0ZW5fc29fZmFyKz1yZWNsZW4vMTAyNDsKCQlpZigqc3RvcF9mbGFnKQoJCXsKCQkJd3JpdHRlbl9zb19mYXItPXJlY2xlbi8xMDI0OwoJCQl3X3RyYWpfYnl0ZXNfY29tcGxldGVkLT1yZWNsZW47CgkJfQoJfQoJCgoJaWYoZmlsZV9sb2NrKQoJCWlmKG15bG9ja2YoKGludCkgZmQsIChpbnQpIDAsIChpbnQpMCkpCgkJCXByaW50ZigiV3JpdGUgdW5sb2NrIGZhaWxlZC4gJWRcbiIsZXJybm8pOwoJCiNpZmRlZiBBU1lOQ19JTwoJaWYoYXN5bmNfZmxhZykKCXsKCQllbmRfYXN5bmMoZ2MpOwoJCWdjPTA7Cgl9CiNlbmRpZgoJaWYoIXhmbGFnKQoJewoJCSpzdG9wX2ZsYWc9MTsKCQlpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQoJCQlzZW5kX3N0b3AoKTsKCX0KCQoJaWYoaW5jbHVkZV9mbHVzaCkKCXsKCQlpZihtbWFwZmxhZykKCQkJbXN5bmMobWFkZHIsKHNpemVfdClmaWxlYnl0ZXM2NCxNU19TWU5DKTsKCQllbHNlCgkJCWZzeW5jKGZkKTsKCX0KCWlmKGluY2x1ZGVfY2xvc2UpCgl7CgkJaWYobW1hcGZsYWcpCgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpZmlsZWJ5dGVzNjQpOwoJCWNsb3NlKGZkKTsKCX0KCWlmKCFzdG9wcGVkKXsKCQl0ZW1wX3RpbWUgPSB0aW1lX3NvX2ZhcigpOwoJCWNoaWxkX3N0YXQtPnRocm91Z2hwdXQgPSAoKHRlbXBfdGltZSAtIHN0YXJ0dGltZTEpLXRpbWVfcmVzKQoJCQktY29tcHV0ZV92YWw7CgkJaWYoY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA8IChkb3VibGUpLjAwMDAwMSkgCgkJewoJCQljaGlsZF9zdGF0LT50aHJvdWdocHV0PSB0aW1lX3JlczsKCQkJaWYocmVjX3Byb2IgPCByZWNsZW4pCgkJCQlyZWNfcHJvYiA9IHJlY2xlbjsKCQkJcmVzX3Byb2I9MTsKCQl9CgoJCWlmKE9QU19mbGFnKXsKCQkgICAvKndyaXR0ZW5fc29fZmFyPSh3cml0dGVuX3NvX2ZhcioxMDI0KS9yZWNsZW47Ki8KCQkgICB3cml0dGVuX3NvX2Zhcj13X3RyYWpfb3BzX2NvbXBsZXRlZDsKCQl9CgkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9CgkJCShkb3VibGUpd3JpdHRlbl9zb19mYXIvY2hpbGRfc3RhdC0+dGhyb3VnaHB1dDsKCQljaGlsZF9zdGF0LT5hY3R1YWwgPSAoZG91YmxlKXdyaXR0ZW5fc29fZmFyOwoJfQoJY2hpbGRfc3RhdC0+ZmxhZyA9IENISUxEX1NUQVRFX0hPTEQ7IC8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCiAgICAgICAgaWYoY2RlYnVnKQogICAgICAgICAgICAgICAgcHJpbnRmKCJDaGlsZCAlZDogdGhyb3VnaHB1dCAlZiBhY3R1YWwgJWYgXG4iLChpbnQpY2hpZCxjaGlsZF9zdGF0LT50aHJvdWdocHV0LAogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9zdGF0LT5hY3R1YWwpOwoJaWYoY3B1dXRpbGZsYWcpCgl7CgkJY3B1dGltZSA9IGNwdXRpbWVfc29fZmFyKCkgLSBjcHV0aW1lOwoJCWlmIChjcHV0aW1lIDwgY3B1dGltZV9yZXMpCgkJCWNwdXRpbWUgPSAwLjA7CgkJY2hpbGRfc3RhdC0+Y3B1dGltZSA9IGNwdXRpbWU7CgkJd2FsbHRpbWUgPSB0aW1lX3NvX2ZhcigpIC0gd2FsbHRpbWU7CgkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSB3YWxsdGltZTsKCX0KICAgICAgICBpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQogICAgICAgICAgICAgICAgdGVsbF9tYXN0ZXJfc3RhdHMoVEhSRUFEX1JBTkRPTV9XUklURV9URVNULCBjaGlkLCBjaGlsZF9zdGF0LT50aHJvdWdocHV0LAogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9zdGF0LT5hY3R1YWwsCgkJCWNoaWxkX3N0YXQtPmNwdXRpbWUsIGNoaWxkX3N0YXQtPndhbGx0aW1lLAoJCQkoY2hhcikqc3RvcF9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKUNISUxEX1NUQVRFX0hPTEQpOwoJc3RvcHBlZD0wOwoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKiBFbmQgcmFuZG9tIHdyaXRlIHBlcmZvcm1hbmNlIHRlc3QuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJaWYoZGVidWcxKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJcbkNoaWxkIGZpbmlzaGVkICVsZFxuIix4eCk7CiNlbHNlCgkJcHJpbnRmKCJcbkNoaWxkIGZpbmlzaGVkICVsbGRcbiIseHgpOwojZW5kaWYKCWlmKCFpbmNsdWRlX2Nsb3NlKQoJewoJCWlmKG1tYXBmbGFnKQoJCXsKCQkJbXN5bmMobWFkZHIsKHNpemVfdCludW1yZWNzNjQqcmVjbGVuLE1TX1NZTkMpOyAvKkNsZWFuIHVwIGJlZm9yZSByZWFkIHN0YXJ0cyBydW5uaW5nKi8gCgkJCW1tYXBfZW5kKG1hZGRyLCh1bnNpZ25lZCBsb25nIGxvbmcpbnVtcmVjczY0KnJlY2xlbik7CgkJfWVsc2UKCQkJZnN5bmMoZmQpOwoJCQkKCQljbG9zZShmZCk7Cgl9CglpZihRX2ZsYWcgJiYgKHRocmVhZF9yYW5kd3FmZCAhPTApICkKCQlmY2xvc2UodGhyZWFkX3JhbmR3cWZkKTsKCWZyZWUoZHVtbXlmaWxlW3h4XSk7CgoJaWYoTF9mbGFnKQoJewoJCWdldF9kYXRlKG5vd19zdHJpbmcpOwoJCWZwcmludGYodGhyZWFkX0x3cWZkLCIlLTI1cyAlcyIsIlJhbmRvbSB3cml0ZSBmaW5pc2hlZDogIiwKCQkJbm93X3N0cmluZyk7CgkJZmNsb3NlKHRocmVhZF9Md3FmZCk7Cgl9CglpZihyZWNudW0pCgkJZnJlZShyZWNudW0pOwoJaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKCQlyZXR1cm4oMCk7CiNpZmRlZiBOT19USFJFQURTCglleGl0KDApOwojZWxzZQoJaWYodXNlX3RocmVhZCkKCQl0aHJlYWRfZXhpdCgpOwoJZWxzZQoJCWV4aXQoMCk7CiNlbmRpZgpyZXR1cm4oMCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRocmVhZCBjbGVhbnVwIHRlc3QJCQkJICAgICAgICAJCSovCi8qIFRoaXMgaXMgbm90IGEgbWVhc3VyZW1lbnQuIEl0IGlzIGEgbWVjaGFuaXNtIHRvIGNsZWFudXAgYWxsIG9mIHRoZSAgICovCi8qIHRlbXBvcmFyeSBmaWxlcyB0aGF0IHdlcmUgYmVpbmcgdXNlZC4gVGhpcyBiZWNvbWVzIHZlcnkgaW1wb3J0YW50ICAgICovCi8qIHdoZW4gdGVzdGluZyBtdWx0aXBsZSBjbGllbnRzIG92ZXIgYSBuZXR3b3JrIDotKSAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCAqCnRocmVhZF9jbGVhbnVwX3Rlc3Qodm9pZCAqeCkKI2Vsc2UKdm9pZCAqCnRocmVhZF9jbGVhbnVwX3Rlc3QoeCkKI2VuZGlmCnsKCWxvbmcgbG9uZyB4eDsKCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCWNoYXIgKmR1bW15ZmlsZVtNQVhTVFJFQU1TXTsgICAgICAgICAgIC8qIG5hbWUgb2YgZHVtbXkgZmlsZSAgICAgKi8KCgkKI2lmZGVmIE5PX1RIUkVBRFMKCXh4PWNoaWQ7CiNlbHNlCglpZih1c2VfdGhyZWFkKQoJCXh4ID0gKGxvbmcgbG9uZykoKGxvbmcpeCk7CgllbHNlCgl7CgkJeHg9Y2hpZDsKCX0KI2VuZGlmCglkdW1teWZpbGVbeHhdPShjaGFyICopbWFsbG9jKChzaXplX3QpTUFYTkFNRVNJWkUpOwoJaWYobWZmbGFnKQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4XSk7CiNlbHNlCgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcyIsZmlsZWFycmF5W3h4XSk7CiNlbmRpZgoJfQoJZWxzZQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJc3ByaW50ZihkdW1teWZpbGVbeHhdLCIlcy5EVU1NWS4lbGQiLGZpbGVhcnJheVt4eF0seHgpOwojZWxzZQoJCXNwcmludGYoZHVtbXlmaWxlW3h4XSwiJXMuRFVNTVkuJWxsZCIsZmlsZWFycmF5W3h4XSx4eCk7CiNlbmRpZgoJfQoJaWYoIW5vX3VubGluaykKCXsKCSAgICBpZihjaGVja19maWxlbmFtZShkdW1teWZpbGVbeHhdKSkKCQl1bmxpbmsoZHVtbXlmaWxlW3h4XSk7Cgl9CgoJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgkvKioqKioqKioqKioqKioqKiovCgkvKiBDaGlsZHJlbiBvbmx5ICovCgkvKioqKioqKioqKioqKioqKiovCgljaGlsZF9zdGF0PShzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkclt4eF07CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfUkVBRFk7CglpZihkaXN0cmlidXRlZCAmJiBjbGllbnRfaW96b25lKQogICAgICAgIHsKCQl0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKTsKICAgICAgICAgICAgICAgIHdhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgICAgIHdoaWxlKGNoaWxkX3N0YXQtPmZsYWchPUNISUxEX1NUQVRFX0JFR0lOKSAgIC8qIFdhaXQgZm9yIHNpZ25hbCBmcm9tIHBhcmVudCAqLwogICAgICAgICAgICAgICAgICAgICAgICBQb2xsKChsb25nIGxvbmcpMSk7CiAgICAgICAgfQoKCSpzdG9wX2ZsYWc9MTsKCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJc2VuZF9zdG9wKCk7CiAgICAgICAgaWYoZGlzdHJpYnV0ZWQgJiYgY2xpZW50X2lvem9uZSkKICAgICAgICAgICAgICAgIHRlbGxfbWFzdGVyX3N0YXRzKFRIUkVBRF9DTEVBTlVQX1RFU1QsIGNoaWQsIGNoaWxkX3N0YXQtPnRocm91Z2hwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3N0YXQtPmFjdHVhbCwKCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSwgY2hpbGRfc3RhdC0+d2FsbHRpbWUsCgkJCShjaGFyKSpzdG9wX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpQ0hJTERfU1RBVEVfSE9MRCk7CgljaGlsZF9zdGF0LT5mbGFnID0gQ0hJTERfU1RBVEVfSE9MRDsgCS8qIFRlbGwgcGFyZW50IEknbSBkb25lICovCglmcmVlKGR1bW15ZmlsZVt4eF0pOwoKCWlmKGRpc3RyaWJ1dGVkICYmIGNsaWVudF9pb3pvbmUpCgkJcmV0dXJuKDApOwojaWZkZWYgTk9fVEhSRUFEUwoJZXhpdCgwKTsKI2Vsc2UKCWlmKHVzZV90aHJlYWQpCgkJdGhyZWFkX2V4aXQoKTsKCWVsc2UKCQlleGl0KDApOwojZW5kaWYKcmV0dXJuKDApOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogbXl0aHJlYWRfY3JlYXRlKCkgSW50ZXJuYWwgcm91dGluZSB0aGF0IGNhbGxzIHB0aHJlYWRfY3JlYXRlKCkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmbmRlZiBOT19USFJFQURTCiNpZmRlZiBIQVZFX0FOU0lDX0MKbG9uZyBsb25nIApteXRocmVhZF9jcmVhdGUoIHZvaWQgKigqZnVuYykodm9pZCAqKSx2b2lkICp4KQojZWxzZQpsb25nIGxvbmcgCm15dGhyZWFkX2NyZWF0ZSggZnVuYyx4KQp2b2lkICooKmZ1bmMpKHZvaWQgKik7CnZvaWQgKng7CiNlbmRpZgp7CglwdGhyZWFkX3QgdHM7CglwdGhyZWFkX2F0dHJfdCBhdHRyOwoJaW50IHh4OwoJaW50ICp5eTsKI2lmZGVmIF82NEJJVF9BUkNIXwoJbG9uZyBsb25nIG1lbWU7CgltZW1lID0gKGxvbmcgbG9uZyl4OwojZWxzZQoJbG9uZyBtZW1lOwoJbWVtZSA9IChsb25nKXg7CiNlbmRpZgoJeXk9KGludCAqKXg7CgoKI2lmZGVmIE9TRlYzCgkKCXh4PShpbnQgKXB0aHJlYWRfY3JlYXRlKCZ0cywgcHRocmVhZF9hdHRyX2RlZmF1bHQsCgkJZnVuYywgKHZvaWQgKil5eSk7CgojZWxzZQoJcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpOwoJeHg9KGludCApcHRocmVhZF9jcmVhdGUoKHB0aHJlYWRfdCAqKSZ0cywgKHB0aHJlYWRfYXR0cl90ICopICZhdHRyLAoJCWZ1bmMsICh2b2lkICopeXkpOwojZW5kaWYKCWJjb3B5KCZ0cywmcF9jaGlsZGlkc1ttZW1lXSxzaXplb2YocHRocmVhZF90KSk7CglpZih4eCA8IChpbnQpMCkKCQlwcmludGYoIlRocmVhZCBjcmVhdGUgZmFpbGVkLiBSZXR1cm5lZCAlZCBFcnJubyA9ICVkXG4iLHh4LGVycm5vKTsKCWlmKGRlYnVnMSApCgl7CgkJcHJpbnRmKCJcbnRocmVhZCBjcmVhdGVkIGhhcyBhbiBpZCBvZiAlbHhcbiIsdHMpOwoJCXByaW50ZigibWVtZSAlbGRcbiIsbWVtZSk7Cgl9CglyZXR1cm4oKGxvbmcgbG9uZyltZW1lKTsKfQojZWxzZQojaWZkZWYgSEFWRV9BTlNJQ19DCmxvbmcgbG9uZyAKbXl0aHJlYWRfY3JlYXRlKCB2b2lkICooKmZ1bmMpKHZvaWQgKiksdm9pZCAqeCkKI2Vsc2UKbG9uZyBsb25nIApteXRocmVhZF9jcmVhdGUoIGZ1bmMseCkKdm9pZCAqKCpmdW5jKSh2b2lkICopOwp2b2lkICp4OwojZW5kaWYKewoJcHJpbnRmKCJUaGlzIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCB0aHJlYWRzXG4iKTsKCXJldHVybigtMSk7Cn0KI2VuZGlmCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiB0aHJlYWRfZXhpdCgpIEludGVybmFsIHJvdXRpbmUgdGhhdCBjYWxscyBwdGhyZWFkX2V4aXQoKQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmbmRlZiBOT19USFJFQURTCiNpZmRlZiBIQVZFX0FOU0lDX0MKaW50CnRocmVhZF9leGl0KHZvaWQpCiNlbHNlCmludAp0aHJlYWRfZXhpdCgpCiNlbmRpZgp7CglwdGhyZWFkX2V4aXQoKHZvaWQgKilOVUxMKTsKcmV0dXJuKDApOwp9CiNlbHNlCiNpZmRlZiBIQVZFX0FOU0lDX0MKaW50CnRocmVhZF9leGl0KHZvaWQpCiNlbHNlCmludAp0aHJlYWRfZXhpdCgpCiNlbmRpZgp7CglwcmludGYoIlRoaXMgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRocmVhZHNcbiIpOwoJcmV0dXJuKC0xKTsKfQojZW5kaWYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIG15dGhyZWFkX3NlbGYoKSBJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IGNhbGxzIHB0aHJlYWRfc2VsZigpCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIEhBVkVfQU5TSUNfQwpwdGhyZWFkX3QKbXl0aHJlYWRfc2VsZih2b2lkKQojZWxzZQpwdGhyZWFkX3QKbXl0aHJlYWRfc2VsZigpCiNlbmRpZgp7CglwdGhyZWFkX3QgeHg7Cgl4eCA9IHB0aHJlYWRfc2VsZigpOwoJcmV0dXJuKHh4KTsKfQojZWxzZQojaWZkZWYgSEFWRV9BTlNJQ19DCmludApteXRocmVhZF9zZWxmKHZvaWQpCiNlbHNlCmludApteXRocmVhZF9zZWxmKCkKI2VuZGlmCnsKCXByaW50ZigiVGhpcyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkc1xuIik7CglyZXR1cm4oLTEpOwp9CiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogSW50ZXJuYWwgdGhyZWFkX2pvaW4gcm91dGluZS4uLiBjYWxscyBwdGhyZWFkX2pvaW4JCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZuZGVmIE5PX1RIUkVBRFMKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkICoKdGhyZWFkX2pvaW4oIGxvbmcgbG9uZyB0aWQsIHZvaWQgKnN0YXR1cykgCiNlbHNlCnZvaWQgKgp0aHJlYWRfam9pbiggdGlkLCBzdGF0dXMpIApsb25nIGxvbmcgdGlkOwp2b2lkICpzdGF0dXM7CiNlbmRpZgp7CglpbnQgeHg7CglwdGhyZWFkX3QgZWVrOwoJcHRocmVhZF9hdHRyX3QgZm9vOwoKCWJjb3B5KCZwX2NoaWxkaWRzW3RpZF0sJmVlayxzaXplb2YocHRocmVhZF90KSk7Cgl4eD1wdGhyZWFkX2pvaW4oZWVrLCh2b2lkICoqKSZmb28pOwoJaWYoeHg8MCkKCQlwcmludGYoIlRocmVhZCBqb2luIHJldHVybmVkIGVycm9yICVkXG4iLGVycm5vKTsKCXJldHVybigwKTsKfQojZWxzZQojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgKgp0aHJlYWRfam9pbiggbG9uZyBsb25nIHRpZCwgdm9pZCAqc3RhdHVzKSAKI2Vsc2UKdm9pZCAqCnRocmVhZF9qb2luKCB0aWQsIHN0YXR1cykgCmxvbmcgbG9uZyB0aWQ7CnZvaWQgKnN0YXR1czsKI2VuZGlmCnsKCXByaW50ZigiVGhpcyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkc1xuIik7CglyZXR1cm4oKHZvaWQgKiktMSk7Cn0KI2VuZGlmCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogRHVtcCB0aGUgQ1BVIHV0aWxpemF0aW9uIGRhdGEuCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZHVtcF90aHJvdWdocHV0X2NwdSh2b2lkKQojZWxzZQp2b2lkCmR1bXBfdGhyb3VnaHB1dF9jcHUoKQojZW5kaWYKewoJbG9uZyBsb25nIHgseSxpLGo7CgljaGFyICpwb3J0OwoJY2hhciAqbGFiZWw7CgljaGFyIHByaW50X3N0clszMDBdOwoJeD1tYXhfeDsKCXk9bWF4X3k7CgoJcG9ydCA9IHVzZV90aHJlYWQgPyAidGhyZWFkcyIgOiAicHJvY2Vzc2VzIjsKCXByaW50ZigiXG5cIkNQVSB1dGlsaXphdGlvbiByZXBvcnQgWS1heGlzIGlzIHR5cGUgb2YgdGVzdCBYLWF4aXMgaXMgbnVtYmVyIG9mICVzXCJcbiIscG9ydCk7CglpZiAoYmlmX2ZsYWcpCgl7CgkJc3ByaW50ZihwcmludF9zdHIsICJDUFUgdXRpbGl6YXRpb24gcmVwb3J0IFktYXhpcyBpcyB0eXBlIG9mIHRlc3QgWC1heGlzIGlzIG51bWJlciBvZiAlcyIsIHBvcnQpOwoJCWRvX2xhYmVsKGJpZl9mZCwgcHJpbnRfc3RyLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJfQoJbGFiZWwgPSBPUFNfZmxhZyA/ICAib3BzL3NlYyIgOgoJCU1TX2ZsYWcgPyAibWljcm9zZWNvbmRzL29wIiA6ICJLYnl0ZXMvc2VjIjsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJaWYoIXNpbGVudCkgcHJpbnRmKCJcIlJlY29yZCBzaXplID0gJWxkIEtieXRlcyBcIlxuIiwgcmVjbGVuLzEwMjQpOwojZWxzZQoJaWYoIXNpbGVudCkgcHJpbnRmKCJcIlJlY29yZCBzaXplID0gJWxsZCBLYnl0ZXMgXCJcbiIsIHJlY2xlbi8xMDI0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlwiT3V0cHV0IGlzIGluIENQVSUlXCJcblxuIik7CglpZiAoYmlmX2ZsYWcpCgl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQlzcHJpbnRmKHByaW50X3N0ciwgIlJlY29yZCBzaXplID0gJWxkIEtieXRlcyIsIHJlY2xlbi8xMDI0KTsKI2Vsc2UKCQlzcHJpbnRmKHByaW50X3N0ciwgIlJlY29yZCBzaXplID0gJWxsZCBLYnl0ZXMiLCByZWNsZW4vMTAyNCk7CiNlbmRpZgoJCWRvX2xhYmVsKGJpZl9mZCwgcHJpbnRfc3RyLCBiaWZfcm93KyssIGJpZl9jb2x1bW4pOwoJCXNwcmludGYocHJpbnRfc3RyLCAiT3V0cHV0IGlzIGluIENQVSUlIik7CgkJZG9fbGFiZWwoYmlmX2ZkLCBwcmludF9zdHIsIGJpZl9yb3crKywgYmlmX2NvbHVtbik7Cgl9Cglmb3IgKGkgPSAwOyBpIDwgeDsgaSsrKQoJewoJCWlmKCFzaWxlbnQpIHByaW50ZigiXCIlMTVzIFwiIiwgdGhyb3VnaHB1dF90ZXN0c1tpXSk7CgkJaWYgKGJpZl9mbGFnKQoJCXsKCQkJc3ByaW50ZihwcmludF9zdHIsICIlMTVzICIsIHRocm91Z2hwdXRfdGVzdHNbaV0pOwoJCQlkb19sYWJlbChiaWZfZmQsIHByaW50X3N0ciwgYmlmX3JvdywgYmlmX2NvbHVtbisrKTsKCQkJYmlmX2NvbHVtbisrOwoJCX0KCQlmb3IgKGogPSAwOyBqIDw9IHk7IGorKykKCQl7CgkJCWlmIChiaWZfZmxhZykKCQkJCWRvX2Zsb2F0KGJpZl9mZCwgcnVudGltZXNbaV1bal0uY3B1dXRpbCwgYmlmX3JvdywgYmlmX2NvbHVtbisrKTsKCQkJaWYoIXNpbGVudCkgcHJpbnRmKCIgJTEwLjJmICIsIHJ1bnRpbWVzW2ldW2pdLmNwdXV0aWwpOwoJCX0KCQlpZighc2lsZW50KSBwcmludGYoIlxuXG4iKTsKCQlpZiAoYmlmX2ZsYWcpCgkJewoJCQliaWZfY29sdW1uPTA7CgkJCWJpZl9yb3crKzsKCQl9Cgl9Cn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBEdW1wIHRoZSB0aHJvdWdocHV0IGdyYXBocyAJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZHVtcF90aHJvdWdocHV0KHZvaWQpCiNlbHNlCnZvaWQKZHVtcF90aHJvdWdocHV0KCkKI2VuZGlmCnsKCWxvbmcgbG9uZyB4LHksaSxqOwoJY2hhciAqcG9ydDsKCWNoYXIgKmxhYmVsOwoJY2hhciBwcmludF9zdHJbMzAwXTsKCXg9bWF4X3g7Cgl5PW1heF95OwoKCWlmKHVzZV90aHJlYWQpCgkJcG9ydD0idGhyZWFkcyI7CgllbHNlCgkJcG9ydD0icHJvY2Vzc2VzIjsKCWlmKCFzaWxlbnQpIHByaW50ZigiXG5cIlRocm91Z2hwdXQgcmVwb3J0IFktYXhpcyBpcyB0eXBlIG9mIHRlc3QgWC1heGlzIGlzIG51bWJlciBvZiAlc1wiXG4iLHBvcnQpOwoJaWYoYmlmX2ZsYWcpCgl7CgkJYmlmX2ZkPWNyZWF0ZV94bHMoYmlmX2ZpbGVuYW1lKTsKCQlkb19sYWJlbChiaWZfZmQsY29tbWFuZF9saW5lLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlzcHJpbnRmKHByaW50X3N0ciwiVGhyb3VnaHB1dCByZXBvcnQgWS1heGlzIGlzIHR5cGUgb2YgdGVzdCBYLWF4aXMgaXMgbnVtYmVyIG9mICVzIixwb3J0KTsKCQlkb19sYWJlbChiaWZfZmQscHJpbnRfc3RyLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCX0KCWlmKE9QU19mbGFnKQoJCWxhYmVsPSJvcHMvc2VjIjsKCWVsc2UKCWlmKE1TX2ZsYWcpCgkJbGFiZWw9Im1pY3Jvc2Vjb25kcy9vcCI7CgllbHNlCgkJbGFiZWw9IktieXRlcy9zZWMiOwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIlwiUmVjb3JkIHNpemUgPSAlbGQgS2J5dGVzIFwiXG4iLHJlY2xlbi8xMDI0KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXCJSZWNvcmQgc2l6ZSA9ICVsbGQgS2J5dGVzIFwiXG4iLHJlY2xlbi8xMDI0KTsKI2VuZGlmCglpZighc2lsZW50KSBwcmludGYoIlwiT3V0cHV0IGlzIGluICVzXCJcblxuIixsYWJlbCk7CglpZihiaWZfZmxhZykKCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNwcmludGYocHJpbnRfc3RyLCJSZWNvcmQgc2l6ZSA9ICVsZCBLYnl0ZXMiLHJlY2xlbi8xMDI0KTsKI2Vsc2UKCQlzcHJpbnRmKHByaW50X3N0ciwiUmVjb3JkIHNpemUgPSAlbGxkIEtieXRlcyIscmVjbGVuLzEwMjQpOwojZW5kaWYKCQlkb19sYWJlbChiaWZfZmQscHJpbnRfc3RyLGJpZl9yb3crKyxiaWZfY29sdW1uKTsKCQlzcHJpbnRmKHByaW50X3N0ciwiT3V0cHV0IGlzIGluICVzIixsYWJlbCk7CgkJZG9fbGFiZWwoYmlmX2ZkLHByaW50X3N0cixiaWZfcm93KyssYmlmX2NvbHVtbik7Cgl9Cglmb3IoaT0wO2k8PXRvdXRwdXRpbmRleDtpKyspCgl7CgkJICAgaWYoIXNpbGVudCkgcHJpbnRmKCJcIiUxNXMgXCIiLHRvdXRwdXRbaV0pOwoJCSAgIGlmKGJpZl9mbGFnKQoJCSAgIHsKCQkJICAgc3ByaW50ZihwcmludF9zdHIsIiUxNXMgIix0b3V0cHV0W2ldKTsKCQkJICAgZG9fbGFiZWwoYmlmX2ZkLHByaW50X3N0cixiaWZfcm93LGJpZl9jb2x1bW4rKyk7CgkJCSAgIGJpZl9jb2x1bW4rKzsKCQkgICB9CgkJICAgZm9yKGo9MDtqPD15O2orKykKCQkgICB7CgkJCSAgIGlmKGJpZl9mbGFnKQoJCQkgICB7CgkJCQkgICBkb19mbG9hdChiaWZfZmQsKGRvdWJsZSlyZXBvcnRfZGFycmF5W2ldW2pdLGJpZl9yb3csYmlmX2NvbHVtbisrKTsKCQkJICAgfQoJCQkgICBpZighc2lsZW50KSBwcmludGYoIiAlMTAuMmYgIixyZXBvcnRfZGFycmF5W2ldW2pdKTsKCQkgICB9CgkJICAgaWYoIXNpbGVudCkgcHJpbnRmKCJcblxuIik7CgkJICAgaWYoYmlmX2ZsYWcpCgkJICAgewoJCQkgICBiaWZfY29sdW1uPTA7CgkJCSAgIGJpZl9yb3crKzsKCQkgICB9Cgl9CglpZiAoY3B1dXRpbGZsYWcpCgkJZHVtcF90aHJvdWdocHV0X2NwdSgpOwoJaWYoYmlmX2ZsYWcpCgkJY2xvc2VfeGxzKGJpZl9mZCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHN0b3JlX2R2YWx1ZSgpCQkJCQkJCSovCi8qIFN0b3JlcyBhIHZhbHVlIGluIGFuIGluIG1lbW9yeSBhcnJheS4gVXNlZCBieSB0aGUgcmVwb3J0IGZ1bmN0aW9uICAgICovCi8qIHRvIHJlLW9yZ2FuaXplIHRoZSBvdXRwdXQgZm9yIEV4Y2VsCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCnN0b3JlX2R2YWx1ZShkb3VibGUgdmFsdWUpCiNlbHNlCnZvaWQKc3RvcmVfZHZhbHVlKHZhbHVlKQpkb3VibGUgdmFsdWU7CiNlbmRpZgp7CglyZXBvcnRfZGFycmF5W2N1cnJlbnRfeF1bY3VycmVudF95XT12YWx1ZTsKCWN1cnJlbnRfeCsrOwoJaWYoY3VycmVudF94ID4gbWF4X3gpCgkJbWF4X3g9Y3VycmVudF94OwoJaWYoY3VycmVudF95ID4gbWF4X3kpCgkJbWF4X3k9Y3VycmVudF95OwoJaWYobWF4X3ggPj0gTUFYX1gpCgl7CgkJcHJpbnRmKCJcbk1BWF9YIHRvbyBzbWFsbFxuIik7CgkJZXhpdCgxNjMpOwoJfQoJaWYobWF4X3kgPj0gTUFYU1RSRUFNUykKCXsKCQlwcmludGYoIlxuTUFYU1RSRUFNUyB0b28gc21hbGxcbiIpOwoJCWV4aXQoMTY0KTsKCX0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogSW5pdGlhbGl6ZSBhIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgYnkgbW1hcC4JCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwpjaGFyICoKaW5pdGZpbGUoaW50IGZkLCBvZmY2NF90IGZpbGVieXRlcyxpbnQgZmxhZyxpbnQgcHJvdCkKI2Vsc2UKY2hhciAqCmluaXRmaWxlKGZkLCBmaWxlYnl0ZXMsZmxhZywgcHJvdCkKaW50IGZkOwpvZmY2NF90IGZpbGVieXRlczsKaW50IGZsYWcsIHByb3Q7CiNlbmRpZgp7CgkgY2hhciAqcGE7CgkgaW50IG1mbGFncz0wOwoJIGxvbmcgbG9uZyB4OwoJIGNoYXIgKnRtcCwqc3RtcDsKCSBpbnQgZmlsZV9mbGFnczsKCSBsb25nIGxvbmcgcmVjczsKCSBsb25nIGxvbmcgaTsKCSBpbnQgZGZsYWcgPSAwOwoKCSBpZihmbGFnKQoJIHsKCiNpZmRlZiBfSFBVWF9TT1VSQ0UKCQkvKiAKCQkgKiBTYXZlIHRpbWUsIGp1c3QgaGF2ZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcmVhbGxvYyAKCQkgKiB0aGUgZmlsZSAKCQkgKi8KCQlwcmVhbGxvYyhmZCxmaWxlYnl0ZXMpOwojZWxzZQoJIAkvKiAKCQkgICogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIHRvIG1lZXQgYW55IGFsaWdubWVudCAKCQkgICogY29udHJhaW50cyBvZiBhbnkgbWV0aG9kLgoJCSAgKi8KCQkgdG1wPShjaGFyICopbWFsbG9jKChzaXplX3QpcmVjbGVuICogMik7CgkJIHN0bXA9dG1wOwoJCSAvKiAKCQkgICogQWxpZ24gdG8gYSByZWNsZW4gYm91bmRhcnkuCgkJICAqLwoJCSB0bXAgPSAoY2hhciAqKSgoKChsb25nKXRtcCArIChsb25nKXJlY2xlbikpJiB+KCgobG9uZylyZWNsZW4tMSkpKTsKCQkvKiAKCQkgKiBTcGVjaWFsIGNhc2UuLiBPcGVuIE9fRElSRUNULCBhbmQgZ29pbmcgdG8gYmUgbW1hcCgpIAoJCSAqIFVuZGVyIExpbnV4LCBvbmUgY2FuIG5vdCBjcmVhdGUgYSBzcGFyc2UgZmlsZSB1c2luZyAKCQkgKiBhIGZpbGUgdGhhdCBpcyBvcGVuZWQgd2l0aCBPX0RJUkVDVCAKCQkgKi8KCSAJZmlsZV9mbGFncz1mY250bChmZCxGX0dFVEZMKTsKCiNpZiAhIGRlZmluZWQoRE9OVF9IQVZFX09fRElSRUNUKQojaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0FJWF9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSVJJWDY0KSB8fCBkZWZpbmVkKFdpbmRvd3MpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQoJCWRmbGFnID0gT19ESVJFQ1Q7CiNlbmRpZgojaWYgZGVmaW5lZChUUlU2NCkKCWlmKGRpcmVjdF9mbGFnKQoJCWRmbGFnID0gT19ESVJFQ1RJTzsKI2VuZGlmCiNlbmRpZgoJIAlpZigoZmlsZV9mbGFncyAmIGRmbGFnKSAhPTApCgkgCXsKCSAJCXJlY3M9ZmlsZWJ5dGVzL3JlY2xlbjsKCQkJZm9yIChpID0wOyBpPHJlY3MgO2krKykKCQkJewoJCQkJeD13cml0ZShmZCx0bXAsKHNpemVfdClyZWNsZW4pOwoJCQkJaWYoeCA8IDEpCgkJCQl7CgkJCQkJcHJpbnRmKCJVbmFibGUgdG8gd3JpdGUgZmlsZVxuIik7CgkJCQkJZXhpdCgxODIpOwoJCQkJfQoJCQl9CgkgCX0KCQllbHNlCgkJewoJCQkvKiBTYXZlIHRpbWUsIGp1c3Qgc2VlayBvdXQgYW5kIHRvdWNoIGF0IHRoZSBlbmQgKi8KCQkgCUlfTFNFRUsoZmQsKGZpbGVieXRlcy1yZWNsZW4pLFNFRUtfU0VUKTsKCQkJeD13cml0ZShmZCx0bXAsKHNpemVfdClyZWNsZW4pOwoJCQlpZih4IDwgMSkKCQkJewoJCQkJcHJpbnRmKCJVbmFibGUgdG8gd3JpdGUgZmlsZVxuIik7CgkJCQlleGl0KDE4MSk7CgkJCX0KCQl9CgkgCWZyZWUoc3RtcCk7CgkgCUlfTFNFRUsoZmQsMCxTRUVLX1NFVCk7CiNlbmRpZgoJIH0KCiNpZmRlZiBJUklYNjQKCWlmKChwcm90ICYgUFJPVF9XUklURSk9PVBST1RfV1JJVEUpCgkJbWZsYWdzPU1BUF9TSEFSRUQ7CgllbHNlCgkJbWZsYWdzPU1BUF9QUklWQVRFOwojZWxzZQojaWZkZWYgSVJJWAoJaWYoKHByb3QgJiBQUk9UX1dSSVRFKT09UFJPVF9XUklURSkKCQltZmxhZ3M9TUFQX1NIQVJFRDsKCWVsc2UKCQltZmxhZ3M9TUFQX1BSSVZBVEU7CiNlbHNlCglpZigocHJvdCAmIFBST1RfV1JJVEUpPT1QUk9UX1dSSVRFKQoJCW1mbGFncz1NQVBfRklMRXxNQVBfU0hBUkVEOwoJZWxzZQoJCW1mbGFncz1NQVBfRklMRXxNQVBfUFJJVkFURTsKI2VuZGlmCiNlbmRpZgoKI2lmIGRlZmluZWQoYnNkNF8yKSAmJiAhZGVmaW5lZChtYWNvc3gpCgkgcGEgPSAoY2hhciAqKW1tYXAoIDAsJmZpbGVieXRlcywgKGludClwcm90LCAKCSAJCShpbnQpbWZsYWdzLCAoaW50KWZkLCAwKTsKI2Vsc2UKCSBwYSA9IChjaGFyICopSV9NTUFQKCAoKGNoYXIgKikwKSxmaWxlYnl0ZXMsIHByb3QsIAoJIAkJbWZsYWdzLCBmZCwgMCk7CiNlbmRpZgojaWZkZWYgX19jb252ZXhfc3BwCglpZihwYSA9PSAoY2hhciAqKS0xKQoJewoJCXByaW50ZigiXG5NbWFwIGZhaWxlZCwgZXJybm8gJWQgRmxhZ3MgJXhcbiIsZXJybm8sKGludCltZmxhZ3MpOwoJCWV4aXQoMTY1KTsKCX0KI2Vsc2UKI2lmZGVmIGxpbnV4CglpZihwYSA9PSAoY2hhciAqKS0xKQoJewoJCXByaW50ZigiTWFwcGluZyBmYWlsZWQsIGVycm5vICVkXG4iLGVycm5vKTsKCQlleGl0KDE2Nik7Cgl9CiNlbHNlCiNpZmRlZiBic2Q0XzIKCWlmKHBhID09IChjaGFyICopLTEpCgl7CgkJcHJpbnRmKCJNYXBwaW5nIGZhaWxlZCwgZXJybm8gJWRcbiIsZXJybm8pOwoJCWV4aXQoMTY3KTsKCX0KI2Vsc2UKCWlmKHBhID09IChjaGFyICopTUFQX0ZBSUxFRCkKCXsKCQlwcmludGYoIlxuTWFwcGluZyBmYWlsZWQsIGVycm5vICVkIEZsYWdzID0gJXhcbiIsZXJybm8sbWZsYWdzKTsKCQlleGl0KDE2OCk7Cgl9CiNlbmRpZgojZW5kaWYKI2VuZGlmCiNpZm5kZWYgTk9fTUFEVklTRQoJaWYoYWR2aXNlX2ZsYWcpCgl7CgkJc3dpdGNoKGFkdmlzZV9vcCl7CgkJY2FzZSAwOgoJCQltYWR2aXNlKCAoY2hhciAqKXBhLCAoc2l6ZV90KSBmaWxlYnl0ZXMsIE1BRFZfTk9STUFMKTsKCQkJYnJlYWs7CgkJY2FzZSAxOiAKCQkJbWFkdmlzZSggKGNoYXIgKilwYSwgKHNpemVfdCkgZmlsZWJ5dGVzLCBNQURWX1JBTkRPTSk7CgkJCWJyZWFrOwoJCWNhc2UgMjogCgkJCW1hZHZpc2UoIChjaGFyICopcGEsIChzaXplX3QpIGZpbGVieXRlcywgTUFEVl9TRVFVRU5USUFMKTsKCQkJYnJlYWs7CgkJY2FzZSAzOiAKCQkJbWFkdmlzZSggKGNoYXIgKilwYSwgKHNpemVfdCkgZmlsZWJ5dGVzLCBNQURWX0RPTlRORUVEKTsKCQkJYnJlYWs7CgkJY2FzZSA0OiAKCQkJbWFkdmlzZSggKGNoYXIgKilwYSwgKHNpemVfdCkgZmlsZWJ5dGVzLCBNQURWX1dJTExORUVEKTsKCQkJYnJlYWs7CgkJZGVmYXVsdDogCgkJCWJyZWFrOwoJCX07Cgl9CgkKI2VuZGlmCglyZXR1cm4ocGEpOwoKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJlbGVhc2UgdGhlIG1tYXAgYXJlYS4JCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKbW1hcF9lbmQoIGNoYXIgKmJ1ZmZlciwgbG9uZyBsb25nIHNpemUpCiNlbHNlCnZvaWQKbW1hcF9lbmQoIGJ1ZmZlciwgc2l6ZSkKY2hhciAqYnVmZmVyOwpsb25nIGxvbmcgc2l6ZTsKI2VuZGlmCnsKCWlmKG11bm1hcChidWZmZXIsKHNpemVfdClzaXplKTwwKQojaWZkZWYgTk9fUFJJTlRfTExECgkJcHJpbnRmKCJtdW5tYXAgYnVmZmVyICVseCwgc2l6ZSAlbGQgZmFpbGVkLlxuIiwobG9uZylidWZmZXIsc2l6ZSk7CiNlbHNlCgkJcHJpbnRmKCJtdW5tYXAgYnVmZmVyICVseCwgc2l6ZSAlbGxkIGZhaWxlZC5cbiIsKGxvbmcpYnVmZmVyLHNpemUpOwojZW5kaWYKCQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKglUaGlzIGlzIGFuIGludGVyZXN0aW5nIGZ1bmN0aW9uLiBIb3cgbXVjaCBkYXRhIHRvIAkJKi8KLyoJY29weSBpcyBhIHZlcnkgZ29vZCBxdWVzdGlvbi4gSGVyZSB3ZSBhcmUgdXNpbmcgbW1hcCB0bwkJKi8KLyoJcGVyZm9ybSBJL08uIElmIHRoZSBiZW5jaG1hcmsgdG91Y2hlcyBldmVyeSBieXRlIHRoZW4JCSovCi8qCXRoaXMgd2lsbCBpbmNsdWRlIGEgYmNvcHkgb2YgdGhlIG1tYXAgYXJlYSBpbnRvIHRoZQkJKi8KLyoJdXNlcnMgYnVmZmVyLiBUaGlzIGlzIHJlcHJlc2VuYXRpdmUgb2YgYW4gYXBwbGljYXRpb24JCSovCi8qCXRoYXQgcmVhZHMgYW5kIHRvdWNoZXMgZXZlcnkgYnl0ZSB0aGF0IGl0IHJlYWQuIElmCQkqLwovKgl0aGUgYmVuY2htYXJrIHJlZHVjZXMgdGhlIHdvcmsgdG8gdG91Y2hpbmcgb25seQkJCSovCi8qCWEgbG9uZyBwZXIgcGFnZSB0aGVuIHRoZSBudW1iZXJzIGdvIHVwIGJ1dCBpdAkJCSovCi8qCWRvZXMgbm90IHJlZmxlY3QgdGhlIGFwcGxpY2F0aW9uIHRvIHdlbGwuIEZvciBub3cJCSovCi8qCXRoZSBiZXN0IGFzc3VtcHRpb24gaXMgdG8gYmVsaWV2ZSB0aGF0IHRoZSBhcHBsaWNhdGlvbgkJKi8KLyoJd2lsbCBpbmRlZWQgdG91Y2ggZXZlcnkgYnl0ZS4JCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZCAKZmlsbF9hcmVhKGxvbmcgbG9uZyAqc3JjX2J1ZmZlciwgbG9uZyBsb25nICpkZXN0X2J1ZmZlciwgbG9uZyBsb25nIGxlbmd0aCkKI2Vsc2UKZmlsbF9hcmVhKCBzcmNfYnVmZmVyLCBkZXN0X2J1ZmZlciwgbGVuZ3RoKQpsb25nIGxvbmcgKnNyY19idWZmZXI7CmxvbmcgbG9uZyAqZGVzdF9idWZmZXI7CmxvbmcgbG9uZyBsZW5ndGg7CiNlbmRpZgp7CgkvKnByaW50ZigiRmlsbCBhcmVhICVkXG4iLChzaXplX3QpbGVuZ3RoKTsqLwoJYmNvcHkoKHZvaWQgKilzcmNfYnVmZmVyLCh2b2lkICopZGVzdF9idWZmZXIsKHNpemVfdClsZW5ndGgpOwp9CgojaWZuZGVmIEFTWU5DX0lPCmludAphc3luY19yZWFkKCkKewoJcHJpbnRmKCJZb3VyIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGFzeW5jIEkvT1xuIik7CglleGl0KDE2OSk7Cn0Kc2l6ZV90CmFzeW5jX3dyaXRlX25vX2NvcHkoKQp7CglwcmludGYoIllvdXIgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYXN5bmMgSS9PXG4iKTsKCWV4aXQoMTcwKTsKfQpzaXplX3QKYXN5bmNfd3JpdGUoKQp7CglwcmludGYoIllvdXIgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYXN5bmMgSS9PXG4iKTsKCWV4aXQoMTcxKTsKfQp2b2lkCmFzeW5jX2luaXQoKQp7CglwcmludGYoIllvdXIgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYXN5bmMgSS9PXG4iKTsKCWV4aXQoMTcyKTsKfQppbnQKYXN5bmNfcmVhZF9ub19jb3B5KCkKewoJcHJpbnRmKCJZb3VyIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGFzeW5jIEkvT1xuIik7CglleGl0KDE3Mik7Cn0Kdm9pZAphc3luY19yZWxlYXNlKCkKewoJcHJpbnRmKCJZb3VyIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGFzeW5jIEkvT1xuIik7CglleGl0KDE3Myk7Cn0KI2VuZGlmCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBOYXAgaW4gbWljcm9zZWNvbmRzLgkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKbXlfbmFwKCBpbnQgbnRpbWUgKQojZWxzZQp2b2lkCm15X25hcCggbnRpbWUgKQppbnQgbnRpbWU7CiNlbmRpZgp7CglzdHJ1Y3QgdGltZXZhbCBuYXBfdGltZTsKCWludCBzZWNvbmRzLCBtaWNyb3NlY3M7CglzZWNvbmRzID0gbnRpbWUvMTAwMDsgLyogTm93IGluIHNlY29uZHMgKi8KCW1pY3Jvc2VjcyA9IChudGltZSoxMDAwKSUxMDAwMDAwOyAgLyogUmVtYWluaW5nIG1pY3Jvc2VjcyAqLwoJbmFwX3RpbWUudHZfc2VjPXNlY29uZHM7CiAgICAgICAgbmFwX3RpbWUudHZfdXNlYz1taWNyb3NlY3M7CiAgICAgICAgc2VsZWN0KDAsMCwwLDAsJm5hcF90aW1lKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogRnVuY3Rpb24gdGhhdCBlc3RhYmxpc2hlcyB0aGUgcmVzb2x1dGlvbiAJCQkJKi8KLyogb2YgdGhlIGdldHRpbWVvZmRheSgpIGZ1bmN0aW9uLgkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApnZXRfcmVzb2x1dGlvbih2b2lkKQojZWxzZQp2b2lkCmdldF9yZXNvbHV0aW9uKCkKI2VuZGlmCnsKICAgICAgICBkb3VibGUgc3RhcnR0aW1lLCBmaW5pc2h0aW1lLCBiZXN0dGltZSA9IDA7CiAgICAgICAgbG9uZyAgaixkZWxheTsKCWludCBrOwoKICAgICAgICBmaW5pc2h0aW1lPXRpbWVfc29fZmFyMSgpOyAvKiBXYXJtIHVwIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSAqLwogICAgICAgIHN0YXJ0dGltZT10aW1lX3NvX2ZhcjEoKTsgIC8qIFdhcm0gdXAgdGhlIGluc3RydWN0aW9uIGNhY2hlICovCiAgICAgICAgZGVsYXk9aj0wOyAgICAgICAgICAgICAgICAgLyogV2FybSB1cCB0aGUgZGF0YSBjYWNoZSAqLwoJZm9yKGs9MDtrPDEwO2srKykKCXsKCSAgICAgICAgd2hpbGUoMSkKICAgICAgIAkgCXsKICAgICAgIAkgICAgICAgICAJc3RhcnR0aW1lPXRpbWVfc29fZmFyMSgpOwogICAgICAgCSAgICAgICAgIAlmb3Ioaj0wO2o8IGRlbGF5O2orKykKICAgICAgIAkgICAgICAgICAgICAgICAgOwogICAgICAgCSAgICAgICAgIAlmaW5pc2h0aW1lPXRpbWVfc29fZmFyMSgpOwogICAgICAgCSAgICAgICAgIAlpZihzdGFydHRpbWU9PWZpbmlzaHRpbWUpCiAgICAgICAJICAgICAgICAgICAgICAgICAJZGVsYXkrKzsKICAgICAgIAkgICAgICAgICAJZWxzZQoJCQl7CgkJCQlpZihrPT0wKQoJCQkJCWJlc3R0aW1lPShmaW5pc2h0aW1lLXN0YXJ0dGltZSk7CgkJCQlpZigoZmluaXNodGltZS1zdGFydHRpbWUpIDwgYmVzdHRpbWUpCgkJCQkJYmVzdHRpbWU9KGZpbmlzaHRpbWUtc3RhcnR0aW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAJIAlicmVhazsKCQkJfQoJCX0KICAgICAgICB9Cgl0aW1lX3Jlcz1iZXN0dGltZS8xMDAwMDAwLjA7CQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBGdW5jdGlvbiB0aGF0IGVzdGFibGlzaGVzIHRoZSByZXNvbHV0aW9uIAkJCQkqLwovKiBvZiB0aGUgZ2V0cnVzYWdlKCkgZnVuY3Rpb24uCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApnZXRfcnVzYWdlX3Jlc29sdXRpb24odm9pZCkKI2Vsc2UKdm9pZApnZXRfcnVzYWdlX3Jlc29sdXRpb24oKQojZW5kaWYKewoJZG91YmxlIHN0YXJ0dGltZSwgZmluaXNodGltZTsKCWxvbmcgIGo7CgoJZmluaXNodGltZT1jcHV0aW1lX3NvX2ZhcigpOyAvKiBXYXJtIHVwIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSAqLwoJc3RhcnR0aW1lPWNwdXRpbWVfc29fZmFyKCk7ICAvKiBXYXJtIHVwIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSAqLwoJZGVsYXk9aj0wOwkJICAgLyogV2FybSB1cCB0aGUgZGF0YSBjYWNoZSAqLwoJd2hpbGUoMSkKCXsKCQlzdGFydHRpbWU9Y3B1dGltZV9zb19mYXIoKTsKCQlmb3Ioaj0wO2o8IGRlbGF5O2orKykKCQkJOwoJCWZpbmlzaHRpbWU9Y3B1dGltZV9zb19mYXIoKTsKCQlpZihzdGFydHRpbWU9PWZpbmlzaHRpbWUpCgkJCQoJCQlkZWxheSsrOwoJCWVsc2UKCQkJYnJlYWs7Cgl9CgljcHV0aW1lX3JlcyA9IChmaW5pc2h0aW1lLXN0YXJ0dGltZSk7CSAvKiBpbiBzZWNvbmRzICovCn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVGltZSBtZWFzdXJlbWVudCByb3V0aW5lcy4JCQkJCQkqLwovKiBSZXR1cm4gdGltZSBpbiBtaWNyb3NlY29uZHMJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwpzdGF0aWMgZG91YmxlCnRpbWVfc29fZmFyMSh2b2lkKQojZWxzZQpzdGF0aWMgZG91YmxlCnRpbWVfc29fZmFyMSgpCiNlbmRpZgp7CiAgICAgLyogRm9yIFdpbmRvd3MgdGhlIHRpbWVfb2ZfZGF5KCkgaXMgdXNlbGVzcy4gSXQgaW5jcmVtZW50cyBpbiAKICAgICAgICA1NSBtaWxsaSBzZWNvbmQgIGluY3JlbWVudHMuIEJ5IHVzaW5nIHRoZSBXaW4zMmFwaSBvbmUgY2FuIAoJZ2V0IGFjY2VzcyB0byB0aGUgaGlnaCBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBpbnRlcmZhY2VzLiAKCVdpdGggdGhpcyBvbmUgY2FuIGdldCBiYWNrIGludG8gdGhlIDggdG8gOSBtaWNyb3NlY29uZCByZXNvbHV0aW9uCiAgICAgICovCiNpZmRlZiBXaW5kb3dzCglMQVJHRV9JTlRFR0VSIGZyZXEsY291bnRlcjsKCWRvdWJsZSB3aW50aW1lOwoJZG91YmxlIGJpZ2NvdW50ZXI7CiAgCXN0cnVjdCB0aW1ldmFsIHRwOwoKICAJaWYocGl0X2hvc3RuYW1lWzBdKXsKICAJICAgcGl0X2dldHRpbWVvZmRheSgmdHAsIChzdHJ1Y3QgdGltZXpvbmUgKikgTlVMTCwgcGl0X2hvc3RuYW1lLCAKCQlwaXRfc2VydmljZSk7CgkgICByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKjEwMDAwMDAuMCkrKCgoZG91YmxlKXRwLnR2X3VzZWMpKTsKCX0KCWVsc2UKCXsJCgogICAgICAgCSAgIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXEpOwogICAgICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjb3VudGVyKTsKICAgICAgICAgICBiaWdjb3VudGVyPShkb3VibGUpY291bnRlci5IaWdoUGFydCAqKGRvdWJsZSkweGZmZmZmZmZmICsKICAgICAgICAgICAgICAgICAgIChkb3VibGUpY291bnRlci5Mb3dQYXJ0OwogICAgICAgICAgIHdpbnRpbWUgPSAoZG91YmxlKShiaWdjb3VudGVyLyhkb3VibGUpZnJlcS5Mb3dQYXJ0KTsKICAgICAgICAgICByZXR1cm4oKGRvdWJsZSl3aW50aW1lKjEwMDAwMDAuMCk7Cgl9CiNlbHNlCiNpZiBkZWZpbmVkIChPU0ZWNCkgfHwgZGVmaW5lZChPU0ZWMykgfHwgZGVmaW5lZChPU0ZWNSkKICBzdHJ1Y3QgdGltZXNwZWMgZ3A7CgogIGlmIChnZXRjbG9jayhUSU1FT0ZEQVksIChzdHJ1Y3QgdGltZXNwZWMgKikgJmdwKSA9PSAtMSkKICAgIHBlcnJvcigiZ2V0Y2xvY2siKTsKICByZXR1cm4gKCggKGRvdWJsZSkgKGdwLnR2X3NlYykqMTAwMDAwMC4wKSArCiAgICAoICgoZmxvYXQpKGdwLnR2X25zZWMpKSAqIDAuMDAxICkpOwojZWxzZQogIHN0cnVjdCB0aW1ldmFsIHRwOwoKICBpZihwaXRfaG9zdG5hbWVbMF0pewogICAgIGlmIChwaXRfZ2V0dGltZW9mZGF5KCZ0cCwgKHN0cnVjdCB0aW1lem9uZSAqKSBOVUxMLCBwaXRfaG9zdG5hbWUsIAoJCXBpdF9zZXJ2aWNlKSA9PSAtMSkKICAgICAgICBwZXJyb3IoInBpdF9nZXR0aW1lb2ZkYXkiKTsKICAgICByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKjEwMDAwMDAuMCkgKyAoKChkb3VibGUpIHRwLnR2X3VzZWMpICk7CiAgfQogIGVsc2UKICB7CiAgICAgaWYgKGdldHRpbWVvZmRheSgmdHAsIChzdHJ1Y3QgdGltZXpvbmUgKikgTlVMTCkgPT0gLTEpCiAgICAgICAgcGVycm9yKCJnZXR0aW1lb2ZkYXkiKTsKICAgICByZXR1cm4gKChkb3VibGUpICh0cC50dl9zZWMpKjEwMDAwMDAuMCkgKyAoKChkb3VibGUpIHRwLnR2X3VzZWMpICk7CiAgfQojZW5kaWYKI2VuZGlmCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJldHVybiB0aGUgY2xvY2tzIHBlciB0aWNrIGZvciB0aGUgdGltZXMoKSBjYWxsLgkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiB1bml4CiNpZmRlZiBIQVZFX0FOU0lDX0MKc3RhdGljIGRvdWJsZQpjbGtfdGNrKHZvaWQpCQkvKiBHZXQgdGhlIGNsb2NrcyBwZXIgdGljayBmb3IgdGltZXMgKi8KI2Vsc2UKc3RhdGljIGRvdWJsZQpjbGtfdGNrKCkJCS8qIEdldCB0aGUgY2xvY2tzIHBlciB0aWNrIGZvciB0aW1lcyAqLwojZW5kaWYKewoJcmV0dXJuKChkb3VibGUpc3lzY29uZihfU0NfQ0xLX1RDSykpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBSZXR1cm4gdGhlIHVzZXIgdGltZSBpbiB0aWNzIGFzIGEgZG91YmxlLgkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnN0YXRpYyBkb3VibGUKdXRpbWVfc29fZmFyKHZvaWQpCSAvKiBSZXR1cm4gdXNlciB0aW1lIGluIHRpY2tzIGFzIGRvdWJsZSAqLwojZWxzZQpzdGF0aWMgZG91YmxlCnV0aW1lX3NvX2ZhcigpCiNlbmRpZgp7CiAgCXN0cnVjdCB0bXMgdHA7CgogIAl0aW1lcygmdHApOwogIAlyZXR1cm4gKChkb3VibGUpICh0cC50bXNfdXRpbWUpKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogUmV0dXJuIHRoZSBzeXN0ZW0gdGltZSBpbiB0aWNzIGFzIGEgZG91YmxlLgkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnN0YXRpYyBkb3VibGUKc3RpbWVfc29fZmFyKHZvaWQpICAJLyogUmV0dXJuIHN5c3RlbSB0aW1lIGluIHRpY2tzIGFzIGRvdWJsZSAqLwojZWxzZQpzdGF0aWMgZG91YmxlCnN0aW1lX3NvX2ZhcigpCiNlbmRpZgp7CiAgCXN0cnVjdCB0bXMgdHA7CgogIAl0aW1lcygmdHApOwogIAlyZXR1cm4gKChkb3VibGUpICh0cC50bXNfc3RpbWUpKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogUmV0dXJuIHRoZSBDUFUgKHVzZXIgKyBzeXN0ZW0pIHRpbWUgaW4gc2Vjb25kcyBhcyBhIGRvdWJsZS4JCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKc3RhdGljIGRvdWJsZQpjcHV0aW1lX3NvX2Zhcih2b2lkKSAgCS8qIFJldHVybiBDUFUgdGltZSBpbiBzZWNvbmRzIGFzIGRvdWJsZSAqLwojZWxzZQpzdGF0aWMgZG91YmxlCmNwdXRpbWVfc29fZmFyKCkKI2VuZGlmCnsKI2lmIDAKICAJc3RydWN0IHRtcyB0cDsKCiAgCXRpbWVzKCZ0cCk7CiAgCXJldHVybiAoKGRvdWJsZSkgKHRwLnRtc191dGltZSArIHRwLnRtc19zdGltZSkgLyBzY19jbGtfdGNrKTsKI2Vsc2UKCXN0cnVjdCBydXNhZ2UgcnU7CgoJaWYgKGdldHJ1c2FnZSAoUlVTQUdFX1NFTEYsICZydSkpCgkJcGVycm9yICgiZ2V0cnVzYWdlIik7CglyZXR1cm4gKChkb3VibGUpKHJ1LnJ1X3V0aW1lLnR2X3NlYyArIHJ1LnJ1X3N0aW1lLnR2X3NlYykgKwoJCS4wMDAwMDEgKihydS5ydV91dGltZS50dl91c2VjICsgcnUucnVfc3RpbWUudHZfdXNlYykpOwojZW5kaWYKfQojZW5kaWYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJldHVybiB0aGUgQ1BVIHV0aWxpemF0aW9uICgodXNlciArIHN5c3RlbSkgLyB3YWxsdGltZSkgYXMgYSBwZXJjZW50YWdlLiAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnN0YXRpYyBkb3VibGUKY3B1X3V0aWwoZG91YmxlIGNwdXRpbWUsIGRvdWJsZSB3YWxsdGltZSkKI2Vsc2UKc3RhdGljIGRvdWJsZQpjcHVfdXRpbChjcHV0aW1lLCB3YWxsdGltZSkKZG91YmxlIGNwdXRpbWUsIHdhbGx0aW1lOwojZW5kaWYKewoJZG91YmxlIGNwdTsKCglpZiAod2FsbHRpbWUgPD0gKGRvdWJsZSkwLjApCgl7CgkJY3B1ID0gKGRvdWJsZSkwLjA7CgkJcmV0dXJuIGNwdTsKCX0KCWlmIChjcHV0aW1lIDw9IChkb3VibGUpMC4wKQoJCWNwdXRpbWUgPSAwLjA7CglpZiAod2FsbHRpbWUgPD0gKGRvdWJsZSkwLjApCgkJY3B1ID0gKGRvdWJsZSkxMDAuMDsKCWVsc2UgewoJCWNwdSA9ICgoKGRvdWJsZSkxMDAuMCAqIGNwdXRpbWUpIC8gd2FsbHRpbWUpOwoJCS8qCgkJaWYgKGNwdSA+IChkb3VibGUpMTAwLjApCgkJCWNwdSA9IChkb3VibGUpOTkuOTk7CgkJKi8KCX0KCXJldHVybiBjcHU7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRoaXMgaXMgYSBsb2NraW5nIGZ1bmN0aW9uIHRoYXQgcGVybWl0cyB0aGUgd3JpdGVzIGFuZCAJCSovCi8qIHJlYWRzIGR1cmluZyB0aGUgdGVzdCB0byBob2xkIGEgZmlsZSBsb2NrLiBTaW5jZSBlYWNoCQkqLwovKiB0bXAgZmlsZSB0aGF0IElvem9uZSBjcmVhdGVzIGlzIGEgcHJpdmF0ZSBmaWxlLCB0aGlzIHNlZW1zCQkqLwovKiBsaWtlIGEgbm8tb3AgYnV0IGl0IHR1cm5zIG91dCB0aGF0IHdoZW4gdXNpbmcgSW96b25lCQkJKi8KLyogb3ZlciBORlMsICBsaWZlIGlzIHZlcnksIHZlcnkgZGlmZmVyZW50LiBTb21lIHZlbmRvcnMJCSovCi8qIHJlYWQgYW5kIHdyaXRlIHBlcmZvcm1hbmNlIGdvZXMgdG8gemlwIHdoZW4gbG9ja3MgYXJlIGhlbGQJCSovCi8qIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUgcHJvY2VzcyB1c2luZyB0aGUgZmlsZSBhbmQgaGF2aW5nCQkqLwovKiBpdCBsb2NrZWQuIFNvbWUgaW1wbGVtZW50YXRpb25zIG9mIE5GUyB0cmFuc2l0aW9uIGZyb20gYXN5bmMJCSovCi8qIHRvIGZ1bGx5IHN5bmMgcmVhZHMgYW5kIHdyaXRlcyBpZiBhbnkgbG9ja3MgYXJlIHVzZWQuIEV1Y2suLi4JKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKbXlsb2NrZihpbnQgZmQsIGludCBvcCwgaW50IHJkd3IpCiNlbHNlCmludApteWxvY2tmKGZkLCBvcCwgcmR3cikKaW50IGZkLCBvcCwgcmR3cjsKI2VuZGlmCnsKCXN0cnVjdCBmbG9jayBteWZsb2NrOwoJaW50IHJldDsKCWlmKG9wPT0wKSAvKiBHZW5lcmljIHVubG9jayB0aGUgd2hvbGUgZmlsZSAqLwoJewoJCW15ZmxvY2subF90eXBlPUZfVU5MQ0s7CgkJbXlmbG9jay5sX3doZW5jZT1TRUVLX1NFVDsKCQlteWZsb2NrLmxfc3RhcnQ9MDsKCQlteWZsb2NrLmxfbGVuPTA7IC8qIFRoZSB3aG9sZSBmaWxlICovCgkJbXlmbG9jay5sX3BpZD1nZXRwaWQoKTsKCQlyZXQ9ZmNudGwoZmQsRl9TRVRMS1csICZteWZsb2NrKTsKCX0KCWVsc2UKCQkgIC8qIEdlbmVyaWMgbG9jayB0aGUgd2hvbGUgZmlsZSAqLwoJewoJCWlmKHJkd3I9PTApCgkJCW15ZmxvY2subF90eXBlPUZfV1JMQ0s7IC8qIEFwcGx5IHdyaXRlIGxvY2sgKi8KCQllbHNlCgkJCW15ZmxvY2subF90eXBlPUZfUkRMQ0s7IC8qIEFwcGx5IHJlYWQgbG9jayAqLwoJCW15ZmxvY2subF93aGVuY2U9U0VFS19TRVQ7CgkJbXlmbG9jay5sX3N0YXJ0PTA7CgkJbXlmbG9jay5sX2xlbj0wOyAvKiBUaGUgd2hvbGUgZmlsZSAqLwoJCW15ZmxvY2subF9waWQ9Z2V0cGlkKCk7CgkJcmV0PWZjbnRsKGZkLEZfU0VUTEtXLCAmbXlmbG9jayk7Cgl9CglyZXR1cm4ocmV0KTsKfQoKI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKbXlsb2NrcihpbnQgZmQsIGludCBvcCwgaW50IHJkd3IsIG9mZjY0X3Qgb2Zmc2V0LCBvZmY2NF90IHNpemUpCiNlbHNlCmludApteWxvY2tyKGZkLCBvcCwgcmR3ciwgb2Zmc2V0LCBzaXplKQppbnQgZmQsIG9wLCByZHdyOwpvZmY2NF90IG9mZnNldDsKb2ZmNjRfdCBzaXplOwojZW5kaWYKewoJc3RydWN0IGZsb2NrIG15ZmxvY2s7CglpbnQgcmV0OwoJaWYob3A9PTApIC8qIEdlbmVyaWMgdW5sb2NrIHRoZSB3aG9sZSBmaWxlICovCgl7CgkJLypwcmludGYoIkNoaWxkOiAlbGxkIFVubG9jayBvZmZzZXQgJWxsZCBzaXplICVsbGRcbiIsY2hpZCxvZmZzZXQsc2l6ZSk7Ki8KCQlteWZsb2NrLmxfdHlwZT1GX1VOTENLOwoJCW15ZmxvY2subF93aGVuY2U9U0VFS19TRVQ7CgkJbXlmbG9jay5sX3N0YXJ0PW9mZnNldDsKCQlteWZsb2NrLmxfbGVuPXNpemU7IC8qIFRoZSB3aG9sZSBmaWxlICovCgkJbXlmbG9jay5sX3BpZD1nZXRwaWQoKTsKCQlyZXQ9ZmNudGwoZmQsRl9TRVRMS1csICZteWZsb2NrKTsKCX0KCWVsc2UKCQkgIC8qIEdlbmVyaWMgbG9jayB0aGUgcmFuZ2UgICovCgl7CgkJaWYocmR3cj09MCkKCQl7CgkJCW15ZmxvY2subF90eXBlPUZfV1JMQ0s7IC8qIEFwcGx5IHdyaXRlIGxvY2sgKi8KCQkJLyogcHJpbnRmKCJXcml0ZSAiKTsqLwoJCX0KCQllbHNlCgkJewoJCQlteWZsb2NrLmxfdHlwZT1GX1JETENLOyAvKiBBcHBseSByZWFkIGxvY2sgKi8KCQkJLyogcHJpbnRmKCJSZWFkICIpOyovCgkJfQoJCS8qcHJpbnRmKCJDaGlsZDogJWxsZCBMb2NrIG9mZnNldCAlbGxkIHNpemUgJWxsZFxuIixjaGlkLCBvZmZzZXQsc2l6ZSk7Ki8KCQlteWZsb2NrLmxfd2hlbmNlPVNFRUtfU0VUOwoJCW15ZmxvY2subF9zdGFydD1vZmZzZXQ7CgkJbXlmbG9jay5sX2xlbj1zaXplOyAvKiBUaGUgd2hvbGUgZmlsZSAqLwoJCW15ZmxvY2subF9waWQ9Z2V0cGlkKCk7CgkJcmV0PWZjbnRsKGZkLEZfU0VUTEtXLCAmbXlmbG9jayk7Cgl9CglyZXR1cm4ocmV0KTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2ltdWxhdGUgY29tcHV0ZSB0aW1lIHRoYXQgZG9lcwkJKi8KLyogbm90IGludm9sdmUgdGhlIEkvTyBzdWJzeXN0ZW0uCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwpmbG9hdApkb19jb21wdXRlKGZsb2F0IGNvbXBfZGVsYXkpCiNlbHNlCmZsb2F0CmRvX2NvbXB1dGUoY29tcF9kZWxheSkKZmxvYXQgY29tcF9kZWxheTsKI2VuZGlmCnsKCWRvdWJsZSBzdGFydHRpbWUsdG1wdGltZTsKCWlmKGNvbXBfZGVsYXkgPT0gKGZsb2F0KTAuMCkKCQlyZXR1cm4oMC4wKTsKCXN0YXJ0dGltZT10aW1lX3NvX2ZhcigpOwoJd2hpbGUoMSkKCXsJCgkJdG1wdGltZT10aW1lX3NvX2ZhcigpLXN0YXJ0dGltZTsKCQlpZih0bXB0aW1lID49IChkb3VibGUpY29tcF9kZWxheSkKCQkJcmV0dXJuKHRtcHRpbWUpOwoJfQoJcmV0dXJuKDAuMCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gY2F1c2UgYW4gaW50ZXJydXB0aW9uCQkJKi8KLyogaW4gdGhlIHJlYWQgcGF0dGVybi4gSXQgd2lsbCBtYWtlIGEgcmVhZGVyIGhhdmUJCQkqLwovKiBqaXR0ZXIgaW4gaXRzIGFjY2VzcyBiZWhhdmlvci4JCQkJCSovCi8qIFdoZW4gdXNpbmcgZGlyZWN0IEkvTyBvbmUgbXVzdCB1c2UgYSBwYWdlc2l6ZSB0cmFuc2Zlci4JCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApkaXNydXB0KGludCBmZCkKI2Vsc2UKdm9pZApkaXNydXB0KGZkKQppbnQgZmQ7CiNlbmRpZgp7CgljaGFyICpuYnVmZiwqZnJlZV9hZGRyOwoJb2ZmNjRfdCBjdXJyZW50OwoKCWZyZWVfYWRkcj1uYnVmZj0oY2hhciAqKW1hbGxvYygoc2l6ZV90KXBhZ2Vfc2l6ZStwYWdlX3NpemUpOwoJbmJ1ZmY9KGNoYXIgKikoKChsb25nKW5idWZmKyhsb25nKXBhZ2Vfc2l6ZSkgJiAobG9uZyl+KHBhZ2Vfc2l6ZS0xKSk7CgoJLyogU2F2ZSBjdXJyZW50IHBvc2l0aW9uICovCgljdXJyZW50ID0gSV9MU0VFSyhmZCwwLFNFRUtfQ1VSKTsKCgkvKiBNb3ZlIHRvIGJlZ2lubmluZyBvZiBmaWxlICovCglJX0xTRUVLKGZkLDAsU0VFS19TRVQpOwoKCS8qIFJlYWQgYSBsaXR0bGUgb2YgdGhlIGZpbGUgKi8KCWlmKGRpcmVjdF9mbGFnKQoJCXJlYWQoZmQsbmJ1ZmYscGFnZV9zaXplKTsKCWVsc2UKCQlyZWFkKGZkLG5idWZmLDEpOwoKCS8qIFNraXAgaW50byB0aGUgZmlsZSAqLwoJSV9MU0VFSyhmZCxwYWdlX3NpemUsU0VFS19TRVQpOwoKCS8qIFJlYWQgYSBsaXR0bGUgb2YgdGhlIGZpbGUgKi8KCWlmKGRpcmVjdF9mbGFnKQoJCXJlYWQoZmQsbmJ1ZmYscGFnZV9zaXplKTsKCWVsc2UKCQlyZWFkKGZkLG5idWZmLDEpOwoKCS8qIFJlc3RvcmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlLCBiZWZvcmUgZGlzcnVwdGlvbiAqLwoJSV9MU0VFSyhmZCxjdXJyZW50LFNFRUtfU0VUKTsKCWZyZWUoZnJlZV9hZGRyKTsKCQp9CgojaWYgZGVmaW5lZChXaW5kb3dzKQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGNhdXNlIGFuIGludGVycnVwdGlvbgkJCSovCi8qIGluIHRoZSByZWFkIHBhdHRlcm4uIEl0IHdpbGwgbWFrZSBhIHJlYWRlciBoYXZlCQkJKi8KLyogaml0dGVyIGluIGl0cyBhY2Nlc3MgYmVoYXZpb3IuCQkJCQkqLwovKiBXaGVuIHVzaW5nIGRpcmVjdCBJL08gb25lIG11c3QgdXNlIGEgcGFnZXNpemUgdHJhbnNmZXIuCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZGlzcnVwdHcoSEFORExFIGhhbmQpCiNlbHNlCnZvaWQKZGlzcnVwdHcoSEFORExFKQppbnQgaGFuZDsKI2VuZGlmCnsKCWNoYXIgKm5idWZmLCpmcmVlX2FkZHI7CglvZmY2NF90IGN1cnJlbnQ7Cglsb25nIHJldHZhbDsKCglmcmVlX2FkZHI9bmJ1ZmY9KGNoYXIgKiltYWxsb2MoKHNpemVfdClwYWdlX3NpemUrcGFnZV9zaXplKTsKCW5idWZmPShjaGFyICopKCgobG9uZyluYnVmZisobG9uZylwYWdlX3NpemUpICYgKGxvbmcpfihwYWdlX3NpemUtMSkpOwoKCS8qIFNhdmUgY3VycmVudCBwb3NpdGlvbiAqLwoJY3VycmVudD1TZXRGaWxlUG9pbnRlcihoYW5kLChMT05HKTAsMCxGSUxFX0NVUlJFTlQpOwoKCS8qIE1vdmUgdG8gYmVnaW5uaW5nIG9mIGZpbGUgKi8KCVNldEZpbGVQb2ludGVyKGhhbmQsKExPTkcpMCwwLEZJTEVfQkVHSU4pOwoKCS8qIFJlYWQgYSBsaXR0bGUgb2YgdGhlIGZpbGUgKi8KCVJlYWRGaWxlKGhhbmQsIG5idWZmLCByZWNsZW4sKExQRFdPUkQpJnJldHZhbCwwKTsKCgkvKiBTa2lwIGludG8gdGhlIGZpbGUgKi8KCVNldEZpbGVQb2ludGVyKGhhbmQsKExPTkcpcGFnZV9zaXplLDAsRklMRV9CRUdJTik7CgoJLyogUmVhZCBhIGxpdHRsZSBvZiB0aGUgZmlsZSAqLwoJUmVhZEZpbGUoaGFuZCwgbmJ1ZmYsIHJlY2xlbiwoTFBEV09SRCkmcmV0dmFsLDApOwoKCS8qIFJlc3RvcmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlLCBiZWZvcmUgZGlzcnVwdGlvbiAqLwoJU2V0RmlsZVBvaW50ZXIoaGFuZCwoTE9ORyljdXJyZW50LDAsRklMRV9CRUdJTik7CglmcmVlKGZyZWVfYWRkcik7CgkKfQojZW5kaWYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJlYWQgYSB0ZWxlbWV0cnkgZmlsZSBhbmQgcmV0dXJuIHRoZSB0aGUgb2Zmc2V0CQkJKi8KLyogZm9yIHRoZSBuZXh0IG9wZXJhdG9uLiBBbHNvLCBzZXQgdGhlIHNpemUJCQkJKi8KLyogaW4gdGhlIHZhcmlhYmxlIGdpdmVuIGluIHRoZSBwYXJhbSBsaXN0LgkJCQkqLwovKiB3aGljaCA9PSAwIC4uLiByZWFkZXIgY2FsbGluZwkJCQkJKi8KLyogd2hpY2ggPT0gMSAuLi4gd3JpdGVyIGNhbGxpbmcJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKbG9uZyBsb25nCmdldF90cmFqKEZJTEUgKnRyYWpfZmQsIGxvbmcgbG9uZyAqdHJhal9zaXplLCBmbG9hdCAqZGVsYXksIGxvbmcgd2hpY2gpCiNlbHNlCmxvbmcgbG9uZwpnZXRfdHJhaih0cmFqX2ZkLCB0cmFqX3NpemUsIGRlbGF5LCB3aGljaCkKRklMRSAqdHJhal9mZDsKbG9uZyBsb25nICp0cmFqX3NpemU7CmZsb2F0ICpkZWxheTsKbG9uZyB3aGljaDsKI2VuZGlmCnsKCWxvbmcgbG9uZyB0cmFqX29mZnNldCA9IDA7Cglsb25nIGxvbmcgdG1wMiA9IDA7CglpbnQgdG1wID0gMDsKCWludCB0b2tlbnM7CglpbnQgcmV0PTA7CgljaGFyICpyZXQxLCp3aGVyZTsKCWNoYXIgYnVmWzIwMF07CgljaGFyIHNidWZbMjAwXTsKCWludCBnb3RfbGluZTsKCQoJZ290X2xpbmU9MDsKCgl3aGlsZShnb3RfbGluZT09MCkKCXsKCQl0b2tlbnM9MDsKCQlyZXQxPWZnZXRzKGJ1ZiwyMDAsdHJhal9mZCk7CgkJaWYocmV0MT09KGNoYXIgKikwKQoJCXsKCQkJcHJpbnRmKCJcblxuXHRFYXJseSBlbmQgb2YgdGVsZW1ldHJ5IGZpbGUuIFJlc3VsdHMgbm90IGFjY3VyYXRlLlxuIik7CgkJCXNpZ25hbF9oYW5kbGVyKCk7CgkJfQoJCXdoZXJlPShjaGFyICopJmJ1ZlswXTsKCQlzdHJjcHkoc2J1ZixidWYpOwoJCWlmKCgqd2hlcmU9PScjJykgfHwgKCp3aGVyZT09J1xuJykpCgkJCWNvbnRpbnVlOwoJCXRva2VucysrOwoJCXN0cnRvayh3aGVyZSwiICIpOwoJCXdoaWxlKCAoY2hhciAqKShzdHJ0b2soIChjaGFyICopMCwiICIpKSAhPSAoY2hhciAqKTApCgkJewoJCQl0b2tlbnMrKzsKCQl9CgkJZ290X2xpbmU9MTsKCX0KCWlmKHRva2VucyA9PSAzKQoJewojaWZkZWYgTk9fUFJJTlRfTExECgkJcmV0PXNzY2FuZihzYnVmLCIlbGQgJWxkICVkXG4iLCZ0cmFqX29mZnNldCwmdG1wMiwmdG1wKTsKI2Vsc2UKCQlyZXQ9c3NjYW5mKHNidWYsIiVsbGQgJWxsZCAlZFxuIiwmdHJhal9vZmZzZXQsJnRtcDIsJnRtcCk7CiNlbmRpZgoJLypwcmludGYoIlxuUmVhZGluZyAlcyB0cmFqZWN0b3J5IHdpdGggJWQgaXRlbXNcbiIsd2hpY2g/IndyaXRlIjoicmVhZCIsdG9rZW5zKTsqLwoJCSp0cmFqX3NpemU9dG1wMjsKCQkqZGVsYXk9ICgoZmxvYXQpdG1wLzEwMDApOwoJfQoJaWYodG9rZW5zID09IDIpCgl7IAojaWZkZWYgTk9fUFJJTlRfTExECgkJcmV0PXNzY2FuZihzYnVmLCIlbGQgJWxkXG4iLCZ0cmFqX29mZnNldCx0cmFqX3NpemUpOwojZWxzZQoJCXJldD1zc2NhbmYoc2J1ZiwiJWxsZCAlbGxkXG4iLCZ0cmFqX29mZnNldCx0cmFqX3NpemUpOwojZW5kaWYKCQkqZGVsYXk9Y29tcHV0ZV90aW1lOwoJLypwcmludGYoIlxuUmVhZGluZyAlcyB0cmFqZWN0b3J5IHdpdGggJWQgaXRlbXNcbiIsd2hpY2g/IndyaXRlIjoicmVhZCIsdG9rZW5zKTsqLwoJfQoJaWYoKHRva2VucyAhPSAyKSAmJiAodG9rZW5zICE9MykpCgl7CgkJcHJpbnRmKCJcblx0SW52YWxpZCBlbnRyeSBpbiB0ZWxlbWV0cnkgZmlsZS4gPiAlcyA8XG4iLHNidWYpOwoJCWV4aXQoMTc4KTsKCX0KCWlmKHJldD09RU9GKQoJewoJCXByaW50ZigiXG5cblx0RWFybHkgZW5kIG9mIHRlbGVtZXRyeSBmaWxlLiBSZXN1bHRzIG5vdCBhY2N1cmF0ZS5cbiIpOwoJCXNpZ25hbF9oYW5kbGVyKCk7Cgl9CiNpZmRlZiBERUJVRwojaWZkZWYgTk9fUFJJTlRfTExECglpZighc2lsZW50KSBwcmludGYoIlxuT2Zmc2V0ICVsbGQgIFNpemUgJWxkIENvbXB1dGUgZGVsYXkgJWZcbiIsdHJhal9vZmZzZXQsICp0cmFqX3NpemUsKmRlbGF5KTsKI2Vsc2UKCWlmKCFzaWxlbnQpIHByaW50ZigiXG5PZmZzZXQgJWxsZCAgU2l6ZSAlbGxkIENvbXB1dGUgZGVsYXkgJWZcbiIsdHJhal9vZmZzZXQsICp0cmFqX3NpemUsKmRlbGF5KTsKI2VuZGlmCiNlbmRpZgoJcmV0dXJuKHRyYWpfb2Zmc2V0KTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogT3BlbiB0aGUgcmVhZCB0ZWxlbWV0cnkgZmlsZSBhbmQgcmV0dXJuIGZpbGUgcG9pbnRlci4gCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCkZJTEUgKgpvcGVuX3JfdHJhaih2b2lkKQojZWxzZQpGSUxFICoKb3Blbl9yX3RyYWooKQojZW5kaWYKewoJRklMRSAqZmQ7CglmZD1mb3BlbihyZWFkX3RyYWpfZmlsZW5hbWUsInIiKTsKCWlmKGZkID09IChGSUxFICopMCkKCXsKCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIHJlYWQgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLAoJCQlyZWFkX3RyYWpfZmlsZW5hbWUpOwoJCWV4aXQoMTc0KTsKCX0KCXJldHVybihmZCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIE9wZW4gdGhlIHdyaXRlIHRlbGVtZXRyeSBmaWxlIGFuZCByZXR1cm4gZmlsZSBwb2ludGVyLgkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwpGSUxFICoKb3Blbl93X3RyYWoodm9pZCkKI2Vsc2UKRklMRSAqCm9wZW5fd190cmFqKCkKI2VuZGlmCnsKCUZJTEUgKmZkOwoJZmQ9Zm9wZW4od3JpdGVfdHJhal9maWxlbmFtZSwiciIpOwoJaWYoZmQgPT0gKEZJTEUgKikwKQoJewoJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gd3JpdGUgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLAoJCQl3cml0ZV90cmFqX2ZpbGVuYW1lKTsKCQlleGl0KDE3NSk7Cgl9CglyZXR1cm4oZmQpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiByX3RyYWpfc2l6ZSh2b2lkKQkJCQkJCQkqLwovKiBUaGlzIGZ1bmN0aW9uIHNjYW5zIHRoZSByZWFkIHRlbGVtZXRyeSBmaWxlIAkJCQkqLwovKiBhbmQgZXN0YWJsaXNoZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzCQkJCSovCi8qIGFuZCB0aGUgbWF4aW11bSBmaWxlIG9mZnNldC4JCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQgCnJfdHJhal9zaXplKHZvaWQpCiNlbHNlCnZvaWQKcl90cmFqX3NpemUoKQojZW5kaWYKewoJRklMRSAqZmQ7CglpbnQgcmV0OwoJbG9uZyBsb25nIHRyYWpfb2Zmc2V0ID0gMDsKCWxvbmcgbG9uZyB0cmFqX3NpemUgPSAwOwoJbG9uZyBsb25nIG1heF9vZmZzZXQgPSAwOwoJaW50IHRva2VuczsKCWludCBkdW1teTsKCWludCBsaW5lczsKCWNoYXIgYnVmWzIwMF07CgljaGFyIHNidWZbMjAwXTsKCWNoYXIgKnJldDEsKndoZXJlOwoKCWxpbmVzPTA7CglmZD1mb3BlbihyZWFkX3RyYWpfZmlsZW5hbWUsInIiKTsKCWlmKGZkID09IChGSUxFICopMCkKCXsKCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIHJlYWQgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLAoJCQlyZWFkX3RyYWpfZmlsZW5hbWUpOwoJCWV4aXQoMTc0KTsKCX0KCXdoaWxlKDEpCgl7CgkJdG9rZW5zPTA7CgkJcmV0MT1mZ2V0cyhidWYsMjAwLGZkKTsKCQlpZihyZXQxPT0oY2hhciAqKTApCgkJCWJyZWFrOwoJCXdoZXJlPShjaGFyICopJmJ1ZlswXTsKCQlzdHJjcHkoc2J1ZixidWYpOwoJCWxpbmVzKys7CgkJaWYoKCp3aGVyZT09JyMnKSB8fCAoKndoZXJlPT0nXG4nKSkKCQkJY29udGludWU7CgkJdG9rZW5zKys7CgkJc3RydG9rKHdoZXJlLCIgIik7CgkJd2hpbGUoIChjaGFyICopKHN0cnRvayggKGNoYXIgKikwLCIgIikpICE9IChjaGFyICopMCkKCQl7CgkJCXRva2VucysrOwoJCX0KCQlpZih0b2tlbnM9PTEpCgkJewoJCQlwcmludGYoIlxuXHRJbnZhbGlkIHJlYWQgdGVsZW1ldHJ5IGZpbGUgZW50cnkuIExpbmUgJWQiLAoJCQkJbGluZXMpOwoJCQlzaWduYWxfaGFuZGxlcigpOwoJCX0KI2lmZGVmIERFQlVHCglwcmludGYoIlRva2VucyA9ICVkXG4iLHRva2Vucyk7CiNlbmRpZgoJCWlmKHRva2Vucz09MykKCQl7CiNpZmRlZiBOT19QUklOVF9MTEQKCQkJcmV0PXNzY2FuZihzYnVmLCIlbGQgJWxkICVkXG4iLCZ0cmFqX29mZnNldCwmdHJhal9zaXplLCZkdW1teSk7CiNlbHNlCgkJCXJldD1zc2NhbmYoc2J1ZiwiJWxsZCAlbGxkICVkXG4iLCZ0cmFqX29mZnNldCwmdHJhal9zaXplLCZkdW1teSk7CiNlbmRpZgoJCX0KCQlpZih0b2tlbnM9PTIpCgkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCXJldD1zc2NhbmYoc2J1ZiwiJWxkICVsZFxuIiwmdHJhal9vZmZzZXQsJnRyYWpfc2l6ZSk7CiNlbHNlCgkJCXJldD1zc2NhbmYoc2J1ZiwiJWxsZCAlbGxkXG4iLCZ0cmFqX29mZnNldCwmdHJhal9zaXplKTsKI2VuZGlmCgkJfQoJCWlmKCh0b2tlbnMgIT0gMikgJiYgKHRva2VucyAhPTMpKQoJCXsKCQkJcHJpbnRmKCJcblx0SW52YWxpZCByZWFkIHRlbGVtZXRyeSBmaWxlLiBMaW5lICVkXG4iLGxpbmVzKTsKCQkJZXhpdCgxNzgpOwoJCX0KCQlpZih0cmFqX29mZnNldCArIHRyYWpfc2l6ZSA+IG1heF9vZmZzZXQpCgkJCW1heF9vZmZzZXQ9dHJhal9vZmZzZXQgKyB0cmFqX3NpemU7CgkJCgkJcl90cmFqX29wcysrOwoJfQkKCXJfdHJhal9mc2l6ZT1tYXhfb2Zmc2V0OwojaWZkZWYgREVCVUcKCXByaW50ZigiRmlsZSBzaXplIG9mIHJlYWQgJWxsZCBJdGVtIGNvdW50ICVsbGRcbiIscl90cmFqX2ZzaXplLHJfdHJhal9vcHMpOwojZW5kaWYKCWZjbG9zZShmZCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIHdfdHJhal9zaXplKHZvaWQpCQkJCQkJCSovCi8qIFRoaXMgZnVuY3Rpb24gc2NhbnMgdGhlIHdyaXRlIHRlbGVtZXRyeSBmaWxlIAkJCSovCi8qIGFuZCBlc3RhYmxpc2hlcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMJCQkJKi8KLyogYW5kIHRoZSBtYXhpbXVtIGZpbGUgb2Zmc2V0LgkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKbG9uZyBsb25nCndfdHJhal9zaXplKHZvaWQpCiNlbHNlCmxvbmcgbG9uZwp3X3RyYWpfc2l6ZSgpCiNlbmRpZgp7CglGSUxFICpmZDsKCWludCByZXQ7Cglsb25nIGxvbmcgdHJhal9vZmZzZXQgPSAwOwoJbG9uZyBsb25nIHRyYWpfc2l6ZSA9IDA7Cglsb25nIGxvbmcgbWF4X29mZnNldCA9IDA7CglpbnQgZHVtbXk7CglpbnQgdG9rZW5zLGxpbmVzOwoJY2hhciAqcmV0MTsKCWNoYXIgYnVmWzIwMF07CgljaGFyIHNidWZbMjAwXTsKCWNoYXIgKndoZXJlOwoKCWxpbmVzPTA7CgoJZmQ9Zm9wZW4od3JpdGVfdHJhal9maWxlbmFtZSwiciIpOwoJaWYoZmQgPT0gKEZJTEUgKikwKQoJewoJCXByaW50ZigiVW5hYmxlIHRvIG9wZW4gd3JpdGUgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLAoJCQl3cml0ZV90cmFqX2ZpbGVuYW1lKTsKCQlleGl0KDE3NCk7Cgl9Cgl3aGlsZSgxKQoJewoJCXRva2Vucz0wOwoJCXJldDE9ZmdldHMoYnVmLDIwMCxmZCk7CgkJaWYocmV0MT09KGNoYXIgKikwKQoJCQlicmVhazsKCQlsaW5lcysrOwoJCXdoZXJlPShjaGFyICopJmJ1ZlswXTsKCQlzdHJjcHkoc2J1ZixidWYpOwoJCWlmKCgqd2hlcmU9PScjJykgfHwgKCp3aGVyZT09J1xuJykpCgkJCWNvbnRpbnVlOwoJCXRva2VucysrOwoJCXN0cnRvayh3aGVyZSwiICIpOwoJCXdoaWxlKCAoY2hhciAqKShzdHJ0b2soIChjaGFyICopMCwiICIpKSAhPSAoY2hhciAqKTApCgkJewoJCQl0b2tlbnMrKzsKCQl9CgkJaWYodG9rZW5zPT0xKQoJCXsKCQkJcHJpbnRmKCJcblx0SW52YWxpZCB3cml0ZSB0ZWxlbWV0cnkgZmlsZSBlbnRyeS4gTGluZSAlZFxuIiwKCQkJCWxpbmVzKTsKCQkJc2lnbmFsX2hhbmRsZXIoKTsKCQl9CgkJaWYodG9rZW5zPT0zKQoJCXsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCQlyZXQ9c3NjYW5mKHNidWYsIiVsZCAlbGQgJWRcbiIsJnRyYWpfb2Zmc2V0LCZ0cmFqX3NpemUsJmR1bW15KTsKI2Vsc2UKCQkJcmV0PXNzY2FuZihzYnVmLCIlbGxkICVsbGQgJWQiLCZ0cmFqX29mZnNldCwmdHJhal9zaXplLCZkdW1teSk7CiNlbmRpZgoJCX0KCQlpZih0b2tlbnM9PTIpCgkJewojaWZkZWYgTk9fUFJJTlRfTExECgkJCXJldD1zc2NhbmYoc2J1ZiwiJWxkICVsZFxuIiwmdHJhal9vZmZzZXQsJnRyYWpfc2l6ZSk7CiNlbHNlCgkJCXJldD1zc2NhbmYoc2J1ZiwiJWxsZCAlbGxkXG4iLCZ0cmFqX29mZnNldCwmdHJhal9zaXplKTsKI2VuZGlmCgkJfQoJCWlmKHRva2VucyA+IDMpCgkJewoJCQlwcmludGYoIlxuXHRJbnZhbGlkIHdyaXRlIHRlbGVtZXRyeSBmaWxlIGVudHJ5LiBMaW5lICVkXG4iLAoJCQkJbGluZXMpOwoJCQlleGl0KDE3NCk7CgkJfQoJCWlmKHRyYWpfb2Zmc2V0ICsgdHJhal9zaXplID4gbWF4X29mZnNldCkKCQkJbWF4X29mZnNldD10cmFqX29mZnNldCArIHRyYWpfc2l6ZTsKCQkKCQl3X3RyYWpfb3BzKys7Cgl9CQoJd190cmFqX2ZzaXplPW1heF9vZmZzZXQ7CiNpZmRlZiBERUJVRwoJcHJpbnRmKCJGaWxlIHNpemUgb2Ygd3JpdGUgJWxsZCBJdGVtIGNvdW50ICVsbGRcbiIsd190cmFqX2ZzaXplLHdfdHJhal9vcHMpOwojZW5kaWYKCWZjbG9zZShmZCk7CglyZXR1cm4obWF4X29mZnNldCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEZpbmQgd2hpY2ggdmVyc2lvbiBvZiB0aGUgdGVsZW1ldHJ5IGZpbGUgZm9ybWF0IGlzIGluIHVzZS4JCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKdHJhal92ZXJzKHZvaWQpCiNlbHNlCnZvaWQKdHJhal92ZXJzKCkKI2VuZGlmCnsKCUZJTEUgKmZkOwoJY2hhciAqd2hlcmU7CgljaGFyIGJ1ZlsyMDBdOwoJaW50IHRoaW5nczsKCWNoYXIgKnJldDE7CgkKCWlmKHJfdHJhal9mbGFnKQoJewoJCXRoaW5ncz0wOwoJCWZkPWZvcGVuKHJlYWRfdHJhal9maWxlbmFtZSwiciIpOwoJCWlmKGZkID09IChGSUxFICopMCkKCQl7CQoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIHJlYWQgdGVsZW1ldHJ5IGZpbGUgXCIlc1wiXG4iLCByZWFkX3RyYWpfZmlsZW5hbWUpOwoJCQlleGl0KDE3NCk7CgkJfQpsb29wMToKCQlyZXQxPWZnZXRzKGJ1ZiwyMDAsZmQpOwoJCWlmKHJldDE9PShjaGFyICopMCkKCQl7CgkJCWZjbG9zZShmZCk7CgkJCXJldHVybjsKCQl9CgkJd2hlcmU9KGNoYXIgKikmYnVmWzBdOwoJCWlmKCgqd2hlcmU9PScjJykgfHwgKCp3aGVyZT09J1xuJykpCgkJCWdvdG8gbG9vcDE7CgkJdGhpbmdzKys7CgkJc3RydG9rKHdoZXJlLCIgIik7CgkJd2hpbGUoIChjaGFyICopKHN0cnRvayggKGNoYXIgKikwLCIgIikpICE9IChjaGFyICopMCkKCQl7CgkJCXRoaW5ncysrOwoJCX0KCQlyX3RyYWpfaXRlbXM9dGhpbmdzOwojaWZkZWYgREVCVUcKCQlwcmludGYoIkZvdW5kICVkIGl0ZW1zIGluIHRoZSByZWFkIHRlbGVtZXRyeSBmaWxlXG4iLHRoaW5ncyk7CiNlbmRpZgoJfQoJaWYod190cmFqX2ZsYWcpCgl7CgkJdGhpbmdzPTA7CgkJZmQ9Zm9wZW4od3JpdGVfdHJhal9maWxlbmFtZSwiciIpOwoJCWlmKGZkID09IChGSUxFICopMCkKCQl7CQoJCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIHdyaXRlIHRlbGVtZXRyeSBmaWxlIFwiJXNcIlxuIiwgd3JpdGVfdHJhal9maWxlbmFtZSk7CgkJCWV4aXQoMTc0KTsKCQl9Cmxvb3AyOgoJCXJldDE9ZmdldHMoYnVmLDIwMCxmZCk7CgkJaWYocmV0MT09KGNoYXIgKikwKQoJCXsKCQkJZmNsb3NlKGZkKTsKCQkJcmV0dXJuOwoJCX0KCQl3aGVyZT0oY2hhciAqKSZidWZbMF07CgkJaWYoKCp3aGVyZT09JyMnKSB8fCAoKndoZXJlPT0nXG4nKSkKCQkJZ290byBsb29wMjsKCQl0aGluZ3MrKzsKCQlzdHJ0b2sod2hlcmUsIiAiKTsKCQl3aGlsZSggKGNoYXIgKikoc3RydG9rKCAoY2hhciAqKTAsIiAiKSkgIT0gKGNoYXIgKikwKQoJCXsKCQkJdGhpbmdzKys7CgkJfQoJCWZjbG9zZShmZCk7CgkJd190cmFqX2l0ZW1zPXRoaW5nczsKI2lmZGVmIERFQlVHCgkJcHJpbnRmKCJGb3VuZCAlZCBpdGVtcyBpbiB0aGUgd3JpdGUgdGVsZW1ldHJ5IGZpbGVcbiIsdGhpbmdzKTsKI2VuZGlmCgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJICAgICAgICAgICAgKi8KLyogVG9kYXkgdGhpcyBpbml0aWFsaXplcyB0aGUgZGVmYXVsdCBzZXQgb2YgZmlsZSBzaXplcyBmb3IgSW96b25lLiAqLwovKiBpbiB0aGUgZnV0dXJlIGl0IG1heSB0YWtlIGlucHV0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBvcgkgICAgKi8KLyogZnJvbSBhIGZpbGUuCQkJCQkJCSAgICAqLwovKgkJCQkJCQkJICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmluaXRfZmlsZV9zaXplcyggb2ZmNjRfdCBtaW5fZl9zaXplLCAgb2ZmNjRfdCBtYXhfZl9zaXplKQojZWxzZQp2b2lkCmluaXRfZmlsZV9zaXplcyhtaW5fZl9zaXplLCBtYXhfZl9zaXplKQpvZmY2NF90IG1pbl9mX3NpemU7Cm9mZjY0X3QgbWF4X2Zfc2l6ZTsKI2VuZGlmCnsKICAgIAlvZmY2NF90IGtpbG9zaTsKCWludCB4OwoJaWYoc19jb3VudCA+IDEpCgl7CgkgICAgICAgIGZvcih4PTA7IHggPCBzX2NvdW50OyB4KyspCgkJewoJCQlraWxvc2k9c19yYW5nZVt4XTsKCQkJYWRkX2ZpbGVfc2l6ZSgob2ZmNjRfdClraWxvc2kpOwoJCX0KCX0KCWVsc2UKCXsKCSAgICAgICAgZm9yKGtpbG9zaT1taW5fZl9zaXplO2tpbG9zaTw9bWF4X2Zfc2l6ZTtraWxvc2kqPW11bHRpcGxpZXIpCgkJewoJCQlhZGRfZmlsZV9zaXplKChvZmY2NF90KWtpbG9zaSk7CgkJfQoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFVzZWQgdG8gY29uc3R1Y3QgdGhlIGxpc3Qgb2YgZmlsZSBzaXplcyB0byB0ZXN0LgkJICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmFkZF9maWxlX3NpemUob2ZmNjRfdCBzaXplKQojZWxzZQp2b2lkCmFkZF9maWxlX3NpemUoc2l6ZSkKb2ZmNjRfdCBzaXplOwojZW5kaWYKewoJc3RydWN0IHNpemVfZW50cnkgKnNpemVfbGlzdHA7CglzdHJ1Y3Qgc2l6ZV9lbnRyeSAqbnNpemVfbGlzdDsKCQoJc2l6ZV9saXN0cD1zaXplX2xpc3Q7CgkKCWlmKHNpemVfbGlzdCkKCXsKCQlpZihzaXplX2xpc3RwLT5uZXh0KQoJCQl3aGlsZShzaXplX2xpc3RwLT5uZXh0IT0wKQoJCQkJc2l6ZV9saXN0cD1zaXplX2xpc3RwLT5uZXh0OwoJfQoJbnNpemVfbGlzdD0oc3RydWN0IHNpemVfZW50cnkgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBzaXplX2VudHJ5KSk7CglpZihuc2l6ZV9saXN0PT0wKQoJewoJCXByaW50ZigiTWFsbG9jIGZhaWxlZCBpbiBhZGRfZmlsZV9zaXplXG4iKTsKCQlleGl0KDE4MCk7Cgl9CQoJbnNpemVfbGlzdC0+bmV4dD0wOwoJbnNpemVfbGlzdC0+c2l6ZT1zaXplOwoJaWYoc2l6ZV9saXN0ID09IDApCgkJc2l6ZV9saXN0PW5zaXplX2xpc3Q7CgllbHNlCgkJc2l6ZV9saXN0cC0+bmV4dD1uc2l6ZV9saXN0OwoJc2l6ZV9saXN0cD1zaXplX2xpc3Q7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogUmV0dXJuIHRoZSBuZXh0IGZpbGUgc2l6ZSB0byB0ZXN0LgkJCQkgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCm9mZjY0X3QKZ2V0X25leHRfZmlsZV9zaXplKG9mZjY0X3Qgc2l6ZSkKI2Vsc2UKb2ZmNjRfdApnZXRfbmV4dF9maWxlX3NpemUoc2l6ZSkKb2ZmNjRfdCBzaXplOwojZW5kaWYKewoJc3RydWN0IHNpemVfZW50cnkgKnNpemVfbGlzdHA7CgkKCXNpemVfbGlzdHA9c2l6ZV9saXN0OwoJCglmb3IoIDsgc2l6ZV9saXN0cCA7IHNpemVfbGlzdHA9c2l6ZV9saXN0cC0+bmV4dCApCgl7CgkJaWYoc2l6ZV9saXN0cC0+c2l6ZSA+IHNpemUpCgkJCXJldHVybihzaXplX2xpc3RwLT5zaXplKTsKCX0KCXJldHVybigob2ZmNjRfdCkwKTsKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkgICAgICAgICAgICAgICovCi8qIFRvZGF5IHRoaXMgaW5pdGlhbGl6ZXMgdGhlIGRlZmF1bHQgc2V0IG9mIHJlY29yZCBzaXplcyBmb3IgSW96b25lLiAqLwovKiBpbiB0aGUgZnV0dXJlIGl0IG1heSB0YWtlIGlucHV0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBvcgkgICAgICAqLwovKiBmcm9tIGEgZmlsZS4JCQkJCQkJICAgICAgKi8KLyoJCQkJCQkJCSAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKaW5pdF9yZWNvcmRfc2l6ZXMoIG9mZjY0X3QgbWluX3Jfc2l6ZSwgIG9mZjY0X3QgbWF4X3Jfc2l6ZSkKI2Vsc2UKdm9pZAppbml0X3JlY29yZF9zaXplcyhtaW5fcl9zaXplLCBtYXhfcl9zaXplKQpvZmY2NF90IG1pbl9yX3NpemU7Cm9mZjY0X3QgbWF4X3Jfc2l6ZTsKI2VuZGlmCnsKCWludCB4OwogICAgCW9mZjY0X3Qgc2l6ZTsKCWlmKHJfY291bnQgPiAxKQoJewoJICAgICAgICBmb3IoeD0wOyB4IDwgcl9jb3VudDsgeCsrKQoJCXsKCQkJc2l6ZT1yX3JhbmdlW3hdOwoJCQlhZGRfcmVjb3JkX3NpemUoKG9mZjY0X3Qpc2l6ZSk7CgkJfQoJfQoJZWxzZQoJewoJICAgICAgICBmb3Ioc2l6ZT1taW5fcl9zaXplO3NpemU8PW1heF9yX3NpemU7c2l6ZSo9bXVsdGlwbGllcikKCQl7CgkJCWFkZF9yZWNvcmRfc2l6ZSgob2ZmNjRfdClzaXplKTsKCQl9Cgl9Cn0KCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApkZWxfcmVjb3JkX3NpemVzKHZvaWQpCiNlbHNlCnZvaWQKZGVsX3JlY29yZF9zaXplcygpCiNlbmRpZgp7CiAgICAgICAgc3RydWN0IHNpemVfZW50cnkgKnNpemVfbGlzdHA7CiAgICAgICAgc3RydWN0IHNpemVfZW50cnkgKnNhdmVfaXRlbTsKCiAgICAgICAgc2l6ZV9saXN0cD1yZWNfc2l6ZV9saXN0OwogICAgICAgIGlmKHJlY19zaXplX2xpc3QpCiAgICAgICAgewogICAgICAgICAgICAgICAgd2hpbGUoc2l6ZV9saXN0cCE9MCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9pdGVtPXNpemVfbGlzdHAtPm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoc2l6ZV9saXN0cCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfbGlzdHA9c2F2ZV9pdGVtOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZWNfc2l6ZV9saXN0PTA7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogVXNlZCB0byBjb25zdHVjdCB0aGUgbGlzdCBvZiByZWNvcmQgc2l6ZXMgdG8gdGVzdC4JCSAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZAphZGRfcmVjb3JkX3NpemUob2ZmNjRfdCBzaXplKQojZWxzZQp2b2lkCmFkZF9yZWNvcmRfc2l6ZShzaXplKQpvZmY2NF90IHNpemU7CiNlbmRpZgp7CglzdHJ1Y3Qgc2l6ZV9lbnRyeSAqc2l6ZV9saXN0cDsKCXN0cnVjdCBzaXplX2VudHJ5ICpuc2l6ZV9saXN0OwoJCglzaXplX2xpc3RwPXJlY19zaXplX2xpc3Q7CgkKCWlmKHJlY19zaXplX2xpc3QpCgl7CgkJaWYoc2l6ZV9saXN0cC0+bmV4dCkKCQkJd2hpbGUoc2l6ZV9saXN0cC0+bmV4dCE9MCkKCQkJCXNpemVfbGlzdHA9c2l6ZV9saXN0cC0+bmV4dDsKCX0KCW5zaXplX2xpc3Q9KHN0cnVjdCBzaXplX2VudHJ5ICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2l6ZV9lbnRyeSkpOwoJaWYobnNpemVfbGlzdD09MCkKCXsKCQlwcmludGYoIk1hbGxvYyBmYWlsZWQgaW4gYWRkX2ZpbGVfc2l6ZVxuIik7CgkJZXhpdCgxODApOwoJfQkKCW5zaXplX2xpc3QtPm5leHQ9MDsKCW5zaXplX2xpc3QtPnNpemU9c2l6ZTsKCWlmKHJlY19zaXplX2xpc3QgPT0gMCkKCQlyZWNfc2l6ZV9saXN0PW5zaXplX2xpc3Q7CgllbHNlCgkJc2l6ZV9saXN0cC0+bmV4dD1uc2l6ZV9saXN0OwoJc2l6ZV9saXN0cD1yZWNfc2l6ZV9saXN0Owp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFJldHVybiB0aGUgbmV4dCByZWNvcmQgc2l6ZSB0byB0ZXN0LgkJCQkgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaWZkZWYgSEFWRV9BTlNJQ19DCm9mZjY0X3QKZ2V0X25leHRfcmVjb3JkX3NpemUob2ZmNjRfdCBzaXplKQojZWxzZQpvZmY2NF90CmdldF9uZXh0X3JlY29yZF9zaXplKHNpemUpCm9mZjY0X3Qgc2l6ZTsKI2VuZGlmCnsKCXN0cnVjdCBzaXplX2VudHJ5ICpzaXplX2xpc3RwOwoJCglzaXplX2xpc3RwPXJlY19zaXplX2xpc3Q7CgkKCWZvciggOyBzaXplX2xpc3RwIDsgc2l6ZV9saXN0cD1zaXplX2xpc3RwLT5uZXh0ICkKCXsKCQlpZihzaXplX2xpc3RwLT5zaXplID4gc2l6ZSkKCQkJcmV0dXJuKHNpemVfbGlzdHAtPnNpemUpOwoJfQoJcmV0dXJuKChvZmY2NF90KTApOwp9CgoKLyoKICogU29ja2V0IGJhc2VkIGNvbW11bmljYXRpb24gbWVjaGFuaXNtLgogKiBJdCdzIGludGVuZGVkIHVzZSBpcyB0byBiZSB0aGUgY29tbXVuaWNhdGlvbiBtZWNoYW5pc20KICogdGhhdCB3aWxsIGJlIHVzZWQgdG8gZ2V0IElvem9uZSB0byBydW4gYWNyb3NzCiAqIG11bHRpcGxlIGNsaWVudHMuIDEvMTEvMjAwMiAgRG9uIENhcHBzCiAqIFRoZSBjb21tdW5pY2F0aW9uIG1vZGVsIHBlcm1pdHMgYSBtYXN0ZXIgdG8gc2VuZCBhbmQgcmVjZWl2ZQogKiBtZXNzYWdlcyB0byBhbmQgZnJvbSBjbGllbnRzLCBhbmQgZm9yIGNsaWVudHMgdG8gYmUgYWJsZSB0byAKICogc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlcyB0byBhbmQgZnJvbSB0aGUgbWFzdGVyLgogKi8KLyogCiAqIEludGVyZmFjZXMgYXJlOgoJTWFzdGVyOgoJICBpbnQgc3RhcnRfbWFzdGVyX2xpc3Rlbih2b2lkKQoJCUNhbGxlZCB0byBjcmVhdGUgbWFzdGVycyBsaXN0ZW5pbmcgcG9ydC4KCgkgIHZvaWQgbWFzdGVyX2xpc3RlbihpbnQgc29jaywgaW50IHNpemVfb2ZfbWVzc2FnZSkKCQlDYWxsIHdoZW4gbWFzdGVyIHdhbnRzIHRvIGJsb2NrIGFuZCByZWFkCgkJYSBtZXNzYWdlLgoKCSAgaW50IHN0YXJ0X21hc3Rlcl9zZW5kKGNoYXIgKmNoaWxkX2hvc3RfbmFtZSwgaW50IHBvcnQpCgkJQ2FsbCB0byBzdGFydCBhIHNlbmQgY2hhbm5lbCB0byBhIGNsaWVudC4KCgkgIHZvaWQgbWFzdGVyX3NlbmQoaW50IGNoaWxkX3NvY2tldF92YWwsIGNoYXIgKmhvc3RfbmFtZSwgCgkJICAgIGNoYXIgKnNlbmRfYnVmZmVyLCBpbnQgc2VuZF9zaXplKQoJCUNhbGwgdG8gc2VuZCBtZXNzYWdlIHRvIGEgY2xpZW50LgoKCSAgdm9pZCBzdG9wX21hc3Rlcl9saXN0ZW4oaW50IG1hc3Rlcl9zb2NrZXRfdmFsKQoJCUNhbGwgdG8gcmVsZWFzZSB0aGUgbWFzdGVycyBsaXN0ZW5pbmcgcG9ydC4KCgkgIHZvaWQgc3RvcF9tYXN0ZXJfc2VuZChpbnQgY2hpbGRfc29ja2V0X3ZhbCkKCQlDYWxsIHRvIHJlbGVhc2UgdGhlIG1hc3RlcnMgc2VuZCBwb3J0IHRvIGEgY2xpZW50LgoKCUNsaWVudHM6CgkgIGludCBzdGFydF9jaGlsZF9saXN0ZW4oaW50IHNpemVfb2ZfbWVzc2FnZSkKCQlDYWxsZWQgdG8gY3JlYXRlIGNsaWVudHMgbGlzdGVuaW5nIHBvcnQuCgoJICB2b2lkIGNoaWxkX2xpc3RlbihpbnQgc29jaywgaW50IHNpemVfb2ZfbWVzc2FnZSkKCQlDYWxsIHdoZW4gY2xpZW50IHdhbnRzIHRvIGJsb2NrIGFuZCByZWFkCgkJYSBtZXNzYWdlIGZyb20gdGhlIG1hc3Rlci4KCgkgIGludCBzdGFydF9jaGlsZF9zZW5kKGNoYXIgKmNvbnRyb2xsaW5nX2hvc3RfbmFtZSkKCQlDYWxsIHRvIHN0YXJ0IGEgc2VuZCBjaGFubmVsIHRvIHRoZSBtYXN0ZXIuCgoJICB2b2lkIGNoaWxkX3NlbmQoaW50IGNoaWxkX3NvY2tldF92YWwsIGNoYXIgKmNvbnRyb2xsaW5nX2hvc3RfbmFtZSwgCgkJICAgY2hhciAqc2VuZF9idWZmZXIsIGludCBzZW5kX3NpemUpCgkJQ2FsbCB0byBzZW5kIG1lc3NhZ2UgdG8gdGhlIG1hc3Rlci4KCgkgIHZvaWQgc3RvcF9jaGlsZF9saXN0ZW4oaW50IGNoaWxkX3NvY2tldF92YWwpCgkJQ2FsbCB0byByZWxlYXNlIHRoZSBjbGllbnRzIGxpc3RlbmluZyBwb3J0LgoKCSAgdm9pZCBzdG9wX2NoaWxkX3NlbmQoaW50IGNoaWxkX3NvY2tldF92YWwpCgkJQ2FsbCB0byByZWxlYXNlIHRoZSBjbGllbnRzIHNlbmQgcG9ydCB0byB0aGUgbWFzdGVyLgoKCglNZXNzYWdlcyBhcmUgc2VudCBpbiBjb21tYW5kIGJsb2Nrcy4gVGhlIHN0cnVjdHVyZSBpcwoJY2xpZW50X2NvbW1hbmQgZm9yIG1lc3NhZ2VzIGZyb20gdGhlIG1hc3RlciB0byB0aGUgCgljbGllbnQsIGFuZCBtYXN0ZXJfY29tbWFuZCBmb3IgbWVzc2FnZXMgc2VudCBmcm9tCglhIGNsaWVudCB0byB0aGUgbWFzdGVyLgoqLwoKCi8qCiAqIEFsbG9jYXRlIHRoZSBtYXN0ZXIgbGlzdGVuaW5nIHBvcnQgdGhhdCAKICogYWxsIGNoaWxkcmVuIHdpbGwgdXNlIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIG1hc3Rlci4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKaW50CnN0YXJ0X21hc3Rlcl9saXN0ZW4odm9pZCkKI2Vsc2UKaW50CnN0YXJ0X21hc3Rlcl9saXN0ZW4oKQojZW5kaWYKewoJaW50IHM7CglpbnQgcmM7CglpbnQgdG1wX3BvcnQ7CglpbnQgc29ja2VycjsKCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwoJaW50IHJlY3ZfYnVmX3NpemU9NjU1MzYqNDsKCiAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKICAgICAgICBpZiAocyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcGVycm9yKCJzb2NrZXQgZmFpbGVkOiIpOwogICAgICAgICAgICAgICAgZXhpdCgxOSk7CiAgICAgICAgfQoJc29ja2VyciA9IHNldHNvY2tvcHQgKHMsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgKGNoYXIgKikKCQkmcmVjdl9idWZfc2l6ZSwgc2l6ZW9mKGludCkpOwoJaWYgKCBzb2NrZXJyID09IC0xICkgewoJCXBlcnJvcigiRXJyb3IgaW4gc2V0c29ja29wdFxuIik7Cgl9Cgl0bXBfcG9ydD1IT1NUX0xJU1RfUE9SVDsKICAgICAgICBiemVybygmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAgICAgcmMgPSAtMTsKICAgICAgICB3aGlsZSAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJjID0gYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJCWlmKHJjIDwgMCkKCQl7CgkJCXRtcF9wb3J0Kys7CiAgICAgICAgICAgICAgICAJYWRkci5zaW5fcG9ydD1odG9ucyh0bXBfcG9ydCk7CgkJCWNvbnRpbnVlOwoJCX0KCQltYXN0ZXJfbGlzdGVuX3BvcnQgPSBudG9ocyhhZGRyLnNpbl9wb3J0KTsKICAgICAgICB9CglpZihyYyA8IDApCgl7CgkJcGVycm9yKCJiaW5kIGZhaWxlZFxuIik7CgkJZXhpdCgyMCk7Cgl9CglyZXR1cm4ocyk7Cn0KCi8qCiAqIE1hc3RlciBsaXN0ZW5zIGZvciBtZXNzYWdlcyBhbmQgYmxvY2tzIHVudGlsCiAqIHNvbWV0aGluZyBhcnJpdmVzLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCm1hc3Rlcl9saXN0ZW4oaW50IHNvY2ssIGludCBzaXplX29mX21lc3NhZ2UpCiNlbHNlCnZvaWQKbWFzdGVyX2xpc3Rlbihzb2NrLCBzaXplX29mX21lc3NhZ2UpCmludCBzb2NrLCBzaXplX29mX21lc3NhZ2U7CiNlbmRpZgp7CglpbnQgdHNpemU7CglpbnQgcmN2ZDsKCWludCBzOwoJaW50IHJjPTA7CgoJdHNpemUgPSBzaXplX29mX21lc3NhZ2U7CglzID0gc29jazsKCXJjdmQgPSAwOwoJd2hpbGUocmN2ZCA8IHRzaXplKQoJewoJCWlmKG1kZWJ1ZyA9PTEpCgkJewoJCQlwcmludGYoIk1hc3RlcjogSW4gcmVjaWV2ZSBcbiIpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJcmM9cmVjdihzLG1hc3Rlcl9yY3ZfYnVmLHNpemVfb2ZfbWVzc2FnZSwwKTsKCQlpZihyYyA8IDApCgkJewoJCQlwZXJyb3IoIlJlYWQgZmFpbGVkXG4iKTsKCQkJZXhpdCgyMSk7CgkJfQoJCWlmKG1kZWJ1ZyA+PTEpCgkJewoJCQlwcmludGYoIk1hc3RlciBnb3QgJWQgYnl0ZXNcbiIscmMpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJcmN2ZCs9cmM7Cgl9CglpZihtZGVidWcgPj0xKQoJewoJCXByaW50ZigiTWFzdGVyIHJldHVybmluZyBmcm9tIGdvdCAlZCBieXRlc1xuIixyYyk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9Cn0KCi8qCiAqIENoaWxkIHNlbmRzIG1lc3NhZ2UgdG8gbWFzdGVyLgogKi8KCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApjaGlsZF9zZW5kKGludCBjaGlsZF9zb2NrZXRfdmFsLCBjaGFyICpjb250cm9sbGluZ19ob3N0X25hbWUsIHN0cnVjdCBtYXN0ZXJfY29tbWFuZCAqc2VuZF9idWZmZXIsIGludCBzZW5kX3NpemUpCiNlbHNlCnZvaWQKY2hpbGRfc2VuZChjaGlsZF9zb2NrZXRfdmFsLCBjb250cm9sbGluZ19ob3N0X25hbWUsIHNlbmRfYnVmZmVyLCBzZW5kX3NpemUpCmludCBjaGlsZF9zb2NrZXRfdmFsOyAKY2hhciAqY29udHJvbGxpbmdfaG9zdF9uYW1lOyAKc3RydWN0IG1hc3Rlcl9jb21tYW5kICpzZW5kX2J1ZmZlcjsgCmludCBzZW5kX3NpemU7CiNlbmRpZgp7CglpbnQgcmM7CglzdHJ1Y3QgbWFzdGVyX25ldXRyYWxfY29tbWFuZCBvdXRidWY7CgkKCWJ6ZXJvKCZvdXRidWYsIHNpemVvZihzdHJ1Y3QgbWFzdGVyX25ldXRyYWxfY29tbWFuZCkpOwoJaWYoY2RlYnVnPj0xKQoJewoJCXByaW50ZigiQ2hpbGQgJWQgc2VuZGluZyBtZXNzYWdlIHRvICVzIFxuIiwoaW50KWNoaWQsIGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CgkvKiAKCSAqIENvbnZlcnQgaW50ZXJuYWwgY29tbWFuZHMgdG8gc3RyaW5nIGZvcm1hdCB0byBuZXV0cmFsIGZvcm1hdCBmb3IgcG9ydGFiaWxpdHkKCSAqLwoJc3RyY3B5KG91dGJ1Zi5tX2hvc3RfbmFtZSxzZW5kX2J1ZmZlci0+bV9ob3N0X25hbWUpOwoJc3RyY3B5KG91dGJ1Zi5tX2NsaWVudF9uYW1lLHNlbmRfYnVmZmVyLT5tX2NsaWVudF9uYW1lKTsKCXNwcmludGYob3V0YnVmLm1fY2xpZW50X251bWJlciwiJWQiLHNlbmRfYnVmZmVyLT5tX2NsaWVudF9udW1iZXIpOwoJc3ByaW50ZihvdXRidWYubV9jbGllbnRfZXJyb3IsIiVkIixzZW5kX2J1ZmZlci0+bV9jbGllbnRfZXJyb3IpOwoJc3ByaW50ZihvdXRidWYubV9jaGlsZF9wb3J0LCIlZCIsc2VuZF9idWZmZXItPm1fY2hpbGRfcG9ydCk7CglzcHJpbnRmKG91dGJ1Zi5tX2NoaWxkX2FzeW5jX3BvcnQsIiVkIixzZW5kX2J1ZmZlci0+bV9jaGlsZF9hc3luY19wb3J0KTsKCXNwcmludGYob3V0YnVmLm1fY29tbWFuZCwiJWQiLHNlbmRfYnVmZmVyLT5tX2NvbW1hbmQpOwoJc3ByaW50ZihvdXRidWYubV90ZXN0bnVtLCIlZCIsc2VuZF9idWZmZXItPm1fdGVzdG51bSk7CglzcHJpbnRmKG91dGJ1Zi5tX3ZlcnNpb24sIiVkIixzZW5kX2J1ZmZlci0+bV92ZXJzaW9uKTsKCXNwcmludGYob3V0YnVmLm1fdGhyb3VnaHB1dCwiJWYiLHNlbmRfYnVmZmVyLT5tX3Rocm91Z2hwdXQpOwoJc3ByaW50ZihvdXRidWYubV9jcHV0aW1lLCIlZiIsIHNlbmRfYnVmZmVyLT5tX2NwdXRpbWUpOwoJc3ByaW50ZihvdXRidWYubV93YWxsdGltZSwiJWYiLHNlbmRfYnVmZmVyLT5tX3dhbGx0aW1lKTsKCXNwcmludGYob3V0YnVmLm1fc3RvcF9mbGFnLCIlZCIsc2VuZF9idWZmZXItPm1fc3RvcF9mbGFnKTsKCXNwcmludGYob3V0YnVmLm1fYWN0dWFsLCIlZiIsc2VuZF9idWZmZXItPm1fYWN0dWFsKTsKI2lmZGVmIE5PX1BSSU5UX0xMRAoJc3ByaW50ZihvdXRidWYubV9jaGlsZF9mbGFnLCIlbGQiLHNlbmRfYnVmZmVyLT5tX2NoaWxkX2ZsYWcpOwojZWxzZQoJc3ByaW50ZihvdXRidWYubV9jaGlsZF9mbGFnLCIlbGxkIixzZW5kX2J1ZmZlci0+bV9jaGlsZF9mbGFnKTsKI2VuZGlmCglpZihjZGVidWc+PTEpCgl7CgkJcHJpbnRmKCJDaGlsZCAlZCBzZW5kaW5nIG1lc3NhZ2UgdG8gJXNcbiIsKGludCljaGlkLCBjb250cm9sbGluZ19ob3N0X25hbWUpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQogICAgICAgIHJjID0gc2VuZChjaGlsZF9zb2NrZXRfdmFsLCAoY2hhciAqKSZvdXRidWYsIHNpemVvZihzdHJ1Y3QgbWFzdGVyX25ldXRyYWxfY29tbWFuZCksIDApOwogICAgICAgIGlmIChyYyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcGVycm9yKCJ3cml0ZSBmYWlsZWRcbiIpOwogICAgICAgICAgICAgICAgZXhpdCgyNik7CiAgICAgICAgfQp9CgovKgogKiBNYXN0ZXIgc2VuZGluZyBtZXNzYWdlIHRvIGEgY2hpbGQKICogVGhlcmUgc2hvdWxkIGJlIGEgdW5pcXVlIGNoaWxkX3NvY2tldF92YWwgZm9yIGVhY2gKICogY2hpbGQuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKbWFzdGVyX3NlbmQoaW50IGNoaWxkX3NvY2tldF92YWwsIGNoYXIgKmhvc3RfbmFtZSwgc3RydWN0IGNsaWVudF9jb21tYW5kICpzZW5kX2J1ZmZlciwgaW50IHNlbmRfc2l6ZSkKI2Vsc2UKdm9pZAptYXN0ZXJfc2VuZChjaGlsZF9zb2NrZXRfdmFsLCBob3N0X25hbWUsIHNlbmRfYnVmZmVyLCBzZW5kX3NpemUpCmludCBjaGlsZF9zb2NrZXRfdmFsOwpjaGFyICpob3N0X25hbWU7IApzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgKnNlbmRfYnVmZmVyOyAKaW50IHNlbmRfc2l6ZTsKI2VuZGlmCnsKCWludCByYzsKCXN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kIG91dGJ1ZjsKCgliemVybygmb3V0YnVmLHNpemVvZihzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCkpOwoJaWYobWRlYnVnKQoJewoJCXByaW50ZigiTWFzdGVyX25ldXRyYWxfY29tbWFuZCBzaXplID0gJWRcbiIsc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfbmV1dHJhbF9jb21tYW5kKSk7CgkJcHJpbnRmKCJDbGllbnRfbmV1dHJhbF9jb21tYW5kIHNpemUgPSAlZFxuIixzaXplb2Yoc3RydWN0IGNsaWVudF9uZXV0cmFsX2NvbW1hbmQpKTsKCX0KCS8qIAoJICogQ29udmVydCBpbnRlcm5hbCBjb21tYW5kcyB0byBzdHJpbmcgZm9ybWF0IGZvciBuZXV0cmFsIGZvcm1hdC9wb3J0YWJpbGl0eQoJICovCglzdHJjcHkob3V0YnVmLmNfaG9zdF9uYW1lLHNlbmRfYnVmZmVyLT5jX2hvc3RfbmFtZSk7CglzdHJjcHkob3V0YnVmLmNfcGl0X2hvc3RuYW1lLHNlbmRfYnVmZmVyLT5jX3BpdF9ob3N0bmFtZSk7CglzdHJjcHkob3V0YnVmLmNfcGl0X3NlcnZpY2Usc2VuZF9idWZmZXItPmNfcGl0X3NlcnZpY2UpOwoJc3RyY3B5KG91dGJ1Zi5jX2NsaWVudF9uYW1lLHNlbmRfYnVmZmVyLT5jX2NsaWVudF9uYW1lKTsKCXN0cmNweShvdXRidWYuY193b3JraW5nX2RpcixzZW5kX2J1ZmZlci0+Y193b3JraW5nX2Rpcik7CglzdHJjcHkob3V0YnVmLmNfZmlsZV9uYW1lLHNlbmRfYnVmZmVyLT5jX2ZpbGVfbmFtZSk7CglzdHJjcHkob3V0YnVmLmNfcGF0aF9kaXIsc2VuZF9idWZmZXItPmNfcGF0aF9kaXIpOwoJc3RyY3B5KG91dGJ1Zi5jX2V4ZWN1dGVfbmFtZSxzZW5kX2J1ZmZlci0+Y19leGVjdXRlX25hbWUpOwoJc3RyY3B5KG91dGJ1Zi5jX3dyaXRlX3RyYWpfZmlsZW5hbWUsc2VuZF9idWZmZXItPmNfd3JpdGVfdHJhal9maWxlbmFtZSk7CglzdHJjcHkob3V0YnVmLmNfcmVhZF90cmFqX2ZpbGVuYW1lLHNlbmRfYnVmZmVyLT5jX3JlYWRfdHJhal9maWxlbmFtZSk7CglzcHJpbnRmKG91dGJ1Zi5jX29mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfb2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19tZmZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19tZmZsYWcpOwoJc3ByaW50ZihvdXRidWYuY191bmJ1ZmZlcmVkLCIlZCIsc2VuZF9idWZmZXItPmNfdW5idWZmZXJlZCk7CglzcHJpbnRmKG91dGJ1Zi5jX25vcmV0ZXN0LCIlZCIsc2VuZF9idWZmZXItPmNfbm9yZXRlc3QpOwoJc3ByaW50ZihvdXRidWYuY19ub3RydW5jYXRlLCIlZCIsc2VuZF9idWZmZXItPmNfbm90cnVuY2F0ZSk7CglzcHJpbnRmKG91dGJ1Zi5jX3JlYWRfc3luYywiJWQiLHNlbmRfYnVmZmVyLT5jX3JlYWRfc3luYyk7CglzcHJpbnRmKG91dGJ1Zi5jX2pmbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfamZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19hc3luY19mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfYXN5bmNfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX21tYXBmbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfbW1hcGZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19rX2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19rX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19oX2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19oX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19tZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX21mbGFnKTsKCXNwcmludGYob3V0YnVmLmNfcGZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19wZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX3N0cmlkZV9mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfc3RyaWRlX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY192ZXJpZnksIiVkIixzZW5kX2J1ZmZlci0+Y192ZXJpZnkpOwoJc3ByaW50ZihvdXRidWYuY19zdmVyaWZ5LCIlZCIsc2VuZF9idWZmZXItPmNfc3ZlcmlmeSk7CglzcHJpbnRmKG91dGJ1Zi5jX29kc3luYywiJWQiLHNlbmRfYnVmZmVyLT5jX29kc3luYyk7CglzcHJpbnRmKG91dGJ1Zi5jX2RpYWdfdiwiJWQiLHNlbmRfYnVmZmVyLT5jX2RpYWdfdik7CglzcHJpbnRmKG91dGJ1Zi5jX2RlZHVwLCIlZCIsc2VuZF9idWZmZXItPmNfZGVkdXApOwoJc3ByaW50ZihvdXRidWYuY19kZWR1cF9pbnRlcmlvciwiJWQiLHNlbmRfYnVmZmVyLT5jX2RlZHVwX2ludGVyaW9yKTsKCXNwcmludGYob3V0YnVmLmNfZGVkdXBfY29tcHJlc3MsIiVkIixzZW5kX2J1ZmZlci0+Y19kZWR1cF9jb21wcmVzcyk7CglzcHJpbnRmKG91dGJ1Zi5jX2RlZHVwX21zZWVkLCIlZCIsc2VuZF9idWZmZXItPmNfZGVkdXBfbXNlZWQpOwoJc3ByaW50ZihvdXRidWYuY19RX2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19RX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19MX2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19MX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19pbmNsdWRlX2ZsdXNoLCIlZCIsc2VuZF9idWZmZXItPmNfaW5jbHVkZV9mbHVzaCk7CglzcHJpbnRmKG91dGJ1Zi5jX09QU19mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfT1BTX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19tbWFwbnNmbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfbW1hcG5zZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX21tYXBzc2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19tbWFwc3NmbGFnKTsKCXNwcmludGYob3V0YnVmLmNfbW1hcGFzZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX21tYXBhc2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19ub19jb3B5X2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19ub19jb3B5X2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19pbmNsdWRlX2Nsb3NlLCIlZCIsc2VuZF9idWZmZXItPmNfaW5jbHVkZV9jbG9zZSk7CglzcHJpbnRmKG91dGJ1Zi5jX2Rpc3J1cHRfZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX2Rpc3J1cHRfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX2NvbXB1dGVfZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX2NvbXB1dGVfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX3hmbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfeGZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19NU19mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfTVNfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX21tYXBfbWl4LCIlZCIsc2VuZF9idWZmZXItPmNfbW1hcF9taXgpOwoJc3ByaW50ZihvdXRidWYuY19LcGx1c19mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfS3BsdXNfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX3dfdHJhal9mbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfd190cmFqX2ZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19yX3RyYWpfZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX3JfdHJhal9mbGFnKTsKCXNwcmludGYob3V0YnVmLmNfZGlyZWN0X2ZsYWcsIiVkIixzZW5kX2J1ZmZlci0+Y19kaXJlY3RfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX2NwdXV0aWxmbGFnLCIlZCIsc2VuZF9idWZmZXItPmNfY3B1dXRpbGZsYWcpOwoJc3ByaW50ZihvdXRidWYuY19zZXFfbWl4LCIlZCIsc2VuZF9idWZmZXItPmNfc2VxX21peCk7CglzcHJpbnRmKG91dGJ1Zi5jX2NsaWVudF9udW1iZXIsIiVkIixzZW5kX2J1ZmZlci0+Y19jbGllbnRfbnVtYmVyKTsKCXNwcmludGYob3V0YnVmLmNfY29tbWFuZCwiJWQiLHNlbmRfYnVmZmVyLT5jX2NvbW1hbmQpOwoJc3ByaW50ZihvdXRidWYuY190ZXN0bnVtLCIlZCIsc2VuZF9idWZmZXItPmNfdGVzdG51bSk7CglzcHJpbnRmKG91dGJ1Zi5jX25vX3VubGluaywiJWQiLHNlbmRfYnVmZmVyLT5jX25vX3VubGluayk7CglzcHJpbnRmKG91dGJ1Zi5jX25vX3dyaXRlLCIlZCIsc2VuZF9idWZmZXItPmNfbm9fd3JpdGUpOwoJc3ByaW50ZihvdXRidWYuY19maWxlX2xvY2ssIiVkIixzZW5kX2J1ZmZlci0+Y19maWxlX2xvY2spOwoJc3ByaW50ZihvdXRidWYuY19yZWNfbG9jaywiJWQiLHNlbmRfYnVmZmVyLT5jX3JlY19sb2NrKTsKCXNwcmludGYob3V0YnVmLmNfS3BsdXNfcmVhZGVycywiJWQiLHNlbmRfYnVmZmVyLT5jX0twbHVzX3JlYWRlcnMpOwoJc3ByaW50ZihvdXRidWYuY19tdWx0aXBsaWVyLCIlZCIsc2VuZF9idWZmZXItPmNfbXVsdGlwbGllcik7CglzcHJpbnRmKG91dGJ1Zi5jX3NoYXJlX2ZpbGUsIiVkIixzZW5kX2J1ZmZlci0+Y19zaGFyZV9maWxlKTsKCXNwcmludGYob3V0YnVmLmNfcGF0dGVybiwiJWQiLHNlbmRfYnVmZmVyLT5jX3BhdHRlcm4pOwoJc3ByaW50ZihvdXRidWYuY192ZXJzaW9uLCIlZCIsc2VuZF9idWZmZXItPmNfdmVyc2lvbik7CglzcHJpbnRmKG91dGJ1Zi5jX2Jhc2VfdGltZSwiJWQiLHNlbmRfYnVmZmVyLT5jX2Jhc2VfdGltZSk7CglzcHJpbnRmKG91dGJ1Zi5jX251bV9jaGlsZCwiJWQiLHNlbmRfYnVmZmVyLT5jX251bV9jaGlsZCk7CglzcHJpbnRmKG91dGJ1Zi5jX3BjdF9yZWFkLCIlZCIsc2VuZF9idWZmZXItPmNfcGN0X3JlYWQpOwoJc3ByaW50ZihvdXRidWYuY19hZHZpc2Vfb3AsIiVkIixzZW5kX2J1ZmZlci0+Y19hZHZpc2Vfb3ApOwoJc3ByaW50ZihvdXRidWYuY19hZHZpc2VfZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX2FkdmlzZV9mbGFnKTsKCXNwcmludGYob3V0YnVmLmNfcmVzdGYsIiVkIixzZW5kX2J1ZmZlci0+Y19yZXN0Zik7CiNpZmRlZiBOT19QUklOVF9MTEQKCXNwcmludGYob3V0YnVmLmNfc3RyaWRlLCIlbGQiLHNlbmRfYnVmZmVyLT5jX3N0cmlkZSk7CglzcHJpbnRmKG91dGJ1Zi5jX3Jlc3RfdmFsLCIlbGQiLHNlbmRfYnVmZmVyLT5jX3Jlc3RfdmFsKTsKCXNwcmludGYob3V0YnVmLmNfZGVsYXksIiVsZCIsc2VuZF9idWZmZXItPmNfZGVsYXkpOwoJc3ByaW50ZihvdXRidWYuY19wdXJnZSwiJWxkIixzZW5kX2J1ZmZlci0+Y19wdXJnZSk7CglzcHJpbnRmKG91dGJ1Zi5jX2ZldGNob24sIiVsZCIsc2VuZF9idWZmZXItPmNfZmV0Y2hvbik7CglzcHJpbnRmKG91dGJ1Zi5jX251bXJlY3M2NCwiJWxkIixzZW5kX2J1ZmZlci0+Y19udW1yZWNzNjQpOwoJc3ByaW50ZihvdXRidWYuY19yZWNsZW4sIiVsZCIsc2VuZF9idWZmZXItPmNfcmVjbGVuKTsKCXNwcmludGYob3V0YnVmLmNfY2hpbGRfZmxhZywiJWxkIixzZW5kX2J1ZmZlci0+Y19jaGlsZF9mbGFnKTsKCXNwcmludGYob3V0YnVmLmNfZGVsYXlfc3RhcnQsIiVsZCIsc2VuZF9idWZmZXItPmNfZGVsYXlfc3RhcnQpOwoJc3ByaW50ZihvdXRidWYuY19kZXB0aCwiJWxkIixzZW5kX2J1ZmZlci0+Y19kZXB0aCk7CiNlbHNlCglzcHJpbnRmKG91dGJ1Zi5jX2RlbGF5LCIlbGxkIixzZW5kX2J1ZmZlci0+Y19kZWxheSk7CglzcHJpbnRmKG91dGJ1Zi5jX3N0cmlkZSwiJWxsZCIsc2VuZF9idWZmZXItPmNfc3RyaWRlKTsKCXNwcmludGYob3V0YnVmLmNfcmVzdF92YWwsIiVsbGQiLHNlbmRfYnVmZmVyLT5jX3Jlc3RfdmFsKTsKCXNwcmludGYob3V0YnVmLmNfcHVyZ2UsIiVsbGQiLHNlbmRfYnVmZmVyLT5jX3B1cmdlKTsKCXNwcmludGYob3V0YnVmLmNfZmV0Y2hvbiwiJWxsZCIsc2VuZF9idWZmZXItPmNfZmV0Y2hvbik7CglzcHJpbnRmKG91dGJ1Zi5jX251bXJlY3M2NCwiJWxsZCIsc2VuZF9idWZmZXItPmNfbnVtcmVjczY0KTsKCXNwcmludGYob3V0YnVmLmNfcmVjbGVuLCIlbGxkIixzZW5kX2J1ZmZlci0+Y19yZWNsZW4pOwoJc3ByaW50ZihvdXRidWYuY19jaGlsZF9mbGFnLCIlbGxkIixzZW5kX2J1ZmZlci0+Y19jaGlsZF9mbGFnKTsKCXNwcmludGYob3V0YnVmLmNfZGVsYXlfc3RhcnQsIiVsbGQiLHNlbmRfYnVmZmVyLT5jX2RlbGF5X3N0YXJ0KTsKCXNwcmludGYob3V0YnVmLmNfZGVwdGgsIiVsbGQiLHNlbmRfYnVmZmVyLT5jX2RlcHRoKTsKI2VuZGlmCglzcHJpbnRmKG91dGJ1Zi5jX3N0b3BfZmxhZywiJWQiLHNlbmRfYnVmZmVyLT5jX3N0b3BfZmxhZyk7CglzcHJpbnRmKG91dGJ1Zi5jX2NvbXB1dGVfdGltZSwiJWYiLHNlbmRfYnVmZmVyLT5jX2NvbXB1dGVfdGltZSk7CgoJaWYobWRlYnVnID49IDEpCgkJcHJpbnRmKCJNYXN0ZXIgc2VuZGluZyBtZXNzYWdlIHRvICVzIFxuIixob3N0X25hbWUpOwogICAgICAgIC8qcmMgPSBzZW5kKGNoaWxkX3NvY2tldF92YWwsIChjaGFyICopJm91dGJ1Ziwgc2l6ZW9mKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kKSwgMCk7Ki8KICAgICAgICByYyA9IHdyaXRlKGNoaWxkX3NvY2tldF92YWwsIChjaGFyICopJm91dGJ1Ziwgc2l6ZW9mKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kKSk7CiAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIndyaXRlIGZhaWxlZFxuIik7CiAgICAgICAgICAgICAgICBleGl0KDI2KTsKICAgICAgICB9Cn0KCi8qCiAqIENsaWVudCBzZXR0aW5nIHVwIHRoZSBjaGFubmVsIGZvciBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBtYXN0ZXIuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmludApzdGFydF9jaGlsZF9zZW5kKGNoYXIgKmNvbnRyb2xsaW5nX2hvc3RfbmFtZSkKI2Vsc2UKaW50CnN0YXJ0X2NoaWxkX3NlbmQoY29udHJvbGxpbmdfaG9zdF9uYW1lKQpjaGFyICpjb250cm9sbGluZ19ob3N0X25hbWU7CiNlbmRpZgp7CglpbnQgcmMsY2hpbGRfc29ja2V0X3ZhbDsKCWludCBlY291bnQgPSAwOwoJc3RydWN0IHNvY2thZGRyX2luIGFkZHIscmFkZHI7CglzdHJ1Y3QgaG9zdGVudCAqaGU7CglpbnQgdG1wX3BvcnQ7CglzdHJ1Y3QgaW5fYWRkciAqaXA7CiAgICAgICAgaW50IGhvc3RfcG9ydCA9IEhPU1RfTElTVF9QT1JUOwogICAgICAgIGNoYXIgKnBvcnRfcHRyOwoKICAgICAgICAvKiBkZXRlY3QgaG9zdDpwb3J0IGNvbWJpbmF0aW9uLCBzdHJpcCBvZmYgdGhlIHBvcnQgKi8KICAgICAgIGlmICgocG9ydF9wdHIgPSBzdHJjaHIoY29udHJvbGxpbmdfaG9zdF9uYW1lLCAnOicpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgIGhvc3RfcG9ydCA9IGF0b2kocG9ydF9wdHIrMSk7CiAgICAgICAgICAgICAgIHBvcnRfcHRyWzBdID0gJ1wwJzsKICAgICAgIH0KCiAgICAgICAgaGUgPSBnZXRob3N0YnluYW1lKGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7CiAgICAgICAgaWYgKGhlID09IE5VTEwpCiAgICAgICAgewoJCWlmKGNkZWJ1ZykKCQl7CiAgICAgICAgICAgICAgICAgICBwcmludGYoIkNoaWxkICVkOiBCYWQgc2VydmVyIGhvc3QgJXNcbiIsKGludCljaGlkLCBjb250cm9sbGluZ19ob3N0X25hbWUpOwoJCSAgIGZmbHVzaChzdGRvdXQpOwoJCX0KICAgICAgICAgICAgICAgIGV4aXQoMjIpOwogICAgICAgIH0KCWlmKGNkZWJ1ZyA9PTEpCgl7CgkgICAgICAgIHByaW50ZigiQ2hpbGQgJWQ6IHN0YXJ0IGNoaWxkIHNlbmQgdG8gaG9zdG5hbWU6ICVzXG4iLChpbnQpY2hpZCwgaGUtPmhfbmFtZSk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiAgICAgICAgaXAgPSAoc3RydWN0IGluX2FkZHIgKiloZS0+aF9hZGRyX2xpc3RbMF07CiNpZm5kZWYgVVdJTgoJaWYoY2RlYnVnID09MSkKCXsKICAgICAgICAJcHJpbnRmKCJDaGlsZCAlZDogc2VydmVyIGhvc3Q6ICVzXG4iLChpbnQpY2hpZCwgKGNoYXIgKilpbmV0X250b2EoKmlwKSk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiNlbmRpZgoKICAgICAgICByYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKCS8qcmFkZHIuc2luX3BvcnQgPSBodG9ucyhIT1NUX0xJU1RfUE9SVCk7Ki8KICAgICAgICByYWRkci5zaW5fcG9ydCA9IGh0b25zKGhvc3RfcG9ydCk7CiAgICAgICAgcmFkZHIuc2luX2FkZHIuc19hZGRyID0gaXAtPnNfYWRkcjsKICAgICAgICBjaGlsZF9zb2NrZXRfdmFsID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOwogICAgICAgIGlmIChjaGlsZF9zb2NrZXRfdmFsIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIkNoaWxkOiBzb2NrZXQgZmFpbGVkOiIpOwogICAgICAgICAgICAgICAgZXhpdCgyMyk7CiAgICAgICAgfQogICAgICAgIGJ6ZXJvKCZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Cgl0bXBfcG9ydD1DSElMRF9FU0VORF9QT1JUOwogICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAgICAgcmMgPSAtMTsKICAgICAgICB3aGlsZSAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJjID0gYmluZChjaGlsZF9zb2NrZXRfdmFsLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCQlpZihyYyA8IDApCgkJewoJCQl0bXBfcG9ydCsrOwogICAgICAgICAgICAgICAgCWFkZHIuc2luX3BvcnQ9aHRvbnModG1wX3BvcnQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgfQoJaWYoY2RlYnVnID09MSkKCXsKCQlwcmludGYoIkNoaWxkICVkOiBCb3VuZCB0byBob3N0IHBvcnQgJWRcbiIsKGludCljaGlkLCB0bXBfcG9ydCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIkNoaWxkOiBiaW5kIGZhaWxlZFxuIik7CiAgICAgICAgICAgICAgICBleGl0KDI0KTsKICAgICAgICB9CmFnYWluOgogICAgICAgIHJjID0gCgkJY29ubmVjdChjaGlsZF9zb2NrZXRfdmFsLCAoc3RydWN0IHNvY2thZGRyICopJnJhZGRyLCAKCQkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJICAgICAgICBpZiAocmMgPCAwKQogICAgICAgIHsKCQlpZihlY291bnQrKzwzMDApCgkJewoJCQlzbGVlcCgxKTsKCQkJZ290byBhZ2FpbjsKCQl9CiAgICAgICAgICAgICAgICBwZXJyb3IoIkNoaWxkOiBjb25uZWN0IGZhaWxlZFxuIik7CiAgICAgICAgICAgICAgICBleGl0KDI1KTsKICAgICAgICB9CglpZihjZGVidWcgPT0xKQoJewoJCXByaW50ZigiQ2hpbGQgJWQgQ29ubmVjdGVkXG4iLChpbnQpY2hpZCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CglyZXR1cm4gKGNoaWxkX3NvY2tldF92YWwpOwp9CgovKgogKiBDbG9zZSB0aGUgY2hpbGRzIGxpc3RlbmluZyBwb3J0IGZvciBtZXNzYWdlcyBmcm9tIHRoZSBtYXN0ZXIuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3RvcF9jaGlsZF9saXN0ZW4oaW50IGNoaWxkX3NvY2tldF92YWwpCiNlbHNlCnZvaWQKc3RvcF9jaGlsZF9saXN0ZW4oY2hpbGRfc29ja2V0X3ZhbCkKaW50IGNoaWxkX3NvY2tldF92YWw7CiNlbmRpZgp7CgljbG9zZShjaGlsZF9zb2NrZXRfdmFsKTsKfQoKLyoKICogQ2xvc2UgdGhlIGNoaWxkcyBjaGFubmVsIGZvciBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBtYXN0ZXIuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3RvcF9jaGlsZF9zZW5kKGludCBjaGlsZF9zb2NrZXRfdmFsKQojZWxzZQp2b2lkCnN0b3BfY2hpbGRfc2VuZChjaGlsZF9zb2NrZXRfdmFsKQppbnQgY2hpbGRfc29ja2V0X3ZhbDsKI2VuZGlmCnsKCWNsb3NlKGNoaWxkX3NvY2tldF92YWwpOwp9CgovKgogKiBDbG9zZSB0aGUgbWFzdGVycyBsaXN0ZW5pbmcgY2hhbm5lbCBmb3IgYWxsIGNsaWVudHMgbWVzc2FnZXMuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3RvcF9tYXN0ZXJfbGlzdGVuKGludCBtYXN0ZXJfc29ja2V0X3ZhbCkKI2Vsc2UKdm9pZApzdG9wX21hc3Rlcl9saXN0ZW4obWFzdGVyX3NvY2tldF92YWwpCmludCBtYXN0ZXJfc29ja2V0X3ZhbDsKI2VuZGlmCnsKCWNsb3NlKG1hc3Rlcl9zb2NrZXRfdmFsKTsKfQoKLyoKICogQ2xvc2UgdGhlIG1hc3RlcnMgc2VuZCBjaGFubmVsIGEgcGFydGljdWxhciBjaGlsZC4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApzdG9wX21hc3Rlcl9zZW5kKGludCBjaGlsZF9zb2NrZXRfdmFsKQojZWxzZQp2b2lkCnN0b3BfbWFzdGVyX3NlbmQoY2hpbGRfc29ja2V0X3ZhbCkKaW50IGNoaWxkX3NvY2tldF92YWw7CiNlbmRpZgp7CgljbG9zZShjaGlsZF9zb2NrZXRfdmFsKTsKfQoKLyoKICogU3RhcnQgdGhlIGNoaWxkcyBsaXN0ZW5pbmcgc2VydmljZSBmb3IgbWVzc2FnZXMgZnJvbSB0aGUgbWFzdGVyLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKc3RhcnRfY2hpbGRfbGlzdGVuKGludCBzaXplX29mX21lc3NhZ2UpCiNlbHNlCmludApzdGFydF9jaGlsZF9saXN0ZW4oc2l6ZV9vZl9tZXNzYWdlKQppbnQgc2l6ZV9vZl9tZXNzYWdlOwojZW5kaWYKewoJaW50IHRzaXplOwoJaW50IHM7CglpbnQgcmM7CglpbnQgeHg7CglpbnQgdG1wX3BvcnQ7CglpbnQgc29ja2VycjsKCWludCByZWN2X2J1Zl9zaXplPTY1NTM2OwoJeHggPSAwOwoJdHNpemU9c2l6ZV9vZl9tZXNzYWdlOyAvKiBOdW1iZXIgb2YgbWVzc2FnZXMgdG8gcmVjZWl2ZSAqLwogICAgICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogICAgICAgIGlmIChzIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoInNvY2tldCBmYWlsZWQ6Iik7CiAgICAgICAgICAgICAgICBleGl0KDE5KTsKICAgICAgICB9Cglzb2NrZXJyID0gc2V0c29ja29wdCAocywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAoY2hhciAqKQoJCSZyZWN2X2J1Zl9zaXplLCBzaXplb2YoaW50KSk7CglpZiAoIHNvY2tlcnIgPT0gLTEgKSB7CgkJcGVycm9yKCJFcnJvciBpbiBzZXRzb2Nrb3B0XG4iKTsKCX0KICAgICAgICBiemVybygmY2hpbGRfc3luY19zb2NrLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Cgl0bXBfcG9ydD1DSElMRF9MSVNUX1BPUlQrY2hpZDsKICAgICAgICBjaGlsZF9zeW5jX3NvY2suc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgY2hpbGRfc3luY19zb2NrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgIGNoaWxkX3N5bmNfc29jay5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwogICAgICAgIHJjID0gLTE7CiAgICAgICAgd2hpbGUgKHJjIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICByYyA9IGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSZjaGlsZF9zeW5jX3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJCWlmKHJjIDwgMCkKCQl7CgkJCXRtcF9wb3J0Kys7CiAgICAgICAgICAgICAgICAJY2hpbGRfc3luY19zb2NrLnNpbl9wb3J0PWh0b25zKHRtcF9wb3J0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgIH0KCWNoaWxkX3BvcnQgPSBudG9ocyhjaGlsZF9zeW5jX3NvY2suc2luX3BvcnQpOwoJaWYoY2RlYnVnID09MSkKCXsKCQlwcmludGYoIkNoaWxkICVkOiBMaXN0ZW46IEJvdW5kIGF0IHBvcnQgJWRcbiIsKGludCljaGlkLCB0bXBfcG9ydCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CglpZihyYyA8IDApCgl7CgkJcGVycm9yKCJiaW5kIGZhaWxlZFxuIik7CgkJZXhpdCgyMCk7Cgl9CglyZXR1cm4ocyk7Cn0KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKY2hpbGRfYXR0YWNoKGludCBzLCBpbnQgZmxhZykKI2Vsc2UKaW50CmNoaWxkX2F0dGFjaChzLCBmbGFnKQppbnQgcyxmbGFnOwojZW5kaWYKewoJdW5zaWduZWQgaW50IG1lOwoJaW50IG5zOwoJc3RydWN0IHNvY2thZGRyX2luICphZGRyOwoJaWYoZmxhZykKCXsKCQlhZGRyPSZjaGlsZF9hc3luY19zb2NrOwoJCWlmKGNkZWJ1ZykKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgYXR0YWNoIGFzeW5jXG4iLChpbnQpY2hpZCk7CgkJCWZmbHVzaChzdGRvdXQpOwoJCX0KCX0KCWVsc2UKCXsKCQlhZGRyPSZjaGlsZF9zeW5jX3NvY2s7CgkJaWYoY2RlYnVnKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBhdHRhY2ggc3luY1xuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9Cgl9CgltZT1zaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKCWlmKGNkZWJ1ZykKCXsKCQlwcmludGYoIkNoaWxkICVkIGVudGVycyBsaXN0ZW5cbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCWxpc3RlbihzLDEwKTsKCWlmKGNkZWJ1ZykKCXsKCQlwcmludGYoIkNoaWxkICVkIGVudGVycyBhY2NlcHRcbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCW5zPWFjY2VwdChzLCh2b2lkICopYWRkciwmbWUpOwoJaWYoY2RlYnVnKQoJewoJCXByaW50ZigiQ2hpbGQgJWQgYXR0YWNoZWQgZm9yIHJlY2VpdmUuIFNvY2sgJWQgICVkXG4iLChpbnQpY2hpZCwgbnMsZXJybm8pOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJcmV0dXJuKG5zKTsKfQoJCgovKgogKiBUaGUgY2xpZW50cyB1c2UgdGhpcyB0byBibG9jayB3YWl0aW5nIGZvciBhIG1lc3NhZ2UgZnJvbQogKiB0aGUgbWFzdGVyLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmNoaWxkX2xpc3RlbihpbnQgc29jaywgaW50IHNpemVfb2ZfbWVzc2FnZSkKI2Vsc2UKdm9pZApjaGlsZF9saXN0ZW4oc29jaywgc2l6ZV9vZl9tZXNzYWdlKQppbnQgc29jaywgc2l6ZV9vZl9tZXNzYWdlOwojZW5kaWYKewoJaW50IHRzaXplOwoJaW50IHJjdmQ7CglpbnQgczsKCWludCByYzsKCWNoYXIgKmNuYzsKCgljbmMgPSAoY2hhciAqKSZjaGlsZF9yY3ZfYnVmWzBdOwoJYnplcm8oY25jLCBzaXplb2YoY2hpbGRfcmN2X2J1ZikpOwoJcyA9IHNvY2s7Cgl0c2l6ZT1zaXplX29mX21lc3NhZ2U7IC8qIE51bWJlciBvZiBtZXNzYWdlcyB0byByZWNlaXZlICovCglyY3ZkID0gMDsKCXdoaWxlKHJjdmQgPCB0c2l6ZSkKCXsKCQlpZihjZGVidWcgPT0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBJbiByZWNpZXZlIFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJLypyYz1yZWN2KHMsY2hpbGRfcmN2X2J1ZixzaXplX29mX21lc3NhZ2UsMCk7Ki8KCQlyYz1yZWFkKHMsY25jLHNpemVfb2ZfbWVzc2FnZSk7CgkJaWYocmMgPCAwKQoJCXsKCQkJcGVycm9yKCJSZWFkIGZhaWxlZFxuIik7CgkJCWV4aXQoMjEpOwoJCX0KCQlpZihjZGVidWcgPj0gMSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQ6IEdvdCAlZCBieXRlc1xuIiwoaW50KWNoaWQsIHJjKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXJjdmQrPXJjOwoJCWNuYys9cmM7Cgl9CglpZihjZGVidWcgPj0gMSkKCXsKCQlwcmludGYoIkNoaWxkICVkOiByZXR1cm4gZnJvbSBsaXN0ZW5cbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KfQovKgogKiBTdGFydCB0aGUgY2hpbGRzIGFzeW5jIGxpc3RlbmluZyBzZXJ2aWNlIGZvciBtZXNzYWdlcyBmcm9tIHRoZSBtYXN0ZXIuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmludApzdGFydF9jaGlsZF9saXN0ZW5fYXN5bmMoaW50IHNpemVfb2ZfbWVzc2FnZSkKI2Vsc2UKaW50CnN0YXJ0X2NoaWxkX2xpc3Rlbl9hc3luYyhzaXplX29mX21lc3NhZ2UpCmludCBzaXplX29mX21lc3NhZ2U7CiNlbmRpZgp7CglpbnQgdHNpemU7CglpbnQgczsKCWludCByYzsKCWludCB4eDsKCWludCB0bXBfcG9ydDsKCWludCBzb2NrZXJyOwoJaW50IHJlY3ZfYnVmX3NpemU9NjU1MzY7Cgl4eCA9IDA7Cgl0c2l6ZT1zaXplX29mX21lc3NhZ2U7IC8qIE51bWJlciBvZiBtZXNzYWdlcyB0byByZWNlaXZlICovCiAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CiAgICAgICAgaWYgKHMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBlcnJvcigic29ja2V0IGZhaWxlZDoiKTsKICAgICAgICAgICAgICAgIGV4aXQoMTkpOwogICAgICAgIH0KCXNvY2tlcnIgPSBzZXRzb2Nrb3B0IChzLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIChjaGFyICopCgkJJnJlY3ZfYnVmX3NpemUsIHNpemVvZihpbnQpKTsKCWlmICggc29ja2VyciA9PSAtMSApIHsKCQlwZXJyb3IoIkVycm9yIGluIHNldHNvY2tvcHRcbiIpOwoJfQogICAgICAgIGJ6ZXJvKCZjaGlsZF9hc3luY19zb2NrLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Cgl0bXBfcG9ydD1DSElMRF9BTElTVF9QT1JUOwogICAgICAgIGNoaWxkX2FzeW5jX3NvY2suc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgY2hpbGRfYXN5bmNfc29jay5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBjaGlsZF9hc3luY19zb2NrLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAgICAgcmMgPSAtMTsKICAgICAgICB3aGlsZSAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJjID0gYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJmNoaWxkX2FzeW5jX3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJCWlmKHJjIDwgMCkKCQl7CgkJCXRtcF9wb3J0Kys7CiAgICAgICAgICAgICAgICAJY2hpbGRfYXN5bmNfc29jay5zaW5fcG9ydD1odG9ucyh0bXBfcG9ydCk7CgkJCWNvbnRpbnVlOwoJCX0KICAgICAgICB9CgljaGlsZF9hc3luY19wb3J0ID0gbnRvaHMoY2hpbGRfYXN5bmNfc29jay5zaW5fcG9ydCk7CglpZihjZGVidWcgPT0xKQoJewoJCXByaW50ZigiQ2hpbGQgJWQ6IEFzeW5jIExpc3RlbjogQm91bmQgYXQgcG9ydCAlZFxuIiwoaW50KWNoaWQsdG1wX3BvcnQpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJaWYocmMgPCAwKQoJewoJCXBlcnJvcigiYmluZCBmYWlsZWRcbiIpOwoJCWV4aXQoMjApOwoJfQoJcmV0dXJuKHMpOwp9Ci8qCiAqIFRoZSBjbGllbnRzIHVzZSB0aGlzIHRvIGJsb2NrIHdhaXRpbmcgZm9yIGFuIGFzeW5jIG1lc3NhZ2UgZnJvbQogKiB0aGUgbWFzdGVyLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmNoaWxkX2xpc3Rlbl9hc3luYyhpbnQgc29jaywgaW50IHNpemVfb2ZfbWVzc2FnZSkKI2Vsc2UKdm9pZApjaGlsZF9saXN0ZW5fYXN5bmMoc29jaywgc2l6ZV9vZl9tZXNzYWdlKQppbnQgc29jaywgc2l6ZV9vZl9tZXNzYWdlOwojZW5kaWYKewoJaW50IHRzaXplOwoJaW50IHJjdmQ7CglpbnQgczsKCWludCByYzsKCWNoYXIgKmNuYzsKCgljbmMgPSAmY2hpbGRfYXN5bmNfcmN2X2J1ZlswXTsKCXMgPSBzb2NrOwoJdHNpemU9c2l6ZV9vZl9tZXNzYWdlOyAvKiBOdW1iZXIgb2YgbWVzc2FnZXMgdG8gcmVjZWl2ZSAqLwoJcmN2ZCA9IDA7Cgl3aGlsZShyY3ZkIDwgdHNpemUpCgl7CgkJaWYoY2RlYnVnID09MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgSW4gYXN5bmMgcmVjaWV2ZSBcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCS8qcmM9cmVjdihzLGNoaWxkX2FzeW5jX3Jjdl9idWYsc2l6ZV9vZl9tZXNzYWdlLDApOyovCgkJcmM9cmVhZChzLGNuYyxzaXplX29mX21lc3NhZ2UpOwoJCWlmKHJjIDwgMCkKCQl7CgkJCXBlcnJvcigiUmVhZCBmYWlsZWRcbiIpOwoJCQlleGl0KDIxKTsKCQl9CgkJaWYoY2RlYnVnID49IDEpCgkJewoJCQlwcmludGYoIkNoaWxkICVkOiBHb3QgJWQgYnl0ZXMgKGFzeW5jKSBcbiIsKGludCljaGlkLHJjKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXJjdmQrPXJjOwoJCWNuYys9cmM7Cgl9CglpZihjZGVidWcgPj0gMSkKCXsKCQlwcmludGYoIkNoaWxkICVkOiByZXR1cm4gZnJvbSBhc3luYyBsaXN0ZW5cbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KfQoKLyoKICogU3RhcnQgdGhlIGNoYW5uZWwgZm9yIHRoZSBtYXN0ZXIgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gCiAqIGEgcGFydGljdWxhciBjaGlsZCBvbiBhIHBhcnRpY3VsYXIgcG9ydCB0aGF0IHRoZSBjaGlsZAogKiBoYXMgY3JlYXRlZCBmb3IgdGhlIHBhcmVudCB0byB1c2UgdG8gY29tbXVuaWNhdGUuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmludApzdGFydF9tYXN0ZXJfc2VuZChjaGFyICpjaGlsZF9ob3N0X25hbWUsIGludCBjaGlsZF9wb3J0LCBzdHJ1Y3QgaW5fYWRkciAqbXlfc19hZGRyKQojZWxzZQppbnQKc3RhcnRfbWFzdGVyX3NlbmQoY2hpbGRfaG9zdF9uYW1lLCBjaGlsZF9wb3J0LCBteV9zX2FkZHIpCmNoYXIgKmNoaWxkX2hvc3RfbmFtZTsgCmludCBjaGlsZF9wb3J0OwpzdHJ1Y3QgaW5fYWRkciAqbXlfc19hZGRyOwojZW5kaWYKewoJaW50IHJjLG1hc3Rlcl9zb2NrZXRfdmFsOwoJc3RydWN0IHNvY2thZGRyX2luIGFkZHIscmFkZHI7CglzdHJ1Y3QgaG9zdGVudCAqaGU7CglpbnQgcG9ydCx0bXBfcG9ydDsKCWludCBlY291bnQgPSAwOwoJc3RydWN0IGluX2FkZHIgKmlwOwogICAgICAgIGhlID0gZ2V0aG9zdGJ5bmFtZShjaGlsZF9ob3N0X25hbWUpOwogICAgICAgIGlmIChoZSA9PSBOVUxMKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiTWFzdGVyOiBCYWQgaG9zdG5hbWUgPiVzPFxuIixjaGlsZF9ob3N0X25hbWUpOwoJCWZmbHVzaChzdGRvdXQpOwogICAgICAgICAgICAgICAgZXhpdCgyMik7CiAgICAgICAgfQoJaWYobWRlYnVnID09MSkKCXsKCSAgICAgICAgcHJpbnRmKCJNYXN0ZXI6IHN0YXJ0IG1hc3RlciBzZW5kOiAlc1xuIiwgaGUtPmhfbmFtZSk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiAgICAgICAgaXAgPSAoc3RydWN0IGluX2FkZHIgKiloZS0+aF9hZGRyX2xpc3RbMF07CiNpZm5kZWYgVVdJTgoJaWYobWRlYnVnID09MSkKCXsKICAgICAgICAJcHJpbnRmKCJNYXN0ZXI6IGNoaWxkIG5hbWU6ICVzXG4iLCAoY2hhciAqKWluZXRfbnRvYSgqaXApKTsKICAgICAgICAJcHJpbnRmKCJNYXN0ZXI6IGNoaWxkIFBvcnQ6ICVkXG4iLCBjaGlsZF9wb3J0KTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KI2VuZGlmCgoJcG9ydD1jaGlsZF9wb3J0OwoJbXlfc19hZGRyLT5zX2FkZHIgPSBpcC0+c19hZGRyOwoJLypwb3J0PUNISUxEX0xJU1RfUE9SVDsqLwoKICAgICAgICByYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICByYWRkci5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOwogICAgICAgIHJhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGlwLT5zX2FkZHI7CiAgICAgICAgbWFzdGVyX3NvY2tldF92YWwgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogICAgICAgIGlmIChtYXN0ZXJfc29ja2V0X3ZhbCA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcGVycm9yKCJNYXN0ZXI6IHNvY2tldCBmYWlsZWQ6Iik7CiAgICAgICAgICAgICAgICBleGl0KDIzKTsKICAgICAgICB9CiAgICAgICAgYnplcm8oJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCXRtcF9wb3J0PUhPU1RfRVNFTkRfUE9SVDsKICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnModG1wX3BvcnQpOwogICAgICAgIGFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICAgICAgYWRkci5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwogICAgICAgIHJjID0gLTE7CiAgICAgICAgd2hpbGUgKHJjIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICByYyA9IGJpbmQobWFzdGVyX3NvY2tldF92YWwsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJCWlmKHJjIDwgMCkKCQl7CgkJCXRtcF9wb3J0Kys7CiAgICAgICAgICAgICAgICAJYWRkci5zaW5fcG9ydD1odG9ucyh0bXBfcG9ydCk7CgkJCWNvbnRpbnVlOwoJCX0KICAgICAgICB9CglpZihtZGVidWcgPT0xKQoJewoJCXByaW50ZigiTWFzdGVyOiBCb3VuZCBwb3J0XG4iKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KICAgICAgICBpZiAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBlcnJvcigiTWFzdGVyOiBiaW5kIGZhaWxlZCBmb3Igc3luYyBjaGFubmVsIHRvIGNoaWxkLlxuIik7CiAgICAgICAgICAgICAgICBleGl0KDI0KTsKICAgICAgICB9CmFnYWluOgogICAgICAgIHJjID0gY29ubmVjdChtYXN0ZXJfc29ja2V0X3ZhbCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyYWRkciwgCgkJCXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCWlmIChyYyA8IDApCiAgICAgICAgewoJCWlmKGVjb3VudCsrIDwgMzAwKQoJCXsKCQkJc2xlZXAoMSk7CgkJCWdvdG8gYWdhaW47CgkJfQogICAgICAgICAgICAgICAgcGVycm9yKCJNYXN0ZXI6IGNvbm5lY3QgZmFpbGVkXG4iKTsKCQlwcmludGYoIkVycm9yICVkXG4iLGVycm5vKTsKICAgICAgICAgICAgICAgIGV4aXQoMjUpOwogICAgICAgIH0KCWlmKG1kZWJ1ZyA9PTEpCgl7CgkJcHJpbnRmKCJNYXN0ZXIgQ29ubmVjdGVkXG4iKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCXJldHVybiAobWFzdGVyX3NvY2tldF92YWwpOwp9Ci8qCiAqIFN0YXJ0IHRoZSBjaGFubmVsIGZvciB0aGUgbWFzdGVyIHRvIHNlbmQgYSBtZXNzYWdlIHRvIAogKiBhIHBhcnRpY3VsYXIgY2hpbGQgb24gYSBwYXJ0aWN1bGFyIHBvcnQgdGhhdCB0aGUgY2hpbGQKICogaGFzIGNyZWF0ZWQgZm9yIHRoZSBwYXJlbnQgdG8gdXNlIHRvIGNvbW11bmljYXRlLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKc3RhcnRfbWFzdGVyX3NlbmRfYXN5bmMoY2hhciAqY2hpbGRfaG9zdF9uYW1lLCBpbnQgY2hpbGRfcG9ydCwgc3RydWN0IGluX2FkZHIgbXlfc19hZGRyKQojZWxzZQppbnQKc3RhcnRfbWFzdGVyX3NlbmRfYXN5bmMoY2hpbGRfaG9zdF9uYW1lLCBjaGlsZF9wb3J0LCBteV9zX2FkZHIpCmNoYXIgKmNoaWxkX2hvc3RfbmFtZTsgCmludCBjaGlsZF9wb3J0OwpzdHJ1Y3QgaW5fYWRkciBteV9zX2FkZHI7CiNlbmRpZgp7CglpbnQgcmMsbWFzdGVyX3NvY2tldF92YWw7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcixyYWRkcjsKCWludCBwb3J0LHRtcF9wb3J0OwoJaW50IGVjb3VudCA9IDA7CgoJcG9ydD1jaGlsZF9wb3J0OwoJLyogU2lsbHksIGZyYWdpbGUgc29ja2V0IGNvZGUuLi4gU2xlZXAgMSBzZWMgaGVyZQogCSAqIG9yIHNvbWUgYWNjZXB0KCkvY29ubmVjdCgpIHBhaXJzIHdpbGwgaGFuZyAKCSAqIGFuZCBmYWlsLiBnb3NoLCBhaW4ndCBhIHN0YW5kYXJkIEFQSSBmdW4gISEKCSAqLwoJc2xlZXAoMSk7CgogICAgICAgIHJhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgIHJhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CiAgICAgICAgcmFkZHIuc2luX2FkZHIuc19hZGRyID0gbXlfc19hZGRyLnNfYWRkcjsKICAgICAgICBtYXN0ZXJfc29ja2V0X3ZhbCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CiAgICAgICAgaWYgKG1hc3Rlcl9zb2NrZXRfdmFsIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIk1hc3RlcjogYXN5bmMgc29ja2V0IGZhaWxlZDoiKTsKICAgICAgICAgICAgICAgIGV4aXQoMjMpOwogICAgICAgIH0KICAgICAgICBiemVybygmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJdG1wX3BvcnQ9SE9TVF9BU0VORF9QT1JUOwogICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAgICAgcmMgPSAtMTsKICAgICAgICB3aGlsZSAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJjID0gYmluZChtYXN0ZXJfc29ja2V0X3ZhbCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CgkJaWYocmMgPCAwKQoJCXsKCQkJdG1wX3BvcnQrKzsKICAgICAgICAgICAgICAgIAlhZGRyLnNpbl9wb3J0PWh0b25zKHRtcF9wb3J0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgIH0KCWlmKG1kZWJ1ZyA9PTEpCgl7CgkJcHJpbnRmKCJNYXN0ZXI6IEJvdW5kIGFzeW5jIHBvcnRcbiIpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQogICAgICAgIGlmIChyYyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcGVycm9yKCJNYXN0ZXI6IGJpbmQgYXN5bmMgZmFpbGVkXG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMjQpOwogICAgICAgIH0KYWdhaW46CiAgICAgICAgcmMgPSBjb25uZWN0KG1hc3Rlcl9zb2NrZXRfdmFsLCAoc3RydWN0IHNvY2thZGRyICopJnJhZGRyLCAKCQkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJaWYgKHJjIDwgMCkKICAgICAgICB7CgkJaWYoZWNvdW50KysgPCAzMDApCgkJewoJCQlzbGVlcCgxKTsKCQkJZ290byBhZ2FpbjsKCQl9CiAgICAgICAgICAgICAgICBwZXJyb3IoIk1hc3RlcjogYXN5bmMgY29ubmVjdCBmYWlsZWRcbiIpOwogICAgICAgICAgICAgICAgZXhpdCgyNSk7CiAgICAgICAgfQoJaWYobWRlYnVnID09MSkKCXsKCQlwcmludGYoIk1hc3RlciBhc3luYyBDb25uZWN0ZWRcbiIpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJcmV0dXJuIChtYXN0ZXJfc29ja2V0X3ZhbCk7Cn0KCi8qCiAqIElmIG5vdCAiZGlzdHJpYnV0ZWQiIHRoZW4gY2FsbCBmb3JrLiBUaGUgImRpc3RyaWJ1dGVkIgogKiB3aWxsIHN0YXJ0IGlvem9uZSBvbiBhIHJlbW90ZSBub2RlLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwpsb25nIGxvbmcKc3RhcnRfY2hpbGRfcHJvYyhpbnQgdGVzdG51bSxsb25nIGxvbmcgbnVtcmVjczY0LCBsb25nIGxvbmcgcmVjbGVuKQojZWxzZQpsb25nIGxvbmcKc3RhcnRfY2hpbGRfcHJvYyh0ZXN0bnVtLCBudW1yZWNzNjQsIHJlY2xlbikKaW50IHRlc3RudW07CmxvbmcgbG9uZyBudW1yZWNzNjQsIHJlY2xlbjsKI2VuZGlmCnsKCWxvbmcgbG9uZyB4OwoJaWYoZGlzdHJpYnV0ZWQgJiYgbWFzdGVyX2lvem9uZSkKCXsKCQl4PShsb25nIGxvbmcpcGlja19jbGllbnQodGVzdG51bSxudW1yZWNzNjQsIHJlY2xlbik7Cgl9CgllbHNlCgl7CgkJeD0obG9uZyBsb25nKWZvcmsoKTsKCX0KCWlmKG1kZWJ1ZykKCQlwcmludGYoIlN0YXJ0aW5nIHByb2MgJWRcbiIsKGludCl4KTsJCglyZXR1cm4oeCk7Cn0JCgovKgogKiBUaGlzIGZ1bmN0aW9uIHBpY2tzIGEgY2xpZW50IGZyb20gdGhlIGxpc3Qgb2YgY2xpZW50cyBhbmQKICogc3RhcnRzIGl0IHJ1bm5pbmcgb24gdGhlIHJlbW90ZSBtYWNoaW5lLiBJdCBhbHNvIHdhaXRzIGZvcgogKiB0aGUgcmVtb3RlIHByb2Nlc3MgdG8gam9pbiBhbmQgdGhlbiBzZW5kcyB0aGUgY2xpZW50CiAqIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBpdCBuZWVkcyB0byBiZWdpbiB0byBydW4gdGhlIAogKiB0ZXN0LiBUaGUgY2xpZW50IHdpbGwgaW5pdGlhbGl6ZSBpdHMgc3RhdGUgc3BhY2UsIAogKiBiZWdpbiB0aGUgdGVzdCBhbmQgYmxvY2sgYXMgdGhlIGJhcnJpZXIgd2FpdGluZwogKiBmb3IgdGhlIG1hc3RlciB0byBzYXkgZ28uCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmludApwaWNrX2NsaWVudChpbnQgdGVzdG51bSxsb25nIGxvbmcgbnVtcmVjczY0LCBsb25nIGxvbmcgcmVjbGVuKQojZWxzZQppbnQKcGlja19jbGllbnQodGVzdG51bSwgbnVtcmVjczY0LCByZWNsZW4pCmludCB0ZXN0bnVtOwpsb25nIGxvbmcgbnVtcmVjczY0LCByZWNsZW47CiNlbmRpZgp7CglpbnQgeDsKCWludCBjX2NvbW1hbmQsY2hpbGRfaW5kZXg7CglzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgY2M7CglzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQgbWM7CglzdHJ1Y3QgbWFzdGVyX25ldXRyYWxfY29tbWFuZCAqbW5jOwoJY2hhciBjb21tYW5kWzUxMl07CglzdHJ1Y3QgaW5fYWRkciBteV9zX2FkZHI7CgljaGFyIG15X3BvcnRfbnVtWzEwXTsKCgoJYnplcm8oJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCWZvcih4PTA7eDw1MTI7eCsrKQoJCWNvbW1hbmRbeF09MDsKCgljdXJyZW50X2NsaWVudF9udW1iZXIrKzsgLyogTmVlZCB0byBzdGFydCB3aXRoIDEgKi8KCXg9Y3VycmVudF9jbGllbnRfbnVtYmVyOwoKCWNoaWxkX2lkZW50c1t4LTFdLnN0YXRlID0gQ19TVEFURV9aRVJPOwoJLyogU3RlcCAxLiBOb3cgc3RhcnQgY2xpZW50IGdvaW5nIG9uIHJlbW90ZSBub2RlLgkqLwoKCWZpbmRfcmVtb3RlX3NoZWxsKHJlbW90ZV9zaGVsbCk7CglzcHJpbnRmKGNvbW1hbmQsIiVzICIscmVtb3RlX3NoZWxsKTsKCXN0cmNhdChjb21tYW5kLGNoaWxkX2lkZW50c1t4LTFdLmNoaWxkX25hbWUpOwoJc3RyY2F0KGNvbW1hbmQsIiAtbiAnIik7CglzdHJjYXQoY29tbWFuZCxjaGlsZF9pZGVudHNbeC0xXS5leGVjdXRlX3BhdGgpOwoJc3RyY2F0KGNvbW1hbmQsIiAtK3MgLXQgMSAtciA0IC1zIDQgLStjICIpOwoJc3RyY2F0KGNvbW1hbmQsY29udHJvbGxpbmdfaG9zdF9uYW1lKTsKICAgICAgICBpZiAobWFzdGVyX2xpc3Rlbl9wb3J0ICE9IEhPU1RfTElTVF9QT1JUKQogICAgICAgIHsKICAgICAgICAgIHNwcmludGYobXlfcG9ydF9udW0sIjolMDF1IixtYXN0ZXJfbGlzdGVuX3BvcnQpOwogICAgICAgICAgc3RyY2F0KGNvbW1hbmQsbXlfcG9ydF9udW0pOwogICAgICAgIH0KCXN0cmNhdChjb21tYW5kLCIgJyIpOwoJc3lzdGVtKGNvbW1hbmQpOwovKgoJc3lzdGVtKCJyZW1zaCByc25wZXJmICcvaG9tZS9jYXBwcy9uaW96b25lL2lvem9uZSAtK3MgLXQgMSAtciA0IC1zIDggLStjIHJzbnBlcmYnIik7CgoqLwoJaWYobWRlYnVnKQoJCXByaW50ZigiJXMiLGNvbW1hbmQpOwoJLyogRm9ybWF0IGV4YW1wbGU6IAkJCQkJKi8KCS8qCQkJCQkJCSovCgkvKiBzeXN0ZW0oInJlbXNoIHJzbnBlcmYgJy9ob21lL2NhcHBzL25pb3pvbmUvaW96b25lIAkqLwoJLyogICAgICAgLStzIC10IDEgLXIgNCAtcyA4IC0rYyByc25wZXJmJyIpOwkJKi8KCS8qCQkJCQkJCSovCgoJLyogU3RlcCAyLiBXYWl0IGZvciBqb2luIGZyb20gbmV3IGNsaWVudC4JCSovCgoJY2hpbGRfaWRlbnRzW3gtMV0uc3RhdGUgPSBDX1NUQVRFX1dBSVRfV0hPOwoKCWlmKG1kZWJ1Zz49MSkKCQlwcmludGYoIlxuTWFzdGVyIGxpc3RlbmluZyBmb3IgY2hpbGQgdG8gc2VuZCBqb2luIG1lc3NhZ2UuXG4iKTsKCW1hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQsc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfbmV1dHJhbF9jb21tYW5kKSk7CgltbmMgPSAoc3RydWN0IG1hc3Rlcl9uZXV0cmFsX2NvbW1hbmQgKikmbWFzdGVyX3Jjdl9idWZbMF07CgoJLyogCgkgKiBDb252ZXJ0IGZyb20gc3RyaW5nIGZvcm1hdCBiYWNrIHRvIGludGVybmFsIHJlcHJlc2VudGF0aW9uCgkgKi8KCXNzY2FuZihtbmMtPm1fY2hpbGRfcG9ydCwiJWQiLCZtYy5tX2NoaWxkX3BvcnQpOwkKCXNzY2FuZihtbmMtPm1fY2hpbGRfYXN5bmNfcG9ydCwiJWQiLCZtYy5tX2NoaWxkX2FzeW5jX3BvcnQpOwkKCXNzY2FuZihtbmMtPm1fY29tbWFuZCwiJWQiLCZtYy5tX2NvbW1hbmQpOwkKCXNzY2FuZihtbmMtPm1fdmVyc2lvbiwiJWQiLCZtYy5tX3ZlcnNpb24pOwkKCWlmKG1jLm1fdmVyc2lvbiAhPSBwcm90b192ZXJzaW9uKQoJewoJCXByaW50ZigiQ2xpZW50ID4gJXMgPCBpcyBub3QgcnVubmluZyB0aGUgc2FtZSB2ZXJzaW9uIG9mIElvem9uZSAhIVxuIiwKCQkJY2hpbGRfaWRlbnRzW3gtMV0uY2hpbGRfbmFtZSk7Cgl9CgoJY19wb3J0ID0gbWMubV9jaGlsZF9wb3J0OyAKCWFfcG9ydCA9IG1jLm1fY2hpbGRfYXN5bmNfcG9ydDsgCgljX2NvbW1hbmQgPSBtYy5tX2NvbW1hbmQ7CglpZihtZGVidWc+PTEpCgl7CgkJcHJpbnRmKCJNYXN0ZXIgYmFjayBmcm9tIGxpc3RlbiBjaGlsZCBKb2luZWQuXG4iKTsKCQlwcmludGYoIk1hc3RlcjogQ29tbWFuZCAlZFxuIixjX2NvbW1hbmQpOwoJfQoJLyogU3RlcCAzLiBUaGVuIHN0YXJ0X21hc3Rlcl9zZW5kKCkgZm9yIHRoaXMgY2xpZW50LgkqLwoJCglpZihtZGVidWc+PTEpCgkJcHJpbnRmKCJTdGFydGluZyBtYXN0ZXIgc2VuZCBjaGFubmVsXG4iKTsKICAgICAgICBtYXN0ZXJfc2VuZF9zb2NrZXRzW3gtMV09IHN0YXJ0X21hc3Rlcl9zZW5kKGNoaWxkX2lkZW50c1t4LTFdLmNoaWxkX25hbWUsY19wb3J0LAoJCSZteV9zX2FkZHIpOyAKCWlmKG1kZWJ1Zz49MSkKCQlwcmludGYoIlN0YXJ0aW5nIG1hc3RlciBzZW5kIGFzeW5jIGNoYW5uZWxcbiIpOwogICAgICAgIG1hc3Rlcl9zZW5kX2FzeW5jX3NvY2tldHNbeC0xXT0gc3RhcnRfbWFzdGVyX3NlbmRfYXN5bmMoY2hpbGRfaWRlbnRzW3gtMV0uY2hpbGRfbmFtZSxhX3BvcnQsCgkJbXlfc19hZGRyKTsgCgoJY2hpbGRfaWRlbnRzW3gtMV0ubWFzdGVyX3NvY2tldF9udW0gPSBtYXN0ZXJfc2VuZF9zb2NrZXRzW3gtMV07CgljaGlsZF9pZGVudHNbeC0xXS5tYXN0ZXJfYXN5bmNfc29ja2V0X251bSA9IG1hc3Rlcl9zZW5kX2FzeW5jX3NvY2tldHNbeC0xXTsKCWNoaWxkX2lkZW50c1t4LTFdLmNoaWxkX251bWJlciA9IHgtMTsKCWNoaWxkX2lkZW50c1t4LTFdLmNoaWxkX3BvcnQgPSBjX3BvcnQ7CgljaGlsZF9pZGVudHNbeC0xXS5jaGlsZF9hc3luY19wb3J0ID0gYV9wb3J0OwoKCS8qIAkJCQkJCQkJKi8KCS8qIFN0ZXAgNC4gU2VuZCBtZXNzYWdlIHRvIGNsaWVudCB0ZWxsaW5nIGhpbSBoaXMgbmFtZSwgbnVtYmVyLCAqLwoJLyogICAgICAgICAgICAgcnNpemUsIGZzaXplLCBhbmQgdGVzdCB0byBydW4uCQkJKi8KCXN0cmNweShjYy5jX2hvc3RfbmFtZSAsY29udHJvbGxpbmdfaG9zdF9uYW1lKTsKCXN0cmNweShjYy5jX3BpdF9ob3N0bmFtZSAscGl0X2hvc3RuYW1lKTsKCXN0cmNweShjYy5jX3BpdF9zZXJ2aWNlICxwaXRfc2VydmljZSk7CglzdHJjcHkoY2MuY19jbGllbnRfbmFtZSAsY2hpbGRfaWRlbnRzW3gtMV0uY2hpbGRfbmFtZSk7CglzdHJjcHkoY2MuY193b3JraW5nX2RpciAsY2hpbGRfaWRlbnRzW3gtMV0ud29ya2Rpcik7CglzdHJjcHkoY2MuY19maWxlX25hbWUgLGNoaWxkX2lkZW50c1t4LTFdLmZpbGVfbmFtZSk7CglzdHJjcHkoY2MuY193cml0ZV90cmFqX2ZpbGVuYW1lICx3cml0ZV90cmFqX2ZpbGVuYW1lKTsKCXN0cmNweShjYy5jX3JlYWRfdHJhal9maWxlbmFtZSAscmVhZF90cmFqX2ZpbGVuYW1lKTsKCWNjLmNfY29tbWFuZCA9IFJfSk9JTl9BQ0s7CgljYy5jX2NsaWVudF9udW1iZXIgPSB4LTE7CgljYy5jX3Rlc3RudW0gPSB0ZXN0bnVtOwoJY2MuY19udW1yZWNzNjQgPSBudW1yZWNzNjQ7CgljYy5jX3JlY2xlbiA9IHJlY2xlbjsKCWNjLmNfb2ZsYWcgPSBvZmxhZzsKCWNjLmNfbWZmbGFnID0gbWZmbGFnOwoJY2MuY191bmJ1ZmZlcmVkID0gdW5idWZmZXJlZDsKCWNjLmNfbm9yZXRlc3QgPSBub3JldGVzdDsKCWNjLmNfbm90cnVuY2F0ZSA9IG5vdHJ1bmNhdGU7CgljYy5jX3JlYWRfc3luYyA9IHJlYWRfc3luYzsKCWNjLmNfamZsYWcgPSBqZmxhZzsKCWNjLmNfZGlyZWN0X2ZsYWcgPSBkaXJlY3RfZmxhZzsKCWNjLmNfY3B1dXRpbGZsYWcgPSBjcHV1dGlsZmxhZzsKCWNjLmNfc2VxX21peCA9IHNlcV9taXg7CgljYy5jX2FzeW5jX2ZsYWcgPSBhc3luY19mbGFnOwoJY2MuY19rX2ZsYWcgPSBrX2ZsYWc7CgljYy5jX2hfZmxhZyA9IGhfZmxhZzsKCWNjLmNfbWZsYWcgPSBtZmxhZzsKCWNjLmNfcGZsYWcgPSBwZmxhZzsKCWNjLmNfc3RyaWRlX2ZsYWcgPSBzdHJpZGVfZmxhZzsKCWNjLmNfZmV0Y2hvbiA9IGZldGNob247CgljYy5jX3ZlcmlmeSA9IHZlcmlmeTsKCWNjLmNfc3ZlcmlmeSA9IHN2ZXJpZnk7CgljYy5jX29kc3luYyA9IG9kc3luYzsKCWNjLmNfZGlhZ192ID0gZGlhZ192OwoJY2MuY19kZWR1cCA9IGRlZHVwOwoJY2MuY19kZWR1cF9pbnRlcmlvciA9IGRlZHVwX2ludGVyaW9yOwoJY2MuY19kZWR1cF9jb21wcmVzcyA9IGRlZHVwX2NvbXByZXNzOwoJY2MuY19kZWR1cF9tc2VlZCA9IGRlZHVwX21zZWVkOwoJY2MuY19maWxlX2xvY2sgPSBmaWxlX2xvY2s7CgljYy5jX3JlY19sb2NrID0gcmxvY2tpbmc7CgljYy5jX0twbHVzX3JlYWRlcnMgPSBLcGx1c19yZWFkZXJzOwoJY2MuY19tdWx0aXBsaWVyID0gbXVsdGlwbGllcjsKCWNjLmNfc2hhcmVfZmlsZSA9IHNoYXJlX2ZpbGU7CgljYy5jX3BhdHRlcm4gPSBwYXR0ZXJuOwoJY2MuY192ZXJzaW9uID0gcHJvdG9fdmVyc2lvbjsKCWNjLmNfYmFzZV90aW1lID0gYmFzZV90aW1lOwoJY2MuY19udW1fY2hpbGQgPSAoaW50KW51bV9jaGlsZDsKCWNjLmNfcGN0X3JlYWQgPSBwY3RfcmVhZDsKCWNjLmNfYWR2aXNlX29wID0gYWR2aXNlX29wOwoJY2MuY19hZHZpc2VfZmxhZyA9IGFkdmlzZV9mbGFnOwoJY2MuY19yZXN0ZiA9IHJlc3RmOwoJY2MuY19RX2ZsYWcgPSBRX2ZsYWc7CgljYy5jX0xfZmxhZyA9IExfZmxhZzsKCWNjLmNfeGZsYWcgPSB4ZmxhZzsKCWNjLmNfd190cmFqX2ZsYWcgPSB3X3RyYWpfZmxhZzsKCWNjLmNfcl90cmFqX2ZsYWcgPSByX3RyYWpfZmxhZzsKCWNjLmNfaW5jbHVkZV9mbHVzaCA9IGluY2x1ZGVfZmx1c2g7CgljYy5jX09QU19mbGFnID0gT1BTX2ZsYWc7CgljYy5jX3B1cmdlID0gcHVyZ2U7CgljYy5jX21tYXBmbGFnID0gbW1hcGZsYWc7CgljYy5jX21tYXBhc2ZsYWcgPSBtbWFwYXNmbGFnOwoJY2MuY19tbWFwbnNmbGFnID0gbW1hcG5zZmxhZzsKCWNjLmNfbW1hcHNzZmxhZyA9IG1tYXBzc2ZsYWc7CgljYy5jX25vX2NvcHlfZmxhZyA9IG5vX2NvcHlfZmxhZzsKCWNjLmNfbm9fdW5saW5rID0gbm9fdW5saW5rOwoJY2MuY19ub193cml0ZSA9IG5vX3dyaXRlOwoJY2MuY19pbmNsdWRlX2Nsb3NlID0gaW5jbHVkZV9jbG9zZTsKCWNjLmNfZGlzcnVwdF9mbGFnID0gZGlzcnVwdF9mbGFnOwoJY2MuY19jb21wdXRlX2ZsYWcgPSBjb21wdXRlX2ZsYWc7CgljYy5jX2RlbGF5ID0gZGVsYXk7CgljYy5jX3N0cmlkZSA9IHN0cmlkZTsKCWNjLmNfcmVzdF92YWwgPSByZXN0X3ZhbDsKCWNjLmNfZGVsYXlfc3RhcnQgPSBkZWxheV9zdGFydDsKCWNjLmNfY29tcHV0ZV90aW1lID0gY29tcHV0ZV90aW1lOwoJY2MuY19kZXB0aCA9IGRlcHRoOwoJY2MuY19NU19mbGFnID0gTVNfZmxhZzsKCWNjLmNfbW1hcF9taXggPSBtbWFwX21peDsKCWNjLmNfS3BsdXNfZmxhZyA9IEtwbHVzX2ZsYWc7CgoKCWlmKG1kZWJ1ZykKCQlwcmludGYoIk1hc3RlciBzZW5kaW5nIGNsaWVudCB3aG8gaGUgaXNcbiIpOwoJbWFzdGVyX3NlbmQobWFzdGVyX3NlbmRfc29ja2V0c1t4LTFdLGNjLmNfY2xpZW50X25hbWUsICZjYyxzaXplb2Yoc3RydWN0IGNsaWVudF9jb21tYW5kKSk7CgoJY2hpbGRfaWRlbnRzW3gtMV0uc3RhdGUgPSBDX1NUQVRFX1dBSVRfQkFSUklFUjsKCQoJLyogCQkJCQkJCQkqLwoJLyogU3RlcCA1LiBXYWl0IHVudGlsIHlvdSByZWNlaXZlIG1lc3NhZ2UgdGhhdCB0aGUgY2hpbGUgaXMgYXQgICovCgkvKiAgICAgICAgICAgICB0aGUgYmFycmllci4gIAkJCQkJKi8KCWlmKG1kZWJ1Zz49MSkKCSAgIHByaW50ZigiTWFzdGVyIGxpc3RlbmluZyBmb3IgY2hpbGQgdG8gc2VuZCBhdCBiYXJyaWVyIG1lc3NhZ2UuXG4iKTsKCW1hc3Rlcl9saXN0ZW4obWFzdGVyX2xpc3Rlbl9zb2NrZXQsc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfbmV1dHJhbF9jb21tYW5kKSk7CgltbmMgPSAoc3RydWN0IG1hc3Rlcl9uZXV0cmFsX2NvbW1hbmQgKikmbWFzdGVyX3Jjdl9idWZbMF07CgkvKgoJICogQ29udmVydCBmcm9tIHN0cmluZyBiYWNrIHRvIGFyY2ggc3BlY2lmaWMgCgkgKi8KCXNzY2FuZihtbmMtPm1fY2xpZW50X251bWJlciwiJWQiLCZtYy5tX2NsaWVudF9udW1iZXIpOwkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJc3NjYW5mKG1uYy0+bV9jaGlsZF9mbGFnLCIlbGQiLCZtYy5tX2NoaWxkX2ZsYWcpOwkKI2Vsc2UKCXNzY2FuZihtbmMtPm1fY2hpbGRfZmxhZywiJWxsZCIsJm1jLm1fY2hpbGRfZmxhZyk7CQojZW5kaWYKCgljaGlsZF9pbmRleCA9IG1jLm1fY2xpZW50X251bWJlcjsKCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbY2hpbGRfaW5kZXhdOwkKCWNoaWxkX3N0YXQtPmZsYWcgPSAobG9uZyBsb25nKShtYy5tX2NoaWxkX2ZsYWcpOwoJaWYobWRlYnVnPj0xKQoJICAgcHJpbnRmKCJNYXN0ZXIgc2VlcyBjaGlsZCAlZCBhdCBiYXJyaWVyIG1lc3NhZ2UuXG4iLGNoaWxkX2luZGV4KTsKCglyZXR1cm4oeCk7IC8qIFRlbGwgY29kZSBhYm92ZSB0aGF0IGl0IGlzIHRoZSBwYXJlbnQgcmV0dXJuaW5nICovCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgdGhlIGNsaWVudCB3aWxsIHVzZSB3aGVuIGl0IAkJCQkJKi8KLyogZ2V0cyBzdGFydGVkIHZpYSByZW1vdGUgc2hlbGwuIEl0IGlzIGFjdGl2YXRlZCBieSB0aGUgLStjIGNvbnRyb2xsZXJfbmFtZSBvcHRpb24uCSovCi8qCQkJCQkJCQkJCQkqLwovKiBUaGUgc3RlcHMgdG8gdGhpcyBwcm9jZXNzIGFyZToJCQkJCQkJKi8KLyogMS4gU3RhcnQgY2xpZW50IHJlY2VpdmUgY2hhbm5lbCAJCQkJCQkJKi8KLyogMi4gU3RhcnQgY2xpZW50IHNlbmQgY2hhbm5lbCAJCQkJCQkJKi8KLyogMy4gU2VuZCBtZXNzYWdlIHRvIGNvbnRyb2xsZXIgc2F5aW5nIEknbSBqb2luaW5nLiAJCQkJCSovCi8qIDQuIEdvIGludG8gYSBsb29wIGFuZCBnZXQgYWxsIGluc3RydWN0aW9ucyBmcm9tIAkJCQkJKi8KLyogNS4gR2V0IHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIG1hc3RlciAJCQkJCQkqLwovKiA2LiBDaGFuZ2UgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IAkJCQkJCQkqLwovKiA3LiBSdW4gdGhlIHRlc3QgCQkJCQkJCQkJKi8KLyogOC4gUmVsZWFzZSB0aGUgbGlzdGVuIGFuZCBzZW5kIHNvY2tldHMgdG8gdGhlIG1hc3RlciAJCQkJKi8KLyogCQkJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmJlY29tZV9jbGllbnQodm9pZCkKI2Vsc2UKdm9pZApiZWNvbWVfY2xpZW50KCkKI2VuZGlmCnsKCWludCB4LHRlc3RudW07CglzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQgbWM7CglzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgY2M7CglzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCAqY25jOwoJY2hhciBjbGllbnRfbmFtZVsxMDBdOwoJY2hhciAqd29ya2RpcjsKCgliemVybygmbWMsc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCkpOwoJeD1mb3JrKCk7IC8qIEJlY29tZSBhIGRhZW1vbiBzbyB0aGF0IHJlbW90ZSBzaGVsbCB3aWxsIHJldHVybi4gKi8KCWlmKHggIT0gMCkKCQlleGl0KDApOwoJLyoKIAkgKiBJIGFtIHRoZSBjaGlsZCAKCSAqLwoJKHZvaWQpZ2V0aG9zdG5hbWUoY2xpZW50X25hbWUsMTAwKTsKCglmZmx1c2goc3Rkb3V0KTsKCWZmbHVzaChzdGRlcnIpOwoJaWYoY2RlYnVnKQoJewoJCW5ld3N0ZGluPWZyZW9wZW4oIi90bXAvZG9uX2luIiwicisiLHN0ZGluKTsKCQluZXdzdGRvdXQ9ZnJlb3BlbigiL3RtcC9kb25fb3V0IiwiYSsiLHN0ZG91dCk7CgkJbmV3c3RkZXJyPWZyZW9wZW4oIi90bXAvZG9uX2VyciIsImErIixzdGRlcnIpOwoJfQoJZWxzZQoJewoJCWZjbG9zZShzdGRpbik7CgkJZmNsb3NlKHN0ZG91dCk7CgkJZmNsb3NlKHN0ZGVycik7Cgl9CglpZihjZGVidWc+PTEpCgl7CgkJcHJpbnRmKCJNeSBuYW1lID0gJXMsIENvbnRyb2xsZXIncyBuYW1lID0gJXNcbiIsY2xpZW50X25hbWUsIGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7Cgl9CgoJLyogMS4gU3RhcnQgY2xpZW50IHJlY2VpdmUgY2hhbm5lbCAJCQkJKi8KCglsX3NvY2sgPSBzdGFydF9jaGlsZF9saXN0ZW4oc2l6ZW9mKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kKSk7CglsX2FzeW5jX3NvY2sgPSBzdGFydF9jaGlsZF9saXN0ZW5fYXN5bmMoc2l6ZW9mKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kKSk7CgoJLyogMi4gU3RhcnQgY2xpZW50IHNlbmQgY2hhbm5lbCAJCQkJKi8KCglzX3NvY2sgPSBzdGFydF9jaGlsZF9zZW5kKGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7CgoJLyogMy4gU2VuZCBtZXNzYWdlIHRvIGNvbnRyb2xsZXIgc2F5aW5nIEknbSBqb2luaW5nLiAJCSovCgoJc3RyY3B5KG1jLm1faG9zdF9uYW1lLGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7CglzdHJjcHkobWMubV9jbGllbnRfbmFtZSxjbGllbnRfbmFtZSk7CgltYy5tX2NoaWxkX3BvcnQgPSBjaGlsZF9wb3J0OwoJbWMubV9jaGlsZF9hc3luY19wb3J0ID0gY2hpbGRfYXN5bmNfcG9ydDsKCW1jLm1fY29tbWFuZCA9IFJfQ0hJTERfSk9JTjsKCW1jLm1fdmVyc2lvbiA9IHByb3RvX3ZlcnNpb247CglpZihjZGVidWcpCgl7CgkJcHJpbnRmKCJDaGlsZCAlcyBzZW5kcyBKT0lOIHRvIG1hc3RlciAlcyBNeSBwb3J0ICVkXG4iLAoJCQljbGllbnRfbmFtZSxjb250cm9sbGluZ19ob3N0X25hbWUsY2hpbGRfcG9ydCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CgljaGlsZF9zZW5kKHNfc29jaywgY29udHJvbGxpbmdfaG9zdF9uYW1lLChzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQgKikmbWMsIHNpemVvZihzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQpKTsKCglsX3NvY2s9Y2hpbGRfYXR0YWNoKGxfc29jaywwKTsKCWxfYXN5bmNfc29jaz1jaGlsZF9hdHRhY2gobF9hc3luY19zb2NrLDEpOwoJCgkvKiA0LiBHbyBpbnRvIGEgbG9vcCBhbmQgZ2V0IGFsbCBpbnN0cnVjdGlvbnMgZnJvbSAJCSovCiAgICAgICAgLyogICAgdGhlIGNvbnRyb2xsaW5nIHByb2Nlc3MuIAkJCQkJKi8KCglpZihjZGVidWc+PTEpCgl7CgkJcHJpbnRmKCJDaGlsZCAlcyB3YWl0aW5nIGZvciB3aG8gYW0gSVxuIixjbGllbnRfbmFtZSk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CgljaGlsZF9saXN0ZW4obF9zb2NrLHNpemVvZihzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCkpOwoJY25jID0gKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kICopJmNoaWxkX3Jjdl9idWY7CgliemVybygmY2MsIHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCQoJLyogQ29udmVydCBmcm9tIHN0cmluZyBmb3JtYXQgdG8gYXJjaCBmb3JtYXQgKi8KCXNzY2FuZihjbmMtPmNfY29tbWFuZCwiJWQiLCZjYy5jX2NvbW1hbmQpOwoJc3NjYW5mKGNuYy0+Y19jbGllbnRfbmFtZSwiJXMiLGNjLmNfY2xpZW50X25hbWUpOwoJc3NjYW5mKGNuYy0+Y19jbGllbnRfbnVtYmVyLCIlZCIsJmNjLmNfY2xpZW50X251bWJlcik7Cglzc2NhbmYoY25jLT5jX2hvc3RfbmFtZSwiJXMiLGNjLmNfaG9zdF9uYW1lKTsKCXNzY2FuZihjbmMtPmNfcGl0X2hvc3RuYW1lLCIlcyIsY2MuY19waXRfaG9zdG5hbWUpOwoKCWlmKGNjLmNfY29tbWFuZCA9PSBSX1RFUk1JTkFURSB8fCBjYy5jX2NvbW1hbmQ9PVJfREVBVEgpCgl7CgkJaWYoY2RlYnVnKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCByZWNlaXZlZCB0ZXJtaW5hdGUgb24gc3luYyBjaGFubmVsICEhXG4iLChpbnQpY2hpZCk7CgkJCWZmbHVzaChzdGRvdXQpOwoJCX0KCQlleGl0KDEpOwoJfQoJCglpZihjZGVidWcpCgl7CgkJcHJpbnRmKCJDaGlsZCBzZWVzOiBcbiBDbGllbnQgbmFtZSAlcyBcbiBDbGllbnRfbnVtICMgJWQgXG4gSG9zdF9uYW1lICVzXG4iLAoJCWNjLmNfY2xpZW50X25hbWUsY2MuY19jbGllbnRfbnVtYmVyLGNjLmNfaG9zdF9uYW1lKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCgkvKgoJICogTm93IGltcG9ydCBhbGwgb2YgdGhlIHZhbHVlcyBvZiB0aGUgZmxhZ3MgdGhhdCB0aGUgY2hpbGQgb24gdGhpcyAKCSAqIG1hY2hpbmUgbmVlZHMgdG8gYmUgYWJsZSB0byBydW4gdGhlIHRlc3QgcmVxdWVzdGVkLgoJICovCgoJLyogNS4gR2V0IHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIG1hc3RlciAqLwoKI2lmZGVmIE5PX1BSSU5UX0xMRAoJc3NjYW5mKGNuYy0+Y19udW1yZWNzNjQsIiVsZCIsJmNjLmNfbnVtcmVjczY0KTsKCXNzY2FuZihjbmMtPmNfcmVjbGVuLCIlbGQiLCZjYy5jX3JlY2xlbik7Cglzc2NhbmYoY25jLT5jX2ZldGNob24sIiVsZCIsJmNjLmNfZmV0Y2hvbik7Cglzc2NhbmYoY25jLT5jX3B1cmdlLCIlbGQiLCZjYy5jX3B1cmdlKTsKCXNzY2FuZihjbmMtPmNfZGVsYXksIiVsZCIsJmNjLmNfZGVsYXkpOwoJc3NjYW5mKGNuYy0+Y19zdHJpZGUsIiVsZCIsJmNjLmNfc3RyaWRlKTsKCXNzY2FuZihjbmMtPmNfcmVzdF92YWwsIiVsZCIsJmNjLmNfcmVzdF92YWwpOwoJc3NjYW5mKGNuYy0+Y19kZWxheV9zdGFydCwiJWxkIiwmY2MuY19kZWxheV9zdGFydCk7Cglzc2NhbmYoY25jLT5jX2RlcHRoLCIlbGQiLCZjYy5jX2RlcHRoKTsKI2Vsc2UKCXNzY2FuZihjbmMtPmNfbnVtcmVjczY0LCIlbGxkIiwmY2MuY19udW1yZWNzNjQpOwoJc3NjYW5mKGNuYy0+Y19yZWNsZW4sIiVsbGQiLCZjYy5jX3JlY2xlbik7Cglzc2NhbmYoY25jLT5jX2ZldGNob24sIiVsbGQiLCZjYy5jX2ZldGNob24pOwoJc3NjYW5mKGNuYy0+Y19wdXJnZSwiJWxsZCIsJmNjLmNfcHVyZ2UpOwoJc3NjYW5mKGNuYy0+Y19kZWxheSwiJWxsZCIsJmNjLmNfZGVsYXkpOwoJc3NjYW5mKGNuYy0+Y19zdHJpZGUsIiVsbGQiLCZjYy5jX3N0cmlkZSk7Cglzc2NhbmYoY25jLT5jX3Jlc3RfdmFsLCIlbGxkIiwmY2MuY19yZXN0X3ZhbCk7Cglzc2NhbmYoY25jLT5jX2RlbGF5X3N0YXJ0LCIlbGxkIiwmY2MuY19kZWxheV9zdGFydCk7Cglzc2NhbmYoY25jLT5jX2RlcHRoLCIlbGxkIiwmY2MuY19kZXB0aCk7CiNlbmRpZgoJc3NjYW5mKGNuYy0+Y19waXRfaG9zdG5hbWUsIiVzIixjYy5jX3BpdF9ob3N0bmFtZSk7Cglzc2NhbmYoY25jLT5jX3BpdF9zZXJ2aWNlLCIlcyIsY2MuY19waXRfc2VydmljZSk7Cglzc2NhbmYoY25jLT5jX3Rlc3RudW0sIiVkIiwmY2MuY190ZXN0bnVtKTsKCXNzY2FuZihjbmMtPmNfY2xpZW50X251bWJlciwiJWQiLCZjYy5jX2NsaWVudF9udW1iZXIpOwoJc3NjYW5mKGNuYy0+Y193b3JraW5nX2RpciwiJXMiLGNjLmNfd29ya2luZ19kaXIpOwoJc3NjYW5mKGNuYy0+Y19maWxlX25hbWUsIiVzIixjYy5jX2ZpbGVfbmFtZSk7Cglzc2NhbmYoY25jLT5jX3dyaXRlX3RyYWpfZmlsZW5hbWUsIiVzIixjYy5jX3dyaXRlX3RyYWpfZmlsZW5hbWUpOwoJc3NjYW5mKGNuYy0+Y19yZWFkX3RyYWpfZmlsZW5hbWUsIiVzIixjYy5jX3JlYWRfdHJhal9maWxlbmFtZSk7Cglzc2NhbmYoY25jLT5jX25vcmV0ZXN0LCIlZCIsJmNjLmNfbm9yZXRlc3QpOwoJc3NjYW5mKGNuYy0+Y19ub3RydW5jYXRlLCIlZCIsJmNjLmNfbm90cnVuY2F0ZSk7Cglzc2NhbmYoY25jLT5jX3JlYWRfc3luYywiJWQiLCZjYy5jX3JlYWRfc3luYyk7Cglzc2NhbmYoY25jLT5jX2pmbGFnLCIlZCIsJmNjLmNfamZsYWcpOwoJc3NjYW5mKGNuYy0+Y19kaXJlY3RfZmxhZywiJWQiLCZjYy5jX2RpcmVjdF9mbGFnKTsKCXNzY2FuZihjbmMtPmNfY3B1dXRpbGZsYWcsIiVkIiwmY2MuY19jcHV1dGlsZmxhZyk7Cglzc2NhbmYoY25jLT5jX3NlcV9taXgsIiVkIiwmY2MuY19zZXFfbWl4KTsKCXNzY2FuZihjbmMtPmNfYXN5bmNfZmxhZywiJWQiLCZjYy5jX2FzeW5jX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19rX2ZsYWcsIiVkIiwmY2MuY19rX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19oX2ZsYWcsIiVkIiwmY2MuY19oX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19tZmxhZywiJWQiLCZjYy5jX21mbGFnKTsKCXNzY2FuZihjbmMtPmNfcGZsYWcsIiVkIiwmY2MuY19wZmxhZyk7Cglzc2NhbmYoY25jLT5jX3N0cmlkZV9mbGFnLCIlZCIsJmNjLmNfc3RyaWRlX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y192ZXJpZnksIiVkIiwmY2MuY192ZXJpZnkpOwoJc3NjYW5mKGNuYy0+Y19zdmVyaWZ5LCIlZCIsJmNjLmNfc3ZlcmlmeSk7Cglzc2NhbmYoY25jLT5jX29kc3luYywiJWQiLCZjYy5jX29kc3luYyk7Cglzc2NhbmYoY25jLT5jX2RpYWdfdiwiJWQiLCZjYy5jX2RpYWdfdik7Cglzc2NhbmYoY25jLT5jX2RlZHVwLCIlZCIsJmNjLmNfZGVkdXApOwoJc3NjYW5mKGNuYy0+Y19kZWR1cF9pbnRlcmlvciwiJWQiLCZjYy5jX2RlZHVwX2ludGVyaW9yKTsKCXNzY2FuZihjbmMtPmNfZGVkdXBfY29tcHJlc3MsIiVkIiwmY2MuY19kZWR1cF9jb21wcmVzcyk7Cglzc2NhbmYoY25jLT5jX2RlZHVwX21zZWVkLCIlZCIsJmNjLmNfZGVkdXBfbXNlZWQpOwoJc3NjYW5mKGNuYy0+Y19maWxlX2xvY2ssIiVkIiwmY2MuY19maWxlX2xvY2spOwoJc3NjYW5mKGNuYy0+Y19yZWNfbG9jaywiJWQiLCZjYy5jX3JlY19sb2NrKTsKCXNzY2FuZihjbmMtPmNfS3BsdXNfcmVhZGVycywiJWQiLCZjYy5jX0twbHVzX3JlYWRlcnMpOwoJc3NjYW5mKGNuYy0+Y19tdWx0aXBsaWVyLCIlZCIsJmNjLmNfbXVsdGlwbGllcik7Cglzc2NhbmYoY25jLT5jX3NoYXJlX2ZpbGUsIiVkIiwmY2MuY19zaGFyZV9maWxlKTsKCXNzY2FuZihjbmMtPmNfcGF0dGVybiwiJWQiLCZjYy5jX3BhdHRlcm4pOwoJc3NjYW5mKGNuYy0+Y192ZXJzaW9uLCIlZCIsJmNjLmNfdmVyc2lvbik7Cglzc2NhbmYoY25jLT5jX2Jhc2VfdGltZSwiJWQiLCZjYy5jX2Jhc2VfdGltZSk7Cglzc2NhbmYoY25jLT5jX251bV9jaGlsZCwiJWQiLCZjYy5jX251bV9jaGlsZCk7Cglzc2NhbmYoY25jLT5jX3BjdF9yZWFkLCIlZCIsJmNjLmNfcGN0X3JlYWQpOwoJc3NjYW5mKGNuYy0+Y19hZHZpc2Vfb3AsIiVkIiwmY2MuY19hZHZpc2Vfb3ApOwoJc3NjYW5mKGNuYy0+Y19hZHZpc2VfZmxhZywiJWQiLCZjYy5jX2FkdmlzZV9mbGFnKTsKCXNzY2FuZihjbmMtPmNfcmVzdGYsIiVkIiwmY2MuY19yZXN0Zik7Cglzc2NhbmYoY25jLT5jX29mbGFnLCIlZCIsJmNjLmNfb2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19tZmZsYWcsIiVkIiwmY2MuY19tZmZsYWcpOwoJc3NjYW5mKGNuYy0+Y191bmJ1ZmZlcmVkLCIlZCIsJmNjLmNfdW5idWZmZXJlZCk7Cglzc2NhbmYoY25jLT5jX1FfZmxhZywiJWQiLCZjYy5jX1FfZmxhZyk7Cglzc2NhbmYoY25jLT5jX0xfZmxhZywiJWQiLCZjYy5jX0xfZmxhZyk7Cglzc2NhbmYoY25jLT5jX3hmbGFnLCIlZCIsJmNjLmNfeGZsYWcpOwoJc3NjYW5mKGNuYy0+Y19pbmNsdWRlX2ZsdXNoLCIlZCIsJmNjLmNfaW5jbHVkZV9mbHVzaCk7Cglzc2NhbmYoY25jLT5jX09QU19mbGFnLCIlZCIsJmNjLmNfT1BTX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19tbWFwZmxhZywiJWQiLCZjYy5jX21tYXBmbGFnKTsKCXNzY2FuZihjbmMtPmNfbW1hcGFzZmxhZywiJWQiLCZjYy5jX21tYXBhc2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19tbWFwbnNmbGFnLCIlZCIsJmNjLmNfbW1hcG5zZmxhZyk7Cglzc2NhbmYoY25jLT5jX21tYXBzc2ZsYWcsIiVkIiwmY2MuY19tbWFwc3NmbGFnKTsKCXNzY2FuZihjbmMtPmNfbm9fY29weV9mbGFnLCIlZCIsJmNjLmNfbm9fY29weV9mbGFnKTsKCXNzY2FuZihjbmMtPmNfd190cmFqX2ZsYWcsIiVkIiwmY2MuY193X3RyYWpfZmxhZyk7Cglzc2NhbmYoY25jLT5jX3JfdHJhal9mbGFnLCIlZCIsJmNjLmNfcl90cmFqX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19ub191bmxpbmssIiVkIiwmY2MuY19ub191bmxpbmspOwoJc3NjYW5mKGNuYy0+Y19ub193cml0ZSwiJWQiLCZjYy5jX25vX3dyaXRlKTsKCXNzY2FuZihjbmMtPmNfaW5jbHVkZV9jbG9zZSwiJWQiLCZjYy5jX2luY2x1ZGVfY2xvc2UpOwoJc3NjYW5mKGNuYy0+Y19kaXNydXB0X2ZsYWcsIiVkIiwmY2MuY19kaXNydXB0X2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19jb21wdXRlX2ZsYWcsIiVkIiwmY2MuY19jb21wdXRlX2ZsYWcpOwoJc3NjYW5mKGNuYy0+Y19NU19mbGFnLCIlZCIsJmNjLmNfTVNfZmxhZyk7Cglzc2NhbmYoY25jLT5jX21tYXBfbWl4LCIlZCIsJmNjLmNfbW1hcF9taXgpOwoJc3NjYW5mKGNuYy0+Y19LcGx1c19mbGFnLCIlZCIsJmNjLmNfS3BsdXNfZmxhZyk7Cglzc2NhbmYoY25jLT5jX2NvbXB1dGVfdGltZSwiJWYiLCZjYy5jX2NvbXB1dGVfdGltZSk7CgoJc3RyY3B5KHdyaXRlX3RyYWpfZmlsZW5hbWUsY2MuY193cml0ZV90cmFqX2ZpbGVuYW1lKTsKCXN0cmNweShyZWFkX3RyYWpfZmlsZW5hbWUsY2MuY19yZWFkX3RyYWpfZmlsZW5hbWUpOwoJbnVtcmVjczY0ID0gY2MuY19udW1yZWNzNjQ7CglzdHJjcHkocGl0X2hvc3RuYW1lLGNjLmNfcGl0X2hvc3RuYW1lKTsKCXN0cmNweShwaXRfc2VydmljZSxjYy5jX3BpdF9zZXJ2aWNlKTsKCXJlY2xlbiA9IGNjLmNfcmVjbGVuOwoJdGVzdG51bSA9IGNjLmNfdGVzdG51bTsKCWNoaWQgPSBjYy5jX2NsaWVudF9udW1iZXI7Cgl3b3JrZGlyPWNjLmNfd29ya2luZ19kaXI7CglvZmxhZyA9IGNjLmNfb2ZsYWc7CgkvKiBDaGlsZCdzIGFic29sdXRlIGZpbGVuYW1lIHRvIHVzZSBpcyBwcm92aWRlZCAqLwoJbWZmbGFnID0gY2MuY19tZmZsYWc7CglpZihtZmZsYWcpCgkJc3RyY3B5KGZpbGVhcnJheVtjaGlkXSxjYy5jX2ZpbGVfbmFtZSk7CglpZihjZGVidWcpCgkJcHJpbnRmKCJGaWxlIG5hbWUgZ2l2ZW4gJXNcbiIsY2MuY19maWxlX25hbWUpOwoJdW5idWZmZXJlZCA9IGNjLmNfdW5idWZmZXJlZDsKCW5vcmV0ZXN0ID0gY2MuY19ub3JldGVzdDsKCW5vdHJ1bmNhdGUgPSBjYy5jX25vdHJ1bmNhdGU7CglyZWFkX3N5bmMgPSBjYy5jX3JlYWRfc3luYzsKCWpmbGFnID0gY2MuY19qZmxhZzsKCWRpcmVjdF9mbGFnID0gY2MuY19kaXJlY3RfZmxhZzsKCWNwdXV0aWxmbGFnID0gY2MuY19jcHV1dGlsZmxhZzsKCXNlcV9taXggPSBjYy5jX3NlcV9taXg7Cglhc3luY19mbGFnID0gY2MuY19hc3luY19mbGFnOwoJa19mbGFnID0gY2MuY19rX2ZsYWc7CgloX2ZsYWcgPSBjYy5jX2hfZmxhZzsKCW1mbGFnID0gY2MuY19tZmxhZzsKCXBmbGFnID0gY2MuY19wZmxhZzsKCXN0cmlkZV9mbGFnID0gY2MuY19zdHJpZGVfZmxhZzsKCWZldGNob24gPSBjYy5jX2ZldGNob247Cgl2ZXJpZnkgPSBjYy5jX3ZlcmlmeTsKCWRpYWdfdiA9IGNjLmNfZGlhZ192OwoJZGVkdXAgPSBjYy5jX2RlZHVwOwoJZGVkdXBfaW50ZXJpb3IgPSBjYy5jX2RlZHVwX2ludGVyaW9yOwoJZGVkdXBfY29tcHJlc3MgPSBjYy5jX2RlZHVwX2NvbXByZXNzOwoJZGVkdXBfbXNlZWQgPSBjYy5jX2RlZHVwX21zZWVkOwoJaWYoZGlhZ192KQoJCXN2ZXJpZnkgPSAwOwoJZWxzZQoJCXN2ZXJpZnkgPSBjYy5jX3N2ZXJpZnk7CglmaWxlX2xvY2sgPSBjYy5jX2ZpbGVfbG9jazsKCXJsb2NraW5nID0gY2MuY19yZWNfbG9jazsKCUtwbHVzX3JlYWRlcnMgPSBjYy5jX0twbHVzX3JlYWRlcnM7CgltdWx0aXBsaWVyID0gY2MuY19tdWx0aXBsaWVyOwoJc2hhcmVfZmlsZSA9IGNjLmNfc2hhcmVfZmlsZTsKCXBhdHRlcm4gPSBjYy5jX3BhdHRlcm47CgkvKiBwcm90b192ZXJzaW9uID0gY2MuY192ZXJzaW9uOyBEb24ndCBjb3B5IGl0IGJhY2suICovCgliYXNlX3RpbWU9Y2MuY19iYXNlX3RpbWU7CgludW1fY2hpbGQ9KGxvbmcgbG9uZyljYy5jX251bV9jaGlsZDsKCXBjdF9yZWFkPWNjLmNfcGN0X3JlYWQ7CglhZHZpc2Vfb3A9Y2MuY19hZHZpc2Vfb3A7CglhZHZpc2VfZmxhZz1jYy5jX2FkdmlzZV9mbGFnOwoJcmVzdGY9Y2MuY19yZXN0ZjsKCVFfZmxhZyA9IGNjLmNfUV9mbGFnOwoJTF9mbGFnID0gY2MuY19MX2ZsYWc7Cgl4ZmxhZyA9IGNjLmNfeGZsYWc7Cgl3X3RyYWpfZmxhZyA9IGNjLmNfd190cmFqX2ZsYWc7CglyX3RyYWpfZmxhZyA9IGNjLmNfcl90cmFqX2ZsYWc7CglpbmNsdWRlX2ZsdXNoID0gY2MuY19pbmNsdWRlX2ZsdXNoOwoJT1BTX2ZsYWcgPSBjYy5jX09QU19mbGFnOwoJcHVyZ2UgPSBjYy5jX3B1cmdlOwoJbW1hcGZsYWcgPSBjYy5jX21tYXBmbGFnOwoJbW1hcGFzZmxhZyA9IGNjLmNfbW1hcGFzZmxhZzsKCW1tYXBuc2ZsYWcgPSBjYy5jX21tYXBuc2ZsYWc7CgltbWFwc3NmbGFnID0gY2MuY19tbWFwc3NmbGFnOyAKCW5vX2NvcHlfZmxhZyA9IGNjLmNfbm9fY29weV9mbGFnOwoJbm9fdW5saW5rID0gY2MuY19ub191bmxpbms7Cglub193cml0ZSA9IGNjLmNfbm9fd3JpdGU7CglpbmNsdWRlX2Nsb3NlID0gY2MuY19pbmNsdWRlX2Nsb3NlOwoJZGlzcnVwdF9mbGFnID0gY2MuY19kaXNydXB0X2ZsYWc7Cgljb21wdXRlX2ZsYWcgPSBjYy5jX2NvbXB1dGVfZmxhZzsKCU1TX2ZsYWcgPSBjYy5jX01TX2ZsYWc7CgltbWFwX21peCA9IGNjLmNfbW1hcF9taXg7CglLcGx1c19mbGFnID0gY2MuY19LcGx1c19mbGFnOwoJZGVsYXkgPSBjYy5jX2RlbGF5OwoJc3RyaWRlID0gY2MuY19zdHJpZGU7CglyZXN0X3ZhbCA9IGNjLmNfcmVzdF92YWw7CglkZXB0aCA9IGNjLmNfZGVwdGg7CglkZWxheV9zdGFydCA9IGNjLmNfZGVsYXlfc3RhcnQ7Cgljb21wdXRlX3RpbWUgPSBjYy5jX2NvbXB1dGVfdGltZTsKCWlmKGNkZWJ1ZykKCXsKCQlwcmludGYoIkNoaWxkICVkIGNoYW5nZSBkaXJlY3RvcnkgdG8gJXNcbiIsKGludCljaGlkLHdvcmtkaXIpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJaWYocHVyZ2UpCgkJYWxsb2NfcGJ1ZigpOwoKCS8qIDYuIENoYW5nZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkgKi8KCglpZihjaGRpcih3b3JrZGlyKTwwKQoJCWNsaWVudF9lcnJvcj1lcnJubzsKCXN0YXJ0X2NoaWxkX2xpc3Rlbl9sb29wKCk7IC8qIFRoZSBhc3luYyBjaGFubmVsIGxpc3RlbmVyICovCgoJLyogTmVlZCB0byBzdGFydCB0aGlzIGFmdGVyIGdldHRpbmcgaW50byB0aGUgY29ycmVjdCBkaXJlY3RvcnkgKi8KCWlmKHdfdHJhal9mbGFnKQoJCXdfdHJhal9zaXplKCk7CglpZihyX3RyYWpfZmxhZykKCQlyX3RyYWpfc2l6ZSgpOwoKCWdldF9yZXNvbHV0aW9uKCk7IAkJLyogR2V0IG15IGNsb2NrIHJlc29sdXRpb24gKi8KCgkvKiA3LiBSdW4gdGhlIHRlc3QgKi8KCXN3aXRjaCh0ZXN0bnVtKSB7CgoJY2FzZSBUSFJFQURfV1JJVEVfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyB0aHJlYWRfd3JpdGVfdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3dyaXRlX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CiNpZmRlZiBIQVZFX1BSRUFECgljYXNlIFRIUkVBRF9QV1JJVEVfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyB0aHJlYWRfcHdyaXRlX3Rlc3RcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXRocmVhZF9wd3JpdGVfdGVzdCgobG9uZykwKTsKCQlicmVhazsKI2VuZGlmCgljYXNlIFRIUkVBRF9SRVdSSVRFX1RFU1QgOiAKCQlpZihjZGVidWc+PTEpCgkJewoJCQlwcmludGYoIkNoaWxkICVkIHJ1bm5pbmcgdGhyZWFkX3Jld3JpdGVfdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3J3cml0ZV90ZXN0KChsb25nKTApOwoJCWJyZWFrOwoJY2FzZSBUSFJFQURfUkVBRF9URVNUIDogCgkJaWYoY2RlYnVnPj0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBydW5uaW5nIHRocmVhZF9yZWFkX3Rlc3RcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXRocmVhZF9yZWFkX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CiNpZmRlZiBIQVZFX1BSRUFECgljYXNlIFRIUkVBRF9QUkVBRF9URVNUIDogCgkJaWYoY2RlYnVnPj0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBydW5uaW5nIHRocmVhZF9yZWFkX3Rlc3RcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXRocmVhZF9wcmVhZF90ZXN0KChsb25nKTApOwoJCWJyZWFrOwojZW5kaWYKCWNhc2UgVEhSRUFEX1JFUkVBRF9URVNUIDogCgkJaWYoY2RlYnVnPj0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBydW5uaW5nIHRocmVhZF9yZXJlYWRfdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3JyZWFkX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CgljYXNlIFRIUkVBRF9TVFJJREVfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyB0aHJlYWRfc3RyaWRlX3JlYWRfdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3N0cmlkZV9yZWFkX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CgljYXNlIFRIUkVBRF9SQU5ET01fUkVBRF9URVNUIDogCgkJaWYoY2RlYnVnPj0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBydW5uaW5nIHJhbmRvbSByZWFkIHRlc3RcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXRocmVhZF9yYW5yZWFkX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CgljYXNlIFRIUkVBRF9SQU5ET01fV1JJVEVfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyByYW5kb20gd3JpdGUgdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3JhbndyaXRlX3Rlc3QoKGxvbmcpMCk7CgkJYnJlYWs7CgljYXNlIFRIUkVBRF9SRVZFUlNFX1JFQURfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyByZXZlcnNlIHJlYWQgdGVzdFxuIiwoaW50KWNoaWQpOwoJCQlmZmx1c2goc3Rkb3V0KTsKCQl9CgkJdGhyZWFkX3JldmVyc2VfcmVhZF90ZXN0KChsb25nKTApOwoJCWJyZWFrOwoJY2FzZSBUSFJFQURfUkFORE9NX01JWF9URVNUIDogCgkJaWYoY2RlYnVnPj0xKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCBydW5uaW5nIG1peGVkIHdvcmtsb2FkIHRlc3RcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCXRocmVhZF9taXhfdGVzdCgobG9uZykwKTsKCQlicmVhazsKCWNhc2UgVEhSRUFEX0NMRUFOVVBfVEVTVCA6IAoJCWlmKGNkZWJ1Zz49MSkKCQl7CgkJCXByaW50ZigiQ2hpbGQgJWQgcnVubmluZyBjbGVhbnVwXG4iLChpbnQpY2hpZCk7CgkJCWZmbHVzaChzdGRvdXQpOwoJCX0KCQl0aHJlYWRfY2xlYW51cF90ZXN0KChsb25nKTApOwoJCWJyZWFrOwoJfTsKCWlmKGNkZWJ1Zz49MSkKCXsKCQlwcmludGYoIkNoaWxkICVkIGZpbmlzaGVkIHJ1bm5pbmcgdGVzdC5cbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCQoJLyogOC4gUmVsZWFzZSB0aGUgbGlzdGVuIGFuZCBzZW5kIHNvY2tldHMgdG8gdGhlIG1hc3RlciAqLwoJc3RvcF9jaGlsZF9saXN0ZW4obF9zb2NrKTsKCXN0b3BfY2hpbGRfc2VuZChzX3NvY2spOwoKCWV4aXQoMCk7Cn0KCi8qCiAqIENsaWVudHMgdGVsbCB0aGUgbWFzdGVyIHRoZWlyIHN0YXRpc3RpY3MsIHNldCB0aGUgc3RvcHBlZCBmbGFnLCBhbmQgc2V0IHNoYXJlZCBtZW1vcnkKICogY2hpbGRfZmxhZyB0byB0ZWxsIHRoZSBtYXN0ZXIgdGhleSBhcmUgZmluaXNoZWQuIEFsc28gZWFjaCBjbGllbnQgcmVwb3J0IGFsbCBzdGF0aXN0aWNzLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnRlbGxfbWFzdGVyX3N0YXRzKHRlc3RudW0gLCBjaGlkLCB0aHJvdWdocHV0LCBhY3R1YWwsIAoJCSBjcHVfdGltZSwgd2FsbF90aW1lLCBzdG9wX2ZsYWcsIGNoaWxkX2ZsYWcpCmludCB0ZXN0bnVtOyAKbG9uZyBsb25nIGNoaWQ7IApkb3VibGUgdGhyb3VnaHB1dCwgYWN0dWFsLCB3YWxsX3RpbWU7CmZsb2F0IGNwdV90aW1lOwpjaGFyIHN0b3BfZmxhZzsKbG9uZyBsb25nIGNoaWxkX2ZsYWc7Ci8qCnZvaWQKdGVsbF9tYXN0ZXJfc3RhdHMoaW50IHRlc3RudW0gLCBsb25nIGxvbmcgY2hpZCwgZG91YmxlIHR0aHJvdWdocHV0LCAKCQlkb3VibGUgYWN0dWFsLCBmbG9hdCBjcHVfdGltZSwgZmxvYXQgd2FsbF90aW1lLCAKCQljaGFyIHN0b3BfZmxhZywgbG9uZyBsb25nIGNoaWxkX2ZsYWcpCiovCiNlbHNlCnZvaWQKdGVsbF9tYXN0ZXJfc3RhdHModGVzdG51bSAsIGNoaWQsIHRocm91Z2hwdXQsIGFjdHVhbCwgY3B1X3RpbWUsIAoJd2FsbF90aW1lLCBzdG9wX2ZsYWcsIGNoaWxkX2ZsYWcpCmludCB0ZXN0bnVtOyAKbG9uZyBsb25nIGNoaWQ7IApkb3VibGUgdGhyb3VnaHB1dCwgYWN0dWFsLCB3YWxsX3RpbWU7CmNoYXIgc3RvcF9mbGFnOwpmbG9hdCBjcHVfdGltZTsKbG9uZyBsb25nIGNoaWxkX2ZsYWc7CiNlbmRpZgp7CglzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQgbWM7CgliemVybygmbWMsc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCkpOwoJbWMubV9jbGllbnRfbnVtYmVyID0gKGludCkgY2hpZDsKCW1jLm1fY2xpZW50X2Vycm9yID0gKGludCkgY2xpZW50X2Vycm9yOwoJbWMubV90aHJvdWdocHV0PSB0aHJvdWdocHV0OwoJbWMubV90ZXN0bnVtID0gdGVzdG51bTsKCW1jLm1fYWN0dWFsID0gYWN0dWFsOwoJbWMubV9jcHV0aW1lID0gY3B1X3RpbWU7CgltYy5tX3dhbGx0aW1lID0gd2FsbF90aW1lOwoJbWMubV9zdG9wX2ZsYWcgPSBzdG9wX2ZsYWc7CgltYy5tX2NoaWxkX2ZsYWcgPSBjaGlsZF9mbGFnOwoJbWMubV9jb21tYW5kID0gUl9TVEFUX0RBVEE7CgltYy5tX3ZlcnNpb24gPSBwcm90b192ZXJzaW9uOwoJaWYoY2RlYnVnPj0xKQoJewoJCXByaW50ZigiQ2hpbGQgJWQ6IFRlbGwgbWFzdGVyIHN0YXRzIGFuZCB0ZXJtaW5hdGVcbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCWNoaWxkX3NlbmQoc19zb2NrLCBjb250cm9sbGluZ19ob3N0X25hbWUsKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCAqKSZtYywgc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCkpOwp9CgkKLyoKICogU3RvcCB0aGUgbWFzdGVyIGxpc3RlbmVyIGxvb3Agc2VydmljZS4KICogQ3VycmVudGx5IHRoaXMgaXMgbm90IHVzZWQuIFRoZSBtYXN0ZXJfam9pbl9jb3VudAogKiB2YXJpYWJsZSBpcyB1c2VkIHRvIHRlcm1pbmF0ZSB0aGUgbG9vcCBzZXJ2aWNlLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnN0b3BfbWFzdGVyX2xpc3Rlbl9sb29wKHZvaWQpCiNlbHNlCnZvaWQKc3RvcF9tYXN0ZXJfbGlzdGVuX2xvb3AoKQojZW5kaWYKewoJaWYobWRlYnVnPj0xKQoJCXByaW50ZigiU3RvcHBpbmcgTWFzdGVyIGxpc3RlbiBsb29wIik7CglraWxsKG1hc3Rlcl9saXN0ZW5fcGlkLFNJR0tJTEwpOwp9CgoKLyoKICogQ2xpZW50cyB0ZWxsIHRoZSBtYXN0ZXIgdGhhdCBJIGFtIGF0IHRoZSBiYXJyaWVyIGFuZCByZWFkeQogKiBmb3IgdGhlIG1lc3NhZ2UgdG8gc3RhcnQgd29yay4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZAp0ZWxsX21hc3Rlcl9yZWFkeShsb25nIGxvbmcgY2hpZCkKI2Vsc2UKdm9pZAp0ZWxsX21hc3Rlcl9yZWFkeShjaGlkKQpsb25nIGxvbmcgY2hpZDsKI2VuZGlmCnsKCXN0cnVjdCBtYXN0ZXJfY29tbWFuZCBtYzsKCWJ6ZXJvKCZtYyxzaXplb2Yoc3RydWN0IG1hc3Rlcl9jb21tYW5kKSk7CglpZihjZGVidWc+PTEpCgl7CgkJcHJpbnRmKCJDaGlsZCAlZDogVGVsbCBtYXN0ZXIgdG8gZ29cbiIsKGludCljaGlkKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCW1jLm1fY29tbWFuZCA9IFJfRkxBR19EQVRBOwoJbWMubV92ZXJzaW9uID0gcHJvdG9fdmVyc2lvbjsKCW1jLm1fY2hpbGRfZmxhZyA9IENISUxEX1NUQVRFX1JFQURZOyAKCW1jLm1fY2xpZW50X251bWJlciA9IChpbnQpY2hpZDsgCgltYy5tX2NsaWVudF9lcnJvciA9IGNsaWVudF9lcnJvcjsKCWNoaWxkX3NlbmQoc19zb2NrLCBjb250cm9sbGluZ19ob3N0X25hbWUsKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCAqKSZtYywgc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCkpOwp9CgovKgogKiBDbGllbnRzIHdhaXQgYXQgYSBiYXJyaWVyIGZvciB0aGUgbWFzdGVyIHRvIHRlbGwgdGhlbQogKiB0byBiZWdpbiB3b3JrLiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGV5IHdhaXQuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKd2FpdF9mb3JfbWFzdGVyX2dvKGxvbmcgbG9uZyBjaGlkKQojZWxzZQp2b2lkCndhaXRfZm9yX21hc3Rlcl9nbyhjaGlkKQpsb25nIGxvbmcgY2hpZDsKI2VuZGlmCnsKCXN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kICpjbmM7CglzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgY2M7CgliemVybygmY2Msc2l6ZW9mKHN0cnVjdCBjbGllbnRfY29tbWFuZCkpOwoJY2hpbGRfbGlzdGVuKGxfc29jayxzaXplb2Yoc3RydWN0IGNsaWVudF9uZXV0cmFsX2NvbW1hbmQpKTsKCWNuYyA9IChzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCAqKWNoaWxkX3Jjdl9idWY7Cglzc2NhbmYoY25jLT5jX2NvbW1hbmQsIiVkIiwmY2MuY19jb21tYW5kKTsKCWlmKGNjLmNfY29tbWFuZCA9PSBSX1RFUk1JTkFURSB8fCBjYy5jX2NvbW1hbmQ9PVJfREVBVEgpCgl7CgkJaWYoY2RlYnVnKQoJCXsKCQkJcHJpbnRmKCJDaGlsZCAlZCByZWNlaXZlZCB0ZXJtaW5hdGUgb24gc3luYyBjaGFubmVsIGF0IGJhcnJpZXIgISFcbiIsKGludCljaGlkKTsKCQkJZmZsdXNoKHN0ZG91dCk7CgkJfQoJCWV4aXQoMSk7Cgl9CglpZihjZGVidWc+PTEpCgkJcHJpbnRmKCJDaGlsZCAlZCByZXR1cm4gZnJvbSB3YWl0X2Zvcl9tYXN0ZXJfZ29cbiIsKGludCljaGlkKTsKfQoKLyoKICogQ3JlYXRlIGEgbWFzdGVyIGxpc3RlbmVyIGZvciByZWNlaXZpbmcgZGF0YSBmcm9tIHRoZQogKiBtYW55IGNoaWxkcmVuLiBBcyB0aGUgY2hpbGRyZW4gZmluaXNoIHRoZXkgd2lsbCBzZW5kCiAqIHRoZWlyIHN0YXRpc3RpY3MgYW5kIHRlcm1pbmF0ZS4gV2hlbiB0aGUgbWFzdGVyX2pvaW5fY291bnQgCiAqIGdvZXMgdG8gemVybyB0aGVuIGl0IGlzIHRpbWUgdG8gc3RvcCB0aGlzIHNlcnZpY2UuCiAqIFdoZW4gdGhpcyBzZXJ2aWNlIGV4aXRzIHRoZW4gdGhlIHBhcmVudCB3aWxsIGtub3cKICogdGhhdCBhbGwgb2YgdGhlIGNoaWxkcmVuIGFyZSBkb25lLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcChpbnQgbnVtKQojZWxzZQp2b2lkCnN0YXJ0X21hc3Rlcl9saXN0ZW5fbG9vcChudW0pCmludCBudW07CiNlbmRpZgp7CglpbnQgaTsKCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCXN0cnVjdCBtYXN0ZXJfbmV1dHJhbF9jb21tYW5kICptbmM7CglzdHJ1Y3QgbWFzdGVyX2NvbW1hbmQgbWM7CglpbnQgdGVtcDsKCgltYXN0ZXJfam9pbl9jb3VudD1udW07CgltYXN0ZXJfbGlzdGVuX3BpZD1mb3JrKCk7CglpZihtYXN0ZXJfbGlzdGVuX3BpZCE9MCkKCQlyZXR1cm47CglpZihtZGVidWc+PTEpCgkJcHJpbnRmKCJTdGFydGluZyBNYXN0ZXIgbGlzdGVuIGxvb3AgbSAlZCBjICVkIGNvdW50ICVkXG4iLG1hc3Rlcl9pb3pvbmUsIAoJCQljbGllbnRfaW96b25lLG51bSk7CgoJd2hpbGUobWFzdGVyX2pvaW5fY291bnQpCgl7CgkJbWFzdGVyX2xpc3RlbihtYXN0ZXJfbGlzdGVuX3NvY2tldCxzaXplb2Yoc3RydWN0IG1hc3Rlcl9uZXV0cmFsX2NvbW1hbmQpKTsKCQltbmM9KHN0cnVjdCBtYXN0ZXJfbmV1dHJhbF9jb21tYW5kICopJm1hc3Rlcl9yY3ZfYnVmWzBdOwoJCQoJCS8qCgkJICogQ29udmVydCBmcm9tIHN0cmluZyBmb3JtYXQgdG8gYXJjaCBmb3JtYXQKCQkgKi8KCQlzc2NhbmYobW5jLT5tX2NvbW1hbmQsIiVkIiwmbWMubV9jb21tYW5kKTsKCQlzc2NhbmYobW5jLT5tX2NsaWVudF9udW1iZXIsIiVkIiwmbWMubV9jbGllbnRfbnVtYmVyKTsKCQlzc2NhbmYobW5jLT5tX2NsaWVudF9lcnJvciwiJWQiLCZtYy5tX2NsaWVudF9lcnJvcik7CgkJc3NjYW5mKG1uYy0+bV92ZXJzaW9uLCIlZCIsJm1jLm1fdmVyc2lvbik7CgkJaWYobWMubV92ZXJzaW9uICE9IHByb3RvX3ZlcnNpb24pCgkJewoJCQlwcmludGYoIkNsaWVudCAjICVkIGlzIG5vdCBydW5uaW5nIHRoZSBzYW1lIHZlcnNpb24gb2YgSW96b25lICFcbiIsCgkJCQltYy5tX2NsaWVudF9udW1iZXIpOwoJCX0JCQoJCWlmKG1jLm1fY2xpZW50X2Vycm9yICE9IDApCgkJewoJCQlwcmludGYoIlxuQ2xpZW50ICMgJWQgcmVwb3J0aW5nIGFuIGVycm9yICVzICFcbiIsCgkJCQltYy5tX2NsaWVudF9udW1iZXIsc3RyZXJyb3IobWMubV9jbGllbnRfZXJyb3IpKTsKCQl9CQkKI2lmZGVmIE5PX1BSSU5UX0xMRAoJCXNzY2FuZihtbmMtPm1fY2hpbGRfZmxhZywiJWxkIiwmbWMubV9jaGlsZF9mbGFnKTsKI2Vsc2UKCQlzc2NhbmYobW5jLT5tX2NoaWxkX2ZsYWcsIiVsbGQiLCZtYy5tX2NoaWxkX2ZsYWcpOwojZW5kaWYKCQlzc2NhbmYobW5jLT5tX2FjdHVhbCwiJWYiLCZtYy5tX2FjdHVhbCk7CgkJc3NjYW5mKG1uYy0+bV90aHJvdWdocHV0LCIlZiIsJm1jLm1fdGhyb3VnaHB1dCk7CgkJc3NjYW5mKG1uYy0+bV9jcHV0aW1lLCIlZiIsJm1jLm1fY3B1dGltZSk7CgkJc3NjYW5mKG1uYy0+bV93YWxsdGltZSwiJWYiLCZtYy5tX3dhbGx0aW1lKTsKCQlzc2NhbmYobW5jLT5tX3N0b3BfZmxhZywiJWQiLCZ0ZW1wKTsKCQltYy5tX3N0b3BfZmxhZyA9IHRlbXA7CgoJCXN3aXRjaChtYy5tX2NvbW1hbmQpIHsKCQljYXNlIFJfU1RBVF9EQVRBOgoJCQlpID0gbWMubV9jbGllbnRfbnVtYmVyOwoJCQlpZihtZGVidWcpCgkJCQlwcmludGYoImxvb3A6IFJfU1RBVF9EQVRBIGZvciBjbGllbnQgJWRcbiIsaSk7CgkJCWNoaWxkX3N0YXQgPSAoc3RydWN0IGNoaWxkX3N0YXRzICopJnNobWFkZHJbaV07CQoJCQljaGlsZF9zdGF0LT5mbGFnID0gbWMubV9jaGlsZF9mbGFnOwoJCQljaGlsZF9zdGF0LT5hY3R1YWwgPSBtYy5tX2FjdHVhbDsKCQkJY2hpbGRfc3RhdC0+dGhyb3VnaHB1dCA9IG1jLm1fdGhyb3VnaHB1dDsKCQkJY2hpbGRfc3RhdC0+Y3B1dGltZSA9IG1jLm1fY3B1dGltZTsKCQkJY2hpbGRfc3RhdC0+d2FsbHRpbWUgPSBtYy5tX3dhbGx0aW1lOwoJCQkqc3RvcF9mbGFnID0gbWMubV9zdG9wX2ZsYWc7CgkJCW1hc3Rlcl9qb2luX2NvdW50LS07CgkJCWJyZWFrOwoJCWNhc2UgUl9GTEFHX0RBVEE6CgkJCWlmKG1kZWJ1ZykKCQkJCXByaW50ZigibG9vcDogUl9GTEFHX0RBVEE6IENsaWVudCAlZCBmbGFnICVkIFxuIiwKCQkJCSAgKGludCltYy5tX2NsaWVudF9udW1iZXIsCgkJCQkgIChpbnQpbWMubV9jaGlsZF9mbGFnKTsKCQkJaSA9IG1jLm1fY2xpZW50X251bWJlcjsKCQkJY2hpbGRfc3RhdCA9IChzdHJ1Y3QgY2hpbGRfc3RhdHMgKikmc2htYWRkcltpXTsJCgkJCWNoaWxkX3N0YXQtPmZsYWcgPSAobG9uZyBsb25nKShtYy5tX2NoaWxkX2ZsYWcpOwoJCQlicmVhazsKCQljYXNlIFJfU1RPUF9GTEFHOgoJCQlpZihtZGVidWcpCgkJCSAgcHJpbnRmKCJNYXN0ZXIgbG9vcDogUl9TVE9QX0ZMQUc6IENsaWVudCAlZCBTVE9QX0ZMQUcgXG4iLAoJCQkJICAoaW50KW1jLm1fY2xpZW50X251bWJlcik7CgkJCSpzdG9wX2ZsYWc9MTsKCQkJZGlzdHJpYnV0ZV9zdG9wKCk7CgkJCWJyZWFrOwoJCX0KCQkJCgl9CiAgICAgICAgc2xlZXAoMik7IC8qIExldCB0aGUgY2xpZW50cyByZXBvcnQgcmVzdWx0cyBiZWZvcmUgZXhpdGluZy4KICAgICAgICAgICAgICAgICAgICAgQWxzbywgZXhpdGluZyB0b28gcXVpY2tseSBjYW4gY2xvc2UgdGhlIGFzeW5jCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldCB0byB0aGUgY2hpbGQsIGFuZCBjYXVzZSBpdCB0byBiZWNvbWUgaWxsLgogICAgICAgICAgICAgICAgICAgICBPbiBTb2xhcmlzLCBpdCBnZXRzIHN0dWNrIGluIGEgMD1yZWFkKCkgbG9vcC4gKi8KCglleGl0KDApOwp9Ci8qCiAqIENyZWF0ZSBhIGNsaWVudCBsaXN0ZW5lciBmb3IgcmVjZWl2aW5nIGFzeW5jIGRhdGEgZnJvbSB0aGUKICogdGhlIG1hc3Rlci4gCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3RhcnRfY2hpbGRfbGlzdGVuX2xvb3Aodm9pZCkKI2Vsc2UKdm9pZApzdGFydF9jaGlsZF9saXN0ZW5fbG9vcCgpCiNlbmRpZgp7CglpbnQgaTsKCXN0cnVjdCBjaGlsZF9zdGF0cyAqY2hpbGRfc3RhdDsKCXN0cnVjdCBjbGllbnRfY29tbWFuZCBjYzsKCXN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kICpjbmM7CgoJY2xpZW50X2xpc3Rlbl9waWQ9Zm9yaygpOwoJaWYoY2xpZW50X2xpc3Rlbl9waWQhPTApCgkJcmV0dXJuOwoJaWYoY2RlYnVnPj0xKQoJCXByaW50ZigiQ2hpbGQgJWQgc3RhcnRpbmcgY2xpZW50IGxpc3RlbiBsb29wXG4iLChpbnQpY2hpZCk7CgoJd2hpbGUoMSkKCXsKCQliemVybygmY2Msc2l6ZW9mKHN0cnVjdCBjbGllbnRfY29tbWFuZCkpOwoJCWNoaWxkX2xpc3Rlbl9hc3luYyhsX2FzeW5jX3NvY2ssc2l6ZW9mKHN0cnVjdCBjbGllbnRfbmV1dHJhbF9jb21tYW5kKSk7CgkJY25jPShzdHJ1Y3QgY2xpZW50X25ldXRyYWxfY29tbWFuZCAqKSZjaGlsZF9hc3luY19yY3ZfYnVmOwoJCS8qCgkJICogQ29udmVydCBmcm9tIHN0cmluZyBmb3JtYXQgdG8gYXJjaCBmb3JtYXQKCSAJICovCgkJc3NjYW5mKGNuYy0+Y19jb21tYW5kLCIlZCIsJmNjLmNfY29tbWFuZCk7CgkJc3NjYW5mKGNuYy0+Y19jbGllbnRfbnVtYmVyLCIlZCIsJmNjLmNfY2xpZW50X251bWJlcik7CgkJc3NjYW5mKGNuYy0+Y19zdG9wX2ZsYWcsIiVkIiwmY2MuY19zdG9wX2ZsYWcpOwoKCQlzd2l0Y2goY2MuY19jb21tYW5kKSB7CgkJY2FzZSBSX1NUT1BfRkxBRzoKCQkJaSA9IGNjLmNfY2xpZW50X251bWJlcjsKCQkJaWYoY2RlYnVnKQoJCQkJcHJpbnRmKCJjaGlsZCBsb29wOiBSX1NUT1BfRkxBRyBmb3IgY2xpZW50ICVkXG4iLGkpOwoJCQljaGlsZF9zdGF0ID0gKHN0cnVjdCBjaGlsZF9zdGF0cyAqKSZzaG1hZGRyW2ldOwkKCQkJKnN0b3BfZmxhZyA9IGNjLmNfc3RvcF9mbGFnOyAvKiBJbiBzaGFyZWQgbWVtb3J5IHdpdGggb3RoZXIgY29weSAqLwoJCQlzZW50X3N0b3A9MTsKCQkJYnJlYWs7CgkJY2FzZSBSX1RFUk1JTkFURToKCQkJaWYoY2RlYnVnKQoJCQl7CgkJCQlwcmludGYoIkNoaWxkIGxvb3A6IFJfVEVSTUlOQVRFOiBDbGllbnQgJWQgXG4iLAoJCQkJICAoaW50KWNjLmNfY2xpZW50X251bWJlcik7CgkJCQlmZmx1c2goc3Rkb3V0KTsKCQkJfQoJCQlzbGVlcCgyKTsKCQkJLyogQXluYyBsaXN0ZW5lciBnb2VzIGF3YXkgKi8KCQkJc3RvcF9jaGlsZF9saXN0ZW4obF9hc3luY19zb2NrKTsKCQkJZXhpdCgwKTsKCQljYXNlIFJfREVBVEg6CgkJCWlmKGNkZWJ1ZykKCQkJewoJCQkJcHJpbnRmKCJDaGlsZCBsb29wOiBSX0RFQVRIOiBDbGllbnQgJWQgXG4iLAoJCQkJICAoaW50KWNjLmNfY2xpZW50X251bWJlcik7CgkJCQlmZmx1c2goc3Rkb3V0KTsKCQkJfQoJCQlpID0gY2MuY19jbGllbnRfbnVtYmVyOwoJCQljaGlsZF9yZW1vdmVfZmlsZXMoaSk7CgkJCXNsZWVwKDIpOwoJCQkvKiBBeW5jIGxpc3RlbmVyIGdvZXMgYXdheSAqLwoJCQlzdG9wX2NoaWxkX2xpc3RlbihsX2FzeW5jX3NvY2spOwoJCQlleGl0KDApOwoJCX0KCQkJCgl9Cn0KCi8qCiAqIFRoZSBjb250cm9sbGluZyBwcm9jZXNzICJtYXN0ZXIiIHRlbGxzIHRoZSBjaGlsZHJlbiB0byBiZWdpbi4KICovCgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKdGVsbF9jaGlsZHJlbl9iZWdpbihsb25nIGxvbmcgY2hpbGRudW0pCiNlbHNlCnZvaWQKdGVsbF9jaGlsZHJlbl9iZWdpbihjaGlsZG51bSkKbG9uZyBsb25nIGNoaWxkbnVtOwojZW5kaWYKewoJc3RydWN0IGNsaWVudF9jb21tYW5kIGNjOwoJaW50IHg7CgliemVybygmY2Msc2l6ZW9mKHN0cnVjdCBjbGllbnRfY29tbWFuZCkpOwoJeCA9IChpbnQpIGNoaWxkbnVtOwoJaWYobWRlYnVnPj0xKQoJCXByaW50ZigiTWFzdGVyOiBUZWxsIGNoaWxkICVkIHRvIGJlZ2luXG4iLHgpOwoJY2MuY19jb21tYW5kID0gUl9GTEFHX0RBVEE7CgljYy5jX2NoaWxkX2ZsYWcgPSBDSElMRF9TVEFURV9CRUdJTjsgCgljYy5jX2NsaWVudF9udW1iZXIgPSAoaW50KWNoaWxkbnVtOyAKCW1hc3Rlcl9zZW5kKG1hc3Rlcl9zZW5kX3NvY2tldHNbeF0sY2hpbGRfaWRlbnRzW3hdLmNoaWxkX25hbWUsICZjYyxzaXplb2Yoc3RydWN0IGNsaWVudF9jb21tYW5kKSk7Cn0KCi8qCiAqIFRoZSBtYXN0ZXIgd2FpdHMgaGVyZSBmb3IgYWxsIG9mIHRoZSB0aGUgY2hpbGRyZW4gdG8gdGVybWluYXRlLgogKiBXaGVuIHRoZSBjaGlsZHJlbiBhcmUgZG9uZSB0aGUgdGhlIG1hc3Rlcl9qb2luX2NvdW50IHdpbGwgYmUgYXQgemVybwogKiBhbmQgdGhlIG1hc3Rlcl9saXN0ZW5fbG9vcCB3aWxsIGV4aXQuIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIHRoaXMgdG8gaGFwcGVuLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCndhaXRfZGlzdF9qb2luKHZvaWQpCiNlbHNlCnZvaWQKd2FpdF9kaXN0X2pvaW4oKQojZW5kaWYKewoJd2FpdCgwKTsKCWlmKG1kZWJ1ZykKCQlwcmludGYoIk1hc3RlcjogQWxsIGNoaWxkcmVuIGhhdmUgZmluaXNoZWQuIFNlbmRpbmcgdGVybWluYXRlXG4iKTsKCXRlcm1pbmF0ZV9jaGlsZF9hc3luYygpOyAvKiBBbGwgY2hpbGRyZW4gYXJlIGRvbmUsIHNvIHRlcm1pbmF0ZSB0aGVpciBhc3luYyBjaGFubmVsICovCgljdXJyZW50X2NsaWVudF9udW1iZXI9MDsgLyogc3RhcnQgYWdhaW4gKi8KfQoKCi8qIAogKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIGEgZmlsZSB0aGF0IGNvbnRhaW5zIGNsaWVudCBpbmZvcm1hdGlvbi4gCiAqIFRoZSBpbmZvcm1hdGlvbiBpczoKICogCWNsaWVudCBuYW1lIChETlMgdXNhYmxlIG5hbWUpCiAqCWNsaWVudCB3b3JraW5nIGRpcmVjdG9yeSAod2hlcmUgdG8gcnVuIHRoZSB0ZXN0KQogKiAJY2xpZW50IGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRoZSBJb3pvbmUgZXhlY3V0YWJsZS4KICoKICogSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBhIGxpbmUgaXMgYSAjIHRoZW4gaXQgaXMgYSBjb21tZW50LgogKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2xpZW50cyBpcyBNQVhTVFJFQU1TLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKZ2V0X2NsaWVudF9pbmZvKHZvaWQpCiNlbHNlCmludApnZXRfY2xpZW50X2luZm8oKQojZW5kaWYKewoJRklMRSAqZmQ7CgljaGFyICpyZXQxOwoJaW50IGNvdW50OwoJY2hhciBidWZmZXJbMjAwXTsKCWNvdW50PTA7CglmZD1mb3BlbihjbGllbnRfZmlsZW5hbWUsInIiKTsKCWlmKGZkID09IChGSUxFICopTlVMTCkKCXsKCQlwcmludGYoIlVuYWJsZSB0byBvcGVuIGNsaWVudCBmaWxlIFwiJXNcIlxuIiwKCQkJY2xpZW50X2ZpbGVuYW1lKTsKCQlleGl0KDE3Nik7Cgl9Cgl3aGlsZSgxKQoJewogICAgICAgICAgCWlmIChjb3VudCA+PSBNQVhTVFJFQU1TKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAkgIHByaW50ZigiVG9vIG1hbnkgbGluZXMgaW4gY2xpZW50IGZpbGUgLSBtYXggb2YgJWQgc3VwcG9ydGVkXG4iLAoJCQlNQVhTVFJFQU1TKTsKICAgICAgICAgICAgCSAgZXhpdCg3KTsKICAgICAgICAgIAl9CgkJcmV0MT1mZ2V0cyhidWZmZXIsMjAwLGZkKTsKCQlpZihyZXQxPT0gKGNoYXIgKilOVUxMKQoJCQlicmVhazsKCQljb3VudCs9cGFyc2VfY2xpZW50X2xpbmUoYnVmZmVyLGNvdW50KTsKCX0KCWZjbG9zZShmZCk7CglyZXR1cm4oY291bnQpOwp9CgoKLyoKICogVGhpcyBmdW5jdGlvbiBwYXJzZXMgYSBsaW5lIGZyb20gdGhlIGNsaWVudCBmaWxlLiBJdCBpcwogKiBsb29raW5nIGZvcjoKICoJQ2xpZW50IG5hbWUgIChETlMgdXNhYmxlKQogKglDbGllbnQgd29ya2luZyBkaXJlY3RvcnkgKHdoZXJlIHRvIHJ1biB0aGUgdGVzdCApCiAqCUNsaWVudCBwYXRoIHRvIElvem9uZSBleGVjdXRhYmxlLgogKgogKiBMaW5lcyB0aGF0IHN0YXJ0IHdpdGggIyBhcmUgY29tbWVudHMuCiAqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQgCnBhcnNlX2NsaWVudF9saW5lKGNoYXIgKmJ1ZmZlcixpbnQgbGluZV9udW0pCiNlbHNlCmludApwYXJzZV9jbGllbnRfbGluZShidWZmZXIsIGxpbmVfbnVtKQpjaGFyICpidWZmZXI7CmludCBsaW5lX251bTsKI2VuZGlmCnsKCWludCBudW07CgkvKiBGb3JtYXQgaXMgY2xpZW50bmFtZSwgd29ya2RpciwgZXhlY3V0ZV9wYXRoICovCgkvKiBJZiBjb2x1bW4gIzEgY29udGFpbnMgYSAjIHN5bWJvbCB0aGVuIHNraXAgdGhpcyBsaW5lICovCgoJaWYoYnVmZmVyWzBdPT0nIycpCgkJcmV0dXJuKDApOwoJbnVtPXNzY2FuZihidWZmZXIsIiVzICVzICVzICVzXG4iLAoJCWNoaWxkX2lkZW50c1tsaW5lX251bV0uY2hpbGRfbmFtZSwKCQljaGlsZF9pZGVudHNbbGluZV9udW1dLndvcmtkaXIsCgkJY2hpbGRfaWRlbnRzW2xpbmVfbnVtXS5leGVjdXRlX3BhdGgsCgkJY2hpbGRfaWRlbnRzW2xpbmVfbnVtXS5maWxlX25hbWUpOwoJaWYoKG51bSA+IDApICYmIChudW0gIT0zKSAmJiAobnVtICE9NCkpCgl7CgkJcHJpbnRmKCJCYWQgQ2xpZW50IElkZW50aXR5IGF0IGVudHJ5ICVkXG4iLGxpbmVfbnVtKTsKCQlwcmludGYoIkNsaWVudDogLT4gJXMgIFdvcmtkaXI6IC0+ICVzICBFeGVjdXRlX3BhdGg6IC0+ICVzIFxuIiwKCQljaGlsZF9pZGVudHNbbGluZV9udW1dLmNoaWxkX25hbWUsCgkJY2hpbGRfaWRlbnRzW2xpbmVfbnVtXS53b3JrZGlyLAoJCWNoaWxkX2lkZW50c1tsaW5lX251bV0uZXhlY3V0ZV9wYXRoKTsKCQlleGl0KDIwMyk7Cgl9CglpZihudW0gPT0gNCkKCQltZmZsYWcrKzsKCglyZXR1cm4oMSk7Cn0KCi8qIAogKiBUaGlzIGlzIGEgbWVjaGFuaXNtIHRoYXQgdGhlIGNoaWxkIHVzZXMgdG8gcmVtb3ZlIGFsbAogKiBvZiBpdHMgdGVtcG9yYXJ5IGZpbGVzLiBPbmx5IHVzZWQgYXQgdGVybWluYXRlIHRpbWUuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKY2hpbGRfcmVtb3ZlX2ZpbGVzKGludCBpKQojZWxzZQp2b2lkCmNoaWxkX3JlbW92ZV9maWxlcyhpKQppbnQgaTsKI2VuZGlmCnsKCgljaGFyICpkdW1teWZpbGVbTUFYU1RSRUFNU107ICAgICAgICAgICAvKiBuYW1lIG9mIGR1bW15IGZpbGUgICAgICovCglkdW1teWZpbGVbaV09KGNoYXIgKiltYWxsb2MoKHNpemVfdClNQVhOQU1FU0laRSk7CglpZihtZmZsYWcpCgl7CgkJc3ByaW50ZihkdW1teWZpbGVbaV0sIiVzIixmaWxlYXJyYXlbaV0pOwoJfQoJZWxzZQoJewoJCXNwcmludGYoZHVtbXlmaWxlW2ldLCIlcy5EVU1NWS4lZCIsZmlsZWFycmF5W2ldLGkpOwoJfQoJaWYoY2RlYnVnKQoJewoJCXByaW50ZigiQ2hpbGQgJWQgcmVtb3ZlOiAlcyBcbiIsKGludCljaGlkLCBkdW1teWZpbGVbaV0pOwoJfQoJaWYoY2hlY2tfZmlsZW5hbWUoZHVtbXlmaWxlW2ldKSkKCQl1bmxpbmsoZHVtbXlmaWxlW2ldKTsKfQoKCQovKgogKiBUaGUgbWFzdGVyIHRlbGxzIHRoZSBjaGlsZCBhc3luYyBsaXN0ZW5lciB0aGF0IGl0IGlzIHRpbWUKICogdG8gdGVybWluYXRlIGl0cyBzZXJ2aWNlcy4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZAp0ZXJtaW5hdGVfY2hpbGRfYXN5bmModm9pZCkKI2Vsc2UKdm9pZAp0ZXJtaW5hdGVfY2hpbGRfYXN5bmMoKQojZW5kaWYKewoJaW50IGk7CglzdHJ1Y3QgY2xpZW50X2NvbW1hbmQgY2M7CgliemVybygmY2Msc2l6ZW9mKHN0cnVjdCBjbGllbnRfY29tbWFuZCkpOwoJY2MuY19jb21tYW5kID0gUl9URVJNSU5BVEU7Cglmb3IoaT0wO2k8bnVtX2NoaWxkO2krKykKCXsKCQljaGlsZF9pZGVudHNbaV0uc3RhdGUgPSBDX1NUQVRFX1pFUk87CgkJY2MuY19jbGllbnRfbnVtYmVyID0gKGludClpOyAKCQlpZihtZGVidWcpCgkJCXByaW50ZigiTWFzdGVyIHRlcm1pbmF0aW5nIGFzeW5jIGNoYW5uZWxzIHRvIGNoaWxkcmVuLlxuIik7CgkJbWFzdGVyX3NlbmQobWFzdGVyX3NlbmRfYXN5bmNfc29ja2V0c1tpXSxjaGlsZF9pZGVudHNbaV0uY2hpbGRfbmFtZSwgJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCX0KfQoKLyoKICogVGhlIG1hc3RlciBoYXMgcmVjZWl2ZWQgYW4gdXBkYXRlIHRvIHRoZSBzdG9wIGZsYWcgYW5kIGlzCiAqIG5vdyBkaXN0cmlidXRpbmcgdGhpcyB0byBhbGwgb2YgdGhlIGNsaWVudHMuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZGlzdHJpYnV0ZV9zdG9wKHZvaWQpCiNlbHNlCnZvaWQKZGlzdHJpYnV0ZV9zdG9wKCkKI2VuZGlmCnsKCWludCBpOwoJc3RydWN0IGNsaWVudF9jb21tYW5kIGNjOwoKCS8qCgkgKiBPbmx5IHNlbmQgb25lIHN0b3AgdG8gdGhlIGNsaWVudHMuIEVhY2ggY2xpZW50IHdpbGwKCSAqIHNlbmQgc3RvcCB0byB0aGUgbWFzdGVyLCBidXQgdGhlIG1hc3RlciBvbmx5IG5lZWRzCgkgKiB0byBkaXN0cmlidXRlIHRoZSBmaXJzdCBzdG9wLiBXaXRob3V0IHRoaXMsIHRoZSAKCSAqIG1hc3RlciBtYXkgZGlzdHJpYnV0ZSB0b28gbWFueSBzdG9wcyBhbmQgb3ZlcmZsb3cKCSAqIHRoZSBzb2NrZXQgYnVmZmVyIG9uIHRoZSBjbGllbnQuCgkgKi8KCWlmKHNlbnRfc3RvcCkKCXsKCQlpZihtZGVidWcpCgkJewoJCSAgc19jb3VudCsrOwoJCSAgcHJpbnRmKCJNYXN0ZXIgbm90IHNlbmQgc3RvcCAlZFxuIixzX2NvdW50KTsKCQl9CgkJcmV0dXJuOwoJfQoJYnplcm8oJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCWNjLmNfY29tbWFuZCA9IFJfU1RPUF9GTEFHOwoJY2MuY19zdG9wX2ZsYWcgPSAxOwoJZm9yKGk9MDtpPG51bV9jaGlsZDtpKyspCgl7CgkJY2MuY19jbGllbnRfbnVtYmVyID0gKGludClpOyAKCQlpZihtZGVidWcpCgkJCXByaW50ZigiTWFzdGVyIGRpc3RyaWJ1dGluZyBzdG9wIGZsYWcgdG8gY2hpbGQgJWRcbiIsaSk7CgkJbWFzdGVyX3NlbmQobWFzdGVyX3NlbmRfYXN5bmNfc29ja2V0c1tpXSxjaGlsZF9pZGVudHNbaV0uY2hpbGRfbmFtZSwgJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCX0KCXNlbnRfc3RvcD0xOwp9CgovKgogKiBDaGlsZCBpcyBzZW5kaW5nIGl0cyBzdG9wIGZsYWcgdG8gdGhlIG1hc3Rlci4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApzZW5kX3N0b3Aodm9pZCkKI2Vsc2UKdm9pZApzZW5kX3N0b3AoKQojZW5kaWYKewoJc3RydWN0IG1hc3Rlcl9jb21tYW5kIG1jOwoKCWJ6ZXJvKCZtYywgc2l6ZW9mKHN0cnVjdCBtYXN0ZXJfY29tbWFuZCkpOwoJbWMubV9jb21tYW5kID0gUl9TVE9QX0ZMQUc7CgltYy5tX3ZlcnNpb24gPSBwcm90b192ZXJzaW9uOwoJbWMubV9jbGllbnRfbnVtYmVyID0gY2hpZDsKCW1jLm1fY2xpZW50X2Vycm9yID0gY2xpZW50X2Vycm9yOwoJaWYoY2RlYnVnKQoJewoJCXByaW50ZigiQ2hpbGQgJWQgc2VuZGluZyBzdG9wIGZsYWcgdG8gbWFzdGVyXG4iLChpbnQpY2hpZCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiAgICAgICAgY2hpbGRfc2VuZChzX3NvY2ssIGNvbnRyb2xsaW5nX2hvc3RfbmFtZSwoc3RydWN0IG1hc3Rlcl9jb21tYW5kICopJm1jLCBzaXplb2Yoc3RydWN0IG1hc3Rlcl9jb21tYW5kKSk7CgljbGllbnRfZXJyb3I9MDsgIC8qIGNsZWFyIGVycm9yLCBpdCBoYXMgYmVlbiBkZWxpdmVyZWQgKi8KfQoKLyoKICogVGhpcyBpcyB2ZXJ5IHRyaWNreSBzdHVmZi4gVGhlcmUgYXJlIHBvaW50cyBpbiB0aW1lIHdoZW4gCiAqIHNvbWVvbmUgY2FuIGhpdCBjb250cm9sLWMgYW5kIGNhdXNlIHRoZSBtYXN0ZXIgdG8gd2FudCB0byBkaWUuCiAqIE9rLi5ub3cgaG93IGRvZXMgdGhlIG1hc3RlciBjb250YWN0IGFsbCB0aGUgY2xpZW50cyBhbmQgdGVsbAogKiB0aGVtIHRvIHN0b3AgPyAgVGhlIGNsaWVudHMgbWF5IGJlIGluIDMgZGlmZmVyZW50IHN0YXRlcy4KICogTm90IHN0YXJ0ZWQgeWV0LCBKb2luZWQgYW5kIHdhaXRpbmcgZm9yIHRoZSBXSE8gaW5mb3JtYXRpb24sIAogKiBvciBhdCB0aGUgYmFycmllci4gIElmIHRoZSBjbGllbnQgaXMgbm90IHN0YXJ0ZWQuLi4gY29vbC4KICogaWdub3JlIGl0LiBJZiB0aGUgY2xpZW50IGhhcyBqb2luZWQgYW5kIGlzIHdhaXRpbmcgYXQgV0hPCiAqIHRoZW4gdGhlIGNsaWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzeW5jIGxpc3RlbmVyIHlldC4gU28gCiAqIHRoZSBtYXN0ZXIgb25seSBuZWVkcyB0byB0ZWxsIHRoZSBjbGllbnQgKHN5bmMpIGNoYW5uZWwKICogdG8gdGVybWluYXRlLiBJZiB0aGUgY2xpZW50IGlzIGF0IHRoZSBiYXJyaWVyIHRoZW4gdGhlIAogKiBjbGllbnQgaGFzIHR3byBwcm9jZXNzZXMuIE9uZSBhdCB0aGUgYmFycmllciBhbmQgYW5vdGhlcgogKiB0aGF0IGlzIHByb3ZpZGluZyB0aGUgYXN5bmMgc2VydmljZXMuIFNvLi4uIHRoZSBtYXN0ZXIKICogbmVlZHMgdG8gdGVybWluYXRlIGJvdGggb2YgdGhlc2UgcHJvY2Vzc2VzLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmNsZWFudXBfY2hpbGRyZW4odm9pZCkKI2Vsc2UKdm9pZApjbGVhbnVwX2NoaWxkcmVuKCkKI2VuZGlmCnsKCWludCBpOwoJc3RydWN0IGNsaWVudF9jb21tYW5kIGNjOwoJYnplcm8oJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCWNjLmNfY29tbWFuZCA9IFJfREVBVEg7Cglmb3IoaT0wO2k8bnVtX2NoaWxkO2krKykKCXsKCQljYy5jX2NsaWVudF9udW1iZXIgPSAoaW50KWk7IAoJCS8qIENoaWxkIG5vdCBzdGFydGVkIHlldCAqLwoJCWlmKGNoaWxkX2lkZW50c1tpXS5zdGF0ZSA9PSBDX1NUQVRFX1pFUk8pCgkJCTsKCQkvKiBDaGlsZCBpcyB3YWl0aW5nIGZvciB3aG8gaW5mbyAqLwoJCWlmKGNoaWxkX2lkZW50c1tpXS5zdGF0ZSA9PSBDX1NUQVRFX1dBSVRfV0hPKQoJCXsKCQkJaWYobWRlYnVnKQoJCQkJcHJpbnRmKCJNYXN0ZXIgc2VuZGluZyBzaWduYWxlZCBkZWF0aCB0byBjaGlsZCAhIVxuIik7CgkJCW1hc3Rlcl9zZW5kKG1hc3Rlcl9zZW5kX3NvY2tldHNbaV0sY2hpbGRfaWRlbnRzW2ldLmNoaWxkX25hbWUsICZjYyxzaXplb2Yoc3RydWN0IGNsaWVudF9jb21tYW5kKSk7CgkJfQoJCS8qIENoaWxkIGlzIHdhaXRpbmcgYXQgdGhlIGJhcnJpZXIgKi8KCQlpZihjaGlsZF9pZGVudHNbaV0uc3RhdGUgPT0gQ19TVEFURV9XQUlUX0JBUlJJRVIpCgkJewoJCQlpZihtZGVidWcpCgkJCQlwcmludGYoIk1hc3RlciBzZW5kaW5nIHNpZ25hbGVkIGRlYXRoIHRvIGNoaWxkICEhXG4iKTsKCQkJbWFzdGVyX3NlbmQobWFzdGVyX3NlbmRfc29ja2V0c1tpXSxjaGlsZF9pZGVudHNbaV0uY2hpbGRfbmFtZSwgJmNjLHNpemVvZihzdHJ1Y3QgY2xpZW50X2NvbW1hbmQpKTsKCQkJaWYobWRlYnVnKQoJCQkJcHJpbnRmKCJNYXN0ZXIgc2VuZGluZyBzaWduYWxlZCBkZWF0aCB0byBjaGlsZCBhc3luYyAhIVxuIik7CgkJCW1hc3Rlcl9zZW5kKG1hc3Rlcl9zZW5kX2FzeW5jX3NvY2tldHNbaV0sY2hpbGRfaWRlbnRzW2ldLmNoaWxkX25hbWUsICZjYyxzaXplb2Yoc3RydWN0IGNsaWVudF9jb21tYW5kKSk7CgkJfQoJCQkKCX0KfQoKLyoKICogVGhpcyBjbG9zZXMgdGhlIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCB3ZXJlIGNyZWF0ZWQgZm9yIHRoZSBtYXN0ZXIgc2VuZCBhbmQgYXN5bmMgc2VuZAogKiBhdCB0aGUgZW5kIG9mIGVhY2ggcGhhc2Ugb2YgdGhlIHRocm91Z2hwdXQgdGVzdGluZy4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApjbGVhbnVwX2NvbW0odm9pZCkKI2Vsc2UKdm9pZApjbGVhbnVwX2NvbW0oKQojZW5kaWYKewoJaW50IGk7Cglmb3IoaT0wO2k8bnVtX2NoaWxkO2krKykKCXsKICAgICAgICAJY2xvc2UobWFzdGVyX3NlbmRfc29ja2V0c1tpXSk7CiAgICAgICAgCWNsb3NlKG1hc3Rlcl9zZW5kX2FzeW5jX3NvY2tldHNbaV0pOwoJfQp9CgojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKZmluZF9yZW1vdGVfc2hlbGwoY2hhciAqc2hlbGwpCiNlbHNlCnZvaWQKZmluZF9yZW1vdGVfc2hlbGwoc2hlbGwpCmNoYXIgKnNoZWxsOwojZW5kaWYKewoJY2hhciAqdmFsdWU7Cgl2YWx1ZT0oY2hhciAqKWdldGVudigiUlNIIik7CglpZih2YWx1ZSkKCXsKCQlzdHJjcHkoc2hlbGwsdmFsdWUpOwoJCXJldHVybjsKCX0KI2lmZGVmIF9IUFVYX1NPVVJDRQoJc3RyY3B5KHNoZWxsLCJyZW1zaCIpOwojZWxzZQoJc3RyY3B5KHNoZWxsLCJyc2giKTsKI2VuZGlmCglyZXR1cm47Cn0JCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApmaW5kX2V4dGVybmFsX21vbihjaGFyICogaW1vbl9zdGFydCwgY2hhciAqIGltb25fc3RvcCkKI2Vsc2UKdm9pZApmaW5kX2V4dGVybmFsX21vbihpbW9uX3N0YXJ0LGltb25fc3RvcCkKY2hhciAqaW1vbl9zdGFydCwqaW1vbl9zdG9wOwojZW5kaWYKewoJY2hhciAqc3RhcnQsKnN0b3AsKnN5bmM7CglpbW9uX3N0YXJ0WzBdPShjaGFyKTA7CglpbW9uX3N0b3BbMF09KGNoYXIpMDsKCXN0YXJ0PShjaGFyICopZ2V0ZW52KCJJTU9OX1NUQVJUIik7CglpZihzdGFydCkKCXsKCQlzdHJjcHkoaW1vbl9zdGFydCxzdGFydCk7Cgl9CglzdG9wPShjaGFyICopZ2V0ZW52KCJJTU9OX1NUT1AiKTsKCWlmKHN0b3ApCgl7CgkJc3RyY3B5KGltb25fc3RvcCxzdG9wKTsKCX0KCXN5bmM9KGNoYXIgKilnZXRlbnYoIklNT05fU1lOQyIpOwoJaWYoc3luYykKCXsKCQlpbW9uX3N5bmM9MTsKCX0KCglyZXR1cm47Cn0JCgovKgogKiBUaGlzIHRlc3QgaXMgb25seSB2YWxpZCBpbiB0aHJvdWdocHV0IG1vZGUuCiAqLwoKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkIAptaXhfcGVyZl90ZXN0KG9mZjY0X3Qga2lsbzY0LGxvbmcgbG9uZyByZWNsZW4sbG9uZyBsb25nICpkYXRhMSxsb25nIGxvbmcgKmRhdGEyKQojZWxzZQp2b2lkIAptaXhfcGVyZl90ZXN0KGtpbG82NCxyZWNsZW4sZGF0YTEsZGF0YTIpCm9mZjY0X3Qga2lsbzY0Owpsb25nIGxvbmcgcmVjbGVuOwpsb25nIGxvbmcgKmRhdGExLCpkYXRhMjsKI2VuZGlmCnsKCXJldHVybjsKLyoKCXByaW50ZigiXG5NaXggbW9kZSB0ZXN0IG9ubHkgdmFsaWQgaW4gdGhyb3VnaHB1dCBtb2RlLlxuIik7CglzaWduYWxfaGFuZGxlcigpOwoJZXhpdCgxODApOwoqLwp9CgovKgogKiBTcGVlZCBjaGVjayBjb2RlIAogKi8KY2hhciAqc3BfZGVzdDsgLyogTmFtZSBvZiBkZXN0aW5hdGlvbiBmb3IgbWVzc2FnZXMgKi8KCmludCBzcF9jaGlsZF9saXN0ZW5fcG9ydCA9IFNQX0NISUxEX0xJU1RFTl9QT1JUOwppbnQgc3BfY2hpbGRfZXNlbmRfcG9ydCAgPSBTUF9DSElMRF9FU0VORF9QT1JUOwoKaW50IHNwX21hc3Rlcl9saXN0ZW5fcG9ydCA9IFNQX01BU1RFUl9MSVNURU5fUE9SVDsKaW50IHNwX21hc3Rlcl9lc2VuZF9wb3J0ICA9IFNQX01BU1RFUl9FU0VORF9QT1JUOwoKaW50IHNwX21hc3Rlcl9yZXN1bHRzX3BvcnQgPSBTUF9NQVNURVJfUkVTVUxUU19QT1JUOwoKc3RydWN0IGluX2FkZHIgc3BfbXlfY3NfYWRkcjsKc3RydWN0IGluX2FkZHIgc3BfbXlfbXNfYWRkcjsKc3RydWN0IHNvY2thZGRyX2luIHNwX2NoaWxkX3N5bmNfc29jaywgc3BfY2hpbGRfYXN5bmNfc29jazsKc3RydWN0IHNvY2thZGRyX2luIHNwX21hc3Rlcl9zeW5jX3NvY2ssIHNwX21hc3Rlcl9hc3luY19zb2NrOwpjaGFyICpzcF9idWY7CmNoYXIgc3BfY29tbWFuZFsxMDI0XTsKY2hhciBzcF9yZW1vdGVfc2hlbGxbMTAwXTsKaW50IHNwX2NoaWxkX21vZGU7CmludCBzcF9jb3VudCxzcF9tc2l6ZSxzcF9vbmNlOwppbnQgc3BfdGNvdW50Owpkb3VibGUgc3Bfc3RhcnRfdGltZSxzcF9maW5pc2hfdGltZTsKdm9pZCBzcF9zZW5kX3Jlc3VsdChpbnQsIGludCwgZmxvYXQgKTsKdm9pZCBzcF9nZXRfcmVzdWx0KGludCAsIGludCApOwp2b2lkIHNwX2RvX2NoaWxkX3Qodm9pZCk7CnZvaWQgc3BfZG9fbWFzdGVyX3Qodm9pZCk7CnZvaWQgc3BlZWRfbWFpbihjaGFyICosIGNoYXIgKiwgbG9uZyBsb25nICxsb25nIGxvbmcgLCBpbnQpOwppbnQgc3BfY3JldDsKY2hhciBzcF9yZW1vdGVfaG9zdFsyNTZdOwpjaGFyIHNwX21hc3Rlcl9ob3N0WzI1Nl07CmNoYXIgc3BfbG9jYXRpb25bMjU2XTsKCgovKgogKiBUaGlzIGlzIHRoZSBmcm9udCBlbmQgZm9yIHRoZSBzcGVlZCBjaGVjayBjb2RlCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3BlZWRfbWFpbihjaGFyICpjbGllbnRfbmFtZSwgY2hhciAqZV9wYXRoLCBsb25nIGxvbmcgcmVjbGVuLAoJbG9uZyBsb25nIGtpbG9zLCBpbnQgY2xpZW50X2ZsYWcpCiNlbHNlCnZvaWQKc3BlZWRfbWFpbihjbGllbnRfbmFtZSwgZV9wYXRoLCByZWNsZW4sIGtpbG9zLCBjbGllbnRfZmxhZykKY2hhciAqY2xpZW50X25hbWU7CmNoYXIgKmVfcGF0aDsKbG9uZyBsb25nIHJlY2xlbjsKbG9uZyBsb25nIGtpbG9zOwppbnQgY2xpZW50X2ZsYWc7CiNlbmRpZgp7CglpbnQgeDsKCgoJc3RyY3B5KHNwX21hc3Rlcl9ob3N0LGNvbnRyb2xsaW5nX2hvc3RfbmFtZSk7CglzcF9tc2l6ZT0oaW50KXJlY2xlbjsKCXNwX2NvdW50PSgoaW50KWtpbG9zKjEwMjQpLyhpbnQpcmVjbGVuOwoJaWYoIWNsaWVudF9mbGFnKQoJewoJCXByaW50ZigiXG4iKTsKCQlzdHJjcHkoc3BfcmVtb3RlX2hvc3QsY2xpZW50X25hbWUpOwoJCXN0cmNweShzcF9sb2NhdGlvbixlX3BhdGgpOwoJfQoKCWlmKGNsaWVudF9mbGFnKQoJCXNwX2NoaWxkX21vZGU9MTsKCXNwX2J1Zj0oY2hhciAqKW1hbGxvYyhzcF9tc2l6ZSk7CgliemVybyhzcF9idWYsc3BfbXNpemUpOyAvKiBnZXQgcGFnZSBmYXVsdHMgb3V0IG9mIHRoZSB3YXkgKi8KCglpZihzcF9jaGlsZF9tb2RlKQoJewoJCWNsb3NlKDApOwoJCWNsb3NlKDEpOwoJCWNsb3NlKDIpOwoJCWlmKGNkZWJ1ZykKCQl7CgkJCW5ld3N0ZGluPWZyZW9wZW4oIi90bXAvZG9uX2luIiwicisiLHN0ZGluKTsKCQkJbmV3c3Rkb3V0PWZyZW9wZW4oIi90bXAvZG9uX291dCIsImErIixzdGRvdXQpOwoJCQluZXdzdGRlcnI9ZnJlb3BlbigiL3RtcC9kb25fZXJyIiwiYSsiLHN0ZGVycik7CgkJfQoJCXNwX2Rlc3Q9c3BfbWFzdGVyX2hvc3Q7CgkJc3BfZG9fY2hpbGRfdCgpOwoJCWZyZWUoc3BfYnVmKTsKCQlleGl0KDApOwoJfQoJeD1mb3JrKCk7CglpZih4PT0wKQoJewoJCWZpbmRfcmVtb3RlX3NoZWxsKHNwX3JlbW90ZV9zaGVsbCk7Cgkgc3ByaW50ZihzcF9jb21tYW5kLCIlcyAlcyAlcyAtK3MgLXQgMSAtciAlZCAtcyAlZCAtK2MgJXMgLSt0ICIsCgkJCXNwX3JlbW90ZV9zaGVsbCwgc3BfcmVtb3RlX2hvc3QsIAoJCQlzcF9sb2NhdGlvbiwgKGludClyZWNsZW4vMTAyNCwgCgkJCShpbnQpa2lsb3Msc3BfbWFzdGVyX2hvc3QpOwoJCS8qcHJpbnRmKCIlc1xuIixzcF9jb21tYW5kKTsqLwoJCXN5c3RlbShzcF9jb21tYW5kKTsKCQlleGl0KDApOwoJfQoJZWxzZQoJewoJCWlmKCFzcF9vbmNlKQoJCXsKCQlwcmludGYoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CgkJcHJpbnRmKCIqID4+Pj4+ICAgICBDbGllbnQgTmV0d29yayBTcGVlZCBjaGVjayAgICAgIDw8PDw8ICpcbiIpOwoJCXByaW50ZigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiIpOwoJCQlwcmludGYoIk1hc3RlcjogJXNcbiIsc3BfbWFzdGVyX2hvc3QpOwoJCQlwcmludGYoIlRyYW5zZmVyIHNpemUgJWQgYnl0ZXMgIFxuIixzcF9tc2l6ZSk7CgkJCXByaW50ZigiQ291bnQgJWRcbiIsc3BfY291bnQpOwoJCQlwcmludGYoIlRvdGFsIHNpemUgJWQga2J5dGVzICBcblxuIiwKCQkJCShzcF9tc2l6ZSpzcF9jb3VudCkvMTAyNCk7CgkJCXNwX29uY2U9MTsKCQl9CgkJc3BfZGVzdD1zcF9yZW1vdGVfaG9zdDsKCQlzbGVlcCgxKTsKCQlzcF9kb19tYXN0ZXJfdCgpOwoJCWZyZWUoc3BfYnVmKTsKCX0KfQoKLyoKICogR2V0IHJlc3VsdHMgYmFjayBmcm9tIHRoZSBjbGllbnQuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3BfZ2V0X3Jlc3VsdChpbnQgcG9ydCxpbnQgZmxhZykKI2Vsc2UKdm9pZApzcF9nZXRfcmVzdWx0KHBvcnQsZmxhZykKaW50IHBvcnQsZmxhZzsKI2VuZGlmCnsKCWludCB0Y2ZkOwoJZmxvYXQgdGhyb3VnaHB1dDsKCWludCBjb3VudDsKCWNoYXIgbXlidWZbMTAyNF07CglpbnQgc3Bfb2Zmc2V0LHh4OwoKCXRjZmQ9c3Bfc3RhcnRfbWFzdGVyX2xpc3Rlbihwb3J0LCAxMDI0KTsKCXNwX29mZnNldD0wOwoJd2hpbGUoc3Bfb2Zmc2V0IDwgMTAyNCkKCXsKCQl4eD1yZWFkKHRjZmQsJm15YnVmW3NwX29mZnNldF0sMTAyNCk7CgkJc3Bfb2Zmc2V0Kz14eDsKCX0KCXNzY2FuZihteWJ1ZiwiJWQgJWYiLCZjb3VudCwmdGhyb3VnaHB1dCk7CglpZighZmxhZykKCQlwcmludGYoIiUtMjBzIHJlY2VpdmVkICAlMTBkIEtieXRlcyBAICUxMC4yZiBLYnl0ZXMvc2VjIFxuIiwKCQkJc3BfcmVtb3RlX2hvc3QsY291bnQsdGhyb3VnaHB1dCk7CgllbHNlCgkJcHJpbnRmKCIlLTIwcyAgc2VudCAgICAgJTEwZCBLYnl0ZXMgQCAlMTAuMmYgS2J5dGVzL3NlYyBcbiIsCgkJCXNwX3JlbW90ZV9ob3N0LGNvdW50LHRocm91Z2hwdXQpOwoJY2xvc2UodGNmZCk7Cn0KCi8qCiAqIFNlbmQgcmVzdWx0cyB0byB0aGUgbWFzdGVyLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnNwX3NlbmRfcmVzdWx0KGludCBwb3J0LCBpbnQgY291bnQsIGZsb2F0IHRocm91Z2hwdXQpCiNlbHNlCnZvaWQKc3Bfc2VuZF9yZXN1bHQocG9ydCwgY291bnQsIHRocm91Z2hwdXQpCmludCBwb3J0LGNvdW50OyAKZmxvYXQgdGhyb3VnaHB1dDsKI2VuZGlmCnsKCWludCBtc2ZkOwoJY2hhciBteWJ1ZlsxMDI0XTsKCXNwcmludGYobXlidWYsIiVkICVmIixjb3VudCwgdGhyb3VnaHB1dCk7Cgltc2ZkPXNwX3N0YXJ0X2NoaWxkX3NlbmQoc3BfZGVzdCwgcG9ydCwgJnNwX215X2NzX2FkZHIpOwoJd3JpdGUobXNmZCxteWJ1ZiwxMDI0KTsKCWlmKGNkZWJ1ZykKCQlwcmludGYoIlNlbmRpbmcgcmVzdWx0XG4iKTsKCWNsb3NlKG1zZmQpOwp9CgovKgogKiBTdGFydCB0aGUgY2hhbm5lbCBmb3IgdGhlIG1hc3RlciB0byBzZW5kIGEgbWVzc2FnZSB0byAKICogYSBjaGlsZCBvbiBhIHBvcnQgdGhhdCB0aGUgY2hpbGQKICogaGFzIGNyZWF0ZWQgZm9yIHRoZSBwYXJlbnQgdG8gdXNlIHRvIGNvbW11bmljYXRlLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKc3Bfc3RhcnRfbWFzdGVyX3NlbmQoY2hhciAqc3BfY2hpbGRfaG9zdF9uYW1lLCBpbnQgc3BfY2hpbGRfbGlzdGVuX3BvcnQsIHN0cnVjdCBpbl9hZGRyICpzcF9teV9tc19hZGRyKQojZWxzZQppbnQKc3Bfc3RhcnRfbWFzdGVyX3NlbmQoc3BfY2hpbGRfaG9zdF9uYW1lLCBzcF9jaGlsZF9saXN0ZW5fcG9ydCwgc3BfbXlfbXNfYWRkcikKY2hhciAqc3BfY2hpbGRfaG9zdF9uYW1lOyAKaW50IHNwX2NoaWxkX2xpc3Rlbl9wb3J0OwpzdHJ1Y3QgaW5fYWRkciAqc3BfbXlfbXNfYWRkcjsKI2VuZGlmCnsKCWludCByYyxtYXN0ZXJfc29ja2V0X3ZhbDsKCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyLHJhZGRyOwoJc3RydWN0IGhvc3RlbnQgKmhlOwoJaW50IHBvcnQsdG1wX3BvcnQ7CglpbnQgZWNvdW50PTA7CglzdHJ1Y3QgaW5fYWRkciAqaXA7CiAgICAgICAgaGUgPSBnZXRob3N0YnluYW1lKHNwX2NoaWxkX2hvc3RfbmFtZSk7CiAgICAgICAgaWYgKGhlID09IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJNYXN0ZXI6IEJhZCBob3N0bmFtZSA+JXM8XG4iLHNwX2NoaWxkX2hvc3RfbmFtZSk7CgkJZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgICAgICAgICBleGl0KDIyKTsKICAgICAgICB9CglpZihtZGVidWcgPT0xKQoJewoJICAgICAgICBwcmludGYoIk1hc3Rlcjogc3RhcnQgbWFzdGVyIHNlbmQ6ICVzXG4iLCBoZS0+aF9uYW1lKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KICAgICAgICBpcCA9IChzdHJ1Y3QgaW5fYWRkciAqKWhlLT5oX2FkZHJfbGlzdFswXTsKI2lmbmRlZiBVV0lOCglpZihtZGVidWcgPT0xKQoJewogICAgICAgIAlwcmludGYoIk1hc3RlcjogY2hpbGQgbmFtZTogJXNcbiIsIChjaGFyICopaW5ldF9udG9hKCppcCkpOwogICAgICAgIAlwcmludGYoIk1hc3RlcjogY2hpbGQgUG9ydDogJWRcbiIsIHNwX2NoaWxkX2xpc3Rlbl9wb3J0KTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KI2VuZGlmCgoJcG9ydD1zcF9jaGlsZF9saXN0ZW5fcG9ydDsKCXNwX215X21zX2FkZHItPnNfYWRkciA9IGlwLT5zX2FkZHI7CgkvKnBvcnQ9Q0hJTERfTElTVF9QT1JUOyovCgogICAgICAgIHJhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgIHJhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CiAgICAgICAgcmFkZHIuc2luX2FkZHIuc19hZGRyID0gaXAtPnNfYWRkcjsKICAgICAgICBtYXN0ZXJfc29ja2V0X3ZhbCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CiAgICAgICAgaWYgKG1hc3Rlcl9zb2NrZXRfdmFsIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIk1hc3Rlcjogc29ja2V0IGZhaWxlZDoiKTsKICAgICAgICAgICAgICAgIGV4aXQoMjMpOwogICAgICAgIH0KICAgICAgICBiemVybygmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJdG1wX3BvcnQ9c3BfbWFzdGVyX2VzZW5kX3BvcnQ7CiAgICAgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKHRtcF9wb3J0KTsKICAgICAgICBhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKICAgICAgICByYyA9IC0xOwogICAgICAgIHdoaWxlIChyYyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcmMgPSBiaW5kKG1hc3Rlcl9zb2NrZXRfdmFsLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCQlpZihyYyA8IDApCgkJewoJCQl0bXBfcG9ydCsrOwogICAgICAgICAgICAgICAgCWFkZHIuc2luX3BvcnQ9aHRvbnModG1wX3BvcnQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgfQoJaWYobWRlYnVnID09MSkKCXsKCQlwcmludGYoIk1hc3RlcjogQm91bmQgcG9ydFxuIik7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CiAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoIk1hc3RlcjogYmluZCBmYWlsZWQgZm9yIHN5bmMgY2hhbm5lbCB0byBjaGlsZC5cbiIpOwogICAgICAgICAgICAgICAgZXhpdCgyNCk7CiAgICAgICAgfQphZ2FpbjoKICAgICAgICByYyA9IGNvbm5lY3QobWFzdGVyX3NvY2tldF92YWwsIChzdHJ1Y3Qgc29ja2FkZHIgKikmcmFkZHIsIAoJCQlzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CglpZiAocmMgPCAwKQogICAgICAgIHsKCQlpZihlY291bnQrKyA8IDMwMCkKCQl7CgkJCXNsZWVwKDEpOwoJCQlnb3RvIGFnYWluOwoJCX0KICAgICAgICAgICAgICAgIHBlcnJvcigiTWFzdGVyOiBjb25uZWN0IGZhaWxlZFxuIik7CgkJcHJpbnRmKCJFcnJvciAlZFxuIixlcnJubyk7CiAgICAgICAgICAgICAgICBleGl0KDI1KTsKICAgICAgICB9CglpZihtZGVidWcgPT0xKQoJewoJCXByaW50ZigiTWFzdGVyIENvbm5lY3RlZFxuIik7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CglyZXR1cm4gKG1hc3Rlcl9zb2NrZXRfdmFsKTsKfQoKLyoKICogU3RhcnQgdGhlIGNoaWxkcyBsaXN0ZW5pbmcgc2VydmljZSBmb3IgbWVzc2FnZXMgZnJvbSB0aGUgbWFzdGVyLgogKi8KI2lmZGVmIEhBVkVfQU5TSUNfQwppbnQKc3Bfc3RhcnRfY2hpbGRfbGlzdGVuKGludCBsaXN0ZW5fcG9ydCwgaW50IHNpemVfb2ZfbWVzc2FnZSkKI2Vsc2UKaW50CnNwX3N0YXJ0X2NoaWxkX2xpc3RlbihsaXN0ZW5fcG9ydCwgc2l6ZV9vZl9tZXNzYWdlKQppbnQgbGlzdGVuX3BvcnQ7CmludCBzaXplX29mX21lc3NhZ2U7CiNlbmRpZgp7CglpbnQgdHNpemU7CglpbnQgcyxuczsKCXVuc2lnbmVkIGludCBtZTsKCWludCByYzsKCWludCB4eDsKCWludCB0bXBfcG9ydDsKCXN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkcjsKCWludCBzb2NrZXJyOwoJaW50IHJlY3ZfYnVmX3NpemU9NjU1MzY7Cgl4eCA9IDA7CgltZT1zaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKCXRzaXplPXNpemVfb2ZfbWVzc2FnZTsgLyogTnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHJlY2VpdmUgKi8KICAgICAgICBzID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKICAgICAgICBpZiAocyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcGVycm9yKCJzb2NrZXQgZmFpbGVkOiIpOwogICAgICAgICAgICAgICAgZXhpdCgxOSk7CiAgICAgICAgfQoJc29ja2VyciA9IHNldHNvY2tvcHQgKHMsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgKGNoYXIgKikKCQkmcmVjdl9idWZfc2l6ZSwgc2l6ZW9mKGludCkpOwoJaWYgKCBzb2NrZXJyID09IC0xICkgewoJCXBlcnJvcigiRXJyb3IgaW4gc2V0c29ja29wdFxuIik7Cgl9CiAgICAgICAgYnplcm8oJnNwX2NoaWxkX3N5bmNfc29jaywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwoJdG1wX3BvcnQ9c3BfY2hpbGRfbGlzdGVuX3BvcnQ7CiAgICAgICAgc3BfY2hpbGRfc3luY19zb2NrLnNpbl9wb3J0ID0gaHRvbnModG1wX3BvcnQpOwogICAgICAgIHNwX2NoaWxkX3N5bmNfc29jay5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBzcF9jaGlsZF9zeW5jX3NvY2suc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKICAgICAgICByYyA9IC0xOwogICAgICAgIHdoaWxlIChyYyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcmMgPSBiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3BfY2hpbGRfc3luY19zb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCQlpZihyYyA8IDApCgkJewoJCQl0bXBfcG9ydCsrOwogICAgICAgICAgICAgICAgCXNwX2NoaWxkX3N5bmNfc29jay5zaW5fcG9ydD1odG9ucyh0bXBfcG9ydCk7CgkJCWNvbnRpbnVlOwoJCX0KICAgICAgICB9CglzcF9jaGlsZF9saXN0ZW5fcG9ydCA9IG50b2hzKHNwX2NoaWxkX3N5bmNfc29jay5zaW5fcG9ydCk7CglpZihjZGVidWcgPT0xKQoJewoJCXByaW50ZigiQ2hpbGQ6IExpc3RlbjogQm91bmQgYXQgcG9ydCAlZFxuIiwgdG1wX3BvcnQpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJaWYocmMgPCAwKQoJewoJCXBlcnJvcigiYmluZCBmYWlsZWRcbiIpOwoJCWV4aXQoMjApOwoJfQoKCWFkZHI9JnNwX2NoaWxkX2FzeW5jX3NvY2s7CglsaXN0ZW4ocywxMCk7CglpZihjZGVidWcpCgl7CgkJcHJpbnRmKCJDaGlsZCBlbnRlcnMgYWNjZXB0XG4iKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCW5zPWFjY2VwdChzLCh2b2lkICopYWRkciwmbWUpOwoJaWYoY2RlYnVnKQoJewoJCXByaW50ZigiQ2hpbGQgYXR0YWNoZWQgZm9yIHJlY2VpdmUuIFNvY2sgJWQgICVkXG4iLCBucyxlcnJubyk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CgljbG9zZShzKTsKCXJldHVybihucyk7Cn0KCgovKgogKiBUaGUgY2xpZW50IHJ1bnMgdGhpcyBjb2RlCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3BfZG9fY2hpbGRfdCh2b2lkKQojZWxzZQp2b2lkCnNwX2RvX2NoaWxkX3QoKQojZW5kaWYKewoJaW50IGkseTsKCWludCBvZmZzZXQ7CglpbnQgc3BfdGNvdW50PTA7CgkvKiBjaGlsZCAqLwoJLyoKCSAqIENoaWxkIHJlYWRzIGZyb20gbWFzdGVyIAoJICovCglzcF9jcmZkPXNwX3N0YXJ0X2NoaWxkX2xpc3RlbihzcF9jaGlsZF9saXN0ZW5fcG9ydCwgc3BfbXNpemUpOwoJc3Bfc3RhcnRfdGltZT10aW1lX3NvX2ZhcigpOwoJZm9yKGk9MDtpPHNwX2NvdW50O2krKykKCXsKCQlvZmZzZXQ9MDsKCQl3aGlsZShvZmZzZXQ8c3BfbXNpemUpCgkJewoJCQl5PXJlYWQoc3BfY3JmZCwmc3BfYnVmW29mZnNldF0sc3BfbXNpemUtb2Zmc2V0KTsKCQkJaWYoeSA8IDApCgkJCXsKCQkJICAgICAgCWlmKGNkZWJ1ZykKCQkJCQlwcmludGYoIkNoaWxkIGVycm9yICVkIG9mZnNldCAlZFxuIiwKCQkJCQkJZXJybm8sb2Zmc2V0KTsKCQkJCWV4aXQoMSk7CgkJCX0KCQkJb2Zmc2V0Kz15OwoJCQlpZihjZGVidWcpCgkJCQlwcmludGYoIkNoaWxkIG9mZnNldCAlZCByZWFkICVkXG4iLG9mZnNldCx5KTsKCQl9CgkJc3BfdGNvdW50Kz1vZmZzZXQ7Cgl9CglzcF9maW5pc2hfdGltZT10aW1lX3NvX2ZhcigpOwoKCWNsb3NlKHNwX2NyZmQpOwoJc2xlZXAoMSk7IC8qIFdhaXQgZm9yIG1hc3RlciB0byBnZXQgaW50byBzcF9nZXRfcmVzdWx0ICovCglzcF9zZW5kX3Jlc3VsdChzcF9tYXN0ZXJfcmVzdWx0c19wb3J0LCBzcF90Y291bnQvMTAyNCwgCgkJKGZsb2F0KShzcF90Y291bnQvMTAyNCkvKHNwX2ZpbmlzaF90aW1lLXNwX3N0YXJ0X3RpbWUpKTsKCglzbGVlcCgxKTsKCS8qCgkgKiBDaGlsZCB3cml0ZXMgdG8gbWFzdGVyIAoJICovCglzcF9jc2ZkPXNwX3N0YXJ0X2NoaWxkX3NlbmQoc3BfZGVzdCwgc3BfbWFzdGVyX2xpc3Rlbl9wb3J0LAoJCSZzcF9teV9jc19hZGRyKTsKCXNwX3Rjb3VudD0wOwoJb2Zmc2V0PTA7CglzcF9zdGFydF90aW1lPXRpbWVfc29fZmFyKCk7Cglmb3IoaT0wO2k8c3BfY291bnQ7aSsrKQoJewoJCXk9d3JpdGUoc3BfY3NmZCxzcF9idWYsc3BfbXNpemUpOwoJCXNwX3Rjb3VudCs9eTsKCX0KCXNwX2ZpbmlzaF90aW1lPXRpbWVfc29fZmFyKCk7CgljbG9zZShzcF9jc2ZkKTsKCXNsZWVwKDEpOwoJc3Bfc2VuZF9yZXN1bHQoc3BfbWFzdGVyX3Jlc3VsdHNfcG9ydCwgc3BfdGNvdW50LzEwMjQsIAoJCShmbG9hdCkoc3BfdGNvdW50LzEwMjQpLyhzcF9maW5pc2hfdGltZS1zcF9zdGFydF90aW1lKSk7CglpZihjZGVidWcpCgkJcHJpbnRmKCJjaGlsZCBleGl0c1xuIik7Cn0KCi8qCiAqIFRoZSBtYXN0ZXIgcnVucyB0aGlzIGNvZGUuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCnZvaWQKc3BfZG9fbWFzdGVyX3Qodm9pZCkKI2Vsc2UKdm9pZApzcF9kb19tYXN0ZXJfdCgpCiNlbmRpZgp7CglpbnQgaSx5LHNwX29mZnNldDsKCWludCBzcF90Y291bnQgPSAwOwoKCgkvKgoJICogTWFzdGVyIHdyaXRlcyB0byBjaGlsZCAKCSAqLwoJc3BfbXNmZD1zcF9zdGFydF9tYXN0ZXJfc2VuZChzcF9kZXN0LCBzcF9jaGlsZF9saXN0ZW5fcG9ydCwKCQkmc3BfbXlfbXNfYWRkcik7CglzcF9zdGFydF90aW1lPXRpbWVfc29fZmFyKCk7Cglmb3IoaT0wO2k8c3BfY291bnQ7aSsrKQoJewoJCXk9d3JpdGUoc3BfbXNmZCxzcF9idWYsc3BfbXNpemUpOwoJCXNwX3Rjb3VudCs9eTsKCX0KCXNwX2ZpbmlzaF90aW1lPXRpbWVfc29fZmFyKCk7CgljbG9zZShzcF9tc2ZkKTsKCXNwX21zZmQ9MDsKCXNwX2dldF9yZXN1bHQoc3BfbWFzdGVyX3Jlc3VsdHNfcG9ydCwwKTsKCXByaW50ZigiJS0yMHMgIHNlbnQgICAgICUxMGQga2J5dGVzIEAgJTEwLjJmIEtieXRlcy9zZWMgXG4iLAoJCXNwX21hc3Rlcl9ob3N0LHNwX3Rjb3VudC8xMDI0LCAKCQkoZmxvYXQpKHNwX3Rjb3VudC8xMDI0KS8oc3BfZmluaXNoX3RpbWUtc3Bfc3RhcnRfdGltZSkpOwoKCS8qIHByaW50ZigiXG4iKTsgKi8KCS8qCgkgKiBNYXN0ZXIgcmVhZHMgZnJvbSBjaGlsZCAKCSAqLwoJc3BfbXJmZD1zcF9zdGFydF9tYXN0ZXJfbGlzdGVuKHNwX21hc3Rlcl9saXN0ZW5fcG9ydCwgc3BfbXNpemUpOwoJc3Bfb2Zmc2V0PTA7CglzcF9zdGFydF90aW1lPXRpbWVfc29fZmFyKCk7CglzcF90Y291bnQ9MDsKCWZvcihpPTA7aTxzcF9jb3VudDtpKyspCgl7CgkJc3Bfb2Zmc2V0PTA7CgkJd2hpbGUoc3Bfb2Zmc2V0PHNwX21zaXplKQoJCXsKCQkJeT1yZWFkKHNwX21yZmQsJnNwX2J1ZltzcF9vZmZzZXRdLHNwX21zaXplLXNwX29mZnNldCk7CgkJCWlmKHkgPCAwKQoJCQl7CgkJCSAgICAgIAlwcmludGYoIk1hc3RlciBlcnJvciAlZCBvZmZzZXQgJWRcbiIsZXJybm8sCgkJCQkJc3Bfb2Zmc2V0KTsKCQkJCWV4aXQoMSk7CgkJCX0KCQkJc3Bfb2Zmc2V0Kz15OwoJCQkvKiBwcmludGYoIk1hc3RlciBvZmZzZXQgJWQgcmVhZCAlZFxuIixvZmZzZXQseSk7Ki8KCQl9CgkJc3BfdGNvdW50Kz1zcF9vZmZzZXQ7Cgl9CglzcF9maW5pc2hfdGltZT10aW1lX3NvX2ZhcigpOwoJc3BfZ2V0X3Jlc3VsdChzcF9tYXN0ZXJfcmVzdWx0c19wb3J0LDEpOwoJcHJpbnRmKCIlLTIwcyByZWNlaXZlZCAgJTEwZCBrYnl0ZXMgQCAlMTAuMmYgS2J5dGVzL3NlYyBcbiIsCgkJc3BfbWFzdGVyX2hvc3Qsc3BfdGNvdW50LzEwMjQsCgkJKGZsb2F0KShzcF90Y291bnQvMTAyNCkvKHNwX2ZpbmlzaF90aW1lLXNwX3N0YXJ0X3RpbWUpKTsKCXByaW50ZigiXG4iKTsKCXdhaXQoTlVMTCk7CgljbG9zZShzcF9tcmZkKTsKCXNwX21yZmQ9MDsKfQoKLyoKICogU3RhcnQgdGhlIG1hc3RlciBsaXN0ZW5pbmcgc2VydmljZSBmb3IgbWVzc2FnZXMgZnJvbSB0aGUgY2hpbGQuCiAqLwojaWZkZWYgSEFWRV9BTlNJQ19DCmludApzcF9zdGFydF9tYXN0ZXJfbGlzdGVuKGludCBzcF9tYXN0ZXJfbGlzdGVuX3BvcnQsIGludCBzcF9zaXplX29mX21lc3NhZ2UpCiNlbHNlCmludApzcF9zdGFydF9tYXN0ZXJfbGlzdGVuKHNwX21hc3Rlcl9saXN0ZW5fcG9ydCwgc3Bfc2l6ZV9vZl9tZXNzYWdlKQppbnQgc3Bfc2l6ZV9vZl9tZXNzYWdlOwppbnQgc3BfbWFzdGVyX2xpc3Rlbl9wb3J0OwojZW5kaWYKewoJaW50IHRzaXplOwoJaW50IHMsbnM7Cgl1bnNpZ25lZCBpbnQgbWU7CglpbnQgcmM7CglpbnQgeHg7CglpbnQgdG1wX3BvcnQ7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHI7CglpbnQgc29ja2VycjsKCWludCByZWN2X2J1Zl9zaXplPTY1NTM2OwoJeHggPSAwOwoJbWU9c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Cgl0c2l6ZT1zcF9zaXplX29mX21lc3NhZ2U7IC8qIE51bWJlciBvZiBtZXNzYWdlcyB0byByZWNlaXZlICovCiAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CiAgICAgICAgaWYgKHMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBlcnJvcigic29ja2V0IGZhaWxlZDoiKTsKICAgICAgICAgICAgICAgIGV4aXQoMTkpOwogICAgICAgIH0KCXNvY2tlcnIgPSBzZXRzb2Nrb3B0IChzLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsIChjaGFyICopCgkJJnJlY3ZfYnVmX3NpemUsIHNpemVvZihpbnQpKTsKCWlmICggc29ja2VyciA9PSAtMSApIHsKCQlwZXJyb3IoIkVycm9yIGluIHNldHNvY2tvcHRcbiIpOwoJfQogICAgICAgIGJ6ZXJvKCZzcF9tYXN0ZXJfc3luY19zb2NrLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Cgl0bXBfcG9ydD1zcF9tYXN0ZXJfbGlzdGVuX3BvcnQ7CiAgICAgICAgc3BfbWFzdGVyX3N5bmNfc29jay5zaW5fcG9ydCA9IGh0b25zKHRtcF9wb3J0KTsKICAgICAgICBzcF9tYXN0ZXJfc3luY19zb2NrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgIHNwX21hc3Rlcl9zeW5jX3NvY2suc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKICAgICAgICByYyA9IC0xOwogICAgICAgIHdoaWxlIChyYyA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcmMgPSBiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3BfbWFzdGVyX3N5bmNfc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CgkJaWYocmMgPCAwKQoJCXsKCQkJdG1wX3BvcnQrKzsKICAgICAgICAgICAgICAgIAlzcF9tYXN0ZXJfc3luY19zb2NrLnNpbl9wb3J0PWh0b25zKHRtcF9wb3J0KTsKCQkJY29udGludWU7CgkJfQogICAgICAgIH0KCXNwX21hc3Rlcl9saXN0ZW5fcG9ydCA9IG50b2hzKHNwX21hc3Rlcl9zeW5jX3NvY2suc2luX3BvcnQpOwoJaWYobWRlYnVnID09MSkKCXsKCQlwcmludGYoIk1hc3RlcjogTGlzdGVuOiBCb3VuZCBhdCBwb3J0ICVkXG4iLCB0bXBfcG9ydCk7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9CglpZihyYyA8IDApCgl7CgkJcGVycm9yKCJiaW5kIGZhaWxlZFxuIik7CgkJZXhpdCgyMCk7Cgl9CgoJYWRkcj0mc3BfbWFzdGVyX2FzeW5jX3NvY2s7CglsaXN0ZW4ocywxMCk7CglpZihtZGVidWcpCgl7CgkJcHJpbnRmKCJNYXN0ZXIgZW50ZXJzIGFjY2VwdFxuIik7CgkJZmZsdXNoKHN0ZG91dCk7Cgl9Cglucz1hY2NlcHQocywodm9pZCAqKWFkZHIsJm1lKTsKCWlmKG1kZWJ1ZykKCXsKCQlwcmludGYoIk1hc3RlciBhdHRhY2hlZCBmb3IgcmVjZWl2ZS4gU29jayAlZCAgJWRcbiIsIG5zLGVycm5vKTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KCWNsb3NlKHMpOwoJcmV0dXJuKG5zKTsKfQoKLyoKICogU3RhcnQgdGhlIGNoYW5uZWwgZm9yIHRoZSBjaGlsZCB0byBzZW5kIGEgbWVzc2FnZSB0byAKICogdGhlIG1hc3Rlci4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKaW50CnNwX3N0YXJ0X2NoaWxkX3NlbmQoY2hhciAqc3BfbWFzdGVyX2hvc3RfbmFtZSwgaW50IHNwX21hc3Rlcl9saXN0ZW5fcG9ydCwgc3RydWN0IGluX2FkZHIgKnNwX215X2NzX2FkZHIpCiNlbHNlCmludApzcF9zdGFydF9jaGlsZF9zZW5kKHNwX21hc3Rlcl9ob3N0X25hbWUsIHNwX21hc3Rlcl9saXN0ZW5fcG9ydCwgc3BfbXlfY3NfYWRkcikKY2hhciAqc3BfbWFzdGVyX2hvc3RfbmFtZTsgCmludCBzcF9tYXN0ZXJfbGlzdGVuX3BvcnQ7CnN0cnVjdCBpbl9hZGRyICpzcF9teV9jc19hZGRyOwojZW5kaWYKewoJaW50IHJjLHNwX2NoaWxkX3NvY2tldF92YWw7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcixyYWRkcjsKCXN0cnVjdCBob3N0ZW50ICpoZTsKCWludCBwb3J0LHRtcF9wb3J0OwoJc3RydWN0IGluX2FkZHIgKmlwOwoJaW50IGVjb3VudD0wOwogICAgICAgIGhlID0gZ2V0aG9zdGJ5bmFtZShzcF9tYXN0ZXJfaG9zdF9uYW1lKTsKICAgICAgICBpZiAoaGUgPT0gTlVMTCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIkNoaWxkOiBCYWQgaG9zdG5hbWUgPiVzPFxuIixzcF9tYXN0ZXJfaG9zdF9uYW1lKTsKCQlmZmx1c2goc3Rkb3V0KTsKICAgICAgICAgICAgICAgIGV4aXQoMjIpOwogICAgICAgIH0KCWlmKGNkZWJ1ZyA9PTEpCgl7CgkgICAgICAgIHByaW50ZigiQ2hpbGQ6IHN0YXJ0IGNoaWxkIHNlbmQ6ICVzXG4iLCBoZS0+aF9uYW1lKTsKCSAgICAgICAgcHJpbnRmKCJUbzogJXMgYXQgcG9ydCAlZFxuIixzcF9tYXN0ZXJfaG9zdF9uYW1lLAoJCQlzcF9tYXN0ZXJfbGlzdGVuX3BvcnQpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQogICAgICAgIGlwID0gKHN0cnVjdCBpbl9hZGRyICopaGUtPmhfYWRkcl9saXN0WzBdOwoKCXBvcnQ9c3BfbWFzdGVyX2xpc3Rlbl9wb3J0OwoJc3BfbXlfY3NfYWRkci0+c19hZGRyID0gaXAtPnNfYWRkcjsKCiAgICAgICAgcmFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICAgICAgcmFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0KTsKICAgICAgICByYWRkci5zaW5fYWRkci5zX2FkZHIgPSBpcC0+c19hZGRyOwogICAgICAgIHNwX2NoaWxkX3NvY2tldF92YWwgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogICAgICAgIGlmIChzcF9jaGlsZF9zb2NrZXRfdmFsIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwZXJyb3IoImNoaWxkOiBzb2NrZXQgZmFpbGVkOiIpOwogICAgICAgICAgICAgICAgZXhpdCgyMyk7CiAgICAgICAgfQogICAgICAgIGJ6ZXJvKCZhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7Cgl0bXBfcG9ydD1zcF9jaGlsZF9lc2VuZF9wb3J0OwogICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyh0bXBfcG9ydCk7CiAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgICAgICAgcmMgPSAtMTsKICAgICAgICB3aGlsZSAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJjID0gYmluZChzcF9jaGlsZF9zb2NrZXRfdmFsLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKCQlpZihyYyA8IDApCgkJewoJCQl0bXBfcG9ydCsrOwogICAgICAgICAgICAgICAgCWFkZHIuc2luX3BvcnQ9aHRvbnModG1wX3BvcnQpOwoJCQljb250aW51ZTsKCQl9CiAgICAgICAgfQoJaWYoY2RlYnVnID09MSkKCXsKCQlwcmludGYoIkNoaWxkOiBCb3VuZCBwb3J0ICVkXG4iLHRtcF9wb3J0KTsKCQlmZmx1c2goc3Rkb3V0KTsKCX0KICAgICAgICBpZiAocmMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBlcnJvcigiQ2hpbGQ6IGJpbmQgZmFpbGVkIGZvciBzeW5jIGNoYW5uZWwgdG8gY2hpbGQuXG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMjQpOwogICAgICAgIH0KYWdhaW46CiAgICAgICAgcmMgPSBjb25uZWN0KHNwX2NoaWxkX3NvY2tldF92YWwsIChzdHJ1Y3Qgc29ja2FkZHIgKikmcmFkZHIsIAoJCQlzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CglpZiAocmMgPCAwKQogICAgICAgIHsKCQlpZihlY291bnQrKzwzMDApCgkJewoJCQlzbGVlcCgxKTsKCQkJZ290byBhZ2FpbjsKCQl9CgogICAgICAgICAgICAgICAgcGVycm9yKCJjaGlsZDogY29ubmVjdCBmYWlsZWRcbiIpOwoJCXByaW50ZigiRXJyb3IgJWRcbiIsZXJybm8pOwoJCWV4aXQoMjUpOwogICAgICAgIH0KCWlmKGNkZWJ1ZyA9PTEpCgl7CgkJcHJpbnRmKCJjaGlsZCBDb25uZWN0ZWRcbiIpOwoJCWZmbHVzaChzdGRvdXQpOwoJfQoJcmV0dXJuIChzcF9jaGlsZF9zb2NrZXRfdmFsKTsKfQoKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCmRvX3NwZWVkX2NoZWNrKGludCBjbGllbnRfZmxhZykKI2Vsc2UKdm9pZApkb19zcGVlZF9jaGVjayhjbGllbnRfZmxhZykKaW50IGNsaWVudF9mbGFnOwojZW5kaWYKewoJaW50IGk7CglpZihjbGllbnRfZmxhZykKCXsKCQlzcGVlZF9tYWluKCIgIiwiICIscmVjbGVuLGtpbG9ieXRlczY0LGNsaWVudF9mbGFnKTsKCX0KCWVsc2UKCXsKCQlwcmludGYoIkNoZWNraW5nICVkIGNsaWVudHNcbiIsY2xpZW50c19mb3VuZCk7CgkJZm9yKGk9MDtpPGNsaWVudHNfZm91bmQ7aSsrKQoJCXsKCQkJc3BlZWRfbWFpbihjaGlsZF9pZGVudHNbaV0uY2hpbGRfbmFtZSwKCQkJCWNoaWxkX2lkZW50c1tpXS5leGVjdXRlX3BhdGgsCgkJCQlyZWNsZW4sIGtpbG9ieXRlczY0LGNsaWVudF9mbGFnKTsKCQl9Cgl9Cn0KCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApnZXRfZGF0ZShjaGFyICp3aGVyZSkKI2Vsc2UKZ2V0X2RhdGUod2hlcmUpCmNoYXIgKndoZXJlOwojZW5kaWYKewoJdGltZV90IHQ7CgljaGFyICp2YWx1ZTsKCXQ9dGltZSgwKTsKCXZhbHVlPShjaGFyICopY3RpbWUoJnQpOwoJc3RyY3B5KHdoZXJlLHZhbHVlKTsKfQoKLyogUmljaGFyZCBTaGFycGUgZGVjaWRlZCB0byBoYWNrIHVwIFNhbWJhIGFuZAogKiBoYXZlIGl0IGRldGVjdCBJb3pvbmUgcnVubmluZywgYW5kIHRoZW4KICogcHJvZHVjZSB0aGUgZGF0YSB3aXRob3V0IGRvaW5nIGFueSBhY3R1YWwKICogSS9PLiBUaGlzIHdhcyBhIEhJR0hMWSBxdWVzdGlvbmFibGUgdGhpbmcgdG8KICogYmUgZG9pbmcgKG15IG9waW5pb24pLiBJdCBtYXkgaGF2ZSBiZWVuIGEgbGFiCiAqIGV4cGVyaW1lbnQgdGhhdCB3YXMgYWNjaWRlbnRhbGx5IHJlbGVhc2VkIGludG8gCiAqIHRoZSB3aWxkLCBidXQgbm93IHRoYXQgaXQgaXMsIG5vIGNob2ljZSBidXQKICogdG8gcHJldmVudCBpdHMgdXNlLiBTby4uLiB0aGUgcGF0dGVybgogKiB0aGF0IGhlIHdhcyBsb2NraW5nIG9uIHRvLCBpcyBub3cgcmFuZG9tLAogKiBhbmQgd2lsbCBjaGFuZ2Ugd2l0aCBldmVyeSByZWxlYXNlIG9mIElvem9uZS4KICogU2VlOiBodHRwOi8vbGlzdHMuc2FtYmEub3JnL2FyY2hpdmUvc2FtYmEtdGVjaG5pY2FsLzIwMDUtQXByaWwvMDQwNTQxLmh0bWwKICovCgojaWZkZWYgSEFWRV9BTlNJQ19DCmludApnZXRfcGF0dGVybih2b2lkKQojZWxzZQpnZXRfcGF0dGVybih2b2lkKQojZW5kaWYKewogICAgICAgIGludCBpLHgseTsKICAgICAgICBjaGFyIGNwWzEwMF0sKnB0cjsKICAgICAgICBpbnQgcGF0OwoJdW5zaWduZWQgY2hhciBpbnBfcGF0OwoJdW5zaWduZWQgaW50IHRlbXA7CgogICAgICAgIHk9MDsKICAgICAgICBwdHI9JmNwWzBdOwogICAgICAgIHN0cmNweShjcCxUSElTVkVSU0lPTik7CiAgICAgICAgeD1zdHJsZW4oVEhJU1ZFUlNJT04pOwogICAgICAgIGZvcihpPTA7aTx4O2krKykKICAgICAgICAgICAgICAgIHkrPSpwdHIrKzsKICAgICAgICBzcmFuZCh5KTsKICAgICAgICBwYXQ9KHJhbmQoKSYgMHhmZik7CgkvKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCAweGE1IGRhdGEgc2V0cy4gKi8KCWlmKFpfZmxhZykKCQlwYXQ9MHhhNTsKCS8qIExvY2sgcGF0dGVybiB0byAweEJCLCBmb3IgZmlsZXN5c3RlbSBzaG9ydCBjaXJjdWl0IGRlYnVnICovCglpZihYX2ZsYWcpCgkJcGF0PVBBVFRFUk4xOwoJLyogU2V0IGdsb2JhbCBwYXR0ZXJuICovCglpbnBfcGF0ID0gcGF0OwoJdGVtcCA9KChpbnBfcGF0IDw8IDI0KSB8IChpbnBfcGF0IDw8IDE2KSB8IChpbnBfcGF0IDw8IDgpIHwgaW5wX3BhdCk7CiAgICAgICAgcmV0dXJuKHBhdCk7Cn0KCi8qIAogKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIGZvciBwdXJnZS4gCiovCiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZAphbGxvY19wYnVmKHZvaWQpCiNlbHNlCmFsbG9jX3BidWYodm9pZCkKI2VuZGlmCnsKCXBidWZmZXIgPSAoY2hhciAqKSBhbGxvY19tZW0oKGxvbmcgbG9uZykoMyAqIGNhY2hlX3NpemUpLChpbnQpMCk7CglpZihwYnVmZmVyID09IDApIHsKICAgICAgICAgICAgICAJcGVycm9yKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQ6Iik7CiAgICAgICAgICAgICAgIAlleGl0KDkpOwoJfQojaWZkZWYgXzY0QklUX0FSQ0hfCglwYnVmZmVyID0gKGNoYXIgKikgCgkJKCgodW5zaWduZWQgbG9uZyBsb25nKXBidWZmZXIgKyBjYWNoZV9zaXplICkgCgkJJiB+KGNhY2hlX3NpemUtMSkpOwojZWxzZQoJcGJ1ZmZlciA9IChjaGFyICopIAoJCSgoKGxvbmcpcGJ1ZmZlciArIChsb25nKWNhY2hlX3NpemUgKSAKCQkmIH4oKGxvbmcpY2FjaGVfc2l6ZS0xKSk7CiNlbmRpZgp9CgovKiAKICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRzIGF0IGEgZmlsZQogKiBvciBhIGRldmljZS4KICovCiNpZmRlZiBIQVZFX0FOU0lDX0MKaW50CmNoZWNrX2ZpbGVuYW1lKGNoYXIgKm5hbWUpCiNlbHNlCmNoZWNrX2ZpbGVuYW1lKG5hbWUpCmNoYXIgKm5hbWU7CiNlbmRpZgp7CiNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCglzdHJ1Y3Qgc3RhdDY0IG15c3RhdDsKI2Vsc2UKCXN0cnVjdCBzdGF0IG15c3RhdDsKI2VuZGlmCglpbnQgeDsKCWlmKHN0cmxlbihuYW1lKT09MCkKCQlyZXR1cm4oMCk7CgkvKiBMZXRzIHRyeSBzdGF0IGZpcnN0Li4gbWF5IGdldCBhbiBlcnJvciBpZiBmaWxlIGlzIHRvbyBiaWcgKi8KCXg9SV9TVEFUKG5hbWUsJm15c3RhdCk7CglpZih4PDApCgl7CgkJcmV0dXJuKDApOwoJCS8qIHByaW50ZigiU3RhdCBmYWlsZWQgJWRcbiIseCk7ICovCgl9CglpZihteXN0YXQuc3RfbW9kZSAmIFNfSUZSRUcpCgl7CgkJLypwcmludGYoIklzIGEgcmVndWxhciBmaWxlXG4iKTsqLwoJCXJldHVybigxKTsKCX0KCXJldHVybigwKTsKfQoKI2lmZGVmIEhBVkVfQU5TSUNfQwp2b2lkCnN0YXJ0X21vbml0b3IoY2hhciAqdGVzdCkKI2Vsc2UKc3RhcnRfbW9uaXRvcih0ZXN0KQpjaGFyICp0ZXN0OwojZW5kaWYKewoJY2hhciBjb21tYW5kX2xpbmVbMjU2XTsKCWlmKHN0cmxlbihpbW9uX3N0YXJ0KSE9MCkKCXsKCQlpZihpbW9uX3N5bmMpCgkJICAgc3ByaW50Zihjb21tYW5kX2xpbmUsIiVzICVzIixpbW9uX3N0YXJ0LHRlc3QpOwoJCWVsc2UKCQkgICBzcHJpbnRmKGNvbW1hbmRfbGluZSwiJXMgJXMmIixpbW9uX3N0YXJ0LHRlc3QpOwoJCXN5c3RlbShjb21tYW5kX2xpbmUpOwoJfQp9CiNpZmRlZiBIQVZFX0FOU0lDX0MKdm9pZApzdG9wX21vbml0b3IoY2hhciAqdGVzdCkKI2Vsc2UKc3RvcF9tb25pdG9yKHRlc3QpCmNoYXIgKnRlc3Q7CiNlbmRpZgp7CgljaGFyIGNvbW1hbmRfbGluZVsyNTZdOwoJaWYoc3RybGVuKGltb25fc3RvcCkhPTApCgl7CgkJaWYoaW1vbl9zeW5jKQoJCSAgIHNwcmludGYoY29tbWFuZF9saW5lLCIlcyAlcyIsaW1vbl9zdG9wLHRlc3QpOwoJCWVsc2UKCQkgICBzcHJpbnRmKGNvbW1hbmRfbGluZSwiJXMgJXMgJiIsaW1vbl9zdG9wLHRlc3QpOwoJCXN5c3RlbShjb21tYW5kX2xpbmUpOwoJfQp9CgovKiAKICogQXMgcXVpY2tseSBhcyBwb3NzaWJsZSwgZ2VuZXJhdGUgYSBuZXcgYnVmZmVyIHRoYXQKICogY2FuIG5vdCBiZSBlYXNpbHkgY29tcHJlc3NlZCwgb3IgZGUtZHVwZWQuIEFsc28KICogcGVybWl0IHNwZWNpZmllZCBwZXJjZW50YWdlIG9mIGJ1ZmZlciB0byBiZSB1cGRhdGVkLgogKgogKiBpYnVmIC4uLiBpbnB1dCBidWZmZXIKICogb2J1ZiAuLi4gb3V0cHV0IGJ1ZmZlcgogKiBzZWVkIC4uLiBTZWVkIHRvIHVzZSBmb3Igc3JhbmQsIHJhbmQgLT4geG9yIG9wcwogKiAgICAgICAgICBTZWVkIGNvbXBvc2VkIGZyb206IGJsb2NrbnVtYmVyCgkJKGRvIG5vdCBpbmNsdWRlIGNoaWxkbnVtIGFzIHlvdSB3YW50IGR1cGxpY2F0ZXMpCiAqIHNpemUgLi4uIHNpemUgb2YgYnVmZmVycy4gKGluIGJ5dGVzKQogKiBwZXJjZW50LiBQZXJjZW50IG9mIGJ1ZmZlciB0byBtb2RpZnkuCiAqIHBlcmNlbnRfaW50ZXJpb3IuIFBlcmNlbnQgb2YgYnVmZmVyIHRoYXQgaXMgZGVkdXBhYmxlIHdpdGhpbiAKICogICAgICAgICAgICAgICAgICAgYW5kIGFjcm9zcyBmaWxlcyAKICogcGVyY2VudF9jb21wcmVzcy4gUGVyY2VudCBvZiBidWZmZXIgdGhhdCBpcyBkZWR1cGFibGUgd2l0aGluIAogKiAgICAgICAgICAgICAgICAgICBidXQgbm90IGFjcm9zcyBmaWxlcyAKICoKICogUmV0dXJucyAwICh6ZXJvKSBmb3Igc3VjY2VzcywgYW5kIC0xIChtaW51cyBvbmUpIGZvciBmYWlsdXJlLgogKi8KaW50Cmdlbl9uZXdfYnVmKGNoYXIgKmlidWYsIGNoYXIgKm9idWYsIGxvbmcgc2VlZCwgaW50IHNpemUsIGludCBwZXJjZW50LAoJaW50IHBlcmNlbnRfaW50ZXJpb3IsIGludCBwZXJjZW50X2NvbXByZXNzLCBpbnQgYWxsKQp7CglyZWdpc3RlciBsb25nICppcCwgKm9wOyAvKiBSZWdpc3RlciBmb3Igc3BlZWQgCSovCglyZWdpc3RlciBsb25nIGlzZWVkOyAJLyogUmVnaXN0ZXIgZm9yIHNwZWVkIAkqLwoJcmVnaXN0ZXIgbG9uZyBpc2l6ZTsgCS8qIFJlZ2lzdGVyIGZvciBzcGVlZCAJKi8KCXJlZ2lzdGVyIGxvbmcgY3NlZWQ7CS8qIHNlZWQgZm9yIGRlZHVwYWJsZSBmb3Igd2l0aGluICYgISBhY3Jvc3MgKi8KCXJlZ2lzdGVyIGludCB4LHc7IAkvKiBSZWdpc3RlciBmb3Igc3BlZWQgCSovCglyZWdpc3RlciBpbnQgdmFsdWU7IAkvKiBSZWdpc3RlciBmb3Igc3BlZWQgCSovCglyZWdpc3RlciBpbnQgaW50ZXJpb3Jfc2l6ZTsgCS8qIHNpemUgb2YgaW50ZXJpb3IgZGVkdXAgcmVnaW9uICovCglyZWdpc3RlciBpbnQgY29tcHJlc3Nfc2l6ZTsgCS8qIHNpemUgb2YgY29tcHJlc3Npb24gZGVkdXAgcmVnaW9uICovCglpZihpYnVmID09IE5VTEwpCS8qIG5vIGlucHV0IGJ1ZiAJKi8KCQlyZXR1cm4oLTEpOwoJaWYob2J1ZiA9PSBOVUxMKQkvKiBubyBvdXRwdXQgYnVmIAkqLwoJCXJldHVybigtMSk7CglpZigocGVyY2VudCA+IDEwMCkgfHwgKHBlcmNlbnQgPCAwKSkgLyogcGVyY2VudCBjaGVjayAqLwoJCXJldHVybigtMSk7CglpZihzaXplID09IDApCQkvKiBzaXplIGNoZWNrIAkJKi8KCQlyZXR1cm4oLTEpOwoJc3JhbmQoc2VlZCsxKygoKGludCludW1yZWNzNjQpKmRlZHVwX21zZWVkKSk7IC8qIHNldCByYW5kb20gc2VlZCAqLwoJaXNlZWQgPSByYW5kKCk7CQkvKiBnZW5lcmF0ZSByYW5kb20gdmFsdWUgKi8KCWlzaXplID0gKHNpemUgKiBwZXJjZW50KS8xMDA7IC8qIHBlcmNlbnQgdGhhdCBpcyBkZWR1cGFibGUgKi8KCWludGVyaW9yX3NpemUgPSAoKGlzaXplICogcGVyY2VudF9pbnRlcmlvcikvMTAwKTsvKiAvc2l6ZW9mKGxvbmcpICovCgljb21wcmVzc19zaXplID0oKGludGVyaW9yX3NpemUgKiBwZXJjZW50X2NvbXByZXNzKS8xMDApOwoJaXAgPSAobG9uZyAqKWlidWY7CS8qIHBvaW50ZXIgdG8gaW5wdXQgYnVmICovCglvcCA9IChsb25nICopb2J1ZjsJLyogcG9pbnRlciB0byBvdXRwdXQgYnVmICovCglpZihhbGwgPT0gMCkJCS8qIFNwZWNpYWwgY2FzZSBmb3IgdmVyaWZ5IG9ubHkgKi8KCQlpc2l6ZSA9IHNpemVvZihsb25nKTsKCS8qIGludGVyaW9yX3NpemUgPSBkZWR1cF93aXRoaW4gKyBkZWR1cF9hY3Jvc3MgKi8KCWZvcih3PTA7dzxpbnRlcmlvcl9zaXplO3crPXNpemVvZihsb25nKSkJCgl7CgkJKm9wPTB4ZGVhZGJlZWYrZGVkdXBfbXNlZWQ7CgkJKmlwPTB4ZGVhZGJlZWYrZGVkdXBfbXNlZWQ7CgkJb3ArKzsKCQlpcCsrOwoJfQkKCS8qIFByZXBhcmUgZm9yIGRlZHVwIHdpdGhpbiBidXQgbm90IGFjcm9zcyAqLwoJdz1pbnRlcmlvcl9zaXplIC0gY29tcHJlc3Nfc2l6ZTsKCW9wPShsb25nICopJm9idWZbd107CglpcD0obG9uZyAqKSZpYnVmW3ddOwoJc3JhbmQoY2hpZCsxK2RlZHVwX21zZWVkKTsgICAgICAgICAgICAvKiBzZXQgcmFuZGRvbSBzZWVkIAkqLwoJY3NlZWQgPSByYW5kKCk7CQkvKiBnZW5lcmF0ZSByYW5kb20gdmFsdWUgKi8KCWZvcih3PShpbnRlcmlvcl9zaXplLWNvbXByZXNzX3NpemUpO3c8aW50ZXJpb3Jfc2l6ZTt3Kz1zaXplb2YobG9uZykpCQoJewoJCSpvcD0qaXAgXiBjc2VlZDsgLyogZG8gdGhlIHhvciBvcCAqLwoJCW9wKys7CgkJaXArKzsKCX0JCiAJLyogaXNpemUgPSBkZWR1cCBhY3Jvc3Mgb25seSAqLwoJZm9yKHg9aW50ZXJpb3Jfc2l6ZTt4PGlzaXplO3grPXNpemVvZihsb25nKSkJLyogdGlnaHQgbG9vcCBmb3IgdHJhbnNmb3JtYXRpb24gKi8KCXsKCQkqb3A9KmlwIF4gaXNlZWQ7IC8qIGRvIHRoZSB4b3Igb3AgKi8KCQlvcCsrOwoJCWlwKys7Cgl9CQoJaWYoYWxsID09IDApCQkvKiBTcGVjaWFsIGNhc2UgZm9yIHZlcmlmeSBvbmx5ICovCgkJcmV0dXJuKDApOwoJLyogbWFrZSB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIG5vbi1kZWR1cGFibGUgKi8KCWlmKDEwMC1wZXJjZW50ID4gMCkKCXsKCQlzcmFuZCgxK3NlZWQrKChjaGlkKzEpKihpbnQpbnVtcmVjczY0KSpkZWR1cF9tc2VlZCk7CgkJdmFsdWU9cmFuZCgpOwovKiBwcmludGYoIk5vbi1kZWR1cCB2YWx1ZSAleCBzZWVkICV4XG4iLHZhbHVlLHNlZWQpOyovCgkJZm9yKCA7IHg8c2l6ZTt4Kz1zaXplb2YobG9uZykpCgkJCSpvcCsrPSgqaXArKyledmFsdWU7IC8qIHJhbmRvbWl6ZSB0aGUgcmVtYWluZGVyICovCgl9CglyZXR1cm4oMCk7Cn0KLyogCiAqIFVzZWQgdG8gdG91Y2ggYWxsIG9mIHRoZSBidWZmZXJzIHNvIHRoYXQgdGhlIENQVSBkYXRhCiAqIGNhY2hlIGlzIGhvdCwgYW5kIG5vdCBwYXJ0IG9mIHRoZSBtZWFzdXJlbWVudC4KICovCnZvaWQKdG91Y2hfZGVkdXAoY2hhciAqaSwgaW50IHNpemUpCnsKCXJlZ2lzdGVyIGludCB4OwoJcmVnaXN0ZXIgbG9uZyAqaXA7CglpcCA9IChsb25nICopaTsKCXNyYW5kKERFRFVQU0VFRCk7Cglmb3IoeD0wO3g8c2l6ZS9zaXplb2YobG9uZyk7eCsrKQoJewoJCSppcD1yYW5kKCk7IC8qIGZpbGwgaW5pdGlhbCBidWZmZXIgKi8KCQlpcCsrOwoJfQp9CgovKiAKICAgQSBDLXByb2dyYW0gZm9yIE1UMTk5MzctNjQgKDIwMDQvOS8yOSB2ZXJzaW9uKS4KICAgQ29kZWQgYnkgVGFrdWppIE5pc2hpbXVyYSBhbmQgTWFrb3RvIE1hdHN1bW90by4KCiAgIFRoaXMgaXMgYSA2NC1iaXQgdmVyc2lvbiBvZiBNZXJzZW5uZSBUd2lzdGVyIHBzZXVkb3JhbmRvbSBudW1iZXIKICAgZ2VuZXJhdG9yLgoKICAgQmVmb3JlIHVzaW5nLCBpbml0aWFsaXplIHRoZSBzdGF0ZSBieSB1c2luZyBpbml0X2dlbnJhbmQ2NChzZWVkKSAgCiAgIG9yIGluaXRfYnlfYXJyYXk2NChpbml0X2tleSwga2V5X2xlbmd0aCkuCgogICBDb3B5cmlnaHQgKEMpIDIwMDQsIE1ha290byBNYXRzdW1vdG8gYW5kIFRha3VqaSBOaXNoaW11cmEsCiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAgYXJlIG1ldDoKCiAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgogICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgogICAgIDMuIFRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgCiAgICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIAogICAgICAgIHBlcm1pc3Npb24uCgogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCiAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKICAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCiAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKICAgUmVmZXJlbmNlczoKICAgVC4gTmlzaGltdXJhLCBgYFRhYmxlcyBvZiA2NC1iaXQgTWVyc2VubmUgVHdpc3RlcnMnJwogICAgIEFDTSBUcmFuc2FjdGlvbnMgb24gTW9kZWxpbmcgYW5kIAogICAgIENvbXB1dGVyIFNpbXVsYXRpb24gMTAuICgyMDAwKSAzNDgtLTM1Ny4KICAgTS4gTWF0c3Vtb3RvIGFuZCBULiBOaXNoaW11cmEsCiAgICAgYGBNZXJzZW5uZSBUd2lzdGVyOiBhIDYyMy1kaW1lbnNpb25hbGx5IGVxdWlkaXN0cmlidXRlZAogICAgICAgdW5pZm9ybSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvcicnCiAgICAgQUNNIFRyYW5zYWN0aW9ucyBvbiBNb2RlbGluZyBhbmQgCiAgICAgQ29tcHV0ZXIgU2ltdWxhdGlvbiA4LiAoSmFuLiAxOTk4KSAzLS0zMC4KCiAgIEFueSBmZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuCiAgIGh0dHA6Ly93d3cubWF0aC5oaXJvc2hpbWEtdS5hYy5qcC9+bS1tYXQvTVQvZW10Lmh0bWwKICAgZW1haWw6IG0tbWF0IEAgbWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZXMpCiovCgoKCiNkZWZpbmUgTk4gMzEyCiNkZWZpbmUgTU0gMTU2CiNkZWZpbmUgTUFUUklYX0EgMHhCNTAyNkY1QUE5NjYxOUU5VUxMCiNkZWZpbmUgVU0gMHhGRkZGRkZGRjgwMDAwMDAwVUxMIC8qIE1vc3Qgc2lnbmlmaWNhbnQgMzMgYml0cyAqLwojZGVmaW5lIExNIDB4N0ZGRkZGRkZVTEwgLyogTGVhc3Qgc2lnbmlmaWNhbnQgMzEgYml0cyAqLwoKCi8qIFRoZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZlY3RvciAqLwpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG10W05OXTsgCi8qIG10aT09Tk4rMSBtZWFucyBtdFtOTl0gaXMgbm90IGluaXRpYWxpemVkICovCnN0YXRpYyBpbnQgbXRpPU5OKzE7IAoKLyogaW5pdGlhbGl6ZXMgbXRbTk5dIHdpdGggYSBzZWVkICovCnZvaWQgaW5pdF9nZW5yYW5kNjQodW5zaWduZWQgbG9uZyBsb25nIHNlZWQpCnsKICAgIG10WzBdID0gc2VlZDsKICAgIGZvciAobXRpPTE7IG10aTxOTjsgbXRpKyspIAogICAgICAgIG10W210aV0gPSAgKDYzNjQxMzYyMjM4NDY3OTMwMDVVTEwgKiAobXRbbXRpLTFdIF4gKG10W210aS0xXSA+PiA2MikpICsgbXRpKTsKfQoKLyogaW5pdGlhbGl6ZSBieSBhbiBhcnJheSB3aXRoIGFycmF5LWxlbmd0aCAqLwovKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCi8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwp2b2lkIGluaXRfYnlfYXJyYXk2NCh1bnNpZ25lZCBsb25nIGxvbmcgaW5pdF9rZXlbXSwKCQkgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlfbGVuZ3RoKQp7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaSwgaiwgazsKICAgIGluaXRfZ2VucmFuZDY0KDE5NjUwMjE4VUxMKTsKICAgIGk9MTsgaj0wOwogICAgayA9IChOTj5rZXlfbGVuZ3RoID8gTk4gOiBrZXlfbGVuZ3RoKTsKICAgIGZvciAoOyBrOyBrLS0pIHsKICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDYyKSkgKiAzOTM1NTU5MDAwMzcwMDAzODQ1VUxMKSkKICAgICAgICAgICsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgaSsrOyBqKys7CiAgICAgICAgaWYgKGk+PU5OKSB7IG10WzBdID0gbXRbTk4tMV07IGk9MTsgfQogICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7CiAgICB9CiAgICBmb3IgKGs9Tk4tMTsgazsgay0tKSB7CiAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiA2MikpICogMjg2MjkzMzU1NTc3Nzk0MTc1N1VMTCkpCiAgICAgICAgICAtIGk7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICBpKys7CiAgICAgICAgaWYgKGk+PU5OKSB7IG10WzBdID0gbXRbTk4tMV07IGk9MTsgfQogICAgfQoKICAgIG10WzBdID0gMVVMTCA8PCA2MzsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8gCn0KCi8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsIDJeNjQtMV0taW50ZXJ2YWwgKi8KdW5zaWduZWQgbG9uZyBsb25nIGdlbnJhbmQ2NF9pbnQ2NCh2b2lkKQp7CiAgICBpbnQgaTsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBtYWcwMVsyXT17MFVMTCwgTUFUUklYX0F9OwoKICAgIGlmIChtdGkgPj0gTk4pIHsgLyogZ2VuZXJhdGUgTk4gd29yZHMgYXQgb25lIHRpbWUgKi8KCiAgICAgICAgLyogaWYgaW5pdF9nZW5yYW5kNjQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqLwogICAgICAgIC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAgICAgKi8KICAgICAgICBpZiAobXRpID09IE5OKzEpIAogICAgICAgICAgICBpbml0X2dlbnJhbmQ2NCg1NDg5VUxMKTsgCgogICAgICAgIGZvciAoaT0wO2k8Tk4tTU07aSsrKSB7CiAgICAgICAgICAgIHggPSAobXRbaV0mVU0pfChtdFtpKzFdJkxNKTsKICAgICAgICAgICAgbXRbaV0gPSBtdFtpK01NXSBeICh4Pj4xKSBeIG1hZzAxWyhpbnQpKHgmMVVMTCldOwogICAgICAgIH0KICAgICAgICBmb3IgKDtpPE5OLTE7aSsrKSB7CiAgICAgICAgICAgIHggPSAobXRbaV0mVU0pfChtdFtpKzFdJkxNKTsKICAgICAgICAgICAgbXRbaV0gPSBtdFtpKyhNTS1OTildIF4gKHg+PjEpIF4gbWFnMDFbKGludCkoeCYxVUxMKV07CiAgICAgICAgfQogICAgICAgIHggPSAobXRbTk4tMV0mVU0pfChtdFswXSZMTSk7CiAgICAgICAgbXRbTk4tMV0gPSBtdFtNTS0xXSBeICh4Pj4xKSBeIG1hZzAxWyhpbnQpKHgmMVVMTCldOwoKICAgICAgICBtdGkgPSAwOwogICAgfQogIAogICAgeCA9IG10W210aSsrXTsKCiAgICB4IF49ICh4ID4+IDI5KSAmIDB4NTU1NTU1NTU1NTU1NTU1NVVMTDsKICAgIHggXj0gKHggPDwgMTcpICYgMHg3MUQ2N0ZGRkVEQTYwMDAwVUxMOwogICAgeCBePSAoeCA8PCAzNykgJiAweEZGRjdFRUUwMDAwMDAwMDBVTEw7CiAgICB4IF49ICh4ID4+IDQzKTsKCiAgICByZXR1cm4geDsKfQoKLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwgMl42My0xXS1pbnRlcnZhbCAqLwpsb25nIGxvbmcgZ2VucmFuZDY0X2ludDYzKHZvaWQpCnsKICAgIHJldHVybiAobG9uZyBsb25nKShnZW5yYW5kNjRfaW50NjQoKSA+PiAxKTsKfQoKLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxXS1yZWFsLWludGVydmFsICovCmRvdWJsZSBnZW5yYW5kNjRfcmVhbDEodm9pZCkKewogICAgcmV0dXJuIChnZW5yYW5kNjRfaW50NjQoKSA+PiAxMSkgKiAoMS4wLzkwMDcxOTkyNTQ3NDA5OTEuMCk7Cn0KCi8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqLwpkb3VibGUgZ2VucmFuZDY0X3JlYWwyKHZvaWQpCnsKICAgIHJldHVybiAoZ2VucmFuZDY0X2ludDY0KCkgPj4gMTEpICogKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApOwp9CgovKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uICgwLDEpLXJlYWwtaW50ZXJ2YWwgKi8KZG91YmxlIGdlbnJhbmQ2NF9yZWFsMyh2b2lkKQp7CiAgICByZXR1cm4gKChnZW5yYW5kNjRfaW50NjQoKSA+PiAxMikgKyAwLjUpICogKDEuMC80NTAzNTk5NjI3MzcwNDk2LjApOwp9CgojaWZkZWYgTVRfVEVTVAoKaW50IG1haW4odm9pZCkKewogICAgaW50IGk7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW5pdFs0XT17MHgxMjM0NVVMTCwgMHgyMzQ1NlVMTCwgMHgzNDU2N1VMTCwgMHg0NTY3OFVMTH0sIGxlbmd0aD00OwogICAgaW5pdF9ieV9hcnJheTY0KGluaXQsIGxlbmd0aCk7CiAgICBwcmludGYoIjEwMDAgb3V0cHV0cyBvZiBnZW5yYW5kNjRfaW50NjQoKVxuIik7CiAgICBmb3IgKGk9MDsgaTwxMDAwOyBpKyspIHsKICAgICAgcHJpbnRmKCIlMjBsbHUgIiwgZ2VucmFuZDY0X2ludDY0KCkpOwogICAgICBpZiAoaSU1PT00KSBwcmludGYoIlxuIik7CiAgICB9CiAgICBwcmludGYoIlxuMTAwMCBvdXRwdXRzIG9mIGdlbnJhbmQ2NF9yZWFsMigpXG4iKTsKICAgIGZvciAoaT0wOyBpPDEwMDA7IGkrKykgewogICAgICBwcmludGYoIiUxMC44ZiAiLCBnZW5yYW5kNjRfcmVhbDIoKSk7CiAgICAgIGlmIChpJTU9PTQpIHByaW50ZigiXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9CiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogCQkJCQkJCQkJKi8KLyogVGhlIFBJVCBQcm9ncmFtbWFibGUgSW50ZXJkaW1lbnNpb25hbCBUaW1lciAJCQkJKi8KLyogCQkJCQkJCQkJKi8KLyogVGhpcyBpcyB1c2VkIHRvIG1lYXN1cmUgdGltZSwgd2hlbiB5b3Uga25vdyBzb21ldGhpbmcgb2RkIGlzIGdvaW5nICAgKi8KLyogdG8gYmUgaGFwcGVuaW5nIHdpdGggeW91ciB3cmlzdCB3YXRjaC4gRm9yIGV4YW1wbGUsIHlvdSBoYXZlIGVudGVyZWQJKi8KLyogYSB0ZW1wb3JhbCBkaXN0b3J0aW9uIGZpZWxkIHdoZXJlIHRpbWUgaXRzLXNlbGYgaXMgbm90IG1vdmluZyAgICAgICAgKi8KLyogYXMgaXQgZG9lcyBpbiB5b3VyIG5vcm1hbCB1bml2ZXJzZS4gKCB0aGluZyBlaXRoZXIgaW50ZW5zZSAJCSovCi8qIGdyYXZpdGF0aW9uYWwgZmllbGRzIGJlbmRpbmcgc3BhY2UtdGltZSwgb3IgdmlydHVhbCBtYWNoaW5lcyBwbGF5aW5nICovCi8qIHdpdGggdGltZSApICAJCQkJCQkJKi8KLyogU28uLiB5b3UgbmVlZCB0byBtZWFzdXJlIHRpbWUsIGJ1dCB3aXRoIHJlc3BlY3QgdG8gYSBub3JtYWwgCQkqLwovKiBzcGFjZS10aW1lLiAgU28uLiB3ZSBkZWFsIHdpdGggdGhpcyBieSBjYWxsaW5nIGZvciB0aW1lIGZyb20gYW5vdGhlciAqLwovKiBtYWNoaW5lLCBidXQgZG8gc28gd2l0aCBhIHZlcnkgc2ltaWxhciBpbnRlcmZhY2UgdG8gdGhhdCBvZiAJCSovCi8qIGdldHRpbWVvZmRheSgpLgkJCQkJCQkqLwovKiBUbyBhY3RpdmF0ZSB0aGlzLCBvbmUgb25seSBuZWVkcyB0byBzZXQgYW4gZW52aXJvbm1lbnRhbCB2YXJpYWJsZS4gICAqLwovKiAgICAgIEV4YW1wbGU6ICAgc2V0ZW52IElPWl9QSVQgaG9zdG5hbWVfb2ZfUElUX3NlcnZlcgkJKi8KLyogVGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgdGVsbHMgdGhpcyBjbGllbnQgd2hlcmUgdG8gZ28gdG8gZ2V0IAkqLwovKiBjb3JyZWN0IHRpbWVvZmRheSB0aW1lIHN0YW1wcywgd2l0aCB0aGUgdXN1YWwgZ2V0dGltZW9mZGF5KCkgCSovCi8qIHJlc29sdXRpb24uIChtaWNyb3NlY29uZCByZXNvbHV0aW9uKQkJCQkJKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIFRoZSBQSVQgY2xpZW50OiBBZGFwdGVkIGZyb20gc291cmNlIGZvdW5kIG9uIHRoZSB3ZWIgZm9yIHNvbWVvbmUncyAgICovCi8qIGRheXRpbWUgY2xpZW50IGNvZGUuIChVc2VkIGluIG1hbnkgZXhhbXBsZXMgZm9yIG5ldHdvcmsgcHJvZ3JhbW1pbmcgICovCi8qIFJlYWRzIFBJVCBpbmZvIG92ZXIgYSBzb2NrZXQgZnJvbSBhIFBJVCBzZXJ2ZXIuIAkJCSovCi8qIFRoZSBQSVQgc2VydmVyIHNlbmRzIGl0cyByYXcgbWljcm9zZWNvbmQgdmVyc2lvbiBvZiBnZXR0aW1lb2ZkYXkgCSovCi8qIFRoZSBQSVQgY2xpZW50IGNvbnZlcnRzIHRoaXMgYmFjayBpbnRvIHRpbWV2YWwgc3RydWN0dXJlIGZvcm1hdC4gICAgICovCi8qIFdyaXR0ZW4gYnk6IERvbiBDYXBwcy4gWyBjYXBwc0Bpb3pvbmUub3JnIF0gCQkJCSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgICAgICAqLwovKiA+Pj4+IERPTidUIGZvcmdldCwgeW91IG11c3QgcHV0IGEgZGVmaW5pdGlvbiBmb3IgUElUIDw8PDw8PDw8PDwgICAgICAqLwovKiA+Pj4+IGluIC9ldGMvc2VydmljZXMgIDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgICAgICAqLwovKj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgICAgICAqLwojZGVmaW5lIERGTFRfU0VSVklDRSAgICJQSVQiICAgICAvKiBEZWZhdWx0IHNlcnZpY2UgbmFtZS4gICAgICAgICAgICAJKi8KI2RlZmluZSBJTlZBTElEX0RFU0MgICAtMSAgICAgICAgLyogSW52YWxpZCBmaWxlIChzb2NrZXQpIGRlc2NyaXB0b3IuCSovCiNkZWZpbmUgTUFYQkZSU0laRSAgICAgMjU2ICAgICAgIC8qIE1heCBiZnIgc3ogdG8gcmVhZCByZW1vdGUgVE9ELiAgIAkqLwoKLyoKKiogVHlwZSBkZWZpbml0aW9ucyAoZm9yIGNvbnZlbmllbmNlKS4KKi8KI2lmIGRlZmluZWQoV2luZG93cykKaW50IGZhbHNlID0gMDsKaW50IHRydWUgPSAxOwojZWxzZQp0eXBlZGVmIGVudW0geyBmYWxzZSA9IDAsIHRydWUgfSBib29sZWFuOwojZW5kaWYKdHlwZWRlZiBzdHJ1Y3Qgc29ja2FkZHJfaW4gICAgICAgc29ja2FkZHJfaW5fdDsKdHlwZWRlZiBzdHJ1Y3Qgc29ja2FkZHJfaW42ICAgICAgc29ja2FkZHJfaW42X3Q7CgovKgogKiBSb3V0aW5lIHRvIG1pbWljIGdldHRpbWVvZmRheSgpIHVzaW5nIGEgcmVtb3RlIFBJVCBzZXJ2ZXIgCiAqLwppbnQgcGl0X2dldHRpbWVvZmRheSggc3RydWN0IHRpbWV2YWwgKnRwLCBzdHJ1Y3QgdGltZXpvbmUgKmZvbywKCWNoYXIgKnBpdF9ob3N0bmFtZSwgY2hhciAqcGl0X3NlcnZpY2UpCnsKCWludCAgICAgICAgICAgIAlzY2t0OyAgICAgICAgICAvKiBzb2NrZXQgZGVzY3JpcHRvciAqLwoJdW5zaWduZWQgc2NvcGVJZCA9IDA7CgoJLyogU2VlIGlmIHRoZSBpbnRlcmRpbWVuc2lvbmFsIHJpZnQgaXMgYWN0aXZlICovCgkKCWlmKHBpdF9ob3N0bmFtZVswXSA9PSAwKQoJewoJCXJldHVybiBnZXR0aW1lb2ZkYXkodHAsZm9vKTsKCX0KCiAJaWYgKCAoIHNja3QgPSBvcGVuU2NrdCggcGl0X2hvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwaXRfc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVJZCApICkgPT0gSU5WQUxJRF9ERVNDICkKICAgCXsKICAgICAgCQlmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICJTb3JyeS4uLiBhIGNvbm5lY3Rpb25sZXNzIHNvY2tldCBjb3VsZCAiCiAgICAgICAgICAgICAgICAgICJub3QgYmUgc2V0IHVwLlxuIik7CiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgIAl9CgkvKgogICAJKiogR2V0IHRoZSByZW1vdGUgUElULgogICAJKi8KICAgCXBpdCggc2NrdCAsdHAgKTsKCWNsb3NlKHNja3QpOwogICAgCXJldHVybiAwOwp9CgovKgogKiBPcGVucyBhIHNvY2tldCBmb3IgdGhlIFBJVCB0byB1c2UgdG8gZ2V0IHRoZSB0aW1lCiAqIGZyb20gYSByZW1vdGUgdGltZSBzZXJ2ZXIgKCBBIFBJVCBzZXJ2ZXIgKSAKICovCnN0YXRpYyBpbnQgb3BlblNja3QoIGNvbnN0IGNoYXIgICAqaG9zdCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICpzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIHNjb3BlSWQgKQp7CiAgIHN0cnVjdCBhZGRyaW5mbyAqYWk7CiAgIGludCAgICAgICAgICAgICAgYWlFcnI7CiAgIHN0cnVjdCBhZGRyaW5mbyAqYWlIZWFkOwogICBzdHJ1Y3QgYWRkcmluZm8gIGhpbnRzOwogICBzb2NrYWRkcl9pbjZfdCAgKnBTYWRySW42OwogICBpbnQgICAgICAgICAgICAgIHNja3Q7CiAgIC8qCiAgICAqIEluaXRpYWxpemUgdGhlICdoaW50cycgc3RydWN0dXJlIGZvciBnZXRhZGRyaW5mbygzKS4KICAgKi8KICAgbWVtc2V0KCAmaGludHMsIDAsIHNpemVvZiggaGludHMgKSApOwogICBoaW50cy5haV9mYW1pbHkgICA9IFBGX1VOU1BFQzsgICAgIC8qIElQdjQgb3IgSVB2NiByZWNvcmRzICovCiAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07ICAgIC8qIENvbm5lY3Rpb24gb3JpZW50ZWQgY29tbXVuaWNhdGlvbi4qLwogICBoaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOyAgIC8qIFRDUCB0cmFuc3BvcnQgbGF5ZXIgcHJvdG9jb2wgb25seS4gKi8KICAgLyoKICAgKiogTG9vayB1cCB0aGUgaG9zdC9zZXJ2aWNlIGluZm9ybWF0aW9uLgogICAqLwogICBpZiAoICggYWlFcnIgPSBnZXRhZGRyaW5mbyggaG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGludHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWlIZWFkICkgKSAhPSAwICkKICAgewogICAgICBmcHJpbnRmKCBzdGRlcnIsICIobGluZSAlZCk6IEVSUk9SIC0gJXMuXG4iLCBfX0xJTkVfXywgCgkgZ2FpX3N0cmVycm9yKCBhaUVyciApICk7CiAgICAgIHJldHVybiBJTlZBTElEX0RFU0M7CiAgIH0KICAgLyoKICAgKiogR28gdGhyb3VnaCB0aGUgbGlzdCBhbmQgdHJ5IHRvIG9wZW4gYSBjb25uZWN0aW9uLiAgQ29udGludWUgdW50aWwgZWl0aGVyCiAgICoqIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBvciB0aGUgZW50aXJlIGxpc3QgaXMgZXhoYXVzdGVkLgogICAqLwogICBmb3IgKCBhaSA9IGFpSGVhZCwgICBzY2t0ID0gSU5WQUxJRF9ERVNDOwogICAgICAgICAoIGFpICE9IE5VTEwgKSAmJiAoIHNja3QgPT0gSU5WQUxJRF9ERVNDICk7CiAgICAgICAgIGFpID0gYWktPmFpX25leHQgKQogICB7CiAgICAgIC8qCiAgICAgICoqIElQdjYga2x1Z2UuICBNYWtlIHN1cmUgdGhlIHNjb3BlIElEIGlzIHNldC4KICAgICAgKi8KICAgICAgaWYgKCBhaS0+YWlfZmFtaWx5ID09IFBGX0lORVQ2ICkKICAgICAgewogICAgICAgICBwU2FkckluNiA9IChzb2NrYWRkcl9pbjZfdCopIGFpLT5haV9hZGRyOwogICAgICAgICBpZiAoIHBTYWRySW42LT5zaW42X3Njb3BlX2lkID09IDAgKQogICAgICAgICB7CiAgICAgICAgICAgIHBTYWRySW42LT5zaW42X3Njb3BlX2lkID0gc2NvcGVJZDsKICAgICAgICAgfSAgLyogRW5kIElGIHRoZSBzY29wZSBJRCB3YXNuJ3Qgc2V0LiAqLwogICAgICB9ICAvKiBFbmQgSVB2NiBrbHVnZS4gKi8KICAgICAgLyoKICAgICAgKiogQ3JlYXRlIGEgc29ja2V0LgogICAgICAqLwogICAgICBzY2t0ID0gc29ja2V0KCBhaS0+YWlfZmFtaWx5LCBhaS0+YWlfc29ja3R5cGUsIGFpLT5haV9wcm90b2NvbCApOwogICAgICBpZihzY2t0ID09IC0xKQogICAgICB7CiAgICAgICAgIHNja3QgPSBJTlZBTElEX0RFU0M7CiAgICAgICAgIGNvbnRpbnVlOyAgIC8qIFRyeSB0aGUgbmV4dCBhZGRyZXNzIHJlY29yZCBpbiB0aGUgbGlzdC4gKi8KICAgICAgfQogICAgICAvKgogICAgICAqKiBTZXQgdGhlIHRhcmdldCBkZXN0aW5hdGlvbiBmb3IgdGhlIHJlbW90ZSBob3N0IG9uIHRoaXMgc29ja2V0LiAgVGhhdAogICAgICAqKiBpcywgdGhpcyBzb2NrZXQgb25seSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgICovCiAgICAgIGlmIChjb25uZWN0KCBzY2t0LCBhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4gKSApCiAgICAgIHsKICAgICAgICAgKHZvaWQpIGNsb3NlKCBzY2t0ICk7ICAgLyogQ291bGQgdXNlIHN5c3RlbSBjYWxsIGFnYWluIGhlcmUsIAoJCQkJCWJ1dCB3aHk/ICovCiAgICAgICAgIHNja3QgPSBJTlZBTElEX0RFU0M7CiAgICAgICAgIGNvbnRpbnVlOyAgIC8qIFRyeSB0aGUgbmV4dCBhZGRyZXNzIHJlY29yZCBpbiB0aGUgbGlzdC4gKi8KICAgICAgfQogICB9ICAvKiBFbmQgRk9SIGVhY2ggYWRkcmVzcyByZWNvcmQgcmV0dXJuZWQgYnkgZ2V0YWRkcmluZm8oMykuICovCiAgIC8qCiAgICoqIENsZWFuIHVwICYgcmV0dXJuLgogICAqLwogICBmcmVlYWRkcmluZm8oIGFpSGVhZCApOwogICByZXR1cm4gc2NrdDsKfSAgLyogRW5kIG9wZW5TY2t0KCkgKi8KCi8qCiAqIFJlYWQgdGhlIFBJVCwgYW5kIGNvbnZlcnQgdGhpcyBiYWNrIGludG8gdGltZXZhbCAKICogaW5mbywgYW5kIHN0b3JlIGl0IGluIHRoZSB0aW1ldmFsIHN0cnVjdHVyZSB0aGF0IHdhcwogKiBwYXNzZWQgaW4uCiAqLwpzdGF0aWMgdm9pZCBwaXQoIGludCBzY2t0LCBzdHJ1Y3QgdGltZXZhbCAqdHApCnsKICAgY2hhciBiZnJbIE1BWEJGUlNJWkUrMSBdOwogICBpbnQgIGluQnl0ZXM7CiAgIGxvbmcgbG9uZyB2YWx1ZTsKICAgLyoKICAgKiogU2VuZCBhIGRhdGFncmFtIHRvIHRoZSBzZXJ2ZXIgdG8gd2FrZSBpdCB1cC4gIFRoZSBjb250ZW50IGlzbid0CiAgICoqIGltcG9ydGFudCwgYnV0IHNvbWV0aGluZyBtdXN0IGJlIHNlbnQgdG8gbGV0IGl0IGtub3cgd2Ugd2FudCB0aGUgVE9ELgogICAqLwogICB3cml0ZSggc2NrdCwgIkFyZSB5b3UgdGhlcmU/IiwgMTQgKTsKICAgLyoKICAgKiogUmVhZCB0aGUgUElUIGZyb20gdGhlIHJlbW90ZSBob3N0LgogICAqLwogICBpbkJ5dGVzID0gcmVhZCggc2NrdCwgYmZyLCBNQVhCRlJTSVpF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ZkJcLWhcZlBdDQpbXGZCXC1vXGZQXQ0KW1xmQlwtbFxmUCBcZkltaW5fbnVtYmVyX3Byb2NzXGZQXQ0KW1xmQlwtdVxmUCBcZkltYXhfbnVtYmVyX3Byb2NzXGZQXQ0KW1xmQlwtdlxmUF0NCltcZkJcLVJcZlBdDQpbXGZCXC14XGZQXQ0KW1xmQlwtZFxmUCBcZkltaWNyb3NlY29uZHNcZlBdDQpbXGZCXC1GXGZQIFxmSXBhdGgxIHBhdGgyLi4uXGZQXQ0KW1xmQlwtVlxmUCBcZklwYXR0ZXJuIFxmUF0NCltcZkJcLWpcZlAgXGZJc3RyaWRlXGZQXQ0KW1xmQlwtVFxmUF0NCltcZkJcLUNcZlBdDQpbXGZCXC1CXGZQXQ0KW1xmQlwtRFxmUF0NCltcZkJcLUdcZlBdDQpbXGZCXC1JXGZQXQ0KW1xmQlwtSFxmUCBcZklkZXB0aFxmUF0NCltcZkJcLWtcZlAgXGZJZGVwdGhcZlBdDQpbXGZCXC1VXGZQIFxmSW1vdW50X3BvaW50XGZQXQ0KW1xmQlwtU1xmUCBcZkljYWNoZV9zaXplXGZQXQ0KW1xmQlwtT1xmUF0NCltcZkJcLUxcZlAgXGZJbGluZV9zaXplXGZQXQ0KW1xmQlwtS1xmUF0NCltcZkJcLU5cZlBdDQpbXGZCXC1RXGZQXQ0KW1xmQlwtUFxmUCBcZklzdGFydF9jcHVcZlBdDQpbXGZCXC1jXGZQXQ0KW1xmQlwtZVxmUF0NCltcZkJcLWJcZlAgXGZJRXhjZWwueGxzXGZQXQ0KW1xmQlwtSlxmUCBcZkltaWxsaXNlY29uZHNcZlBdDQpbXGZCXC1YXGZQIFxmSVtwYXRoXWZpbGVuYW1lXGZQXQ0KW1xmQlwtWVxmUCBcZklbcGF0aF1maWxlbmFtZVxmUF0NCltcZkJcLXdcZlBdDQpbXGZCXC1XXGZQXQ0KW1xmQlwtelxmUF0NCltcZkJcLVpcZlBdDQpbXGZCXC1uXGZQIFxmSW1pbl9maWxlc2l6ZV9LYlxmUF0NCltcZkJcLWdcZlAgXGZJbWF4X2ZpbGVzaXplX0tiXGZQXQ0KW1xmQlwteVxmUCBcZkltaW5fcmVjb3Jkc2l6ZV9LYlxmUF0NCltcZkJcLXFcZlAgXGZJbWF4X3JlY29yZHNpemVfS2JcZlBdDQpbXGZCXC0rZFxmUF0NCltcZkJcLSt1XGZQXQ0KW1xmQlwtK21cZlAgXGZJY2xpZW50X2ZpbGVuYW1lXGZQXQ0KW1xmQlwtK25cZlBdDQpbXGZCXC0rTlxmUF0NCltcZkJcLStwXGZQIFxmSXBlcmNlbnRfcmVhZFxmUF0NCltcZkJcLStyXGZQXQ0KW1xmQlwtK3RcZlBdDQpbXGZCXC0rbFxmUF0NCltcZkJcLStMXGZQXQ0KW1xmQlwtK0RcZlBdDQpbXGZCXC0rQVxmUCBcZkltYWR2aXNlX3NlbGVjdG9yXGZQXQ0KW1xmQlwtK2hcZlAgXGZJaG9zdG5hbWVcZlBdDQpbXGZCXC0rVFxmUF0NCltcZkJcLSt3XGZQIFxmSVBlcmNlbnQgZGUtZHVwYWJsZS5cZlBdDQoNCi5oeQ0KLlNIIERFU0NSSVBUSU9ODQouQiBJb3pvbmUNCmlzIGEgZmlsZXN5c3RlbSBiZW5jaG1hcmsgdG9vbC4gVGhlIGJlbmNobWFyayBnZW5lcmF0ZXMgYW5kIG1lYXN1cmVzDQphIHZhcmlldHkgb2YgZmlsZSBvcGVyYXRpb25zLiANCi5CIElvem9uZQ0KaGFzIGJlZW4gcG9ydGVkIHRvIG1hbnkgbWFjaGluZXMgYW5kIHJ1bnMgdW5kZXIgbWFueSBvcGVyYXRpbmcgc3lzdGVtcy4gDQpUaGlzIGRvY3VtZW50IHdpbGwgY292ZXIgdGhlIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIG9wZXJhdGlvbnMgdGhhdCBhcmUgDQp0ZXN0ZWQgYXMgd2VsbCBhcyBjb3ZlcmFnZSBvZiBhbGwgb2YgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zLg0KLlBQDQouQiBJb3pvbmUNCmlzIHVzZWZ1bCBmb3IgZGV0ZXJtaW5pbmcgYSBicm9hZCBmaWxlc3lzdGVtIGFuYWx5c2lzIG9mIGEgdmVuZG9yJ3MNCmNvbXB1dGVyIHBsYXRmb3JtLiBUaGUgYmVuY2htYXJrIHRlc3RzIGZpbGUgSS9PIHBlcmZvcm1hbmNlIGZvciB0aGUNCmZvbGxvd2luZyBvcGVyYXRpb25zLg0KLlBQDQogICAgICAgICAgUmVhZCwgd3JpdGUsIHJlLXJlYWQsIHJlLXdyaXRlLCByZWFkIGJhY2t3YXJkcywgcmVhZCBzdHJpZGVkLA0KZnJlYWQsIGZ3cml0ZSwgcmFuZG9tIHJlYWQvd3JpdGUsIHByZWFkL3B3cml0ZSB2YXJpYW50cw0KLlBQDQpXaGlsZSBjb21wdXRlcnMgYXJlIHR5cGljYWxseSBwdXJjaGFzZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiBpbiBtaW5kIGl0IGlzDQphbHNvIGxpa2VseSB0aGF0IG92ZXIgdGltZSB0aGUgYXBwbGljYXRpb24gbWl4IHdpbGwgY2hhbmdlLiBNYW55IHZlbmRvcnMNCmhhdmUgZW5oYW5jZWQgdGhlaXIgb3BlcmF0aW5nIHN5c3RlbXMgdG8gcGVyZm9ybSB3ZWxsIGZvciBzb21lIGZyZXF1ZW50bHkNCnVzZWQgYXBwbGljYXRpb25zLiBBbHRob3VnaCB0aGlzIGFjY2VsZXJhdGVzIHRoZSBJL08gZm9yIHRob3NlIGZldw0KYXBwbGljYXRpb25zIGl0IGlzIGFsc28gbGlrZWx5IHRoYXQgdGhlIHN5c3RlbSBtYXkgbm90IHBlcmZvcm0gd2VsbCBmb3INCm90aGVyIGFwcGxpY2F0aW9ucyB0aGF0IHdlcmUgbm90IHRhcmdldGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBBbg0KZXhhbXBsZSBvZiB0aGlzIHR5cGUgb2YgZW5oYW5jZW1lbnQgaXM6IERhdGFiYXNlLiBNYW55IG9wZXJhdGluZyBzeXN0ZW1zDQpoYXZlIHRlc3RlZCBhbmQgdHVuZWQgdGhlIGZpbGVzeXN0ZW0gc28gaXQgd29ya3Mgd2VsbCB3aXRoIGRhdGFiYXNlcy4gV2hpbGUNCnRoZSBkYXRhYmFzZSB1c2VycyBhcmUgaGFwcHksIHRoZSBvdGhlciB1c2VycyBtYXkgbm90IGJlIHNvIGhhcHB5IGFzIHRoZQ0KZW50aXJlIHN5c3RlbSBtYXkgYmUgZ2l2aW5nIGFsbCBvZiB0aGUgc3lzdGVtIHJlc291cmNlcyB0byB0aGUgZGF0YWJhc2UNCnVzZXJzIGF0IHRoZSBleHBlbnNlIG9mIGFsbCBvdGhlciB1c2Vycy4gQXMgdGltZSByb2xscyBvbiB0aGUgc3lzdGVtDQphZG1pbmlzdHJhdG9yIG1heSBkZWNpZGUgdGhhdCBhIGZldyBtb3JlIG9mZmljZSBhdXRvbWF0aW9uIHRhc2tzIGNvdWxkIGJlDQpzaGlmdGVkIHRvIHRoaXMgbWFjaGluZS4gVGhlIGxvYWQgbWF5IG5vdyBzaGlmdCBmcm9tIGEgcmFuZG9tIHJlYWRlcg0KYXBwbGljYXRpb24gKGRhdGFiYXNlKSB0byBhIHNlcXVlbnRpYWwgcmVhZGVyLiBUaGUgdXNlcnMgbWF5IGRpc2NvdmVyIHRoYXQNCnRoZSBtYWNoaW5lIGlzIHZlcnkgc2xvdyB3aGVuIHJ1bm5pbmcgdGhpcyBuZXcgYXBwbGljYXRpb24gYW5kIGJlY29tZQ0KZGlzc2F0aXNmaWVkIHdpdGggdGhlIGRlY2lzaW9uIHRvIHB1cmNoYXNlIHRoaXMgcGxhdGZvcm0uIEJ5IHVzaW5nIA0KLkIgSW96b25lDQp0byBnZXQgYSBicm9hZCBmaWxlc3lzdGVtIHBlcmZvcm1hbmNlIGNvdmVyYWdlIHRoZSBidXllciBpcyBtdWNoIG1vcmUgbGlrZWx5IHRvDQpzZWUgYW55IGhvdCBvciBjb2xkIHNwb3RzIGFuZCBwaWNrIGEgcGxhdGZvcm0gYW5kIG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBpcw0KbW9yZSB3ZWxsIGJhbGFuY2VkLg0KDQouU0ggT1BUSU9OUw0KLlRQDQouQkkgXC1hDQpVc2VkIHRvIHNlbGVjdCBmdWxsIGF1dG9tYXRpYyBtb2RlLiBQcm9kdWNlcyBvdXRwdXQgdGhhdCBjb3ZlcnMgYWxsIHRlc3RlZA0KZmlsZSBvcGVyYXRpb25zIGZvciByZWNvcmQgc2l6ZXMgb2YgNGsgdG8gMTZNIGZvciBmaWxlIHNpemVzIG9mIDY0ayB0byA1MTJNLg0KLlRQDQouQkkgXC1BDQpUaGlzIHZlcnNpb24gb2YgYXV0b21hdGljIG1vZGUgcHJvdmlkZXMgbW9yZSBjb3ZlcmFnZSBidXQgY29uc3VtZXMgYSBidW5jaA0Kb2YgdGltZS4NClRoZSANCi5CSSBcLWEgDQpvcHRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IHN0b3AgdXNpbmcgdHJhbnNmZXIgc2l6ZXMgbGVzcyB0aGFuIDY0aw0Kb25jZSB0aGUgZmlsZSBzaXplIGlzIDMyTSBvciBsYXJnZXIuIFRoaXMgc2F2ZXMgdGltZS4gVGhlDQouQkkgXC1BIA0Kb3B0aW9uIHRlbGxzIA0KLkIgSW96b25lDQp0aGF0IHlvdSBhcmUgd2lsbGluZyB0byB3YWl0IGFuZCB3YW50IGRlbnNlIGNvdmVyYWdlIGZvciBzbWFsbCB0cmFuc2ZlcnMgDQpldmVuIHdoZW4gdGhlIGZpbGUgc2l6ZSBpcyB2ZXJ5IGxhcmdlLg0KLkJJIE5PVEU6DQpUaGlzIG9wdGlvbiBpcyBkZXByZWNhdGVkIGluDQouQkkgSW96b25lDQp2ZXJzaW9uIDMuNjEuICBVc2UNCi5CSSBcLWF6XCBcLWlcIDBcIFwtaVwgMQ0KaW5zdGVhZC4NCi5UUA0KLkJJIFwtYlwgZmlsZW5hbWUNClVzZWQgdG8gc3BlY2lmeSBhIGZpbGVuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBvdXRwdXQNCm9mIGFuIEV4Y2VsIGNvbXBhdGlibGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByZXN1bHRzLg0KLlRQDQouQkkgXC1CDQpVc2UgbW1hcCgpIGZpbGVzLiBUaGlzIGNhdXNlcyBhbGwgb2YgdGhlIHRlbXBvcmFyeSBmaWxlcyBiZWluZyBtZWFzdXJlZCB0bw0KYmUgY3JlYXRlZCBhbmQgYWNjZXNzZWQgd2l0aCB0aGUgbW1hcCgpIGludGVyZmFjZS4gU29tZSBhcHBsaWNhdGlvbnMgcHJlZmVyIA0KdG8gdHJlYXQgZmlsZXMgYXMgYXJyYXlzIG9mIG1lbW9yeS4gVGhlc2UgYXBwbGljYXRpb25zIG1tYXAoKSB0aGUgZmlsZSANCmFuZCB0aGVuIGp1c3QgYWNjZXNzIHRoZSBhcnJheSB3aXRoIGxvYWRzIGFuZCBzdG9yZXMgdG8gcGVyZm9ybSBmaWxlIEkvTy4NCi5UUA0KLkJJIFwtYw0KSW5jbHVkZSBjbG9zZSgpIGluIHRoZSB0aW1pbmcgY2FsY3VsYXRpb25zLiBUaGlzIGlzIHVzZWZ1bCBvbmx5IGlmIHlvdQ0Kc3VzcGVjdCB0aGF0IGNsb3NlKCkgaXMgYnJva2VuIGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGN1cnJlbnRseSB1bmRlciB0ZXN0LiANCkl0IGNhbiBiZSB1c2VmdWwgZm9yIE5GUyBWZXJzaW9uIDMgdGVzdGluZyBhcyB3ZWxsIHRvIGhlbHAgaWRlbnRpZnkgaWYgDQp0aGUgbmZzM19jb21taXQgaXMgd29ya2luZyB3ZWxsLg0KLlRQDQouQkkgXC1DDQpTaG93IGJ5dGVzIHRyYW5zZmVycmVkIGJ5IGVhY2ggY2hpbGQgaW4gdGhyb3VnaHB1dCB0ZXN0aW5nLiBVc2VmdWwgaWYgeW91cg0Kb3BlcmF0aW5nIHN5c3RlbSBoYXMgYW55IHN0YXJ2YXRpb24gcHJvYmxlbXMgaW4gZmlsZSBJL08gb3IgaW4gcHJvY2VzcyANCm1hbmFnZW1lbnQuDQouVFANCi5CSSBcLWRcICMNCk1pY3Jvc2Vjb25kIGRlbGF5IG91dCBvZiBiYXJyaWVyLiBEdXJpbmcgdGhlIHRocm91Z2hwdXQgdGVzdHMgYWxsIHRocmVhZHMgb3INCnByb2Nlc3NlcyBhcmUgZm9yY2VkIHRvIGEgYmFycmllciBiZWZvcmUgYmVnaW5uaW5nIHRoZSB0ZXN0LiBOb3JtYWxseSwgDQphbGwgb2YgdGhlIHRocmVhZHMgb3IgcHJvY2Vzc2VzIGFyZSByZWxlYXNlZCBhdCB0aGUgc2FtZSBtb21lbnQuIFRoaXMgDQpvcHRpb24gYWxsb3dzIG9uZSB0byBkZWxheSBhIHNwZWNpZmllZCB0aW1lIGluIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuIA0KcmVsZWFzaW5nIGVhY2ggb2YgdGhlIHByb2Nlc3NlcyBvciB0aHJlYWRzLg0KLlRQDQouQkkgXC1EDQpVc2UgbXN5bmMoTVNfQVNZTkMpIG9uIG1tYXAgZmlsZXMuIFRoaXMgdGVsbHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBhbGwNCnRoZSBkYXRhIGluIHRoZSBtbWFwIHNwYWNlIG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gZGlzayBhc3luY2hyb25vdXNseS4NCi5UUA0KLkJJIFwtZQ0KSW5jbHVkZSBmbHVzaCAoZnN5bmMsZmZsdXNoKSBpbiB0aGUgdGltaW5nIGNhbGN1bGF0aW9ucw0KLlRQDQouQkkgXC1FDQpVc2VkIHRvIHNlbGVjdCB0aGUgZXh0ZW5zaW9uIHRlc3RzLiBPbmx5IGF2YWlsYWJsZSBvbiBzb21lIHBsYXRmb3Jtcy4gVXNlcw0KcHJlYWQgaW50ZXJmYWNlcy4NCi5UUA0KLkJJIFwtZlwgZmlsZW5hbWUNClVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZW5hbWUgZm9yIHRoZSB0ZW1wb3JhcnkgZmlsZSB1bmRlciB0ZXN0LiBUaGlzIGlzDQp1c2VmdWwgd2hlbiB0aGUgdW5tb3VudCBvcHRpb24gaXMgdXNlZC4gV2hlbiB0ZXN0aW5nIHdpdGggdW5tb3VudCBiZXR3ZWVuDQp0ZXN0cyBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZSB0ZW1wb3JhcnkgZmlsZSB1bmRlciB0ZXN0IHRvIGJlIGluIGEgDQpkaXJlY3RvcnkgdGhhdCBjYW4gYmUgdW5tb3VudGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdW5tb3VudCB0aGUgDQpjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFzIHRoZSBwcm9jZXNzIA0KLkIgSW96b25lDQppcyBydW5uaW5nIGluIHRoaXMgZGlyZWN0b3J5Lg0KLlRQDQouQkkgXC1GXCBmaWxlbmFtZVwgZmlsZW5hbWVcIGZpbGVuYW1lXCA/DQpTcGVjaWZ5IGVhY2ggb2YgdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWVzIHRvIGJlIHVzZWQgaW4gdGhlIHRocm91Z2hwdXQNCnRlc3RpbmcuIFRoZSBudW1iZXIgb2YgbmFtZXMgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIG9yIA0KdGhyZWFkcyB0aGF0IGFyZSBzcGVjaWZpZWQuDQouVFANCi5CSSBcLWdcICMNClNldCBtYXhpbXVtIGZpbGUgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlLiBPbmUgbWF5IGFsc28gc3BlY2lmeQ0KLkJJIFwtZ1wgI2sgDQooc2l6ZSBpbiBLYnl0ZXMpIG9yDQouQkkgXC1nXCAjbSANCihzaXplIGluIE1ieXRlcykgb3INCi5CSSBcLWdcICNnDQooc2l6ZSBpbiBHYnl0ZXMpLiBTZWUNCi5CSSBcLW4NCmZvciBtaW5pbXVtIGZpbGUgc2l6ZS4NCi5UUA0KLkJJIFwtRw0KVXNlIG1zeW5jKE1TX1NZTkMpIG9uIG1tYXAgZmlsZXMuIFRoaXMgdGVsbHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBhbGwNCnRoZSBkYXRhIGluIHRoZSBtbWFwIHNwYWNlIG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gZGlzayBzeW5jaHJvbm91c2x5Lg0KLlRQDQouQkkgXC1oDQpEaXNwbGF5cyBoZWxwIHNjcmVlbi4NCi5UUA0KLkJJIFwtSFwgIw0KVXNlIFBPU0lYIGFzeW5jIEkvTyB3aXRoXCAjIGFzeW5jIG9wZXJhdGlvbnMuIA0KLkIgSW96b25lDQp3aWxsIHVzZSBQT1NJWCBhc3luYyBJL08gd2l0aCBhIGJjb3B5IGZyb20gdGhlIGFzeW5jIGJ1ZmZlcnMgYmFjayBpbnRvIHRoZSANCmFwcGxpY2F0aW9ucyBidWZmZXIuIFNvbWUgdmVyc2lvbnMgb2YgTVNDIE5BU1RSQU4gcGVyZm9ybSBJL08gdGhpcyB3YXkuIA0KVGhpcyB0ZWNobmlxdWUgaXMgdXNlZCBieSBhcHBsaWNhdGlvbnMgc28gdGhhdCB0aGUgYXN5bmMgSS9PIG1heSBiZSBwZXJmb3JtZWQgDQppbiBhIGxpYnJhcnkgYW5kIHJlcXVpcmVzIG5vIGNoYW5nZXMgdG8gdGhlIGFwcGxpY2F0aW9ucyBpbnRlcm5hbCBtb2RlbC4NCi5UUA0KLkJJIFwtaVwgIw0KVXNlZCB0byBzcGVjaWZ5IHdoaWNoIHRlc3RzIHRvIHJ1bi4gKDA9d3JpdGUvcmV3cml0ZSwgMT1yZWFkL3JlLXJlYWQsDQoyPXJhbmRvbS1yZWFkL3dyaXRlLCAzPVJlYWQtYmFja3dhcmRzLCA0PVJlLXdyaXRlLXJlY29yZCwNCjU9c3RyaWRlLXJlYWQsIDY9ZndyaXRlL3JlLWZ3cml0ZSwgNz1mcmVhZC9SZS1mcmVhZCwNCjg9bWl4ZWQgd29ya2xvYWQsIDk9cHdyaXRlL1JlLXB3cml0ZSwgMTA9cHJlYWQvUmUtcHJlYWQsIDExPXB3cml0ZXYvUmUtcHdyaXRldiwNCjEyPXByZWFkdi9SZS1wcmVhZHYpLiANCk9uZSB3aWxsIGFsd2F5cyBuZWVkIHRvIHNwZWNpZnkgMCBzbyB0aGF0IGFueSBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIHdpbGwNCmhhdmUgYSBmaWxlIHRvIG1lYXN1cmUuDQouQkkgLWlcICNcIC1pXCAjXCAtaVwgIw0KaXMgYWxzbyBzdXBwb3J0ZWQgc28gdGhhdCBvbmUgbWF5IHNlbGVjdCBtb3JlIHRoYW4gb25lIHRlc3QuDQouVFANCi5CSSBcLUkNClVzZSBESVJFQ1QgSU8gaWYgcG9zc2libGUgZm9yIGFsbCBmaWxlIG9wZXJhdGlvbnMuIFRlbGxzIHRoZSBmaWxlc3lzdGVtIHRoYXQNCmFsbCBvcGVyYXRpb25zIHRvIHRoZSBmaWxlIGFyZSB0byBieXBhc3MgdGhlIGJ1ZmZlciBjYWNoZSBhbmQgZ28gZGlyZWN0bHkgdG8gDQpkaXNrLiAobm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKQ0KLlRQDQouQkkgXC1qXCAjDQpTZXQgc3RyaWRlIG9mIGZpbGUgYWNjZXNzZXMgdG8gKCMgKiByZWNvcmQgc2l6ZSkuIFRoZSBzdHJpZGUgcmVhZCB0ZXN0IHdpbGwNCnJlYWQgcmVjb3JkcyBhdCB0aGlzIHN0cmlkZS4NCi5UUA0KLkJJIFwtSlwgIw0KTWlsbGlzZWNvbmQgZGVsYXkgYmVmb3JlIGVhY2ggSS9PIG9wZXJhdGlvbi4gVGhpcyBzaW11bGF0ZXMgdGhlDQpjcHUgY29tcHV0ZSBjeWNsZSBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IHByZWNlZGVzIGFuIEkvTyBvcGVyYXRpb24uDQpPbmUgbWF5IGFsc28gdXNlDQouQkkgXC1YDQpvcg0KLkJJIFwtWQ0KdG8gY29udHJvbCB0aGUgY29tcHV0ZSBjeWNsZSBvbiBhIHBlciBJL08gb3BlcmF0aW9uIGJhc2lzLg0KLlRQDQouQkkgXC1rXCAjDQpVc2UgUE9TSVggYXN5bmMgSS9PIChubyBiY29weSkgd2l0aFwgIyBhc3luYyBvcGVyYXRpb25zLiANCi5CIElvem9uZQ0Kd2lsbCB1c2UgUE9TSVggYXN5bmMgSS9PIGFuZCB3aWxsIG5vdCBwZXJmb3JtIGFueSBleHRyYSBiY29weXMuIFRoZSBidWZmZXJzIA0KdXNlZCBieSANCi5CIElvem9uZSANCndpbGwgYmUgaGFuZGVkIHRvIHRoZSBhc3luYyBJL08gc3lzdGVtIGNhbGwgZGlyZWN0bHkuDQouVFANCi5CSSBcLUsNCkluamVjdCBzb21lIHJhbmRvbSBhY2Nlc3NlcyBpbiB0aGUgdGVzdGluZy4gDQouVFANCi5CSSBcLWxcICMNClNldCB0aGUgbG93ZXIgbGltaXQgb24gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBydW4uIFdoZW4gcnVubmluZyB0aHJvdWdocHV0DQp0ZXN0cyB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgbGVhc3QgbnVtYmVyIG9mIHByb2Nlc3NlcyANCm9yIHRocmVhZHMgdG8gc3RhcnQuIFRoaXMgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggDQp0aGUNCi5CSSBcLXUNCm9wdGlvbi4NCi5UUA0KLkJJIFwtTFwgIw0KU2V0IHByb2Nlc3NvciBjYWNoZSBsaW5lIHNpemUgdG8gdmFsdWUgKGluIGJ5dGVzKS4gVGVsbHMgDQouQiBJb3pvbmUgDQp0aGUgcHJvY2Vzc29yIGNhY2hlIGxpbmUgc2l6ZS4gIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGhlbHAgc3BlZWQgdXAgDQp0aGUgdGVzdC4NCi5UUA0KLkJJIFwtbQ0KVGVsbHMgDQouQiBJb3pvbmUNCnRvIHVzZSBtdWx0aXBsZSBidWZmZXJzIGludGVybmFsbHkuIFNvbWUgYXBwbGljYXRpb25zIHJlYWQgaW50byBhIHNpbmdsZQ0KYnVmZmVyIG92ZXIgYW5kIG92ZXIuIE90aGVycyBoYXZlIGFuIGFycmF5IG9mIGJ1ZmZlcnMuIFRoaXMgb3B0aW9uIGFsbG93cw0KYm90aCB0eXBlcyBvZiBhcHBsaWNhdGlvbnMgdG8gYmUgc2ltdWxhdGVkLiANCi5CIElvem9uZVwncyANCmRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmUtdXNlIGludGVybmFsIGJ1ZmZlcnMuIFRoaXMgb3B0aW9uIGFsbG93cyBvbmUgDQp0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBhbmQgdG8gdXNlIG11bHRpcGxlIGludGVybmFsIGJ1ZmZlcnMuDQouVFANCi5CSSBcLU0NClwuQg0KSW96b25lDQp3aWxsIGNhbGwgdW5hbWUoKSBhbmQgd2lsbCBwdXQgdGhlIHN0cmluZyBpbiB0aGUgb3V0cHV0IGZpbGUuDQouVFANCi5CSSBcLW5cICMNClNldCBtaW5pbXVtIGZpbGUgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlLiBPbmUgbWF5IGFsc28gc3BlY2lmeQ0KLkJJIFwtblwgI2sgDQooc2l6ZSBpbiBLYnl0ZXMpIG9yDQouQkkgXC1uXCAjbSANCihzaXplIGluIE1ieXRlcykgb3INCi5CSSBcLW5cICNnDQooc2l6ZSBpbiBHYnl0ZXMpLiBTZWUNCi5CSSBcLWcNCmZvciBtYXhpbXVtIGZpbGUgc2l6ZS4NCi5UUA0KLkJJIFwtTg0KUmVwb3J0IHJlc3VsdHMgaW4gbWljcm9zZWNvbmRzIHBlciBvcGVyYXRpb24uDQouVFANCi5CSSBcLW8NCldyaXRlcyBhcmUgc3luY2hyb25vdXNseSB3cml0dGVuIHRvIGRpc2suIChPX1NZTkMpLiANCi5CIElvem9uZQ0Kd2lsbCBvcGVuIHRoZSBmaWxlcyB3aXRoIHRoZSBPX1NZTkMgZmxhZy4gVGhpcyBmb3JjZXMgYWxsIHdyaXRlcyB0byB0aGUgDQpmaWxlIHRvIGdvIGNvbXBsZXRlbHkgdG8gZGlzayBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBiZW5jaG1hcmsuDQouVFANCi5CSSBcLU8NCkdpdmUgcmVzdWx0cyBpbiBvcGVyYXRpb25zIHBlciBzZWNvbmQuDQouVFANCi5CSSBcLXANClRoaXMgcHVyZ2VzIHRoZSBwcm9jZXNzb3IgY2FjaGUgYmVmb3JlIGVhY2ggZmlsZSBvcGVyYXRpb24uIA0KLkIgSW96b25lDQp3aWxsIGFsbG9jYXRlIGFub3RoZXIgaW50ZXJuYWwgYnVmZmVyIHRoYXQgaXMgYWxpZ25lZCB0byB0aGUgc2FtZSANCnByb2Nlc3NvciBjYWNoZSBib3VuZGFyeSBhbmQgaXMgb2YgYSBzaXplIHRoYXQgbWF0Y2hlcyB0aGUgcHJvY2Vzc29yIGNhY2hlLiANCkl0IHdpbGwgemVybyBmaWxsIHRoaXMgYWx0ZXJuYXRlIGJ1ZmZlciBiZWZvcmUgYmVnaW5uaW5nIGVhY2ggdGVzdC4NClRoaXMgd2lsbCBwdXJnZSB0aGUgcHJvY2Vzc29yIGNhY2hlIGFuZCBhbGxvdyBvbmUgdG8gc2VlIHRoZSBtZW1vcnkNCnN1YnN5c3RlbSB3aXRob3V0IHRoZSBhY2NlbGVyYXRpb24gZHVlIHRvIHRoZSBwcm9jZXNzb3IgY2FjaGUuDQouVFANCi5CSSBcLVBcICMNCkJpbmQgcHJvY2Vzc2VzL3RocmVhZHMgdG8gcHJvY2Vzc29ycywgc3RhcnRpbmcgd2l0aCB0aGlzIGNwdVwgIy4gT25seQ0KYXZhaWxhYmxlIG9uIHNvbWUgcGxhdGZvcm1zLiBUaGUgZmlyc3Qgc3ViIHByb2Nlc3Mgb3IgdGhyZWFkIHdpbGwgYmVnaW4gDQpvbiB0aGUgc3BlY2lmaWVkIHByb2Nlc3Nvci4gRnV0dXJlIHByb2Nlc3NlcyBvciB0aHJlYWRzIHdpbGwgYmUgcGxhY2VkIG9uDQp0aGUgbmV4dCBwcm9jZXNzb3IuIE9uY2UgdGhlIHRvdGFsIG51bWJlciBvZiBjcHVzIGlzIGV4Y2VlZGVkIHRoZW4NCmZ1dHVyZSBwcm9jZXNzZXMgb3IgdGhyZWFkcyB3aWxsIGJlIHBsYWNlZCBpbiBhIHJvdW5kIHJvYmluDQpmYXNoaW9uLg0KLlRQDQouQkkgXC1xXCAjDQpTZXQgbWF4aW11bSByZWNvcmQgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlLiBPbmUgbWF5IGFsc28gc3BlY2lmeQ0KLkJJIFwtcVwgI2sgDQooc2l6ZSBpbiBLYnl0ZXMpIG9yDQouQkkgXC1xXCAjbSANCihzaXplIGluIE1ieXRlcykgb3INCi5CSSBcLXFcICNnDQooc2l6ZSBpbiBHYnl0ZXMpLiBTZWUNCi5CSSBcLXkNCmZvciBtaW5pbXVtIHJlY29yZCBzaXplLg0KLlRQDQouQkkgXC1RDQpDcmVhdGUgb2Zmc2V0L2xhdGVuY3kgZmlsZXMuIA0KLkIgSW96b25lDQp3aWxsIGNyZWF0ZSBsYXRlbmN5IHZlcnN1cyBvZmZzZXQgZGF0YSBmaWxlcyB0aGF0IGNhbiBiZSBpbXBvcnRlZCB3aXRoIGEgDQpncmFwaGljcyBwYWNrYWdlIGFuZCBwbG90dGVkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZmluZGluZyBpZiBjZXJ0YWluIG9mZnNldHMNCmhhdmUgdmVyeSBoaWdoIGxhdGVuY2llcy4gU3VjaCBhcyB0aGUgcG9pbnQgd2hlcmUgVUZTIHdpbGwgYWxsb2NhdGUgaXRzDQpmaXJzdCBpbmRpcmVjdCBibG9jay4gIE9uZSBjYW4gc2VlIGZyb20gdGhlIGRhdGEgdGhlIGltcGFjdHMgb2YgdGhlIGV4dGVudCANCmFsbG9jYXRpb25zIGZvciBleHRlbnQgYmFzZWQgZmlsZXN5c3RlbXMgd2l0aCB0aGlzIG9wdGlvbi4NCi5UUA0KLkJJIFwtclwgIw0KVXNlZCB0byBzcGVjaWZ5IHRoZSByZWNvcmQgc2l6ZSwgaW4gS2J5dGVzLCB0byB0ZXN0LiBPbmUgbWF5IGFsc28gc3BlY2lmeQ0KLkJJIFwtclwgI2sgDQooc2l6ZSBpbiBLYnl0ZXMpIG9yDQouQkkgXC1yXCAjbSANCihzaXplIGluIE1ieXRlcykgb3INCi5CSSBcLXJcICNnDQooc2l6ZSBpbiBHYnl0ZXMpLg0KLlRQDQouQkkgXC1SDQpHZW5lcmF0ZSBFeGNlbCByZXBvcnQuIA0KLkIgSW96b25lDQp3aWxsIGdlbmVyYXRlIGFuIEV4Y2VsIGNvbXBhdGlibGUgcmVwb3J0IHRvIHN0YW5kYXJkIG91dC4gVGhpcw0KZmlsZSBtYXkgYmUgaW1wb3J0ZWQgd2l0aCBNaWNyb3NvZnQgRXhjZWwgKHNwYWNlIGRlbGltaXRlZCkgYW5kIHVzZWQgdG8NCmNyZWF0ZSBhIGdyYXBoIG9mIHRoZSBmaWxlc3lzdGVtIHBlcmZvcm1hbmNlLiBOb3RlOiBUaGUgM0QgZ3JhcGhzIGFyZSANCmNvbHVtbiBvcmllbnRlZC4gWW91IHdpbGwgbmVlZCB0byBzZWxlY3QgdGhpcyB3aGVuIGdyYXBoaW5nIGFzIHRoZSANCmRlZmF1bHQgaW4gRXhjZWwgaXMgcm93IG9yaWVudGVkIGRhdGEuDQouVFANCi5CSSBcLXNcICMNClVzZWQgdG8gc3BlY2lmeSB0aGUgc2l6ZSwgaW4gS2J5dGVzLCBvZiB0aGUgZmlsZSB0byB0ZXN0LiBPbmUgbWF5IGFsc28NCnNwZWNpZnkNCi5CSSBcLXNcICNrIA0KKHNpemUgaW4gS2J5dGVzKSBvciANCi5CSSBcLXNcICNtIA0KKHNpemUgaW4gTWJ5dGVzKSBvcg0KLkJJIFwtc1wgI2cNCihzaXplIGluIEdieXRlcykuDQouVFANCi5CSSBcLVNcICMNClNldCBwcm9jZXNzb3IgY2FjaGUgc2l6ZSB0byB2YWx1ZSAoaW4gS2J5dGVzKS4gVGhpcyB0ZWxscyANCi5CIElvem9uZQ0KdGhlIHNpemUgb2YgdGhlIHByb2Nlc3NvciBjYWNoZS4gIEl0IGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYnVmZmVyIGFsaWdubWVudCANCmFuZCBmb3IgdGhlIHB1cmdlIGZ1bmN0aW9uYWxpdHkuDQouVFANCi5CSSBcLXRcICMNClJ1biANCi5CIElvem9uZQ0KaW4gYSB0aHJvdWdocHV0IG1vZGUuIFRoaXMgb3B0aW9uIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGhvdw0KbWFueSB0aHJlYWRzIG9yIHByb2Nlc3NlcyB0byBoYXZlIGFjdGl2ZSBkdXJpbmcgdGhlIG1lYXN1cmVtZW50Lg0KLlRQDQouQkkgXC1UDQpVc2UgUE9TSVggcHRocmVhZHMgZm9yIHRocm91Z2hwdXQgdGVzdHMuIEF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBoYXZlDQpQT1NJWCB0aHJlYWRzLg0KLlRQDQouQkkgXC11XCAjDQpTZXQgdGhlIHVwcGVyIGxpbWl0IG9uIG51bWJlciBvZiBwcm9jZXNzZXMgdG8gcnVuLiBXaGVuIHJ1bm5pbmcgdGhyb3VnaHB1dA0KdGVzdHMgdGhpcyBvcHRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIGdyZWF0ZXN0IG51bWJlciBvZiANCnByb2Nlc3NlcyBvciB0aHJlYWRzIHRvIHN0YXJ0LiBUaGlzIG9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiANCndpdGggdGhlDQouQkkgXC1sDQpvcHRpb24uDQouVFANCi5CSSBcLVVcIG1vdW50cG9pbnQNCk1vdW50IHBvaW50IHRvIHVubW91bnQgYW5kIHJlbW91bnQgYmV0d2VlbiB0ZXN0cy4gDQouQiBJb3pvbmUNCndpbGwgdW5tb3VudCBhbmQgcmVtb3VudCB0aGlzDQptb3VudCBwb2ludCBiZWZvcmUgYmVnaW5uaW5nIGVhY2ggdGVzdC4gVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIGJ1ZmZlcg0KY2FjaGUgZG9lcyBub3QgY29udGFpbiBhbnkgb2YgdGhlIGZpbGUgdW5kZXIgdGVzdC4NCi5UUA0KLkJJIFwtdiANCkRpc3BsYXkgdGhlIHZlcnNpb24gb2YgDQouQiBJb3pvbmUuDQouVFANCi5CSSBcLVZcICMNClNwZWNpZnkgYSBwYXR0ZXJuIHRoYXQgaXMgdG8gYmUgd3JpdHRlbiB0byB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIHZhbGlkYXRlZA0KZm9yIGFjY3VyYWN5IGluIGVhY2ggb2YgdGhlIHJlYWQgdGVzdHMuDQouVFANCi5CSSBcLXcNCkRvIG5vdCB1bmxpbmsgdGVtcG9yYXJ5IGZpbGVzIHdoZW4gZmluaXNoZWQgdXNpbmcgdGhlbS4NCi5UUA0KLkJJIFwtVw0KTG9jayBmaWxlIHdoZW4gcmVhZGluZyBvciB3cml0aW5nLg0KLlRQDQouQkkgXC14DQpUdXJuIG9mZiBzdG9uZS13YWxsaW5nLiBTdG9uZXdhbGxpbmcgaXMgYSB0ZWNobmlxdWUgdXNlZCBpbnRlcm5hbGx5IHRvDQouQiBJb3pvbmUuDQpJdCBpcyB1c2VkIGR1cmluZyB0aGUgdGhyb3VnaHB1dCB0ZXN0cy4gVGhlIGNvZGUgc3RhcnRzIGFsbCB0aHJlYWRzIG9yIA0KcHJvY2Vzc2VzIGFuZCB0aGVuIHN0b3BzIHRoZW0gb24gYSBiYXJyaWVyLiAgT25jZSB0aGV5IGFyZSBhbGwgcmVhZHkgdG8gDQpzdGFydCB0aGVuIHRoZXkgYXJlIGFsbCByZWxlYXNlZCBhdCB0aGUgc2FtZSB0aW1lLiBUaGUgbW9tZW50IHRoYXQNCmFueSBvZiB0aGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgZmluaXNoIHRoZWlyIHdvcmsgdGhlbiB0aGUgZW50aXJlIHRlc3QgaXMNCnRlcm1pbmF0ZWQgYW5kIHRocm91Z2hwdXQgaXMgY2FsY3VsYXRlZCBvbiB0aGUgdG90YWwgSS9PIHRoYXQgd2FzIA0KY29tcGxldGVkIHVwIHRvIHRoaXMgcG9pbnQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBlbnRpcmUgbWVhc3VyZW1lbnQgd2FzIA0KdGFrZW4gd2hpbGUgYWxsIG9mIHRoZSBwcm9jZXNzZXMgb3IgdGhyZWFkcyB3ZXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWwuIA0KVGhpcyBmbGFnIGFsbG93cyBvbmUgdG8gdHVybiBvZmYgdGhlIHN0b25ld2FsbGluZyBhbmQgc2VlIHdoYXQgaGFwcGVucy4NCi5UUA0KLkJJIFwtWFwgZmlsZW5hbWUNClVzZWQgdG8gc3BlY2lmeSBhIGZpbGVuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgDQp3cml0ZSB0ZWxlbWV0cnkgaW5mb3JtYXRpb24uIFRoZSBmaWxlIGNvbnRhaW5zIGxpbmVzDQp3aXRoIG9mZnNldCwgc2l6ZSwgZGVsYXlfaW5fbWlsbGlzZWNvbmRzLiBFYWNoIG9mIA0KdGhlc2UgbGluZXMgYXJlIHVzZWQgdG8gcGVyZm9ybSBhbiBJL08gb3BlcmF0aW9uLiANClRoaXMgaXMgdXNlZCB3aGVuIGFuIGFwcGxpY2F0aW9uJ3Mgc3BlY2lmaWMgSS9PIG9wZXJhdGlvbnMNCmFyZSBrbm93biwgYW5kIG9uZSB3aXNoZXMgdG8gYmVuY2htYXJrIHRoZSBzeXN0ZW0gDQp3aXRoIHRoaXMgc3BlY2lmaWMgYXBwbGljYXRpb24gZmlsZSBiZWhhdmlvci4NCi5UUA0KLkJJIFwteVwgIw0KU2V0IG1pbmltdW0gcmVjb3JkIHNpemUgKGluIEtieXRlcykgZm9yIGF1dG8gbW9kZS4gT25lIG1heSBhbHNvIHNwZWNpZnkNCi5CSSBcLXlcICNrIA0KKHNpemUgaW4gS2J5dGVzKSBvcg0KLkJJIFwteVwgI20gDQooc2l6ZSBpbiBNYnl0ZXMpIG9yDQouQkkgXC15XCAjZw0KKHNpemUgaW4gR2J5dGVzKS4gU2VlDQouQkkgXC1xDQpmb3IgbWF4aW11bSByZWNvcmQgc2l6ZS4NCi5UUA0KLkJJIFwtWVwgZmlsZW5hbWUNClVzZWQgdG8gc3BlY2lmeSBhIGZpbGVuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgDQpyZWFkIHRlbGVtZXRyeSBpbmZvcm1hdGlvbi4gVGhlIGZpbGUgY29udGFpbnMgbGluZXMNCndpdGggb2Zmc2V0LCBzaXplLCBkZWxheV9pbl9taWxsaXNlY29uZHMuIEVhY2ggb2YgDQp0aGVzZSBsaW5lcyBhcmUgdXNlZCB0byBwZXJmb3JtIGFuIEkvTyBvcGVyYXRpb24uIA0KVGhpcyBpcyB1c2VkIHdoZW4gYW4gYXBwbGljYXRpb24ncyBzcGVjaWZpYyBJL08gb3BlcmF0aW9ucw0KYXJlIGtub3duLCBhbmQgb25lIHdpc2hlcyB0byBiZW5jaG1hcmsgdGhlIHN5c3RlbSANCndpdGggdGhpcyBzcGVjaWZpYyBhcHBsaWNhdGlvbiBmaWxlIGJlaGF2aW9yLg0KLlRQDQouQkkgXC16DQpVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGgNCi5CSSBcLWENCnRvIHRlc3QgYWxsIHBvc3NpYmxlIHJlY29yZCBzaXplcy4gTm9ybWFsbHkNCi5CSSBJb3pvbmUNCm9taXRzIHRlc3Rpbmcgb2Ygc21hbGwgcmVjb3JkIHNpemVzIGZvciB2ZXJ5IGxhcmdlIGZpbGVzDQp3aGVuIHVzZWQgaW4gZnVsbCBhdXRvbWF0aWMgbW9kZS4gVGhpcyBvcHRpb24gZm9yY2VzDQouQkkgSW96b25lDQp0byBpbmNsdWRlIHRoZSBzbWFsbCByZWNvcmQgc2l6ZXMgaW4gdGhlIGF1dG9tYXRpYyB0ZXN0cyBhbHNvLg0KLlRQDQouQkkgXC1aDQpFbmFibGUgbWl4aW5nIG9mIG1tYXAgSS9PIGFuZCBmaWxlIEkvTy4NCi5UUA0KLkJJIFwtK21cIGZpbGVuYW1lDQpVc2VkIHRvIHNwZWNpZnkgYSBmaWxlbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzcGVjaWZ5DQp0aGUgY2xpZW50cyBpbiBhIGRpc3RyaWJ1dGVkIG1lYXN1cmVtZW50LiBUaGUgZmlsZQ0KY29udGFpbnMgb25lIGxpbmUgZm9yIGVhY2ggY2xpZW50LiBUaGUgZmllbGRzIGFyZSANCnNwYWNlIGRlbGltaXRlZC4gRmllbGQgMSBpcyB0aGUgY2xpZW50IG5hbWUuIEZpZWxkIDINCmlzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgb24gdGhlIGNsaWVudCwgd2hlcmUgSW96b25lDQp3aWxsIHJ1bi4gRmllbGQgMyBpcyB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSBJb3pvbmUNCm9uIHRoZSBjbGllbnQuDQouVFANCi5CSSBcLStuDQpObyByZXRlc3RzIHNlbGVjdGVkLiBVc2VkIHRvIHByZXZlbnQgcmV0ZXN0cyBmcm9tIHJ1bm5pbmcuDQouVFANCi5CSSBcLStODQpObyB0cnVuY2F0aW5nIG9yIGRlbGV0aW5nIG9mIHByZXZpb3VzIHRlc3QgZmlsZSBiZWZvcmUgdGhlIHNlcXVlbnRpYWwgd3JpdGUgdGVzdC4gVXNlZnVsIG9ubHkgYWZ0ZXIgLXcgaXMgdXNlZCBpbiBwcmV2aW91cyBjb21tYW5kIHRvIGxlYXZlIHRoZSB0ZXN0IGZpbGUgaW4gcGxhY2UgZm9yIHJldXNlLiAgVGhpcyBmbGFnIGlzIG9mIGxpbWl0ZWQgdXNlLCB3aGVuIGEgc2luZ2xlIHJldGVzdCBpcyBub3QgZW5vdWdoLCBvciB0byBlYXNpbHkgY29udHJvbCB3aGVuIHNlcXVlbnRpYWwgd3JpdGUgcmV0ZXN0cyBvY2N1ciB3aXRob3V0IGZpbGUgdHJ1bmNhdGlvbiBvciBkZWxldGlvbi4NCi5UUA0KLkJJIFwtK3UNClVzZWQgdG8gZW5hYmxlIENQVSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24uDQouVFANCi5CSSBcLStkIA0KRGlhZ25vc3RpYyBtb2RlIHRvIHRyb3VibGVzaG9vdCBhIGJyb2tlbiBmaWxlIEkvTyBzdWJzeXN0ZW0uDQouVFANCi5CSSBcLStwXCAgcGVyY2VudGFnZV9yZWFkcw0KVXNlZCB0byBzZXQgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhyZWFkcy9wcm9jZXNzZXMgdGhhdCB3aWxsIHBlcmZvcm0gcmVhZA0KdGVzdGluZyBpbiB0aGUgbWl4ZWQgd29ya2xvYWQgdGVzdCBjYXNlLg0KLlRQDQouQkkgXC0rcg0KRW5hYmxlIE9fUlNZTkMgfCBPX1NZTkMgb24gYWxsIHRlc3RpbmcuIA0KLlRQDQouQkkgXC0rbA0KRW5hYmxlIGJ5dGUgcmFuZ2UgbG9ja2luZy4NCi5UUA0KLkJJIFwtK0wNCkVuYWJsZSBieXRlIHJhbmdlIGxvY2tpbmcgJiBzaGFyZWQgZmlsZSBtb2RlLg0KLlRQDQouQkkgXC0rRA0KRW5hYmxlIE9fRFNZTkMgb24gYWxsIHRlc3RpbmcuIA0KLlRQDQouQkkgXC0rdA0KRW5hYmxlIG5ldHdvcmsgcGVyZm9ybWFuY2UgdGVzdC4gVXNlIHdpdGggLSttDQouVFANCi5CSSBcLStBICMNCkVuYWJsZSBtYWR2aXNlIGJlaGF2aW9yLiAwID0gbm9ybWFsLCAxPXJhbmRvbSwgMj1zZXF1ZW50aWFsLCAzPWRvbnRuZWVkLCA0PXdpbGxuZWVkDQouVFANCi5CSSBcLStCDQpFbmFibGUgc2VxdWVudGlhbCBtaXhlZCB3b3JrbG9hZCB0ZXN0aW5nLg0KLlRQDQouQkkgXC0rVA0KRW5hYmxlIHRpbWUgc3RhbXBzIGxvZ2dpbmcuDQouVFANCi5CSSBcLStoDQpNYW51YWxseSBzZXQgaG9zdG5hbWUuDQouVFANCi5CSSBcLSt3ICMNClBlcmNlbnRhZ2Ugb2YgZGF0YSB0byBiZSBkZS1kdXBhYmxlIGJldHdlZW4gZmlsZXMuDQoNCi5TSCBBVVRIT1INCk9yaWdpbmFsIEF1dGhvcjogV2lsbGlhbSBELiBOb3Jjb3R0LiB3bm9yY290dEB1cy5vcmFjbGUu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ZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCAyNCAwIFIKPj4KL0NvbnRlbnRzIDIyIDAgUgo+PgplbmRvYmoKMjUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCAyOCAwIFIKPj4KL0NvbnRlbnRzIDI2IDAgUgo+PgplbmRvYmoKMjkgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCAzMiAwIFIKPj4KL0NvbnRlbnRzIDMwIDAgUgo+PgplbmRvYmoKMzMgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCAzNiAwIFIKPj4KL0NvbnRlbnRzIDM0IDAgUgo+PgplbmRvYmoKMzcgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCA0MCAwIFIKPj4KL0NvbnRlbnRzIDM4IDAgUgo+PgplbmRvYmoKNDEgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCA0NCAwIFIKPj4KL0NvbnRlbnRzIDQyIDAgUgo+PgplbmRvYmoKNDUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCA0OCAwIFIKPj4KL0NvbnRlbnRzIDQ2IDAgUgo+PgplbmRvYmoKNDkgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDUzIDAgUgovRm9udCA1NCAwIFIKPj4KL0NvbnRlbnRzIDUwIDAgUgo+PgplbmRvYmoKNTUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDU5IDAgUgovRm9udCA2MCAwIFIKPj4KL0NvbnRlbnRzIDU2IDAgUgo+PgplbmRvYmoKNjEgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDY1IDAgUgovRm9udCA2NiAwIFIKPj4KL0NvbnRlbnRzIDYyIDAgUgo+PgplbmRvYmoKNjcgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDczIDAgUgovRm9udCA3NCAwIFIKPj4KL0NvbnRlbnRzIDY4IDAgUgo+PgplbmRvYmoKNzUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDc5IDAgUgovRm9udCA4MCAwIFIKPj4KL0NvbnRlbnRzIDc2IDAgUgo+PgplbmRvYmoKODEgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDg2IDAgUgovRm9udCA4NyAwIFIKPj4KL0NvbnRlbnRzIDgyIDAgUgo+PgplbmRvYmoKODggMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL1RleHRdCi9YT2JqZWN0IDkzIDAgUgovRm9udCA5NCAwIFIKPj4KL0NvbnRlbnRzIDg5IDAgUgo+PgplbmRvYmoKOTUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9UZXh0XQovRm9udCA5OCAwIFIKPj4KL0NvbnRlbnRzIDk2IDAgUgo+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0tpZHMgWwo0IDAgUgoxMyAwIFIKMTcgMCBSCjIxIDAgUgoyNSAwIFIKMjkgMCBSCjMzIDAgUgozNyAwIFIKNDEgMCBSCjQ1IDAgUgo0OSAwIFIKNTUgMCBSCjYxIDAgUgo2NyAwIFIKNzUgMCBSCjgxIDAgUgo4OCAwIFIKOTUgMCBSCl0gL0NvdW50IDE4Ci9Sb3RhdGUgMD4+CmVuZG9iagoxIDAgb2JqCjw8L1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDMgMCBSCj4+CmVuZG9iagoxMiAwIG9iago8PC9SOAo4IDAgUi9SOQo5IDAgUi9SMTAKMTAgMCBSL1I3CjcgMCBSL1IxMQoxMSAwIFI+PgplbmRvYmoKMTYgMCBvYmoKPDwvUjkKOSAwIFIvUjEwCjEwIDAgUi9SNwo3IDAgUi9SMTEKMTEgMCBSPj4KZW5kb2JqCjIwIDAgb2JqCjw8L1I5CjkgMCBSL1I3CjcgMCBS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IDEvTGFzdENoYXIgMS9XaWR0aHNbIDM1XQovU3VidHlwZS9UeXBlMz4+CmVuZG9iagoxMDAgMCBvYmoKPDwvVHlwZS9FbmNvZGluZy9EaWZmZXJlbmNlc1sKMS9zbWlsZWZhY2VdPj4KZW5kb2JqCjkgMCBvYmoKPDwvQmFzZUZvbnQvVGltZXMtQm9sZC9UeXBlL0ZvbnQKL0VuY29kaW5nIDEwMSAwIFIvU3VidHlwZS9UeXBlMT4+CmVuZG9iagoxMDEgMCBvYmoKPDwvVHlwZS9FbmNvZGluZy9EaWZmZXJlbmNlc1sKMTMzL2VsbGlwc2lzCjE1MC9lbmRhc2hdPj4KZW5kb2JqCjEwIDAgb2JqCjw8L0Jhc2VGb250L1N5bWJvbC9UeXBlL0ZvbnQKL1N1YnR5cGUvVHlwZTE+PgplbmRvYmoKNyAwIG9iago8PC9CYXNlRm9udC9UaW1lcy1Sb21hbi9UeXBlL0ZvbnQKL0VuY29kaW5nIDEwMiAwIFIvU3VidHlwZS9UeXBlMT4+CmVuZG9iagoxMDIgMCBvYmoKPDwvVHlwZS9FbmNvZGluZy9EaWZmZXJlbmNlc1sKMzkvcXVvdGVzaW5nbGUKMTQ1L3F1b3RlbGVmdC9xdW90ZXJpZ2h0L3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0CjE1MC9lbmRhc2hdPj4KZW5kb2JqCjExIDAgb2JqCjw8L0Jhc2VGb250L0hlbHZldGljYS9UeXBlL0ZvbnQKL1N1YnR5cGUvVHlwZTE+PgplbmRvYmoKMiAwIG9iago8PC9Qcm9kdWNlcihHUEwgR2hvc3RzY3JpcHQgOC42MSkKL0NyZWF0aW9uRGF0ZShEOjIwMDkxMjA2MTIyNzMzLTA2JzAwJykKL01vZERhdGUoRDoyMDA5MTIwNjEyMjczMy0wNicwMCcpCi9UaXRsZShNaWNyb3NvZnQgV29yZCAtIElPem9uZV9tc3dvcmRfOTguZG9jKQovQ3JlYXRvcihQU2NyaXB0NS5kbGwgVmVyc2lvbiA1LjIuMikKL0F1dGhvcihjYXBwcyk+PmVuZG9iagp4cmVmCjAgMTAzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDA1MzY2OCAwMDAwMCBuIAowMDAwMTg0OTgyIDAwMDAwIG4gCjAwMDAwNTM0ODAgMDAwMDAgbiAKMDAwMDA1MDcyMiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDQwMDAgMDAwMDAgbiAKMDAwMDE4NDcwNiAwMDAwMCBuIAowMDAwMTgzODg0IDAwMDAwIG4gCjAwMDAxODQ0ODggMDAwMDAgbiAKMDAwMDE4NDY0NCAwMDAwMCBuIAowMDAwMTg0OTE3IDAwMDAwIG4gCjAwMDAwNTM3MTYgMDAwMDAgbiAKMDAwMDA1MDg2NCAwMDAwMCBuIAowMDAwMDA0MDIwIDAwMDAwIG4gCjAwMDAwMDcxNzAgMDAwMDAgbiAKMDAwMDA1Mzc4NiAwMDAwMCBuIAowMDAwMDUxMDA4IDAwMDAwIG4gCjAwMDAwMDcxOTEgMDAwMDAgbiAKMDAwMDAxMTgyMiAwMDAwMCBuIAowMDAwMDUzODQ3IDAwMDAwIG4gCjAwMDAwNTExNTIgMDAwMDAgbiAKMDAwMDAxMTg0MyAwMDAwMCBuIAowMDAwMDE2NDAzIDAwMDAwIG4gCjAwMDAwNTM4ODYgMDAwMDAgbiAKMDAwMDA1MTI5NiAwMDAwMCBuIAowMDAwMDE2NDI0IDAwMDAwIG4gCjAwMDAwMjA0MjEgMDAwMDAgbiAKMDAwMDA1MzkyNSAwMDAwMCBuIAowMDAwMDUxNDQwIDAwMDAwIG4gCjAwMDAwMjA0NDIgMDAwMDAgbiAKMDAwMDAyMzg2MiAwMDAwMCBuIAowMDAwMDUzOTY0IDAwMDAwIG4gCjAwMDAwNTE1ODQgMDAwMDAgbiAKMDAwMDAyMzg4MyAwMDAwMCBuIAowMDAwMDI3MDc3IDAwMDAwIG4gCjAwMDAwNTQwMDMgMDAwMDAgbiAKMDAwMDA1MTcyOCAwMDAwMCBuIAowMDAwMDI3MDk4IDAwMDAwIG4gCjAwMDAwMzA1ODggMDAwMDAgbiAKMDAwMDA1NDA0MiAwMDAwMCBuIAowMDAwMDUxODcyIDAwMDAwIG4gCjAwMDAwMzA2MDkgMDAwMDAgbiAKMDAwMDAzNDQyOSAwMDAwMCBuIAowMDAwMDU0MDgxIDAwMDAwIG4gCjAwMDAwNTIwMTYgMDAwMDAgbiAKMDAwMDAzNDQ1MCAwMDAwMCBuIAowMDAwMDM1ODU1IDAwMDAwIG4gCjAwMDAwNTQxMjAgMDAwMDAgbiAKMDAwMDA1MjE2MCAwMDAwMCBuIAowMDAwMDM1ODc2IDAwMDAwIG4gCjAwMDAwMzc0MzkgMDAwMDAgbiAKMDAwMDA1NDE5MSAwMDAwMCBuIAowMDAwMDU0MTU5IDAwMDAwIG4gCjAwMDAwODAxNzYgMDAwMDAgbiAKMDAwMDA1MjMyOCAwMDAwMCBuIAowMDAwMDM3NDYwIDAwMDAwIG4gCjAwMDAwMzg5MTMgMDAwMDAgbiAKMDAwMDA4MDI0NyAwMDAwMCBuIAowMDAwMDgwMjE1IDAwMDAwIG4gCjAwMDAxMDY4NDEgMDAwMDAgbiAKMDAwMDA1MjQ5NiAwMDAwMCBuIAowMDAwMDM4OTM0IDAwMDAwIG4gCjAwMDAwMzk4NjkgMDAwMDAgbiAKMDAwMDEwNjkxMiAwMDAwMCBuIAowMDAwMTA2ODgwIDAwMDAwIG4gCjAwMDAxMTc0NDEgMDAwMDAgbiAKMDAwMDA1MjY2NCAwMDAwMCBuIAowMDAwMDM5ODg5IDAwMDAwIG4gCjAwMDAwNDI0ODAgMDAwMDAgbiAKMDAwMDExNzUwMyAwMDAwMCBuIAowMDAwMTgzNjI2IDAwMDAwIG4gCjAwMDAxODQyMTIgMDAwMDAgbiAKMDAwMDExNzQ3MSAwMDAwMCBuIAowMDAwMTMyNzc0IDAwMDAwIG4gCjAwMDAwNTI4MzIgMDAwMDAgbiAKMDAwMDA0MjUwMSAwMDAwMCBuIAowMDAwMDQ2NjMxIDAwMDAwIG4gCjAwMDAxMzI4NTYgMDAwMDAgbiAKMDAwMDEzMjgyNCAwMDAwMCBuIAowMDAwMTU3MTYwIDAwMDAwIG4gCjAwMDAwNTMwMDAgMDAwMDAgbiAKMDAwMDA0NjY1MiAwMDAwMCBuIAowMDAwMDQ2ODczIDAwMDAwIG4gCjAwMDAxNjMyNTYgMDAwMDAgbiAKMDAwMDE1NzI0MiAwMDAwMCBuIAowMDAwMTU3MTk5IDAwMDAwIG4gCjAwMDAxNjg3NDcgMDAwMDAgbiAKMDAwMDA1MzE2OCAwMDAwMCBuIAowMDAwMDQ2ODkzIDAwMDAwIG4gCjAwMDAwNDcxMTQgMDAwMDAgbiAKMDAwMDE3NjA5NyAwMDAwMCBuIAowMDAwMTY4ODIwIDAwMDAwIG4gCjAwMDAxNjg3NzcgMDAwMDAgbiAKMDAwMDE4MzU1NyAwMDAwMCBuIAowMDAwMDUzMzM2IDAwMDAwIG4gCjAwMDAwNDcxMzQgMDAwMDAgbiAKMDAwMDA1MDcwMSAwMDAwMCBuIAowMDAwMTgzNTg3IDAwMDAwIG4gCjAwMDAxODM5NTEgMDAwMDAgbiAKMDAwMDE4NDQyNiAwMDAwMCBuIAowMDAwMTg0NTcwIDAwMDAwIG4gCjAwMDAxODQ3ODkgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxMDMgL1Jvb3QgMSAwIFIgL0luZm8gMiAwIFIKL0lEIFs8RTAwOTA3QjYzRUU4Qzc3MjA5ODc1OTdCRTE5MTY0MUQ+PEUwMDkwN0I2M0VFOEM3NzIwOTg3NTk3QkUxOTE2NDFEPl0KPj4Kc3RhcnR4cmVmCjE4NTIwMwolJUVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaW96b25lM18zNDcvZG9jcy9JT3pvbmVfbXN3b3JkXzk4LmRvYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDMyNjMyNgAwMDExNjEwADAwMDAwNjM2MDAwADExMzU1NjQwNDIxADAxNjU3MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNoZW5oYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQzxHgobEa4QAAAAAAAAAAAAAAAAAAAAA+AAMA/v8JAAYAAAAAAAAAAAAAAAQAAACZAQAAAAAAAAAQAACbAQAAAQAAAP7///8AAAAAlQEAAJYBAACXAQAAmAEAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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b20gcmVhZC93cml0ZSwgcHJlYWQvcHdyaXRlIHZhcmlhbnRzLCBhaW9fcmVhZCwgYWlvX3dyaXRlLCBtbWFwLA0NV2hpbGUgY29tcHV0ZXJzIGFyZSB0eXBpY2FsbHkgcHVyY2hhc2VkIHdpdGggYW4gYXBwbGljYXRpb24gaW4gbWluZCBpdCBpcyBhbHNvIGxpa2VseSB0aGF0IG92ZXIgdGltZSB0aGUgYXBwbGljYXRpb24gbWl4IHdpbGwgY2hhbmdlLiBNYW55IHZlbmRvcnMgaGF2ZSBlbmhhbmNlZCB0aGVpciBvcGVyYXRpbmcgc3lzdGVtcyB0byBwZXJmb3JtIHdlbGwgZm9yIHNvbWUgZnJlcXVlbnRseSB1c2VkIGFwcGxpY2F0aW9ucy4gQWx0aG91Z2ggdGhpcyBhY2NlbGVyYXRlcyB0aGUgSS9PIGZvciB0aG9zZSBmZXcgYXBwbGljYXRpb25zIGl0IGlzIGFsc28gbGlrZWx5IHRoYXQgdGhlIHN5c3RlbSBtYXkgbm90IHBlcmZvcm0gd2VsbCBmb3Igb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgd2VyZSBub3QgdGFyZ2V0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uIEFuIGV4YW1wbGUgb2YgdGhpcyB0eXBlIG9mIGVuaGFuY2VtZW50IGlzOiBEYXRhYmFzZS4gTWFueSBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIHRlc3RlZCBhbmQgdHVuZWQgdGhlIGZpbGVzeXN0ZW0gc28gaXQgd29ya3Mgd2VsbCB3aXRoIGRhdGFiYXNlcy4gV2hpbGUgdGhlIGRhdGFiYXNlIHVzZXJzIGFyZSBoYXBweSwgdGhlIG90aGVyIHVzZXJzIG1heSBub3QgYmUgc28gaGFwcHkgYXMgdGhlIGVudGlyZSBzeXN0ZW0gbWF5IGJlIGdpdmluZyBhbGwgb2YgdGhlIHN5c3RlbSByZXNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlIHVzZXJzIGF0IHRoZSBleHBlbnNlIG9mIGFsbCBvdGhlciB1c2Vycy4gIEFzIHRpbWUgcm9sbHMgb24gdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIG1heSBkZWNpZGUgdGhhdCBhIGZldyBtb3JlIG9mZmljZSBhdXRvbWF0aW9uIHRhc2tzIGNvdWxkIGJlIHNoaWZ0ZWQgdG8gdGhpcyBtYWNoaW5lLiBUaGUgbG9hZCBtYXkgbm93IHNoaWZ0IGZyb20gYSByYW5kb20gcmVhZGVyIGFwcGxpY2F0aW9uIChkYXRhYmFzZSkgdG8gYSBzZXF1ZW50aWFsIHJlYWRlci4gVGhlIHVzZXJzIG1heSBkaXNjb3ZlciB0aGF0IHRoZSBtYWNoaW5lIGlzIHZlcnkgc2xvdyB3aGVuIHJ1bm5pbmcgdGhpcyBuZXcgYXBwbGljYXRpb24gYW5kIGJlY29tZSBkaXNzYXRpc2ZpZWQgd2l0aCB0aGUgZGVjaXNpb24gdG8gcHVyY2hhc2UgdGhpcyBwbGF0Zm9ybS4gQnkgdXNpbmcgSW96b25lIHRvIGdldCBhIGJyb2FkIGZpbGVzeXN0ZW0gcGVyZm9ybWFuY2UgY292ZXJhZ2UgdGhlIGJ1eWVyIGlzIG11Y2ggbW9yZSBsaWtlbHkgdG8gc2VlIGFueSBob3Qgb3IgY29sZCBzcG90cyBhbmQgcGljayBhIHBsYXRmb3JtIGFuZCBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgaXMgbW9yZSB3ZWxsIGJhbGFuY2VkLg0NRmVhdHVyZXM6DUFOU0lJIJFDkiBzb3VyY2UuDVBPU0lYIGFzeW5jIEkvTy4NTW1hcCgpIGZpbGUgSS9PLg1Ob3JtYWwgZmlsZSBJL08uDVNpbmdsZSBzdHJlYW0gbWVhc3VyZW1lbnQuDU11bHRpcGxlIHN0cmVhbSBtZWFzdXJlbWVudC4NUE9TSVggcHRocmVhZHMuDU11bHRpLXByb2Nlc3MgbWVhc3VyZW1lbnQuDUV4Y2VsIGltcG9ydGFibGUgb3V0cHV0IGZvciBncmFwaCBnZW5lcmF0aW9uLg1JL08gTGF0ZW5jeSBkYXRhIGZvciBwbG90cy4NNjQtYml0IGNvbXBhdGlibGUgc291cmNlLg1MYXJnZSBmaWxlIGNvbXBhdGlibGUuDVN0b25ld2FsbGluZyBpbiB0aHJvdWdocHV0IHRlc3RzIHRvIGVsaW1pbmF0ZSBzdHJhZ2dsZXIgZWZmZWN0cy4NUHJvY2Vzc29yIGNhY2hlIHNpemUgY29uZmlndXJhYmxlLg1TZWxlY3RhYmxlIG1lYXN1cmVtZW50cyB3aXRoIGZzeW5jLCBPX1NZTkMuDU9wdGlvbnMgdGFyZ2V0ZWQgZm9yIHRlc3Rpbmcgb3ZlciBORlMuDQ1CdWlsZGluZyBJT3pvbmUgDQ0JT25jZSB5b3UgaGF2ZSBvYnRhaW5lZCB0aGUgc291cmNlIGZvciBJT3pvbmUgeW91IHNob3VsZCBoYXZlIDEyIGZpbGVzLiANaW96b25lLmMgICAgKHNvdXJjZSBjb2RlKQ1saWJhc3luYy5jICAgKHNvdXJjZSBjb2RlKQ1tYWtlZmlsZSAgICAobWFrZWZpbGUpDWxpYmJpZi5jICAgIChzb3VyY2UgY29kZSkNSW96b25lX21zd29yZF85OC5kb2MgIChkb2N1bWVudGF0aW9uIGluIFdvcmQgZm9ybWF0KQ1pb3pvbmUuMSAgKGRvY3VtZW50YXRpb24gaW4gbnJvZmYgZm9ybWF0KQ1nbnVwbG90LmRlbSAgKHNhbXBsZSBnbnVwbG90IGZpbGUgKQ1nbnVwbG90cHMuZGVtIChzYW1wbGUgZ251cGxvdCBmaWxlIHRoYXQgZ2VuZXJhdGVzIHBvc3RzY3JpcHQgb3V0cHV0KQ1yZWFkX3RlbGVtZXRyeSAgKHNhbXBsZSBmaWxlIGZvciByZWFkIHRlbGVtZXRyeSBmaWxlKQ13cml0ZV90ZWxlbWV0cnkgIChzYW1wbGUgZmlsZSBmb3Igd3JpdGUgdGVsZW1ldHJ5IGZpbGUpDVJ1bl9ydWxlcy5kb2MgIChydW4gcnVsZXMgdG8gZ2V0IHJlYXNvbmFibGUgcmVzdWx0cykNQ2hhbmdlcy50eHQgIChsb2cgb2YgY2hhbmdlcyB0byBJb3pvbmUgc2luY2UgaXRzIGJlZ2lubmluZykNDVR5cGU6IG1ha2UNVGhlIG1ha2VmaWxlIHdpbGwgZGlzcGxheSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHBsYXRmb3Jtcy4gUGljayB0aGUgb25lIHRoYXQgbWF0Y2hlcyB5b3VyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZW4gdHlwZTogbWFrZSB0YXJnZXQNVGhhdJJzIGl0LiBZb3WScmUgZG9uZS4gVGhlcmUgaXMgbm8gbmVlZCB0byBoYXZlIGFueSBpbnN0YWxsIHByb2NlZHVyZXMgYXMgSU96b25lIGNyZWF0ZXMgYWxsIG9mIGl0cyBmaWxlcyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gSnVzdCBjb3B5IElvem9uZSB0byB3aGVyZXZlciB5b3Ugd2lzaCB0byB0ZXN0IHRoZSBmaWxlc3lzdGVtIHBlcmZvcm1hbmNlIGFuZCB0aGVuIHJ1biBpdC4gIE9yIHlvdSBjYW4gdXNlIHRoZSCWZiBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHNwZWNpZnkgYSB0YXJnZXQgcGF0aCwgZm9yIGV4YW1wbGUsIGEgcGF0aC9maWxlbmFtZSBpbiBhIG5ldyBmaWxlc3lzdGVtLg0NQmVmb3JlIHlvdSBydW4gSW96b25lIHBsZWFzZSByZWFkIHRoZSBydW4gcnVsZXMgYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGRvY3VtZW50LiANDQ1FeGFtcGxlcyBvZiBydW5uaW5nIElvem9uZToNDQlUaGUgc2ltcGxlc3Qgd2F5IHRvIGdldCBzdGFydGVkIGlzIHRvIHRyeSB0aGUgYXV0b21hdGljIG1vZGUuIA0JDQkJaW96b25lIJZhDQ0JSWYgeW91IHdpc2ggdG8gZ2VuZXJhdGUgZ3JhcGhzIHRoZW4geW91IG1heSB3aXNoIHRvIHR1cm4gb24gRXhjZWwgbW9kZS4NDQkJaW96b25lIJZSYSAgICAgICAgICAgICAgICAgICAgICAoIE91dHB1dCBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgc3BhY2UgYW5kIHRhYiBkZWxpbWl0ZWQpDQkJICAgICBPcg0JCWlvem9uZSCWUmFiIG91dHB1dC53a3MgICggT3V0cHV0IGZpbGUgk291dHB1dC53a3OUIGlzIGEgYmluYXJ5IGZvcm1hdCBzcHJlYWRzaGVldCkNDQlJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gNTEyIE1ieXRlcyBvZiBtZW1vcnkgdGhlbiB5b3UgbmVlZCB0byBpbmNyZWFzZSB0aGUgbWF4aW11bSBmaWxlIHNpemUgdG8gYSBsYXJnZXIgdmFsdWUuIEZvciBleGFtcGxlIGlmIHlvdXIgc3lzdGVtIGhhcyAxIEdieXRlIG9mIG1lbW9yeSB0aGVuIHlvdSB3b3VsZCB3YW50IHRvIHRyeSBzb21ldGhpbmcgbGlrZTogDQkJaW96b25lIJZSYSCWZyAyRw0NCUlmIHlvdSBvbmx5IGNhcmUgYWJvdXQgcmVhZC93cml0ZSBhbmQgZG8gbm90IHdpc2ggdG8gc3BlbmQgdGhlIHRpbWUgdG8gcGVyZm9ybSBhbGwgb2YgdGhlIHRlc3RzLCB0aGVuIHlvdSBtYXkgd2lzaCB0byBsaW1pdCB0aGUgdGVzdGluZyBsaWtlOg0NCQlpb3pvbmUgllJhIJZnIDJHIJZpIDAglmkgMQ0NCUlmIHlvdSBhcmUgcnVubmluZyBJb3pvbmUgb3ZlciBORlMgb24gYW4gTkZTIGNsaWVudCB0aGVuIHlvdSBtYXkgd2lzaCB0byB1c2U6DQ0JCWlvem9uZSCWUmFjIA0gDQlUaGlzIHRlbGxzIElvem9uZSB0byBpbmNsdWRlIHRoZSBjbG9zZSgpIGluIHRoZSBtZWFzdXJlbWVudC4gVGhpcyBtYXkgYmUgbmVlZGVkIGlmIHRoZSBjbGllbnQgaXMgcnVubmluZyBORlMgdmVyc2lvbiAzLiBJbmNsdWRpbmcgdGhlIGNsb3NlKCkgaGVscHMgdG8gcmVkdWNlIHRoZSBjbGllbnQgc2lkZSBjYWNoZSBlZmZlY3RzIG9mIE5GUyB2ZXJzaW9uIDMuDUlmIHlvdSB1c2UgYSBmaWxlIHNpemUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgYW1vdW50IG9mIG1lbW9yeSBpbiB0aGUgY2xpZW50IHRoZW4gdGhlIJFjkiBmbGFnIGlzIG5vdCBuZWVkZWQuDQ0NDA1EZWZpbml0aW9ucyBvZiB0aGUgdGVzdHMNDQlXcml0ZTogIFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygd3JpdGluZyBhIG5ldyBmaWxlLiBXaGVuIGEgbmV3IGZpbGUgaXMgd3JpdHRlbiBub3Qgb25seSBkb2VzIHRoZSBkYXRhIG5lZWQgdG8gYmUgc3RvcmVkIGJ1dCBhbHNvIHRoZSBvdmVyaGVhZCBpbmZvcm1hdGlvbiBmb3Iga2VlcGluZyB0cmFjayBvZiB3aGVyZSB0aGUgZGF0YSBpcyBsb2NhdGVkIG9uIHRoZSBzdG9yYWdlIG1lZGlhLiBUaGlzIG92ZXJoZWFkIGlzIGNhbGxlZCB0aGUgk21ldGFkYXRhlCBJdCBjb25zaXN0cyBvZiB0aGUgZGlyZWN0b3J5IGluZm9ybWF0aW9uLCB0aGUgc3BhY2UgYWxsb2NhdGlvbiBhbmQgYW55IG90aGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgZmlsZS4gIEl0IGlzIG5vcm1hbCBmb3IgdGhlIGluaXRpYWwgd3JpdGUgcGVyZm9ybWFuY2UgdG8gYmUgbG93ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgcmUtd3JpdGluZyBhIGZpbGUgZHVlIHRvIHRoaXMgb3ZlcmhlYWQgaW5mb3JtYXRpb24uDQ0JUmUtd3JpdGU6IFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygd3JpdGluZyBhIGZpbGUgdGhhdCBhbHJlYWR5IGV4aXN0cy4gV2hlbiBhIGZpbGUgaXMgd3JpdHRlbiB0aGF0IGFscmVhZHkgZXhpc3RzIHRoZSB3b3JrIHJlcXVpcmVkIGlzIGxlc3MgYXMgdGhlIG1ldGFkYXRhIGFscmVhZHkgZXhpc3RzLiBJdCBpcyBub3JtYWwgZm9yIHRoZSByZXdyaXRlIHBlcmZvcm1hbmNlIHRvIGJlIGhpZ2hlciB0aGFuIHRoZSBwZXJmb3JtYW5jZSBvZiB3cml0aW5nIGEgbmV3IGZpbGUuDQ0JUmVhZDogVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGFuIGV4aXN0aW5nIGZpbGUuIA0NCVJlLVJlYWQ6IFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVhZGluZyBhIGZpbGUgdGhhdCB3YXMgcmVjZW50bHkgcmVhZC4gSXQgaXMgbm9ybWFsIGZvciB0aGUgcGVyZm9ybWFuY2UgdG8gYmUgaGlnaGVyIGFzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGdlbmVyYWxseSBtYWludGFpbnMgYSBjYWNoZSBvZiB0aGUgZGF0YSBmb3IgZmlsZXMgdGhhdCB3ZXJlIHJlY2VudGx5IHJlYWQuIFRoaXMgY2FjaGUgY2FuIGJlIHVzZWQgdG8gc2F0aXNmeSByZWFkcyBhbmQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlLg0NCVJhbmRvbSBSZWFkOiBUaGlzIHRlc3QgbWVhc3VyZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHJlYWRpbmcgYSBmaWxlIHdpdGggYWNjZXNzZXMgYmVpbmcgbWFkZSB0byByYW5kb20gbG9jYXRpb25zIHdpdGhpbiB0aGUgZmlsZS4gVGhlIHBlcmZvcm1hbmNlIG9mICBhIHN5c3RlbSB1bmRlciB0aGlzIHR5cGUgb2YgYWN0aXZpdHkgY2FuIGJlIGltcGFjdGVkIGJ5IHNldmVyYWwgZmFjdG9ycyBzdWNoIGFzOiBTaXplIG9mIG9wZXJhdGluZyBzeXN0ZW2ScyBjYWNoZSwgbnVtYmVyIG9mIGRpc2tzLCBzZWVrIGxhdGVuY2llcywgYW5kIG90aGVycy4NDQlSYW5kb20gV3JpdGU6IFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygd3JpdGluZyBhIGZpbGUgd2l0aCBhY2Nlc3NlcyBiZWluZyBtYWRlIHRvIHJhbmRvbSBsb2NhdGlvbnMgd2l0aGluIHRoZSBmaWxlLiBBZ2FpbiB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBzeXN0ZW0gdW5kZXIgdGhpcyB0eXBlIG9mIGFjdGl2aXR5IGNhbiBiZSBpbXBhY3RlZCBieSBzZXZlcmFsIGZhY3RvcnMgc3VjaCBhczogU2l6ZSBvZiBvcGVyYXRpbmcgc3lzdGVtknMgY2FjaGUsIG51bWJlciBvZiBkaXNrcywgc2VlayBsYXRlbmNpZXMsIGFuZCBvdGhlcnMuDQ0JUmFuZG9tIE1peDogVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGFuZCB3cml0aW5nIGEgZmlsZSB3aXRoIGFjY2Vzc2VzIGJlaW5nIG1hZGUgdG8gcmFuZG9tIGxvY2F0aW9ucyB3aXRoaW4gdGhlIGZpbGUuIEFnYWluIHRoZSBwZXJmb3JtYW5jZSBvZiBhIHN5c3RlbSB1bmRlciB0aGlzIHR5cGUgb2YgYWN0aXZpdHkgY2FuIGJlIGltcGFjdGVkIGJ5IHNldmVyYWwgZmFjdG9ycyBzdWNoIGFzOiBTaXplIG9mIG9wZXJhdGluZyBzeXN0ZW2ScyBjYWNoZSwgbnVtYmVyIG9mIGRpc2tzLCBzZWVrIGxhdGVuY2llcywgYW5kIG90aGVycy4gVGhpcyB0ZXN0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRocm91Z2hwdXQgbW9kZS4gRWFjaCB0aHJlYWQvcHJvY2VzcyBydW5zIGVpdGhlciB0aGUgcmVhZCBvciB0aGUgd3JpdGUgdGVzdC4gVGhlIGRpc3RyaWJ1dGlvbiBvZiByZWFkL3dyaXRlIGlzIGRvbmUgb24gYSByb3VuZCByb2JpbiBiYXNpcy4gTW9yZSB0aGFuIG9uZSB0aHJlYWQvcHJvY2VzcyBpcyByZXF1aXJlZCBmb3IgcHJvcGVyIG9wZXJhdGlvbi4NDQlCYWNrd2FyZHMgUmVhZDogVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGEgZmlsZSBiYWNrd2FyZHMuIFRoaXMgbWF5IHNlZW0gbGlrZSBhIHN0cmFuZ2Ugd2F5IHRvIHJlYWQgYSBmaWxlIGJ1dCBpbiBmYWN0IHRoZXJlIGFyZSBhcHBsaWNhdGlvbnMgdGhhdCBkbyB0aGlzLiAgTVNDIE5hc3RyYW4gaXMgYW4gZXhhbXBsZSBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IHJlYWRzIGl0cyBmaWxlcyBiYWNrd2FyZHMuIFdpdGggTVNDIE5hc3RyYW4sIHRoZXNlIGZpbGVzIGFyZSB2ZXJ5IGxhcmdlIChHYnl0ZXMgdG8gVGJ5dGVzIGluIHNpemUpLiAgQWx0aG91Z2ggbWFueSBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIHNwZWNpYWwgZmVhdHVyZXMgdGhhdCBlbmFibGUgdGhlbSB0byByZWFkIGEgZmlsZSBmb3J3YXJkIG1vcmUgcmFwaWRseSwgdGhlcmUgYXJlIHZlcnkgZmV3IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgZGV0ZWN0IGFuZCBlbmhhbmNlIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGEgZmlsZSBiYWNrd2FyZHMuDQ0JUmVjb3JkIFJld3JpdGU6IFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygd3JpdGluZyBhbmQgcmUtd3JpdGluZyBhIHBhcnRpY3VsYXIgc3BvdCB3aXRoaW4gYSBmaWxlLiAgVGhpcyBob3Qgc3BvdCBjYW4gaGF2ZSB2ZXJ5IGludGVyZXN0aW5nIGJlaGF2aW9ycy4gSWYgdGhlIHNpemUgb2YgdGhlIHNwb3QgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBpbiB0aGUgQ1BVIGRhdGEgY2FjaGUgdGhlbiB0aGUgcGVyZm9ybWFuY2UgaXMgdmVyeSBoaWdoLiBJZiB0aGUgc2l6ZSBvZiB0aGUgc3BvdCBpcyBiaWdnZXIgdGhhbiB0aGUgQ1BVIGRhdGEgY2FjaGUgYnV0IHN0aWxsIGZpdHMgaW4gdGhlIFRMQiB0aGVuIG9uZSBnZXRzIGEgZGlmZmVyZW50IGxldmVsIG9mIHBlcmZvcm1hbmNlLiBJZiB0aGUgc2l6ZSBvZiB0aGUgc3BvdCBpcyBsYXJnZXIgdGhhbiB0aGUgQ1BVIGRhdGEgY2FjaGUgYW5kIGxhcmdlciB0aGFuIHRoZSBUTEIgYnV0IHN0aWxsIGZpdHMgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gY2FjaGUgdGhlbiBvbmUgZ2V0cyBhbm90aGVyIGxldmVsIG9mIHBlcmZvcm1hbmNlLCBhbmQgaWYgdGhlIHNpemUgb2YgdGhlIHNwb3QgaXMgYmlnZ2VyIHRoYW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gY2FjaGUgdGhlbiBvbmUgZ2V0cyB5ZXQgYW5vdGhlciBsZXZlbCBvZiBwZXJmb3JtYW5jZS4gDQ0JU3RyaWRlZCBSZWFkOiAgVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGEgZmlsZSB3aXRoIGEgc3RyaWRlZCBhY2Nlc3MgYmVoYXZpb3IuIEFuIGV4YW1wbGUgd291bGQgYmU6ICBSZWFkIGF0IG9mZnNldCB6ZXJvIGZvciBhIGxlbmd0aCBvZiA0IEtieXRlcywgdGhlbiBzZWVrIDIwMCBLYnl0ZXMsIGFuZCB0aGVuIHJlYWQgZm9yIGEgbGVuZ3RoIG9mIDQgS2J5dGVzLCB0aGVuIHNlZWsgMjAwIEtieXRlcyBhbmQgc28gb24uIEhlcmUgdGhlIHBhdHRlcm4gaXMgdG8gcmVhZCA0IEtieXRlcyBhbmQgdGhlbiANU2VlayAyMDAgS2J5dGVzIGFuZCByZXBlYXQgdGhlIHBhdHRlcm4uIFRoaXMgYWdhaW4gaXMgYSB0eXBpY2FsIGFwcGxpY2F0aW9uIGJlaGF2aW9yIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlIGRhdGEgc3RydWN0dXJlcyBjb250YWluZWQgd2l0aGluIGEgZmlsZSBhbmQgaXMgYWNjZXNzaW5nIGEgcGFydGljdWxhciByZWdpb24gb2YgdGhlIGRhdGEgc3RydWN0dXJlLg1Nb3N0IG9wZXJhdGluZyBzeXN0ZW1zIGRvIG5vdCBkZXRlY3QgdGhpcyBiZWhhdmlvciBvciBpbXBsZW1lbnQgYW55IHRlY2huaXF1ZXMgdG8gZW5oYW5jZSB0aGUgcGVyZm9ybWFuY2UgdW5kZXIgdGhpcyB0eXBlIG9mIGFjY2VzcyBiZWhhdmlvci4gDVRoaXMgYWNjZXNzIGJlaGF2aW9yIGNhbiBhbHNvIHNvbWV0aW1lcyBwcm9kdWNlIGludGVyZXN0aW5nIHBlcmZvcm1hbmNlIGFub21hbGllcy4gQW4gZXhhbXBsZSB3b3VsZCBiZSBpZiB0aGUgYXBwbGljYXRpb26ScyBzdHJpZGUgY2F1c2VzIGEgcGFydGljdWxhciBkaXNrLCBpbiBhIHN0cmlwZWQgZmlsZSBzeXN0ZW0sIHRvIGJlY29tZSB0aGUgYm90dGxlbmVjay4NDQlGd3JpdGU6IFRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygd3JpdGluZyBhIGZpbGUgdXNpbmcgdGhlIGxpYnJhcnkgZnVuY3Rpb24gZndyaXRlKCkuIFRoaXMgaXMgYSBsaWJyYXJ5IHJvdXRpbmUgdGhhdCBwZXJmb3JtcyBidWZmZXJlZCB3cml0ZSBvcGVyYXRpb25zLiBUaGUgYnVmZmVyIGlzIHdpdGhpbiB0aGUgdXNlcpJzIGFkZHJlc3Mgc3BhY2UuIElmIGFuIGFwcGxpY2F0aW9uIHdlcmUgdG8gd3JpdGUgaW4gdmVyeSBzbWFsbCBzaXplIHRyYW5zZmVycyB0aGVuIHRoZSBidWZmZXJlZCAmIGJsb2NrZWQgSS9PIGZ1bmN0aW9uYWxpdHkgb2YgZndyaXRlKCkgY2FuIGVuaGFuY2UgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBhcHBsaWNhdGlvbiBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGFjdHVhbCBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzIGFuZCBpbmNyZWFzaW5nIHRoZSBzaXplIG9mIHRoZSB0cmFuc2ZlcnMgd2hlbiBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzIGFyZSBtYWRlLiANVGhpcyB0ZXN0IGlzIHdyaXRpbmcgYSBuZXcgZmlsZSBzbyBhZ2FpbiB0aGUgb3ZlcmhlYWQgb2YgdGhlIG1ldGFkYXRhIGlzIGluY2x1ZGVkIGluIHRoZSBtZWFzdXJlbWVudC4NDQlGcmV3cml0ZTogVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiB3cml0aW5nIGEgZmlsZSB1c2luZyB0aGUgbGlicmFyeSBmdW5jdGlvbiBmd3JpdGUoKS4gVGhpcyBpcyBhIGxpYnJhcnkgcm91dGluZSB0aGF0IHBlcmZvcm1zIGJ1ZmZlcmVkICYgYmxvY2tlZCAgd3JpdGUgb3BlcmF0aW9ucy4gVGhlIGJ1ZmZlciBpcyB3aXRoaW4gdGhlIHVzZXKScyBhZGRyZXNzIHNwYWNlLiBJZiBhbiBhcHBsaWNhdGlvbiB3ZXJlIHRvIHdyaXRlIGluIHZlcnkgc21hbGwgc2l6ZSB0cmFuc2ZlcnMgdGhlbiB0aGUgYnVmZmVyZWQgJiBibG9ja2VkIEkvTyBmdW5jdGlvbmFsaXR5IG9mIGZ3cml0ZSgpIGNhbiBlbmhhbmNlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYXBwbGljYXRpb24gYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBhY3R1YWwgb3BlcmF0aW5nIHN5c3RlbSBjYWxscyBhbmQgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNmZXJzIHdoZW4gb3BlcmF0aW5nIHN5c3RlbSBjYWxscyBhcmUgbWFkZS4NVGhpcyB0ZXN0IGlzIHdyaXRpbmcgdG8gYW4gZXhpc3RpbmcgZmlsZSBzbyB0aGUgcGVyZm9ybWFuY2Ugc2hvdWxkIGJlIGhpZ2hlciBhcyB0aGVyZSBhcmUgbm8gbWV0YWRhdGEgb3BlcmF0aW9ucyByZXF1aXJlZC4NDQlGcmVhZDogVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiByZWFkaW5nIGEgZmlsZSB1c2luZyB0aGUgbGlicmFyeSBmdW5jdGlvbiBmcmVhZCgpLiBUaGlzIGlzIGEgbGlicmFyeSByb3V0aW5lIHRoYXQgcGVyZm9ybXMgYnVmZmVyZWQgJiBibG9ja2VkIHJlYWQgb3BlcmF0aW9ucy4gVGhlIGJ1ZmZlciBpcyB3aXRoaW4gdGhlIHVzZXKScyBhZGRyZXNzIHNwYWNlLiBJZiBhbiBhcHBsaWNhdGlvbiB3ZXJlIHRvIHJlYWQgaW4gdmVyeSBzbWFsbCBzaXplIHRyYW5zZmVycyB0aGVuIHRoZSBidWZmZXJlZCAmIGJsb2NrZWQgSS9PIGZ1bmN0aW9uYWxpdHkgb2YgZnJlYWQoKSBjYW4gZW5oYW5jZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgYWN0dWFsIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMgYW5kIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgdGhlIHRyYW5zZmVycyB3aGVuIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMgYXJlIG1hZGUuDQ0JRnJlcmVhZDogVGhpcyB0ZXN0IGlzIHRoZSBzYW1lIGFzIGZyZWFkIGFib3ZlIGV4Y2VwdCB0aGF0IGluIHRoaXMgdGVzdCB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHJlYWQgd2FzIHJlYWQgaW4gdGhlIHJlY2VudCBwYXN0LiBUaGlzIHNob3VsZCByZXN1bHQgaW4gaGlnaGVyIHBlcmZvcm1hbmNlIGFzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGxpa2VseSB0byBoYXZlIHRoZSBmaWxlIGRhdGEgaW4gY2FjaGUuDQ1TcGVjaWFsaXplZCB0ZXN0czoNDQlNbWFwOiAgTWFueSBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0IHRoZSB1c2Ugb2YgbW1hcCgpIHRvIG1hcCBhIGZpbGUgaW50byBhIHVzZXKScyBhZGRyZXNzIHNwYWNlLiAgT25jZSB0aGlzIG1hcHBpbmcgaXMgaW4gcGxhY2UgdGhlbiBzdG9yZXMgdG8gdGhpcyBsb2NhdGlvbiBpbiBtZW1vcnkgd2lsbCByZXN1bHQgaW4gdGhlIGRhdGEgYmVpbmcgc3RvcmVkIGdvaW5nIHRvIGEgZmlsZS4gVGhpcyBpcyBoYW5keSBpZiBhbiBhcHBsaWNhdGlvbiB3aXNoZXMgdG8gdHJlYXQgZmlsZXMgYXMgY2h1bmtzIG9mIG1lbW9yeS4gQW4gZXhhbXBsZSB3b3VsZCBiZSB0byBoYXZlIGFuIGFycmF5IGluIG1lbW9yeSB0aGF0IGlzIGFsc28gYmVpbmcgbWFpbnRhaW5lZCBhcyBhIGZpbGUgaW4gdGhlIGZpbGVzIHN5c3RlbS4gDVRoZSBzZW1hbnRpY3Mgb2YgbW1hcCBmaWxlcyBpcyBzb21ld2hhdCBkaWZmZXJlbnQgdGhhbiBub3JtYWwgZmlsZXMuIElmIGEgc3RvcmUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBpcyBkb25lIHRoZW4gbm8gYWN0dWFsIGZpbGUgSS9PIG1heSBvY2N1ciBpbW1lZGlhdGVseS4gVGhlIHVzZSBvZiB0aGUgbXN5YygpIHdpdGggdGhlIGZsYWdzIE1TX1NZTkMsIGFuZCBNU19BU1lOQyBjb250cm9sIHRoZSBjb2hlcmVuY3kgb2YgdGhlIG1lbW9yeSBhbmQgdGhlIGZpbGUuIEEgY2FsbCB0byBtc3luYygpIHdpdGggTVNfU1lOQyB3aWxsIGZvcmNlIHRoZSBjb250ZW50cyBvZiBtZW1vcnkgdG8gdGhlIGZpbGUgYW5kIHdhaXQgZm9yIGl0IHRvIGJlIG9uIHN0b3JhZ2UgYmVmb3JlIHJldHVybmluZyB0byB0aGUgYXBwbGljYXRpb24uIEEgY2FsbCB0byBtc3luYygpIHdpdGggdGhlIGZsYWcgTVNfQVNZTkMgdGVsbHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdG8gZmx1c2ggdGhlIG1lbW9yeSBvdXQgdG8gc3RvcmFnZSB1c2luZyBhbiBhc3luY2hyb25vdXMgbWVjaGFuaXNtIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIG1heSByZXR1cm4gaW50byBleGVjdXRpb24gd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZGF0YSB0byBiZSB3cml0dGVuIHRvIHN0b3JhZ2UuDVRoaXMgdGVzdCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdXNpbmcgdGhlIG1tYXAoKSBtZWNoYW5pc20gZm9yIHBlcmZvcm1pbmcgSS9PLg0NCUFzeW5jIEkvTzogQW5vdGhlciBtZWNoYW5pc20gdGhhdCBpcyBzdXBwb3J0ZWQgYnkgbWFueSBvcGVyYXRpbmcgc3lzdGVtcyBmb3IgcGVyZm9ybWluZyBJL08gaXMgUE9TSVggYXN5bmMgSS9PLiAgVGhlIGFwcGxpY2F0aW9uIHVzZXMgdGhlIFBPU0lYIHN0YW5kYXJkIGFzeW5jIEkvTyBpbnRlcmZhY2VzIHRvIGFjY29tcGxpc2ggdGhpcy4gDUV4YW1wbGU6IGFpb193cml0ZSgpLCBhaW9fcmVhZCgpLCBhaW9fZXJyb3IoKS4gVGhpcyB0ZXN0IG1lYXN1cmVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUE9TSVggYXN5bmMgSS9PIG1lY2hhbmlzbS4NDQwJDUNvbW1hbmQgTGluZSBvcHRpb25zOg0NVGhlIGZvbGxvd2luZyBpcyB0aGUgb3V0cHV0IGZyb20gdGhlIGJ1aWx0IGluIGhlbHAuIEVhY2ggb3B0aW9uknMgcHVycG9zZSBpcyBleHBsYWluZWQgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBtYW51YWwuDQ1Vc2FnZTogaW96b25lIFstcyBmaWxlc2l6ZV9LYl0gWy1yIHJlY29yZF9zaXplX0tiIF0gWy1mIFtwYXRoXWZpbGVuYW1lXQ1bLWkgdGVzdF0gWy1FXSBbLXBdIFstYV0gWy1BXSBbLXpdIFstWl0gWy1tXSBbLU1dIFstdCBjaGlsZHJlbl0gWy1oXSBbLW9dDVstbCBtaW5fbnVtYmVyX3Byb2NzXSBbLXUgbWF4X251bWJlcl9wcm9jc10gWy12XSBbLVJdIFsteF0NWy1kIG1pY3Jvc2Vjb25kc10gWy1GIHBhdGgxIHBhdGgyLi4uXSBbLVYgcGF0dGVybl0gWy1qIHN0cmlkZV0NWy1UXSBbLUNdIFstQl0gWy1EXSBbLUddIFstSV0gWy1IIGRlcHRoXSBbLWsgZGVwdGhdIFstVSBtb3VudF9wb2ludF0NWy1TIGNhY2hlX3NpemVdIFstT10gWy1LXSBbLUwgbGluZV9zaXplXSBbLWcgbWF4X2ZpbGVzaXplX0tiXQ1bLW4gbWluX2ZpbGVzaXplX0tiXSBbLU5dIFstUV0gWy1QIHN0YXJ0X2NwdV0gWy1jXSBbLWVdIFstYiBmaWxlbmFtZV0NWy1KIG1pbGxpc2Vjb25kc10gWy1YIGZpbGVuYW1lXSBbLVkgZmlsZW5hbWVdIFstd10gWy1XXQ1bLXkgbWluX3JlY29yZHNpemVfS2JdIFstcSBtYXhfcmVjb3Jkc2l6ZV9LYl0gWy0rbSBmaWxlbmFtZV0NWy0rbl0gWy0rTl0gWy0rdSBdIFsgLStkIF0gWy0rcCBwZXJjZW50X3JlYWRdIFstK3JdIFstK3QgXSBbLStBICNdDQ0gV2hhdCBkbyB0aGV5IGFsbCBtZWFuID8NDS1hDVVzZWQgdG8gc2VsZWN0IGZ1bGwgYXV0b21hdGljIG1vZGUuIFByb2R1Y2VzIG91dHB1dCB0aGF0IGNvdmVycyBhbGwgdGVzdGVkIGZpbGUgb3BlcmF0aW9ucyANZm9yIHJlY29yZCBzaXplcyBvZiA0ayB0byAxNk0gZm9yIGZpbGUgc2l6ZXMgb2YgNjRrIHRvIDUxMk0uICANDS1BDVRoaXMgdmVyc2lvbiBvZiBhdXRvbWF0aWMgbW9kZSBwcm92aWRlcyBtb3JlIGNvdmVyYWdlIGJ1dCBjb25zdW1lcyBhIGJ1bmNoIG9mIHRpbWUuIA1UaGUglmEgb3B0aW9uIHdpbGwgYXV0b21hdGljYWxseSBzdG9wIHVzaW5nIHRyYW5zZmVyIHNpemVzIGxlc3MgdGhhbiA2NGsgb25jZSB0aGUgZmlsZSANc2l6ZSBpcyAzMiBNQiBvciBsYXJnZXIuIFRoaXMgc2F2ZXMgdGltZS4gVGhlIJZBIG9wdGlvbiB0ZWxscyBJb3pvbmUgdGhhdCB5b3UgYXJlIHdpbGxpbmcgdG8gDXdhaXQgYW5kIHdhbnQgZGVuc2UgY292ZXJhZ2UgZm9yIHNtYWxsIHRyYW5zZmVycyBldmVuIHdoZW4gdGhlIGZpbGUgc2l6ZSBpcyB2ZXJ5IGxhcmdlLg1OT1RFOiBUaGlzIG9wdGlvbiBpcyBkZXByZWNhdGVkIGluIElvem9uZSB2ZXJzaW9uIDMuNjEuICBVc2UglmF6IJZpIDAglmkgMSBpbnN0ZWFkLg0NLWIgZmlsZW5hbWUNSW96b25lIHdpbGwgY3JlYXRlIGEgYmluYXJ5IGZpbGUgZm9ybWF0IGZpbGUgaW4gRXhjZWwgY29tcGF0aWJsZSBvdXRwdXQgb2YgcmVzdWx0cy4NDS1CDVVzZSBtbWFwKCkgZmlsZXMuIFRoaXMgY2F1c2VzIGFsbCBvZiB0aGUgdGVtcG9yYXJ5IGZpbGVzIGJlaW5nIG1lYXN1cmVkIHRvIGJlIGNyZWF0ZWQgDWFuZCBhY2Nlc3NlZCB3aXRoIHRoZSBtbWFwKCkgaW50ZXJmYWNlLiAgU29tZSBhcHBsaWNhdGlvbnMgcHJlZmVyIHRvIHRyZWF0IGZpbGVzIGFzIGFycmF5cyANb2YgbWVtb3J5LiBUaGVzZSBhcHBsaWNhdGlvbnMgbW1hcCgpIHRoZSBmaWxlIGFuZCB0aGVuIGp1c3QgYWNjZXNzIHRoZSBhcnJheSB3aXRoIGxvYWRzIA1hbmQgc3RvcmVzIHRvIHBlcmZvcm0gZmlsZSBJL08uDQ0tYw1JbmNsdWRlIGNsb3NlKCkgaW4gdGhlIHRpbWluZyBjYWxjdWxhdGlvbnMuIFRoaXMgaXMgdXNlZnVsIG9ubHkgaWYgeW91IHN1c3BlY3QgdGhhdCBjbG9zZSgpIGlzIA1icm9rZW4gaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gY3VycmVudGx5IHVuZGVyIHRlc3QuIEl0IGNhbiBiZSB1c2VmdWwgZm9yIE5GUyBWZXJzaW9uIDMgDXRlc3RpbmcgYXMgd2VsbCB0byBoZWxwIGlkZW50aWZ5IGlmIHRoZSBuZnMzX2NvbW1pdCBpcyB3b3JraW5nIHdlbGwuIA0NLUMNU2hvdyBieXRlcyB0cmFuc2ZlcnJlZCBieSBlYWNoIGNoaWxkIGluIHRocm91Z2hwdXQgdGVzdGluZy4gVXNlZnVsIGlmIHlvdXIgb3BlcmF0aW5nIA1zeXN0ZW0gaGFzIGFueSBzdGFydmF0aW9uIHByb2JsZW1zIGluIGZpbGUgSS9PIG9yIGluIHByb2Nlc3MgbWFuYWdlbWVudC4NDS1kICMNTWljcm9zZWNvbmQgZGVsYXkgb3V0IG9mIGJhcnJpZXIuICBEdXJpbmcgdGhlIHRocm91Z2hwdXQgdGVzdHMgYWxsIHRocmVhZHMgb3IgcHJvY2Vzc2VzIGFyZSANZm9yY2VkIHRvIGEgYmFycmllciBiZWZvcmUgYmVnaW5uaW5nIHRoZSB0ZXN0LiBOb3JtYWxseSwgYWxsIG9mIHRoZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBhcmUgDXJlbGVhc2VkIGF0IHRoZSBzYW1lIG1vbWVudC4gVGhpcyBvcHRpb24gYWxsb3dzIG9uZSB0byBkZWxheSBhIHNwZWNpZmllZCB0aW1lIGluIA1taWNyb3NlY29uZHMgYmV0d2VlbiByZWxlYXNpbmcgZWFjaCBvZiB0aGUgcHJvY2Vzc2VzIG9yIHRocmVhZHMuIA0NLUQNVXNlIG1zeW5jKE1TX0FTWU5DKSBvbiBtbWFwIGZpbGVzLiBUaGlzIHRlbGxzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgYWxsIHRoZSBkYXRhIGluDXRoZSBtbWFwIHNwYWNlIG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gZGlzayBhc3luY2hyb25vdXNseS4NDS1lDUluY2x1ZGUgZmx1c2ggKGZzeW5jLGZmbHVzaCkgaW4gdGhlIHRpbWluZyBjYWxjdWxhdGlvbnMNDS1FDVVzZWQgdG8gc2VsZWN0IHRoZSBleHRlbnNpb24gdGVzdHMuIE9ubHkgYXZhaWxhYmxlIG9uIHNvbWUgcGxhdGZvcm1zLiBVc2VzIHByZWFkIGludGVyZmFjZXMuDQ0tZiBmaWxlbmFtZSANVXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBmb3IgdGhlIHRlbXBvcmFyeSBmaWxlIHVuZGVyIHRlc3QuIFRoaXMgaXMgdXNlZnVsIHdoZW4gDXRoZSB1bm1vdW50IG9wdGlvbiBpcyB1c2VkLiBXaGVuIHRlc3Rpbmcgd2l0aCB1bm1vdW50IGJldHdlZW4gdGVzdHMgaXQgaXMgbmVjZXNzYXJ5IGZvciANdGhlIHRlbXBvcmFyeSBmaWxlIHVuZGVyIHRlc3QgdG8gYmUgaW4gYSBkaXJlY3RvcnkgdGhhdCBjYW4gYmUgdW5tb3VudGVkLiBJdCBpcyBub3QgcG9zc2libGUgDXRvIHVubW91bnQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYXMgdGhlIHByb2Nlc3MgSW96b25lIGlzIHJ1bm5pbmcgaW4gdGhpcyBkaXJlY3RvcnkuDQ0tRiBmaWxlbmFtZSBmaWxlbmFtZSBmaWxlbmFtZSCFDVNwZWNpZnkgZWFjaCBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUgbmFtZXMgdG8gYmUgdXNlZCBpbiB0aGUgdGhyb3VnaHB1dCB0ZXN0aW5nLiBUaGUgbnVtYmVyDW9mIG5hbWVzIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBvciB0aHJlYWRzIHRoYXQgYXJlIHNwZWNpZmllZC4NDS1nICMNU2V0IG1heGltdW0gZmlsZSBzaXplIChpbiBLYnl0ZXMpIGZvciBhdXRvIG1vZGUuDQ0tRw1Vc2UgbXN5bmMoTVNfU1lOQykgb24gbW1hcCBmaWxlcy4gVGhpcyB0ZWxscyB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IGFsbCB0aGUgZGF0YSBpbiB0aGUgDW1tYXAgc3BhY2UgbmVlZHMgdG8gYmUgd3JpdHRlbiB0byBkaXNrIHN5bmNocm9ub3VzbHkuDQ0taA1EaXNwbGF5cyBoZWxwIHNjcmVlbi4NDS1IICMNVXNlIFBPU0lYIGFzeW5jIEkvTyB3aXRoICMgYXN5bmMgb3BlcmF0aW9ucy4gSW96b25lIHdpbGwgdXNlIFBPU0lYIGFzeW5jIEkvTyB3aXRoIGEgDWJjb3B5IGZyb20gdGhlIGFzeW5jIGJ1ZmZlcnMgYmFjayBpbnRvIHRoZSBhcHBsaWNhdGlvbnMgYnVmZmVyLiAgU29tZSB2ZXJzaW9ucyBvZiBNU0MNTkFTVFJBTiBwZXJmb3JtIEkvTyB0aGlzIHdheS4gVGhpcyB0ZWNobmlxdWUgaXMgdXNlZCBieSBhcHBsaWNhdGlvbnMgc28gdGhhdCB0aGUgYXN5bmMgDUkvTyBtYXkgYmUgcGVyZm9ybWVkIGluIGEgbGlicmFyeSBhbmQgcmVxdWlyZXMgbm8gY2hhbmdlcyB0byB0aGUgYXBwbGljYXRpb25zIGludGVybmFsIG1vZGVsLg0NLWkgIw1Vc2VkIHRvIHNwZWNpZnkgd2hpY2ggdGVzdHMgdG8gcnVuLiAoMD13cml0ZS9yZXdyaXRlLCAxPXJlYWQvcmUtcmVhZCwgMj1yYW5kb20tcmVhZC93cml0ZQ0zPVJlYWQtYmFja3dhcmRzLCA0PVJlLXdyaXRlLXJlY29yZCwgNT1zdHJpZGUtcmVhZCwgNj1md3JpdGUvcmUtZndyaXRlLCA3PWZyZWFkL1JlLWZyZWFkLCANOD1yYW5kb20gbWl4LCA5PXB3cml0ZS9SZS1wd3JpdGUsIDEwPXByZWFkL1JlLXByZWFkLCAxMT1wd3JpdGV2L1JlLXB3cml0ZXYsIDEyPXByZWFkdi9SZS1wcmVhZHYpLiAgDU9uZSB3aWxsIGFsd2F5cyBuZWVkIHRvIHNwZWNpZnkgMCBzbyB0aGF0IGFueSBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIHdpbGwgaGF2ZSBhIGZpbGUgdG8gbWVhc3VyZS4NLWkgIyAtaSAjIC1pICMgaXMgYWxzbyBzdXBwb3J0ZWQgc28gdGhhdCBvbmUgbWF5IHNlbGVjdCBtb3JlIHRoYW4gb25lIHRlc3QuDQ0tSQ1Vc2UgVnhGUyBWWF9ESVJFQ1QgZm9yIGFsbCBmaWxlIG9wZXJhdGlvbnMuIFRlbGxzIHRoZSBWWEZTIGZpbGVzeXN0ZW0gdGhhdCBhbGwgb3BlcmF0aW9ucyANdG8gdGhlIGZpbGUgYXJlIHRvIGJ5cGFzcyB0aGUgYnVmZmVyIGNhY2hlIGFuZCBnbyBkaXJlY3RseSB0byBkaXNrLg0NLWogIw1TZXQgc3RyaWRlIG9mIGZpbGUgYWNjZXNzZXMgdG8gKCMgKiByZWNvcmQgc2l6ZSkuIFRoZSBzdHJpZGUgcmVhZCB0ZXN0IHdpbGwgcmVhZCByZWNvcmRzIGF0IHRoaXMgc3RyaWRlLg0NLUogIyAoaW4gbWlsbGlzZWNvbmRzKQ1QZXJmb3JtIGEgY29tcHV0ZSBkZWxheSBvZiB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzIGJlZm9yZSBlYWNoIEkvTyBvcGVyYXRpb24uIFNlZSBhbHNvIA0tWCBhbmQgLVkgZm9yIG90aGVyIG9wdGlvbnMgdG8gY29udHJvbCBjb21wdXRlIGRlbGF5Lg0MDS1rICMNVXNlIFBPU0lYIGFzeW5jIEkvTyAobm8gYmNvcHkpIHdpdGggIyBhc3luYyBvcGVyYXRpb25zLiBJb3pvbmUgd2lsbCB1c2UgUE9TSVggYXN5bmMgDUkvTyBhbmQgd2lsbCBub3QgcGVyZm9ybSBhbnkgZXh0cmEgYmNvcHlzLiBUaGUgYnVmZmVycyB1c2VkIGJ5IElvem9uZSB3aWxsIGJlIGhhbmRlZCB0byANdGhlIGFzeW5jIEkvTyBzeXN0ZW0gY2FsbCBkaXJlY3RseS4NDS1LDUdlbmVyYXRlIHNvbWUgcmFuZG9tIGFjY2Vzc2VzIGR1cmluZyB0aGUgbm9ybWFsIHRlc3RpbmcuDQ0tbCAjDVNldCB0aGUgbG93ZXIgbGltaXQgb24gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBydW4uIFdoZW4gcnVubmluZyB0aHJvdWdocHV0IHRlc3RzIHRoaXMNb3B0aW9uIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBsZWFzdCBudW1iZXIgb2YgcHJvY2Vzc2VzIG9yIHRocmVhZHMgdG8gc3RhcnQuIFRoaXMgDW9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSAtdSBvcHRpb24uDQ0tTCAjDVNldCBwcm9jZXNzb3IgY2FjaGUgbGluZSBzaXplIHRvIHZhbHVlIChpbiBieXRlcykuIFRlbGxzIElvem9uZSB0aGUgcHJvY2Vzc29yIGNhY2hlIGxpbmUgc2l6ZS4gDVRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGhlbHAgc3BlZWQgdXAgdGhlIHRlc3QuDQ0tbQ1UZWxscyBJb3pvbmUgdG8gdXNlIG11bHRpcGxlIGJ1ZmZlcnMgaW50ZXJuYWxseS4gU29tZSBhcHBsaWNhdGlvbnMgcmVhZCBpbnRvIGEgc2luZ2xlDWJ1ZmZlciBvdmVyIGFuZCBvdmVyLiBPdGhlcnMgaGF2ZSBhbiBhcnJheSBvZiBidWZmZXJzLiBUaGlzIG9wdGlvbiBhbGxvd3MgYm90aCB0eXBlcyBvZiANYXBwbGljYXRpb25zIHRvIGJlIHNpbXVsYXRlZC4gIElvem9uZZJzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmUtdXNlIGludGVybmFsIGJ1ZmZlcnMuDVRoaXMgb3B0aW9uIGFsbG93cyBvbmUgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYW5kIHRvIHVzZSBtdWx0aXBsZSBpbnRlcm5hbCBidWZmZXJzLg0NLU0NSW96b25lIHdpbGwgY2FsbCB1bmFtZSgpIGFuZCB3aWxsIHB1dCB0aGUgc3RyaW5nIGluIHRoZSBvdXRwdXQgZmlsZS4NDS1uICMNU2V0IG1pbmltdW0gZmlsZSBzaXplIChpbiBLYnl0ZXMpIGZvciBhdXRvIG1vZGUuDQ0tTg1SZXBvcnQgcmVzdWx0cyBpbiBtaWNyb3NlY29uZHMgcGVyIG9wZXJhdGlvbi4NDS1vDVdyaXRlcyBhcmUgc3luY2hyb25vdXNseSB3cml0dGVuIHRvIGRpc2suIChPX1NZTkMpLiBJb3pvbmUgd2lsbCBvcGVuIHRoZSBmaWxlcyB3aXRoIHRoZQ1PX1NZTkMgZmxhZy4gVGhpcyBmb3JjZXMgYWxsIHdyaXRlcyB0byB0aGUgZmlsZSB0byBnbyBjb21wbGV0ZWx5IHRvIGRpc2sgYmVmb3JlIHJldHVybmluZyB0bw10aGUgYmVuY2htYXJrLiANDS1PDUdpdmUgcmVzdWx0cyBpbiBvcGVyYXRpb25zIHBlciBzZWNvbmQuDQ0tcA1UaGlzIHB1cmdlcyB0aGUgcHJvY2Vzc29yIGNhY2hlIGJlZm9yZSBlYWNoIGZpbGUgb3BlcmF0aW9uLiBJb3pvbmUgd2lsbCBhbGxvY2F0ZSBhbm90aGVyIA1pbnRlcm5hbCBidWZmZXIgdGhhdCBpcyBhbGlnbmVkIHRvIHRoZSBzYW1lIHByb2Nlc3NvciBjYWNoZSBib3VuZGFyeSBhbmQgaXMgb2YgYSBzaXplIHRoYXQgDW1hdGNoZXMgdGhlIHByb2Nlc3NvciBjYWNoZS4gSXQgd2lsbCB6ZXJvIGZpbGwgdGhpcyBhbHRlcm5hdGUgYnVmZmVyIGJlZm9yZSBiZWdpbm5pbmcgZWFjaCB0ZXN0LiANVGhpcyB3aWxsIHB1cmdlIHRoZSBwcm9jZXNzb3IgY2FjaGUgYW5kIGFsbG93IG9uZSB0byBzZWUgdGhlIG1lbW9yeSBzdWJzeXN0ZW0gd2l0aG91dCANdGhlIGFjY2VsZXJhdGlvbiBkdWUgdG8gdGhlIHByb2Nlc3NvciBjYWNoZS4NDS1QICMNQmluZCBwcm9jZXNzZXMvdGhyZWFkcyB0byBwcm9jZXNzb3JzLCBzdGFydGluZyB3aXRoIHRoaXMgY3B1ICMuIE9ubHkgYXZhaWxhYmxlIG9uIHNvbWUgDXBsYXRmb3Jtcy4gVGhlIGZpcnN0IHN1YiBwcm9jZXNzIG9yIHRocmVhZCB3aWxsIGJlZ2luIG9uIHRoZSBzcGVjaWZpZWQgcHJvY2Vzc29yLiBGdXR1cmUgcHJvY2Vzc2VzIG9yIHRocmVhZHMgd2lsbCBiZSBwbGFjZWQgb24gdGhlIG5leHQgcHJvY2Vzc29yLiBPbmNlIHRoZSB0b3RhbCBudW1iZXIgb2YgY3B1cyBpcyBleGNlZWRlZCB0aGVuIGZ1dHVyZSBwcm9jZXNzZXMgb3IgdGhyZWFkcyB3aWxsIGJlIHBsYWNlZCBpbiBhIHJvdW5kIHJvYmluIGZhc2hpb24uDQ0tcSAjDVNldCBtYXhpbXVtIHJlY29yZCBzaXplIChpbiBLYnl0ZXMpIGZvciBhdXRvIG1vZGUuICBPbmUgbWF5IGFsc28gc3BlY2lmeSANLXEgI2sgKHNpemUgaW4gS2J5dGVzKSBvciAtcSAjbSAoc2l6ZSBpbiBNYnl0ZXMpIG9yIC1xICNnIChzaXplIGluIEdieXRlcykuDVNlZSCWeSBmb3Igc2V0dGluZyBtaW5pbXVtIHJlY29yZCBzaXplLg0NLVENQ3JlYXRlIG9mZnNldC9sYXRlbmN5IGZpbGVzLiBJb3pvbmUgd2lsbCBjcmVhdGUgbGF0ZW5jeSB2ZXJzdXMgb2Zmc2V0IGRhdGEgZmlsZXMgdGhhdCBjYW4gYmUNaW1wb3J0ZWQgd2l0aCBhIGdyYXBoaWNzIHBhY2thZ2UgYW5kIHBsb3R0ZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBmaW5kaW5nIGlmIGNlcnRhaW4gb2Zmc2V0cyANaGF2ZSB2ZXJ5IGhpZ2ggbGF0ZW5jaWVzLiBTdWNoIGFzIHRoZSBwb2ludCB3aGVyZSBVRlMgd2lsbCBhbGxvY2F0ZSBpdHMgZmlyc3QgaW5kaXJlY3QgYmxvY2suIA1PbmUgY2FuIHNlZSBmcm9tIHRoZSBkYXRhIHRoZSBpbXBhY3RzIG9mIHRoZSBleHRlbnQgYWxsb2NhdGlvbnMgZm9yIGV4dGVudCBiYXNlZCBmaWxlc3lzdGVtcyANd2l0aCB0aGlzIG9wdGlvbi4NDS1yICMgIA1Vc2VkIHRvIHNwZWNpZnkgdGhlIHJlY29yZCBzaXplLCBpbiBLYnl0ZXMsIHRvIHRlc3QuIE9uZSBtYXkgYWxzbyBzcGVjaWZ5IA0tciAjayAoc2l6ZSBpbiBLYnl0ZXMpIG9yIC1yICNtIChzaXplIGluIE1ieXRlcykgb3IgLXIgI2cgKHNpemUgaW4gR2J5dGVzKS4NDS1SIA1HZW5lcmF0ZSBFeGNlbCByZXBvcnQuIElvem9uZSB3aWxsIGdlbmVyYXRlIGFuIEV4Y2VsIGNvbXBhdGlibGUgcmVwb3J0IHRvIHN0YW5kYXJkIG91dC4gVGhpcyANZmlsZSBtYXkgYmUgaW1wb3J0ZWQgd2l0aCBNaWNyb3NvZnQgRXhjZWwgKHNwYWNlIGRlbGltaXRlZCkgYW5kIHVzZWQgdG8gY3JlYXRlIGEgZ3JhcGggb2YgDXRoZSBmaWxlc3lzdGVtIHBlcmZvcm1hbmNlLiBOb3RlOiBUaGUgM0QgZ3JhcGhzIGFyZSBjb2x1bW4gb3JpZW50ZWQuIFlvdSB3aWxsIG5lZWQgdG8gDXNlbGVjdCB0aGlzIHdoZW4gZ3JhcGhpbmcgYXMgdGhlIGRlZmF1bHQgaW4gRXhjZWwgaXMgcm93IG9yaWVudGVkIGRhdGEuDQ0tcyAjICANVXNlZCB0byBzcGVjaWZ5IHRoZSBzaXplLCBpbiBLYnl0ZXMsIG9mIHRoZSBmaWxlIHRvIHRlc3QuIE9uZSBtYXkgYWxzbyBzcGVjaWZ5IA0tcyAjayAoc2l6ZSBpbiBLYnl0ZXMpIG9yIC1zICNtIChzaXplIGluIE1ieXRlcykgb3IgLXMgI2cgKHNpemUgaW4gR2J5dGVzKS4NDS1TICMNU2V0IHByb2Nlc3NvciBjYWNoZSBzaXplIHRvIHZhbHVlIChpbiBLYnl0ZXMpLiBUaGlzIHRlbGxzIElvem9uZSB0aGUgc2l6ZSBvZiB0aGUgcHJvY2Vzc29yIGNhY2hlLiANSXQgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBidWZmZXIgYWxpZ25tZW50IGFuZCBmb3IgdGhlIHB1cmdlIGZ1bmN0aW9uYWxpdHkuDQ0tdCAjDVJ1biBJb3pvbmUgaW4gYSB0aHJvdWdocHV0IG1vZGUuIFRoaXMgb3B0aW9uIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGhvdw1tYW55IHRocmVhZHMgb3IgcHJvY2Vzc2VzIHRvIGhhdmUgYWN0aXZlIGR1cmluZyAgdGhlIG1lYXN1cmVtZW50Lg0NLVQNVXNlIFBPU0lYIHB0aHJlYWRzIGZvciB0aHJvdWdocHV0IHRlc3RzLiBBdmFpbGFibGUgb24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBQT1NJWCB0aHJlYWRzLg0NLXUgIw1TZXQgdGhlIHVwcGVyIGxpbWl0IG9uIG51bWJlciBvZiBwcm9jZXNzZXMgdG8gcnVuLiBXaGVuIHJ1bm5pbmcgdGhyb3VnaHB1dCB0ZXN0cyB0aGlzIA1vcHRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIGdyZWF0ZXN0IG51bWJlciBvZiBwcm9jZXNzZXMgb3IgdGhyZWFkcyB0byBzdGFydC4NVGhpcyBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgLWwgb3B0aW9uLg0NLVUgbW91bnRwb2ludCANTW91bnQgcG9pbnQgdG8gdW5tb3VudCBhbmQgcmVtb3VudCBiZXR3ZWVuIHRlc3RzLiAgSW96b25lIHdpbGwgdW5tb3VudCBhbmQgcmVtb3VudCANdGhpcyBtb3VudCBwb2ludCBiZWZvcmUgYmVnaW5uaW5nIGVhY2ggdGVzdC4gVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIGJ1ZmZlciBjYWNoZSBkb2VzIG5vdCANY29udGFpbiBhbnkgb2YgdGhlIGZpbGUgdW5kZXIgdGVzdC4NDS12DURpc3BsYXkgdGhlIHZlcnNpb24gb2YgSW96b25lLg0NLVYgIw1TcGVjaWZ5IGEgcGF0dGVybiB0aGF0IGlzIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCB2YWxpZGF0ZWQgZm9yIGFjY3VyYWN5IGluIA1lYWNoIG9mIHRoZSByZWFkIHRlc3RzLg0NLXcNRG8gbm90IHVubGluayB0ZW1wb3JhcnkgZmlsZXMgd2hlbiBmaW5pc2hlZCB1c2luZyB0aGVtLiAgTGVhdmUgdGhlbSBwcmVzZW50IGluIHRoZSBmaWxlc3lzdGVtLg0NLVcNTG9jayBmaWxlcyB3aGVuIHJlYWRpbmcgb3Igd3JpdGluZy4NDS14IA1UdXJuIG9mZiBzdG9uZS13YWxsaW5nLiBTdG9uZXdhbGxpbmcgaXMgYSB0ZWNobmlxdWUgdXNlZCBpbnRlcm5hbGx5IHRvIElvem9uZS4gSXQgaXMgdXNlZCBkdXJpbmcgDXRoZSB0aHJvdWdocHV0IHRlc3RzLiBUaGUgY29kZSBzdGFydHMgYWxsIHRocmVhZHMgb3IgcHJvY2Vzc2VzIGFuZCB0aGVuIHN0b3BzIHRoZW0gb24gYSBiYXJyaWVyLg1PbmNlIHRoZXkgYXJlIGFsbCByZWFkeSB0byBzdGFydCB0aGVuIHRoZXkgYXJlIGFsbCByZWxlYXNlZCBhdCB0aGUgc2FtZSB0aW1lLiBUaGUgbW9tZW50IHRoYXQgDWFueSBvZiB0aGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgZmluaXNoIHRoZWlyIHdvcmsgdGhlbiB0aGUgZW50aXJlIHRlc3QgaXMgdGVybWluYXRlZCBhbmQgDXRocm91Z2hwdXQgaXMgY2FsY3VsYXRlZCBvbiB0aGUgdG90YWwgSS9PIHRoYXQgd2FzIGNvbXBsZXRlZCB1cCB0byB0aGlzIHBvaW50LiBUaGlzIGVuc3VyZXMgDXRoYXQgdGhlIGVudGlyZSBtZWFzdXJlbWVudCB3YXMgdGFrZW4gd2hpbGUgYWxsIG9mIHRoZSBwcm9jZXNzZXMgb3IgdGhyZWFkcyB3ZXJlIHJ1bm5pbmcgDWluIHBhcmFsbGVsLiBUaGlzIGZsYWcgYWxsb3dzIG9uZSB0byB0dXJuIG9mZiB0aGUgc3RvbmV3YWxsaW5nIGFuZCBzZWUgd2hhdCBoYXBwZW5zLg0NLVggZmlsZW5hbWUNVXNlIHRoaXMgZmlsZSBmb3Igd3JpdGUgdGVsZW1ldHJ5IGluZm9ybWF0aW9uLiBUaGUgZmlsZSBjb250YWlucyAgdHJpcGxldHMgb2YgaW5mb3JtYXRpb246IA1CeXRlIG9mZnNldCwgc2l6ZSBvZiB0cmFuc2ZlciwgY29tcHV0ZSBkZWxheSBpbiBtaWxsaXNlY29uZHMuICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgaWYgb25lIGhhcyANdGFrZW4gYSBzeXN0ZW0gY2FsbCB0cmFjZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBpcyBvZiBpbnRlcmVzdC4gIFRoaXMgYWxsb3dzIElvem9uZSB0byByZXBsaWNhdGUgdGhlIEkvTyBvcGVyYXRpb25zIHRoYXQgdGhpcyBzcGVjaWZpYyBhcHBsaWNhdGlvbiBnZW5lcmF0ZXMgYW5kIHByb3ZpZGUgYmVuY2htYXJrIHJlc3VsdHMgZm9yIHRoaXMgZmlsZSBiZWhhdmlvci4gIChpZiBjb2x1bW4gMSBjb250YWlucyAjIHRoZW4gdGhlIGxpbmUgaXMgYSBjb21tZW50KQ0NLXkgIw1TZXQgbWluaW11bSByZWNvcmQgc2l6ZSAoaW4gS2J5dGVzKSBmb3IgYXV0byBtb2RlLiAgT25lIG1heSBhbHNvIHNwZWNpZnkgDS15ICNrIChzaXplIGluIEtieXRlcykgb3IgLXkgI20gKHNpemUgaW4gTWJ5dGVzKSBvciAteSAjZyAoc2l6ZSBpbiBHYnl0ZXMpLg1TZWUglnEgZm9yIHNldHRpbmcgbWF4aW11bSByZWNvcmQgc2l6ZS4NDS1ZIGZpbGVuYW1lDVVzZSB0aGlzIGZpbGUgZm9yIHJlYWQgdGVsZW1ldHJ5IGluZm9ybWF0aW9uLiBUaGUgZmlsZSBjb250YWlucyB0cmlwbGV0cyBvZiBpbmZvcm1hdGlvbjogDUJ5dGUgb2Zmc2V0LCBzaXplIG9mIHRyYW5zZmVyLCBjb21wdXRlIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4gIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCBpZiBvbmUgaGFzIA10YWtlbiBhIHN5c3RlbSBjYWxsIHRyYWNlIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGlzIG9mIGludGVyZXN0LiAgVGhpcyBhbGxvd3MgSW96b25lIHRvIHJlcGxpY2F0ZSB0aGUgSS9PIG9wZXJhdGlvbnMgdGhhdCB0aGlzIHNwZWNpZmljIGFwcGxpY2F0aW9uIGdlbmVyYXRlcyBhbmQgcHJvdmlkZSBiZW5jaG1hcmsgcmVzdWx0cyBmb3IgdGhpcyBmaWxlIGJlaGF2aW9yLiAoaWYgY29sdW1uIDEgY29udGFpbnMgIyB0aGVuIHRoZSBsaW5lIGlzIGEgY29tbWVudCkNDS16DVVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAtYSB0byB0ZXN0IGFsbCBwb3NzaWJsZSByZWNvcmQgc2l6ZXMuIE5vcm1hbGx5IElvem9uZSBvbWl0cyB0ZXN0aW5nIA1vZiBzbWFsbCByZWNvcmQgc2l6ZXMgZm9yIHZlcnkgbGFyZ2UgZmlsZXMgd2hlbiB1c2VkIGluIGZ1bGwgYXV0b21hdGljIG1vZGUuICBUaGlzIG9wdGlvbiBmb3JjZXMgDUlvem9uZSB0byBpbmNsdWRlIHRoZSBzbWFsbCByZWNvcmQgc2l6ZXMgaW4gdGhlIGF1dG9tYXRpYyB0ZXN0cyBhbHNvLg0NLVoNRW5hYmxlIG1peGluZyBtbWFwIEkvTyBhbmQgZmlsZSBJL08uDQ0tK20gZmlsZW5hbWUNVXNlIHRoaXMgZmlsZSB0byBvYnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gb2YgdGhlIGNsaWVudHMgZm9yIGNsdXN0ZXIgdGVzdGluZy4gVGhlIGZpbGUgY29udGFpbnMgb25lIGxpbmUgZm9yIGVhY2ggY2xpZW50LiBFYWNoIGxpbmUgaGFzIHRocmVlIGZpZWxkcy4gVGhlIGZpZWxkcyBhcmUgc3BhY2UgZGVsaW1pdGVkLiBBICMgc2lnbiBpbiBjb2x1bW4gemVybyBpcyBhIGNvbW1lbnQgbGluZS4gVGhlIGZpcnN0IGZpZWxkIGlzIHRoZSBuYW1lIG9mIHRoZSBjbGllbnQuIFRoZSBzZWNvbmQgZmllbGQgaXMgdGhlIHBhdGgsIG9uIHRoZSBjbGllbnQsIGZvciB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgSW96b25lIHdpbGwgZXhlY3V0ZS4gVGhlIHRoaXJkIGZpZWxkIGlzIHRoZSBwYXRoLCBvbiB0aGUgY2xpZW50LCBmb3IgdGhlIGV4ZWN1dGFibGUgSW96b25lLg1UbyB1c2UgdGhpcyBvcHRpb24gb25lIG11c3QgYmUgYWJsZSB0byBleGVjdXRlIGNvbW1hbmRzIG9uIHRoZSBjbGllbnRzIHdpdGhvdXQgYmVpbmcgY2hhbGxlbmdlZCBmb3IgYSBwYXNzd29yZC4gSW96b25lIHdpbGwgc3RhcnQgcmVtb3RlIGV4ZWN1dGlvbiBieSB1c2luZyCTcnNolC4NDS0rbg1ObyByZXRlc3RzIHNlbGVjdGVkLiAgVXNlIHRoaXMgdG8gcHJldmVudCByZXRlc3RzIGZyb20gcnVubmluZy4gDQ0tK04NTm8gdHJ1bmNhdGluZyBvciBkZWxldGluZyBvZiBwcmV2aW91cyB0ZXN0IGZpbGUgYmVmb3JlIHRoZSBzZXF1ZW50aWFsIHdyaXRlIHRlc3QuIFVzZWZ1bCBvbmx5IGFmdGVyIC13IGlzIHVzZWQgaW4gcHJldmlvdXMgY29tbWFuZCB0byBsZWF2ZSB0aGUgdGVzdCBmaWxlIGluIHBsYWNlIGZvciByZXVzZS4gIFRoaXMgZmxhZyBpcyBvZiBsaW1pdGVkIHVzZSwgd2hlbiBhIHNpbmdsZSByZXRlc3QgaXMgbm90IGVub3VnaCwgb3IgdG8gZWFzaWx5IGNvbnRyb2wgd2hlbiBzZXF1ZW50aWFsIHdyaXRlIHJldGVzdHMgb2NjdXIgd2l0aG91dCBmaWxlIHRydW5jYXRpb24gb3IgZGVsZXRpb24uDQ0tK3UNRW5hYmxlIENQVSB1dGlsaXphdGlvbiBtb2RlLiANDS0rZA1FbmFibGUgZGlhZ25vc3RpYyBtb2RlLiBJbiB0aGlzIG1vZGUgZXZlcnkgYnl0ZSBpcyB2YWxpZGF0ZWQuIFRoaXMgaXMgaGFuZHkgaWYgb25lIHN1c3BlY3RzIGEgYnJva2VuIEkvTyBzdWJzeXN0ZW0uDQ0tK3AgIHBlcmNlbnRfcmVhZA1TZXQgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHRocmVhZC9wcm9jZXNzZXMgdGhhdCB3aWxsIHBlcmZvcm0gcmFuZG9tIHJlYWQgdGVzdGluZy4gT25seSB2YWxpZCBpbiB0aHJvdWdocHV0IG1vZGUgYW5kIHdpdGggbW9yZSB0aGFuIDEgcHJvY2Vzcy90aHJlYWQuIA0NLStyDUVuYWJsZSBPX1JTWU5DIGFuZCBPX1NZTkMgZm9yIGFsbCBJL08gdGVzdGluZy4gDQ0tK3QNRW5hYmxlIG5ldHdvcmsgcGVyZm9ybWFuY2UgdGVzdC4gUmVxdWlyZXMgLSttDQ0tK0ENRW5hYmxlIG1hZHZpc2UuIDAgPSBub3JtYWwsIDE9cmFuZG9tLCAyPXNlcXVlbnRpYWwsIDM9ZG9udG5lZWQsIDQ9d2lsbG5lZWQuDUZvciB1c2Ugd2l0aCBvcHRpb25zIHRoYXQgYWN0aXZhdGUgbW1hcCgpIGZpbGUgSS9PLiBTZWU6IC1CDQwNV2hhdCBjYW4gSSBzZWU6DQ1UaGUgZm9sbG93aW5nIGFyZSBzb21lIGdyYXBocyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGZyb20gdGhlIElvem9uZSBvdXRwdXQgZmlsZXMuDQgICAgICAgIAQ0NRnJvbSB0aGUgZ3JhcGggYWJvdmUgb25lIGNhbiBjbGVhcmx5IHNlZSB0aGUgYnVmZmVyIGNhY2hlIGhlbHBpbmcgb3V0IGZvciBmaWxlIHNpemVzIHRoYXQgYXJlIGxlc3MgdGhhbiAyNTZNQiBidXQgYWZ0ZXIgdGhhdCB0aGUgYWN0dWFsIGRpc2sgSS9PIHNwZWVkIGNhbiBiZSBzZWVuLiBBbHNvIG5vdGUgdGhhdCB0aGUgcHJvY2Vzc29yIGNhY2hlIGVmZmVjdHMgY2FuIGJlIHNlZW4gZm9yIGZpbGUgc2l6ZXMgb2YgMTYgS2J5dGVzIHRvIDFNYnl0ZS4gDQgICAgICAgIAQ1UaGUgZ3JhcGggYWJvdmUgaXMgZGlzcGxheWluZyB0aGUgaW1wYWN0IG9mIHJlLXJlYWRpbmcgYSBmaWxlLiBOb3RpY2UgdGhhdCB0aGUgcHJvY2Vzc29yIGNhY2hlIGlzIG5vdyB2ZXJ5IGltcG9ydGFudCBhbmQgY2F1c2VzIHRoZSBzaGFycCBwZWFrLiBUaGUgbmV4dCBwbGF0ZWF1IHRvIHRoZSByaWdodCBpcyBidWZmZXIgY2FjaGUgYW5kIGZpbmFsbHkgYWJvdmUgMjU2TUIgdGhlIGZpbGUgbm8gbG9uZ2VyIGZpdHMgaW4gdGhlIGJ1ZmZlciBjYWNoZSBhbmQgcmVhbCBzcGluZGxlIHNwZWVkcyBjYW4gYmUgc2Vlbi4NDQENDVRoZSBncmFwaCBhYm92ZSB3YXMgY3JlYXRlZCBieSBydW5uaW5nIElvem9uZSBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlbiBncmFwaGluZyB0aGUgY29tYmluYXRpb24gb2YgdGhlIHJlc3VsdHMuIEhlcmUgdGhlIGdyYXBoIGlzIHNob3dpbmcgdGhlIHRocm91Z2hwdXQgcGVyZm9ybWFuY2UgYXMgYSBmdW5jdGlvbiBvZiBwcm9jZXNzZXMgYW5kIG51bWJlciBvZiBkaXNrcyBwYXJ0aWNpcGF0aW5nIGluIGEgZmlsZXN5c3RlbS4gKGRpc2sgc3RyaXBpbmcpICBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgb24gdGhpcyBzeXN0ZW0gYXMgb25lIGFkZHMgZGlza3MgdGhlIHRocm91Z2hwdXQgaW5jcmVhc2VzLiBOb3QgYWxsIHBsYXRmb3JtcyBzY2FsZSBzbyB3ZWxsLg0ICAgICAgBDQ0NVGhlIGdyYXBoIGFib3ZlIHNob3dzIHNpbmdsZSBzdHJlYW0gcGVyZm9ybWFuY2Ugd2hlcmUgZmlsZSBzaXplIGFuZCByZXF1ZXN0IHNpemUgYXJlIGNoYW5nZWQuIFRoZSBwbGFjZSBvbiB0aGUgbG93ZXIgcmlnaHQgdGhhdCB0b3VjaGVzIHRoZSBmbG9vciBvZiB0aGUgZ3JhcGggaXMgbm90IGFjdHVhbCBkYXRhLiBFeGNlbCBncmFwaHMgZW1wdHkgY2VsbHMgYXMgY29udGFpbmluZyBhIHplcm8uIFRoaXMgcnVuIHdhcyB0YWtlbiB3aXRoIHRoZSCWYSBvcHRpb24uIElmIG9uZSB1c2VkIHRoZSCWQSBvcHRpb24gdGhlbiB0aGUgYXJlYSB0aGF0IHdhcyBub3QgdGVzdGVkIHdvdWxkIGhhdmUgYmVlbiB0ZXN0ZWQgYW5kIGhhZCByZWFsIHZhbHVlcy4gTm9ybWFsbHkgdGhpcyBpcyBub3QgYSBkZXNpcmFibGUgYXJlYSB0byB0ZXN0IGJlY2F1c2UgaXQgaXMgdmVyeSB0aW1lIGNvbnN1bWluZyB0byB3cml0ZSBhIDUxMk1CIGZpbGUgaW4gNGsgdHJhbnNmZXIgc2l6ZXMuICBUaGUglmEgb3B0aW9uIGluIElvem9uZSB0ZWxscyBJb3pvbmUgdG8gZGlzY29udGludWUgdXNlIG9mIHRyYW5zZmVyIHNpemVzIGxlc3MgdGhhbiA2NGsgb25jZSB0aGUgZmlsZSBzaXplIGlzIDMyTUIgb3IgYmlnZ2VyLiBUaGlzIHNhdmVzIHF1aXRlIGEgYml0IG9mIHRpbWUuICBOb3RpY2UgdGhlIHJpZGdlIHRoYXQgcnVucyBmcm9tIHRoZSB0b3AgbGVmdCB0byB0aGUgbG93ZXIgcmlnaHQgZG93biB0aGUgY2VudGVyIG9mIHRoZSBncmFwaC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVxdWVzdCBzaXplIGZpdHMgaW4gdGhlIHByb2Nlc3NvciBjYWNoZS4gIEZvciBmaWxlIHNpemVzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcHJvY2Vzc29yIGNhY2hlIHlvdSBjYW4gc2VlIHRoZSByaXNlIGluIHBlcmZvcm1hbmNlIGFzIHdlbGwuIFdoZW4gYm90aCB0aGUgZmlsZSBzaXplIGFuZCB0aGUgdHJhbnNmZXIgc2l6ZSBpcyBsZXNzIHRoYW4gdGhlIHByb2Nlc3NvciBjYWNoZSBpdCByaXNlcyBldmVuIGhpZ2hlci4gQWx0aG91Z2ggaW50ZXJlc3RpbmcgdG8gc2VlLCBpdCBpcyB1bmxpa2VseSB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gZ2V0IGFwcGxpY2F0aW9ucyB0byBuZXZlciB3cml0ZSBmaWxlcyB0aGF0IGFyZSBiaWdnZXIgdGhhbiB0aGUgcHJvY2Vzc29yIGNhY2hlICggSG93ZXZlciBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBnZXQgYXBwbGljYXRpb25zIHRvIHRyeSB0byByZS11c2UgYnVmZmVycyBhbmQga2VlcCB0aGUgYnVmZmVyIHNpemUgc21hbGxlciB0aGFuIHRoZSBwcm9jZXNzb3IgY2FjaGUgc2l6ZS4NDAgICAgICAgIDQgICAgNDVRoZSBncmFwaCBhYm92ZSBpcyBhbiBleGFtcGxlIG9mIGEgcmVhbCBzeXN0ZW0gd2l0aCBzb21lIGludGVyZXN0aW5nIJNvcHRpbWl6YXRpb25zlC4gSGVyZSBvbmUgY2FuIHNlZSB0aGF0IHRoZXJlIGFyZSBzb21lIGZpbGUgc2l6ZXMgYW5kIHNvbWUgcmVjb3JkIHNpemVzIHRoYXQgaGF2ZSB2ZXJ5IGJhZCBwZXJmb3JtYW5jZS4gTm90aWNlIHRoZSBwZXJmb3JtYW5jZSBkaXAgYXQgcmVjb3JkIHNpemVzIG9mIDEyOEtieXRlcy4gKEFub21hbHkgIzEpIFRoZXJlIGlzIGFsc28gYSBkcm9wb2ZmIGZvciBmaWxlIHNpemVzIG9mICA4IE1CIGFuZCBsYXJnZXIuIFRoZSBkcm9wb2ZmIGZvciBmaWxlcyBncmVhdGVyIHRoYW4gOE1CIGlzIHZlcnkgaW50ZXJlc3Rpbmcgc2luY2UgdGhpcyBtYWNoaW5lIGhhcyAxNiBHQiBvZiBtZW1vcnkgYW5kIGFuIDhHQiBidWZmZXIgY2FjaGUuIFRoaXMgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgdHVuaW5nIGZvciBhIHNwZWNpZmljIGFwcGxpY2F0aW9uLiBJZiB0aGUgcG9vciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBldmVyIGluc3RhbGxzIGFuIGFwcGxpY2F0aW9uIHRoYXQgbGlrZXMgdG8gcmVhZCBvciB3cml0ZSBmaWxlcyBpbiBhIHJlY29yZCBzaXplIG9mIDEyOCBLYnl0ZXMgdG8gMSBNYnl0ZSBoaXMgdXNlcnMgd2lsbCBwcm9iYWJseSB0YWtlIGhpbSBvdXQgYmFjayBmb3IgYSBjb25mZXJlbmNlLiBJZiB0aGUgc3lzdGVtIHdvdWxkIGhhdmUgYmVlbiBjaGFyYWN0ZXJpemVkIGJlZm9yZSBpdCB3YXMgcHVyY2hhc2VkIGl0IHdvdWxkIG5ldmVyIGhhdmUgbWFkZSBpdCBpbnRvIHRoZSBidWlsZGluZy4NDUFub3RoZXIgdHlwZSBvZiBncmFwaCB0aGF0IGNhbiBiZSBwcm9kdWNlZCBpcyB0aGUgTGF0ZW5jeSBncmFwaC4gV2hlbiB0aGUgLVEgb3B0aW9uIGlzIHVzZWQgSW96b25lIHdpbGwgZ2VuZXJhdGUgZm91ciAuZGF0IGZpbGVzLiBSb2wuZGF0LCB3b2wuZGF0LCByd29sLmRhdCBhbmQgcnJvbC5kYXQuIFRoZXNlIGFyZSByZWFkIG9mZnNldCBsYXRlbmN5LCB3cml0ZSBvZmZzZXQgbGF0ZW5jeSwgcmV3cml0ZSBvZmZzZXQgbGF0ZW5jeSBhbmQgcmVyZWFkIG9mZnNldCBsYXRlbmN5LiBUaGVzZSBmaWxlcyBjYW4gYmUgaW1wb3J0ZWQgaW50byBFeGNlbCBhbmQgdGhlbiBncmFwaGVkLiANVGhlIGxhdGVuY3kgdmVyc3VzIG9mZnNldCBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgZm9yIHNlZWluZyBpZiB0aGVyZSBhcmUgYW55IHBhcnRpY3VsYXIgb2Zmc2V0cyBpbiBhIGZpbGUgdGhhdCBoYXZlIGhpZ2ggbGF0ZW5jaWVzLiBUaGVzZSBoaWdoIGxhdGVuY2llcyBjYW4gYmUgY2F1c2VkIGJ5IGEgdmFyaWV0eSBvZiBjYXVzZXMuIEFuIGV4YW1wbGUgd291bGQgYmUgaWYgdGhlIGZpbGUgc2l6ZSBpcyBqdXN0IGEgYml0IGJpZ2dlciB0aGFuIHRoZSBidWZmZXIgY2FjaGUgc2l6ZS4gVGhlIGZpcnN0IHRpbWUgdGhlIGZpbGUgaXMgd3JpdHRlbiB0aGUgbGF0ZW5jeSB3aWxsIGJlIGxvdyBmb3IgZWFjaCB0cmFuc2Zlci4gVGhpcyBpcyBiZWNhdXNlIHRoZSB3cml0ZXMgYXJlIGdvaW5nIGludG8gdGhlIGJ1ZmZlciBjYWNoZSBhbmQgdGhlIGFwcGxpY2F0aW9uIGlzIGFsbG93ZWQgdG8gY29udGludWUgaW1tZWRpYXRlbHkuIFRoZSBzZWNvbmQgdGltZSB0aGUgZmlsZSBpcyB3cml0dGVuIHRoZSBsYXRlbmNpZXMgd2lsbCBiZSB2ZXJ5IGhpZ2guIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGJ1ZmZlciBjYWNoZSBpcyBub3cgY29tcGxldGVseSBmdWxsIG9mIGRpcnR5IGRhdGEgdGhhdCBtdXN0IGJlIHdyaXR0ZW4gYmVmb3JlIHRoZSBidWZmZXIgY2FuIGJlIHJldXNlZC4gVGhlIHJlYXNvbiB0aGF0IHRoaXMgb2NjdXJzIHdoZW4gdGhlIGZpbGUgaXMgYmlnZ2VyIHRoYW4gdGhlIGJ1ZmZlciBjYWNoZSBpcyBiZWNhdXNlIHRoZSB3cml0ZSB0byB0aGUgZmlyc3QgYmxvY2sgb24gdGhlIHJld3JpdGUgY2FzZSB3aWxsIG5vdCBmaW5kIHRoZSBibG9jayBpbiB0aGUgYnVmZmVyIGNhY2hlIGFuZCB3aWxsIGJlIGZvcmNlZCB0byBjbGVhbiBhIGJ1ZmZlciBiZWZvcmUgdXNpbmcgaXQuIFRoZSBjbGVhbmluZyB3aWxsIHRha2UgdGltZSBhbmQgd2lsbCBjYXVzZSBhIGxvbmdlciBsYXRlbmN5IGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuIEFub3RoZXIgZXhhbXBsZSBpcyB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZnJvbSBhIHJlbW90ZSBtYWNoaW5lLiBUaGUgbGF0ZW5jeSBncmFwaHMgY2FuIGhlbHAgdG8gaWRlbnRpZnkgaGlnaCBsYXRlbmNpZXMgZm9yIGZpbGVzIHRoYXQgYXJlIGJlaW5nIGFjY2Vzc2VkIG92ZXIgdGhlIG5ldHdvcmsuICBUaGUgZm9sbG93aW5nIGFyZSBhIGZldyBsYXRlbmN5IGdyYXBocyBmb3IgZmlsZSBJL08gb3ZlciBhbiBORlMgdmVyc2lvbiAzIGZpbGVzeXN0ZW0uDQ0MDQ0IDQgNDQgNCA0NSW4gdGhlIHJlLXJlYWQgbGF0ZW5jeSBncmFwaCBvbmUgY2FuIGNsZWFybHkgc2VlIHRoZSBjbGllbnQgc2lkZSBjYWNoZSB0aGF0IGlzIGluIE5GUyBWZXJzaW9uIDMuIFRoZSByZXJlYWQgbGF0ZW5jaWVzIGFyZSBjbGVhcmx5IG5vdCB0aGUgbGF0ZW5jaWVzIHRoYXQgb25lIHdvdWxkIGdldCBpZiB0aGUgcmVhZHMgYWN0dWFsbHkgd2VudCB0byB0aGUgTkZTIHNlcnZlciBhbmQgYmFjay4NDVJ1biBydWxlczoNDUlmIHlvdSB3aXNoIHRvIGdldCBhY2N1cmF0ZSByZXN1bHRzIGZvciB0aGUgZW50aXJlIHJhbmdlIG9mIHBlcmZvcm1hbmNlIGZvciBhIHBsYXRmb3JtIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtYXhpbXVtIGZpbGUgc2l6ZSB0aGF0IHdpbGwgYmUgdGVzdGVkIGlzIGJpZ2dlciB0aGFuIHRoZSBidWZmZXIgY2FjaGUuIElmIHlvdSBkb24ndCBrbm93IGhvdyBiaWcgdGhlIGJ1ZmZlciBjYWNoZSBpcywgb3IgaWYgaXQgaXMgYSBkeW5hbWljIGJ1ZmZlciBjYWNoZSB0aGVuIGp1c3Qgc2V0IHRoZSBtYXhpbXVtIGZpbGUgc2l6ZSB0byBiZSBncmVhdGVyIHRoYW4gdGhlIHRvdGFsIHBoeXNpY2FsIG1lbW9yeSB0aGF0IGlzIGluIHRoZSBwbGF0Zm9ybS4gDUluIGdlbmVyYWwgeW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aHJlZSBvciBmb3VyIHBsYXRlYXVzLiAgDQlGaWxlIHNpemUgZml0cyBpbiBwcm9jZXNzb3IgY2FjaGUuDQlGaWxlIHNpemUgZml0cyBpbiBidWZmZXIgY2FjaGUNCUZpbGUgc2l6ZSBpcyBiaWdnZXIgdGhhbiBidWZmZXIgY2FjaGUuDVlvdSBtYXkgc2VlIGFub3RoZXIgcGxhdGVhdSBpZiB0aGUgcGxhdGZvcm0gaGFzIGEgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHByb2Nlc3NvciBjYWNoZXMuICBJZiB5b3UgZG9uJ3Qgc2VlIGF0IGxlYXN0IDMgcGxhdGVhdXMgdGhlbiB5b3UgcHJvYmFibHkgaGF2ZSB0aGUgbWF4aW11bSBmaWxlIHNpemUgc2V0IHRvbyBzbWFsbC4gSW96b25lIHdpbGwgZGVmYXVsdCB0byBhIG1heGltdW0gZmlsZSBzaXplIG9mIDUxMiBNYnl0ZXMuIFRoaXMgaXMgZ2VuZXJhbGx5IHN1ZmZpY2llbnQgYnV0IGZvciBzb21lIHZlcnkgbGFyZ2Ugc3lzdGVtcyB5b3UgbWF5IG5lZWQgdG8gdXNlIHRoZSCWZyBvcHRpb24gdG8gaW5jcmVhc2UgdGhlIG1heGltdW0gZmlsZSBzaXplLiBTZWUgdGhlIGZpbGUgUnVuX3J1bGVzIGRvY3VtZW50IGluIHRoZSBkaXN0cmlidXRpb24gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uDQ1Tb3VyY2UgY29kZSBhdmFpbGFiaWxpdHkNDUlvem9uZSBpcyBhdmFpbGFibGUgZm9yIGZyZWUuIE9uZSBtaWdodCBjb25zaWRlciB1c2luZyBpdCBiZWZvcmUgeW91ciBjb21wYW55IHB1cmNoYXNlcyBpdHMgbmV4dCBwbGF0Zm9ybS4NDUFkZGl0aW9uYWwgbm90ZXMgb24gaG93IHRvIG1ha2UgdGhlIGdyYXBocw0NSW96b25lIHNlbmRzICBFeGNlbCBjb21wYXRpYmxlIG91dHB1dCB0byBzdGFuZGFyZCBvdXQuIFRoaXMgbWF5IGJlIHJlZGlyZWN0ZWQgdG8gYSBmaWxlIGFuZCB0aGVuIHByb2Nlc3NlZCB3aXRoIEV4Y2VsLiBUaGUgbm9ybWFsIG91dHB1dCBmb3IgSW96b25lIGFzIHdlbGwgYXMgdGhlIEV4Y2VsIHBvcnRpb24gYXJlIGluIHRoZSBzYW1lIG91dHB1dCBzdHJlYW0uICBTbyB0byBnZXQgdGhlIGdyYXBocyBvbmUgbmVlZHMgdG8gc2Nyb2xsIGRvd24gdG8gdGhlIEV4Y2VsIHBvcnRpb24gb2YgdGhlIGZpbGUgYW5kIGdyYXBoIHRoZSBkYXRhIGluIHRoYXQgc2VjdGlvbi4gVGhlcmUgYXJlIHNldmVyYWwgc2V0cyBvZiBncmFwaCBkYXRhLiAiV3JpdGVyICByZXBvcnQiIGlzIG9uZSBleGFtcGxlLiBXaGVuIGltcG9ydGluZyB0aGUgZmlsZSBiZSBzdXJlIHRvIHRlbGwgRXhjZWwgdG8gaW1wb3J0IHdpdGggImRlbGltaXRlZCIgYW5kIHRoZW4gY2xpY2sgbmV4dCwgdGhlbiBjbGljayBvbiB0aGUgInNwYWNlIGRlbGltaXRlZCIgYnV0dG9uLiAgVG8gZ3JhcGggdGhlIGRhdGEganVzdCBoaWdobGlnaHQgdGhlIHJlZ2lvbiBjb250YWluaW5nIHRoZSBmaWxlIHNpemUgYW5kIHJlY29yZCBzaXplIGFuZCB0aGVuIGNsaWNrIG9uIHRoZSBncmFwaCB3aXphcmQuIFRoZSB0eXBlIG9mIGdyYXBoIHVzZWQgaXMgIlN1cmZhY2UiLiBXaGVuIHRoZSBuZXh0IGRpYWxvZyBib3ggcG9wcyB1cCB5b3UgbmVlZCB0byBzZWxlY3QgIkNvbHVtbnMiLiBBZnRlciB0aGF0IHRoZSByZXN0IHNob3VsZCBiZSBzdHJhaWdodCBmb3J3YXJkLg0NDUNvbnRyaWJ1dG9yczogIGh0dHA6Ly93d3cuaW96b25lLm9yZw1PcmlnaW5hbCBBdXRob3I6IFdpbGxpYW0gRC4gTm9yY290dC4gICAJd25vcmNvdHRAdXMub3JhY2xlLmNvbQ1GZWF0dXJlcyAmIGV4dGVuc2lvbnM6IERvbiBDYXBwcyAgCQljYXBwc0Bpb3pvbmUub3JnDQ0NQ1BVIGNhY2hlIGVmZmVjdA0NQnVmZmVyIGNhY2hlIGVmZmVjdA0NSS9PIHBlcmZvcm1hbmNlIGFmdGVyIGNhY2hlcyBhcmUgZXhjZWVkZWQNDU5vdCBtZWFzdXJlZA0NQ1BVIGNhY2hlIGVmZmVjdA0NSS9PIHBlcmZvcm1hbmNlIGFmdGVyIGNhY2hlcyBhcmUgZXhjZWVkZWQNDU5vdCBtZWFzdXJlZA0NQ1BVIGNhY2hlIGVmZmVjdA0NTm90IG1lYXN1cmVkDQ1CdWZmZXIgY2FjaGUgZWZmZWN0DQ1CdWZmZXIgY2FjaGUgZWZmZWN0DQ1Bbm9tYWx5ICMxDQ1DUFUgY2FjaGUgZWZmZWN0DQ1CdWZmZXIgY2FjaGUgZWZmZWN0DQ0NTm90IG1lYXN1cmVkDQ1Bbm9tYWx5ICMyDQ0NDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAcKAACaCgAAzg8AANgPAACjFQAApRUAAAcWAABaFgAAdhYAABQbAAAVGwAAFhsAABsbAABRHQAAWR0AAG4eAAByHgAAtx4AAL4eAADmHwAA8R8AABwhAAAoIQAAWCIAAGIiAACIJAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4EEgASAAEACwEPAAcAAAAAAAAAAAAEAAgAAACYAAAAngAAAJ4AAACeAAAAngAAAJ4AAACeAAAAngAAAJ4AAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA+AgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAqAAAADYGAAA2BgAAFgAAADYGAAAGAAAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAuAAAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAAGgBAABIAQAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAACwAwAANgYAADIGAAAYAAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABABAAAUAQAAGAEAABwBAAAgAQAAJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAyBgAAKAIAANgBAADoAQAAIAQAADAEAABABAAA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AAAAAAABAAAAAAAAAAAA/////x8EAAAAAAAAAQAAAAAAAAAAAP////8hBAAAAAAAAAEAAAAAAAAAAAD/////IwQAAAAAAAABAAAAAAAAAAAA/////yUEAAAAAAAAAQAAAAAAAAAAAP////8pBAAAAAAAAAEAAAAAAAAAAAD/////KgQAAAAAAAABAAAAAAAAAAAA/////ywEAAAAAAAA/////wAAAAABAP////8AAAAAAAAAAAEAAAAAAAAAAAD/////MgQAAAAAAAABAAAAAAAAAAAA/////zQEAAAAAAAADgAAAAEAAAAAAP////8AAAAAAAAAAAAAAAASAAAAJwAAAFIAAABgAAAAcgAAAJ0AAACrAAAAvQAAAMsAAADgAAAA9QAAAAEBAAATAQAAKAEAACkBAAA3AQAAQwEAAEYBAAAAAAAAAAABAAAAAAACAAAAAAADAAAAAAAEAAAAAAAFAAAAAAAGAAAAAAAHAAAAAAAIAAAAAAAJAAAAAAAKAAAAAAALAAAAAAAMAAAAAAANAAAAAAAOAAAAAAAPAAAAAAAQAAAAAAD//wAAAAAAAAAA4IMAABEAALoAABAA/////wAIAADeSAAAyFwAADRxAADgiwAARgAAAE8AAABUAAAAWQAAAAAIAACzEQAAxRYAAGweAACtNAAArz0AAJ5CAABhRwAAKUwAAExQAACJUwAAe1kAANddAAABYgAATGgAAARuAABYfAAA/4kAAJuLAADgiwAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABQAAAAUQAAAFIAAABTAAAAVQAAAFYAAABXAAAAWAAAAFoAAABbAAAAXAAAAA8AAPDMAQAAAAAG8BgAAAACCAAAAgAAADYAAAABAAAAAQAAADcAAACfAAHwjAEAAGIAB/AkAAAABgZWiF1Lc2RIxcnCYxmGq7zw/wB1WwAAAAAAAP////8AAAAAYgAH8CQAAAAGBou4W0L0BG2m1vz+PeeZc7r/AKxdAAAAAAAA/////wAAAABiAAfwJAAAAAYGBxfRjU7mtjNx/cKRVSC80P8AcykAAAAAAAD/////AAAAAGIAB/AkAAAABgYsdyPA3kEqQs1uTlhO3tSv/wArOgAAAAAAAP////8AAAAAYgAH8CQAAAAGBvg52i0jK++qYXhSuxiHktn/AOVUAAABAAAAKroAAAAAAABiAAfwJAAAAAYGJ9ZKzAAXOg2iWH4fl9Bz0v8A1xYAAAEAAAAPDwEAAAAAAGIAB/AkAAAABgZsuil54ZXVtiBa74h+ezDd/wDTGAAAAQAAAOYlAQAAAAAAYgAH8CQAAAAGBr+sLmzPItNNST9G1choVAv/ALIdAAABAAAAuT4BAAAAAABiAAfwJAAAAAYGS8A7o0KSsZ/zrxzt2N1vCf8ANh4AAAEAAABrXAEAAAAAAEAAHvEQAAAA//8AAAAAAACAgIAA9wAAEAAPAALwKA8AABAACPAIAAAAJwAAADYEAAAPAAPwxg4AAA8ABPAoAAAAAQAJ8BAAAAAAAAAAAAAAAAAAAAAAAAAAAgAK8AgAAAAABAAABQAAAA8ABPBmAAAAsgQK8AgAAAAGBAAAAAoAAEMAC/AoAAAABEEFAAAABcEQAAAABgECAAAA/wEAAAgATQB5AEgAVABNAEwAMQAAABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAAdAAAAAAAR8AQAAAABAAAADwAE8HgAAACyBArwCAAAAAkEAAAACgAAQwAL8DQAAAAEQQYAAAAFwRwAAAAGAQIAAAD/AQAACAB3AHIAaQB0AGUAXwBsAGEAdABlAG4AYwB5AAAAIwAi8QwAAAC/AwAAAIA/BQAAAQAAABDwBAAAACIAAAAAABHwBAAAAAEAAAAPAATwfAAAALIECvAIAAAACwQAAAAKAABDAAvwOAAAAARBBwAAAAXBIAAAAAYBAgAAAP8BAAAIAHIAZQB3AHIAaQB0AGUAXwBsAGEAdABlAG4AYwB5AAAAIwAi8QwAAAC/AwAAAIA/BQAAAQAAABDwBAAAACMAAAAAABHwBAAAAAEAAAAPAATwdgAAALIECvAIAAAADAQAAAAKAABDAAvwMgAAAARBCAAAAAXBGgAAAAYBAgAAAP8BAAAIAHIAZQBhAGQAXwBsAGEAdABlAG4AYwB5AAAAIwAi8QwAAAC/AwAAAIA/BQAAAQAAABDwBAAAACQAAAAAABHwBAAAAAEAAAAPAATwegAAALIECvAIAAAADQQAAAAKAABDAAvwNgAAAARBCQAAAAXBHgAAAAYBAgAAAP8BAAAIAHIAZQByAGUAYQBkAF8AbABhAHQAZQBuAGMAeQAAACMAIvEMAAAAvwMAAACAPwUAAAEAAAAQ8AQAAAAlAAAAAAAR8AQAAAABAAAADwAE8FwAAABCAQrwCAAAAA8EAABACgAAUwAL8B4AAABEAQQAAAB/AQAAAQC/AQAAEADRAQEAAAD/ARgAGAATACLxBgAAAD8FAAABAAAAEPAEAAAABwAAAAAAEfAEAAAAAQAAAA8ABPBQAAAAogwK8AgAAAAQBAAAAAoAABMAC/AGAAAAgAAAAAEAEwAi8QYAAAA/BQAAAQAAABDwBAAAAAYAAAAAABHwBAAAAAEAAAAAAA3wBAAAAAAAAQAPAATwXAAAAEIBCvAIAAAAEQQAAEAKAABTAAvwHgAAAEQBBAAAAH8BAAABAL8BAAAQANEBAQAAAP8BEAAQABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAAFAAAAAAAR8AQAAAABAAAADwAE8FAAAACiDArwCAAAABMEAAAACgAAEwAL8AYAAACAAAAAAgATACLxBgAAAD8FAAABAAAAEPAEAAAABAAAAAAAEfAEAAAAAQAAAAAADfAEAAAAAAACAA8ABPBcAAAAQgEK8AgAAAAUBAAAwAoAAFMAC/AeAAAARAEEAAAAfwEAAAEAvwEAABAA0QEBAAAA/wEQABAAEwAi8QYAAAA/BQAAAQAAABDwBAAAAAMAAAAAABHwBAAAAAEAAAAPAATwUAAAAKIMCvAIAAAAFQQAAAAKAAATAAvwBgAAAIAAAAADABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAACAAAAAAAR8AQAAAABAAAAAAAN8AQAAAAAAAMADwAE8FwAAABCAQrwCAAAABcEAACACgAAUwAL8B4AAABEAQQAAAB/AQAAAQC/AQAAEADRAQEAAAD/ARAAEAATACLxBgAAAD8FAAABAAAAEPAEAAAAAQAAAAAAEfAEAAAAAQAAAA8ABPBQAAAAogwK8AgAAAAYBAAAAAoAABMAC/AGAAAAgAAAAAQAEwAi8QYAAAA/BQAAAQAAABDwBAAAAAAAAAAAABHwBAAAAAEAAAAAAA3wBAAAAAAABAAPAATwUAAAAKIMCvAIAAAAGQQAAAAKAAATAAvwBgAAAIAAAAAFABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAAPAAAAAAAR8AQAAAABAAAAAAAN8AQAAAAAAAUADwAE8FwAAABCAQrwCAAAABoEAABACgAAUwAL8B4AAABEAQQAAAB/AQAAAQC/AQAAEADRAQEAAAD/ARAAEAATACLxBgAAAD8FAAABAAAAEPAEAAAADgAAAAAAEfAEAAAAAQAAAA8ABPBQAAAAogwK8AgAAAAbBAAAAAoAABMAC/AGAAAAgAAAAAYAEwAi8QYAAAA/BQAAAQAAABDwBAAAAA0AAAAAABHwBAAAAAEAAAAAAA3wBAAAAAAABgAPAATwXAAAAEIBCvAIAAAAHAQAAMAKAABTAAvwHgAAAEQBBAAAAH8BAAABAL8BAAAQANEBAQAAAP8BEAAQABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAAMAAAAAAAR8AQAAAABAAAADwAE8FAAAACiDArwCAAAAB0EAAAACgAAEwAL8AYAAACAAAAABwATACLxBgAAAD8FAAABAAAAEPAEAAAACwAAAAAAEfAEAAAAAQAAAAAADfAEAAAAAAAHAA8ABPBcAAAAQgEK8AgAAAAeBAAAgAoAAFMAC/AeAAAARAEEAAAAfwEAAAEAvwEAABAA0QEBAAAA/wEQABAAEwAi8QYAAAA/BQAAAQAAABDwBAAAAAoAAAAAABHwBAAAAAEAAAAPAATwUAAAAKIMCvAIAAAAHwQAAAAKAAATAAvwBgAAAIAAAAAIABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAATAAAAAAAR8AQAAAABAAAAAAAN8AQAAAAAAAgADwAE8FwAAABCAQrwCAAAACAEAABACgAAUwAL8B4AAABEAQQAAAB/AQAAAQC/AQAAEADRAQEAAAD/ARAAEAATACLxBgAAAD8FAAABAAAAEPAEAAAAEgAAAAAAEfAEAAAAAQAAAA8ABPBQAAAAogwK8AgAAAAhBAAAAAoAABMAC/AGAAAAgAAAAAkAEwAi8QYAAAA/BQAAAQAAABDwBAAAABUAAAAAABHwBAAAAAEAAAAAAA3wBAAAAAAACQAPAATwXAAAAEIBCvAIAAAAIgQAAAAKAABTAAvwHgAAAEQBBAAAAH8BAAABAL8BAAAQANEBAQAAAP8BEAAQABMAIvEGAAAAPwUAAAEAAAAQ8AQAAAAUAAAAAAAR8AQAAAABAAAADwAE8FAAAACiDArwCAAAACMEAAAACgAAEwAL8AYAAACAAAAACgATACLxBgAAAD8FAAABAAAAEPAEAAAACQAAAAAAEfAEAAAAAQAAAAAADfAEAAAAAAAKAA8A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BwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAGwAHABsABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAHAAAAAAAWBQAAGAUAACUHAAAsBwAA+wcAAAAIAAATCAAAFwgAALsOAADBDgAAEg8AABgPAAB2DwAAfA8AAJgQAACeEAAAPBEAAEIRAACqEQAAsBEAANsRAADhEQAAQBIAAEYSAADJFQAAzxUAAHYYAAB7GAAAOhoAAD4aAACAGwAAhBsAAB0lAAAkJQAAiScAAJAnAADGJwAA1CcAABEqAAAXKgAA9CwAAPksAAAHLwAADC8AAG8vAAB1LwAAGDEAAB0xAAAPMgAAFTIAADczAAA7MwAAYTUAAGQ1AABlNQAAaDUAAIk1AACMNQAAkDUAAJE1AACoNQAArjUAALM1AADWNQAADzYAABI2AACsNgAArTYAAP82AAADNwAALjcAAC83AABdNwAAYTcAAPM3AAD1NwAAcjgAAHc4AADFOAAAyDgAACE5AAAjOQAAPzkAAEQ5AAB6OQAAfTkAAKY5AACsOQAA8jkAAPg5AAD+OQAABDoAAFc6AABeOgAA5zoAAOs6AAD3OgAA/ToAAEY7AABnOwAAozsAAKk7AAABPAAACTwAAFM8AABfPAAAnTwAAKM8AADxPAAA9DwAAEQ9AABLPQAAbD0AAI89AACQPQAAsT0AALI9AADIPQAA1z0AABY+AAAsPgAALz4AAIU+AACIPgAA4z4AAOU+AAC7PwAAvT8AAE1AAABTQAAApUAAAKlAAABQQQAAVUEAAGJCAACFQgAAiEQAAIpEAADSRAAAA0UAAJVGAACYRgAAUkcAAFhHAACtRwAAs0cAAB9IAABKSAAAg0gAALNIAADZSAAA30gAADJJAAA+SQAA9EkAAPpJAAC/SgAAyEoAAO1KAAD5SgAASksAAE1LAADjSwAA60sAAD9MAABGTAAA+EwAAPtMAABkTQAAZ00AAINNAACMTQAA204AACZPAACwTwAAuE8AAA1QAAARUAAAJ1AAAGpQAADKUAAAzlAAAORQAAAYUQAAL1EAAHpRAADeUQAA4lEAADlSAAA8UgAAkFIAAJZSAADgUgAAGVMAADBTAAB7UwAAg1QAAIdUAADyVAAAIVUAAH9VAACFVQAAeVYAAH1WAADWVgAA3VYAAIBXAACEVwAAilgAAI1YAABKWQAATVkAAKRZAACuWQAAAVoAAAVaAABbWgAAXVoAAPVaAAAHWwAAHlsAACVbAAB6WwAAf1sAAFFcAABTXAAA1FwAAB9dAAC0XQAAu10AABBeAAAVXgAA5l4AAOheAAA3XwAAO18AAHtfAAB9XwAA9mQAAABlAABYZQAAmmUAAHhmAAB9ZgAAnmYAAKJmAAAqagAALmoAAGZqAABqagAAtWsAALZrAACWbgAAm24AACZ7AAApewAAf4IAAISCAACbggAA4YMAAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcAMwAHADMABwAzAAcABwAAAAAAkQIAAJgCAAC7DgAAvA4AABIPAAATDwAAdg8AAHcPAACYEAAAmRAAADwRAAA9EQAAqhEAAKsRAABVGgAAhhwAAFI1AABeNQAAZDUAAJQ1AAAXQwAAJkMAADlDAAA7QwAATUMAAE5DAABkQwAAZUMAAL9iAABYZAAAeWQAAHpkAAB7ZAAAkWYAAMpvAADObwAAz28AANFvAADSbwAA0m8AANNvAADXbwAA2G8AANhvAADZbwAA2W8AAM5wAADbcAAASXIAAEpyAABVcgAAVnIAAFtyAABbcgAATX4AAE1+AACaggAAm4IAAKuCAACtggAAC4MAAAyDAABWgwAAV4MAAJqDAACbgwAArIMAAK2DAADegwAA4YMAAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAcABAADAAQAAwAEAAMABAADAAQAAwAEAAcAAQAwIIlkjjTK8P8P/w//D/8P/w//D/8P/w//DwEAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAACxgAAA+EOAQRhJj+FcYFAAE4BAZehDgEYISY/k9KAQBRSgEAbygAAQC38AEAAAAwIIlkAAAAAAAAAAAAAAAA////////AQAAAAAA//8BAAAAAAACAAAABAAAAAgAAADlAAAAAAAAAAEAAABUYI4A1DauAAAAAACbggAAnYIAAAAAAAABAAAA/0ACEAAAAAAAAADggwAAiAAAEABAAAD//wEA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAALVzdWcLhsQk5cIACss+a4wAAAA/AAAAAwAAAABAAAAaAAAAA8AAABwAAAABQAAAIgAAAAGAAAAkAAAABEAAACYAAAAFwAAAKAAAAALAAAAqAAAABAAAACwAAAAEwAAALgAAAAWAAAAwAAAAA0AAADIAAAADAAAANsAAAACAAAA5AQAAB4AAAAQAAAASGV3bGV0dC1QYWNrYXJkAAMAAADtAAAAAwAAAEIAAAADAAAAWYIAAAMAAAAAAAwACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAQAAAAcAAABJT3pvbmUADBAAAAIAAAAeAAAABgAAAFRpdGxlAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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XAEAAF0BAABeAQAAXwEAAGABAABhAQAAYgEAAGMBAABkAQAA/v///2YBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAG8BAABwAQAAcQEAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAB5AQAAegEAAHsBAAB8AQAAfQEAAH4BAAB/AQAAgAEAAIEBAACCAQAAgwEAAIQBAAD+////hgEAAIcBAACIAQAAiQEAAIoBAACLAQAAjAEAAP7///+OAQAAjwEAAJABAACRAQAAkgEAAJMBAACUAQAA/v////3////9/////f////3///+aAQAA/v////7////+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQH//////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAAAAAAAAAAAAYG3JQTx0ygGcAQAAgAAAAAAAAABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4AAABBTAEAAAAAADEAVABhAGIAbABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAIBAQAAAAYAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQEAAMA/AAAAAAAAVwBvAHIAZABEAG8AYwB1AG0AZQBuAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAgECAAAABQAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoXoBAAAAAAAFAFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUBAAAAEAAAAAAAAAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAA4AAIBBAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjQEAAAAQAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AQD+/wMKAAD/////BgkCAAAAAADAAAAAAAAARicAAABNaWNyb3NvZnQgT2ZmaWNlIFdvcmQgOTctMjAwMyBEb2N1bWVudAAKAAAATVNXb3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpb3pvbmUzXzM0Ny9kb2NzL1J1bl9ydWxlcy5kb2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMzI2MzI2ADAwMTE2MTAAMDAwMDAwNjQwMDAAMTEzNTU2NDA0MjEAMDE1NDIzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc2hlbmhhbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDPEeChsRrhAAAAAAAAAAAAAAAAAAAAAD4AAwD+/wkABgAAAAAAAAAAAAAAAQAAAC8AAAAAAAAAABAAADEAAAABAAAA/v///wAAAAAuAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7KXBAEcACQQAAAASvwAAAAAAABAAAAAAAAQAACYcAAAOAGJqYmqO2Y7ZAAAAAAAAAAAAAAAAAAAAAAAACQQWAB4qAADsswEA7LMBACYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8PAAAAAAAAAAAA//8PAAAAAAAAAAAA//8PAAAAAAAAAAAAAAAAAAAAAABdAAAAAACSAAAAAAAAAJIAAACSAAAAAAAAAJIAAAAAAAAAkgAAAAAAAACSAAAAAAAAAJIAAAAUAAAAAAAAAAAAAACmAAAAAAAAAKYAAAAAAAAApgAAAAAAAACmAAAAAAAAAKYAAAAMAAAAsgAAABwAAACmAAAAAAAAALYJAAC2AAAA4gAAAAAAAADiAAAAAAAAAOIAAAAAAAAA4gAAAAAAAADiAAAAAAAAAOIAAAAAAAAA4gAAAAAAAADiAAAAAAAAAHsJAAACAAAAfQkAAAAAAAB9CQAAAAAAAH0JAAAAAAAAfQkAAAAAAAB9CQAAAAAAAH0JAAAkAAAAbAoAAPQBAABgDAAAhAAAAKEJAAAVAAAAAAAAAAAAAAAAAAAAAAAAAJIAAAAAAAAA4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4gAAAAAAAADiAAAAAAAAAOIAAAAAAAAA4gAAAAAAAAChCQAAAAAAAKoBAAAAAAAAkgAAAAAAAACSAAAAAAAAAOIAAAAAAAAAAAAAAAAAAADiAAAAAAAAAOIAAAAAAAAAqgEAAAAAAACqAQAAAAAAAKoBAAAAAAAA4gAAAC4AAACSAAAAAAAAAOIAAAAAAAAAkgAAAAAAAADiAAAAAAAAAHsJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAAAAAAAApgAAAAAAAACSAAAAAAAAAJIAAAAAAAAAkgAAAAAAAACSAAAAAAAAAOIAAAAAAAAAewkAAAAAAACqAQAAJgQAAKoBAAAAAAAA0AUAAP4AAACrCAAAuAAAAJIAAAAAAAAAkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsJAAAAAAAA4gAAAAAAAADOAAAAFAAAAEAQDKXL/r4BpgAAAAAAAACmAAAAAAAAABABAACaAAAAYwkAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElvem9uZSBydW4gcnVsZXMNDUluIG9yZGVyIGZvciBJb3pvbmUgcmVzdWx0cyB0byBiZSBjb21wYXJhYmxlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBzb21lIGJhc2ljIHJ1bGVzIGJlIGZvbGxvd2VkLiBUaGUgaWRlYSBpcyB0aGF0IHNvbWVvbmUgc2hvdWxkIGJlIGFibGUgdG8gcmVwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMgZ2l2ZW4gdGhpcyByZXBvcnQuIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHJ1bGVzLiAgDQ1Gb3IgYnVmZmVyIGNhY2hlIHBlcmZvcm1hbmNlIGNvbXBhcmlzb25zOg0NRm9yIHNpbmdsZSBzdHJlYW0gcmVzdWx0cywgYmUgc3VyZSB0aGUgZmlsZSBzaXplIGlzIHNtYWxsZXIgdGhhbiB0aGUgYnVmZmVyIGNhY2hlLiBGb3IgdGhyb3VnaHB1dCByZXN1bHRzLCBiZSBzdXJlIHRoZSBhZ2dyZWdhdGUgb2YgZmlsZXMgaXMgc21hbGxlciB0aGFuIHRoZSBidWZmZXIgY2FjaGUuIFRoZSBmaWxlIHNpemUgbXVzdCBhbHNvIGJlIGF0IGxlYXN0IDMgdGltZXMgdGhlIHNpemUgb2YgcHJvY2Vzc29yIGNhY2hlIGZvciAgYm90aCBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgcHJvY2Vzc29yIGNhY2hlcy4NDUZvciBkaXNrIHBlcmZvcm1hbmNlIGNvbXBhcmlzb25zOg0NRm9yIHNpbmdsZSBzdHJlYW0gcmVzdWx0cywgYmUgc3VyZSB0aGUgZmlsZSBzaXplIGlzIDMgdGltZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBjYWNoZS4gRm9yIHRocm91Z2hwdXQgcmVzdWx0cywgYmUgc3VyZSB0aGUgYWdncmVnYXRlIG9mIGZpbGVzIGlzIDMgdGltZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBjYWNoZS4NDUZvciBhdXRvbWF0aWMgbW9kZSAoLWEpDQ1CZSBzdXJlIHRoYXQgdGhlIGJ1ZmZlciBjYWNoZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4IE1lZ2FieXRlcy4gIFRoZSBiZW5jaG1hcmsgd2lsbCBhdXRvbWF0aWNhbGx5IHN0YXJ0IHdpdGggc21hbGwgZmlsZSBzaXplcyBhbmQgaW5jcmVtZW50IHVwIHRvIDUxMiBNZWdhYnl0ZXMuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0cyBjb250YWluIGJvdGggaW4gYW5kIG91dCBvZiBidWZmZXIgY2FjaGUgcmVzdWx0cy4gDQ1Gb3IgTkZTIHJlc3VsdHM6DVdoZW4gcHVibGlzaGluZyByZXN1bHRzIGZvciBORlMsIHRoZSBzeXN0ZW0gc3BlY2lmaWNhdGlvbiBkZXNjcmliZWQgYmVsb3cgZXhwYW5kcyB0byBpbmNsdWRlIHRoZSBjb21wbGV0ZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZGlzY2xvc3VyZSBvZiAgYWxsIG5ldHdvcmtpbmcgY29tcG9uZW50cyBhbmQgbG9hZCBnZW5lcmF0b3JzLg0NU3lzdGVtIHNwZWNpZmljYXRpb24gZGlzY2xvc3VyZToNDVJlcG9ydCBtdXN0IGluY2x1ZGU6IA1OdW1iZXIgb2YgY3B1cyBpbiB0aGUgc3lzdGVtDVRvdGFsIGFtb3VudCBvZiBtZW1vcnkgaW4gdGhlIHN5c3RlbQ1Ub3RhbCBhbW91bnQgb2YgYnVmZmVyIGNhY2hlIGluIHRoZSBzeXN0ZW0NVG90YWwgbnVtYmVyIG9mIGRpc2tzIGluIHRoZSBzeXN0ZW0NQ29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlIGxheW91dCBvZiB0aGUgZGlza3MgaW4gdGhlIHN5c3RlbQ1UeXBlIG9mIGNwdSwgY2xvY2sgc3BlZWQsIHByb2Nlc3NvciBjYWNoZSBzaXplcywgZXh0ZXJuYWwgY2FjaGUgc2l6ZXMNVHlwZSBvZiBkaXNrIGNvbnRyb2xsZXJzDU51bWJlciBvZiBkaXNrIGNvbnRyb2xsZXJzDVR5cGUgb2YgZGlza3MNSWYgdXNpbmcgc3RyaXBpbmcsIGluY2x1ZGUgYSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RyaXBlIGxheW91dA1Db21wbGV0ZSBjb21tYW5kIGxpbmUgdGhhdCB3YXMgaXNzdWVkIHdpdGggSW96b25lIGZvciB0aGUgZ2l2ZW4gcmVzdWx0Lg1WZXJzaW9uIG51bWJlciBvZiBJb3pvbmUgdXNlZCBmb3IgdGhlIHRlc3RzLg1WZXJzaW9uIG9mIHRoZSBPcGVyYXRpbmcgc3lzdGVtDUF2YWlsYWJpbGl0eSBkYXRlcyBvZiBhbGwgc29mdHdhcmUgYW5kIGhhcmR3YXJlIHVzZWQuDVR5cGUgb2YgZmlsZXN5c3RlbSBiZWluZyB1c2VkLg1Ub3RhbCBhbW91bnQgb2YgTlZSQU0gaW4gdGhlIHN5c3RlbS4gKGluY2x1ZGluZyB0aGUgZGlza3MsIGRpc2sgY29udHJvbGxlcnMpDURhdGUgd2hlbiB0ZXN0ZWQuDUFueSBvdGhlciBoYXJkd2FyZSB1c2VkIGluIHRoZSB0ZXN0Lg1SYXcgSW96b25lIG91dHB1dCBmaWxlIHdpdGggdGhlIC1SIG9wdGlvbiBlbmFibGVkLg1GaWxlc3lzdGVtcyB1bmRlciB0ZXN0IG11c3QgaGF2ZSBiZWVuIGNsZWFuZWQgKGZyZXNobHkgY3JlYXRlZCkgYmVmb3JlIHRoZSB0ZXN0IGJlZ2FuLg1NaW5pbXVtIHJlc3VsdHMgaW5jbHVkZSByZXN1bHRzIGZvcjogUmVhZCwgV3JpdGUsIFJlLXJlYWQsIFJlLXdyaXRlLCBCYWNrd2FyZCByZWFkLCBTdHJpZGVkIHJlYWQsIGFuZCBSYW5kb20gcmVhZC4gICBUaGUgcmVzdWx0cyBmb3IgbW1hcCwgdGhyZWFkcywgYW5kIGFzeW5jIEkvTyBhcmUgb3B0aW9uYWwgYXMgbm90IGFsbCB2ZW5kb3JzIHN1cHBvcnQgZXZlcnl0aGluZyB0aGF0IElvem9uZSBjYW4gdGVzdC4NQ29tcGlsZXIgb3B0aW9ucyB1c2VkIHRvIGNvbXBpbGUgSW96b25lLg1PcHRpb25zIHVzZWQgdG8gY3JlYXRlIHRoZSBmaWxlc3lzdGVtcy4NT3B0aW9ucyB1c2VkIHRvIG1vdW50IHRoZSBmaWxlc3lzdGVtcy4NTGlzdCBvZiBhbGwgdHVuYWJsZXMgdGhhdCB3ZXJlIGFwcGxpZWQgdG8gdGhlIHN5c3RlbS4NQ29tcGFueSBuYW1lIGlmIHB1Ymxpc2hpbmcgZm9yIGEgY29tcGFueS4NTmFtZSBvZiB0aGUgcGVyc29uIHRoYXQgcmFuIHRoZSBiZW5jaG1hcmsgYW5kIHRoZWlyIGVtYWlsIGFkZHJlc3MuDQ1PdGhlciByZXF1aXJlbWVudHM6DQ1UaGUgYmVuY2htYXJrIG1heSBub3QgYmUgbW9kaWZpZWQuIA1Zb3UgbWF5IHVzZSBhbnkgY29tcGlsZXIgb3B0aW9ucyB5b3Ugd2lzaC4gDUFueSB0dW5pbmcgdGhhdCBpcyBkb25lIHRoYXQgYmVuZWZpdHMgb25seSB0aGlzIGJlbmNobWFyayBpcyBub3QgcGVybWl0dGVkLiBUaGlzIGluY2x1ZGVzIHNwZWNpYWwgdHVuYWJsZXMgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0sIG9yIGFueSBjb21tYW5kcyBvciB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZCB0byBlbmhhbmNlIHRoZSByZXN1bHRzIG9mIElvem9uZSBhbmQgYXJlIG5vdCB1c2VkIGZvciByZWFsIGN1c3RvbWVyIG5lZWRzLiAgDVdoZW4gcnVubmluZyBJb3pvbmUgaW4gYW55IG1vZGUgdGhhdCBpcyBhdHRlbXB0aW5nIHRvIGZsdXNoIHRoZSBkYXRhIHRvIGRpc2ssIHRoZSBkYXRhIG11c3QgbWFrZSBpdCB0byBzdGFibGUgc3RvcmFnZSAod2hlcmUgc3RhYmxlIHN0b3JhZ2UgaXMgZGVmaW5lZCB0byBiZTogRGF0YSB3cml0dGVuIGlzIHJlY292ZXJhYmxlIGZvciBhIHBlcmlvZCBvZiBhdCBsZWFzdCBvbmUgd2VlayBvZiBwb3dlciBvdXRhZ2UuKQ1Vc2Ugb2YgaGFyZHdhcmUgb3Igc29mdHdhcmUgIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBmb3IgcHVyY2hhc2Ugd2l0aGluIGEgNiBtb250aCB0aW1lIHBlcmlvZCBpcyBub3QgcGVybWl0dGVkLg1Vc2Ugb2YgaGFyZHdhcmUvc29mdHdhcmUgdGhhdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IDYgbW9udGhzIGFmdGVyIHB1YmxpY2F0aW9uIGlzIG5vdCBwZXJtaXR0ZWQuDVRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBtdXN0IGJlIGluIG11bHRpdXNlciBtb2RlIHdpdGggYWxsIGRhZW1vbnMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBydW5uaW5nLg0NUmV2aWV3IG9mIHJlc3VsdHM6DQ1Vbmxpa2Ugb3RoZXIgYmVuY2htYXJrcywgdGhlcmUgaXMgbm8gcmV2aWV3IHJlcXVpcmVkIGZvciB0aGUgcmVzdWx0cyB0byBiZSBhY2NlcHRlZC4gIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMgd2h5IHRoaXMgaXMgbm90IG5lZWRlZC4NDVdlIGFyZSBhbGwgZ2VudGxlbWVuIGFuZCBsYWRpZXMgYW5kIGFsd2F5cyBhY3QgcHJvZmVzc2lvbmFsbHkuDVdlIGFsbCByZXNwZWN0IHRoZSBnb2xkZW4gcnVsZSBhbmQgdHJlYXQgb3RoZXJzIGFzIHdlIHdvdWxkIGxpa2UgdG8gYmUgdHJlYXRlZC4NSWYgeW91IGxpZSBvciBjaGVhdCwgeW91IHdpbGwgb25seSBkaXNjcmVkaXQgeW91cnNlbGYgYW5kIHlvdXIgY29tcGFueS4NVGhlcmUgaXMgbm8gd2F5IHlvdSB3b24ndCBnZXQgY2F1Z2h0LiBUaGUgYmVuY2htYXJrIGlzIHB1YmxpY2x5IGF2YWlsYWJsZSBmb3IgZnJlZS4gWW91ciBjdXN0b21lcnMgd2lsbCBkb3dubG9hZCBpdCBhbmQgY2hlY2sgdGhlIHBsYXRmb3JtIGJlZm9yZSB0aGV5IGFjY2VwdCB0aGUgbWFjaGluZSBvciBwYXkgZm9yIGl0Lg1JZiB5b3VyIGNvbXBhbnkgcHVibGlzaGVzIGJvZ3VzIHJlc3VsdHMgdGhhdCBjYW4gbm90IGJlIHJlcHJvZHVjZWQsIHRoaXMgbWF5IGJlIGludGVycHJldGVkIGFzIGZhbHNlIGFkdmVydGlzaW5nLiBXaG8ga25vd3MsIGl0IG1heSBldmVuIGdldCB5b3VyIGNvbXBhbnkgYSBuaWNlIGxhd3N1aXQgZnJvbSBhIGNvbXBldGl0b3IuDUluIGdlbmVyYWwsIGlmIHlvdSBmZWVsIGd1aWx0eSBhYm91dCB5b3VyIHJlc3VsdHMsIHRoZW4gZG9uJ3QgbWFrZSB0aGVtIGF2YWlsYWJsZSBmb3Igb3RoZXJzIHRvIHNlZS4NDUhvc3RpbGUgcHVibGljYXRpb25zOg1JbiB0aGVzZSB0aW1lcyBvZiByb2FkIHJhZ2UsIHNvbWV0aW1lcyBwZW9wbGUgd2lsbCBwdWJsaXNoIG5lZ2F0aXZlIHJlc3VsdHMgYWJvdXQgYSBwcm9kdWN0IHRoYXQgYXJlIG5vdCB0cnVlLiAgSW4gdGhlIGV2ZW50IHRoYXQgYW55IGNvbXBhbnkgb3IgcHJvZHVjdCBoYXMgYmVlbiBhdHRhY2tlZCB3aXRoIGJvZ3VzIHJlc3VsdHMsIHRoZSBjb21wYW55IG1heSBydW4gdGhlIGJlbmNobWFyayB0aGVtc2VsdmVzIGFuZCBwdWJsaXNoIGNvcnJlY3QgcmVzdWx0cy4gIFRoZSBpbmNvcnJlY3QgcmVzdWx0cyBtYXkgbm90IGJlIHJlbW92ZWQsIGJ1dCB0aGUgbmV3IHJlc3VsdHMgd2lsbCBiZSBhZGRlZC4gIEluIHRoZSBldmVudCB0aGF0IGEgcHVibGlzaGluZyBjb25mbGljdCBjb250aW51ZXMsIHRoZSB3ZWJtYXN0ZXIgb2YgdGhlIHJlc3VsdHMgcGFnZSBtYWludGFpbnMgdGhlIHJpZ2h0IHRvIGRlbGV0ZSBpbmFjY3VyYXRlIGhvc3RpbGUgcmVzdWx0cyBmcm9tIHRoZSBhcmNoaXZlLiBJbiB0aGUgZXZlbnQgb2YgaG9zdGlsZSBmbG9vZHMsIHRoZSB3ZWJtYXN0ZXIgb2YgdGhlIHJlc3VsdHMgcGFnZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gYmxvY2sgZnVydGhlciBwdWJsaWNhdGlvbnMgZnJvbSB0aGUgcGVyc29uL2NvbXBhbnkgdGhhdCBpcyBjb250aW51aW5nIHRoZSBhYnVzZS4gIEFueSBwZXJzb24vY29tcGFueSB0aGF0IGJlbGlldmVzIHRoZWlyIHByb2R1Y3QgaXMgYmVpbmcgc2xhbmRlcmVkIGlzIGZyZWUgdG8gcHVyc3VlIHRoZSBwZXJzb24vY29tcGFueSBmb3IgZGFtYWdlcy4gIFRoZSBJb3pvbmUgd2VibWFzdGVyLCBhdXRob3JzLCBzaXRlIG93bmVycywgYW5kIGZyaWVuZHMgYXJlIG5vdCBsaWFibGUgZm9yIGhvc3RpbGUgcHVibGljYXRpb25zLiAgVGhlIElvem9uZSByZXN1bHRzIHdlYiBwYWdlIGlzIGxpa2UgYSBjaGFsa2JvYXJkIGluIHRoZSBoYWxsd2F5IG9mIHRoZSBpbnRlcm5ldC4gVGhlIG1haW50YWluZXJzIHJlc2VydmUgdGhlIHJpZ2h0IHRvIHJlbW92ZSBncmFmZml0aSwgYnV0IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIHdoYXQgcGVvcGxlIG1heSB3cml0ZSBvbiBpdC4NDVdlYiBydWxlczoNVGhlIHdlYm1hc3RlciBvZiB0aGUgcmVzdWx0cyBwYWdlIHJlc2VydmVzIHRoZSByaWdodCB0byBibG9jayBwdWJsaWNhdGlvbiBvZiByZXN1bHRzIGlmIHRoZSBpbnRlbnQgb2YgdGhlIHB1YmxpY2F0aW9uIGlzIGhvc3RpbGUuICBIb3N0aWxpdHkgbWF5IHRha2UgbWFueSBmb3Jtcy4gIFB1YmxpY2F0aW9uIG9mIHJlc3VsdHMgdGhhdCBhcmUga25vd24gdG8gYmUgaW5hY2N1cmF0ZSwgZmxvb2RzIG9mIHB1YmxpY2F0aW9ucyBpbiBhbiBhdHRlbXB0IHRvIG92ZXJsb2FkIHRoZSB3ZWIgc2l0ZSwgcHVibGljYXRpb24gb2YgcmVzdWx0cyB0aGF0IGNvbnRhaW4gdmlydXNlcyBhcmUgYSBmZXcgZXhhbXBsZXMuICBJZiB0aGUgd2VibWFzdGVyIHBlcmNlaXZlcyB0aGUgaW50ZW50IHRvIGJlIGhv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ZQsAACEMAAApDAAADw0AABcNAAA9DQAASw0AAG4PAAB0DwAAbhMAAHUTAACOFQAAlhUAACgWAAAvFgAAbhcAAM0XAAAoGAAABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHAAQABwD//xQAAAAJAEQAbwBuACAAQwBhAHAAcABzACoAQwA6AFwARABBAFQAQQBcAE0AUwBcAEkAbwB6AG8AbgBlACAAYwBvAG0AcABhAHIAaQBzAG8AbgAgAHIAdQBuACAAcgB1AGwAZQBzAC4AZABvAGMACQBEAG8AbgAgAEMAYQBwAHAAcwAqAEMAOgBcAEQAQQBUAEEAXABNAFMAXABJAG8AegBvAG4AZQAgAGMAbwBtAHAAYQByAGkAcwBvAG4AIAByAHUAbgAgAHIAdQBsAGUAcwAuAGQAbwBjAAkARABvAG4AIABDAGEAcABwAHMAKgBDADoAXABEAEEAVABBAFwATQBTAFwASQBvAHoAbwBuAGUAIABjAG8AbQBwAGEAcgBpAHMAbwBuACAAcgB1AG4AIAByAHUAbABlAHMALgBkAG8AYwAJAEQAbwBuACAAQwBhAHAAcABzACoAQwA6AFwARABBAFQAQQBcAE0AUwBcAEkAbwB6AG8AbgBlACAAYwBvAG0AcABhAHIAaQBzAG8AbgAgAHIAdQBuACAAcgB1AGwAZQBzAC4AZABvAGMACQBEAG8AbgAgAEMAYQBwAHAAcwAqAEMAOgBcAEQAQQBUAEEAXABNAFMAXABJAG8AegBvAG4AZQAgAGMAbwBtAHAAYQByAGkAcwBvAG4AIAByAHUAbgAgAHIAdQBsAGUAcwAuAGQAbwBjAAkARABvAG4AIABDAGEAcABwAHMAKgBDADoAXABEAEEAVABBAFwATQBTAFwASQBvAHoAbwBuAGUAIABjAG8AbQBwAGEAcgBpAHMAbwBuACAAcgB1AG4AIAByAHUAbABlAHMALgBkAG8AYwAJAEQAbwBuACAAQwBhAHAAcABzACoAQwA6AFwARABBAFQAQQBcAE0AUwBcAEkAbwB6AG8AbgBlACAAYwBvAG0AcABhAHIAaQBzAG8AbgAgAHIAdQBuACAAcgB1AGwAZQBzAC4AZABvAGMABgBKAEMAYQBwAHAAcwAnAEMAOgBcAFQARQBNAFAAXABJAG8AegBvAG4AZQAgAGMAbwBtAHAAYQByAGkAcwBvAG4AIAByAHUAbgAgAHIAdQBsAGUAcwAuAGQAbwBjAAkARABvAG4AIABDAGEAcABwAHMAKgBDADoAXABEAEEAVABBAFwATQBTAFwASQBvAHoAbwBuAGUAIABjAG8AbQBwAGEAcgBpAHMAbwBuACAAcgB1AG4AIAByAHUAbABlAHMALgBkAG8AYwAJAEQAbwBuACAAQwBhAHAAcABzAC4AXABcAFIAUwBOAFAARQBSAEYAXABDAEEAUABQAFMAXABpAG8AegBvAG4AZQBfAHIAdQBuAF8AcgB1AGwAZQBzAFwAUgB1AG4AXwByAHUAbABlAHMALgBkAG8AYwAJAPM/TQMPAAkE/w//D/8P/w//D/8P/w//D/8PAQCaE6kSDwAJBP8P/w//D/8P/w//D/8P/w//DwEAKFTNGg8ACQT/D/8P/w//D/8P/w//D/8P/w8BAIRjxC0PAAkE/w//D/8P/w//D/8P/w//D/8PAQDjD/5ADwAJBP8P/w//D/8P/w//D/8P/w//DwEAqCdPVw8ACQT/D/8P/w//D/8P/w//D/8P/w8BAONYvmYPAAkE/w//D/8P/w//D/8P/w//D/8PAQAXFaJ5OrKimv8P/w//D/8P/w//D/8P/w//DwEADSFkeg8ACQT/D/8P/w//D/8P/w//D/8P/w8BAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAMQAAAPhGgBEYSY/hXGBQABaAEGbygAAgAAAC4AAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAxAAAA+EaAERhJj+FcYFAAFoAQZvKAACAAAALgABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAADEAAAD4RoARGEmP4VxgUAAWgBBm8oAAIAAAAuAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAMQAAAPhGgBEYSY/hXGBQABaAEGbygAAgAAAC4AAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAxAAAA+EaAERhJj+FcYFAAFoAQZvKAACAAAALgABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAADEAAAD4RoARGEmP4VxgUAAWgBBm8oAAIAAAAuAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAMQAAAPhGgBEYSY/hXGBQABaAEGbygAAgAAAC4AAQAAAAQAAQAAAAAAAAAAAAAAAAAAAAAAAxAAAA+E0AIRhJj+FcYFAAHQAgZvKAACAAAALgABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAADEAAAD4RoARGEmP4VxgUAAWgBBm8oAAIAAAAuAAkAAADjWL5mAAAAAAAAAAAAAAAAqCdPVwAAAAAAAAAAAAAAAPM/TQMAAAAAAAAAAAAAAACaE6kSAAAAAAAAAAAAAAAAhGPELQAAAAAAAAAAAAAAABcVonkAAAAAAAAAAAAAAAANIWR6AAAAAAAAAAAAAAAAKFTNGgAAAAAAAAAAAAAAAOMP/kAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////wkAAAAAAAAAAAAAAAAAAAAAAAAAAAD/QACAAQAAAAAAAAAAAECTFQEBALYAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAACYYAABQAAAIAEAAAAMAAABHFpABAAACAgYDBQQFAgMEAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAVABpAG0AZQBzACAATgBlAHcAIABSAG8AbQBhAG4AAAA1FpABAgAFBQECAQcGAgUHAAAAAAAAABAAAAAAAAAAAAAAAIAAAAAAUwB5AG0AYgBvAGwAAAAzJpABAAACCwYEAgICAgIEAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAQQByAGkAYQBsAAAAIgAEAHAIiBgAANACAABoAQAAAADKcjlGynI5RuFCOWYCAAEAAAB+AwAA6RMAAAEACgAAAAQAAxAqAAAAAAAAAAAAAAABAAEAAAABAAAAAAAAANQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUGwAe0ALQAgAAyMAAAEAAZAGQAAAAZAAAAcxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAD//xIAAAAAAAAAGwBJAG8AegBvAG4AZQAgAGMAbwBtAHAAYQByAGkAcwBvAG4AIAByAHUAbgAgAHIAdQBsAGUAcwAAAAAAAAAJAEQAbwBuACAAQwBhAHAAcABzAAkARABvAG4AIABDAGEAcABwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAQKAgAAAAAAAAAAAAAAAAAAAAAAAQAAAOCFn/L5T2gQq5EIACsns9kwAAAAiAEAABEAAAABAAAAkAAAAAIAAACYAAAAAwAAALwAAAAEAAAAyAAAAAUAAADcAAAABwAAAOgAAAAIAAAA/AAAAAkAAAAQAQAAEgAAABwBAAAKAAAAOAEAAAsAAABEAQAADAAAAFABAAANAAAAXAEAAA4AAABoAQAADwAAAHABAAAQAAAAeAEAABMAAACAAQAAAgAAAOQEAAAeAAAAHAAAAElvem9uZSBjb21wYXJpc29uIHJ1biBydWxlcwAeAAAAAQAAAABvem8eAAAACgAAAERvbiBDYXBwcwBwYR4AAAABAAAAAG9uIB4AAAALAAAATm9ybWFsLmRvdABhHgAAAAoAAABEb24gQ2FwcHMAAGEeAAAAAgAAADIAbiAeAAAAEwAAAE1pY3Jvc29mdCBXb3JkIDguMAB1QAAAAABGwyMAAAAAQAAAAACGXtAX+r4BQAAAAAC8TZjL/r4BQAAAAAC8TZjL/r4BAwAAAAEAAAADAAAAfgMAAAMAAADpEwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAD+////FwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAP7///8fAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAA/v///ycAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAD+/////f///zAAAAD+/////v////7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAjxyXy/6+AeAAJqXL/r4BMgAAAIAAAAAAAAAAMQBUAGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAgH/////BQAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAABAAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBlAG4AdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACAQEAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeKgAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIBAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAQAAAAAAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAADgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAABAAAAAAAAABAEMAbwBtAHAATwBiAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcEQAAAAAAAKjdQQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQIAoIzuQQAk3kEAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAAAEYYAAAATWljcm9zb2Z0IFdvcmQgRG9jdW1lbnQACgAAAE1TV29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==