Name: series-workflowjspvd Phase: Succeeded StartedAt: 2026-07-04 21:18:58 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[0] Phase: Succeeded StartedAt: 2026-07-04 21:18:58 +0000 UTC FinishedAt: 2026-07-04 21:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[0].run-triage Phase: Succeeded StartedAt: 2026-07-04 21:18:58 +0000 UTC FinishedAt: 2026-07-04 21:32:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "f31c00c377ccf07c85442712f7c940a855cb3371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "f31c00c377ccf07c85442712f7c940a855cb3371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC", "BPF_SYSCALL" ], "series_id": "0e76a95a-d39c-43c1-9f47-9ee40a5744b1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "bpf_binprm_set_interp", "search_binfmt_handler", "get_binfmt_handler", "load_misc_binary", "create_entry", "bm_register_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2JpbnBybV9zZXRfaW50ZXJwJiMzNDssCiAgICAmIzM0O3NlYXJjaF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtnZXRfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtjcmVhdGVfZW50cnkmIzM0OywKICAgICYjMzQ7Ym1fcmVnaXN0ZXJfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAmIzM5O0ImIzM5OyAoQlBGKSBoYW5kbGVyIHR5cGUgZm9yIGJpbmZtdF9taXNjLCBhbGxvd2luZyBCUEYgcHJvZ3JhbXMgdG8gbWF0Y2ggYmluYXJpZXMgYW5kIHNlbGVjdCBpbnRlcnByZXRlcnMuIFRoaXMgYWRkcyBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gYmluZm10X21pc2MgcmVnaXN0cmF0aW9uIGFuZCBiaW5hcnkgZXhlY3V0aW9uIHBhdGhzLCBhcyB3ZWxsIGFzIGEgbmV3IEJQRiBoZWxwZXIgZnVuY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmZiNDBiNDMxZmI1NTRlY2M0YTFhMjg1ODA2MjgxOWY0ZjU2YzQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgNCAyMTozMToxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xuaW5kZXggODQzNDlmY2I5M2YxM2EuLmNmNjY5OGQ1OWM5ZjA0IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X21pc2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X21pc2MuY1xuQEAgLTI5LDYgJiM0MzsyOSwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuIFxuICNpZmRlZiBERUJVR1xuQEAgLTQxLDEyICYjNDM7NDYsMTQgQEAgZW51bSB7XG4gXHRWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi9cbiB9O1xuIFxuLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTtcbiYjNDM7ZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XG4gI2RlZmluZSBNSVNDX0ZNVF9QUkVTRVJWRV9BUkdWMCAoMVVMIFx1MDAzY1x1MDAzYyAzMSlcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fQklOQVJZICgxVUwgXHUwMDNjXHUwMDNjIDMwKVxuICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCBcdTAwM2NcdTAwM2MgMjkpXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4mIzQzO3N0cnVjdCBicGZfcHJvZztcbiYjNDM7XG4gdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcdFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXG5AQCAtNTksNiAmIzQzOzY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4mIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbiYjNDM7XHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xuJiM0MzsjZW5kaWZcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtNzgsMTAgJiM0Mzs4OCw1MSBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbiAgKi9cbiAjZGVmaW5lIE1BWF9SRUdJU1RFUl9MRU5HVEggMTkyMFxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4mIzQzO3N0cnVjdCBiaW5mbXRfYnBmX2ludGVycCB7XG4mIzQzO1x0Y2hhciBwYXRoW1BBVEhfTUFYXTtcbiYjNDM7XHRpbnQgbGVuO1x0LyogXHUwMDNjIDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi9cbiYjNDM7fTtcbiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJiMzOTtCJiMzOTsgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbiYjNDM7ICogQHBhdGg6IGludGVycHJldGVyIHBhdGgsIGluIEJQRi1hY2Nlc3NpYmxlIG1lbW9yeVxuJiM0MzsgKiBAbGVuOiAgbnVtYmVyIG9mIGJ5dGVzIGluIEBwYXRoXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBwcm9ncmFtIGNvbXB1dGVzIHRoZSBpbnRlcnByZXRlciBwYXRoIGhvd2V2ZXIgaXQgc2VlcyBmaXQgKGUuZy4gcmVsYXRpdmVcbiYjNDM7ICogdG8gdGhlIGJpbmFyeSkuIFRoZSBwYXRoIGlzIHN0YXNoZWQgb24gYSBwZXItQ1BVIGFyZWEgdGhhdCBiaW5mbXRfbWlzYyByZWFkc1xuJiM0MzsgKiBiYWNrIGltbWVkaWF0ZWx5IGFmdGVyIHJ1bm5pbmcgdGhlIHByb2dyYW0gdW5kZXIgbWlncmF0ZV9kaXNhYmxlKCksIHNvIGl0XG4mIzQzOyAqIGNhbm5vdCByYWNlIHdpdGggYW5vdGhlciBDUFUuXG4mIzQzOyAqL1xuJiM0MztCUEZfQ0FMTF8yKGJwZl9iaW5wcm1fc2V0X2ludGVycCwgY29uc3QgY2hhciAqLCBwYXRoLCB1MzIsIGxlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2MgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcbiYjNDM7XHRpZiAobGVuID09IDAgfHwgbGVuIFx1MDAzZT0gUEFUSF9NQVgpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHQvKiBAcGF0aCBpcyBAbGVuIGJ5dGVzIG9mIEJQRiBtZW1vcnkgYW5kIGlzIG5vdCBOVUwtdGVybWluYXRlZC4gKi9cbiYjNDM7XHRtZW1jcHkoc2MtXHUwMDNlcGF0aCwgcGF0aCwgbGVuKTtcbiYjNDM7XHRzYy1cdTAwM2VwYXRoW2xlbl0gPSAmIzM5O1xcMCYjMzk7O1xuJiM0MztcdHNjLVx1MDAzZWxlbiA9IGxlbjtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbiYjNDM7XHQuZnVuY1x0XHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcbiYjNDM7XHQuZ3BsX29ubHlcdD0gZmFsc2UsXG4mIzQzO1x0LnJldF90eXBlXHQ9IFJFVF9JTlRFR0VSLFxuJiM0MztcdC5hcmcxX3R5cGVcdD0gQVJHX1BUUl9UT19NRU0gfCBNRU1fUkRPTkxZLFxuJiM0MztcdC5hcmcyX3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG4mIzQzO307XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbiYjNDM7XG4gLyoqXG4gICogc2VhcmNoX2JpbmZtdF9oYW5kbGVyIC0gc2VhcmNoIGZvciBhIGJpbmFyeSBoYW5kbGVyIGZvciBAYnBybVxuICAqIEBtaXNjOiBoYW5kbGUgdG8gYmluZm10X21pc2MgaW5zdGFuY2VcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXG4mIzQzOyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MmIzM5O2QgaW50ZXJwcmV0ZXIgcGF0aCBpZiBhICYjMzk7QiYjMzk7IHByb2dyYW0gY2hvb3Nlc1xuJiM0MzsgKiAgICAgICAgICAgICAgb25lIHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKTsgdGhlIGNhbGxlciBtdXN0IGtmcmVlKCkgaXRcbiAgKlxuICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeVxuICAqIHR5cGUgaGFuZGxlcnMuXG5AQCAtODksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdCAgIHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4mIzQzO1x0XHRcdFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbiYjNDM7XHRcdFx0XHQgICBjaGFyICoqYnBmX2ludGVycClcbiB7XG4gXHRjaGFyICpwID0gc3RycmNocihicHJtLVx1MDAzZWludGVycCwgJiMzOTsuJiMzOTspO1xuIFx0Tm9kZSAqZTtcbkBAIC0xMDMsNiAmIzQzOzE1NSwzNyBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbiBcdFx0aWYgKCF0ZXN0X2JpdChFbmFibGVkLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdC8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIEJQRiBpZiBhcHBsaWNhYmxlLiAqL1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MztcdFx0XHRpZiAoZS1cdTAwM2VicGZfcHJvZykge1xuJiM0MztcdFx0XHRcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2M7XG4mIzQzO1x0XHRcdFx0dTMyIHJldDtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4mIzQzO1x0XHRcdFx0c2MgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcdFx0XHRcdHNjLVx1MDAzZWxlbiA9IC0xO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0XHRcdFx0cmV0ID0gYnBmX3Byb2dfcnVuKGUtXHUwMDNlYnBmX3Byb2csIGJwcm0tXHUwMDNlYnVmKTtcbiYjNDM7XHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKHJldCA9PSAxIFx1MDAyNlx1MDAyNiBzYy1cdTAwM2VsZW4gXHUwMDNlIDApXG4mIzQzO1x0XHRcdFx0XHQqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLVx1MDAzZXBhdGgsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIHNjLVx1MDAzZWxlbixcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRcdFx0bWlncmF0ZV9lbmFibGUoKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0cHJfZGVidWcoXCYjMzQ7YmluZm10X21pc2M6IHJhbiBCUEYgcHJvZ3JhbSBmb3IgJXMsIHJldCA9ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0IGJwcm0tXHUwMDNlZmlsZW5hbWUsIHJldCk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGlmIChyZXQgPT0gMSlcbiYjNDM7XHRcdFx0XHRcdHJldHVybiBlO1xuJiM0MztcdFx0XHR9XG4mIzQzOyNlbmRpZlxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIGV4dGVuc2lvbiBpZiBhcHBsaWNhYmxlLiAqL1xuIFx0XHRpZiAoIXRlc3RfYml0KE1hZ2ljLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGlmIChwIFx1MDAyNlx1MDAyNiAhc3RyY21wKGUtXHUwMDNlbWFnaWMsIHAgJiM0MzsgMSkpXG5AQCAtMTM5LDEyICYjNDM7MjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4mIzQzO1x0XHRcdFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbiYjNDM7XHRcdFx0XHRjaGFyICoqYnBmX2ludGVycClcbiB7XG4gXHROb2RlICplO1xuIFxuIFx0cmVhZF9sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbi1cdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcbiBcdGlmIChlKVxuIFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4gXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG5AQCAtMTY0LDYgJiM0MzsyNDgsMTAgQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmUtXHUwMDNldXNlcnMpKSB7XG4gXHRcdGlmIChlLVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXG4gXHRcdFx0ZmlscF9jbG9zZShlLVx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MztcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGUtXHUwMDNlYnBmX3Byb2cpXG4mIzQzO1x0XHRcdGJwZl9wcm9nX3B1dChlLVx1MDAzZWJwZl9wcm9nKTtcbiYjNDM7I2VuZGlmXG4gXHRcdGtmcmVlKGUpO1xuIFx0fVxuIH1cbkBAIC0yMDYsMTUgJiM0MzsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGUgPSBOVUxMO1xuIFx0aW50IHJldHZhbCA9IC1FTk9FWEVDO1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuJiM0MztcdGNoYXIgKmJwZl9pbnRlcnAgX19mcmVlKGtmcmVlKSA9IE5VTEw7XG4mIzQzO1x0Y29uc3QgY2hhciAqaW50ZXJwcmV0ZXI7XG4gXG4gXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xuIFx0aWYgKCFtaXNjLVx1MDAzZWVuYWJsZWQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4tXHRmbXQgPSBnZXRfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFx1MDAyNmJwZl9pbnRlcnApO1xuIFx0aWYgKCFmbXQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGUgcHJvZ3JhbVxuJiM0MztcdCAqIGNob29zZXMgaXQgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpLiBPdGhlciBoYW5kbGVycyB1c2UgdGhlXG4mIzQzO1x0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdGludGVycHJldGVyID0gYnBmX2ludGVycCA/IGJwZl9pbnRlcnAgOiBmbXQtXHUwMDNlaW50ZXJwcmV0ZXI7XG4mIzQzO1x0cmV0dmFsID0gLUVOT0VYRUM7XG4mIzQzO1x0aWYgKCFpbnRlcnByZXRlclswXSlcbiYjNDM7XHRcdGdvdG8gcmV0O1xuJiM0MztcbiBcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cbiBcdHJldHZhbCA9IC1FTk9FTlQ7XG4gXHRpZiAoYnBybS1cdTAwM2VpbnRlcnBfZmxhZ3MgXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcbkBAIC0yMzgsMjIgJiM0MzszMzgsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRicHJtLVx1MDAzZWFyZ2MmIzQzOyYjNDM7O1xuIFxuIFx0LyogYWRkIHRoZSBpbnRlcnAgYXMgYXJndlswXSAqL1xuLVx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4mIzQzO1x0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGludGVycHJldGVyLCBicHJtKTtcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gcmV0O1xuIFx0YnBybS1cdTAwM2VhcmdjJiM0MzsmIzQzOztcbiBcbiBcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xuLVx0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4mIzQzO1x0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGludGVycHJldGVyLCBicHJtKTtcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gcmV0O1xuIFxuLVx0aWYgKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSB7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJiMzOTtGJiMzOTsgZmxhZykgb25seVxuJiM0MztcdCAqIGFwcGxpZXMgdG8gdGhlIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBpbnRlcnByZXRlcjsgYSBwcm9ncmFtLXN1cHBsaWVkXG4mIzQzO1x0ICogcGF0aCBpcyBvcGVuZWQgaGVyZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcdTAwMjZcdTAwMjYgIWJwZl9pbnRlcnApIHtcbiBcdFx0aW50ZXJwX2ZpbGUgPSBmaWxlX2Nsb25lX29wZW4oZm10LVx1MDAzZWludGVycF9maWxlKTtcbiBcdFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxuIFx0XHRcdGRlbnlfd3JpdGVfYWNjZXNzKGludGVycF9maWxlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cdTAwM2VpbnRlcnByZXRlcik7XG4mIzQzO1x0XHRpbnRlcnBfZmlsZSA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcik7XG4gXHR9XG4gXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycF9maWxlKTtcbiBcdGlmIChJU19FUlIoaW50ZXJwX2ZpbGUpKVxuQEAgLTQwNCw2ICYjNDM7NTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0XHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogdHlwZTogTSAobWFnaWMpXFxuXCYjMzQ7KTtcbiBcdFx0ZS1cdTAwM2VmbGFncyA9ICgxIFx1MDAzY1x1MDAzYyBFbmFibGVkKSB8ICgxIFx1MDAzY1x1MDAzYyBNYWdpYyk7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgJiMzOTtCJiMzOTs6XG4mIzQzO1x0XHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogdHlwZTogQiAoYnBmKVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRlLVx1MDAzZWZsYWdzID0gKDEgXHUwMDNjXHUwMDNjIEVuYWJsZWQpIHwgKDEgXHUwMDNjXHUwMDNjIEJwZik7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gZWludmFsO1xuIFx0fVxuQEAgLTQ5Miw2ICYjNDM7NjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0LyogSGFuZGxlIHRoZSAmIzM5O0ImIzM5OyAoQlBGKSBmb3JtYXQuICovXG4mIzQzO1x0XHRjaGFyICpzO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRoZSBvZmZzZXQgZmllbGQgYWN0dWFsbHkgaG9sZHMgdGhlIHBpbm5lZCBCUEYgcHJvZ3JhbSBwYXRoICovXG4mIzQzO1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4mIzQzO1x0XHRpZiAoIXMpXG4mIzQzO1x0XHRcdGdvdG8gZWludmFsO1xuJiM0MztcdFx0KnMmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XHRcdGUtXHUwMDNlbWFnaWMgPSBwOyAvKiBLZWVwIHBhdGggaW4gZS1cdTAwM2VtYWdpYyAqL1xuJiM0MztcdFx0cHJfZGVidWcoXCYjMzQ7cmVnaXN0ZXI6IGJwZiBwcm9ncmFtIHBhdGg6ICVzXFxuXCYjMzQ7LCBlLVx1MDAzZW1hZ2ljKTtcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbiYjNDM7XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG4mIzQzO1x0XHRpZiAoSVNfRVJSKGUtXHUwMDNlYnBmX3Byb2cpKSB7XG4mIzQzO1x0XHRcdGVyciA9IFBUUl9FUlIoZS1cdTAwM2VicGZfcHJvZyk7XG4mIzQzO1x0XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBOVUxMO1xuJiM0MztcdFx0XHRrZnJlZShlKTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiYjNDM7XHRcdH1cbiYjNDM7I2Vsc2VcbiYjNDM7XHRcdGdvdG8gZWludmFsO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0XHRwID0gcztcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4mIzQzO1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4mIzQzO1x0XHRpZiAoIXMgfHwgcCAhPSBzKVxuJiM0MztcdFx0XHRnb3RvIGVpbnZhbDtcbiYjNDM7XHRcdCpzJiM0MzsmIzQzOyA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0XHRwID0gcztcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgbWFzayBmaWVsZCBpcyB1bnVzZWQsIG11c3QgYmUgZW1wdHkgKi9cbiYjNDM7XHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbiYjNDM7XHRcdGlmICghcyB8fCBwICE9IHMpXG4mIzQzO1x0XHRcdGdvdG8gZWludmFsO1xuJiM0MztcdFx0KnMmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XHRcdHAgPSBzO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSGFuZGxlIHRoZSAmIzM5O0UmIzM5OyAoZXh0ZW5zaW9uKSBmb3JtYXQuICovXG4gXG5AQCAtNTI0LDggJiM0Mzs2NzIsMTcgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4gXHRpZiAoIXApXG4gXHRcdGdvdG8gZWludmFsO1xuIFx0KnAmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5Oztcbi1cdGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbiYjNDM7XHRpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZVxuJiM0MztcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG4mIzQzO1x0XHQgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbiYjNDM7XHRcdFx0Z290byBlaW52YWw7XG4mIzQzO1x0fSBlbHNlIGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSkge1xuIFx0XHRnb3RvIGVpbnZhbDtcbiYjNDM7XHR9XG4gXHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogaW50ZXJwcmV0ZXI6IHslc31cXG5cJiMzNDssIGUtXHUwMDNlaW50ZXJwcmV0ZXIpO1xuIFxuIFx0LyogUGFyc2UgdGhlICYjMzk7ZmxhZ3MmIzM5OyBmaWVsZC4gKi9cbkBAIC02MDIsNyAmIzQzOzc1OSw5IEBAIHN0YXRpYyB2b2lkIGVudHJ5X3N0YXR1cyhOb2RlICplLCBjaGFyICpwYWdlKVxuIFx0XHQqZHAmIzQzOyYjNDM7ID0gJiMzOTtGJiMzOTs7XG4gXHQqZHAmIzQzOyYjNDM7ID0gJiMzOTtcXG4mIzM5OztcbiBcbi1cdGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbiYjNDM7XHRcdHNwcmludGYoZHAsIFwmIzM0O2JwZiAlc1xcblwmIzM0OywgZS1cdTAwM2VtYWdpYyk7XG4mIzQzO1x0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHNwcmludGYoZHAsIFwmIzM0O2V4dGVuc2lvbiAuJXNcXG5cJiMzNDssIGUtXHUwMDNlbWFnaWMpO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZHAgJiM0Mzs9IHNwcmludGYoZHAsIFwmIzM0O29mZnNldCAlaVxcbm1hZ2ljIFwmIzM0OywgZS1cdTAwM2VvZmZzZXQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5pbmRleCA3NzE5ZjY1Mjg0NDU2MC4uM2FlZjQ0YjY5NGJkMGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5AQCAtMzg3NCw2ICYjNDM7Mzg3NCw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNraWRfcHJvdG87XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXG5pbmRleCA4OWIzNmRlNWZkYmI2ZC4uZGNlMTU1YzViYmQ3NWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxuQEAgLTYxNDIsNiAmIzQzOzYxNDIsNyBAQCB1bmlvbiBicGZfYXR0ciB7XG4gXHRGTih1c2VyX3JpbmdidWZfZHJhaW4sIDIwOSwgIyNjdHgpXHRcdFxcXG4gXHRGTihjZ3JwX3N0b3JhZ2VfZ2V0LCAyMTAsICMjY3R4KVx0XHRcXFxuIFx0Rk4oY2dycF9zdG9yYWdlX2RlbGV0ZSwgMjExLCAjI2N0eClcdFx0XFxcbiYjNDM7XHRGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eClcdFx0XFxcbiBcdC8qIFRoaXMgaGVscGVyIGxpc3QgaXMgZWZmZWN0aXZlbHkgZnJvemVuLiBJZiB5b3UgYXJlIHRyeWluZyB0b1x0XFxcbiBcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcdFxcXG4gXHQgKiBsZXNzIHN0YWJpbGl0eSBndWFyYW50ZWVzLiBTZWUgRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFx0XFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCAyZTk2YjRiODQ3Y2UxMi4uMTg3NjkyYTRhNGI2N2IgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC04Mzk3LDYgJiM0Mzs4Mzk3LDE0IEBAIHNrX2ZpbHRlcl9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnBmX2dldF9zb2NrZXRfdWlkX3Byb3RvO1xuIFx0Y2FzZSBCUEZfRlVOQ19wZXJmX2V2ZW50X291dHB1dDpcbiBcdFx0cmV0dXJuIFx1MDAyNmJwZl9za2JfZXZlbnRfb3V0cHV0X3Byb3RvO1xuJiM0MzsjaWYgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpXG4mIzQzO1x0Y2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW5cbiYjNDM7XHRcdCAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHJldHVybiBcdTAwMjZicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG87XG4mIzQzOyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTZmYjQwYjQzMWZiNTU0ZWNjNGExYTI4NTgwNjI4MTlmNGY1NmM0OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMjE6MzE6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuYwppbmRleCA4NDM0OWZjYjkzZjEzYS4uY2Y2Njk4ZDU5YzlmMDQgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9taXNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X21pc2MuYwpAQCAtMjksNiAmIzQzOzI5LDExIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAKJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9maWx0ZXIuaCZndDsKJiM0MzsjZW5kaWYKJiM0MzsKICNpbmNsdWRlICYjMzQ7aW50ZXJuYWwuaCYjMzQ7CiAKICNpZmRlZiBERUJVRwpAQCAtNDEsMTIgJiM0Mzs0NiwxNCBAQCBlbnVtIHsKIAlWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi8KIH07CiAKLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTsKJiM0MztlbnVtIHtFbmFibGVkLCBNYWdpYywgQnBmfTsKICNkZWZpbmUgTUlTQ19GTVRfUFJFU0VSVkVfQVJHVjAgKDFVTCAmbHQ7Jmx0OyAzMSkKICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9CSU5BUlkgKDFVTCAmbHQ7Jmx0OyAzMCkKICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCAmbHQ7Jmx0OyAyOSkKICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgJmx0OyZsdDsgMjgpCiAKJiM0MztzdHJ1Y3QgYnBmX3Byb2c7CiYjNDM7CiB0eXBlZGVmIHN0cnVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkvKiB0eXBlLCBzdGF0dXMsIGV0Yy4gKi8KQEAgLTU5LDYgJiM0Mzs2Niw5IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlOwogCXJlZmNvdW50X3QgdXNlcnM7CQkvKiBzeW5jIHJlbW92YWwgd2l0aCBsb2FkX21pc2NfYmluYXJ5KCkgKi8KJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCiYjNDM7CXN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2c7CiYjNDM7I2VuZGlmCiB9IE5vZGU7CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlOwpAQCAtNzgsMTAgJiM0Mzs4OCw1MSBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTsKICAqLwogI2RlZmluZSBNQVhfUkVHSVNURVJfTEVOR1RIIDE5MjAKIAomIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTEwKJiM0MztzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgewomIzQzOwljaGFyIHBhdGhbUEFUSF9NQVhdOwomIzQzOwlpbnQgbGVuOwkvKiAmbHQ7IDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi8KJiM0Mzt9OwomIzQzO3N0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAsIGJpbmZtdF9icGZfaW50ZXJwKTsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIGJwZl9iaW5wcm1fc2V0X2ludGVycCAtIGxldCBhIGJpbmZtdF9taXNjICYjMzk7QiYjMzk7IHByb2dyYW0gcGljayB0aGUgaW50ZXJwcmV0ZXIuCiYjNDM7ICogQHBhdGg6IGludGVycHJldGVyIHBhdGgsIGluIEJQRi1hY2Nlc3NpYmxlIG1lbW9yeQomIzQzOyAqIEBsZW46ICBudW1iZXIgb2YgYnl0ZXMgaW4gQHBhdGgKJiM0MzsgKgomIzQzOyAqIFRoZSBwcm9ncmFtIGNvbXB1dGVzIHRoZSBpbnRlcnByZXRlciBwYXRoIGhvd2V2ZXIgaXQgc2VlcyBmaXQgKGUuZy4gcmVsYXRpdmUKJiM0MzsgKiB0byB0aGUgYmluYXJ5KS4gVGhlIHBhdGggaXMgc3Rhc2hlZCBvbiBhIHBlci1DUFUgYXJlYSB0aGF0IGJpbmZtdF9taXNjIHJlYWRzCiYjNDM7ICogYmFjayBpbW1lZGlhdGVseSBhZnRlciBydW5uaW5nIHRoZSBwcm9ncmFtIHVuZGVyIG1pZ3JhdGVfZGlzYWJsZSgpLCBzbyBpdAomIzQzOyAqIGNhbm5vdCByYWNlIHdpdGggYW5vdGhlciBDUFUuCiYjNDM7ICovCiYjNDM7QlBGX0NBTExfMihicGZfYmlucHJtX3NldF9pbnRlcnAsIGNvbnN0IGNoYXIgKiwgcGF0aCwgdTMyLCBsZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgKnNjID0gdGhpc19jcHVfcHRyKCZhbXA7YmluZm10X2JwZl9pbnRlcnApOwomIzQzOwomIzQzOwlpZiAobGVuID09IDAgfHwgbGVuICZndDs9IFBBVEhfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CS8qIEBwYXRoIGlzIEBsZW4gYnl0ZXMgb2YgQlBGIG1lbW9yeSBhbmQgaXMgbm90IE5VTC10ZXJtaW5hdGVkLiAqLwomIzQzOwltZW1jcHkoc2MtJmd0O3BhdGgsIHBhdGgsIGxlbik7CiYjNDM7CXNjLSZndDtwYXRoW2xlbl0gPSAmIzM5O1wwJiMzOTs7CiYjNDM7CXNjLSZndDtsZW4gPSBsZW47CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvID0gewomIzQzOwkuZnVuYwkJPSBicGZfYmlucHJtX3NldF9pbnRlcnAsCiYjNDM7CS5ncGxfb25seQk9IGZhbHNlLAomIzQzOwkucmV0X3R5cGUJPSBSRVRfSU5URUdFUiwKJiM0MzsJLmFyZzFfdHlwZQk9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSwKJiM0MzsJLmFyZzJfdHlwZQk9IEFSR19DT05TVF9TSVpFLAomIzQzO307CiYjNDM7I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqLwomIzQzOwogLyoqCiAgKiBzZWFyY2hfYmluZm10X2hhbmRsZXIgLSBzZWFyY2ggZm9yIGEgYmluYXJ5IGhhbmRsZXIgZm9yIEBicHJtCiAgKiBAbWlzYzogaGFuZGxlIHRvIGJpbmZtdF9taXNjIGluc3RhbmNlCiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyCiYjNDM7ICogQGJwZl9pbnRlcnA6IHJlY2VpdmVzIGEga21hbGxvYyYjMzk7ZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJiMzOTtCJiMzOTsgcHJvZ3JhbSBjaG9vc2VzCiYjNDM7ICogICAgICAgICAgICAgIG9uZSB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCk7IHRoZSBjYWxsZXIgbXVzdCBrZnJlZSgpIGl0CiAgKgogICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5CiAgKiB0eXBlIGhhbmRsZXJzLgpAQCAtODksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlOwogICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZQogICovCiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKLQkJCQkgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQomIzQzOwkJCQkgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAomIzQzOwkJCQkgICBjaGFyICoqYnBmX2ludGVycCkKIHsKIAljaGFyICpwID0gc3RycmNocihicHJtLSZndDtpbnRlcnAsICYjMzk7LiYjMzk7KTsKIAlOb2RlICplOwpAQCAtMTAzLDYgJiM0MzsxNTUsMzcgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCiAJCWlmICghdGVzdF9iaXQoRW5hYmxlZCwgJmFtcDtlLSZndDtmbGFncykpCiAJCQljb250aW51ZTsKIAomIzQzOwkJLyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gQlBGIGlmIGFwcGxpY2FibGUuICovCiYjNDM7CQlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTEwKJiM0MzsJCQlpZiAoZS0mZ3Q7YnBmX3Byb2cpIHsKJiM0MzsJCQkJc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYzsKJiM0MzsJCQkJdTMyIHJldDsKJiM0MzsKJiM0MzsJCQkJbWlncmF0ZV9kaXNhYmxlKCk7CiYjNDM7CQkJCXNjID0gdGhpc19jcHVfcHRyKCZhbXA7YmluZm10X2JwZl9pbnRlcnApOwomIzQzOwkJCQlzYy0mZ3Q7bGVuID0gLTE7CiYjNDM7CiYjNDM7CQkJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCQkJcmV0ID0gYnBmX3Byb2dfcnVuKGUtJmd0O2JwZl9wcm9nLCBicHJtLSZndDtidWYpOwomIzQzOwkJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKJiM0MzsJCQkJaWYgKHJldCA9PSAxICZhbXA7JmFtcDsgc2MtJmd0O2xlbiAmZ3Q7IDApCiYjNDM7CQkJCQkqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLSZndDtwYXRoLAomIzQzOwkJCQkJCQkJICBzYy0mZ3Q7bGVuLAomIzQzOwkJCQkJCQkJICBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJbWlncmF0ZV9lbmFibGUoKTsKJiM0MzsKJiM0MzsJCQkJcHJfZGVidWcoJiMzNDtiaW5mbXRfbWlzYzogcmFuIEJQRiBwcm9ncmFtIGZvciAlcywgcmV0ID0gJXVcbiYjMzQ7LAomIzQzOwkJCQkJIGJwcm0tJmd0O2ZpbGVuYW1lLCByZXQpOwomIzQzOwomIzQzOwkJCQlpZiAocmV0ID09IDEpCiYjNDM7CQkJCQlyZXR1cm4gZTsKJiM0MzsJCQl9CiYjNDM7I2VuZGlmCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9CiYjNDM7CiAJCS8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIGV4dGVuc2lvbiBpZiBhcHBsaWNhYmxlLiAqLwogCQlpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewogCQkJaWYgKHAgJmFtcDsmYW1wOyAhc3RyY21wKGUtJmd0O21hZ2ljLCBwICYjNDM7IDEpKQpAQCAtMTM5LDEyICYjNDM7MjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLAogICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZQogICovCiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKLQkJCQlzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQomIzQzOwkJCQlzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAomIzQzOwkJCQljaGFyICoqYnBmX2ludGVycCkKIHsKIAlOb2RlICplOwogCiAJcmVhZF9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQllID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwomIzQzOwllID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIGJwZl9pbnRlcnApOwogCWlmIChlKQogCQlyZWZjb3VudF9pbmMoJmFtcDtlLSZndDt1c2Vycyk7CiAJcmVhZF91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwpAQCAtMTY0LDYgJiM0MzsyNDgsMTAgQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpCiAJaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO2UtJmd0O3VzZXJzKSkgewogCQlpZiAoZS0mZ3Q7ZmxhZ3MgJmFtcDsgTUlTQ19GTVRfT1BFTl9GSUxFKQogCQkJZmlscF9jbG9zZShlLSZndDtpbnRlcnBfZmlsZSwgTlVMTCk7CiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTAomIzQzOwkJaWYgKHRlc3RfYml0KEJwZiwgJmFtcDtlLSZndDtmbGFncykgJmFtcDsmYW1wOyBlLSZndDticGZfcHJvZykKJiM0MzsJCQlicGZfcHJvZ19wdXQoZS0mZ3Q7YnBmX3Byb2cpOwomIzQzOyNlbmRpZgogCQlrZnJlZShlKTsKIAl9CiB9CkBAIC0yMDYsMTUgJiM0MzsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlID0gTlVMTDsKIAlpbnQgcmV0dmFsID0gLUVOT0VYRUM7CiAJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwomIzQzOwljaGFyICpicGZfaW50ZXJwIF9fZnJlZShrZnJlZSkgPSBOVUxMOwomIzQzOwljb25zdCBjaGFyICppbnRlcnByZXRlcjsKIAogCW1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7CiAJaWYgKCFtaXNjLSZndDtlbmFibGVkKQogCQlyZXR1cm4gcmV0dmFsOwogCi0JZm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwomIzQzOwlmbXQgPSBnZXRfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSwgJmFtcDticGZfaW50ZXJwKTsKIAlpZiAoIWZtdCkKIAkJcmV0dXJuIHJldHZhbDsKIAomIzQzOwkvKgomIzQzOwkgKiBBICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGUgcHJvZ3JhbQomIzQzOwkgKiBjaG9vc2VzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gT3RoZXIgaGFuZGxlcnMgdXNlIHRoZQomIzQzOwkgKiBpbnRlcnByZXRlciByZWNvcmRlZCBhdCByZWdpc3RyYXRpb24uCiYjNDM7CSAqLwomIzQzOwlpbnRlcnByZXRlciA9IGJwZl9pbnRlcnAgPyBicGZfaW50ZXJwIDogZm10LSZndDtpbnRlcnByZXRlcjsKJiM0MzsJcmV0dmFsID0gLUVOT0VYRUM7CiYjNDM7CWlmICghaW50ZXJwcmV0ZXJbMF0pCiYjNDM7CQlnb3RvIHJldDsKJiM0MzsKIAkvKiBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCB0aGUgZmlsZSBhZnRlciBleGVjICovCiAJcmV0dmFsID0gLUVOT0VOVDsKIAlpZiAoYnBybS0mZ3Q7aW50ZXJwX2ZsYWdzICZhbXA7IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSkKQEAgLTIzOCwyMiAmIzQzOzMzOCwyNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAlicHJtLSZndDthcmdjJiM0MzsmIzQzOzsKIAogCS8qIGFkZCB0aGUgaW50ZXJwIGFzIGFyZ3ZbMF0gKi8KLQlyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoZm10LSZndDtpbnRlcnByZXRlciwgYnBybSk7CiYjNDM7CXJldHZhbCA9IGNvcHlfc3RyaW5nX2tlcm5lbChpbnRlcnByZXRlciwgYnBybSk7CiAJaWYgKHJldHZhbCAmbHQ7IDApCiAJCWdvdG8gcmV0OwogCWJwcm0tJmd0O2FyZ2MmIzQzOyYjNDM7OwogCiAJLyogVXBkYXRlIGludGVycCBpbiBjYXNlIGJpbmZtdF9zY3JpcHQgbmVlZHMgaXQuICovCi0JcmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC0mZ3Q7aW50ZXJwcmV0ZXIsIGJwcm0pOwomIzQzOwlyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoaW50ZXJwcmV0ZXIsIGJwcm0pOwogCWlmIChyZXR2YWwgJmx0OyAwKQogCQlnb3RvIHJldDsKIAotCWlmIChmbXQtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkgewomIzQzOwkvKgomIzQzOwkgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJiMzOTtGJiMzOTsgZmxhZykgb25seQomIzQzOwkgKiBhcHBsaWVzIHRvIHRoZSBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgaW50ZXJwcmV0ZXI7IGEgcHJvZ3JhbS1zdXBwbGllZAomIzQzOwkgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKChmbXQtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkgJmFtcDsmYW1wOyAhYnBmX2ludGVycCkgewogCQlpbnRlcnBfZmlsZSA9IGZpbGVfY2xvbmVfb3BlbihmbXQtJmd0O2ludGVycF9maWxlKTsKIAkJaWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKQogCQkJZGVueV93cml0ZV9hY2Nlc3MoaW50ZXJwX2ZpbGUpOwogCX0gZWxzZSB7Ci0JCWludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC0mZ3Q7aW50ZXJwcmV0ZXIpOwomIzQzOwkJaW50ZXJwX2ZpbGUgPSBvcGVuX2V4ZWMoaW50ZXJwcmV0ZXIpOwogCX0KIAlyZXR2YWwgPSBQVFJfRVJSKGludGVycF9maWxlKTsKIAlpZiAoSVNfRVJSKGludGVycF9maWxlKSkKQEAgLTQwNCw2ICYjNDM7NTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQogCQlwcl9kZWJ1ZygmIzM0O3JlZ2lzdGVyOiB0eXBlOiBNIChtYWdpYylcbiYjMzQ7KTsKIAkJZS0mZ3Q7ZmxhZ3MgPSAoMSAmbHQ7Jmx0OyBFbmFibGVkKSB8ICgxICZsdDsmbHQ7IE1hZ2ljKTsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgJiMzOTtCJiMzOTs6CiYjNDM7CQlwcl9kZWJ1ZygmIzM0O3JlZ2lzdGVyOiB0eXBlOiBCIChicGYpXG4mIzM0Oyk7CiYjNDM7CQllLSZndDtmbGFncyA9ICgxICZsdDsmbHQ7IEVuYWJsZWQpIHwgKDEgJmx0OyZsdDsgQnBmKTsKJiM0MzsJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWdvdG8gZWludmFsOwogCX0KQEAgLTQ5Miw2ICYjNDM7NjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQogCQkJCX0KIAkJCX0KIAkJfQomIzQzOwl9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgJmFtcDtlLSZndDtmbGFncykpIHsKJiM0MzsJCS8qIEhhbmRsZSB0aGUgJiMzOTtCJiMzOTsgKEJQRikgZm9ybWF0LiAqLwomIzQzOwkJY2hhciAqczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBvZmZzZXQgZmllbGQgYWN0dWFsbHkgaG9sZHMgdGhlIHBpbm5lZCBCUEYgcHJvZ3JhbSBwYXRoICovCiYjNDM7CQlzID0gc3RyY2hyKHAsIGRlbCk7CiYjNDM7CQlpZiAoIXMpCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CQkqcyYjNDM7JiM0MzsgPSAmIzM5O1wwJiMzOTs7CiYjNDM7CQllLSZndDttYWdpYyA9IHA7IC8qIEtlZXAgcGF0aCBpbiBlLSZndDttYWdpYyAqLwomIzQzOwkJcHJfZGVidWcoJiMzNDtyZWdpc3RlcjogYnBmIHByb2dyYW0gcGF0aDogJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTAomIzQzOwkJZS0mZ3Q7YnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtJmd0O21hZ2ljLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpOwomIzQzOwkJaWYgKElTX0VSUihlLSZndDticGZfcHJvZykpIHsKJiM0MzsJCQllcnIgPSBQVFJfRVJSKGUtJmd0O2JwZl9wcm9nKTsKJiM0MzsJCQllLSZndDticGZfcHJvZyA9IE5VTEw7CiYjNDM7CQkJa2ZyZWUoZSk7CiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKJiM0MzsJCX0KJiM0MzsjZWxzZQomIzQzOwkJZ290byBlaW52YWw7CiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7CQlwID0gczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBtYWdpYyBmaWVsZCBpcyB1bnVzZWQsIG11c3QgYmUgZW1wdHkgKi8KJiM0MzsJCXMgPSBzdHJjaHIocCwgZGVsKTsKJiM0MzsJCWlmICghcyB8fCBwICE9IHMpCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CQkqcyYjNDM7JiM0MzsgPSAmIzM5O1wwJiMzOTs7CiYjNDM7CQlwID0gczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBtYXNrIGZpZWxkIGlzIHVudXNlZCwgbXVzdCBiZSBlbXB0eSAqLwomIzQzOwkJcyA9IHN0cmNocihwLCBkZWwpOwomIzQzOwkJaWYgKCFzIHx8IHAgIT0gcykKJiM0MzsJCQlnb3RvIGVpbnZhbDsKJiM0MzsJCSpzJiM0MzsmIzQzOyA9ICYjMzk7XDAmIzM5OzsKJiM0MzsJCXAgPSBzOwogCX0gZWxzZSB7CiAJCS8qIEhhbmRsZSB0aGUgJiMzOTtFJiMzOTsgKGV4dGVuc2lvbikgZm9ybWF0LiAqLwogCkBAIC01MjQsOCAmIzQzOzY3MiwxNyBAQCBzdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudCkKIAlpZiAoIXApCiAJCWdvdG8gZWludmFsOwogCSpwJiM0MzsmIzQzOyA9ICYjMzk7XDAmIzM5OzsKLQlpZiAoIWUtJmd0O2ludGVycHJldGVyWzBdKQomIzQzOwlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwkJLyoKJiM0MzsJCSAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZQomIzQzOwkJICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhCiYjNDM7CQkgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZS0mZ3Q7aW50ZXJwcmV0ZXJbMF0pCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CX0gZWxzZSBpZiAoIWUtJmd0O2ludGVycHJldGVyWzBdKSB7CiAJCWdvdG8gZWludmFsOwomIzQzOwl9CiAJcHJfZGVidWcoJiMzNDtyZWdpc3RlcjogaW50ZXJwcmV0ZXI6IHslc31cbiYjMzQ7LCBlLSZndDtpbnRlcnByZXRlcik7CiAKIAkvKiBQYXJzZSB0aGUgJiMzOTtmbGFncyYjMzk7IGZpZWxkLiAqLwpAQCAtNjAyLDcgJiM0Mzs3NTksOSBAQCBzdGF0aWMgdm9pZCBlbnRyeV9zdGF0dXMoTm9kZSAqZSwgY2hhciAqcGFnZSkKIAkJKmRwJiM0MzsmIzQzOyA9ICYjMzk7RiYjMzk7OwogCSpkcCYjNDM7JiM0MzsgPSAmIzM5O1xuJiMzOTs7CiAKLQlpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwkJc3ByaW50ZihkcCwgJiMzNDticGYgJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiYjNDM7CX0gZWxzZSBpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewogCQlzcHJpbnRmKGRwLCAmIzM0O2V4dGVuc2lvbiAuJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiAJfSBlbHNlIHsKIAkJZHAgJiM0Mzs9IHNwcmludGYoZHAsICYjMzQ7b2Zmc2V0ICVpXG5tYWdpYyAmIzM0OywgZS0mZ3Q7b2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oCmluZGV4IDc3MTlmNjUyODQ0NTYwLi4zYWVmNDRiNjk0YmQwYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oCkBAIC0zODc0LDYgJiM0MzszODc0LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X2Jvb3RfbnNfcHJvdG87CiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG87CiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90bzsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oCmluZGV4IDg5YjM2ZGU1ZmRiYjZkLi5kY2UxNTVjNWJiZDc1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaApAQCAtNjE0Miw2ICYjNDM7NjE0Miw3IEBAIHVuaW9uIGJwZl9hdHRyIHsKIAlGTih1c2VyX3JpbmdidWZfZHJhaW4sIDIwOSwgIyNjdHgpCQlcCiAJRk4oY2dycF9zdG9yYWdlX2dldCwgMjEwLCAjI2N0eCkJCVwKIAlGTihjZ3JwX3N0b3JhZ2VfZGVsZXRlLCAyMTEsICMjY3R4KQkJXAomIzQzOwlGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eCkJCVwKIAkvKiBUaGlzIGhlbHBlciBsaXN0IGlzIGVmZmVjdGl2ZWx5IGZyb3plbi4gSWYgeW91IGFyZSB0cnlpbmcgdG8JXAogCSAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXMJXAogCSAqIGxlc3Mgc3RhYmlsaXR5IGd1YXJhbnRlZXMuIFNlZSBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CVwKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggMmU5NmI0Yjg0N2NlMTIuLjE4NzY5MmE0YTRiNjdiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtODM5Nyw2ICYjNDM7ODM5NywxNCBAQCBza19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJcmV0dXJuICZhbXA7YnBmX2dldF9zb2NrZXRfdWlkX3Byb3RvOwogCWNhc2UgQlBGX0ZVTkNfcGVyZl9ldmVudF9vdXRwdXQ6CiAJCXJldHVybiAmYW1wO2JwZl9za2JfZXZlbnRfb3V0cHV0X3Byb3RvOwomIzQzOyNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQykKJiM0MzsJY2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDoKJiM0MzsJCS8qCiYjNDM7CQkgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW4KJiM0MzsJCSAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuCiYjNDM7CQkgKi8KJiM0MzsJCXJldHVybiAmYW1wO2JwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90bzsKJiM0MzsjZW5kaWYKIAlkZWZhdWx0OgogCQlyZXR1cm4gYnBmX3NrX2Jhc2VfZnVuY19wcm90byhmdW5jX2lkLCBwcm9nKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgYmluZm10X21pc2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGJpbmZtdF9taXNjIGhhbmRsZXIgdHlwZSwgJiMzOTtCJiMzOTsg4oCTIGZvciBCUEYsIG5hdHVyYWxseS4gVGhlIGlkZWEgaXMgdG8gdXNlIGEgQlBGIHByb2dyYW0gdG8gZHluYW1pY2FsbHkgc2VsZWN0IGFuIGludGVycHJldGVyIGJhc2VkIG9uIHRoZSBiaW5hcnkgaXRzZWxmLiBTZWVtcyBsaWtlIGEgY2xldmVyIGFwcHJvYWNoIGZvciBlbmhhbmNlZCBmbGV4aWJpbGl0eS4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYmluZm10X21pc2MuY2AsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIG1hbmFnaW5nIGV4ZWN1dGFibGUgZm9ybWF0cywgYXMgZXhwZWN0ZWQuCgpJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIG5ldyBCUEYgaGVscGVyLCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgd2hpY2ggaXMgY2VudHJhbCB0byB0aGlzIHdob2xlIHRoaW5nLiBQbHVzLCBtb2RpZmljYXRpb25zIHRvIGNydWNpYWwgZnVuY3Rpb25zIGxpa2UgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBjcmVhdGVfZW50cnlgLCBhbmQgYGVudHJ5X3N0YXR1c2AsIGluZGljYXRlIHRoZXkmIzM5O3ZlIGludGVncmF0ZWQgdGhpcyBCUEYtYmFzZWQgYXBwcm9hY2ggZGVlcGx5IGludG8gdGhlIGV4aXN0aW5nIGJpbmZtdF9taXNjIGluZnJhc3RydWN0dXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KClRoZSBjb3JlIGNvZGUgaXMgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTGAgd2l0aGluIGBmcy9iaW5mbXRfbWlzYy5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoaXMgYXNzdW1lcyB0aGUgQlBGIHN5c2NhbGxzIGFyZSBhdmFpbGFibGUuIGBDT05GSUdfQklORk1UX01JU0NgIGlzLCBvZiBjb3Vyc2UsIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkuIEFoYSwgSSBzZWUgYElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKWAgdXNlZCBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgIHdoaWNoIGNvdWxkIGJlIGFuIGludGVyZXN0aW5nIHBvaW50IG9mIGNvbnZlcmdlbmNlLgoKVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2ggZm9yIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgb3Igb3RoZXIgaW50ZXJhY3Rpb25zIEkmIzM5O3ZlIG92ZXJsb29rZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgZnVsbCBzY29wZSBvZiB0aGlzIGNoYW5nZSBiZWZvcmUgSSBmb3JtIGFueSBqdWRnZW1lbnRzIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wYWN0cyBvciBpbnRlZ3JhdGlvbiBjaGFsbGVuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CSU5GTVRfTUlTQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0PTg9b3RoZXIgcHJvZ3JhbSBhZnRlciB5b3UgaGF2ZSBkb25lIHRoZSBmb2xsb3dpbmc6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9qYXZhLnJzdC0yMS0yKSBZb3UgaGF2ZSB0byBjb21waWxlIEJJTkZNVF9NSVNDIGVpdGhlciBhcyBhIG1vZHVsZSBvciBpbnRvXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0OjIyOiAgIHRoZSBrZXJuZWwgKGBgQ09ORklHX0JJTkZNVF9NSVNDYGApIGFuZCBzZXQgaXQgdXAgcHJvcGVybHkuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0LTIzLSAgIElmIHlvdSBjaG9vc2UgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgaGF2ZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3Q9OT1vdGhlciBwcm9ncmFtIGFmdGVyIHlvdSBoYXZlIGRvbmUgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21vbm8ucnN0LTI1LTIpIFlvdSBoYXZlIHRvIGNvbXBpbGUgQklORk1UX01JU0MgZWl0aGVyIGFzIGEgbW9kdWxlIG9yIGludG9cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3Q6MjY6ICAgdGhlIGtlcm5lbCAoYGBDT05GSUdfQklORk1UX01JU0NgYCkgYW5kIHNldCBpdCB1cCBwcm9wZXJseS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3QtMjctICAgSWYgeW91IGNob29zZSB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCB5b3Ugd2lsbCBoYXZlXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01MD1DT05GSUdfTU9EVUxFX1VOTE9BRD15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTUxLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNTMtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnPTE4PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnOjE5OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWctMjAtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnPTU2PUNPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEw9eVxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjU3OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc9Mzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL2FybS9jb25maWdzL29tYXAxX2RlZmNvbmZpZzo0MDpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWctNDEtIyBDT05GSUdfU1dBUCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTYyPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjYzOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctNjQtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnPTQ1PUNPTkZJR19DTURMSU5FX1BBUlRJVElPTj15XG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NDY6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00Ny1DT05GSUdfU0xVQl9USU5ZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc9MTk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXIxM3h4X2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZz0xMz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXIzeHhfZGVmY29uZmlnOjE0OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZy0xNS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyNnh4X2RlZmNvbmZpZz0xMD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyNnh4X2RlZmNvbmZpZy0xMi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjE5OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZy0yMC1DT05GSUdfUE09eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9OTM9Q09ORklHX0JGUV9HUk9VUF9JT1NDSEVEPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6OTQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTUtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwOD1DT05GSUdfQkZRX0dST1VQX0lPU0NIRUQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEwLUNPTkZJR19aU1dBUD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQyPUNPTkZJR19JT1NDSEVEX0JGUT1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDMtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjQ0OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz0zOD1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnOjQwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTQxLSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz00NT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTQ2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0NzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTQ4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz0zNz1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZzozOTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTQwLSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9MzY9Q09ORklHX0lPU0NIRURfQkZRPW1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctMzctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozODpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTY9Q09ORklHX0lPU0NIRURfQkZRPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01Ny0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTg6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01OS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz0zND1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTM3LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTM1PUNPTkZJR19JT1NDSEVEX0JGUT1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy0zNi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzgtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zNj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjM4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTM5LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N0bWFyazJfZGVmY29uZmlnPTI5PUNPTkZJR19CSU5GTVRfWkZMQVQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvbTY4ay9jb25maWdzL3N0bWFyazJfZGVmY29uZmlnLTMxLSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctMzMtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc6MzQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzozNDpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc9Mjc9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MTc9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTE5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTI1LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTE5PUNPTkZJR19TR0lfUEFSVElUSU9OPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZz0xNz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZy0xOS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9Mjc9Q09ORklHX01RX0lPU0NIRURfREVBRExJTkU9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9MzU9Q09ORklHX0JGUV9HUk9VUF9JT1NDSEVEPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0zNy1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTQ5PUNPTkZJR19JT1NDSEVEX0JGUT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTUxLUNPTkZJR19LU009eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTM4PUNPTkZJR19LQVJNQV9QQVJUSVRJT049eVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc6Mzk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQwLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3BpYzMybXpkYV9kZWZjb25maWc9MjQ9Q09ORklHX1NHSV9QQVJUSVRJT049eVxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZzoyNTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZy0yNi1DT05GSUdfREVWVE1QRlM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTIwLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MjY9Q09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTMyYml0X2RlZmNvbmZpZy0yNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9MzU9Q09ORklHX0JMS19ERVZfSU5URUdSSVRZPXlcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9Mjg9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctMjktIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTMxLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZz0xMj1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnOjEzOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnLTE0LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZz0xMD1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnLTEyLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0xND1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTE2LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYW1pZ2FvbmVfZGVmY29uZmlnPTIxPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYW1pZ2FvbmVfZGVmY29uZmlnLTIzLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTM0PUNPTkZJR19HRU5fUlRDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnOjM1OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy0zNi1DT05GSUdfSVJRX0FMTF9DUFVTPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jaHJwMzJfZGVmY29uZmlnPTIwPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWc6MjE6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWctMjItQ09ORklHX0lSUV9BTExfQ1BVUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc9MTE9Q09ORklHX0VQODI0OEU9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2VwODI0OGVfZGVmY29uZmlnLTEzLSMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTU9Q09ORklHX0JGU19GUz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo2OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy03LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWc9MTk9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ2FtZWN1YmVfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWctMjEtQ09ORklHX0tFWEVDPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc9MTQ9Q09ORklHX0dFTl9SVEM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMTYtQ09ORklHX0NNRExJTkU9XCYjMzQ7Y29uc29sZT10dHlTMCwxMTUyMDBcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tZ2NvZ2VfZGVmY29uZmlnPTE2PUNPTkZJR19NR0NPR0U9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZzoxNzpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZy0xOC0jIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnPTIzPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWc6MjQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWctMjUtQ09ORklHX0hJQkVSTkFUSU9OPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz00OT1DT05GSUdfSFpfMTAwMD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1MDpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTEtQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTc5PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjgwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODEtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTI2PUNPTkZJR19DUFVfRlJFUV9HT1ZfVVNFUlNQQUNFPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6Mjc6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMjgtQ09ORklHX0lSUV9BTExfQ1BVUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz02NT1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo2NjpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy02Ny1DT05GSUdfSElCRVJOQVRJT049eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzM9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnPTEzPUNPTkZJR19IWl8xMDA9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc3RvcmNlbnRlcl9kZWZjb25maWc6MTQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnLTE1LUNPTkZJR19DTURMSU5FPVwmIzM0O2NvbnNvbGU9dHR5UzAsMTE1MjAwXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvd2lpX2RlZmNvbmZpZz0xOT1DT05GSUdfUFJFRU1QVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnLTIxLUNPTkZJR19LRVhFQz15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTk4PUNPTkZJR19JT1NDSEVEX0JGUT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDAtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTI9Q09ORklHX0lPU0NIRURfQkZRPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5MzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk0LUNPTkZJR19aU1dBUD15XG4tLVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc9NDA9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWctNDEtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6NDI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnLTQzLUNPTkZJR19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTMwPUNPTkZJR19QQ0k9eVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnOjMxOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctMzItQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnPTc0PUNPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6NzU6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy03Ni1DT05GSUdfUE09eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTcyMDZfZGVmY29uZmlnPTQzPUNPTkZJR19CSU5GTVRfWkZMQVQ9eVxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9zZTcyMDZfZGVmY29uZmlnLTQ1LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZz0yMT1DT05GSUdfSE9UUExVR19QQ0k9eVxuYXJjaC9zaC9jb25maWdzL3NoMDNfZGVmY29uZmlnOjIyOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gwM19kZWZjb25maWctMjMtQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc9MjQ9Q09ORklHX1BDQ0FSRD15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZzoyNTpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMjYtQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnPTUwPUNPTkZJR19DTURMSU5FPVwmIzM0O2NvbnNvbGU9dHR5U0MwLDExNTIwMCBlYXJseXByaW50az1iaW9zIGlnbm9yZV9sb2dsZXZlbFwmIzM0O1xuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnOjUxOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctNTItQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnPTM1PUNPTkZJR19QQ0lfREVCVUc9eVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMzctQ09ORklHX0NNRExJTkVfRlJPTV9CT09UTE9BREVSPXlcbi0tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MTE9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZzoxMjpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnLTEzLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0yNz1DT05GSUdfU1VOX09QRU5QUk9NRlM9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTEtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MjpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTMtQ09ORklHX0hPU1RGUz15XG4tLVxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjI6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTMtQ09ORklHX0hPU1RGUz15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz01OT1DT05GSUdfQkxLX0NHUk9VUF9JT1BSSU89eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo2MDpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02MS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9NjA9Q09ORklHX0JMS19DR1JPVVBfSU9QUklPPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo2MTpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTYyLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xMD1DT05GSUdfQ01ETElORT1cJiMzNDtjb25zb2xlPXR0eVMwLDM4NDAwIGlwPWJvb3RwIHJvb3Q9bmZzIG5mc3Jvb3Q9L29wdC9tb250YXZpc3RhL3Byby9kZXZraXQveHRlbnNhL2xpbnV4X2JlL3RhcmdldCBtZW1tYXA9MTI4TUAwXCYjMzQ7XG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZy0xMi1DT05GSUdfTkVUPXlcbi0tXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICYjNDM7PSBsb2Nrcy5vXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXHQmIzQzOz0gYmluZm10X21pc2Mub1xuZnMvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0JJTkZNVF9TQ1JJUFQpXHQmIzQzOz0gYmluZm10X3NjcmlwdC5vXG4tLVxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy0xNjctXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcJiMzNDtmc1wmIzM0OywgZnNfc3RhdF9zeXNjdGxzKTtcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpKSB7XG5mcy9maWxlX3RhYmxlLmMtMTY5LVx0XHRzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGRyO1xuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTkyPXN0cnVjdCBsaW51eF9iaW5mbXQge1xuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTEwMS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjEwMjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXG5pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaC0xMDMtc3RydWN0IGJpbmZtdF9taXNjIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmg9NjQ9ZW51bSBybGltaXRfdHlwZSB7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTcxLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oOjcyOiNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaC03My1zdHJ1Y3QgYmluZm10X21pc2M7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oPTc2PXN0cnVjdCB1c2VyX25hbWVzcGFjZSB7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTExMy1cbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaDoxMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTExNS1cdHN0cnVjdCBiaW5mbXRfbWlzYyAqYmluZm10X21pc2M7XG4tLVxua2VybmVsL3VzZXIuYy0yMy1cbmtlcm5lbC91c2VyLmM6MjQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXIuYy0yNS1zdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcbi0tXG5rZXJuZWwvdXNlci5jPTM3PXN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnMgPSB7XG4tLVxua2VybmVsL3VzZXIuYy03NS0jZW5kaWZcbmtlcm5lbC91c2VyLmM6NzY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXIuYy03Ny1cdC5iaW5mbXRfbWlzYyA9IFx1MDAyNmluaXRfYmluZm10X21pc2MsXG4tLVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmM9MTk3PXN0YXRpYyB2b2lkIGZyZWVfdXNlcl9ucyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE3LVx0XHR9XG5rZXJuZWwvdXNlcl9uYW1lc3BhY2UuYzoyMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE5LVx0XHRrZnJlZShucy1cdTAwM2ViaW5mbXRfbWlzYyk7XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9ODM4NT1za19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04Mzk5LVx0XHRyZXR1cm4gXHUwMDI2YnBmX3NrYl9ldmVudF9vdXRwdXRfcHJvdG87XG5uZXQvY29yZS9maWx0ZXIuYzo4NDAwOiNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylcbm5ldC9jb3JlL2ZpbHRlci5jLTg0MDEtXHRjYXNlIEJQRl9GVU5DX2JpbnBybV9zZXRfaW50ZXJwOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND01PUNPTkZJR19BVURJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6NjpDT05GSUdfQklORk1UX01JU0M9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTctQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTg9Q09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0U9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6OTpDT05GSUdfQklORk1UX01JU0M9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTAtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQ9Q09ORklHX0FVRElUPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjU6Q09ORklHX0JJTkZNVF9NSVNDPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTYtQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIHdpdGggQklORk1UX01JU0MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgIHJlbGF0ZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBnZXR0aW5nIGEgQlBGIGhlbHBlciB3b3JraW5nLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWdzLCB3aGljaCBJJiMzOTt2ZSBpZGVudGlmaWVkIGFzIGBCSU5GTVRfTUlTQ2AgYW5kIGBCUEZfU1lTQ0FMTGAuIE5vdywgSSByZWNhbGwgc2VlaW5nIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCByZWxhdGVkIHRvIGBDT05GSUdfQklORk1UX01JU0NgLiBBaCwgcmlnaHQsIHRoZXJlJiMzOTtzIGFuIGAjaWYgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCBibG9jayB0aGVyZS4gVGhhdCBzdWdnZXN0cyB0aGF0IHRoZSBCUEYgaGVscGVyLCBhdCBsZWFzdCBpbiB0aGF0IGNvbnRleHQsIGlzIG9ubHkgYXZhaWxhYmxlIGlmIGBCSU5GTVRfTUlTQ2AgaXMgKmJ1aWx0LWluKiB0byB0aGUga2VybmVsLgoKU28sIGRpZ2dpbmcgYSBsaXR0bGUgZGVlcGVyLCBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCBpcyBlcXVpdmFsZW50IHRvIGBDT05GSUdfQklORk1UX01JU0M9eWAsIG5vdCBhIG1vZHVsZS4gVGhlcmVmb3JlLCBmb3IgdGhlIEJQRiBoZWxwZXIgdG8gYmUgYXZhaWxhYmxlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYEJJTkZNVF9NSVNDYCBpcyBzZXQgdG8gYHlgIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gb3JkZXIgdG8gZ2V0IGl0IGxvYWRlZC4KCkFuZCwgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgYW5kIHRoaXMgbGlrZWx5IHRpZXMgaW4gdG8gYGZzL2JpbmZtdF9taXNjLmNgLiBMZXQgbWUgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYCB0byBjb25maXJtIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIHR3byBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JJTkZNVF9NSVNDYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmMtMzEtXG5mcy9iaW5mbXRfbWlzYy5jOjMyOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL2JpbmZtdF9taXNjLmMtMzMtI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2Vcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTU3PXR5cGVkZWYgc3RydWN0IHtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTY4LVx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG5mcy9iaW5mbXRfbWlzYy5jOjY5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL2JpbmZtdF9taXNjLmMtNzAtXHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xuLS1cbmZzL2JpbmZtdF9taXNjLmM9NzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG4tLVxuZnMvYmluZm10X21pc2MuYy05MC1cbmZzL2JpbmZtdF9taXNjLmM6OTE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy05Mi1zdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAge1xuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTIxPWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG8gPSB7XG4tLVxuZnMvYmluZm10X21pc2MuYy0xMjctfTtcbmZzL2JpbmZtdF9taXNjLmM6MTI4OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmZzL2JpbmZtdF9taXNjLmMtMTI5LVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTQyPXN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTU5LVx0XHRpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuZnMvYmluZm10X21pc2MuYzoxNjA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy0xNjEtXHRcdFx0aWYgKGUtXHUwMDNlYnBmX3Byb2cpIHtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTI0Nj1zdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTI1MC1cdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuZnMvYmluZm10X21pc2MuYzoyNTE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy0yNTItXHRcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNiBlLVx1MDAzZWJwZl9wcm9nKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9NDU1PXN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtNjE1LVxuZnMvYmluZm10X21pc2MuYzo2MTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy02MTctXHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHllcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBmb3IgdGhpcy4gQnV0IGhhbmcgb24sIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgdXNpbmcgYGJwZl9wcm9nX2dldF90eXBlX3BhdGhgLiBOb3csIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBwcmVzZW5jZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgb2YgYGJwZl9wcm9nX2dldF90eXBlX3BhdGhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9wcm9nX2dldF90eXBlX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYz00NTU9c3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4tLVxuZnMvYmluZm10X21pc2MuYy02MTYtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYzo2MTc6XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG5mcy9iaW5mbXRfbWlzYy5jLTYxOC1cdFx0aWYgKElTX0VSUihlLVx1MDAzZWJwZl9wcm9nKSkge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzA4OD1zdGF0aWMgaW5saW5lIGludCBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzA5My1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzA5NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpO1xuaW5jbHVkZS9saW51eC9icGYuaC0zMDk1LWludCBhcnJheV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzQzNz1zdGF0aWMgaW5saW5lIGludCBjcHVfbWFwX2dlbmVyaWNfcmVkaXJlY3Qoc3RydWN0IGJwZl9jcHVfbWFwX2VudHJ5ICpyY3B1LFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzQ0Mi1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzQ0MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9icGYuaC0zNDQ0LVx0XHRcdFx0ZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi9pbm9kZS5jPTYxMT1zdGF0aWMgc3RydWN0IGJwZl9wcm9nICpfX2dldF9wcm9nX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvaW5vZGUuYy02MzctXG5rZXJuZWwvYnBmL2lub2RlLmM6NjM4OnN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcbmtlcm5lbC9icGYvaW5vZGUuYy02Mzkte1xuLS1cbmtlcm5lbC9icGYvaW5vZGUuYy02NTAtfVxua2VybmVsL2JwZi9pbm9kZS5jOjY1MTpFWFBPUlRfU1lNQk9MKGJwZl9wcm9nX2dldF90eXBlX3BhdGgpO1xua2VybmVsL2JwZi9pbm9kZS5jLTY1Mi1cbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X2JwZi5jPTU1PXN0YXRpYyBpbnQgX19icGZfbXRfY2hlY2tfcGF0aChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgYnBmX3Byb2cgKipyZXQpXG4tLVxubmV0L25ldGZpbHRlci94dF9icGYuYy01OS1cbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmM6NjA6XHQqcmV0ID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChwYXRoLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xubmV0L25ldGZpbHRlci94dF9icGYuYy02MS1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oKnJldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSW50ZXJwcmV0ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBhIG5ldyBCUEYgaGVscGVyLCBhbmQgdGhlbiBmaWRkbGVzIHdpdGggYGJpbmZtdF9taXNjYCBzbyB0aGF0IEJQRiBwcm9ncmFtcyBjYW4gY2hvb3NlIGFuIGludGVycHJldGVyLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3Mgc291bmQgYW5kIHJlYWNoYWJsZSDigJMgZ29vZCBzdGFydC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgLiAgV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2AuIFRoYXQgaW1wbGllcyB0aGF0IGBCSU5GTVRfTUlTQ2AgKm11c3QqIGJlIGJ1aWx0LWluLCBub3QgYSBtb2R1bGUsIHJpZ2h0PyAgSGFuZyBvbiwgYENPTkZJR19CSU5GTVRfTUlTQ2AgY2FuIGJlIHNldCB0byBlaXRoZXIgYHlgIG9yIGBtYC4gSWYgaXQmIzM5O3Mgc2V0IHRvIGBtYCwgdGhlbiBgSVNfQlVJTFRJTmAgaXMgZ29pbmcgdG8gYmUgZmFsc2UuIEhtbSwgdGhpcyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIHNldCB0byBgeWAgZm9yIHRoaXMgdG8gd29yay4gIFRoZSB0b29sIGp1c3QgdGFrZXMgdGhlIGNvbmZpZyBuYW1lOyBJIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IGA9eWAuICBJIGd1ZXNzIHN5emthbGxlciB3aWxsIGhhbmRsZSB0aGF0IGJpdCBieSBlbmFibGluZyBpdC4KCkxldCYjMzk7cyBxdWlja2x5IG91dGxpbmUgdGhlIGNvcmUgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMuICBXZSYjMzk7cmUgbG9va2luZyBhdDoKCiogICBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCAodGhlIG5ldyBCUEYgaGVscGVyKQoqICAgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAKKiAgIGBnZXRfYmluZm10X2hhbmRsZXJgCiogICBgbG9hZF9taXNjX2JpbmFyeWAKKiAgIGBjcmVhdGVfZW50cnlgCiogICBgZW50cnlfc3RhdHVzYAoKT2theSwgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGlzLiBUaGUgQlBGIGhlbHBlciBpcyBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYC4gYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAgYW5kIGBsb2FkX21pc2NfYmluYXJ5YCBhcmUgc3RhdGljLCBhbmQgYGxvYWRfbWlzY19iaW5hcnlgIGlzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgYXMgYSBiaW5mbXQgaGFuZGxlci4gQW5kIHRoYXQgb3RoZXIgb25lLCBgY3JlYXRlX2VudHJ5YCwgaXMgc3RhdGljIHRvbywgYW5kIGlzIGNhbGxlZCBmcm9tIGBibV9yZWdpc3Rlcl93cml0ZWAuICBBaCwgc28gSSBzaG91bGQgYmUgbG9va2luZyBhdCBgZnMvYmluZm10X21pc2MuY2AgZm9yIGhvdyBgYm1fcmVnaXN0ZXJfd3JpdGVgIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYz05Mjk9c3RhdGljIGludCBhZGRfZW50cnkoTm9kZSAqZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTk1Ny1cbmZzL2JpbmZtdF9taXNjLmM6OTU4OnN0YXRpYyBzc2l6ZV90IGJtX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuZnMvYmluZm10X21pc2MuYy05NTktXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTAwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBibV9yZWdpc3Rlcl9vcGVyYXRpb25zID0ge1xuZnMvYmluZm10X21pc2MuYzoxMDAzOlx0LndyaXRlXHRcdD0gYm1fcmVnaXN0ZXJfd3JpdGUsXG5mcy9iaW5mbXRfbWlzYy5jLTEwMDQtXHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCaW5hcnkgTG9hZGluZyBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgYm1fcmVnaXN0ZXJfd3JpdGVgLCBgY3JlYXRlX2VudHJ5YCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGFuZCBgZ2V0X2JpbmZtdF9oYW5kbGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc3RhdGljL2R5bmFtaWMgbmF0dXJlIGZvciB0aGlzIHNwZWNpZmljIGFuYWx5c2lzLgoKRmlyc3QsIGxldCBtZSBjb25maXJtOiBpcyBgbG9hZF9taXNjX2JpbmFyeWAgYSBzdGF0aWMgZnVuY3Rpb24/IFllcywgaXQgaXMuIEdvb2QuIFRoYXQmIzM5O3Mgb25lIGRhdGEgcG9pbnQuCgpOb3csIHdoYXQgYWJvdXQgYGJwZl9iaW5wcm1fc2V0X2ludGVycGA/IEhtbSwgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGRlZmluZWQgd2l0aCBgQlBGX0NBTExfMmAuIFdhaXQgYSBzZWNvbmTigKYgdGhhdCBgQlBGX0NBTExfMmAgbWFjcm8gaXMgZ29pbmcgdG8gZXhwYW5kIG91dCB0byBzb21ldGhpbmcgbGlrZSBgX19fX2JwZl9iaW5wcm1fc2V0X2ludGVycGAuIEdvdHRhIGNoZWNrIHRoYXQgbWFjcm8gdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGZ1bmN0aW9uIGxpbmthZ2UuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0NBTExfMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmlsdGVyLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNTk9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNC0jZGVmaW5lIEJQRl9DQUxMXzEobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgxLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYyNTojZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgyLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNi0jZGVmaW5lIEJQRl9DQUxMXzMobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgYW5kIHRoZSBCUEYgSklUKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRvIHN0YXJ0LCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2V0dGluZyB0aGUgaW50ZXJwcmV0ZXIgZm9yIGEgYmluYXJ5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSBjb21lcyBpbnRvIHBsYXkgaGVyZSwgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIGBCUEZfQ0FMTF94YCBhbmQgc2VlIGhvdyB0aGUgQlBGIEpJVCBnZXRzIGludm9rZWQgKGlmIGF0IGFsbCkgaW4gdGhpcyBwYXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGlzIGJlaW5nIHV0aWxpemVkLiBJJiMzOTttIGtlZW4gdG8gdHJhY2UgdGhlIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbiBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgbWFuaXB1bGF0aW9uIG9mIHRoZSBwcm9ncmFtIGhlYWRlcnMsIGFuZCBob3cgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjA5LVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo2MTA6I2RlZmluZSBCUEZfQ0FMTF94KHgsIGF0dHIsIG5hbWUsIC4uLilcdFx0XHRcdFx0ICAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMS1cdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipFeGFtaW5pbmcgQlBGIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlc2UgQlBGIGNhbGxzIGFyZSBkZWZpbmVkLiBUaGUgbWFjcm8gYEJQRl9DQUxMX3hgIGlzIHRoZSBrZXkgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGlzIG1hY3JvIGRlZmluZXMgYF9fX18jI25hbWVgIGFzIGFuIGlubGluZSBmdW5jdGlvbiwgYnV0ICpgbmFtZWAqIGl0c2VsZiByZXByZXNlbnRzIHRoZSBhY3R1YWwgdW5kZXJseWluZyBmdW5jdGlvbi4gU28sIGlmIEkmIzM5O20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSBpbiB0aGlzIGNhc2UgaXMgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgZ2l2ZW4gdGhlIGludHJpY2FjaWVzIG9mIEJQRiBhbmQga2VybmVsIGludGVybmFscy4KCk5vdywgd2hlcmUgY2FuIEkgZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgdXNhZ2Ugb2YgYGJwZl9iaW5wcm1fc2V0X2ludGVycGA/IFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhpcyBpcyBpbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byBsb29rIHRoZXJlIHRvIGNvbmZpcm0gbXkgaW5mZXJlbmNlIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZyBpbiB0aGUgY29udGV4dCBvZiBgYmluZm10X21pc2NgLiBMZXQgbWUgb3BlbiB0aGF0IGZpbGUgYW5kIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmM9OTY9c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xuLS1cbmZzL2JpbmZtdF9taXNjLmMtOTgtLypcbmZzL2JpbmZtdF9taXNjLmM6OTk6ICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJiMzOTtCJiMzOTsgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbmZzL2JpbmZtdF9taXNjLmMtMTAwLSAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTEwNy0gKi9cbmZzL2JpbmZtdF9taXNjLmM6MTA4OkJQRl9DQUxMXzIoYnBmX2JpbnBybV9zZXRfaW50ZXJwLCBjb25zdCBjaGFyICosIHBhdGgsIHUzMiwgbGVuKVxuZnMvYmluZm10X21pc2MuYy0xMDkte1xuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTIwLVxuZnMvYmluZm10X21pc2MuYzoxMjE6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbmZzL2JpbmZtdF9taXNjLmM6MTIyOlx0LmZ1bmNcdFx0PSBicGZfYmlucHJtX3NldF9pbnRlcnAsXG5mcy9iaW5mbXRfbWlzYy5jLTEyMy1cdC5ncGxfb25seVx0PSBmYWxzZSxcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTEzNC0gKiBAYnBmX2ludGVycDogcmVjZWl2ZXMgYSBrbWFsbG9jJiMzOTtkIGludGVycHJldGVyIHBhdGggaWYgYSAmIzM5O0ImIzM5OyBwcm9ncmFtIGNob29zZXNcbmZzL2JpbmZtdF9taXNjLmM6MTM1OiAqICAgICAgICAgICAgICBvbmUgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpOyB0aGUgY2FsbGVyIG11c3Qga2ZyZWUoKSBpdFxuZnMvYmluZm10X21pc2MuYy0xMzYtICpcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTI5MT1zdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTMwOS1cdCAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXG5mcy9iaW5mbXRfbWlzYy5jOjMxMDpcdCAqIGNob29zZXMgaXQgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpLiBPdGhlciBoYW5kbGVycyB1c2UgdGhlXG5mcy9iaW5mbXRfbWlzYy5jLTMxMS1cdCAqIGludGVycHJldGVyIHJlY29yZGVkIGF0IHJlZ2lzdHJhdGlvbi5cbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTY3Ny1cdFx0ICogQSAmIzM5O0ImIzM5OyAoQlBGKSBoYW5kbGVyIGNhcnJpZXMgbm8gaW50ZXJwcmV0ZXIgb2YgaXRzIG93bjsgdGhlXG5mcy9iaW5mbXRfbWlzYy5jOjY3ODpcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG5mcy9iaW5mbXRfbWlzYy5jLTY3OS1cdFx0ICogc3RhdGljYWxseSByZWdpc3RlcmVkIG9uZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEJpbkZtdF9NaXNjIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG5ldyBCUEYgbWF0Y2hpbmcgZm9yIGBiaW5mbXRfbWlzY2AgZmVhdHVyZSwgYW5kIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24gc2VlbSB0byBiZTogYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBibV9yZWdpc3Rlcl93cml0ZWAuIFRob3NlIGFyZSB0aGUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBhZGRpdGlvbi4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcmVtZW1iZXIgYXJlIGBCSU5GTVRfTUlTQ2AgKG9idmlvdXNseSksIGFuZCBgQlBGX1NZU0NBTExgLiBUaGlzIGlzIGFic29sdXRlbHkgcmlwZSBmb3IgZnV6emluZy4gQSBuZXcgZmVhdHVyZSBsaWtlIHRoaXMgYWx3YXlzIGFkZHMgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGRlcGVuZGVuY2llcywgdGhvdWdoLgoKUmlnaHQsIGBDT05GSUdfQklORk1UX01JU0NgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBzdXBwb3J0aW5nIGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQmIzM5O3MgaW1wbGljaXRseSBpbmNsdWRlZCBvciBhc3N1bWVkLiBPa2F5LCBJIHNlZSB0aGF0IGBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVJgIGlzIHVzZWQgYXMgd2VsbCwgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEFsc28sIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2lub2RlLmNgLiBUaGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCByaWdodD8gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyB0cnVzdCwgYnV0IHZlcmlmeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCUEYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lub2RlXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ1OQoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBhbmQgQmluYXJ5IEZvcm1hdCBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlub2RlLm9gIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgc2V0cyB0aGUgc3RhZ2UgZm9yIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkby4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW50ZXJjb25uZWN0aW9ucy4KCkxldCYjMzk7cyBzZWUsIG15IGtleSBzeW1ib2xzIGZvciBleGFtaW5hdGlvbiBhcmU6IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBsb2FkX21pc2NfYmluYXJ5YCwgYGNyZWF0ZV9lbnRyeWAsIGFuZCBgYm1fcmVnaXN0ZXJfd3JpdGVgLgoKV2FpdCBhIG1pbnV0ZSwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgdGhhdCYjMzk7cyBhIEJQRiBoZWxwZXIhIEl0JiMzOTtzIGludm9rZWQgYnkgQlBGIHByb2dyYW1zLCBpbnRlcmVzdGluZy4gQW5kIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgIGlzIGNhbGxlZCBieSBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgbG9hZF9taXNjX2JpbmFyeWAuIEFoLWhhLCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiBhIGJpbmFyeS4gQW5kIGl0IHNlZW1zIHRoYXQgYGNyZWF0ZV9lbnRyeWAgaXMgY2FsbGVkIGZyb20gYGJtX3JlZ2lzdGVyX3dyaXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSBgYm1fcmVnaXN0ZXJfd3JpdGVgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gYC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcmAuCgpBbHJpZ2h0LCB0aGVzZSBhcmUgYWxsIHNvbGlkIGZvY3VzIHN5bWJvbHMsIHRoZXkgc2VlbSB0byBoaWdobGlnaHQgdGhlIHJpZ2h0IGFyZWFzLiBJJiMzOTttIHNhdGlzZmllZC4gSSYjMzk7bGwgZmluYWxpemUgdGhlIHJlc3VsdHMgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjE1LjY3OTIxNTE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNDUwMDE1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2JpbnBybV9zZXRfaW50ZXJwXCIsXG4gICAgXCJzZWFyY2hfYmluZm10X2hhbmRsZXJcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwibG9hZF9taXNjX2JpbmFyeVwiLFxuICAgIFwiY3JlYXRlX2VudHJ5XCIsXG4gICAgXCJibV9yZWdpc3Rlcl93cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgJ0InIChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MTUuNjc5MjI2NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1ODcwMjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2ZmI0MGI0MzFmYjU1NGVjYzRhMWEyODU4MDYyODE5ZjRmNTZjNDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgNCAyMTozMToxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi5jZjY2OThkNTljOWYwNCAxMDA2NDRcXG4tLS0gYS9mcy9iaW5mbXRfbWlzYy5jXFxuKysrIGIvZnMvYmluZm10X21pc2MuY1xcbkBAIC0yOSw2ICsyOSwxMSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gXFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsdGVyLmhcXHUwMDNlXFxuKyNlbmRpZlxcbitcXG4gI2luY2x1ZGUgXFxcImludGVybmFsLmhcXFwiXFxuIFxcbiAjaWZkZWYgREVCVUdcXG5AQCAtNDEsMTIgKzQ2LDE0IEBAIGVudW0ge1xcbiBcXHRWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi9cXG4gfTtcXG4gXFxuLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTtcXG4rZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XFxuICNkZWZpbmUgTUlTQ19GTVRfUFJFU0VSVkVfQVJHVjAgKDFVTCBcXHUwMDNjXFx1MDAzYyAzMSlcXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0JJTkFSWSAoMVVMIFxcdTAwM2NcXHUwMDNjIDMwKVxcbiAjZGVmaW5lIE1JU0NfRk1UX0NSRURFTlRJQUxTICgxVUwgXFx1MDAzY1xcdTAwM2MgMjkpXFxuICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgXFx1MDAzY1xcdTAwM2MgMjgpXFxuIFxcbitzdHJ1Y3QgYnBmX3Byb2c7XFxuK1xcbiB0eXBlZGVmIHN0cnVjdCB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXHRcXHQvKiB0eXBlLCBzdGF0dXMsIGV0Yy4gKi9cXG5AQCAtNTksNiArNjYsOSBAQCB0eXBlZGVmIHN0cnVjdCB7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4gXFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xcbiBcXHRyZWZjb3VudF90IHVzZXJzO1xcdFxcdC8qIHN5bmMgcmVtb3ZhbCB3aXRoIGxvYWRfbWlzY19iaW5hcnkoKSAqL1xcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuK1xcdHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2c7XFxuKyNlbmRpZlxcbiB9IE5vZGU7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcXG5AQCAtNzgsMTAgKzg4LDUxIEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKi9cXG4gI2RlZmluZSBNQVhfUkVHSVNURVJfTEVOR1RIIDE5MjBcXG4gXFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwIHtcXG4rXFx0Y2hhciBwYXRoW1BBVEhfTUFYXTtcXG4rXFx0aW50IGxlbjtcXHQvKiBcXHUwMDNjIDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi9cXG4rfTtcXG4rc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xcbitcXG4rLypcXG4rICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJ0InIHByb2dyYW0gcGljayB0aGUgaW50ZXJwcmV0ZXIuXFxuKyAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcXG4rICogQGxlbjogIG51bWJlciBvZiBieXRlcyBpbiBAcGF0aFxcbisgKlxcbisgKiBUaGUgcHJvZ3JhbSBjb21wdXRlcyB0aGUgaW50ZXJwcmV0ZXIgcGF0aCBob3dldmVyIGl0IHNlZXMgZml0IChlLmcuIHJlbGF0aXZlXFxuKyAqIHRvIHRoZSBiaW5hcnkpLiBUaGUgcGF0aCBpcyBzdGFzaGVkIG9uIGEgcGVyLUNQVSBhcmVhIHRoYXQgYmluZm10X21pc2MgcmVhZHNcXG4rICogYmFjayBpbW1lZGlhdGVseSBhZnRlciBydW5uaW5nIHRoZSBwcm9ncmFtIHVuZGVyIG1pZ3JhdGVfZGlzYWJsZSgpLCBzbyBpdFxcbisgKiBjYW5ub3QgcmFjZSB3aXRoIGFub3RoZXIgQ1BVLlxcbisgKi9cXG4rQlBGX0NBTExfMihicGZfYmlucHJtX3NldF9pbnRlcnAsIGNvbnN0IGNoYXIgKiwgcGF0aCwgdTMyLCBsZW4pXFxuK3tcXG4rXFx0c3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYyA9IHRoaXNfY3B1X3B0cihcXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xcbitcXG4rXFx0aWYgKGxlbiA9PSAwIHx8IGxlbiBcXHUwMDNlPSBQQVRIX01BWClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdC8qIEBwYXRoIGlzIEBsZW4gYnl0ZXMgb2YgQlBGIG1lbW9yeSBhbmQgaXMgbm90IE5VTC10ZXJtaW5hdGVkLiAqL1xcbitcXHRtZW1jcHkoc2MtXFx1MDAzZXBhdGgsIHBhdGgsIGxlbik7XFxuK1xcdHNjLVxcdTAwM2VwYXRoW2xlbl0gPSAnXFxcXDAnO1xcbitcXHRzYy1cXHUwMDNlbGVuID0gbGVuO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcXG4rXFx0LmZ1bmNcXHRcXHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcXG4rXFx0LmdwbF9vbmx5XFx0PSBmYWxzZSxcXG4rXFx0LnJldF90eXBlXFx0PSBSRVRfSU5URUdFUixcXG4rXFx0LmFyZzFfdHlwZVxcdD0gQVJHX1BUUl9UT19NRU0gfCBNRU1fUkRPTkxZLFxcbitcXHQuYXJnMl90eXBlXFx0PSBBUkdfQ09OU1RfU0laRSxcXG4rfTtcXG4rI2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbitcXG4gLyoqXFxuICAqIHNlYXJjaF9iaW5mbXRfaGFuZGxlciAtIHNlYXJjaCBmb3IgYSBiaW5hcnkgaGFuZGxlciBmb3IgQGJwcm1cXG4gICogQG1pc2M6IGhhbmRsZSB0byBiaW5mbXRfbWlzYyBpbnN0YW5jZVxcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXFxuKyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MnZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJ0InIHByb2dyYW0gY2hvb3Nlc1xcbisgKiAgICAgICAgICAgICAgb25lIHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKTsgdGhlIGNhbGxlciBtdXN0IGtmcmVlKCkgaXRcXG4gICpcXG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XFxuICAqIHR5cGUgaGFuZGxlcnMuXFxuQEAgLTg5LDcgKzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXFxuICAqL1xcbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4tXFx0XFx0XFx0XFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcXG4rXFx0XFx0XFx0XFx0ICAgY2hhciAqKmJwZl9pbnRlcnApXFxuIHtcXG4gXFx0Y2hhciAqcCA9IHN0cnJjaHIoYnBybS1cXHUwMDNlaW50ZXJwLCAnLicpO1xcbiBcXHROb2RlICplO1xcbkBAIC0xMDMsNiArMTU1LDM3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiBcXHRcXHRpZiAoIXRlc3RfYml0KEVuYWJsZWQsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0LyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gQlBGIGlmIGFwcGxpY2FibGUuICovXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChCcGYsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpIHtcXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbitcXHRcXHRcXHRpZiAoZS1cXHUwMDNlYnBmX3Byb2cpIHtcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYztcXG4rXFx0XFx0XFx0XFx0dTMyIHJldDtcXG4rXFxuK1xcdFxcdFxcdFxcdG1pZ3JhdGVfZGlzYWJsZSgpO1xcbitcXHRcXHRcXHRcXHRzYyA9IHRoaXNfY3B1X3B0cihcXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xcbitcXHRcXHRcXHRcXHRzYy1cXHUwMDNlbGVuID0gLTE7XFxuK1xcbitcXHRcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdFxcdFxcdFxcdHJldCA9IGJwZl9wcm9nX3J1bihlLVxcdTAwM2VicGZfcHJvZywgYnBybS1cXHUwMDNlYnVmKTtcXG4rXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcbitcXHRcXHRcXHRcXHRpZiAocmV0ID09IDEgXFx1MDAyNlxcdTAwMjYgc2MtXFx1MDAzZWxlbiBcXHUwMDNlIDApXFxuK1xcdFxcdFxcdFxcdFxcdCpicGZfaW50ZXJwID0ga21lbWR1cF9udWwoc2MtXFx1MDAzZXBhdGgsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc2MtXFx1MDAzZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0XFx0XFx0bWlncmF0ZV9lbmFibGUoKTtcXG4rXFxuK1xcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJiaW5mbXRfbWlzYzogcmFuIEJQRiBwcm9ncmFtIGZvciAlcywgcmV0ID0gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBicHJtLVxcdTAwM2VmaWxlbmFtZSwgcmV0KTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChyZXQgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGU7XFxuK1xcdFxcdFxcdH1cXG4rI2VuZGlmXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiBEbyBtYXRjaGluZyBiYXNlZCBvbiBleHRlbnNpb24gaWYgYXBwbGljYWJsZS4gKi9cXG4gXFx0XFx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRcXHRpZiAocCBcXHUwMDI2XFx1MDAyNiAhc3RyY21wKGUtXFx1MDAzZW1hZ2ljLCBwICsgMSkpXFxuQEAgLTEzOSwxMiArMjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXFxuICAqL1xcbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4tXFx0XFx0XFx0XFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcXG4rXFx0XFx0XFx0XFx0Y2hhciAqKmJwZl9pbnRlcnApXFxuIHtcXG4gXFx0Tm9kZSAqZTtcXG4gXFxuIFxcdHJlYWRfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcXG4rXFx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcXG4gXFx0aWYgKGUpXFxuIFxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2ZS1cXHUwMDNldXNlcnMpO1xcbiBcXHRyZWFkX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG5AQCAtMTY0LDYgKzI0OCwxMCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcXG4gXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2ZS1cXHUwMDNldXNlcnMpKSB7XFxuIFxcdFxcdGlmIChlLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcXG4gXFx0XFx0XFx0ZmlscF9jbG9zZShlLVxcdTAwM2VpbnRlcnBfZmlsZSwgTlVMTCk7XFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rXFx0XFx0aWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNiBlLVxcdTAwM2VicGZfcHJvZylcXG4rXFx0XFx0XFx0YnBmX3Byb2dfcHV0KGUtXFx1MDAzZWJwZl9wcm9nKTtcXG4rI2VuZGlmXFxuIFxcdFxcdGtmcmVlKGUpO1xcbiBcXHR9XFxuIH1cXG5AQCAtMjA2LDE1ICsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdHN0cnVjdCBmaWxlICppbnRlcnBfZmlsZSA9IE5VTEw7XFxuIFxcdGludCByZXR2YWwgPSAtRU5PRVhFQztcXG4gXFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xcbitcXHRjaGFyICpicGZfaW50ZXJwIF9fZnJlZShrZnJlZSkgPSBOVUxMO1xcbitcXHRjb25zdCBjaGFyICppbnRlcnByZXRlcjtcXG4gXFxuIFxcdG1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7XFxuIFxcdGlmICghbWlzYy1cXHUwMDNlZW5hYmxlZClcXG4gXFx0XFx0cmV0dXJuIHJldHZhbDtcXG4gXFxuLVxcdGZtdCA9IGdldF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcXG4rXFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFxcdTAwMjZicGZfaW50ZXJwKTtcXG4gXFx0aWYgKCFmbXQpXFxuIFxcdFxcdHJldHVybiByZXR2YWw7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBBICdCJyAoQlBGKSBoYW5kbGVyIGNhcnJpZXMgbm8gaW50ZXJwcmV0ZXIgb2YgaXRzIG93bjsgdGhlIHByb2dyYW1cXG4rXFx0ICogY2hvb3NlcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIE90aGVyIGhhbmRsZXJzIHVzZSB0aGVcXG4rXFx0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxcbitcXHQgKi9cXG4rXFx0aW50ZXJwcmV0ZXIgPSBicGZfaW50ZXJwID8gYnBmX2ludGVycCA6IGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXI7XFxuK1xcdHJldHZhbCA9IC1FTk9FWEVDO1xcbitcXHRpZiAoIWludGVycHJldGVyWzBdKVxcbitcXHRcXHRnb3RvIHJldDtcXG4rXFxuIFxcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cXG4gXFx0cmV0dmFsID0gLUVOT0VOVDtcXG4gXFx0aWYgKGJwcm0tXFx1MDAzZWludGVycF9mbGFncyBcXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcXG5AQCAtMjM4LDIyICszMzgsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdGJwcm0tXFx1MDAzZWFyZ2MrKztcXG4gXFxuIFxcdC8qIGFkZCB0aGUgaW50ZXJwIGFzIGFyZ3ZbMF0gKi9cXG4tXFx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXIsIGJwcm0pO1xcbitcXHRyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoaW50ZXJwcmV0ZXIsIGJwcm0pO1xcbiBcXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byByZXQ7XFxuIFxcdGJwcm0tXFx1MDAzZWFyZ2MrKztcXG4gXFxuIFxcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xcbi1cXHRyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoZm10LVxcdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XFxuK1xcdHJldHZhbCA9IGJwcm1fY2hhbmdlX2ludGVycChpbnRlcnByZXRlciwgYnBybSk7XFxuIFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHJldDtcXG4gXFxuLVxcdGlmIChmbXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSB7XFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBwcmUtb3BlbmVkIGludGVycF9maWxlIChNSVNDX0ZNVF9PUEVOX0ZJTEUgLyAnRicgZmxhZykgb25seVxcbitcXHQgKiBhcHBsaWVzIHRvIHRoZSBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgaW50ZXJwcmV0ZXI7IGEgcHJvZ3JhbS1zdXBwbGllZFxcbitcXHQgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLlxcbitcXHQgKi9cXG4rXFx0aWYgKChmbXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcXHUwMDI2XFx1MDAyNiAhYnBmX2ludGVycCkge1xcbiBcXHRcXHRpbnRlcnBfZmlsZSA9IGZpbGVfY2xvbmVfb3BlbihmbXQtXFx1MDAzZWludGVycF9maWxlKTtcXG4gXFx0XFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxcbiBcXHRcXHRcXHRkZW55X3dyaXRlX2FjY2VzcyhpbnRlcnBfZmlsZSk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRpbnRlcnBfZmlsZSA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcik7XFxuIFxcdH1cXG4gXFx0cmV0dmFsID0gUFRSX0VSUihpbnRlcnBfZmlsZSk7XFxuIFxcdGlmIChJU19FUlIoaW50ZXJwX2ZpbGUpKVxcbkBAIC00MDQsNiArNTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbiBcXHRcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IHR5cGU6IE0gKG1hZ2ljKVxcXFxuXFxcIik7XFxuIFxcdFxcdGUtXFx1MDAzZWZsYWdzID0gKDEgXFx1MDAzY1xcdTAwM2MgRW5hYmxlZCkgfCAoMSBcXHUwMDNjXFx1MDAzYyBNYWdpYyk7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlICdCJzpcXG4rXFx0XFx0cHJfZGVidWcoXFxcInJlZ2lzdGVyOiB0eXBlOiBCIChicGYpXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZS1cXHUwMDNlZmxhZ3MgPSAoMSBcXHUwMDNjXFx1MDAzYyBFbmFibGVkKSB8ICgxIFxcdTAwM2NcXHUwMDNjIEJwZik7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRnb3RvIGVpbnZhbDtcXG4gXFx0fVxcbkBAIC00OTIsNiArNjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbiBcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbitcXHR9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHQvKiBIYW5kbGUgdGhlICdCJyAoQlBGKSBmb3JtYXQuICovXFxuK1xcdFxcdGNoYXIgKnM7XFxuK1xcbitcXHRcXHQvKiBUaGUgb2Zmc2V0IGZpZWxkIGFjdHVhbGx5IGhvbGRzIHRoZSBwaW5uZWQgQlBGIHByb2dyYW0gcGF0aCAqL1xcbitcXHRcXHRzID0gc3RyY2hyKHAsIGRlbCk7XFxuK1xcdFxcdGlmICghcylcXG4rXFx0XFx0XFx0Z290byBlaW52YWw7XFxuK1xcdFxcdCpzKysgPSAnXFxcXDAnO1xcbitcXHRcXHRlLVxcdTAwM2VtYWdpYyA9IHA7IC8qIEtlZXAgcGF0aCBpbiBlLVxcdTAwM2VtYWdpYyAqL1xcbitcXHRcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IGJwZiBwcm9ncmFtIHBhdGg6ICVzXFxcXG5cXFwiLCBlLVxcdTAwM2VtYWdpYyk7XFxuK1xcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuK1xcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVxcdTAwM2VtYWdpYywgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSKTtcXG4rXFx0XFx0aWYgKElTX0VSUihlLVxcdTAwM2VicGZfcHJvZykpIHtcXG4rXFx0XFx0XFx0ZXJyID0gUFRSX0VSUihlLVxcdTAwM2VicGZfcHJvZyk7XFxuK1xcdFxcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gTlVMTDtcXG4rXFx0XFx0XFx0a2ZyZWUoZSk7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdH1cXG4rI2Vsc2VcXG4rXFx0XFx0Z290byBlaW52YWw7XFxuKyNlbmRpZlxcbitcXG4rXFx0XFx0cCA9IHM7XFxuK1xcbitcXHRcXHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXFxuK1xcdFxcdHMgPSBzdHJjaHIocCwgZGVsKTtcXG4rXFx0XFx0aWYgKCFzIHx8IHAgIT0gcylcXG4rXFx0XFx0XFx0Z290byBlaW52YWw7XFxuK1xcdFxcdCpzKysgPSAnXFxcXDAnO1xcbitcXHRcXHRwID0gcztcXG4rXFxuK1xcdFxcdC8qIFRoZSBtYXNrIGZpZWxkIGlzIHVudXNlZCwgbXVzdCBiZSBlbXB0eSAqL1xcbitcXHRcXHRzID0gc3RyY2hyKHAsIGRlbCk7XFxuK1xcdFxcdGlmICghcyB8fCBwICE9IHMpXFxuK1xcdFxcdFxcdGdvdG8gZWludmFsO1xcbitcXHRcXHQqcysrID0gJ1xcXFwwJztcXG4rXFx0XFx0cCA9IHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qIEhhbmRsZSB0aGUgJ0UnIChleHRlbnNpb24pIGZvcm1hdC4gKi9cXG4gXFxuQEAgLTUyNCw4ICs2NzIsMTcgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXFxuIFxcdGlmICghcClcXG4gXFx0XFx0Z290byBlaW52YWw7XFxuIFxcdCpwKysgPSAnXFxcXDAnO1xcbi1cXHRpZiAoIWUtXFx1MDAzZWludGVycHJldGVyWzBdKVxcbitcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcXG4rXFx0XFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXFxuK1xcdFxcdCAqIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBvbmUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoZS1cXHUwMDNlaW50ZXJwcmV0ZXJbMF0pXFxuK1xcdFxcdFxcdGdvdG8gZWludmFsO1xcbitcXHR9IGVsc2UgaWYgKCFlLVxcdTAwM2VpbnRlcnByZXRlclswXSkge1xcbiBcXHRcXHRnb3RvIGVpbnZhbDtcXG4rXFx0fVxcbiBcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IGludGVycHJldGVyOiB7JXN9XFxcXG5cXFwiLCBlLVxcdTAwM2VpbnRlcnByZXRlcik7XFxuIFxcbiBcXHQvKiBQYXJzZSB0aGUgJ2ZsYWdzJyBmaWVsZC4gKi9cXG5AQCAtNjAyLDcgKzc1OSw5IEBAIHN0YXRpYyB2b2lkIGVudHJ5X3N0YXR1cyhOb2RlICplLCBjaGFyICpwYWdlKVxcbiBcXHRcXHQqZHArKyA9ICdGJztcXG4gXFx0KmRwKysgPSAnXFxcXG4nO1xcbiBcXG4tXFx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdHNwcmludGYoZHAsIFxcXCJicGYgJXNcXFxcblxcXCIsIGUtXFx1MDAzZW1hZ2ljKTtcXG4rXFx0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpIHtcXG4gXFx0XFx0c3ByaW50ZihkcCwgXFxcImV4dGVuc2lvbiAuJXNcXFxcblxcXCIsIGUtXFx1MDAzZW1hZ2ljKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZHAgKz0gc3ByaW50ZihkcCwgXFxcIm9mZnNldCAlaVxcXFxubWFnaWMgXFxcIiwgZS1cXHUwMDNlb2Zmc2V0KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmhcXG5pbmRleCA3NzE5ZjY1Mjg0NDU2MC4uM2FlZjQ0YjY5NGJkMGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnBmLmhcXG5AQCAtMzg3NCw2ICszODc0LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87XFxuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jb21tX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90bztcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXFxuaW5kZXggODliMzZkZTVmZGJiNmQuLmRjZTE1NWM1YmJkNzVlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxcbkBAIC02MTQyLDYgKzYxNDIsNyBAQCB1bmlvbiBicGZfYXR0ciB7XFxuIFxcdEZOKHVzZXJfcmluZ2J1Zl9kcmFpbiwgMjA5LCAjI2N0eClcXHRcXHRcXFxcXFxuIFxcdEZOKGNncnBfc3RvcmFnZV9nZXQsIDIxMCwgIyNjdHgpXFx0XFx0XFxcXFxcbiBcXHRGTihjZ3JwX3N0b3JhZ2VfZGVsZXRlLCAyMTEsICMjY3R4KVxcdFxcdFxcXFxcXG4rXFx0Rk4oYmlucHJtX3NldF9pbnRlcnAsIDIxMiwgIyNjdHgpXFx0XFx0XFxcXFxcbiBcXHQvKiBUaGlzIGhlbHBlciBsaXN0IGlzIGVmZmVjdGl2ZWx5IGZyb3plbi4gSWYgeW91IGFyZSB0cnlpbmcgdG9cXHRcXFxcXFxuIFxcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcXHRcXFxcXFxuIFxcdCAqIGxlc3Mgc3RhYmlsaXR5IGd1YXJhbnRlZXMuIFNlZSBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXFxuaW5kZXggMmU5NmI0Yjg0N2NlMTIuLjE4NzY5MmE0YTRiNjdiIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2ZpbHRlci5jXFxuKysrIGIvbmV0L2NvcmUvZmlsdGVyLmNcXG5AQCAtODM5Nyw2ICs4Mzk3LDE0IEBAIHNrX2ZpbHRlcl9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiBcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl9nZXRfc29ja2V0X3VpZF9wcm90bztcXG4gXFx0Y2FzZSBCUEZfRlVOQ19wZXJmX2V2ZW50X291dHB1dDpcXG4gXFx0XFx0cmV0dXJuIFxcdTAwMjZicGZfc2tiX2V2ZW50X291dHB1dF9wcm90bztcXG4rI2lmIElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKVxcbitcXHRjYXNlIEJQRl9GVU5DX2JpbnBybV9zZXRfaW50ZXJwOlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW5cXG4rXFx0XFx0ICogaW50ZXJwcmV0ZXI7IGV4cG9zZSB0aGUgaGVscGVyIHRoYXQgbGV0cyB0aGVtIHNldCBpdC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJldHVybiBcXHUwMDI2YnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xcbisjZW5kaWZcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MTYuMDM5MTM5OTk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk4NTA2ODc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwiZ2V0X2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJjcmVhdGVfZW50cnlcIixcbiAgICBcImJtX3JlZ2lzdGVyX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAnQicgKEJQRikgaGFuZGxlciB0eXBlIGZvciBiaW5mbXRfbWlzYywgYWxsb3dpbmcgQlBGIHByb2dyYW1zIHRvIG1hdGNoIGJpbmFyaWVzIGFuZCBzZWxlY3QgaW50ZXJwcmV0ZXJzLiBUaGlzIGFkZHMgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIGJpbmZtdF9taXNjIHJlZ2lzdHJhdGlvbiBhbmQgYmluYXJ5IGV4ZWN1dGlvbiBwYXRocywgYXMgd2VsbCBhcyBhIG5ldyBCUEYgaGVscGVyIGZ1bmN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2ZmI0MGI0MzFmYjU1NGVjYzRhMWEyODU4MDYyODE5ZjRmNTZjNDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDIxOjMxOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X21pc2MuYyBiL2ZzL2JpbmZtdF9taXNjLmNcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi5jZjY2OThkNTljOWYwNCAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcbisrKyBiL2ZzL2JpbmZtdF9taXNjLmNcbkBAIC0yOSw2ICsyOSwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiBcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuKyNlbmRpZlxuK1xuICNpbmNsdWRlIFwiaW50ZXJuYWwuaFwiXG4gXG4gI2lmZGVmIERFQlVHXG5AQCAtNDEsMTIgKzQ2LDE0IEBAIGVudW0ge1xuIFx0VkVSQk9TRV9TVEFUVVMgPSAxIC8qIG1ha2UgaXQgemVybyB0byBzYXZlIDQwMCBieXRlcyBrZXJuZWwgbWVtb3J5ICovXG4gfTtcbiBcbi1lbnVtIHtFbmFibGVkLCBNYWdpY307XG4rZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XG4gI2RlZmluZSBNSVNDX0ZNVF9QUkVTRVJWRV9BUkdWMCAoMVVMIFx1MDAzY1x1MDAzYyAzMSlcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fQklOQVJZICgxVUwgXHUwMDNjXHUwMDNjIDMwKVxuICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCBcdTAwM2NcdTAwM2MgMjkpXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4rc3RydWN0IGJwZl9wcm9nO1xuK1xuIHR5cGVkZWYgc3RydWN0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XHRcdC8qIHR5cGUsIHN0YXR1cywgZXRjLiAqL1xuQEAgLTU5LDYgKzY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK1x0c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZztcbisjZW5kaWZcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtNzgsMTAgKzg4LDUxIEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqL1xuICNkZWZpbmUgTUFYX1JFR0lTVEVSX0xFTkdUSCAxOTIwXG4gXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK3N0cnVjdCBiaW5mbXRfYnBmX2ludGVycCB7XG4rXHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuK1x0aW50IGxlbjtcdC8qIFx1MDAzYyAwIGlmIHRoZSBjdXJyZW50IHByb2dyYW0gc2V0IG5vIGludGVycHJldGVyICovXG4rfTtcbitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwLCBiaW5mbXRfYnBmX2ludGVycCk7XG4rXG4rLypcbisgKiBicGZfYmlucHJtX3NldF9pbnRlcnAgLSBsZXQgYSBiaW5mbXRfbWlzYyAnQicgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbisgKiBAcGF0aDogaW50ZXJwcmV0ZXIgcGF0aCwgaW4gQlBGLWFjY2Vzc2libGUgbWVtb3J5XG4rICogQGxlbjogIG51bWJlciBvZiBieXRlcyBpbiBAcGF0aFxuKyAqXG4rICogVGhlIHByb2dyYW0gY29tcHV0ZXMgdGhlIGludGVycHJldGVyIHBhdGggaG93ZXZlciBpdCBzZWVzIGZpdCAoZS5nLiByZWxhdGl2ZVxuKyAqIHRvIHRoZSBiaW5hcnkpLiBUaGUgcGF0aCBpcyBzdGFzaGVkIG9uIGEgcGVyLUNQVSBhcmVhIHRoYXQgYmluZm10X21pc2MgcmVhZHNcbisgKiBiYWNrIGltbWVkaWF0ZWx5IGFmdGVyIHJ1bm5pbmcgdGhlIHByb2dyYW0gdW5kZXIgbWlncmF0ZV9kaXNhYmxlKCksIHNvIGl0XG4rICogY2Fubm90IHJhY2Ugd2l0aCBhbm90aGVyIENQVS5cbisgKi9cbitCUEZfQ0FMTF8yKGJwZl9iaW5wcm1fc2V0X2ludGVycCwgY29uc3QgY2hhciAqLCBwYXRoLCB1MzIsIGxlbilcbit7XG4rXHRzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgKnNjID0gdGhpc19jcHVfcHRyKFx1MDAyNmJpbmZtdF9icGZfaW50ZXJwKTtcbitcbitcdGlmIChsZW4gPT0gMCB8fCBsZW4gXHUwMDNlPSBQQVRIX01BWClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHQvKiBAcGF0aCBpcyBAbGVuIGJ5dGVzIG9mIEJQRiBtZW1vcnkgYW5kIGlzIG5vdCBOVUwtdGVybWluYXRlZC4gKi9cbitcdG1lbWNweShzYy1cdTAwM2VwYXRoLCBwYXRoLCBsZW4pO1xuK1x0c2MtXHUwMDNlcGF0aFtsZW5dID0gJ1xcMCc7XG4rXHRzYy1cdTAwM2VsZW4gPSBsZW47XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbitcdC5mdW5jXHRcdD0gYnBmX2JpbnBybV9zZXRfaW50ZXJwLFxuK1x0LmdwbF9vbmx5XHQ9IGZhbHNlLFxuK1x0LnJldF90eXBlXHQ9IFJFVF9JTlRFR0VSLFxuK1x0LmFyZzFfdHlwZVx0PSBBUkdfUFRSX1RPX01FTSB8IE1FTV9SRE9OTFksXG4rXHQuYXJnMl90eXBlXHQ9IEFSR19DT05TVF9TSVpFLFxuK307XG4rI2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuK1xuIC8qKlxuICAqIHNlYXJjaF9iaW5mbXRfaGFuZGxlciAtIHNlYXJjaCBmb3IgYSBiaW5hcnkgaGFuZGxlciBmb3IgQGJwcm1cbiAgKiBAbWlzYzogaGFuZGxlIHRvIGJpbmZtdF9taXNjIGluc3RhbmNlXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxuKyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MnZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJ0InIHByb2dyYW0gY2hvb3Nlc1xuKyAqICAgICAgICAgICAgICBvbmUgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpOyB0aGUgY2FsbGVyIG11c3Qga2ZyZWUoKSBpdFxuICAqXG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XG4gICogdHlwZSBoYW5kbGVycy5cbkBAIC04OSw3ICsxNDAsOCBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG4gc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4tXHRcdFx0XHQgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuK1x0XHRcdFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbitcdFx0XHRcdCAgIGNoYXIgKipicGZfaW50ZXJwKVxuIHtcbiBcdGNoYXIgKnAgPSBzdHJyY2hyKGJwcm0tXHUwMDNlaW50ZXJwLCAnLicpO1xuIFx0Tm9kZSAqZTtcbkBAIC0xMDMsNiArMTU1LDM3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIFx0XHRpZiAoIXRlc3RfYml0KEVuYWJsZWQsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHQvKiBEbyBtYXRjaGluZyBiYXNlZCBvbiBCUEYgaWYgYXBwbGljYWJsZS4gKi9cbitcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4rXHRcdFx0aWYgKGUtXHUwMDNlYnBmX3Byb2cpIHtcbitcdFx0XHRcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2M7XG4rXHRcdFx0XHR1MzIgcmV0O1xuK1xuK1x0XHRcdFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4rXHRcdFx0XHRzYyA9IHRoaXNfY3B1X3B0cihcdTAwMjZiaW5mbXRfYnBmX2ludGVycCk7XG4rXHRcdFx0XHRzYy1cdTAwM2VsZW4gPSAtMTtcbitcbitcdFx0XHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0XHRcdHJldCA9IGJwZl9wcm9nX3J1bihlLVx1MDAzZWJwZl9wcm9nLCBicHJtLVx1MDAzZWJ1Zik7XG4rXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcbitcdFx0XHRcdGlmIChyZXQgPT0gMSBcdTAwMjZcdTAwMjYgc2MtXHUwMDNlbGVuIFx1MDAzZSAwKVxuK1x0XHRcdFx0XHQqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLVx1MDAzZXBhdGgsXG4rXHRcdFx0XHRcdFx0XHRcdCAgc2MtXHUwMDNlbGVuLFxuK1x0XHRcdFx0XHRcdFx0XHQgIEdGUF9BVE9NSUMpO1xuK1x0XHRcdFx0bWlncmF0ZV9lbmFibGUoKTtcbitcbitcdFx0XHRcdHByX2RlYnVnKFwiYmluZm10X21pc2M6IHJhbiBCUEYgcHJvZ3JhbSBmb3IgJXMsIHJldCA9ICV1XFxuXCIsXG4rXHRcdFx0XHRcdCBicHJtLVx1MDAzZWZpbGVuYW1lLCByZXQpO1xuK1xuK1x0XHRcdFx0aWYgKHJldCA9PSAxKVxuK1x0XHRcdFx0XHRyZXR1cm4gZTtcbitcdFx0XHR9XG4rI2VuZGlmXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0LyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gZXh0ZW5zaW9uIGlmIGFwcGxpY2FibGUuICovXG4gXHRcdGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdFx0aWYgKHAgXHUwMDI2XHUwMDI2ICFzdHJjbXAoZS1cdTAwM2VtYWdpYywgcCArIDEpKVxuQEAgLTEzOSwxMiArMjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4rXHRcdFx0XHRzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLFxuK1x0XHRcdFx0Y2hhciAqKmJwZl9pbnRlcnApXG4ge1xuIFx0Tm9kZSAqZTtcbiBcbiBcdHJlYWRfbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4tXHRlID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuK1x0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcbiBcdGlmIChlKVxuIFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4gXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG5AQCAtMTY0LDYgKzI0OCwxMCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZS1cdTAwM2V1c2VycykpIHtcbiBcdFx0aWYgKGUtXHUwMDNlZmxhZ3MgXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcbiBcdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbitcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGUtXHUwMDNlYnBmX3Byb2cpXG4rXHRcdFx0YnBmX3Byb2dfcHV0KGUtXHUwMDNlYnBmX3Byb2cpO1xuKyNlbmRpZlxuIFx0XHRrZnJlZShlKTtcbiBcdH1cbiB9XG5AQCAtMjA2LDE1ICsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGUgPSBOVUxMO1xuIFx0aW50IHJldHZhbCA9IC1FTk9FWEVDO1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuK1x0Y2hhciAqYnBmX2ludGVycCBfX2ZyZWUoa2ZyZWUpID0gTlVMTDtcbitcdGNvbnN0IGNoYXIgKmludGVycHJldGVyO1xuIFxuIFx0bWlzYyA9IGxvYWRfYmluZm10X21pc2MoKTtcbiBcdGlmICghbWlzYy1cdTAwM2VlbmFibGVkKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuLVx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuK1x0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFx1MDAyNmJwZl9pbnRlcnApO1xuIFx0aWYgKCFmbXQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4rXHQvKlxuK1x0ICogQSAnQicgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXG4rXHQgKiBjaG9vc2VzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gT3RoZXIgaGFuZGxlcnMgdXNlIHRoZVxuK1x0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxuK1x0ICovXG4rXHRpbnRlcnByZXRlciA9IGJwZl9pbnRlcnAgPyBicGZfaW50ZXJwIDogZm10LVx1MDAzZWludGVycHJldGVyO1xuK1x0cmV0dmFsID0gLUVOT0VYRUM7XG4rXHRpZiAoIWludGVycHJldGVyWzBdKVxuK1x0XHRnb3RvIHJldDtcbitcbiBcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cbiBcdHJldHZhbCA9IC1FTk9FTlQ7XG4gXHRpZiAoYnBybS1cdTAwM2VpbnRlcnBfZmxhZ3MgXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcbkBAIC0yMzgsMjIgKzMzOCwyNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdGJwcm0tXHUwMDNlYXJnYysrO1xuIFxuIFx0LyogYWRkIHRoZSBpbnRlcnAgYXMgYXJndlswXSAqL1xuLVx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4rXHRyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoaW50ZXJwcmV0ZXIsIGJwcm0pO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byByZXQ7XG4gXHRicHJtLVx1MDAzZWFyZ2MrKztcbiBcbiBcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xuLVx0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4rXHRyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoaW50ZXJwcmV0ZXIsIGJwcm0pO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byByZXQ7XG4gXG4tXHRpZiAoZm10LVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpIHtcbitcdC8qXG4rXHQgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJ0YnIGZsYWcpIG9ubHlcbitcdCAqIGFwcGxpZXMgdG8gdGhlIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBpbnRlcnByZXRlcjsgYSBwcm9ncmFtLXN1cHBsaWVkXG4rXHQgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLlxuK1x0ICovXG4rXHRpZiAoKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcdTAwMjZcdTAwMjYgIWJwZl9pbnRlcnApIHtcbiBcdFx0aW50ZXJwX2ZpbGUgPSBmaWxlX2Nsb25lX29wZW4oZm10LVx1MDAzZWludGVycF9maWxlKTtcbiBcdFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxuIFx0XHRcdGRlbnlfd3JpdGVfYWNjZXNzKGludGVycF9maWxlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cdTAwM2VpbnRlcnByZXRlcik7XG4rXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGludGVycHJldGVyKTtcbiBcdH1cbiBcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwX2ZpbGUpO1xuIFx0aWYgKElTX0VSUihpbnRlcnBfZmlsZSkpXG5AQCAtNDA0LDYgKzUwOSwxMCBAQCBzdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcbiBcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogdHlwZTogTSAobWFnaWMpXFxuXCIpO1xuIFx0XHRlLVx1MDAzZWZsYWdzID0gKDEgXHUwMDNjXHUwMDNjIEVuYWJsZWQpIHwgKDEgXHUwMDNjXHUwMDNjIE1hZ2ljKTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlICdCJzpcbitcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogdHlwZTogQiAoYnBmKVxcblwiKTtcbitcdFx0ZS1cdTAwM2VmbGFncyA9ICgxIFx1MDAzY1x1MDAzYyBFbmFibGVkKSB8ICgxIFx1MDAzY1x1MDAzYyBCcGYpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gZWludmFsO1xuIFx0fVxuQEAgLTQ5Miw2ICs2MDEsNDUgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG4rXHR9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbitcdFx0LyogSGFuZGxlIHRoZSAnQicgKEJQRikgZm9ybWF0LiAqL1xuK1x0XHRjaGFyICpzO1xuK1xuK1x0XHQvKiBUaGUgb2Zmc2V0IGZpZWxkIGFjdHVhbGx5IGhvbGRzIHRoZSBwaW5uZWQgQlBGIHByb2dyYW0gcGF0aCAqL1xuK1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4rXHRcdGlmICghcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRlLVx1MDAzZW1hZ2ljID0gcDsgLyogS2VlcCBwYXRoIGluIGUtXHUwMDNlbWFnaWMgKi9cbitcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogYnBmIHByb2dyYW0gcGF0aDogJXNcXG5cIiwgZS1cdTAwM2VtYWdpYyk7XG4rXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK1x0XHRlLVx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVx1MDAzZW1hZ2ljLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xuK1x0XHRpZiAoSVNfRVJSKGUtXHUwMDNlYnBmX3Byb2cpKSB7XG4rXHRcdFx0ZXJyID0gUFRSX0VSUihlLVx1MDAzZWJwZl9wcm9nKTtcbitcdFx0XHRlLVx1MDAzZWJwZl9wcm9nID0gTlVMTDtcbitcdFx0XHRrZnJlZShlKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuK1x0XHR9XG4rI2Vsc2VcbitcdFx0Z290byBlaW52YWw7XG4rI2VuZGlmXG4rXG4rXHRcdHAgPSBzO1xuK1xuK1x0XHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4rXHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbitcdFx0aWYgKCFzIHx8IHAgIT0gcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRwID0gcztcbitcbitcdFx0LyogVGhlIG1hc2sgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4rXHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbitcdFx0aWYgKCFzIHx8IHAgIT0gcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRwID0gcztcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIEhhbmRsZSB0aGUgJ0UnIChleHRlbnNpb24pIGZvcm1hdC4gKi9cbiBcbkBAIC01MjQsOCArNjcyLDE3IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0aWYgKCFwKVxuIFx0XHRnb3RvIGVpbnZhbDtcbiBcdCpwKysgPSAnXFwwJztcbi1cdGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbitcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdC8qXG4rXHRcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcbitcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG4rXHRcdCAqIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBvbmUuXG4rXHRcdCAqL1xuK1x0XHRpZiAoZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdH0gZWxzZSBpZiAoIWUtXHUwMDNlaW50ZXJwcmV0ZXJbMF0pIHtcbiBcdFx0Z290byBlaW52YWw7XG4rXHR9XG4gXHRwcl9kZWJ1ZyhcInJlZ2lzdGVyOiBpbnRlcnByZXRlcjogeyVzfVxcblwiLCBlLVx1MDAzZWludGVycHJldGVyKTtcbiBcbiBcdC8qIFBhcnNlIHRoZSAnZmxhZ3MnIGZpZWxkLiAqL1xuQEAgLTYwMiw3ICs3NTksOSBAQCBzdGF0aWMgdm9pZCBlbnRyeV9zdGF0dXMoTm9kZSAqZSwgY2hhciAqcGFnZSlcbiBcdFx0KmRwKysgPSAnRic7XG4gXHQqZHArKyA9ICdcXG4nO1xuIFxuLVx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbitcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdHNwcmludGYoZHAsIFwiYnBmICVzXFxuXCIsIGUtXHUwMDNlbWFnaWMpO1xuK1x0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHNwcmludGYoZHAsIFwiZXh0ZW5zaW9uIC4lc1xcblwiLCBlLVx1MDAzZW1hZ2ljKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGRwICs9IHNwcmludGYoZHAsIFwib2Zmc2V0ICVpXFxubWFnaWMgXCIsIGUtXHUwMDNlb2Zmc2V0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggNzcxOWY2NTI4NDQ1NjAuLjNhZWY0NGI2OTRiZDBhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTM4NzQsNiArMzg3NCw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3VpZF9naWRfcHJvdG87XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90bztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmggYi9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmhcbmluZGV4IDg5YjM2ZGU1ZmRiYjZkLi5kY2UxNTVjNWJiZDc1ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXG5AQCAtNjE0Miw2ICs2MTQyLDcgQEAgdW5pb24gYnBmX2F0dHIge1xuIFx0Rk4odXNlcl9yaW5nYnVmX2RyYWluLCAyMDksICMjY3R4KVx0XHRcXFxuIFx0Rk4oY2dycF9zdG9yYWdlX2dldCwgMjEwLCAjI2N0eClcdFx0XFxcbiBcdEZOKGNncnBfc3RvcmFnZV9kZWxldGUsIDIxMSwgIyNjdHgpXHRcdFxcXG4rXHRGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eClcdFx0XFxcbiBcdC8qIFRoaXMgaGVscGVyIGxpc3QgaXMgZWZmZWN0aXZlbHkgZnJvemVuLiBJZiB5b3UgYXJlIHRyeWluZyB0b1x0XFxcbiBcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcdFxcXG4gXHQgKiBsZXNzIHN0YWJpbGl0eSBndWFyYW50ZWVzLiBTZWUgRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFx0XFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCAyZTk2YjRiODQ3Y2UxMi4uMTg3NjkyYTRhNGI2N2IgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuKysrIGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC04Mzk3LDYgKzgzOTcsMTQgQEAgc2tfZmlsdGVyX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdHJldHVybiBcdTAwMjZicGZfZ2V0X3NvY2tldF91aWRfcHJvdG87XG4gXHRjYXNlIEJQRl9GVU5DX3BlcmZfZXZlbnRfb3V0cHV0OlxuIFx0XHRyZXR1cm4gXHUwMDI2YnBmX3NrYl9ldmVudF9vdXRwdXRfcHJvdG87XG4rI2lmIElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKVxuK1x0Y2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDpcbitcdFx0LypcbitcdFx0ICogYmluZm10X21pc2MgcmV1c2VzIFNPQ0tFVF9GSUxURVIgcHJvZ3JhbXMgdG8gc2VsZWN0IGFuXG4rXHRcdCAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuXG4rXHRcdCAqL1xuK1x0XHRyZXR1cm4gXHUwMDI2YnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xuKyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToxNi4wMzkxNDMzNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc3OTA4NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIGJpbmZtdF9taXNjIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgYmluZm10X21pc2MgaGFuZGxlciB0eXBlLCAnQicg4oCTIGZvciBCUEYsIG5hdHVyYWxseS4gVGhlIGlkZWEgaXMgdG8gdXNlIGEgQlBGIHByb2dyYW0gdG8gZHluYW1pY2FsbHkgc2VsZWN0IGFuIGludGVycHJldGVyIGJhc2VkIG9uIHRoZSBiaW5hcnkgaXRzZWxmLiBTZWVtcyBsaWtlIGEgY2xldmVyIGFwcHJvYWNoIGZvciBlbmhhbmNlZCBmbGV4aWJpbGl0eS4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYmluZm10X21pc2MuY2AsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIG1hbmFnaW5nIGV4ZWN1dGFibGUgZm9ybWF0cywgYXMgZXhwZWN0ZWQuXG5cbkkgc2VlIHRoZXkndmUgYWRkZWQgYSBuZXcgQlBGIGhlbHBlciwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIHdoaWNoIGlzIGNlbnRyYWwgdG8gdGhpcyB3aG9sZSB0aGluZy4gUGx1cywgbW9kaWZpY2F0aW9ucyB0byBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBlbnRyeV9zdGF0dXNgLCBpbmRpY2F0ZSB0aGV5J3ZlIGludGVncmF0ZWQgdGhpcyBCUEYtYmFzZWQgYXBwcm9hY2ggZGVlcGx5IGludG8gdGhlIGV4aXN0aW5nIGJpbmZtdF9taXNjIGluZnJhc3RydWN0dXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy5cblxuVGhlIGNvcmUgY29kZSBpcyBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gYGZzL2JpbmZtdF9taXNjLmNgLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhpcyBhc3N1bWVzIHRoZSBCUEYgc3lzY2FsbHMgYXJlIGF2YWlsYWJsZS4gYENPTkZJR19CSU5GTVRfTUlTQ2AgaXMsIG9mIGNvdXJzZSwgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYXQgcGxheS4gQWhhLCBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2Agd2hpY2ggY291bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgY29udmVyZ2VuY2UuXG5cblRpbWUgdG8gYnJvYWRlbiB0aGUgc2VhcmNoIGZvciBkZXBlbmRlbmNpZXMuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgb3Igb3RoZXIgaW50ZXJhY3Rpb25zIEkndmUgb3Zlcmxvb2tlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlIGJlZm9yZSBJIGZvcm0gYW55IGp1ZGdlbWVudHMgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3RzIG9yIGludGVncmF0aW9uIGNoYWxsZW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToyMS40MTcwNTM5MDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MzI0Nzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQklORk1UX01JU0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3Q9OD1vdGhlciBwcm9ncmFtIGFmdGVyIHlvdSBoYXZlIGRvbmUgdGhlIGZvbGxvd2luZzpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3QtMjEtMikgWW91IGhhdmUgdG8gY29tcGlsZSBCSU5GTVRfTUlTQyBlaXRoZXIgYXMgYSBtb2R1bGUgb3IgaW50b1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3Q6MjI6ICAgdGhlIGtlcm5lbCAoYGBDT05GSUdfQklORk1UX01JU0NgYCkgYW5kIHNldCBpdCB1cCBwcm9wZXJseS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0LTIzLSAgIElmIHlvdSBjaG9vc2UgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgaGF2ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdD05PW90aGVyIHByb2dyYW0gYWZ0ZXIgeW91IGhhdmUgZG9uZSB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdC0yNS0yKSBZb3UgaGF2ZSB0byBjb21waWxlIEJJTkZNVF9NSVNDIGVpdGhlciBhcyBhIG1vZHVsZSBvciBpbnRvXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdDoyNjogICB0aGUga2VybmVsIChgYENPTkZJR19CSU5GTVRfTUlTQ2BgKSBhbmQgc2V0IGl0IHVwIHByb3Blcmx5LlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3QtMjctICAgSWYgeW91IGNob29zZSB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCB5b3Ugd2lsbCBoYXZlXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTUwPUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTUxLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjUyOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy01My0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWc6MTk6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWctMjAtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9NTY9Q09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjU3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnLTU4LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc9Mzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc6NDA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAxX2RlZmNvbmZpZy00MS0jIENPTkZJR19TV0FQIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz02Mj1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6NjM6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctNjQtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NDU9Q09ORklHX0NNRExJTkVfUEFSVElUSU9OPXlcXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NDY6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWctNDctQ09ORklHX1NMVUJfVElOWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc9MTk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjEzeHhfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjEzeHhfZGVmY29uZmlnLTIxLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjN4eF9kZWZjb25maWc9MTM9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjN4eF9kZWZjb25maWc6MTQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZy0xNS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnPTEwPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjZ4eF9kZWZjb25maWctMTItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIwLUNPTkZJR19QTT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTkzPUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5NDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTUtQ09ORklHX1pTV0FQPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTA4PUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTExMC1DT05GSUdfWlNXQVA9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQyPUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTQzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTM4PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo0MDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNDEtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc9NDU9Q09ORklHX0lPU0NIRURfQkZRPW1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDYtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0NzpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy00OC0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZy0zNi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjM3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM3PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6Mzk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNDAtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnPTM2PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctMzktIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTY9Q09ORklHX0lPU0NIRURfQkZRPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctNTctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo1ODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01OS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTM0PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zNj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctMzctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6Mzg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTM5LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc9Mjk9Q09ORklHX0JJTkZNVF9aRkxBVD15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL202OGsvY29uZmlncy9zdG1hcmsyX2RlZmNvbmZpZy0zMS0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzozNDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTMyPUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6MzQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctMzUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnPTI3PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZz0xNz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZy0xOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI0OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMjUtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZz0xOT1DT05GSUdfU0dJX1BBUlRJVElPTj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMl9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnPTE3PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWctMTktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9Mjc9Q09ORklHX01RX0lPU0NIRURfREVBRExJTkU9bVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzoyODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZy0yOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnPTM1PUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0zNy1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NDk9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy01MS1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTM4PUNPTkZJR19LQVJNQV9QQVJUSVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjM5OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDAtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9waWMzMm16ZGFfZGVmY29uZmlnPTI0PUNPTkZJR19TR0lfUEFSVElUSU9OPXlcXG5hcmNoL21pcHMvY29uZmlncy9waWMzMm16ZGFfZGVmY29uZmlnOjI1OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZy0yNi1DT05GSUdfREVWVE1QRlM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTE4PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0yMC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MjY9Q09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMjctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNT1DT05GSUdfQkxLX0RFVl9JTlRFR1JJVFk9eVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9Mjg9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTI5LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZzozMDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTMxLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnPTEyPUNPTkZJR19ISUdITUVNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnOjEzOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZy0xNC1DT05GSUdfTUFUSF9FTVVMQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZz0xMD1DT05GSUdfSElHSE1FTT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZzoxMTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc3R4X2dwM19kZWZjb25maWctMTItQ09ORklHX01BVEhfRU1VTEFUSU9OPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvdHFtODU0OF9kZWZjb25maWc9MTQ9Q09ORklHX0hJR0hNRU09eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvdHFtODU0OF9kZWZjb25maWc6MTU6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTE2LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9hbWlnYW9uZV9kZWZjb25maWc9MjE9Q09ORklHX0hJR0hNRU09eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZy0yMy1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTM0PUNPTkZJR19HRU5fUlRDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZzozNTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTM2LUNPTkZJR19JUlFfQUxMX0NQVVM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZz0yMD1DT05GSUdfSElHSE1FTT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZzoyMTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWctMjItQ09ORklHX0lSUV9BTExfQ1BVUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9lcDgyNDhlX2RlZmNvbmZpZz0xMT1DT05GSUdfRVA4MjQ4RT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9lcDgyNDhlX2RlZmNvbmZpZy0xMy0jIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTU9Q09ORklHX0JGU19GUz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6NjpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTctIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ2FtZWN1YmVfZGVmY29uZmlnPTE5PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWctMjEtQ09ORklHX0tFWEVDPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZz0xND1DT05GSUdfR0VOX1JUQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnLTE2LUNPTkZJR19DTURMSU5FPVxcXCJjb25zb2xlPXR0eVMwLDExNTIwMFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21nY29nZV9kZWZjb25maWc9MTY9Q09ORklHX01HQ09HRT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZzoxNzpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21nY29nZV9kZWZjb25maWctMTgtIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnPTIzPUNPTkZJR19ISUdITUVNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnOjI0OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZy0yNS1DT05GSUdfSElCRVJOQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9NDk9Q09ORklHX0haXzEwMDA9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTEtQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Nzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjgwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTgxLUNPTkZJR19aU1dBUD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTI2PUNPTkZJR19DUFVfRlJFUV9HT1ZfVVNFUlNQQUNFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnOjI3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0yOC1DT05GSUdfSVJRX0FMTF9DUFVTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NjU9Q09ORklHX1BSRUVNUFRfVk9MVU5UQVJZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjY2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy02Ny1DT05GSUdfSElCRVJOQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZz0zMz1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzozNTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9zdG9yY2VudGVyX2RlZmNvbmZpZz0xMz1DT05GSUdfSFpfMTAwPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9zdG9yY2VudGVyX2RlZmNvbmZpZzoxNDpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnLTE1LUNPTkZJR19DTURMSU5FPVxcXCJjb25zb2xlPXR0eVMwLDExNTIwMFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3dpaV9kZWZjb25maWc9MTk9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3dpaV9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnLTIxLUNPTkZJR19LRVhFQz15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OTg9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTAwLUNPTkZJR19aU1dBUD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTI9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTM6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTQtQ09ORklHX1pTV0FQPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnPTQwPUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy00MS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6NDI6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy00My1DT05GSUdfQ01ETElORV9GUk9NX0JPT1RMT0FERVI9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTMwPUNPTkZJR19QQ0k9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZzozMTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZy0zMi1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz03ND1DT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlM9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzo3NTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy03Ni1DT05GSUdfUE09eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc9NDM9Q09ORklHX0JJTkZNVF9aRkxBVD15XFxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3MjA2X2RlZmNvbmZpZy00NS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZz0yMT1DT05GSUdfSE9UUExVR19QQ0k9eVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZy0yMy1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTI0PUNPTkZJR19QQ0NBUkQ9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjI1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc9NTA9Q09ORklHX0NNRExJTkU9XFxcImNvbnNvbGU9dHR5U0MwLDExNTIwMCBlYXJseXByaW50az1iaW9zIGlnbm9yZV9sb2dsZXZlbFxcXCJcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6NTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctNTItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc9MzU9Q09ORklHX1BDSV9ERUJVRz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnLTM3LUNPTkZJR19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MTE9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMTMtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc9Mjc9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMjktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MjpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZy0zLUNPTkZJR19IT1NURlM9eVxcbi0tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMy1DT05GSUdfSE9TVEZTPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9NTk9Q09ORklHX0JMS19DR1JPVVBfSU9QUklPPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjYwOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02MS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02MD1DT05GSUdfQkxLX0NHUk9VUF9JT1BSSU89eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo2MTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZy02Mi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xMD1DT05GSUdfQ01ETElORT1cXFwiY29uc29sZT10dHlTMCwzODQwMCBpcD1ib290cCByb290PW5mcyBuZnNyb290PS9vcHQvbW9udGF2aXN0YS9wcm8vZGV2a2l0L3h0ZW5zYS9saW51eF9iZS90YXJnZXQgbWVtbWFwPTEyOE1AMFxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMTItQ09ORklHX05FVD15XFxuLS1cXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICs9IGxvY2tzLm9cXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXFx0Kz0gYmluZm10X21pc2Mub1xcbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVxcdCs9IGJpbmZtdF9zY3JpcHQub1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTE2Ny1cXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcXFwiZnNcXFwiLCBmc19zdGF0X3N5c2N0bHMpO1xcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xcbmZzL2ZpbGVfdGFibGUuYy0xNjktXFx0XFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTkyPXN0cnVjdCBsaW51eF9iaW5mbXQge1xcbi0tXFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmgtMTAxLVxcbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjEwMjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmgtMTAzLXN0cnVjdCBiaW5mbXRfbWlzYyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmg9NjQ9ZW51bSBybGltaXRfdHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtNzEtXFxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oOjcyOiNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtNzMtc3RydWN0IGJpbmZtdF9taXNjO1xcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oPTc2PXN0cnVjdCB1c2VyX25hbWVzcGFjZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtMTEzLVxcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaDoxMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaC0xMTUtXFx0c3RydWN0IGJpbmZtdF9taXNjICpiaW5mbXRfbWlzYztcXG4tLVxcbmtlcm5lbC91c2VyLmMtMjMtXFxua2VybmVsL3VzZXIuYzoyNDojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxua2VybmVsL3VzZXIuYy0yNS1zdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcXG4tLVxcbmtlcm5lbC91c2VyLmM9Mzc9c3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNlcl9ucyA9IHtcXG4tLVxcbmtlcm5lbC91c2VyLmMtNzUtI2VuZGlmXFxua2VybmVsL3VzZXIuYzo3NjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxua2VybmVsL3VzZXIuYy03Ny1cXHQuYmluZm10X21pc2MgPSBcXHUwMDI2aW5pdF9iaW5mbXRfbWlzYyxcXG4tLVxcbmtlcm5lbC91c2VyX25hbWVzcGFjZS5jPTE5Nz1zdGF0aWMgdm9pZCBmcmVlX3VzZXJfbnMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE3LVxcdFxcdH1cXG5rZXJuZWwvdXNlcl9uYW1lc3BhY2UuYzoyMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbmtlcm5lbC91c2VyX25hbWVzcGFjZS5jLTIxOS1cXHRcXHRrZnJlZShucy1cXHUwMDNlYmluZm10X21pc2MpO1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9ODM4NT1za19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTgzOTktXFx0XFx0cmV0dXJuIFxcdTAwMjZicGZfc2tiX2V2ZW50X291dHB1dF9wcm90bztcXG5uZXQvY29yZS9maWx0ZXIuYzo4NDAwOiNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylcXG5uZXQvY29yZS9maWx0ZXIuYy04NDAxLVxcdGNhc2UgQlBGX0ZVTkNfYmlucHJtX3NldF9pbnRlcnA6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9NT1DT05GSUdfQVVESVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTctQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9OD1DT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6OTpDT05GSUdfQklORk1UX01JU0M9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTEwLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQ9Q09ORklHX0FVRElUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tNi1DT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToyMy44MTAzMDY2MzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NTY5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIHdpdGggQklORk1UX01JU0MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYEJJTkZNVF9NSVNDYCBhbmQgYEJQRl9TWVNDQUxMYCByZWxhdGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZ2V0dGluZyBhIEJQRiBoZWxwZXIgd29ya2luZy4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlncywgd2hpY2ggSSd2ZSBpZGVudGlmaWVkIGFzIGBCSU5GTVRfTUlTQ2AgYW5kIGBCUEZfU1lTQ0FMTGAuIE5vdywgSSByZWNhbGwgc2VlaW5nIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCByZWxhdGVkIHRvIGBDT05GSUdfQklORk1UX01JU0NgLiBBaCwgcmlnaHQsIHRoZXJlJ3MgYW4gYCNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylgIGJsb2NrIHRoZXJlLiBUaGF0IHN1Z2dlc3RzIHRoYXQgdGhlIEJQRiBoZWxwZXIsIGF0IGxlYXN0IGluIHRoYXQgY29udGV4dCwgaXMgb25seSBhdmFpbGFibGUgaWYgYEJJTkZNVF9NSVNDYCBpcyAqYnVpbHQtaW4qIHRvIHRoZSBrZXJuZWwuXG5cblNvLCBkaWdnaW5nIGEgbGl0dGxlIGRlZXBlciwgYElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKWAgaXMgZXF1aXZhbGVudCB0byBgQ09ORklHX0JJTkZNVF9NSVNDPXlgLCBub3QgYSBtb2R1bGUuIFRoZXJlZm9yZSwgZm9yIHRoZSBCUEYgaGVscGVyIHRvIGJlIGF2YWlsYWJsZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBCSU5GTVRfTUlTQ2AgaXMgc2V0IHRvIGB5YCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGluIG9yZGVyIHRvIGdldCBpdCBsb2FkZWQuXG5cbkFuZCwgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgYW5kIHRoaXMgbGlrZWx5IHRpZXMgaW4gdG8gYGZzL2JpbmZtdF9taXNjLmNgLiBMZXQgbWUgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYCB0byBjb25maXJtIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIHR3byBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JJTkZNVF9NSVNDYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzODEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MjguNTE3ODc4NDExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzYzNDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jLTMxLVxcbmZzL2JpbmZtdF9taXNjLmM6MzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtMzMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz01Nz10eXBlZGVmIHN0cnVjdCB7XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTY4LVxcdHJlZmNvdW50X3QgdXNlcnM7XFx0XFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXFxuZnMvYmluZm10X21pc2MuYzo2OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy03MC1cXHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz03ND1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtOTAtXFxuZnMvYmluZm10X21pc2MuYzo5MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy05Mi1zdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAge1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xMjE9Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTI3LX07XFxuZnMvYmluZm10X21pc2MuYzoxMjg6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbmZzL2JpbmZtdF9taXNjLmMtMTI5LVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xNDI9c3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTE1OS1cXHRcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuZnMvYmluZm10X21pc2MuYzoxNjA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtMTYxLVxcdFxcdFxcdGlmIChlLVxcdTAwM2VicGZfcHJvZykge1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz0yNDY9c3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTI1MC1cXHRcXHRcXHRmaWxwX2Nsb3NlKGUtXFx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcXG5mcy9iaW5mbXRfbWlzYy5jOjI1MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy0yNTItXFx0XFx0aWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNiBlLVxcdTAwM2VicGZfcHJvZylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NDU1PXN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy02MTUtXFxuZnMvYmluZm10X21pc2MuYzo2MTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtNjE3LVxcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVxcdTAwM2VtYWdpYywgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MjguNzQ1NTIzODYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNjI4OTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgeWVzLCBJJ20gY29uZmlkZW50IHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWJzb2x1dGVseSBuZWNlc3NhcnkgZm9yIHRoaXMuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIHVzaW5nIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYC4gTm93LCBpcyB0aGF0IGZ1bmN0aW9uIGV2ZW4gYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSBpdHMgcHJlc2VuY2UuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTozMi40NzE4MTYwNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MTcxMTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfcHJvZ19nZXRfdHlwZV9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjE2LSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5mcy9iaW5mbXRfbWlzYy5jOjYxNzpcXHRcXHRlLVxcdTAwM2VicGZfcHJvZyA9IGJwZl9wcm9nX2dldF90eXBlX3BhdGgoZS1cXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XFxuZnMvYmluZm10X21pc2MuYy02MTgtXFx0XFx0aWYgKElTX0VSUihlLVxcdTAwM2VicGZfcHJvZykpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzA4OD1zdGF0aWMgaW5saW5lIGludCBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDkzLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzA5NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzA5NS1pbnQgYXJyYXlfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzQzNz1zdGF0aWMgaW5saW5lIGludCBjcHVfbWFwX2dlbmVyaWNfcmVkaXJlY3Qoc3RydWN0IGJwZl9jcHVfbWFwX2VudHJ5ICpyY3B1LFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNDQyLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzQ0MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzQ0NC1cXHRcXHRcXHRcXHRlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaW5vZGUuYz02MTE9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqX19nZXRfcHJvZ19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaW5vZGUuYy02MzctXFxua2VybmVsL2JwZi9pbm9kZS5jOjYzODpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxua2VybmVsL2JwZi9pbm9kZS5jLTYzOS17XFxuLS1cXG5rZXJuZWwvYnBmL2lub2RlLmMtNjUwLX1cXG5rZXJuZWwvYnBmL2lub2RlLmM6NjUxOkVYUE9SVF9TWU1CT0woYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aCk7XFxua2VybmVsL2JwZi9pbm9kZS5jLTY1Mi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmM9NTU9c3RhdGljIGludCBfX2JwZl9tdF9jaGVja19wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBicGZfcHJvZyAqKnJldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmMtNTktXFxubmV0L25ldGZpbHRlci94dF9icGYuYzo2MDpcXHQqcmV0ID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChwYXRoLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTygqcmV0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MzQuNDEzNTMyMTMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUwODY4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBJbnRlcnByZXRlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYSBuZXcgQlBGIGhlbHBlciwgYW5kIHRoZW4gZmlkZGxlcyB3aXRoIGBiaW5mbXRfbWlzY2Agc28gdGhhdCBCUEYgcHJvZ3JhbXMgY2FuIGNob29zZSBhbiBpbnRlcnByZXRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHNvdW5kIGFuZCByZWFjaGFibGUg4oCTIGdvb2Qgc3RhcnQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgLiAgV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2AuIFRoYXQgaW1wbGllcyB0aGF0IGBCSU5GTVRfTUlTQ2AgKm11c3QqIGJlIGJ1aWx0LWluLCBub3QgYSBtb2R1bGUsIHJpZ2h0PyAgSGFuZyBvbiwgYENPTkZJR19CSU5GTVRfTUlTQ2AgY2FuIGJlIHNldCB0byBlaXRoZXIgYHlgIG9yIGBtYC4gSWYgaXQncyBzZXQgdG8gYG1gLCB0aGVuIGBJU19CVUlMVElOYCBpcyBnb2luZyB0byBiZSBmYWxzZS4gSG1tLCB0aGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBlbnN1cmUgaXQncyBzZXQgdG8gYHlgIGZvciB0aGlzIHRvIHdvcmsuICBUaGUgdG9vbCBqdXN0IHRha2VzIHRoZSBjb25maWcgbmFtZTsgSSBjYW4ndCBkaXJlY3RseSBzcGVjaWZ5IGA9eWAuICBJIGd1ZXNzIHN5emthbGxlciB3aWxsIGhhbmRsZSB0aGF0IGJpdCBieSBlbmFibGluZyBpdC5cblxuTGV0J3MgcXVpY2tseSBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzLiAgV2UncmUgbG9va2luZyBhdDpcblxuKiAgIGBicGZfYmlucHJtX3NldF9pbnRlcnBgICh0aGUgbmV3IEJQRiBoZWxwZXIpXG4qICAgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmBcbiogICBgZ2V0X2JpbmZtdF9oYW5kbGVyYFxuKiAgIGBsb2FkX21pc2NfYmluYXJ5YFxuKiAgIGBjcmVhdGVfZW50cnlgXG4qICAgYGVudHJ5X3N0YXR1c2BcblxuT2theSwgbGV0J3Mgc3RlcCB0aHJvdWdoIHRoaXMuIFRoZSBCUEYgaGVscGVyIGlzIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBhbmQgYGxvYWRfbWlzY19iaW5hcnlgIGFyZSBzdGF0aWMsIGFuZCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgYWN0dWFsbHkgcmVnaXN0ZXJlZCBhcyBhIGJpbmZtdCBoYW5kbGVyLiBBbmQgdGhhdCBvdGhlciBvbmUsIGBjcmVhdGVfZW50cnlgLCBpcyBzdGF0aWMgdG9vLCBhbmQgaXMgY2FsbGVkIGZyb20gYGJtX3JlZ2lzdGVyX3dyaXRlYC4gIEFoLCBzbyBJIHNob3VsZCBiZSBsb29raW5nIGF0IGBmcy9iaW5mbXRfbWlzYy5jYCBmb3IgaG93IGBibV9yZWdpc3Rlcl93cml0ZWAgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTg0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQwLjkyMjIxNTA5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMTY0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm1fcmVnaXN0ZXJfd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTkyOT1zdGF0aWMgaW50IGFkZF9lbnRyeShOb2RlICplLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy05NTctXFxuZnMvYmluZm10X21pc2MuYzo5NTg6c3RhdGljIHNzaXplX3QgYm1fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXFxuZnMvYmluZm10X21pc2MuYy05NTktXFx0XFx0XFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xMDAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX3JlZ2lzdGVyX29wZXJhdGlvbnMgPSB7XFxuZnMvYmluZm10X21pc2MuYzoxMDAzOlxcdC53cml0ZVxcdFxcdD0gYm1fcmVnaXN0ZXJfd3JpdGUsXFxuZnMvYmluZm10X21pc2MuYy0xMDA0LVxcdC5sbHNlZWtcXHRcXHQ9IG5vb3BfbGxzZWVrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo0MC45Nzc1NDI2MDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA5MDQ4ODE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmluYXJ5IExvYWRpbmcgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBibV9yZWdpc3Rlcl93cml0ZWAsIGBjcmVhdGVfZW50cnlgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYW5kIGBnZXRfYmluZm10X2hhbmRsZXJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzdGF0aWMvZHluYW1pYyBuYXR1cmUgZm9yIHRoaXMgc3BlY2lmaWMgYW5hbHlzaXMuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybTogaXMgYGxvYWRfbWlzY19iaW5hcnlgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIGl0IGlzLiBHb29kLiBUaGF0J3Mgb25lIGRhdGEgcG9pbnQuXG5cbk5vdywgd2hhdCBhYm91dCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYD8gSG1tLCBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIGRlZmluZWQgd2l0aCBgQlBGX0NBTExfMmAuIFdhaXQgYSBzZWNvbmTigKYgdGhhdCBgQlBGX0NBTExfMmAgbWFjcm8gaXMgZ29pbmcgdG8gZXhwYW5kIG91dCB0byBzb21ldGhpbmcgbGlrZSBgX19fX2JwZl9iaW5wcm1fc2V0X2ludGVycGAuIEdvdHRhIGNoZWNrIHRoYXQgbWFjcm8gdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGZ1bmN0aW9uIGxpbmthZ2UuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo0NS4wNjgwMzM5NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDQ1Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9DQUxMXzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MjQtI2RlZmluZSBCUEZfQ0FMTF8xKG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDEsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYyNTojZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMiwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI2LSNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQ1LjEyNDQ4MzE0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU0MTEyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCBhbmQgdGhlIEJQRiBKSVQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQsIHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIHNldHRpbmcgdGhlIGludGVycHJldGVyIGZvciBhIGJpbmFyeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUgY29tZXMgaW50byBwbGF5IGhlcmUsIHNvIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIGBCUEZfQ0FMTF94YCBhbmQgc2VlIGhvdyB0aGUgQlBGIEpJVCBnZXRzIGludm9rZWQgKGlmIGF0IGFsbCkgaW4gdGhpcyBwYXRoLiBMZXQncyBzZWUgaG93IHRoZSBCUEYgdmVyaWZpZXIgaXMgYmVpbmcgdXRpbGl6ZWQuIEknbSBrZWVuIHRvIHRyYWNlIHRoZSBCUEYgcHJvZ3JhbSBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgbWFuaXB1bGF0aW9uIG9mIHRoZSBwcm9ncmFtIGhlYWRlcnMsIGFuZCBob3cgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjg1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6NDguMTc4NTk5MjQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEyNTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYwOS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYxMDojZGVmaW5lIEJQRl9DQUxMX3goeCwgYXR0ciwgbmFtZSwgLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MTEtXFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQ4LjIzNjcyOTkwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTEyNjk2NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipFeGFtaW5pbmcgQlBGIEZ1bmN0aW9uIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZXNlIEJQRiBjYWxscyBhcmUgZGVmaW5lZC4gVGhlIG1hY3JvIGBCUEZfQ0FMTF94YCBpcyB0aGUga2V5IGhlcmUuIEl0IGxvb2tzIGxpa2UgdGhpcyBtYWNybyBkZWZpbmVzIGBfX19fIyNuYW1lYCBhcyBhbiBpbmxpbmUgZnVuY3Rpb24sIGJ1dCAqYG5hbWVgKiBpdHNlbGYgcmVwcmVzZW50cyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgZnVuY3Rpb24uIFNvLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSBpbiB0aGlzIGNhc2UgaXMgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgZ2l2ZW4gdGhlIGludHJpY2FjaWVzIG9mIEJQRiBhbmQga2VybmVsIGludGVybmFscy5cblxuTm93LCB3aGVyZSBjYW4gSSBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYD8gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGlzIGlzIGluIGBmcy9iaW5mbXRfbWlzYy5jYC4gSSBuZWVkIHRvIGxvb2sgdGhlcmUgdG8gY29uZmlybSBteSBpbmZlcmVuY2UgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nIGluIHRoZSBjb250ZXh0IG9mIGBiaW5mbXRfbWlzY2AuIExldCBtZSBvcGVuIHRoYXQgZmlsZSBhbmQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjU1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6NTEuNzQ5NDI5MDU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY5NDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTk2PXN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAsIGJpbmZtdF9icGZfaW50ZXJwKTtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtOTgtLypcXG5mcy9iaW5mbXRfbWlzYy5jOjk5OiAqIGJwZl9iaW5wcm1fc2V0X2ludGVycCAtIGxldCBhIGJpbmZtdF9taXNjICdCJyBwcm9ncmFtIHBpY2sgdGhlIGludGVycHJldGVyLlxcbmZzL2JpbmZtdF9taXNjLmMtMTAwLSAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTA3LSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6MTA4OkJQRl9DQUxMXzIoYnBmX2JpbnBybV9zZXRfaW50ZXJwLCBjb25zdCBjaGFyICosIHBhdGgsIHUzMiwgbGVuKVxcbmZzL2JpbmZtdF9taXNjLmMtMTA5LXtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTIwLVxcbmZzL2JpbmZtdF9taXNjLmM6MTIxOmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG8gPSB7XFxuZnMvYmluZm10X21pc2MuYzoxMjI6XFx0LmZ1bmNcXHRcXHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcXG5mcy9iaW5mbXRfbWlzYy5jLTEyMy1cXHQuZ3BsX29ubHlcXHQ9IGZhbHNlLFxcbi0tXFxuZnMvYmluZm10X21pc2MuYy0xMzQtICogQGJwZl9pbnRlcnA6IHJlY2VpdmVzIGEga21hbGxvYydkIGludGVycHJldGVyIHBhdGggaWYgYSAnQicgcHJvZ3JhbSBjaG9vc2VzXFxuZnMvYmluZm10X21pc2MuYzoxMzU6ICogICAgICAgICAgICAgIG9uZSB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCk7IHRoZSBjYWxsZXIgbXVzdCBrZnJlZSgpIGl0XFxuZnMvYmluZm10X21pc2MuYy0xMzYtICpcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9MjkxPXN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy0zMDktXFx0ICogQSAnQicgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXFxuZnMvYmluZm10X21pc2MuYzozMTA6XFx0ICogY2hvb3NlcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIE90aGVyIGhhbmRsZXJzIHVzZSB0aGVcXG5mcy9iaW5mbXRfbWlzYy5jLTMxMS1cXHQgKiBpbnRlcnByZXRlciByZWNvcmRlZCBhdCByZWdpc3RyYXRpb24uXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjc3LVxcdFxcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcXG5mcy9iaW5mbXRfbWlzYy5jOjY3ODpcXHRcXHQgKiBwcm9ncmFtIHBpY2tzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gUmVqZWN0IGFcXG5mcy9iaW5mbXRfbWlzYy5jLTY3OS1cXHRcXHQgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo1MS44MDcxMjg2OTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3NTE4MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgQmluRm10X01pc2MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldyBCUEYgbWF0Y2hpbmcgZm9yIGBiaW5mbXRfbWlzY2AgZmVhdHVyZSwgYW5kIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24gc2VlbSB0byBiZTogYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBibV9yZWdpc3Rlcl93cml0ZWAuIFRob3NlIGFyZSB0aGUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBhZGRpdGlvbi5cblxuVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byByZW1lbWJlciBhcmUgYEJJTkZNVF9NSVNDYCAob2J2aW91c2x5KSwgYW5kIGBCUEZfU1lTQ0FMTGAuIFRoaXMgaXMgYWJzb2x1dGVseSByaXBlIGZvciBmdXp6aW5nLiBBIG5ldyBmZWF0dXJlIGxpa2UgdGhpcyBhbHdheXMgYWRkcyBhdHRhY2sgc3VyZmFjZS4gTGV0J3MgbWFrZSBzdXJlIEkndmUgZ290IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGRlcGVuZGVuY2llcywgdGhvdWdoLlxuXG5SaWdodCwgYENPTkZJR19CSU5GTVRfTUlTQ2AgaXMgdGhlIHByaW1hcnkgb25lLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIHN1cHBvcnRpbmcgY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0J3MgaW1wbGljaXRseSBpbmNsdWRlZCBvciBhc3N1bWVkLiBPa2F5LCBJIHNlZSB0aGF0IGBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVJgIGlzIHVzZWQgYXMgd2VsbCwgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEFsc28sIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2lub2RlLmNgLiBUaGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCByaWdodD8gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyB0cnVzdCwgYnV0IHZlcmlmeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCUEYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjQ4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjU3LjE4MjMxMDcwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNDM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5vZGVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyArPSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjU3LjIzOTM1OTYwOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5OTc3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgYW5kIEJpbmFyeSBGb3JtYXQgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaW5vZGUub2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3csIHNldHMgdGhlIHN0YWdlIGZvciB3aGF0IEknbSBhYm91dCB0byBkby4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW50ZXJjb25uZWN0aW9ucy5cblxuTGV0J3Mgc2VlLCBteSBrZXkgc3ltYm9scyBmb3IgZXhhbWluYXRpb24gYXJlOiBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBjcmVhdGVfZW50cnlgLCBhbmQgYGJtX3JlZ2lzdGVyX3dyaXRlYC5cblxuV2FpdCBhIG1pbnV0ZSwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgdGhhdCdzIGEgQlBGIGhlbHBlciEgSXQncyBpbnZva2VkIGJ5IEJQRiBwcm9ncmFtcywgaW50ZXJlc3RpbmcuIEFuZCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBpcyBjYWxsZWQgYnkgYGdldF9iaW5mbXRfaGFuZGxlcmAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGxvYWRfbWlzY19iaW5hcnlgLiBBaC1oYSwgYGxvYWRfbWlzY19iaW5hcnlgIGlzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGFjdHVhbCBleGVjdXRpb24gb2YgYSBiaW5hcnkuIEFuZCBpdCBzZWVtcyB0aGF0IGBjcmVhdGVfZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBibV9yZWdpc3Rlcl93cml0ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgYGJtX3JlZ2lzdGVyX3dyaXRlYCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIGAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXJgLlxuXG5BbHJpZ2h0LCB0aGVzZSBhcmUgYWxsIHNvbGlkIGZvY3VzIHN5bWJvbHMsIHRoZXkgc2VlbSB0byBoaWdobGlnaHQgdGhlIHJpZ2h0IGFyZWFzLiBJJ20gc2F0aXNmaWVkLiBJJ2xsIGZpbmFsaXplIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NTksIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMyOjAyLjk0OTMzOTMzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODY2MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwiZ2V0X2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJjcmVhdGVfZW50cnlcIixcbiAgICBcImJtX3JlZ2lzdGVyX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAnQicgKEJQRikgaGFuZGxlciB0eXBlIGZvciBiaW5mbXRfbWlzYywgYWxsb3dpbmcgQlBGIHByb2dyYW1zIHRvIG1hdGNoIGJpbmFyaWVzIGFuZCBzZWxlY3QgaW50ZXJwcmV0ZXJzLiBUaGlzIGFkZHMgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIGJpbmZtdF9taXNjIHJlZ2lzdHJhdGlvbiBhbmQgYmluYXJ5IGV4ZWN1dGlvbiBwYXRocywgYXMgd2VsbCBhcyBhIG5ldyBCUEYgaGVscGVyIGZ1bmN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJJTkZNVF9NSVNDXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9iaW5wcm1fc2V0X2ludGVycFwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImNyZWF0ZV9lbnRyeVwiLFxuICAgIFwiYm1fcmVnaXN0ZXJfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICdCJyAoQlBGKSBoYW5kbGVyIHR5cGUgZm9yIGJpbmZtdF9taXNjLCBhbGxvd2luZyBCUEYgcHJvZ3JhbXMgdG8gbWF0Y2ggYmluYXJpZXMgYW5kIHNlbGVjdCBpbnRlcnByZXRlcnMuIFRoaXMgYWRkcyBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gYmluZm10X21pc2MgcmVnaXN0cmF0aW9uIGFuZCBiaW5hcnkgZXhlY3V0aW9uIHBhdGhzLCBhcyB3ZWxsIGFzIGEgbmV3IEJQRiBoZWxwZXIgZnVuY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-04 21:18:58 +0000 UTC FinishedAt: 2026-07-04 21:32:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "f31c00c377ccf07c85442712f7c940a855cb3371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "f31c00c377ccf07c85442712f7c940a855cb3371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_MISC", "BPF_SYSCALL" ], "series_id": "0e76a95a-d39c-43c1-9f47-9ee40a5744b1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "bpf_binprm_set_interp", "search_binfmt_handler", "get_binfmt_handler", "load_misc_binary", "create_entry", "bm_register_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9NSVNDJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2JpbnBybV9zZXRfaW50ZXJwJiMzNDssCiAgICAmIzM0O3NlYXJjaF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtnZXRfYmluZm10X2hhbmRsZXImIzM0OywKICAgICYjMzQ7bG9hZF9taXNjX2JpbmFyeSYjMzQ7LAogICAgJiMzNDtjcmVhdGVfZW50cnkmIzM0OywKICAgICYjMzQ7Ym1fcmVnaXN0ZXJfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAmIzM5O0ImIzM5OyAoQlBGKSBoYW5kbGVyIHR5cGUgZm9yIGJpbmZtdF9taXNjLCBhbGxvd2luZyBCUEYgcHJvZ3JhbXMgdG8gbWF0Y2ggYmluYXJpZXMgYW5kIHNlbGVjdCBpbnRlcnByZXRlcnMuIFRoaXMgYWRkcyBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gYmluZm10X21pc2MgcmVnaXN0cmF0aW9uIGFuZCBiaW5hcnkgZXhlY3V0aW9uIHBhdGhzLCBhcyB3ZWxsIGFzIGEgbmV3IEJQRiBoZWxwZXIgZnVuY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmZiNDBiNDMxZmI1NTRlY2M0YTFhMjg1ODA2MjgxOWY0ZjU2YzQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgNCAyMTozMToxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xuaW5kZXggODQzNDlmY2I5M2YxM2EuLmNmNjY5OGQ1OWM5ZjA0IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X21pc2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X21pc2MuY1xuQEAgLTI5LDYgJiM0MzsyOSwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuIFxuICNpZmRlZiBERUJVR1xuQEAgLTQxLDEyICYjNDM7NDYsMTQgQEAgZW51bSB7XG4gXHRWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi9cbiB9O1xuIFxuLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTtcbiYjNDM7ZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XG4gI2RlZmluZSBNSVNDX0ZNVF9QUkVTRVJWRV9BUkdWMCAoMVVMIFx1MDAzY1x1MDAzYyAzMSlcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fQklOQVJZICgxVUwgXHUwMDNjXHUwMDNjIDMwKVxuICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCBcdTAwM2NcdTAwM2MgMjkpXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4mIzQzO3N0cnVjdCBicGZfcHJvZztcbiYjNDM7XG4gdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcdFx0LyogdHlwZSwgc3RhdHVzLCBldGMuICovXG5AQCAtNTksNiAmIzQzOzY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4mIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbiYjNDM7XHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xuJiM0MzsjZW5kaWZcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtNzgsMTAgJiM0Mzs4OCw1MSBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbiAgKi9cbiAjZGVmaW5lIE1BWF9SRUdJU1RFUl9MRU5HVEggMTkyMFxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4mIzQzO3N0cnVjdCBiaW5mbXRfYnBmX2ludGVycCB7XG4mIzQzO1x0Y2hhciBwYXRoW1BBVEhfTUFYXTtcbiYjNDM7XHRpbnQgbGVuO1x0LyogXHUwMDNjIDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi9cbiYjNDM7fTtcbiYjNDM7c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJiMzOTtCJiMzOTsgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbiYjNDM7ICogQHBhdGg6IGludGVycHJldGVyIHBhdGgsIGluIEJQRi1hY2Nlc3NpYmxlIG1lbW9yeVxuJiM0MzsgKiBAbGVuOiAgbnVtYmVyIG9mIGJ5dGVzIGluIEBwYXRoXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBwcm9ncmFtIGNvbXB1dGVzIHRoZSBpbnRlcnByZXRlciBwYXRoIGhvd2V2ZXIgaXQgc2VlcyBmaXQgKGUuZy4gcmVsYXRpdmVcbiYjNDM7ICogdG8gdGhlIGJpbmFyeSkuIFRoZSBwYXRoIGlzIHN0YXNoZWQgb24gYSBwZXItQ1BVIGFyZWEgdGhhdCBiaW5mbXRfbWlzYyByZWFkc1xuJiM0MzsgKiBiYWNrIGltbWVkaWF0ZWx5IGFmdGVyIHJ1bm5pbmcgdGhlIHByb2dyYW0gdW5kZXIgbWlncmF0ZV9kaXNhYmxlKCksIHNvIGl0XG4mIzQzOyAqIGNhbm5vdCByYWNlIHdpdGggYW5vdGhlciBDUFUuXG4mIzQzOyAqL1xuJiM0MztCUEZfQ0FMTF8yKGJwZl9iaW5wcm1fc2V0X2ludGVycCwgY29uc3QgY2hhciAqLCBwYXRoLCB1MzIsIGxlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2MgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcbiYjNDM7XHRpZiAobGVuID09IDAgfHwgbGVuIFx1MDAzZT0gUEFUSF9NQVgpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHQvKiBAcGF0aCBpcyBAbGVuIGJ5dGVzIG9mIEJQRiBtZW1vcnkgYW5kIGlzIG5vdCBOVUwtdGVybWluYXRlZC4gKi9cbiYjNDM7XHRtZW1jcHkoc2MtXHUwMDNlcGF0aCwgcGF0aCwgbGVuKTtcbiYjNDM7XHRzYy1cdTAwM2VwYXRoW2xlbl0gPSAmIzM5O1xcMCYjMzk7O1xuJiM0MztcdHNjLVx1MDAzZWxlbiA9IGxlbjtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbiYjNDM7XHQuZnVuY1x0XHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcbiYjNDM7XHQuZ3BsX29ubHlcdD0gZmFsc2UsXG4mIzQzO1x0LnJldF90eXBlXHQ9IFJFVF9JTlRFR0VSLFxuJiM0MztcdC5hcmcxX3R5cGVcdD0gQVJHX1BUUl9UT19NRU0gfCBNRU1fUkRPTkxZLFxuJiM0MztcdC5hcmcyX3R5cGVcdD0gQVJHX0NPTlNUX1NJWkUsXG4mIzQzO307XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbiYjNDM7XG4gLyoqXG4gICogc2VhcmNoX2JpbmZtdF9oYW5kbGVyIC0gc2VhcmNoIGZvciBhIGJpbmFyeSBoYW5kbGVyIGZvciBAYnBybVxuICAqIEBtaXNjOiBoYW5kbGUgdG8gYmluZm10X21pc2MgaW5zdGFuY2VcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXG4mIzQzOyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MmIzM5O2QgaW50ZXJwcmV0ZXIgcGF0aCBpZiBhICYjMzk7QiYjMzk7IHByb2dyYW0gY2hvb3Nlc1xuJiM0MzsgKiAgICAgICAgICAgICAgb25lIHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKTsgdGhlIGNhbGxlciBtdXN0IGtmcmVlKCkgaXRcbiAgKlxuICAqIFNlYXJjaCBmb3IgYSBiaW5hcnkgdHlwZSBoYW5kbGVyIGZvciBAYnBybSBpbiB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGJpbmFyeVxuICAqIHR5cGUgaGFuZGxlcnMuXG5AQCAtODksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdCAgIHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4mIzQzO1x0XHRcdFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbiYjNDM7XHRcdFx0XHQgICBjaGFyICoqYnBmX2ludGVycClcbiB7XG4gXHRjaGFyICpwID0gc3RycmNocihicHJtLVx1MDAzZWludGVycCwgJiMzOTsuJiMzOTspO1xuIFx0Tm9kZSAqZTtcbkBAIC0xMDMsNiAmIzQzOzE1NSwzNyBAQCBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbiBcdFx0aWYgKCF0ZXN0X2JpdChFbmFibGVkLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdC8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIEJQRiBpZiBhcHBsaWNhYmxlLiAqL1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MztcdFx0XHRpZiAoZS1cdTAwM2VicGZfcHJvZykge1xuJiM0MztcdFx0XHRcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2M7XG4mIzQzO1x0XHRcdFx0dTMyIHJldDtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4mIzQzO1x0XHRcdFx0c2MgPSB0aGlzX2NwdV9wdHIoXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xuJiM0MztcdFx0XHRcdHNjLVx1MDAzZWxlbiA9IC0xO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0XHRcdFx0cmV0ID0gYnBmX3Byb2dfcnVuKGUtXHUwMDNlYnBmX3Byb2csIGJwcm0tXHUwMDNlYnVmKTtcbiYjNDM7XHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKHJldCA9PSAxIFx1MDAyNlx1MDAyNiBzYy1cdTAwM2VsZW4gXHUwMDNlIDApXG4mIzQzO1x0XHRcdFx0XHQqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLVx1MDAzZXBhdGgsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIHNjLVx1MDAzZWxlbixcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRcdFx0bWlncmF0ZV9lbmFibGUoKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0cHJfZGVidWcoXCYjMzQ7YmluZm10X21pc2M6IHJhbiBCUEYgcHJvZ3JhbSBmb3IgJXMsIHJldCA9ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0IGJwcm0tXHUwMDNlZmlsZW5hbWUsIHJldCk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGlmIChyZXQgPT0gMSlcbiYjNDM7XHRcdFx0XHRcdHJldHVybiBlO1xuJiM0MztcdFx0XHR9XG4mIzQzOyNlbmRpZlxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIGV4dGVuc2lvbiBpZiBhcHBsaWNhYmxlLiAqL1xuIFx0XHRpZiAoIXRlc3RfYml0KE1hZ2ljLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRcdGlmIChwIFx1MDAyNlx1MDAyNiAhc3RyY21wKGUtXHUwMDNlbWFnaWMsIHAgJiM0MzsgMSkpXG5AQCAtMTM5LDEyICYjNDM7MjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4mIzQzO1x0XHRcdFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbiYjNDM7XHRcdFx0XHRjaGFyICoqYnBmX2ludGVycClcbiB7XG4gXHROb2RlICplO1xuIFxuIFx0cmVhZF9sb2NrKFx1MDAyNm1pc2MtXHUwMDNlZW50cmllc19sb2NrKTtcbi1cdGUgPSBzZWFyY2hfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcbiBcdGlmIChlKVxuIFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4gXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG5AQCAtMTY0LDYgJiM0MzsyNDgsMTAgQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmUtXHUwMDNldXNlcnMpKSB7XG4gXHRcdGlmIChlLVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpXG4gXHRcdFx0ZmlscF9jbG9zZShlLVx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcbiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuJiM0MztcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGUtXHUwMDNlYnBmX3Byb2cpXG4mIzQzO1x0XHRcdGJwZl9wcm9nX3B1dChlLVx1MDAzZWJwZl9wcm9nKTtcbiYjNDM7I2VuZGlmXG4gXHRcdGtmcmVlKGUpO1xuIFx0fVxuIH1cbkBAIC0yMDYsMTUgJiM0MzsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGUgPSBOVUxMO1xuIFx0aW50IHJldHZhbCA9IC1FTk9FWEVDO1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuJiM0MztcdGNoYXIgKmJwZl9pbnRlcnAgX19mcmVlKGtmcmVlKSA9IE5VTEw7XG4mIzQzO1x0Y29uc3QgY2hhciAqaW50ZXJwcmV0ZXI7XG4gXG4gXHRtaXNjID0gbG9hZF9iaW5mbXRfbWlzYygpO1xuIFx0aWYgKCFtaXNjLVx1MDAzZWVuYWJsZWQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4tXHRmbXQgPSBnZXRfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSk7XG4mIzQzO1x0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFx1MDAyNmJwZl9pbnRlcnApO1xuIFx0aWYgKCFmbXQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGUgcHJvZ3JhbVxuJiM0MztcdCAqIGNob29zZXMgaXQgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpLiBPdGhlciBoYW5kbGVycyB1c2UgdGhlXG4mIzQzO1x0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdGludGVycHJldGVyID0gYnBmX2ludGVycCA/IGJwZl9pbnRlcnAgOiBmbXQtXHUwMDNlaW50ZXJwcmV0ZXI7XG4mIzQzO1x0cmV0dmFsID0gLUVOT0VYRUM7XG4mIzQzO1x0aWYgKCFpbnRlcnByZXRlclswXSlcbiYjNDM7XHRcdGdvdG8gcmV0O1xuJiM0MztcbiBcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cbiBcdHJldHZhbCA9IC1FTk9FTlQ7XG4gXHRpZiAoYnBybS1cdTAwM2VpbnRlcnBfZmxhZ3MgXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcbkBAIC0yMzgsMjIgJiM0MzszMzgsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRicHJtLVx1MDAzZWFyZ2MmIzQzOyYjNDM7O1xuIFxuIFx0LyogYWRkIHRoZSBpbnRlcnAgYXMgYXJndlswXSAqL1xuLVx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4mIzQzO1x0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGludGVycHJldGVyLCBicHJtKTtcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gcmV0O1xuIFx0YnBybS1cdTAwM2VhcmdjJiM0MzsmIzQzOztcbiBcbiBcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xuLVx0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4mIzQzO1x0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGludGVycHJldGVyLCBicHJtKTtcbiBcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4gXHRcdGdvdG8gcmV0O1xuIFxuLVx0aWYgKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSB7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJiMzOTtGJiMzOTsgZmxhZykgb25seVxuJiM0MztcdCAqIGFwcGxpZXMgdG8gdGhlIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBpbnRlcnByZXRlcjsgYSBwcm9ncmFtLXN1cHBsaWVkXG4mIzQzO1x0ICogcGF0aCBpcyBvcGVuZWQgaGVyZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcdTAwMjZcdTAwMjYgIWJwZl9pbnRlcnApIHtcbiBcdFx0aW50ZXJwX2ZpbGUgPSBmaWxlX2Nsb25lX29wZW4oZm10LVx1MDAzZWludGVycF9maWxlKTtcbiBcdFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxuIFx0XHRcdGRlbnlfd3JpdGVfYWNjZXNzKGludGVycF9maWxlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cdTAwM2VpbnRlcnByZXRlcik7XG4mIzQzO1x0XHRpbnRlcnBfZmlsZSA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcik7XG4gXHR9XG4gXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycF9maWxlKTtcbiBcdGlmIChJU19FUlIoaW50ZXJwX2ZpbGUpKVxuQEAgLTQwNCw2ICYjNDM7NTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0XHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogdHlwZTogTSAobWFnaWMpXFxuXCYjMzQ7KTtcbiBcdFx0ZS1cdTAwM2VmbGFncyA9ICgxIFx1MDAzY1x1MDAzYyBFbmFibGVkKSB8ICgxIFx1MDAzY1x1MDAzYyBNYWdpYyk7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgJiMzOTtCJiMzOTs6XG4mIzQzO1x0XHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogdHlwZTogQiAoYnBmKVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRlLVx1MDAzZWZsYWdzID0gKDEgXHUwMDNjXHUwMDNjIEVuYWJsZWQpIHwgKDEgXHUwMDNjXHUwMDNjIEJwZik7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gZWludmFsO1xuIFx0fVxuQEAgLTQ5Miw2ICYjNDM7NjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0LyogSGFuZGxlIHRoZSAmIzM5O0ImIzM5OyAoQlBGKSBmb3JtYXQuICovXG4mIzQzO1x0XHRjaGFyICpzO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRoZSBvZmZzZXQgZmllbGQgYWN0dWFsbHkgaG9sZHMgdGhlIHBpbm5lZCBCUEYgcHJvZ3JhbSBwYXRoICovXG4mIzQzO1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4mIzQzO1x0XHRpZiAoIXMpXG4mIzQzO1x0XHRcdGdvdG8gZWludmFsO1xuJiM0MztcdFx0KnMmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XHRcdGUtXHUwMDNlbWFnaWMgPSBwOyAvKiBLZWVwIHBhdGggaW4gZS1cdTAwM2VtYWdpYyAqL1xuJiM0MztcdFx0cHJfZGVidWcoXCYjMzQ7cmVnaXN0ZXI6IGJwZiBwcm9ncmFtIHBhdGg6ICVzXFxuXCYjMzQ7LCBlLVx1MDAzZW1hZ2ljKTtcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbiYjNDM7XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG4mIzQzO1x0XHRpZiAoSVNfRVJSKGUtXHUwMDNlYnBmX3Byb2cpKSB7XG4mIzQzO1x0XHRcdGVyciA9IFBUUl9FUlIoZS1cdTAwM2VicGZfcHJvZyk7XG4mIzQzO1x0XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBOVUxMO1xuJiM0MztcdFx0XHRrZnJlZShlKTtcbiYjNDM7XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiYjNDM7XHRcdH1cbiYjNDM7I2Vsc2VcbiYjNDM7XHRcdGdvdG8gZWludmFsO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0XHRwID0gcztcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4mIzQzO1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4mIzQzO1x0XHRpZiAoIXMgfHwgcCAhPSBzKVxuJiM0MztcdFx0XHRnb3RvIGVpbnZhbDtcbiYjNDM7XHRcdCpzJiM0MzsmIzQzOyA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0XHRwID0gcztcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgbWFzayBmaWVsZCBpcyB1bnVzZWQsIG11c3QgYmUgZW1wdHkgKi9cbiYjNDM7XHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbiYjNDM7XHRcdGlmICghcyB8fCBwICE9IHMpXG4mIzQzO1x0XHRcdGdvdG8gZWludmFsO1xuJiM0MztcdFx0KnMmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XHRcdHAgPSBzO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSGFuZGxlIHRoZSAmIzM5O0UmIzM5OyAoZXh0ZW5zaW9uKSBmb3JtYXQuICovXG4gXG5AQCAtNTI0LDggJiM0Mzs2NzIsMTcgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4gXHRpZiAoIXApXG4gXHRcdGdvdG8gZWludmFsO1xuIFx0KnAmIzQzOyYjNDM7ID0gJiMzOTtcXDAmIzM5Oztcbi1cdGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbiYjNDM7XHRpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZVxuJiM0MztcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG4mIzQzO1x0XHQgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbiYjNDM7XHRcdFx0Z290byBlaW52YWw7XG4mIzQzO1x0fSBlbHNlIGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSkge1xuIFx0XHRnb3RvIGVpbnZhbDtcbiYjNDM7XHR9XG4gXHRwcl9kZWJ1ZyhcJiMzNDtyZWdpc3RlcjogaW50ZXJwcmV0ZXI6IHslc31cXG5cJiMzNDssIGUtXHUwMDNlaW50ZXJwcmV0ZXIpO1xuIFxuIFx0LyogUGFyc2UgdGhlICYjMzk7ZmxhZ3MmIzM5OyBmaWVsZC4gKi9cbkBAIC02MDIsNyAmIzQzOzc1OSw5IEBAIHN0YXRpYyB2b2lkIGVudHJ5X3N0YXR1cyhOb2RlICplLCBjaGFyICpwYWdlKVxuIFx0XHQqZHAmIzQzOyYjNDM7ID0gJiMzOTtGJiMzOTs7XG4gXHQqZHAmIzQzOyYjNDM7ID0gJiMzOTtcXG4mIzM5OztcbiBcbi1cdGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbiYjNDM7XHRcdHNwcmludGYoZHAsIFwmIzM0O2JwZiAlc1xcblwmIzM0OywgZS1cdTAwM2VtYWdpYyk7XG4mIzQzO1x0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHNwcmludGYoZHAsIFwmIzM0O2V4dGVuc2lvbiAuJXNcXG5cJiMzNDssIGUtXHUwMDNlbWFnaWMpO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZHAgJiM0Mzs9IHNwcmludGYoZHAsIFwmIzM0O29mZnNldCAlaVxcbm1hZ2ljIFwmIzM0OywgZS1cdTAwM2VvZmZzZXQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5pbmRleCA3NzE5ZjY1Mjg0NDU2MC4uM2FlZjQ0YjY5NGJkMGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5AQCAtMzg3NCw2ICYjNDM7Mzg3NCw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X2NvbW1fcHJvdG87XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X3N0YWNraWRfcHJvdG87XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXG5pbmRleCA4OWIzNmRlNWZkYmI2ZC4uZGNlMTU1YzViYmQ3NWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxuQEAgLTYxNDIsNiAmIzQzOzYxNDIsNyBAQCB1bmlvbiBicGZfYXR0ciB7XG4gXHRGTih1c2VyX3JpbmdidWZfZHJhaW4sIDIwOSwgIyNjdHgpXHRcdFxcXG4gXHRGTihjZ3JwX3N0b3JhZ2VfZ2V0LCAyMTAsICMjY3R4KVx0XHRcXFxuIFx0Rk4oY2dycF9zdG9yYWdlX2RlbGV0ZSwgMjExLCAjI2N0eClcdFx0XFxcbiYjNDM7XHRGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eClcdFx0XFxcbiBcdC8qIFRoaXMgaGVscGVyIGxpc3QgaXMgZWZmZWN0aXZlbHkgZnJvemVuLiBJZiB5b3UgYXJlIHRyeWluZyB0b1x0XFxcbiBcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcdFxcXG4gXHQgKiBsZXNzIHN0YWJpbGl0eSBndWFyYW50ZWVzLiBTZWUgRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFx0XFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCAyZTk2YjRiODQ3Y2UxMi4uMTg3NjkyYTRhNGI2N2IgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC04Mzk3LDYgJiM0Mzs4Mzk3LDE0IEBAIHNrX2ZpbHRlcl9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnBmX2dldF9zb2NrZXRfdWlkX3Byb3RvO1xuIFx0Y2FzZSBCUEZfRlVOQ19wZXJmX2V2ZW50X291dHB1dDpcbiBcdFx0cmV0dXJuIFx1MDAyNmJwZl9za2JfZXZlbnRfb3V0cHV0X3Byb3RvO1xuJiM0MzsjaWYgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpXG4mIzQzO1x0Y2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW5cbiYjNDM7XHRcdCAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHJldHVybiBcdTAwMjZicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG87XG4mIzQzOyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTZmYjQwYjQzMWZiNTU0ZWNjNGExYTI4NTgwNjI4MTlmNGY1NmM0OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMjE6MzE6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuYwppbmRleCA4NDM0OWZjYjkzZjEzYS4uY2Y2Njk4ZDU5YzlmMDQgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9taXNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X21pc2MuYwpAQCAtMjksNiAmIzQzOzI5LDExIEBACiAjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAKJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9maWx0ZXIuaCZndDsKJiM0MzsjZW5kaWYKJiM0MzsKICNpbmNsdWRlICYjMzQ7aW50ZXJuYWwuaCYjMzQ7CiAKICNpZmRlZiBERUJVRwpAQCAtNDEsMTIgJiM0Mzs0NiwxNCBAQCBlbnVtIHsKIAlWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi8KIH07CiAKLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTsKJiM0MztlbnVtIHtFbmFibGVkLCBNYWdpYywgQnBmfTsKICNkZWZpbmUgTUlTQ19GTVRfUFJFU0VSVkVfQVJHVjAgKDFVTCAmbHQ7Jmx0OyAzMSkKICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9CSU5BUlkgKDFVTCAmbHQ7Jmx0OyAzMCkKICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCAmbHQ7Jmx0OyAyOSkKICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgJmx0OyZsdDsgMjgpCiAKJiM0MztzdHJ1Y3QgYnBmX3Byb2c7CiYjNDM7CiB0eXBlZGVmIHN0cnVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkvKiB0eXBlLCBzdGF0dXMsIGV0Yy4gKi8KQEAgLTU5LDYgJiM0Mzs2Niw5IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlOwogCXJlZmNvdW50X3QgdXNlcnM7CQkvKiBzeW5jIHJlbW92YWwgd2l0aCBsb2FkX21pc2NfYmluYXJ5KCkgKi8KJiM0MzsjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCiYjNDM7CXN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2c7CiYjNDM7I2VuZGlmCiB9IE5vZGU7CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlOwpAQCAtNzgsMTAgJiM0Mzs4OCw1MSBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTsKICAqLwogI2RlZmluZSBNQVhfUkVHSVNURVJfTEVOR1RIIDE5MjAKIAomIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTEwKJiM0MztzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgewomIzQzOwljaGFyIHBhdGhbUEFUSF9NQVhdOwomIzQzOwlpbnQgbGVuOwkvKiAmbHQ7IDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi8KJiM0Mzt9OwomIzQzO3N0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAsIGJpbmZtdF9icGZfaW50ZXJwKTsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIGJwZl9iaW5wcm1fc2V0X2ludGVycCAtIGxldCBhIGJpbmZtdF9taXNjICYjMzk7QiYjMzk7IHByb2dyYW0gcGljayB0aGUgaW50ZXJwcmV0ZXIuCiYjNDM7ICogQHBhdGg6IGludGVycHJldGVyIHBhdGgsIGluIEJQRi1hY2Nlc3NpYmxlIG1lbW9yeQomIzQzOyAqIEBsZW46ICBudW1iZXIgb2YgYnl0ZXMgaW4gQHBhdGgKJiM0MzsgKgomIzQzOyAqIFRoZSBwcm9ncmFtIGNvbXB1dGVzIHRoZSBpbnRlcnByZXRlciBwYXRoIGhvd2V2ZXIgaXQgc2VlcyBmaXQgKGUuZy4gcmVsYXRpdmUKJiM0MzsgKiB0byB0aGUgYmluYXJ5KS4gVGhlIHBhdGggaXMgc3Rhc2hlZCBvbiBhIHBlci1DUFUgYXJlYSB0aGF0IGJpbmZtdF9taXNjIHJlYWRzCiYjNDM7ICogYmFjayBpbW1lZGlhdGVseSBhZnRlciBydW5uaW5nIHRoZSBwcm9ncmFtIHVuZGVyIG1pZ3JhdGVfZGlzYWJsZSgpLCBzbyBpdAomIzQzOyAqIGNhbm5vdCByYWNlIHdpdGggYW5vdGhlciBDUFUuCiYjNDM7ICovCiYjNDM7QlBGX0NBTExfMihicGZfYmlucHJtX3NldF9pbnRlcnAsIGNvbnN0IGNoYXIgKiwgcGF0aCwgdTMyLCBsZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgKnNjID0gdGhpc19jcHVfcHRyKCZhbXA7YmluZm10X2JwZl9pbnRlcnApOwomIzQzOwomIzQzOwlpZiAobGVuID09IDAgfHwgbGVuICZndDs9IFBBVEhfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CS8qIEBwYXRoIGlzIEBsZW4gYnl0ZXMgb2YgQlBGIG1lbW9yeSBhbmQgaXMgbm90IE5VTC10ZXJtaW5hdGVkLiAqLwomIzQzOwltZW1jcHkoc2MtJmd0O3BhdGgsIHBhdGgsIGxlbik7CiYjNDM7CXNjLSZndDtwYXRoW2xlbl0gPSAmIzM5O1wwJiMzOTs7CiYjNDM7CXNjLSZndDtsZW4gPSBsZW47CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvID0gewomIzQzOwkuZnVuYwkJPSBicGZfYmlucHJtX3NldF9pbnRlcnAsCiYjNDM7CS5ncGxfb25seQk9IGZhbHNlLAomIzQzOwkucmV0X3R5cGUJPSBSRVRfSU5URUdFUiwKJiM0MzsJLmFyZzFfdHlwZQk9IEFSR19QVFJfVE9fTUVNIHwgTUVNX1JET05MWSwKJiM0MzsJLmFyZzJfdHlwZQk9IEFSR19DT05TVF9TSVpFLAomIzQzO307CiYjNDM7I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqLwomIzQzOwogLyoqCiAgKiBzZWFyY2hfYmluZm10X2hhbmRsZXIgLSBzZWFyY2ggZm9yIGEgYmluYXJ5IGhhbmRsZXIgZm9yIEBicHJtCiAgKiBAbWlzYzogaGFuZGxlIHRvIGJpbmZtdF9taXNjIGluc3RhbmNlCiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyCiYjNDM7ICogQGJwZl9pbnRlcnA6IHJlY2VpdmVzIGEga21hbGxvYyYjMzk7ZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJiMzOTtCJiMzOTsgcHJvZ3JhbSBjaG9vc2VzCiYjNDM7ICogICAgICAgICAgICAgIG9uZSB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCk7IHRoZSBjYWxsZXIgbXVzdCBrZnJlZSgpIGl0CiAgKgogICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5CiAgKiB0eXBlIGhhbmRsZXJzLgpAQCAtODksNyAmIzQzOzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlOwogICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZQogICovCiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKLQkJCQkgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQomIzQzOwkJCQkgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAomIzQzOwkJCQkgICBjaGFyICoqYnBmX2ludGVycCkKIHsKIAljaGFyICpwID0gc3RycmNocihicHJtLSZndDtpbnRlcnAsICYjMzk7LiYjMzk7KTsKIAlOb2RlICplOwpAQCAtMTAzLDYgJiM0MzsxNTUsMzcgQEAgc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsCiAJCWlmICghdGVzdF9iaXQoRW5hYmxlZCwgJmFtcDtlLSZndDtmbGFncykpCiAJCQljb250aW51ZTsKIAomIzQzOwkJLyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gQlBGIGlmIGFwcGxpY2FibGUuICovCiYjNDM7CQlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTEwKJiM0MzsJCQlpZiAoZS0mZ3Q7YnBmX3Byb2cpIHsKJiM0MzsJCQkJc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYzsKJiM0MzsJCQkJdTMyIHJldDsKJiM0MzsKJiM0MzsJCQkJbWlncmF0ZV9kaXNhYmxlKCk7CiYjNDM7CQkJCXNjID0gdGhpc19jcHVfcHRyKCZhbXA7YmluZm10X2JwZl9pbnRlcnApOwomIzQzOwkJCQlzYy0mZ3Q7bGVuID0gLTE7CiYjNDM7CiYjNDM7CQkJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCQkJcmV0ID0gYnBmX3Byb2dfcnVuKGUtJmd0O2JwZl9wcm9nLCBicHJtLSZndDtidWYpOwomIzQzOwkJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKJiM0MzsJCQkJaWYgKHJldCA9PSAxICZhbXA7JmFtcDsgc2MtJmd0O2xlbiAmZ3Q7IDApCiYjNDM7CQkJCQkqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLSZndDtwYXRoLAomIzQzOwkJCQkJCQkJICBzYy0mZ3Q7bGVuLAomIzQzOwkJCQkJCQkJICBHRlBfQVRPTUlDKTsKJiM0MzsJCQkJbWlncmF0ZV9lbmFibGUoKTsKJiM0MzsKJiM0MzsJCQkJcHJfZGVidWcoJiMzNDtiaW5mbXRfbWlzYzogcmFuIEJQRiBwcm9ncmFtIGZvciAlcywgcmV0ID0gJXVcbiYjMzQ7LAomIzQzOwkJCQkJIGJwcm0tJmd0O2ZpbGVuYW1lLCByZXQpOwomIzQzOwomIzQzOwkJCQlpZiAocmV0ID09IDEpCiYjNDM7CQkJCQlyZXR1cm4gZTsKJiM0MzsJCQl9CiYjNDM7I2VuZGlmCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9CiYjNDM7CiAJCS8qIERvIG1hdGNoaW5nIGJhc2VkIG9uIGV4dGVuc2lvbiBpZiBhcHBsaWNhYmxlLiAqLwogCQlpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewogCQkJaWYgKHAgJmFtcDsmYW1wOyAhc3RyY21wKGUtJmd0O21hZ2ljLCBwICYjNDM7IDEpKQpAQCAtMTM5LDEyICYjNDM7MjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLAogICogUmV0dXJuOiBiaW5hcnkgdHlwZSBsaXN0IGVudHJ5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZQogICovCiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYywKLQkJCQlzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQomIzQzOwkJCQlzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAomIzQzOwkJCQljaGFyICoqYnBmX2ludGVycCkKIHsKIAlOb2RlICplOwogCiAJcmVhZF9sb2NrKCZhbXA7bWlzYy0mZ3Q7ZW50cmllc19sb2NrKTsKLQllID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwomIzQzOwllID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIGJwZl9pbnRlcnApOwogCWlmIChlKQogCQlyZWZjb3VudF9pbmMoJmFtcDtlLSZndDt1c2Vycyk7CiAJcmVhZF91bmxvY2soJmFtcDttaXNjLSZndDtlbnRyaWVzX2xvY2spOwpAQCAtMTY0LDYgJiM0MzsyNDgsMTAgQEAgc3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpCiAJaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO2UtJmd0O3VzZXJzKSkgewogCQlpZiAoZS0mZ3Q7ZmxhZ3MgJmFtcDsgTUlTQ19GTVRfT1BFTl9GSUxFKQogCQkJZmlscF9jbG9zZShlLSZndDtpbnRlcnBfZmlsZSwgTlVMTCk7CiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTAomIzQzOwkJaWYgKHRlc3RfYml0KEJwZiwgJmFtcDtlLSZndDtmbGFncykgJmFtcDsmYW1wOyBlLSZndDticGZfcHJvZykKJiM0MzsJCQlicGZfcHJvZ19wdXQoZS0mZ3Q7YnBmX3Byb2cpOwomIzQzOyNlbmRpZgogCQlrZnJlZShlKTsKIAl9CiB9CkBAIC0yMDYsMTUgJiM0MzsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJc3RydWN0IGZpbGUgKmludGVycF9maWxlID0gTlVMTDsKIAlpbnQgcmV0dmFsID0gLUVOT0VYRUM7CiAJc3RydWN0IGJpbmZtdF9taXNjICptaXNjOwomIzQzOwljaGFyICpicGZfaW50ZXJwIF9fZnJlZShrZnJlZSkgPSBOVUxMOwomIzQzOwljb25zdCBjaGFyICppbnRlcnByZXRlcjsKIAogCW1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7CiAJaWYgKCFtaXNjLSZndDtlbmFibGVkKQogCQlyZXR1cm4gcmV0dmFsOwogCi0JZm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pOwomIzQzOwlmbXQgPSBnZXRfYmluZm10X2hhbmRsZXIobWlzYywgYnBybSwgJmFtcDticGZfaW50ZXJwKTsKIAlpZiAoIWZtdCkKIAkJcmV0dXJuIHJldHZhbDsKIAomIzQzOwkvKgomIzQzOwkgKiBBICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGUgcHJvZ3JhbQomIzQzOwkgKiBjaG9vc2VzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gT3RoZXIgaGFuZGxlcnMgdXNlIHRoZQomIzQzOwkgKiBpbnRlcnByZXRlciByZWNvcmRlZCBhdCByZWdpc3RyYXRpb24uCiYjNDM7CSAqLwomIzQzOwlpbnRlcnByZXRlciA9IGJwZl9pbnRlcnAgPyBicGZfaW50ZXJwIDogZm10LSZndDtpbnRlcnByZXRlcjsKJiM0MzsJcmV0dmFsID0gLUVOT0VYRUM7CiYjNDM7CWlmICghaW50ZXJwcmV0ZXJbMF0pCiYjNDM7CQlnb3RvIHJldDsKJiM0MzsKIAkvKiBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCB0aGUgZmlsZSBhZnRlciBleGVjICovCiAJcmV0dmFsID0gLUVOT0VOVDsKIAlpZiAoYnBybS0mZ3Q7aW50ZXJwX2ZsYWdzICZhbXA7IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSkKQEAgLTIzOCwyMiAmIzQzOzMzOCwyNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAlicHJtLSZndDthcmdjJiM0MzsmIzQzOzsKIAogCS8qIGFkZCB0aGUgaW50ZXJwIGFzIGFyZ3ZbMF0gKi8KLQlyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoZm10LSZndDtpbnRlcnByZXRlciwgYnBybSk7CiYjNDM7CXJldHZhbCA9IGNvcHlfc3RyaW5nX2tlcm5lbChpbnRlcnByZXRlciwgYnBybSk7CiAJaWYgKHJldHZhbCAmbHQ7IDApCiAJCWdvdG8gcmV0OwogCWJwcm0tJmd0O2FyZ2MmIzQzOyYjNDM7OwogCiAJLyogVXBkYXRlIGludGVycCBpbiBjYXNlIGJpbmZtdF9zY3JpcHQgbmVlZHMgaXQuICovCi0JcmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC0mZ3Q7aW50ZXJwcmV0ZXIsIGJwcm0pOwomIzQzOwlyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoaW50ZXJwcmV0ZXIsIGJwcm0pOwogCWlmIChyZXR2YWwgJmx0OyAwKQogCQlnb3RvIHJldDsKIAotCWlmIChmbXQtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkgewomIzQzOwkvKgomIzQzOwkgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJiMzOTtGJiMzOTsgZmxhZykgb25seQomIzQzOwkgKiBhcHBsaWVzIHRvIHRoZSBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgaW50ZXJwcmV0ZXI7IGEgcHJvZ3JhbS1zdXBwbGllZAomIzQzOwkgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKChmbXQtJmd0O2ZsYWdzICZhbXA7IE1JU0NfRk1UX09QRU5fRklMRSkgJmFtcDsmYW1wOyAhYnBmX2ludGVycCkgewogCQlpbnRlcnBfZmlsZSA9IGZpbGVfY2xvbmVfb3BlbihmbXQtJmd0O2ludGVycF9maWxlKTsKIAkJaWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKQogCQkJZGVueV93cml0ZV9hY2Nlc3MoaW50ZXJwX2ZpbGUpOwogCX0gZWxzZSB7Ci0JCWludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC0mZ3Q7aW50ZXJwcmV0ZXIpOwomIzQzOwkJaW50ZXJwX2ZpbGUgPSBvcGVuX2V4ZWMoaW50ZXJwcmV0ZXIpOwogCX0KIAlyZXR2YWwgPSBQVFJfRVJSKGludGVycF9maWxlKTsKIAlpZiAoSVNfRVJSKGludGVycF9maWxlKSkKQEAgLTQwNCw2ICYjNDM7NTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQogCQlwcl9kZWJ1ZygmIzM0O3JlZ2lzdGVyOiB0eXBlOiBNIChtYWdpYylcbiYjMzQ7KTsKIAkJZS0mZ3Q7ZmxhZ3MgPSAoMSAmbHQ7Jmx0OyBFbmFibGVkKSB8ICgxICZsdDsmbHQ7IE1hZ2ljKTsKIAkJYnJlYWs7CiYjNDM7CWNhc2UgJiMzOTtCJiMzOTs6CiYjNDM7CQlwcl9kZWJ1ZygmIzM0O3JlZ2lzdGVyOiB0eXBlOiBCIChicGYpXG4mIzM0Oyk7CiYjNDM7CQllLSZndDtmbGFncyA9ICgxICZsdDsmbHQ7IEVuYWJsZWQpIHwgKDEgJmx0OyZsdDsgQnBmKTsKJiM0MzsJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWdvdG8gZWludmFsOwogCX0KQEAgLTQ5Miw2ICYjNDM7NjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQogCQkJCX0KIAkJCX0KIAkJfQomIzQzOwl9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgJmFtcDtlLSZndDtmbGFncykpIHsKJiM0MzsJCS8qIEhhbmRsZSB0aGUgJiMzOTtCJiMzOTsgKEJQRikgZm9ybWF0LiAqLwomIzQzOwkJY2hhciAqczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBvZmZzZXQgZmllbGQgYWN0dWFsbHkgaG9sZHMgdGhlIHBpbm5lZCBCUEYgcHJvZ3JhbSBwYXRoICovCiYjNDM7CQlzID0gc3RyY2hyKHAsIGRlbCk7CiYjNDM7CQlpZiAoIXMpCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CQkqcyYjNDM7JiM0MzsgPSAmIzM5O1wwJiMzOTs7CiYjNDM7CQllLSZndDttYWdpYyA9IHA7IC8qIEtlZXAgcGF0aCBpbiBlLSZndDttYWdpYyAqLwomIzQzOwkJcHJfZGVidWcoJiMzNDtyZWdpc3RlcjogYnBmIHByb2dyYW0gcGF0aDogJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTAomIzQzOwkJZS0mZ3Q7YnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtJmd0O21hZ2ljLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpOwomIzQzOwkJaWYgKElTX0VSUihlLSZndDticGZfcHJvZykpIHsKJiM0MzsJCQllcnIgPSBQVFJfRVJSKGUtJmd0O2JwZl9wcm9nKTsKJiM0MzsJCQllLSZndDticGZfcHJvZyA9IE5VTEw7CiYjNDM7CQkJa2ZyZWUoZSk7CiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKJiM0MzsJCX0KJiM0MzsjZWxzZQomIzQzOwkJZ290byBlaW52YWw7CiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7CQlwID0gczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBtYWdpYyBmaWVsZCBpcyB1bnVzZWQsIG11c3QgYmUgZW1wdHkgKi8KJiM0MzsJCXMgPSBzdHJjaHIocCwgZGVsKTsKJiM0MzsJCWlmICghcyB8fCBwICE9IHMpCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CQkqcyYjNDM7JiM0MzsgPSAmIzM5O1wwJiMzOTs7CiYjNDM7CQlwID0gczsKJiM0MzsKJiM0MzsJCS8qIFRoZSBtYXNrIGZpZWxkIGlzIHVudXNlZCwgbXVzdCBiZSBlbXB0eSAqLwomIzQzOwkJcyA9IHN0cmNocihwLCBkZWwpOwomIzQzOwkJaWYgKCFzIHx8IHAgIT0gcykKJiM0MzsJCQlnb3RvIGVpbnZhbDsKJiM0MzsJCSpzJiM0MzsmIzQzOyA9ICYjMzk7XDAmIzM5OzsKJiM0MzsJCXAgPSBzOwogCX0gZWxzZSB7CiAJCS8qIEhhbmRsZSB0aGUgJiMzOTtFJiMzOTsgKGV4dGVuc2lvbikgZm9ybWF0LiAqLwogCkBAIC01MjQsOCAmIzQzOzY3MiwxNyBAQCBzdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudCkKIAlpZiAoIXApCiAJCWdvdG8gZWludmFsOwogCSpwJiM0MzsmIzQzOyA9ICYjMzk7XDAmIzM5OzsKLQlpZiAoIWUtJmd0O2ludGVycHJldGVyWzBdKQomIzQzOwlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwkJLyoKJiM0MzsJCSAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZQomIzQzOwkJICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhCiYjNDM7CQkgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZS0mZ3Q7aW50ZXJwcmV0ZXJbMF0pCiYjNDM7CQkJZ290byBlaW52YWw7CiYjNDM7CX0gZWxzZSBpZiAoIWUtJmd0O2ludGVycHJldGVyWzBdKSB7CiAJCWdvdG8gZWludmFsOwomIzQzOwl9CiAJcHJfZGVidWcoJiMzNDtyZWdpc3RlcjogaW50ZXJwcmV0ZXI6IHslc31cbiYjMzQ7LCBlLSZndDtpbnRlcnByZXRlcik7CiAKIAkvKiBQYXJzZSB0aGUgJiMzOTtmbGFncyYjMzk7IGZpZWxkLiAqLwpAQCAtNjAyLDcgJiM0Mzs3NTksOSBAQCBzdGF0aWMgdm9pZCBlbnRyeV9zdGF0dXMoTm9kZSAqZSwgY2hhciAqcGFnZSkKIAkJKmRwJiM0MzsmIzQzOyA9ICYjMzk7RiYjMzk7OwogCSpkcCYjNDM7JiM0MzsgPSAmIzM5O1xuJiMzOTs7CiAKLQlpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwlpZiAodGVzdF9iaXQoQnBmLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewomIzQzOwkJc3ByaW50ZihkcCwgJiMzNDticGYgJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiYjNDM7CX0gZWxzZSBpZiAoIXRlc3RfYml0KE1hZ2ljLCAmYW1wO2UtJmd0O2ZsYWdzKSkgewogCQlzcHJpbnRmKGRwLCAmIzM0O2V4dGVuc2lvbiAuJXNcbiYjMzQ7LCBlLSZndDttYWdpYyk7CiAJfSBlbHNlIHsKIAkJZHAgJiM0Mzs9IHNwcmludGYoZHAsICYjMzQ7b2Zmc2V0ICVpXG5tYWdpYyAmIzM0OywgZS0mZ3Q7b2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oCmluZGV4IDc3MTlmNjUyODQ0NTYwLi4zYWVmNDRiNjk0YmQwYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oCkBAIC0zODc0LDYgJiM0MzszODc0LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X2Jvb3RfbnNfcHJvdG87CiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG87CiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90bzsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9zdGFja2lkX3Byb3RvOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oCmluZGV4IDg5YjM2ZGU1ZmRiYjZkLi5kY2UxNTVjNWJiZDc1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaApAQCAtNjE0Miw2ICYjNDM7NjE0Miw3IEBAIHVuaW9uIGJwZl9hdHRyIHsKIAlGTih1c2VyX3JpbmdidWZfZHJhaW4sIDIwOSwgIyNjdHgpCQlcCiAJRk4oY2dycF9zdG9yYWdlX2dldCwgMjEwLCAjI2N0eCkJCVwKIAlGTihjZ3JwX3N0b3JhZ2VfZGVsZXRlLCAyMTEsICMjY3R4KQkJXAomIzQzOwlGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eCkJCVwKIAkvKiBUaGlzIGhlbHBlciBsaXN0IGlzIGVmZmVjdGl2ZWx5IGZyb3plbi4gSWYgeW91IGFyZSB0cnlpbmcgdG8JXAogCSAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXMJXAogCSAqIGxlc3Mgc3RhYmlsaXR5IGd1YXJhbnRlZXMuIFNlZSBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CVwKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggMmU5NmI0Yjg0N2NlMTIuLjE4NzY5MmE0YTRiNjdiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtODM5Nyw2ICYjNDM7ODM5NywxNCBAQCBza19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJcmV0dXJuICZhbXA7YnBmX2dldF9zb2NrZXRfdWlkX3Byb3RvOwogCWNhc2UgQlBGX0ZVTkNfcGVyZl9ldmVudF9vdXRwdXQ6CiAJCXJldHVybiAmYW1wO2JwZl9za2JfZXZlbnRfb3V0cHV0X3Byb3RvOwomIzQzOyNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQykKJiM0MzsJY2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDoKJiM0MzsJCS8qCiYjNDM7CQkgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW4KJiM0MzsJCSAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuCiYjNDM7CQkgKi8KJiM0MzsJCXJldHVybiAmYW1wO2JwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90bzsKJiM0MzsjZW5kaWYKIAlkZWZhdWx0OgogCQlyZXR1cm4gYnBmX3NrX2Jhc2VfZnVuY19wcm90byhmdW5jX2lkLCBwcm9nKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgYmluZm10X21pc2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGJpbmZtdF9taXNjIGhhbmRsZXIgdHlwZSwgJiMzOTtCJiMzOTsg4oCTIGZvciBCUEYsIG5hdHVyYWxseS4gVGhlIGlkZWEgaXMgdG8gdXNlIGEgQlBGIHByb2dyYW0gdG8gZHluYW1pY2FsbHkgc2VsZWN0IGFuIGludGVycHJldGVyIGJhc2VkIG9uIHRoZSBiaW5hcnkgaXRzZWxmLiBTZWVtcyBsaWtlIGEgY2xldmVyIGFwcHJvYWNoIGZvciBlbmhhbmNlZCBmbGV4aWJpbGl0eS4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYmluZm10X21pc2MuY2AsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIG1hbmFnaW5nIGV4ZWN1dGFibGUgZm9ybWF0cywgYXMgZXhwZWN0ZWQuCgpJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIG5ldyBCUEYgaGVscGVyLCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgd2hpY2ggaXMgY2VudHJhbCB0byB0aGlzIHdob2xlIHRoaW5nLiBQbHVzLCBtb2RpZmljYXRpb25zIHRvIGNydWNpYWwgZnVuY3Rpb25zIGxpa2UgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBjcmVhdGVfZW50cnlgLCBhbmQgYGVudHJ5X3N0YXR1c2AsIGluZGljYXRlIHRoZXkmIzM5O3ZlIGludGVncmF0ZWQgdGhpcyBCUEYtYmFzZWQgYXBwcm9hY2ggZGVlcGx5IGludG8gdGhlIGV4aXN0aW5nIGJpbmZtdF9taXNjIGluZnJhc3RydWN0dXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KClRoZSBjb3JlIGNvZGUgaXMgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTGAgd2l0aGluIGBmcy9iaW5mbXRfbWlzYy5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoaXMgYXNzdW1lcyB0aGUgQlBGIHN5c2NhbGxzIGFyZSBhdmFpbGFibGUuIGBDT05GSUdfQklORk1UX01JU0NgIGlzLCBvZiBjb3Vyc2UsIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkuIEFoYSwgSSBzZWUgYElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKWAgdXNlZCBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgIHdoaWNoIGNvdWxkIGJlIGFuIGludGVyZXN0aW5nIHBvaW50IG9mIGNvbnZlcmdlbmNlLgoKVGltZSB0byBicm9hZGVuIHRoZSBzZWFyY2ggZm9yIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgb3Igb3RoZXIgaW50ZXJhY3Rpb25zIEkmIzM5O3ZlIG92ZXJsb29rZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgZnVsbCBzY29wZSBvZiB0aGlzIGNoYW5nZSBiZWZvcmUgSSBmb3JtIGFueSBqdWRnZW1lbnRzIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wYWN0cyBvciBpbnRlZ3JhdGlvbiBjaGFsbGVuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CSU5GTVRfTUlTQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0PTg9b3RoZXIgcHJvZ3JhbSBhZnRlciB5b3UgaGF2ZSBkb25lIHRoZSBmb2xsb3dpbmc6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9qYXZhLnJzdC0yMS0yKSBZb3UgaGF2ZSB0byBjb21waWxlIEJJTkZNVF9NSVNDIGVpdGhlciBhcyBhIG1vZHVsZSBvciBpbnRvXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0OjIyOiAgIHRoZSBrZXJuZWwgKGBgQ09ORklHX0JJTkZNVF9NSVNDYGApIGFuZCBzZXQgaXQgdXAgcHJvcGVybHkuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0LTIzLSAgIElmIHlvdSBjaG9vc2UgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgaGF2ZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3Q9OT1vdGhlciBwcm9ncmFtIGFmdGVyIHlvdSBoYXZlIGRvbmUgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21vbm8ucnN0LTI1LTIpIFlvdSBoYXZlIHRvIGNvbXBpbGUgQklORk1UX01JU0MgZWl0aGVyIGFzIGEgbW9kdWxlIG9yIGludG9cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3Q6MjY6ICAgdGhlIGtlcm5lbCAoYGBDT05GSUdfQklORk1UX01JU0NgYCkgYW5kIHNldCBpdCB1cCBwcm9wZXJseS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3QtMjctICAgSWYgeW91IGNob29zZSB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCB5b3Ugd2lsbCBoYXZlXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01MD1DT05GSUdfTU9EVUxFX1VOTE9BRD15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTUxLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNTMtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnPTE4PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9hcm0vY29uZmlncy9nZW1pbmlfZGVmY29uZmlnOjE5OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWctMjAtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnPTU2PUNPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEw9eVxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjU3OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc9Mzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL2FybS9jb25maWdzL29tYXAxX2RlZmNvbmZpZzo0MDpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWctNDEtIyBDT05GSUdfU1dBUCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTYyPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjYzOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctNjQtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnPTQ1PUNPTkZJR19DTURMSU5FX1BBUlRJVElPTj15XG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NDY6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00Ny1DT05GSUdfU0xVQl9USU5ZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc9MTk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXIxM3h4X2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZz0xMz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXIzeHhfZGVmY29uZmlnOjE0OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZy0xNS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwZWFyNnh4X2RlZmNvbmZpZz0xMD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL2FybS9jb25maWdzL3NwZWFyNnh4X2RlZmNvbmZpZy0xMi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjE5OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZy0yMC1DT05GSUdfUE09eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9OTM9Q09ORklHX0JGUV9HUk9VUF9JT1NDSEVEPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6OTQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTUtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwOD1DT05GSUdfQkZRX0dST1VQX0lPU0NIRUQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEwLUNPTkZJR19aU1dBUD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQyPUNPTkZJR19JT1NDSEVEX0JGUT1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDMtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjQ0OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz0zOD1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnOjQwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTQxLSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz00NT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTQ2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0NzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTQ4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz0zNz1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZzozOTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTQwLSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9MzY9Q09ORklHX0lPU0NIRURfQkZRPW1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctMzctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozODpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTY9Q09ORklHX0lPU0NIRURfQkZRPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01Ny0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTg6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01OS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz0zND1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTM3LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTM1PUNPTkZJR19JT1NDSEVEX0JGUT1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy0zNi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzgtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zNj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjM4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTM5LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N0bWFyazJfZGVmY29uZmlnPTI5PUNPTkZJR19CSU5GTVRfWkZMQVQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvbTY4ay9jb25maWdzL3N0bWFyazJfZGVmY29uZmlnLTMxLSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctMzMtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc6MzQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzozNDpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc9Mjc9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MTc9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTE5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MjQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTI1LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTE5PUNPTkZJR19TR0lfUEFSVElUSU9OPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZz0xNz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZy0xOS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9Mjc9Q09ORklHX01RX0lPU0NIRURfREVBRExJTkU9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9MzU9Q09ORklHX0JGUV9HUk9VUF9JT1NDSEVEPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0zNy1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTQ5PUNPTkZJR19JT1NDSEVEX0JGUT15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTUxLUNPTkZJR19LU009eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTM4PUNPTkZJR19LQVJNQV9QQVJUSVRJT049eVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc6Mzk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQwLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3BpYzMybXpkYV9kZWZjb25maWc9MjQ9Q09ORklHX1NHSV9QQVJUSVRJT049eVxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZzoyNTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZy0yNi1DT05GSUdfREVWVE1QRlM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTIwLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MjY9Q09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTMyYml0X2RlZmNvbmZpZy0yNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9MzU9Q09ORklHX0JMS19ERVZfSU5URUdSSVRZPXlcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9Mjg9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctMjktIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTMxLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZz0xMj1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnOjEzOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnLTE0LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZz0xMD1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3N0eF9ncDNfZGVmY29uZmlnLTEyLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0xND1DT05GSUdfSElHSE1FTT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTE2LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYW1pZ2FvbmVfZGVmY29uZmlnPTIxPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvYW1pZ2FvbmVfZGVmY29uZmlnLTIzLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTM0PUNPTkZJR19HRU5fUlRDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnOjM1OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy0zNi1DT05GSUdfSVJRX0FMTF9DUFVTPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jaHJwMzJfZGVmY29uZmlnPTIwPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWc6MjE6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWctMjItQ09ORklHX0lSUV9BTExfQ1BVUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc9MTE9Q09ORklHX0VQODI0OEU9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2VwODI0OGVfZGVmY29uZmlnLTEzLSMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTU9Q09ORklHX0JGU19GUz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo2OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy03LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWc9MTk9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ2FtZWN1YmVfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWctMjEtQ09ORklHX0tFWEVDPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc9MTQ9Q09ORklHX0dFTl9SVEM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMTYtQ09ORklHX0NNRExJTkU9XCYjMzQ7Y29uc29sZT10dHlTMCwxMTUyMDBcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tZ2NvZ2VfZGVmY29uZmlnPTE2PUNPTkZJR19NR0NPR0U9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZzoxNzpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZy0xOC0jIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnPTIzPUNPTkZJR19ISUdITUVNPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWc6MjQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWctMjUtQ09ORklHX0hJQkVSTkFUSU9OPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz00OT1DT05GSUdfSFpfMTAwMD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1MDpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTEtQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTc5PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjgwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODEtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTI2PUNPTkZJR19DUFVfRlJFUV9HT1ZfVVNFUlNQQUNFPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6Mjc6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMjgtQ09ORklHX0lSUV9BTExfQ1BVUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz02NT1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo2NjpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy02Ny1DT05GSUdfSElCRVJOQVRJT049eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzM9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM1OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnPTEzPUNPTkZJR19IWl8xMDA9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc3RvcmNlbnRlcl9kZWZjb25maWc6MTQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnLTE1LUNPTkZJR19DTURMSU5FPVwmIzM0O2NvbnNvbGU9dHR5UzAsMTE1MjAwXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvd2lpX2RlZmNvbmZpZz0xOT1DT05GSUdfUFJFRU1QVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnLTIxLUNPTkZJR19LRVhFQz15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTk4PUNPTkZJR19JT1NDSEVEX0JGUT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTk6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDAtQ09ORklHX1pTV0FQPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTI9Q09ORklHX0lPU0NIRURfQkZRPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5MzpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk0LUNPTkZJR19aU1dBUD15XG4tLVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc9NDA9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWctNDEtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6NDI6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnLTQzLUNPTkZJR19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTMwPUNPTkZJR19QQ0k9eVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnOjMxOkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctMzItQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnPTc0PUNPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6NzU6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy03Ni1DT05GSUdfUE09eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTcyMDZfZGVmY29uZmlnPTQzPUNPTkZJR19CSU5GTVRfWkZMQVQ9eVxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gvc2gvY29uZmlncy9zZTcyMDZfZGVmY29uZmlnLTQ1LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZz0yMT1DT05GSUdfSE9UUExVR19QQ0k9eVxuYXJjaC9zaC9jb25maWdzL3NoMDNfZGVmY29uZmlnOjIyOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gwM19kZWZjb25maWctMjMtQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc9MjQ9Q09ORklHX1BDQ0FSRD15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZzoyNTpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMjYtQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnPTUwPUNPTkZJR19DTURMSU5FPVwmIzM0O2NvbnNvbGU9dHR5U0MwLDExNTIwMCBlYXJseXByaW50az1iaW9zIGlnbm9yZV9sb2dsZXZlbFwmIzM0O1xuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnOjUxOkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctNTItQ09ORklHX05FVD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnPTM1PUNPTkZJR19QQ0lfREVCVUc9eVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMzctQ09ORklHX0NNRExJTkVfRlJPTV9CT09UTE9BREVSPXlcbi0tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MTE9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZzoxMjpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnLTEzLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0yNz1DT05GSUdfU1VOX09QRU5QUk9NRlM9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnOjI4OkNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTEtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MjpDT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTMtQ09ORklHX0hPU1RGUz15XG4tLVxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjI6Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTMtQ09ORklHX0hPU1RGUz15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz01OT1DT05GSUdfQkxLX0NHUk9VUF9JT1BSSU89eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo2MDpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02MS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9NjA9Q09ORklHX0JMS19DR1JPVVBfSU9QUklPPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo2MTpDT05GSUdfQklORk1UX01JU0M9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTYyLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xMD1DT05GSUdfQ01ETElORT1cJiMzNDtjb25zb2xlPXR0eVMwLDM4NDAwIGlwPWJvb3RwIHJvb3Q9bmZzIG5mc3Jvb3Q9L29wdC9tb250YXZpc3RhL3Byby9kZXZraXQveHRlbnNhL2xpbnV4X2JlL3RhcmdldCBtZW1tYXA9MTI4TUAwXCYjMzQ7XG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZy0xMi1DT05GSUdfTkVUPXlcbi0tXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICYjNDM7PSBsb2Nrcy5vXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXHQmIzQzOz0gYmluZm10X21pc2Mub1xuZnMvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0JJTkZNVF9TQ1JJUFQpXHQmIzQzOz0gYmluZm10X3NjcmlwdC5vXG4tLVxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy0xNjctXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcJiMzNDtmc1wmIzM0OywgZnNfc3RhdF9zeXNjdGxzKTtcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpKSB7XG5mcy9maWxlX3RhYmxlLmMtMTY5LVx0XHRzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGRyO1xuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTkyPXN0cnVjdCBsaW51eF9iaW5mbXQge1xuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTEwMS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjEwMjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXG5pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaC0xMDMtc3RydWN0IGJpbmZtdF9taXNjIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmg9NjQ9ZW51bSBybGltaXRfdHlwZSB7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTcxLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oOjcyOiNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaC03My1zdHJ1Y3QgYmluZm10X21pc2M7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oPTc2PXN0cnVjdCB1c2VyX25hbWVzcGFjZSB7XG4tLVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTExMy1cbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaDoxMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oLTExNS1cdHN0cnVjdCBiaW5mbXRfbWlzYyAqYmluZm10X21pc2M7XG4tLVxua2VybmVsL3VzZXIuYy0yMy1cbmtlcm5lbC91c2VyLmM6MjQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXIuYy0yNS1zdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcbi0tXG5rZXJuZWwvdXNlci5jPTM3PXN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnMgPSB7XG4tLVxua2VybmVsL3VzZXIuYy03NS0jZW5kaWZcbmtlcm5lbC91c2VyLmM6NzY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXIuYy03Ny1cdC5iaW5mbXRfbWlzYyA9IFx1MDAyNmluaXRfYmluZm10X21pc2MsXG4tLVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmM9MTk3PXN0YXRpYyB2b2lkIGZyZWVfdXNlcl9ucyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE3LVx0XHR9XG5rZXJuZWwvdXNlcl9uYW1lc3BhY2UuYzoyMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE5LVx0XHRrZnJlZShucy1cdTAwM2ViaW5mbXRfbWlzYyk7XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9ODM4NT1za19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy04Mzk5LVx0XHRyZXR1cm4gXHUwMDI2YnBmX3NrYl9ldmVudF9vdXRwdXRfcHJvdG87XG5uZXQvY29yZS9maWx0ZXIuYzo4NDAwOiNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylcbm5ldC9jb3JlL2ZpbHRlci5jLTg0MDEtXHRjYXNlIEJQRl9GVU5DX2JpbnBybV9zZXRfaW50ZXJwOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND01PUNPTkZJR19BVURJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6NjpDT05GSUdfQklORk1UX01JU0M9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTctQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTg9Q09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0U9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6OTpDT05GSUdfQklORk1UX01JU0M9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTAtQ09ORklHX0JMS19DR1JPVVA9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQ9Q09ORklHX0FVRElUPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjU6Q09ORklHX0JJTkZNVF9NSVNDPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTYtQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIHdpdGggQklORk1UX01JU0MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgIHJlbGF0ZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBnZXR0aW5nIGEgQlBGIGhlbHBlciB3b3JraW5nLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWdzLCB3aGljaCBJJiMzOTt2ZSBpZGVudGlmaWVkIGFzIGBCSU5GTVRfTUlTQ2AgYW5kIGBCUEZfU1lTQ0FMTGAuIE5vdywgSSByZWNhbGwgc2VlaW5nIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCByZWxhdGVkIHRvIGBDT05GSUdfQklORk1UX01JU0NgLiBBaCwgcmlnaHQsIHRoZXJlJiMzOTtzIGFuIGAjaWYgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCBibG9jayB0aGVyZS4gVGhhdCBzdWdnZXN0cyB0aGF0IHRoZSBCUEYgaGVscGVyLCBhdCBsZWFzdCBpbiB0aGF0IGNvbnRleHQsIGlzIG9ubHkgYXZhaWxhYmxlIGlmIGBCSU5GTVRfTUlTQ2AgaXMgKmJ1aWx0LWluKiB0byB0aGUga2VybmVsLgoKU28sIGRpZ2dpbmcgYSBsaXR0bGUgZGVlcGVyLCBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCBpcyBlcXVpdmFsZW50IHRvIGBDT05GSUdfQklORk1UX01JU0M9eWAsIG5vdCBhIG1vZHVsZS4gVGhlcmVmb3JlLCBmb3IgdGhlIEJQRiBoZWxwZXIgdG8gYmUgYXZhaWxhYmxlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYEJJTkZNVF9NSVNDYCBpcyBzZXQgdG8gYHlgIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gb3JkZXIgdG8gZ2V0IGl0IGxvYWRlZC4KCkFuZCwgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgYW5kIHRoaXMgbGlrZWx5IHRpZXMgaW4gdG8gYGZzL2JpbmZtdF9taXNjLmNgLiBMZXQgbWUgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYCB0byBjb25maXJtIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIHR3byBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JJTkZNVF9NSVNDYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmMtMzEtXG5mcy9iaW5mbXRfbWlzYy5jOjMyOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL2JpbmZtdF9taXNjLmMtMzMtI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2Vcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTU3PXR5cGVkZWYgc3RydWN0IHtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTY4LVx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG5mcy9iaW5mbXRfbWlzYy5jOjY5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL2JpbmZtdF9taXNjLmMtNzAtXHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xuLS1cbmZzL2JpbmZtdF9taXNjLmM9NzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG4tLVxuZnMvYmluZm10X21pc2MuYy05MC1cbmZzL2JpbmZtdF9taXNjLmM6OTE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy05Mi1zdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAge1xuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTIxPWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG8gPSB7XG4tLVxuZnMvYmluZm10X21pc2MuYy0xMjctfTtcbmZzL2JpbmZtdF9taXNjLmM6MTI4OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmZzL2JpbmZtdF9taXNjLmMtMTI5LVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTQyPXN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTU5LVx0XHRpZiAodGVzdF9iaXQoQnBmLCBcdTAwMjZlLVx1MDAzZWZsYWdzKSkge1xuZnMvYmluZm10X21pc2MuYzoxNjA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy0xNjEtXHRcdFx0aWYgKGUtXHUwMDNlYnBmX3Byb2cpIHtcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTI0Nj1zdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTI1MC1cdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuZnMvYmluZm10X21pc2MuYzoyNTE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy0yNTItXHRcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNiBlLVx1MDAzZWJwZl9wcm9nKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9NDU1PXN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuLS1cbmZzL2JpbmZtdF9taXNjLmMtNjE1LVxuZnMvYmluZm10X21pc2MuYzo2MTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYy02MTctXHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHllcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBmb3IgdGhpcy4gQnV0IGhhbmcgb24sIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgdXNpbmcgYGJwZl9wcm9nX2dldF90eXBlX3BhdGhgLiBOb3csIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBwcmVzZW5jZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgb2YgYGJwZl9wcm9nX2dldF90eXBlX3BhdGhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9wcm9nX2dldF90eXBlX3BhdGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYz00NTU9c3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4tLVxuZnMvYmluZm10X21pc2MuYy02MTYtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvYmluZm10X21pc2MuYzo2MTc6XHRcdGUtXHUwMDNlYnBmX3Byb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9wYXRoKGUtXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XG5mcy9iaW5mbXRfbWlzYy5jLTYxOC1cdFx0aWYgKElTX0VSUihlLVx1MDAzZWJwZl9wcm9nKSkge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzA4OD1zdGF0aWMgaW5saW5lIGludCBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzA5My1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzA5NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpO1xuaW5jbHVkZS9saW51eC9icGYuaC0zMDk1LWludCBhcnJheV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzQzNz1zdGF0aWMgaW5saW5lIGludCBjcHVfbWFwX2dlbmVyaWNfcmVkaXJlY3Qoc3RydWN0IGJwZl9jcHVfbWFwX2VudHJ5ICpyY3B1LFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzQ0Mi1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzQ0MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9icGYuaC0zNDQ0LVx0XHRcdFx0ZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi9pbm9kZS5jPTYxMT1zdGF0aWMgc3RydWN0IGJwZl9wcm9nICpfX2dldF9wcm9nX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvaW5vZGUuYy02MzctXG5rZXJuZWwvYnBmL2lub2RlLmM6NjM4OnN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcbmtlcm5lbC9icGYvaW5vZGUuYy02Mzkte1xuLS1cbmtlcm5lbC9icGYvaW5vZGUuYy02NTAtfVxua2VybmVsL2JwZi9pbm9kZS5jOjY1MTpFWFBPUlRfU1lNQk9MKGJwZl9wcm9nX2dldF90eXBlX3BhdGgpO1xua2VybmVsL2JwZi9pbm9kZS5jLTY1Mi1cbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X2JwZi5jPTU1PXN0YXRpYyBpbnQgX19icGZfbXRfY2hlY2tfcGF0aChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgYnBmX3Byb2cgKipyZXQpXG4tLVxubmV0L25ldGZpbHRlci94dF9icGYuYy01OS1cbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmM6NjA6XHQqcmV0ID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChwYXRoLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xubmV0L25ldGZpbHRlci94dF9icGYuYy02MS1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oKnJldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSW50ZXJwcmV0ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBhIG5ldyBCUEYgaGVscGVyLCBhbmQgdGhlbiBmaWRkbGVzIHdpdGggYGJpbmZtdF9taXNjYCBzbyB0aGF0IEJQRiBwcm9ncmFtcyBjYW4gY2hvb3NlIGFuIGludGVycHJldGVyLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3Mgc291bmQgYW5kIHJlYWNoYWJsZSDigJMgZ29vZCBzdGFydC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgLiAgV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2AuIFRoYXQgaW1wbGllcyB0aGF0IGBCSU5GTVRfTUlTQ2AgKm11c3QqIGJlIGJ1aWx0LWluLCBub3QgYSBtb2R1bGUsIHJpZ2h0PyAgSGFuZyBvbiwgYENPTkZJR19CSU5GTVRfTUlTQ2AgY2FuIGJlIHNldCB0byBlaXRoZXIgYHlgIG9yIGBtYC4gSWYgaXQmIzM5O3Mgc2V0IHRvIGBtYCwgdGhlbiBgSVNfQlVJTFRJTmAgaXMgZ29pbmcgdG8gYmUgZmFsc2UuIEhtbSwgdGhpcyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIHNldCB0byBgeWAgZm9yIHRoaXMgdG8gd29yay4gIFRoZSB0b29sIGp1c3QgdGFrZXMgdGhlIGNvbmZpZyBuYW1lOyBJIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IGA9eWAuICBJIGd1ZXNzIHN5emthbGxlciB3aWxsIGhhbmRsZSB0aGF0IGJpdCBieSBlbmFibGluZyBpdC4KCkxldCYjMzk7cyBxdWlja2x5IG91dGxpbmUgdGhlIGNvcmUgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMuICBXZSYjMzk7cmUgbG9va2luZyBhdDoKCiogICBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCAodGhlIG5ldyBCUEYgaGVscGVyKQoqICAgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAKKiAgIGBnZXRfYmluZm10X2hhbmRsZXJgCiogICBgbG9hZF9taXNjX2JpbmFyeWAKKiAgIGBjcmVhdGVfZW50cnlgCiogICBgZW50cnlfc3RhdHVzYAoKT2theSwgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGlzLiBUaGUgQlBGIGhlbHBlciBpcyBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYC4gYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAgYW5kIGBsb2FkX21pc2NfYmluYXJ5YCBhcmUgc3RhdGljLCBhbmQgYGxvYWRfbWlzY19iaW5hcnlgIGlzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgYXMgYSBiaW5mbXQgaGFuZGxlci4gQW5kIHRoYXQgb3RoZXIgb25lLCBgY3JlYXRlX2VudHJ5YCwgaXMgc3RhdGljIHRvbywgYW5kIGlzIGNhbGxlZCBmcm9tIGBibV9yZWdpc3Rlcl93cml0ZWAuICBBaCwgc28gSSBzaG91bGQgYmUgbG9va2luZyBhdCBgZnMvYmluZm10X21pc2MuY2AgZm9yIGhvdyBgYm1fcmVnaXN0ZXJfd3JpdGVgIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmluZm10X21pc2MuYz05Mjk9c3RhdGljIGludCBhZGRfZW50cnkoTm9kZSAqZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTk1Ny1cbmZzL2JpbmZtdF9taXNjLmM6OTU4OnN0YXRpYyBzc2l6ZV90IGJtX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLFxuZnMvYmluZm10X21pc2MuYy05NTktXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuLS1cbmZzL2JpbmZtdF9taXNjLmM9MTAwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBibV9yZWdpc3Rlcl9vcGVyYXRpb25zID0ge1xuZnMvYmluZm10X21pc2MuYzoxMDAzOlx0LndyaXRlXHRcdD0gYm1fcmVnaXN0ZXJfd3JpdGUsXG5mcy9iaW5mbXRfbWlzYy5jLTEwMDQtXHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCaW5hcnkgTG9hZGluZyBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgYm1fcmVnaXN0ZXJfd3JpdGVgLCBgY3JlYXRlX2VudHJ5YCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGFuZCBgZ2V0X2JpbmZtdF9oYW5kbGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc3RhdGljL2R5bmFtaWMgbmF0dXJlIGZvciB0aGlzIHNwZWNpZmljIGFuYWx5c2lzLgoKRmlyc3QsIGxldCBtZSBjb25maXJtOiBpcyBgbG9hZF9taXNjX2JpbmFyeWAgYSBzdGF0aWMgZnVuY3Rpb24/IFllcywgaXQgaXMuIEdvb2QuIFRoYXQmIzM5O3Mgb25lIGRhdGEgcG9pbnQuCgpOb3csIHdoYXQgYWJvdXQgYGJwZl9iaW5wcm1fc2V0X2ludGVycGA/IEhtbSwgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGRlZmluZWQgd2l0aCBgQlBGX0NBTExfMmAuIFdhaXQgYSBzZWNvbmTigKYgdGhhdCBgQlBGX0NBTExfMmAgbWFjcm8gaXMgZ29pbmcgdG8gZXhwYW5kIG91dCB0byBzb21ldGhpbmcgbGlrZSBgX19fX2JwZl9iaW5wcm1fc2V0X2ludGVycGAuIEdvdHRhIGNoZWNrIHRoYXQgbWFjcm8gdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGZ1bmN0aW9uIGxpbmthZ2UuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0NBTExfMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmlsdGVyLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNTk9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNC0jZGVmaW5lIEJQRl9DQUxMXzEobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgxLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYyNTojZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgyLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNi0jZGVmaW5lIEJQRl9DQUxMXzMobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgYW5kIHRoZSBCUEYgSklUKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRvIHN0YXJ0LCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2V0dGluZyB0aGUgaW50ZXJwcmV0ZXIgZm9yIGEgYmluYXJ5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSBjb21lcyBpbnRvIHBsYXkgaGVyZSwgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIGBCUEZfQ0FMTF94YCBhbmQgc2VlIGhvdyB0aGUgQlBGIEpJVCBnZXRzIGludm9rZWQgKGlmIGF0IGFsbCkgaW4gdGhpcyBwYXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgQlBGIHZlcmlmaWVyIGlzIGJlaW5nIHV0aWxpemVkLiBJJiMzOTttIGtlZW4gdG8gdHJhY2UgdGhlIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbiBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgbWFuaXB1bGF0aW9uIG9mIHRoZSBwcm9ncmFtIGhlYWRlcnMsIGFuZCBob3cgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjA5LVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo2MTA6I2RlZmluZSBCUEZfQ0FMTF94KHgsIGF0dHIsIG5hbWUsIC4uLilcdFx0XHRcdFx0ICAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMS1cdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipFeGFtaW5pbmcgQlBGIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlc2UgQlBGIGNhbGxzIGFyZSBkZWZpbmVkLiBUaGUgbWFjcm8gYEJQRl9DQUxMX3hgIGlzIHRoZSBrZXkgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGlzIG1hY3JvIGRlZmluZXMgYF9fX18jI25hbWVgIGFzIGFuIGlubGluZSBmdW5jdGlvbiwgYnV0ICpgbmFtZWAqIGl0c2VsZiByZXByZXNlbnRzIHRoZSBhY3R1YWwgdW5kZXJseWluZyBmdW5jdGlvbi4gU28sIGlmIEkmIzM5O20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSBpbiB0aGlzIGNhc2UgaXMgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgZ2l2ZW4gdGhlIGludHJpY2FjaWVzIG9mIEJQRiBhbmQga2VybmVsIGludGVybmFscy4KCk5vdywgd2hlcmUgY2FuIEkgZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgdXNhZ2Ugb2YgYGJwZl9iaW5wcm1fc2V0X2ludGVycGA/IFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhpcyBpcyBpbiBgZnMvYmluZm10X21pc2MuY2AuIEkgbmVlZCB0byBsb29rIHRoZXJlIHRvIGNvbmZpcm0gbXkgaW5mZXJlbmNlIGFuZCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZyBpbiB0aGUgY29udGV4dCBvZiBgYmluZm10X21pc2NgLiBMZXQgbWUgb3BlbiB0aGF0IGZpbGUgYW5kIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9iaW5mbXRfbWlzYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2JpbmZtdF9taXNjLmM9OTY9c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xuLS1cbmZzL2JpbmZtdF9taXNjLmMtOTgtLypcbmZzL2JpbmZtdF9taXNjLmM6OTk6ICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJiMzOTtCJiMzOTsgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbmZzL2JpbmZtdF9taXNjLmMtMTAwLSAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTEwNy0gKi9cbmZzL2JpbmZtdF9taXNjLmM6MTA4OkJQRl9DQUxMXzIoYnBmX2JpbnBybV9zZXRfaW50ZXJwLCBjb25zdCBjaGFyICosIHBhdGgsIHUzMiwgbGVuKVxuZnMvYmluZm10X21pc2MuYy0xMDkte1xuLS1cbmZzL2JpbmZtdF9taXNjLmMtMTIwLVxuZnMvYmluZm10X21pc2MuYzoxMjE6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbmZzL2JpbmZtdF9taXNjLmM6MTIyOlx0LmZ1bmNcdFx0PSBicGZfYmlucHJtX3NldF9pbnRlcnAsXG5mcy9iaW5mbXRfbWlzYy5jLTEyMy1cdC5ncGxfb25seVx0PSBmYWxzZSxcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTEzNC0gKiBAYnBmX2ludGVycDogcmVjZWl2ZXMgYSBrbWFsbG9jJiMzOTtkIGludGVycHJldGVyIHBhdGggaWYgYSAmIzM5O0ImIzM5OyBwcm9ncmFtIGNob29zZXNcbmZzL2JpbmZtdF9taXNjLmM6MTM1OiAqICAgICAgICAgICAgICBvbmUgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpOyB0aGUgY2FsbGVyIG11c3Qga2ZyZWUoKSBpdFxuZnMvYmluZm10X21pc2MuYy0xMzYtICpcbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTI5MT1zdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTMwOS1cdCAqIEEgJiMzOTtCJiMzOTsgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXG5mcy9iaW5mbXRfbWlzYy5jOjMxMDpcdCAqIGNob29zZXMgaXQgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpLiBPdGhlciBoYW5kbGVycyB1c2UgdGhlXG5mcy9iaW5mbXRfbWlzYy5jLTMxMS1cdCAqIGludGVycHJldGVyIHJlY29yZGVkIGF0IHJlZ2lzdHJhdGlvbi5cbi0tXG5mcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcbi0tXG5mcy9iaW5mbXRfbWlzYy5jLTY3Ny1cdFx0ICogQSAmIzM5O0ImIzM5OyAoQlBGKSBoYW5kbGVyIGNhcnJpZXMgbm8gaW50ZXJwcmV0ZXIgb2YgaXRzIG93bjsgdGhlXG5mcy9iaW5mbXRfbWlzYy5jOjY3ODpcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG5mcy9iaW5mbXRfbWlzYy5jLTY3OS1cdFx0ICogc3RhdGljYWxseSByZWdpc3RlcmVkIG9uZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMjE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEJpbkZtdF9NaXNjIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG5ldyBCUEYgbWF0Y2hpbmcgZm9yIGBiaW5mbXRfbWlzY2AgZmVhdHVyZSwgYW5kIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24gc2VlbSB0byBiZTogYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBibV9yZWdpc3Rlcl93cml0ZWAuIFRob3NlIGFyZSB0aGUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBhZGRpdGlvbi4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcmVtZW1iZXIgYXJlIGBCSU5GTVRfTUlTQ2AgKG9idmlvdXNseSksIGFuZCBgQlBGX1NZU0NBTExgLiBUaGlzIGlzIGFic29sdXRlbHkgcmlwZSBmb3IgZnV6emluZy4gQSBuZXcgZmVhdHVyZSBsaWtlIHRoaXMgYWx3YXlzIGFkZHMgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGRlcGVuZGVuY2llcywgdGhvdWdoLgoKUmlnaHQsIGBDT05GSUdfQklORk1UX01JU0NgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBzdXBwb3J0aW5nIGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQmIzM5O3MgaW1wbGljaXRseSBpbmNsdWRlZCBvciBhc3N1bWVkLiBPa2F5LCBJIHNlZSB0aGF0IGBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVJgIGlzIHVzZWQgYXMgd2VsbCwgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEFsc28sIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2lub2RlLmNgLiBUaGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCByaWdodD8gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyB0cnVzdCwgYnV0IHZlcmlmeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCUEYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDIxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lub2RlXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ1OQoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBhbmQgQmluYXJ5IEZvcm1hdCBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlub2RlLm9gIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgc2V0cyB0aGUgc3RhZ2UgZm9yIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkby4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW50ZXJjb25uZWN0aW9ucy4KCkxldCYjMzk7cyBzZWUsIG15IGtleSBzeW1ib2xzIGZvciBleGFtaW5hdGlvbiBhcmU6IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYGdldF9iaW5mbXRfaGFuZGxlcmAsIGBsb2FkX21pc2NfYmluYXJ5YCwgYGNyZWF0ZV9lbnRyeWAsIGFuZCBgYm1fcmVnaXN0ZXJfd3JpdGVgLgoKV2FpdCBhIG1pbnV0ZSwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgdGhhdCYjMzk7cyBhIEJQRiBoZWxwZXIhIEl0JiMzOTtzIGludm9rZWQgYnkgQlBGIHByb2dyYW1zLCBpbnRlcmVzdGluZy4gQW5kIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgIGlzIGNhbGxlZCBieSBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgbG9hZF9taXNjX2JpbmFyeWAuIEFoLWhhLCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiBhIGJpbmFyeS4gQW5kIGl0IHNlZW1zIHRoYXQgYGNyZWF0ZV9lbnRyeWAgaXMgY2FsbGVkIGZyb20gYGJtX3JlZ2lzdGVyX3dyaXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSBgYm1fcmVnaXN0ZXJfd3JpdGVgIGlzIGNhbGxlZCB3aGVuIHdyaXRpbmcgdG8gYC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcmAuCgpBbHJpZ2h0LCB0aGVzZSBhcmUgYWxsIHNvbGlkIGZvY3VzIHN5bWJvbHMsIHRoZXkgc2VlbSB0byBoaWdobGlnaHQgdGhlIHJpZ2h0IGFyZWFzLiBJJiMzOTttIHNhdGlzZmllZC4gSSYjMzk7bGwgZmluYWxpemUgdGhlIHJlc3VsdHMgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAyMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX01JU0MmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfYmlucHJtX3NldF9pbnRlcnAmIzM0OywKICAgICYjMzQ7c2VhcmNoX2JpbmZtdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2dldF9iaW5mbXRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtsb2FkX21pc2NfYmluYXJ5JiMzNDssCiAgICAmIzM0O2NyZWF0ZV9lbnRyeSYjMzQ7LAogICAgJiMzNDtibV9yZWdpc3Rlcl93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICYjMzk7QiYjMzk7IChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjE1LjY3OTIxNTE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNDUwMDE1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX01JU0NcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2JpbnBybV9zZXRfaW50ZXJwXCIsXG4gICAgXCJzZWFyY2hfYmluZm10X2hhbmRsZXJcIixcbiAgICBcImdldF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwibG9hZF9taXNjX2JpbmFyeVwiLFxuICAgIFwiY3JlYXRlX2VudHJ5XCIsXG4gICAgXCJibV9yZWdpc3Rlcl93cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgJ0InIChCUEYpIGhhbmRsZXIgdHlwZSBmb3IgYmluZm10X21pc2MsIGFsbG93aW5nIEJQRiBwcm9ncmFtcyB0byBtYXRjaCBiaW5hcmllcyBhbmQgc2VsZWN0IGludGVycHJldGVycy4gVGhpcyBhZGRzIG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiBiaW5mbXRfbWlzYyByZWdpc3RyYXRpb24gYW5kIGJpbmFyeSBleGVjdXRpb24gcGF0aHMsIGFzIHdlbGwgYXMgYSBuZXcgQlBGIGhlbHBlciBmdW5jdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MTUuNjc5MjI2NzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1ODcwMjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2ZmI0MGI0MzFmYjU1NGVjYzRhMWEyODU4MDYyODE5ZjRmNTZjNDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgNCAyMTozMToxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuY1xcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi5jZjY2OThkNTljOWYwNCAxMDA2NDRcXG4tLS0gYS9mcy9iaW5mbXRfbWlzYy5jXFxuKysrIGIvZnMvYmluZm10X21pc2MuY1xcbkBAIC0yOSw2ICsyOSwxMSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gXFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsdGVyLmhcXHUwMDNlXFxuKyNlbmRpZlxcbitcXG4gI2luY2x1ZGUgXFxcImludGVybmFsLmhcXFwiXFxuIFxcbiAjaWZkZWYgREVCVUdcXG5AQCAtNDEsMTIgKzQ2LDE0IEBAIGVudW0ge1xcbiBcXHRWRVJCT1NFX1NUQVRVUyA9IDEgLyogbWFrZSBpdCB6ZXJvIHRvIHNhdmUgNDAwIGJ5dGVzIGtlcm5lbCBtZW1vcnkgKi9cXG4gfTtcXG4gXFxuLWVudW0ge0VuYWJsZWQsIE1hZ2ljfTtcXG4rZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XFxuICNkZWZpbmUgTUlTQ19GTVRfUFJFU0VSVkVfQVJHVjAgKDFVTCBcXHUwMDNjXFx1MDAzYyAzMSlcXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0JJTkFSWSAoMVVMIFxcdTAwM2NcXHUwMDNjIDMwKVxcbiAjZGVmaW5lIE1JU0NfRk1UX0NSRURFTlRJQUxTICgxVUwgXFx1MDAzY1xcdTAwM2MgMjkpXFxuICNkZWZpbmUgTUlTQ19GTVRfT1BFTl9GSUxFICgxVUwgXFx1MDAzY1xcdTAwM2MgMjgpXFxuIFxcbitzdHJ1Y3QgYnBmX3Byb2c7XFxuK1xcbiB0eXBlZGVmIHN0cnVjdCB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXHRcXHQvKiB0eXBlLCBzdGF0dXMsIGV0Yy4gKi9cXG5AQCAtNTksNiArNjYsOSBAQCB0eXBlZGVmIHN0cnVjdCB7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4gXFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xcbiBcXHRyZWZjb3VudF90IHVzZXJzO1xcdFxcdC8qIHN5bmMgcmVtb3ZhbCB3aXRoIGxvYWRfbWlzY19iaW5hcnkoKSAqL1xcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuK1xcdHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2c7XFxuKyNlbmRpZlxcbiB9IE5vZGU7XFxuIFxcbiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcXG5AQCAtNzgsMTAgKzg4LDUxIEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKi9cXG4gI2RlZmluZSBNQVhfUkVHSVNURVJfTEVOR1RIIDE5MjBcXG4gXFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwIHtcXG4rXFx0Y2hhciBwYXRoW1BBVEhfTUFYXTtcXG4rXFx0aW50IGxlbjtcXHQvKiBcXHUwMDNjIDAgaWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzZXQgbm8gaW50ZXJwcmV0ZXIgKi9cXG4rfTtcXG4rc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCwgYmluZm10X2JwZl9pbnRlcnApO1xcbitcXG4rLypcXG4rICogYnBmX2JpbnBybV9zZXRfaW50ZXJwIC0gbGV0IGEgYmluZm10X21pc2MgJ0InIHByb2dyYW0gcGljayB0aGUgaW50ZXJwcmV0ZXIuXFxuKyAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcXG4rICogQGxlbjogIG51bWJlciBvZiBieXRlcyBpbiBAcGF0aFxcbisgKlxcbisgKiBUaGUgcHJvZ3JhbSBjb21wdXRlcyB0aGUgaW50ZXJwcmV0ZXIgcGF0aCBob3dldmVyIGl0IHNlZXMgZml0IChlLmcuIHJlbGF0aXZlXFxuKyAqIHRvIHRoZSBiaW5hcnkpLiBUaGUgcGF0aCBpcyBzdGFzaGVkIG9uIGEgcGVyLUNQVSBhcmVhIHRoYXQgYmluZm10X21pc2MgcmVhZHNcXG4rICogYmFjayBpbW1lZGlhdGVseSBhZnRlciBydW5uaW5nIHRoZSBwcm9ncmFtIHVuZGVyIG1pZ3JhdGVfZGlzYWJsZSgpLCBzbyBpdFxcbisgKiBjYW5ub3QgcmFjZSB3aXRoIGFub3RoZXIgQ1BVLlxcbisgKi9cXG4rQlBGX0NBTExfMihicGZfYmlucHJtX3NldF9pbnRlcnAsIGNvbnN0IGNoYXIgKiwgcGF0aCwgdTMyLCBsZW4pXFxuK3tcXG4rXFx0c3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYyA9IHRoaXNfY3B1X3B0cihcXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xcbitcXG4rXFx0aWYgKGxlbiA9PSAwIHx8IGxlbiBcXHUwMDNlPSBQQVRIX01BWClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdC8qIEBwYXRoIGlzIEBsZW4gYnl0ZXMgb2YgQlBGIG1lbW9yeSBhbmQgaXMgbm90IE5VTC10ZXJtaW5hdGVkLiAqL1xcbitcXHRtZW1jcHkoc2MtXFx1MDAzZXBhdGgsIHBhdGgsIGxlbik7XFxuK1xcdHNjLVxcdTAwM2VwYXRoW2xlbl0gPSAnXFxcXDAnO1xcbitcXHRzYy1cXHUwMDNlbGVuID0gbGVuO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcXG4rXFx0LmZ1bmNcXHRcXHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcXG4rXFx0LmdwbF9vbmx5XFx0PSBmYWxzZSxcXG4rXFx0LnJldF90eXBlXFx0PSBSRVRfSU5URUdFUixcXG4rXFx0LmFyZzFfdHlwZVxcdD0gQVJHX1BUUl9UT19NRU0gfCBNRU1fUkRPTkxZLFxcbitcXHQuYXJnMl90eXBlXFx0PSBBUkdfQ09OU1RfU0laRSxcXG4rfTtcXG4rI2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbitcXG4gLyoqXFxuICAqIHNlYXJjaF9iaW5mbXRfaGFuZGxlciAtIHNlYXJjaCBmb3IgYSBiaW5hcnkgaGFuZGxlciBmb3IgQGJwcm1cXG4gICogQG1pc2M6IGhhbmRsZSB0byBiaW5mbXRfbWlzYyBpbnN0YW5jZVxcbiAgKiBAYnBybTogYmluYXJ5IGZvciB3aGljaCB3ZSBhcmUgbG9va2luZyBmb3IgYSBoYW5kbGVyXFxuKyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MnZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJ0InIHByb2dyYW0gY2hvb3Nlc1xcbisgKiAgICAgICAgICAgICAgb25lIHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKTsgdGhlIGNhbGxlciBtdXN0IGtmcmVlKCkgaXRcXG4gICpcXG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XFxuICAqIHR5cGUgaGFuZGxlcnMuXFxuQEAgLTg5LDcgKzE0MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXFxuICAqL1xcbiBzdGF0aWMgTm9kZSAqc2VhcmNoX2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4tXFx0XFx0XFx0XFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcXG4rXFx0XFx0XFx0XFx0ICAgY2hhciAqKmJwZl9pbnRlcnApXFxuIHtcXG4gXFx0Y2hhciAqcCA9IHN0cnJjaHIoYnBybS1cXHUwMDNlaW50ZXJwLCAnLicpO1xcbiBcXHROb2RlICplO1xcbkBAIC0xMDMsNiArMTU1LDM3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiBcXHRcXHRpZiAoIXRlc3RfYml0KEVuYWJsZWQsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0LyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gQlBGIGlmIGFwcGxpY2FibGUuICovXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChCcGYsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpIHtcXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbitcXHRcXHRcXHRpZiAoZS1cXHUwMDNlYnBmX3Byb2cpIHtcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGJpbmZtdF9icGZfaW50ZXJwICpzYztcXG4rXFx0XFx0XFx0XFx0dTMyIHJldDtcXG4rXFxuK1xcdFxcdFxcdFxcdG1pZ3JhdGVfZGlzYWJsZSgpO1xcbitcXHRcXHRcXHRcXHRzYyA9IHRoaXNfY3B1X3B0cihcXHUwMDI2YmluZm10X2JwZl9pbnRlcnApO1xcbitcXHRcXHRcXHRcXHRzYy1cXHUwMDNlbGVuID0gLTE7XFxuK1xcbitcXHRcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdFxcdFxcdFxcdHJldCA9IGJwZl9wcm9nX3J1bihlLVxcdTAwM2VicGZfcHJvZywgYnBybS1cXHUwMDNlYnVmKTtcXG4rXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcbitcXHRcXHRcXHRcXHRpZiAocmV0ID09IDEgXFx1MDAyNlxcdTAwMjYgc2MtXFx1MDAzZWxlbiBcXHUwMDNlIDApXFxuK1xcdFxcdFxcdFxcdFxcdCpicGZfaW50ZXJwID0ga21lbWR1cF9udWwoc2MtXFx1MDAzZXBhdGgsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc2MtXFx1MDAzZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0XFx0XFx0bWlncmF0ZV9lbmFibGUoKTtcXG4rXFxuK1xcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJiaW5mbXRfbWlzYzogcmFuIEJQRiBwcm9ncmFtIGZvciAlcywgcmV0ID0gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBicHJtLVxcdTAwM2VmaWxlbmFtZSwgcmV0KTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChyZXQgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGU7XFxuK1xcdFxcdFxcdH1cXG4rI2VuZGlmXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiBEbyBtYXRjaGluZyBiYXNlZCBvbiBleHRlbnNpb24gaWYgYXBwbGljYWJsZS4gKi9cXG4gXFx0XFx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRcXHRpZiAocCBcXHUwMDI2XFx1MDAyNiAhc3RyY21wKGUtXFx1MDAzZW1hZ2ljLCBwICsgMSkpXFxuQEAgLTEzOSwxMiArMjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXFxuICAqL1xcbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcXG4tXFx0XFx0XFx0XFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcXG4rXFx0XFx0XFx0XFx0Y2hhciAqKmJwZl9pbnRlcnApXFxuIHtcXG4gXFx0Tm9kZSAqZTtcXG4gXFxuIFxcdHJlYWRfbG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG4tXFx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcXG4rXFx0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcXG4gXFx0aWYgKGUpXFxuIFxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2ZS1cXHUwMDNldXNlcnMpO1xcbiBcXHRyZWFkX3VubG9jayhcXHUwMDI2bWlzYy1cXHUwMDNlZW50cmllc19sb2NrKTtcXG5AQCAtMTY0LDYgKzI0OCwxMCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcXG4gXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2ZS1cXHUwMDNldXNlcnMpKSB7XFxuIFxcdFxcdGlmIChlLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcXG4gXFx0XFx0XFx0ZmlscF9jbG9zZShlLVxcdTAwM2VpbnRlcnBfZmlsZSwgTlVMTCk7XFxuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4rXFx0XFx0aWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNiBlLVxcdTAwM2VicGZfcHJvZylcXG4rXFx0XFx0XFx0YnBmX3Byb2dfcHV0KGUtXFx1MDAzZWJwZl9wcm9nKTtcXG4rI2VuZGlmXFxuIFxcdFxcdGtmcmVlKGUpO1xcbiBcXHR9XFxuIH1cXG5AQCAtMjA2LDE1ICsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdHN0cnVjdCBmaWxlICppbnRlcnBfZmlsZSA9IE5VTEw7XFxuIFxcdGludCByZXR2YWwgPSAtRU5PRVhFQztcXG4gXFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xcbitcXHRjaGFyICpicGZfaW50ZXJwIF9fZnJlZShrZnJlZSkgPSBOVUxMO1xcbitcXHRjb25zdCBjaGFyICppbnRlcnByZXRlcjtcXG4gXFxuIFxcdG1pc2MgPSBsb2FkX2JpbmZtdF9taXNjKCk7XFxuIFxcdGlmICghbWlzYy1cXHUwMDNlZW5hYmxlZClcXG4gXFx0XFx0cmV0dXJuIHJldHZhbDtcXG4gXFxuLVxcdGZtdCA9IGdldF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtKTtcXG4rXFx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFxcdTAwMjZicGZfaW50ZXJwKTtcXG4gXFx0aWYgKCFmbXQpXFxuIFxcdFxcdHJldHVybiByZXR2YWw7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBBICdCJyAoQlBGKSBoYW5kbGVyIGNhcnJpZXMgbm8gaW50ZXJwcmV0ZXIgb2YgaXRzIG93bjsgdGhlIHByb2dyYW1cXG4rXFx0ICogY2hvb3NlcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIE90aGVyIGhhbmRsZXJzIHVzZSB0aGVcXG4rXFx0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxcbitcXHQgKi9cXG4rXFx0aW50ZXJwcmV0ZXIgPSBicGZfaW50ZXJwID8gYnBmX2ludGVycCA6IGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXI7XFxuK1xcdHJldHZhbCA9IC1FTk9FWEVDO1xcbitcXHRpZiAoIWludGVycHJldGVyWzBdKVxcbitcXHRcXHRnb3RvIHJldDtcXG4rXFxuIFxcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cXG4gXFx0cmV0dmFsID0gLUVOT0VOVDtcXG4gXFx0aWYgKGJwcm0tXFx1MDAzZWludGVycF9mbGFncyBcXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcXG5AQCAtMjM4LDIyICszMzgsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdGJwcm0tXFx1MDAzZWFyZ2MrKztcXG4gXFxuIFxcdC8qIGFkZCB0aGUgaW50ZXJwIGFzIGFyZ3ZbMF0gKi9cXG4tXFx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXIsIGJwcm0pO1xcbitcXHRyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoaW50ZXJwcmV0ZXIsIGJwcm0pO1xcbiBcXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byByZXQ7XFxuIFxcdGJwcm0tXFx1MDAzZWFyZ2MrKztcXG4gXFxuIFxcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xcbi1cXHRyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoZm10LVxcdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XFxuK1xcdHJldHZhbCA9IGJwcm1fY2hhbmdlX2ludGVycChpbnRlcnByZXRlciwgYnBybSk7XFxuIFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHJldDtcXG4gXFxuLVxcdGlmIChmbXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSB7XFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBwcmUtb3BlbmVkIGludGVycF9maWxlIChNSVNDX0ZNVF9PUEVOX0ZJTEUgLyAnRicgZmxhZykgb25seVxcbitcXHQgKiBhcHBsaWVzIHRvIHRoZSBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgaW50ZXJwcmV0ZXI7IGEgcHJvZ3JhbS1zdXBwbGllZFxcbitcXHQgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLlxcbitcXHQgKi9cXG4rXFx0aWYgKChmbXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcXHUwMDI2XFx1MDAyNiAhYnBmX2ludGVycCkge1xcbiBcXHRcXHRpbnRlcnBfZmlsZSA9IGZpbGVfY2xvbmVfb3BlbihmbXQtXFx1MDAzZWludGVycF9maWxlKTtcXG4gXFx0XFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxcbiBcXHRcXHRcXHRkZW55X3dyaXRlX2FjY2VzcyhpbnRlcnBfZmlsZSk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cXHUwMDNlaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRpbnRlcnBfZmlsZSA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcik7XFxuIFxcdH1cXG4gXFx0cmV0dmFsID0gUFRSX0VSUihpbnRlcnBfZmlsZSk7XFxuIFxcdGlmIChJU19FUlIoaW50ZXJwX2ZpbGUpKVxcbkBAIC00MDQsNiArNTA5LDEwIEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbiBcXHRcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IHR5cGU6IE0gKG1hZ2ljKVxcXFxuXFxcIik7XFxuIFxcdFxcdGUtXFx1MDAzZWZsYWdzID0gKDEgXFx1MDAzY1xcdTAwM2MgRW5hYmxlZCkgfCAoMSBcXHUwMDNjXFx1MDAzYyBNYWdpYyk7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlICdCJzpcXG4rXFx0XFx0cHJfZGVidWcoXFxcInJlZ2lzdGVyOiB0eXBlOiBCIChicGYpXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZS1cXHUwMDNlZmxhZ3MgPSAoMSBcXHUwMDNjXFx1MDAzYyBFbmFibGVkKSB8ICgxIFxcdTAwM2NcXHUwMDNjIEJwZik7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRnb3RvIGVpbnZhbDtcXG4gXFx0fVxcbkBAIC00OTIsNiArNjAxLDQ1IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbiBcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbitcXHR9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHQvKiBIYW5kbGUgdGhlICdCJyAoQlBGKSBmb3JtYXQuICovXFxuK1xcdFxcdGNoYXIgKnM7XFxuK1xcbitcXHRcXHQvKiBUaGUgb2Zmc2V0IGZpZWxkIGFjdHVhbGx5IGhvbGRzIHRoZSBwaW5uZWQgQlBGIHByb2dyYW0gcGF0aCAqL1xcbitcXHRcXHRzID0gc3RyY2hyKHAsIGRlbCk7XFxuK1xcdFxcdGlmICghcylcXG4rXFx0XFx0XFx0Z290byBlaW52YWw7XFxuK1xcdFxcdCpzKysgPSAnXFxcXDAnO1xcbitcXHRcXHRlLVxcdTAwM2VtYWdpYyA9IHA7IC8qIEtlZXAgcGF0aCBpbiBlLVxcdTAwM2VtYWdpYyAqL1xcbitcXHRcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IGJwZiBwcm9ncmFtIHBhdGg6ICVzXFxcXG5cXFwiLCBlLVxcdTAwM2VtYWdpYyk7XFxuK1xcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuK1xcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVxcdTAwM2VtYWdpYywgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSKTtcXG4rXFx0XFx0aWYgKElTX0VSUihlLVxcdTAwM2VicGZfcHJvZykpIHtcXG4rXFx0XFx0XFx0ZXJyID0gUFRSX0VSUihlLVxcdTAwM2VicGZfcHJvZyk7XFxuK1xcdFxcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gTlVMTDtcXG4rXFx0XFx0XFx0a2ZyZWUoZSk7XFxuK1xcdFxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuK1xcdFxcdH1cXG4rI2Vsc2VcXG4rXFx0XFx0Z290byBlaW52YWw7XFxuKyNlbmRpZlxcbitcXG4rXFx0XFx0cCA9IHM7XFxuK1xcbitcXHRcXHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXFxuK1xcdFxcdHMgPSBzdHJjaHIocCwgZGVsKTtcXG4rXFx0XFx0aWYgKCFzIHx8IHAgIT0gcylcXG4rXFx0XFx0XFx0Z290byBlaW52YWw7XFxuK1xcdFxcdCpzKysgPSAnXFxcXDAnO1xcbitcXHRcXHRwID0gcztcXG4rXFxuK1xcdFxcdC8qIFRoZSBtYXNrIGZpZWxkIGlzIHVudXNlZCwgbXVzdCBiZSBlbXB0eSAqL1xcbitcXHRcXHRzID0gc3RyY2hyKHAsIGRlbCk7XFxuK1xcdFxcdGlmICghcyB8fCBwICE9IHMpXFxuK1xcdFxcdFxcdGdvdG8gZWludmFsO1xcbitcXHRcXHQqcysrID0gJ1xcXFwwJztcXG4rXFx0XFx0cCA9IHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qIEhhbmRsZSB0aGUgJ0UnIChleHRlbnNpb24pIGZvcm1hdC4gKi9cXG4gXFxuQEAgLTUyNCw4ICs2NzIsMTcgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXFxuIFxcdGlmICghcClcXG4gXFx0XFx0Z290byBlaW52YWw7XFxuIFxcdCpwKysgPSAnXFxcXDAnO1xcbi1cXHRpZiAoIWUtXFx1MDAzZWludGVycHJldGVyWzBdKVxcbitcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcXG4rXFx0XFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXFxuK1xcdFxcdCAqIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBvbmUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoZS1cXHUwMDNlaW50ZXJwcmV0ZXJbMF0pXFxuK1xcdFxcdFxcdGdvdG8gZWludmFsO1xcbitcXHR9IGVsc2UgaWYgKCFlLVxcdTAwM2VpbnRlcnByZXRlclswXSkge1xcbiBcXHRcXHRnb3RvIGVpbnZhbDtcXG4rXFx0fVxcbiBcXHRwcl9kZWJ1ZyhcXFwicmVnaXN0ZXI6IGludGVycHJldGVyOiB7JXN9XFxcXG5cXFwiLCBlLVxcdTAwM2VpbnRlcnByZXRlcik7XFxuIFxcbiBcXHQvKiBQYXJzZSB0aGUgJ2ZsYWdzJyBmaWVsZC4gKi9cXG5AQCAtNjAyLDcgKzc1OSw5IEBAIHN0YXRpYyB2b2lkIGVudHJ5X3N0YXR1cyhOb2RlICplLCBjaGFyICpwYWdlKVxcbiBcXHRcXHQqZHArKyA9ICdGJztcXG4gXFx0KmRwKysgPSAnXFxcXG4nO1xcbiBcXG4tXFx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdHNwcmludGYoZHAsIFxcXCJicGYgJXNcXFxcblxcXCIsIGUtXFx1MDAzZW1hZ2ljKTtcXG4rXFx0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFxcdTAwMjZlLVxcdTAwM2VmbGFncykpIHtcXG4gXFx0XFx0c3ByaW50ZihkcCwgXFxcImV4dGVuc2lvbiAuJXNcXFxcblxcXCIsIGUtXFx1MDAzZW1hZ2ljKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0ZHAgKz0gc3ByaW50ZihkcCwgXFxcIm9mZnNldCAlaVxcXFxubWFnaWMgXFxcIiwgZS1cXHUwMDNlb2Zmc2V0KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmhcXG5pbmRleCA3NzE5ZjY1Mjg0NDU2MC4uM2FlZjQ0YjY5NGJkMGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnBmLmhcXG5AQCAtMzg3NCw2ICszODc0LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X25zX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfa3RpbWVfZ2V0X3RhaV9uc19wcm90bztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWRfcHJvdG87XFxuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF91aWRfZ2lkX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jb21tX3Byb3RvO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90bztcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXFxuaW5kZXggODliMzZkZTVmZGJiNmQuLmRjZTE1NWM1YmJkNzVlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxcbkBAIC02MTQyLDYgKzYxNDIsNyBAQCB1bmlvbiBicGZfYXR0ciB7XFxuIFxcdEZOKHVzZXJfcmluZ2J1Zl9kcmFpbiwgMjA5LCAjI2N0eClcXHRcXHRcXFxcXFxuIFxcdEZOKGNncnBfc3RvcmFnZV9nZXQsIDIxMCwgIyNjdHgpXFx0XFx0XFxcXFxcbiBcXHRGTihjZ3JwX3N0b3JhZ2VfZGVsZXRlLCAyMTEsICMjY3R4KVxcdFxcdFxcXFxcXG4rXFx0Rk4oYmlucHJtX3NldF9pbnRlcnAsIDIxMiwgIyNjdHgpXFx0XFx0XFxcXFxcbiBcXHQvKiBUaGlzIGhlbHBlciBsaXN0IGlzIGVmZmVjdGl2ZWx5IGZyb3plbi4gSWYgeW91IGFyZSB0cnlpbmcgdG9cXHRcXFxcXFxuIFxcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcXHRcXFxcXFxuIFxcdCAqIGxlc3Mgc3RhYmlsaXR5IGd1YXJhbnRlZXMuIFNlZSBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXFxuaW5kZXggMmU5NmI0Yjg0N2NlMTIuLjE4NzY5MmE0YTRiNjdiIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2ZpbHRlci5jXFxuKysrIGIvbmV0L2NvcmUvZmlsdGVyLmNcXG5AQCAtODM5Nyw2ICs4Mzk3LDE0IEBAIHNrX2ZpbHRlcl9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiBcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl9nZXRfc29ja2V0X3VpZF9wcm90bztcXG4gXFx0Y2FzZSBCUEZfRlVOQ19wZXJmX2V2ZW50X291dHB1dDpcXG4gXFx0XFx0cmV0dXJuIFxcdTAwMjZicGZfc2tiX2V2ZW50X291dHB1dF9wcm90bztcXG4rI2lmIElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKVxcbitcXHRjYXNlIEJQRl9GVU5DX2JpbnBybV9zZXRfaW50ZXJwOlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBiaW5mbXRfbWlzYyByZXVzZXMgU09DS0VUX0ZJTFRFUiBwcm9ncmFtcyB0byBzZWxlY3QgYW5cXG4rXFx0XFx0ICogaW50ZXJwcmV0ZXI7IGV4cG9zZSB0aGUgaGVscGVyIHRoYXQgbGV0cyB0aGVtIHNldCBpdC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJldHVybiBcXHUwMDI2YnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xcbisjZW5kaWZcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MTYuMDM5MTM5OTk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk4NTA2ODc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwiZ2V0X2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJjcmVhdGVfZW50cnlcIixcbiAgICBcImJtX3JlZ2lzdGVyX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAnQicgKEJQRikgaGFuZGxlciB0eXBlIGZvciBiaW5mbXRfbWlzYywgYWxsb3dpbmcgQlBGIHByb2dyYW1zIHRvIG1hdGNoIGJpbmFyaWVzIGFuZCBzZWxlY3QgaW50ZXJwcmV0ZXJzLiBUaGlzIGFkZHMgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIGJpbmZtdF9taXNjIHJlZ2lzdHJhdGlvbiBhbmQgYmluYXJ5IGV4ZWN1dGlvbiBwYXRocywgYXMgd2VsbCBhcyBhIG5ldyBCUEYgaGVscGVyIGZ1bmN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2ZmI0MGI0MzFmYjU1NGVjYzRhMWEyODU4MDYyODE5ZjRmNTZjNDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCA0IDIxOjMxOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X21pc2MuYyBiL2ZzL2JpbmZtdF9taXNjLmNcbmluZGV4IDg0MzQ5ZmNiOTNmMTNhLi5jZjY2OThkNTljOWYwNCAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9taXNjLmNcbisrKyBiL2ZzL2JpbmZtdF9taXNjLmNcbkBAIC0yOSw2ICsyOSwxMSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiBcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuKyNlbmRpZlxuK1xuICNpbmNsdWRlIFwiaW50ZXJuYWwuaFwiXG4gXG4gI2lmZGVmIERFQlVHXG5AQCAtNDEsMTIgKzQ2LDE0IEBAIGVudW0ge1xuIFx0VkVSQk9TRV9TVEFUVVMgPSAxIC8qIG1ha2UgaXQgemVybyB0byBzYXZlIDQwMCBieXRlcyBrZXJuZWwgbWVtb3J5ICovXG4gfTtcbiBcbi1lbnVtIHtFbmFibGVkLCBNYWdpY307XG4rZW51bSB7RW5hYmxlZCwgTWFnaWMsIEJwZn07XG4gI2RlZmluZSBNSVNDX0ZNVF9QUkVTRVJWRV9BUkdWMCAoMVVMIFx1MDAzY1x1MDAzYyAzMSlcbiAjZGVmaW5lIE1JU0NfRk1UX09QRU5fQklOQVJZICgxVUwgXHUwMDNjXHUwMDNjIDMwKVxuICNkZWZpbmUgTUlTQ19GTVRfQ1JFREVOVElBTFMgKDFVTCBcdTAwM2NcdTAwM2MgMjkpXG4gI2RlZmluZSBNSVNDX0ZNVF9PUEVOX0ZJTEUgKDFVTCBcdTAwM2NcdTAwM2MgMjgpXG4gXG4rc3RydWN0IGJwZl9wcm9nO1xuK1xuIHR5cGVkZWYgc3RydWN0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XHRcdC8qIHR5cGUsIHN0YXR1cywgZXRjLiAqL1xuQEAgLTU5LDYgKzY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qge1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuIFx0c3RydWN0IGZpbGUgKmludGVycF9maWxlO1xuIFx0cmVmY291bnRfdCB1c2VycztcdFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK1x0c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZztcbisjZW5kaWZcbiB9IE5vZGU7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGJtX2ZzX3R5cGU7XG5AQCAtNzgsMTAgKzg4LDUxIEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBibV9mc190eXBlO1xuICAqL1xuICNkZWZpbmUgTUFYX1JFR0lTVEVSX0xFTkdUSCAxOTIwXG4gXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK3N0cnVjdCBiaW5mbXRfYnBmX2ludGVycCB7XG4rXHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuK1x0aW50IGxlbjtcdC8qIFx1MDAzYyAwIGlmIHRoZSBjdXJyZW50IHByb2dyYW0gc2V0IG5vIGludGVycHJldGVyICovXG4rfTtcbitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGJpbmZtdF9icGZfaW50ZXJwLCBiaW5mbXRfYnBmX2ludGVycCk7XG4rXG4rLypcbisgKiBicGZfYmlucHJtX3NldF9pbnRlcnAgLSBsZXQgYSBiaW5mbXRfbWlzYyAnQicgcHJvZ3JhbSBwaWNrIHRoZSBpbnRlcnByZXRlci5cbisgKiBAcGF0aDogaW50ZXJwcmV0ZXIgcGF0aCwgaW4gQlBGLWFjY2Vzc2libGUgbWVtb3J5XG4rICogQGxlbjogIG51bWJlciBvZiBieXRlcyBpbiBAcGF0aFxuKyAqXG4rICogVGhlIHByb2dyYW0gY29tcHV0ZXMgdGhlIGludGVycHJldGVyIHBhdGggaG93ZXZlciBpdCBzZWVzIGZpdCAoZS5nLiByZWxhdGl2ZVxuKyAqIHRvIHRoZSBiaW5hcnkpLiBUaGUgcGF0aCBpcyBzdGFzaGVkIG9uIGEgcGVyLUNQVSBhcmVhIHRoYXQgYmluZm10X21pc2MgcmVhZHNcbisgKiBiYWNrIGltbWVkaWF0ZWx5IGFmdGVyIHJ1bm5pbmcgdGhlIHByb2dyYW0gdW5kZXIgbWlncmF0ZV9kaXNhYmxlKCksIHNvIGl0XG4rICogY2Fubm90IHJhY2Ugd2l0aCBhbm90aGVyIENQVS5cbisgKi9cbitCUEZfQ0FMTF8yKGJwZl9iaW5wcm1fc2V0X2ludGVycCwgY29uc3QgY2hhciAqLCBwYXRoLCB1MzIsIGxlbilcbit7XG4rXHRzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAgKnNjID0gdGhpc19jcHVfcHRyKFx1MDAyNmJpbmZtdF9icGZfaW50ZXJwKTtcbitcbitcdGlmIChsZW4gPT0gMCB8fCBsZW4gXHUwMDNlPSBQQVRIX01BWClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHQvKiBAcGF0aCBpcyBAbGVuIGJ5dGVzIG9mIEJQRiBtZW1vcnkgYW5kIGlzIG5vdCBOVUwtdGVybWluYXRlZC4gKi9cbitcdG1lbWNweShzYy1cdTAwM2VwYXRoLCBwYXRoLCBsZW4pO1xuK1x0c2MtXHUwMDNlcGF0aFtsZW5dID0gJ1xcMCc7XG4rXHRzYy1cdTAwM2VsZW4gPSBsZW47XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcbitcdC5mdW5jXHRcdD0gYnBmX2JpbnBybV9zZXRfaW50ZXJwLFxuK1x0LmdwbF9vbmx5XHQ9IGZhbHNlLFxuK1x0LnJldF90eXBlXHQ9IFJFVF9JTlRFR0VSLFxuK1x0LmFyZzFfdHlwZVx0PSBBUkdfUFRSX1RPX01FTSB8IE1FTV9SRE9OTFksXG4rXHQuYXJnMl90eXBlXHQ9IEFSR19DT05TVF9TSVpFLFxuK307XG4rI2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuK1xuIC8qKlxuICAqIHNlYXJjaF9iaW5mbXRfaGFuZGxlciAtIHNlYXJjaCBmb3IgYSBiaW5hcnkgaGFuZGxlciBmb3IgQGJwcm1cbiAgKiBAbWlzYzogaGFuZGxlIHRvIGJpbmZtdF9taXNjIGluc3RhbmNlXG4gICogQGJwcm06IGJpbmFyeSBmb3Igd2hpY2ggd2UgYXJlIGxvb2tpbmcgZm9yIGEgaGFuZGxlclxuKyAqIEBicGZfaW50ZXJwOiByZWNlaXZlcyBhIGttYWxsb2MnZCBpbnRlcnByZXRlciBwYXRoIGlmIGEgJ0InIHByb2dyYW0gY2hvb3Nlc1xuKyAqICAgICAgICAgICAgICBvbmUgdmlhIGJwZl9iaW5wcm1fc2V0X2ludGVycCgpOyB0aGUgY2FsbGVyIG11c3Qga2ZyZWUoKSBpdFxuICAqXG4gICogU2VhcmNoIGZvciBhIGJpbmFyeSB0eXBlIGhhbmRsZXIgZm9yIEBicHJtIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgYmluYXJ5XG4gICogdHlwZSBoYW5kbGVycy5cbkBAIC04OSw3ICsxNDAsOCBAQCBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcbiAgKiBSZXR1cm46IGJpbmFyeSB0eXBlIGxpc3QgZW50cnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlXG4gICovXG4gc3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXG4tXHRcdFx0XHQgICBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuK1x0XHRcdFx0ICAgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSxcbitcdFx0XHRcdCAgIGNoYXIgKipicGZfaW50ZXJwKVxuIHtcbiBcdGNoYXIgKnAgPSBzdHJyY2hyKGJwcm0tXHUwMDNlaW50ZXJwLCAnLicpO1xuIFx0Tm9kZSAqZTtcbkBAIC0xMDMsNiArMTU1LDM3IEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuIFx0XHRpZiAoIXRlc3RfYml0KEVuYWJsZWQsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHQvKiBEbyBtYXRjaGluZyBiYXNlZCBvbiBCUEYgaWYgYXBwbGljYWJsZS4gKi9cbitcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbisjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4rXHRcdFx0aWYgKGUtXHUwMDNlYnBmX3Byb2cpIHtcbitcdFx0XHRcdHN0cnVjdCBiaW5mbXRfYnBmX2ludGVycCAqc2M7XG4rXHRcdFx0XHR1MzIgcmV0O1xuK1xuK1x0XHRcdFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4rXHRcdFx0XHRzYyA9IHRoaXNfY3B1X3B0cihcdTAwMjZiaW5mbXRfYnBmX2ludGVycCk7XG4rXHRcdFx0XHRzYy1cdTAwM2VsZW4gPSAtMTtcbitcbitcdFx0XHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0XHRcdHJldCA9IGJwZl9wcm9nX3J1bihlLVx1MDAzZWJwZl9wcm9nLCBicHJtLVx1MDAzZWJ1Zik7XG4rXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcbitcdFx0XHRcdGlmIChyZXQgPT0gMSBcdTAwMjZcdTAwMjYgc2MtXHUwMDNlbGVuIFx1MDAzZSAwKVxuK1x0XHRcdFx0XHQqYnBmX2ludGVycCA9IGttZW1kdXBfbnVsKHNjLVx1MDAzZXBhdGgsXG4rXHRcdFx0XHRcdFx0XHRcdCAgc2MtXHUwMDNlbGVuLFxuK1x0XHRcdFx0XHRcdFx0XHQgIEdGUF9BVE9NSUMpO1xuK1x0XHRcdFx0bWlncmF0ZV9lbmFibGUoKTtcbitcbitcdFx0XHRcdHByX2RlYnVnKFwiYmluZm10X21pc2M6IHJhbiBCUEYgcHJvZ3JhbSBmb3IgJXMsIHJldCA9ICV1XFxuXCIsXG4rXHRcdFx0XHRcdCBicHJtLVx1MDAzZWZpbGVuYW1lLCByZXQpO1xuK1xuK1x0XHRcdFx0aWYgKHJldCA9PSAxKVxuK1x0XHRcdFx0XHRyZXR1cm4gZTtcbitcdFx0XHR9XG4rI2VuZGlmXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0LyogRG8gbWF0Y2hpbmcgYmFzZWQgb24gZXh0ZW5zaW9uIGlmIGFwcGxpY2FibGUuICovXG4gXHRcdGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdFx0aWYgKHAgXHUwMDI2XHUwMDI2ICFzdHJjbXAoZS1cdTAwM2VtYWdpYywgcCArIDEpKVxuQEAgLTEzOSwxMiArMjIyLDEzIEBAIHN0YXRpYyBOb2RlICpzZWFyY2hfYmluZm10X2hhbmRsZXIoc3RydWN0IGJpbmZtdF9taXNjICptaXNjLFxuICAqIFJldHVybjogYmluYXJ5IHR5cGUgbGlzdCBlbnRyeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmVcbiAgKi9cbiBzdGF0aWMgTm9kZSAqZ2V0X2JpbmZtdF9oYW5kbGVyKHN0cnVjdCBiaW5mbXRfbWlzYyAqbWlzYyxcbi1cdFx0XHRcdHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4rXHRcdFx0XHRzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLFxuK1x0XHRcdFx0Y2hhciAqKmJwZl9pbnRlcnApXG4ge1xuIFx0Tm9kZSAqZTtcbiBcbiBcdHJlYWRfbG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG4tXHRlID0gc2VhcmNoX2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuK1x0ZSA9IHNlYXJjaF9iaW5mbXRfaGFuZGxlcihtaXNjLCBicHJtLCBicGZfaW50ZXJwKTtcbiBcdGlmIChlKVxuIFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2ZS1cdTAwM2V1c2Vycyk7XG4gXHRyZWFkX3VubG9jayhcdTAwMjZtaXNjLVx1MDAzZWVudHJpZXNfbG9jayk7XG5AQCAtMTY0LDYgKzI0OCwxMCBAQCBzdGF0aWMgdm9pZCBwdXRfYmluZm10X2hhbmRsZXIoTm9kZSAqZSlcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZS1cdTAwM2V1c2VycykpIHtcbiBcdFx0aWYgKGUtXHUwMDNlZmxhZ3MgXHUwMDI2IE1JU0NfRk1UX09QRU5fRklMRSlcbiBcdFx0XHRmaWxwX2Nsb3NlKGUtXHUwMDNlaW50ZXJwX2ZpbGUsIE5VTEwpO1xuKyNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbitcdFx0aWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGUtXHUwMDNlYnBmX3Byb2cpXG4rXHRcdFx0YnBmX3Byb2dfcHV0KGUtXHUwMDNlYnBmX3Byb2cpO1xuKyNlbmRpZlxuIFx0XHRrZnJlZShlKTtcbiBcdH1cbiB9XG5AQCAtMjA2LDE1ICsyOTQsMjcgQEAgc3RhdGljIGludCBsb2FkX21pc2NfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRzdHJ1Y3QgZmlsZSAqaW50ZXJwX2ZpbGUgPSBOVUxMO1xuIFx0aW50IHJldHZhbCA9IC1FTk9FWEVDO1xuIFx0c3RydWN0IGJpbmZtdF9taXNjICptaXNjO1xuK1x0Y2hhciAqYnBmX2ludGVycCBfX2ZyZWUoa2ZyZWUpID0gTlVMTDtcbitcdGNvbnN0IGNoYXIgKmludGVycHJldGVyO1xuIFxuIFx0bWlzYyA9IGxvYWRfYmluZm10X21pc2MoKTtcbiBcdGlmICghbWlzYy1cdTAwM2VlbmFibGVkKVxuIFx0XHRyZXR1cm4gcmV0dmFsO1xuIFxuLVx0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0pO1xuK1x0Zm10ID0gZ2V0X2JpbmZtdF9oYW5kbGVyKG1pc2MsIGJwcm0sIFx1MDAyNmJwZl9pbnRlcnApO1xuIFx0aWYgKCFmbXQpXG4gXHRcdHJldHVybiByZXR2YWw7XG4gXG4rXHQvKlxuK1x0ICogQSAnQicgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXG4rXHQgKiBjaG9vc2VzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gT3RoZXIgaGFuZGxlcnMgdXNlIHRoZVxuK1x0ICogaW50ZXJwcmV0ZXIgcmVjb3JkZWQgYXQgcmVnaXN0cmF0aW9uLlxuK1x0ICovXG4rXHRpbnRlcnByZXRlciA9IGJwZl9pbnRlcnAgPyBicGZfaW50ZXJwIDogZm10LVx1MDAzZWludGVycHJldGVyO1xuK1x0cmV0dmFsID0gLUVOT0VYRUM7XG4rXHRpZiAoIWludGVycHJldGVyWzBdKVxuK1x0XHRnb3RvIHJldDtcbitcbiBcdC8qIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZSBmaWxlIGFmdGVyIGV4ZWMgKi9cbiBcdHJldHZhbCA9IC1FTk9FTlQ7XG4gXHRpZiAoYnBybS1cdTAwM2VpbnRlcnBfZmxhZ3MgXHUwMDI2IEJJTlBSTV9GTEFHU19QQVRIX0lOQUNDRVNTSUJMRSlcbkBAIC0yMzgsMjIgKzMzOCwyNyBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcdGJwcm0tXHUwMDNlYXJnYysrO1xuIFxuIFx0LyogYWRkIHRoZSBpbnRlcnAgYXMgYXJndlswXSAqL1xuLVx0cmV0dmFsID0gY29weV9zdHJpbmdfa2VybmVsKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4rXHRyZXR2YWwgPSBjb3B5X3N0cmluZ19rZXJuZWwoaW50ZXJwcmV0ZXIsIGJwcm0pO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byByZXQ7XG4gXHRicHJtLVx1MDAzZWFyZ2MrKztcbiBcbiBcdC8qIFVwZGF0ZSBpbnRlcnAgaW4gY2FzZSBiaW5mbXRfc2NyaXB0IG5lZWRzIGl0LiAqL1xuLVx0cmV0dmFsID0gYnBybV9jaGFuZ2VfaW50ZXJwKGZtdC1cdTAwM2VpbnRlcnByZXRlciwgYnBybSk7XG4rXHRyZXR2YWwgPSBicHJtX2NoYW5nZV9pbnRlcnAoaW50ZXJwcmV0ZXIsIGJwcm0pO1xuIFx0aWYgKHJldHZhbCBcdTAwM2MgMClcbiBcdFx0Z290byByZXQ7XG4gXG4tXHRpZiAoZm10LVx1MDAzZWZsYWdzIFx1MDAyNiBNSVNDX0ZNVF9PUEVOX0ZJTEUpIHtcbitcdC8qXG4rXHQgKiBUaGUgcHJlLW9wZW5lZCBpbnRlcnBfZmlsZSAoTUlTQ19GTVRfT1BFTl9GSUxFIC8gJ0YnIGZsYWcpIG9ubHlcbitcdCAqIGFwcGxpZXMgdG8gdGhlIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBpbnRlcnByZXRlcjsgYSBwcm9ncmFtLXN1cHBsaWVkXG4rXHQgKiBwYXRoIGlzIG9wZW5lZCBoZXJlLlxuK1x0ICovXG4rXHRpZiAoKGZtdC1cdTAwM2VmbGFncyBcdTAwMjYgTUlTQ19GTVRfT1BFTl9GSUxFKSBcdTAwMjZcdTAwMjYgIWJwZl9pbnRlcnApIHtcbiBcdFx0aW50ZXJwX2ZpbGUgPSBmaWxlX2Nsb25lX29wZW4oZm10LVx1MDAzZWludGVycF9maWxlKTtcbiBcdFx0aWYgKCFJU19FUlIoaW50ZXJwX2ZpbGUpKVxuIFx0XHRcdGRlbnlfd3JpdGVfYWNjZXNzKGludGVycF9maWxlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGZtdC1cdTAwM2VpbnRlcnByZXRlcik7XG4rXHRcdGludGVycF9maWxlID0gb3Blbl9leGVjKGludGVycHJldGVyKTtcbiBcdH1cbiBcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwX2ZpbGUpO1xuIFx0aWYgKElTX0VSUihpbnRlcnBfZmlsZSkpXG5AQCAtNDA0LDYgKzUwOSwxMCBAQCBzdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcbiBcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogdHlwZTogTSAobWFnaWMpXFxuXCIpO1xuIFx0XHRlLVx1MDAzZWZsYWdzID0gKDEgXHUwMDNjXHUwMDNjIEVuYWJsZWQpIHwgKDEgXHUwMDNjXHUwMDNjIE1hZ2ljKTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlICdCJzpcbitcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogdHlwZTogQiAoYnBmKVxcblwiKTtcbitcdFx0ZS1cdTAwM2VmbGFncyA9ICgxIFx1MDAzY1x1MDAzYyBFbmFibGVkKSB8ICgxIFx1MDAzY1x1MDAzYyBCcGYpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gZWludmFsO1xuIFx0fVxuQEAgLTQ5Miw2ICs2MDEsNDUgQEAgc3RhdGljIE5vZGUgKmNyZWF0ZV9lbnRyeShjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQpXG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuIFx0XHR9XG4rXHR9IGVsc2UgaWYgKHRlc3RfYml0KEJwZiwgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbitcdFx0LyogSGFuZGxlIHRoZSAnQicgKEJQRikgZm9ybWF0LiAqL1xuK1x0XHRjaGFyICpzO1xuK1xuK1x0XHQvKiBUaGUgb2Zmc2V0IGZpZWxkIGFjdHVhbGx5IGhvbGRzIHRoZSBwaW5uZWQgQlBGIHByb2dyYW0gcGF0aCAqL1xuK1x0XHRzID0gc3RyY2hyKHAsIGRlbCk7XG4rXHRcdGlmICghcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRlLVx1MDAzZW1hZ2ljID0gcDsgLyogS2VlcCBwYXRoIGluIGUtXHUwMDNlbWFnaWMgKi9cbitcdFx0cHJfZGVidWcoXCJyZWdpc3RlcjogYnBmIHByb2dyYW0gcGF0aDogJXNcXG5cIiwgZS1cdTAwM2VtYWdpYyk7XG4rXG4rI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuK1x0XHRlLVx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVx1MDAzZW1hZ2ljLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xuK1x0XHRpZiAoSVNfRVJSKGUtXHUwMDNlYnBmX3Byb2cpKSB7XG4rXHRcdFx0ZXJyID0gUFRSX0VSUihlLVx1MDAzZWJwZl9wcm9nKTtcbitcdFx0XHRlLVx1MDAzZWJwZl9wcm9nID0gTlVMTDtcbitcdFx0XHRrZnJlZShlKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuK1x0XHR9XG4rI2Vsc2VcbitcdFx0Z290byBlaW52YWw7XG4rI2VuZGlmXG4rXG4rXHRcdHAgPSBzO1xuK1xuK1x0XHQvKiBUaGUgbWFnaWMgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4rXHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbitcdFx0aWYgKCFzIHx8IHAgIT0gcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRwID0gcztcbitcbitcdFx0LyogVGhlIG1hc2sgZmllbGQgaXMgdW51c2VkLCBtdXN0IGJlIGVtcHR5ICovXG4rXHRcdHMgPSBzdHJjaHIocCwgZGVsKTtcbitcdFx0aWYgKCFzIHx8IHAgIT0gcylcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdFx0KnMrKyA9ICdcXDAnO1xuK1x0XHRwID0gcztcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIEhhbmRsZSB0aGUgJ0UnIChleHRlbnNpb24pIGZvcm1hdC4gKi9cbiBcbkBAIC01MjQsOCArNjcyLDE3IEBAIHN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxuIFx0aWYgKCFwKVxuIFx0XHRnb3RvIGVpbnZhbDtcbiBcdCpwKysgPSAnXFwwJztcbi1cdGlmICghZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbitcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdC8qXG4rXHRcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcbitcdFx0ICogcHJvZ3JhbSBwaWNrcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIFJlamVjdCBhXG4rXHRcdCAqIHN0YXRpY2FsbHkgcmVnaXN0ZXJlZCBvbmUuXG4rXHRcdCAqL1xuK1x0XHRpZiAoZS1cdTAwM2VpbnRlcnByZXRlclswXSlcbitcdFx0XHRnb3RvIGVpbnZhbDtcbitcdH0gZWxzZSBpZiAoIWUtXHUwMDNlaW50ZXJwcmV0ZXJbMF0pIHtcbiBcdFx0Z290byBlaW52YWw7XG4rXHR9XG4gXHRwcl9kZWJ1ZyhcInJlZ2lzdGVyOiBpbnRlcnByZXRlcjogeyVzfVxcblwiLCBlLVx1MDAzZWludGVycHJldGVyKTtcbiBcbiBcdC8qIFBhcnNlIHRoZSAnZmxhZ3MnIGZpZWxkLiAqL1xuQEAgLTYwMiw3ICs3NTksOSBAQCBzdGF0aWMgdm9pZCBlbnRyeV9zdGF0dXMoTm9kZSAqZSwgY2hhciAqcGFnZSlcbiBcdFx0KmRwKysgPSAnRic7XG4gXHQqZHArKyA9ICdcXG4nO1xuIFxuLVx0aWYgKCF0ZXN0X2JpdChNYWdpYywgXHUwMDI2ZS1cdTAwM2VmbGFncykpIHtcbitcdGlmICh0ZXN0X2JpdChCcGYsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdHNwcmludGYoZHAsIFwiYnBmICVzXFxuXCIsIGUtXHUwMDNlbWFnaWMpO1xuK1x0fSBlbHNlIGlmICghdGVzdF9iaXQoTWFnaWMsIFx1MDAyNmUtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHNwcmludGYoZHAsIFwiZXh0ZW5zaW9uIC4lc1xcblwiLCBlLVx1MDAzZW1hZ2ljKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGRwICs9IHNwcmludGYoZHAsIFwib2Zmc2V0ICVpXFxubWFnaWMgXCIsIGUtXHUwMDNlb2Zmc2V0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggNzcxOWY2NTI4NDQ1NjAuLjNhZWY0NGI2OTRiZDBhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTM4NzQsNiArMzg3NCw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2t0aW1lX2dldF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfYm9vdF9uc19wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9rdGltZV9nZXRfdGFpX25zX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkX3Byb3RvO1xuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2dldF9jdXJyZW50X3VpZF9naWRfcHJvdG87XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90bztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfc3RhY2tpZF9wcm90bztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmggYi9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmhcbmluZGV4IDg5YjM2ZGU1ZmRiYjZkLi5kY2UxNTVjNWJiZDc1ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oXG5AQCAtNjE0Miw2ICs2MTQyLDcgQEAgdW5pb24gYnBmX2F0dHIge1xuIFx0Rk4odXNlcl9yaW5nYnVmX2RyYWluLCAyMDksICMjY3R4KVx0XHRcXFxuIFx0Rk4oY2dycF9zdG9yYWdlX2dldCwgMjEwLCAjI2N0eClcdFx0XFxcbiBcdEZOKGNncnBfc3RvcmFnZV9kZWxldGUsIDIxMSwgIyNjdHgpXHRcdFxcXG4rXHRGTihiaW5wcm1fc2V0X2ludGVycCwgMjEyLCAjI2N0eClcdFx0XFxcbiBcdC8qIFRoaXMgaGVscGVyIGxpc3QgaXMgZWZmZWN0aXZlbHkgZnJvemVuLiBJZiB5b3UgYXJlIHRyeWluZyB0b1x0XFxcbiBcdCAqIGFkZCBhIG5ldyBoZWxwZXIsIHlvdSBzaG91bGQgYWRkIGEga2Z1bmMgaW5zdGVhZCB3aGljaCBoYXNcdFxcXG4gXHQgKiBsZXNzIHN0YWJpbGl0eSBndWFyYW50ZWVzLiBTZWUgRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFx0XFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jXG5pbmRleCAyZTk2YjRiODQ3Y2UxMi4uMTg3NjkyYTRhNGI2N2IgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xuKysrIGIvbmV0L2NvcmUvZmlsdGVyLmNcbkBAIC04Mzk3LDYgKzgzOTcsMTQgQEAgc2tfZmlsdGVyX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdHJldHVybiBcdTAwMjZicGZfZ2V0X3NvY2tldF91aWRfcHJvdG87XG4gXHRjYXNlIEJQRl9GVU5DX3BlcmZfZXZlbnRfb3V0cHV0OlxuIFx0XHRyZXR1cm4gXHUwMDI2YnBmX3NrYl9ldmVudF9vdXRwdXRfcHJvdG87XG4rI2lmIElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKVxuK1x0Y2FzZSBCUEZfRlVOQ19iaW5wcm1fc2V0X2ludGVycDpcbitcdFx0LypcbitcdFx0ICogYmluZm10X21pc2MgcmV1c2VzIFNPQ0tFVF9GSUxURVIgcHJvZ3JhbXMgdG8gc2VsZWN0IGFuXG4rXHRcdCAqIGludGVycHJldGVyOyBleHBvc2UgdGhlIGhlbHBlciB0aGF0IGxldHMgdGhlbSBzZXQgaXQuXG4rXHRcdCAqL1xuK1x0XHRyZXR1cm4gXHUwMDI2YnBmX2JpbnBybV9zZXRfaW50ZXJwX3Byb3RvO1xuKyNlbmRpZlxuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGJwZl9za19iYXNlX2Z1bmNfcHJvdG8oZnVuY19pZCwgcHJvZyk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToxNi4wMzkxNDMzNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc3OTA4NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIGJpbmZtdF9taXNjIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgYmluZm10X21pc2MgaGFuZGxlciB0eXBlLCAnQicg4oCTIGZvciBCUEYsIG5hdHVyYWxseS4gVGhlIGlkZWEgaXMgdG8gdXNlIGEgQlBGIHByb2dyYW0gdG8gZHluYW1pY2FsbHkgc2VsZWN0IGFuIGludGVycHJldGVyIGJhc2VkIG9uIHRoZSBiaW5hcnkgaXRzZWxmLiBTZWVtcyBsaWtlIGEgY2xldmVyIGFwcHJvYWNoIGZvciBlbmhhbmNlZCBmbGV4aWJpbGl0eS4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvYmluZm10X21pc2MuY2AsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIG1hbmFnaW5nIGV4ZWN1dGFibGUgZm9ybWF0cywgYXMgZXhwZWN0ZWQuXG5cbkkgc2VlIHRoZXkndmUgYWRkZWQgYSBuZXcgQlBGIGhlbHBlciwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIHdoaWNoIGlzIGNlbnRyYWwgdG8gdGhpcyB3aG9sZSB0aGluZy4gUGx1cywgbW9kaWZpY2F0aW9ucyB0byBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBlbnRyeV9zdGF0dXNgLCBpbmRpY2F0ZSB0aGV5J3ZlIGludGVncmF0ZWQgdGhpcyBCUEYtYmFzZWQgYXBwcm9hY2ggZGVlcGx5IGludG8gdGhlIGV4aXN0aW5nIGJpbmZtdF9taXNjIGluZnJhc3RydWN0dXJlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy5cblxuVGhlIGNvcmUgY29kZSBpcyBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gYGZzL2JpbmZtdF9taXNjLmNgLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhpcyBhc3N1bWVzIHRoZSBCUEYgc3lzY2FsbHMgYXJlIGF2YWlsYWJsZS4gYENPTkZJR19CSU5GTVRfTUlTQ2AgaXMsIG9mIGNvdXJzZSwgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIsIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYXQgcGxheS4gQWhhLCBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2Agd2hpY2ggY291bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgY29udmVyZ2VuY2UuXG5cblRpbWUgdG8gYnJvYWRlbiB0aGUgc2VhcmNoIGZvciBkZXBlbmRlbmNpZXMuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgb3Igb3RoZXIgaW50ZXJhY3Rpb25zIEkndmUgb3Zlcmxvb2tlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlIGJlZm9yZSBJIGZvcm0gYW55IGp1ZGdlbWVudHMgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3RzIG9yIGludGVncmF0aW9uIGNoYWxsZW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToyMS40MTcwNTM5MDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MzI0Nzk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQklORk1UX01JU0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3Q9OD1vdGhlciBwcm9ncmFtIGFmdGVyIHlvdSBoYXZlIGRvbmUgdGhlIGZvbGxvd2luZzpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3QtMjEtMikgWW91IGhhdmUgdG8gY29tcGlsZSBCSU5GTVRfTUlTQyBlaXRoZXIgYXMgYSBtb2R1bGUgb3IgaW50b1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamF2YS5yc3Q6MjI6ICAgdGhlIGtlcm5lbCAoYGBDT05GSUdfQklORk1UX01JU0NgYCkgYW5kIHNldCBpdCB1cCBwcm9wZXJseS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2phdmEucnN0LTIzLSAgIElmIHlvdSBjaG9vc2UgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgaGF2ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdD05PW90aGVyIHByb2dyYW0gYWZ0ZXIgeW91IGhhdmUgZG9uZSB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdC0yNS0yKSBZb3UgaGF2ZSB0byBjb21waWxlIEJJTkZNVF9NSVNDIGVpdGhlciBhcyBhIG1vZHVsZSBvciBpbnRvXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb25vLnJzdDoyNjogICB0aGUga2VybmVsIChgYENPTkZJR19CSU5GTVRfTUlTQ2BgKSBhbmQgc2V0IGl0IHVwIHByb3Blcmx5LlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW9uby5yc3QtMjctICAgSWYgeW91IGNob29zZSB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCB5b3Ugd2lsbCBoYXZlXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTUwPUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTUxLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjUyOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy01My0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvZ2VtaW5pX2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWc6MTk6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL2dlbWluaV9kZWZjb25maWctMjAtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9NTY9Q09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjU3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnLTU4LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc9Mzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWc6NDA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAxX2RlZmNvbmZpZy00MS0jIENPTkZJR19TV0FQIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz02Mj1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6NjM6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWctNjQtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NDU9Q09ORklHX0NNRExJTkVfUEFSVElUSU9OPXlcXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NDY6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWctNDctQ09ORklHX1NMVUJfVElOWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwZWFyMTN4eF9kZWZjb25maWc9MTk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjEzeHhfZGVmY29uZmlnOjIwOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjEzeHhfZGVmY29uZmlnLTIxLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjN4eF9kZWZjb25maWc9MTM9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjN4eF9kZWZjb25maWc6MTQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL2FybS9jb25maWdzL3NwZWFyM3h4X2RlZmNvbmZpZy0xNS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnPTEwPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BlYXI2eHhfZGVmY29uZmlnOjExOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9hcm0vY29uZmlncy9zcGVhcjZ4eF9kZWZjb25maWctMTItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0xOD1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIwLUNPTkZJR19QTT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTkzPUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5NDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTUtQ09ORklHX1pTV0FQPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTA4PUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTExMC1DT05GSUdfWlNXQVA9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQyPUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTQzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTM4PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy0zOS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo0MDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNDEtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc9NDU9Q09ORklHX0lPU0NIRURfQkZRPW1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDYtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0NzpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy00OC0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZy0zNi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjM3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM3PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6Mzk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNDAtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnPTM2PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctMzktIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTY9Q09ORklHX0lPU0NIRURfQkZRPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctNTctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo1ODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy01OS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTM0PUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZz0zNT1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTM2LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzozNzpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zNj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctMzctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6Mzg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTM5LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc9Mjk9Q09ORklHX0JJTkZNVF9aRkxBVD15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3RtYXJrMl9kZWZjb25maWc6MzA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL202OGsvY29uZmlncy9zdG1hcmsyX2RlZmNvbmZpZy0zMS0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz0zMj1DT05GSUdfSU9TQ0hFRF9CRlE9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzozNDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTMyPUNPTkZJR19JT1NDSEVEX0JGUT1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6MzQ6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctMzUtIyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnPTI3PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Z1bG9vbmcyZV9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL21pcHMvY29uZmlncy9mdWxvb25nMmVfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZz0xNz1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZy0xOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI0OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMjUtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZz0xOT1DT05GSUdfU0dJX1BBUlRJVElPTj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMl9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnPTE3PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnOjE4OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWctMTktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9Mjc9Q09ORklHX01RX0lPU0NIRURfREVBRExJTkU9bVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzoyODpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZy0yOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnPTM1PUNPTkZJR19CRlFfR1JPVVBfSU9TQ0hFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy0zNy1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NDk9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy01MS1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTM4PUNPTkZJR19LQVJNQV9QQVJUSVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjM5OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDAtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9waWMzMm16ZGFfZGVmY29uZmlnPTI0PUNPTkZJR19TR0lfUEFSVElUSU9OPXlcXG5hcmNoL21pcHMvY29uZmlncy9waWMzMm16ZGFfZGVmY29uZmlnOjI1OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcGljMzJtemRhX2RlZmNvbmZpZy0yNi1DT05GSUdfREVWVE1QRlM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTE4PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxOTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0yMC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MjY9Q09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMjctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNT1DT05GSUdfQkxLX0RFVl9JTlRFR1JJVFk9eVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6MzY6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9Mjg9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTI5LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZzozMDpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTMxLUNPTkZJR19NQVRIX0VNVUxBVElPTj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnPTEyPUNPTkZJR19ISUdITUVNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2tzaTg1NjBfZGVmY29uZmlnOjEzOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9rc2k4NTYwX2RlZmNvbmZpZy0xNC1DT05GSUdfTUFUSF9FTVVMQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZz0xMD1DT05GSUdfSElHSE1FTT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9zdHhfZ3AzX2RlZmNvbmZpZzoxMTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvc3R4X2dwM19kZWZjb25maWctMTItQ09ORklHX01BVEhfRU1VTEFUSU9OPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvdHFtODU0OF9kZWZjb25maWc9MTQ9Q09ORklHX0hJR0hNRU09eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvdHFtODU0OF9kZWZjb25maWc6MTU6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTE2LUNPTkZJR19NQVRIX0VNVUxBVElPTj15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9hbWlnYW9uZV9kZWZjb25maWc9MjE9Q09ORklHX0hJR0hNRU09eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2FtaWdhb25lX2RlZmNvbmZpZy0yMy1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTM0PUNPTkZJR19HRU5fUlRDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZzozNTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTM2LUNPTkZJR19JUlFfQUxMX0NQVVM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZz0yMD1DT05GSUdfSElHSE1FTT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2hycDMyX2RlZmNvbmZpZzoyMTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NocnAzMl9kZWZjb25maWctMjItQ09ORklHX0lSUV9BTExfQ1BVUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9lcDgyNDhlX2RlZmNvbmZpZz0xMT1DT05GSUdfRVA4MjQ4RT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZXA4MjQ4ZV9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9lcDgyNDhlX2RlZmNvbmZpZy0xMy0jIENPTkZJR19TRUNDT01QIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTU9Q09ORklHX0JGU19GUz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6NjpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTctIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZ2FtZWN1YmVfZGVmY29uZmlnPTE5PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nYW1lY3ViZV9kZWZjb25maWctMjEtQ09ORklHX0tFWEVDPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZz0xND1DT05GSUdfR0VOX1JUQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnOjE1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvaG9sbHlfZGVmY29uZmlnLTE2LUNPTkZJR19DTURMSU5FPVxcXCJjb25zb2xlPXR0eVMwLDExNTIwMFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21nY29nZV9kZWZjb25maWc9MTY9Q09ORklHX01HQ09HRT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWdjb2dlX2RlZmNvbmZpZzoxNzpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21nY29nZV9kZWZjb25maWctMTgtIyBDT05GSUdfU0VDQ09NUCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnPTIzPUNPTkZJR19ISUdITUVNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnOjI0OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZy0yNS1DT05GSUdfSElCRVJOQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9NDk9Q09ORklHX0haXzEwMDA9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjUwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTEtQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Nzk9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjgwOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTgxLUNPTkZJR19aU1dBUD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTI2PUNPTkZJR19DUFVfRlJFUV9HT1ZfVVNFUlNQQUNFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnOjI3OkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0yOC1DT05GSUdfSVJRX0FMTF9DUFVTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9NjU9Q09ORklHX1BSRUVNUFRfVk9MVU5UQVJZPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjY2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy02Ny1DT05GSUdfSElCRVJOQVRJT049eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZz0zMz1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzozNTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzYtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9zdG9yY2VudGVyX2RlZmNvbmZpZz0xMz1DT05GSUdfSFpfMTAwPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9zdG9yY2VudGVyX2RlZmNvbmZpZzoxNDpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3N0b3JjZW50ZXJfZGVmY29uZmlnLTE1LUNPTkZJR19DTURMSU5FPVxcXCJjb25zb2xlPXR0eVMwLDExNTIwMFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3dpaV9kZWZjb25maWc9MTk9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3dpaV9kZWZjb25maWc6MjA6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy93aWlfZGVmY29uZmlnLTIxLUNPTkZJR19LRVhFQz15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OTg9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTk6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTAwLUNPTkZJR19aU1dBUD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTI9Q09ORklHX0lPU0NIRURfQkZRPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTM6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTQtQ09ORklHX1pTV0FQPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnPTQwPUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy00MS0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6NDI6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy00My1DT05GSUdfQ01ETElORV9GUk9NX0JPT1RMT0FERVI9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTMwPUNPTkZJR19QQ0k9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZzozMTpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZy0zMi1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz03ND1DT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlM9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzo3NTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy03Ni1DT05GSUdfUE09eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc9NDM9Q09ORklHX0JJTkZNVF9aRkxBVD15XFxuYXJjaC9zaC9jb25maWdzL3NlNzIwNl9kZWZjb25maWc6NDQ6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3MjA2X2RlZmNvbmZpZy00NS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZz0yMT1DT05GSUdfSE9UUExVR19QQ0k9eVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZzoyMjpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gvc2gvY29uZmlncy9zaDAzX2RlZmNvbmZpZy0yMy1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTI0PUNPTkZJR19QQ0NBUkQ9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjI1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc9NTA9Q09ORklHX0NNRExJTkU9XFxcImNvbnNvbGU9dHR5U0MwLDExNTIwMCBlYXJseXByaW50az1iaW9zIGlnbm9yZV9sb2dsZXZlbFxcXCJcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6NTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctNTItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc9MzU9Q09ORklHX1BDSV9ERUJVRz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjM2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnLTM3LUNPTkZJR19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MTE9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTI6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMTMtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc9Mjc9Q09ORklHX1NVTl9PUEVOUFJPTUZTPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6Mjg6Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMjktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MjpDT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZy0zLUNPTkZJR19IT1NURlM9eVxcbi0tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMS0jIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyOkNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMy1DT05GSUdfSE9TVEZTPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9NTk9Q09ORklHX0JMS19DR1JPVVBfSU9QUklPPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjYwOkNPTkZJR19CSU5GTVRfTUlTQz15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02MS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02MD1DT05GSUdfQkxLX0NHUk9VUF9JT1BSSU89eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzo2MTpDT05GSUdfQklORk1UX01JU0M9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZy02Mi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xMD1DT05GSUdfQ01ETElORT1cXFwiY29uc29sZT10dHlTMCwzODQwMCBpcD1ib290cCByb290PW5mcyBuZnNyb290PS9vcHQvbW9udGF2aXN0YS9wcm8vZGV2a2l0L3h0ZW5zYS9saW51eF9iZS90YXJnZXQgbWVtbWFwPTEyOE1AMFxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MTE6Q09ORklHX0JJTkZNVF9NSVNDPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMTItQ09ORklHX05FVD15XFxuLS1cXG5mcy9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfRklMRV9MT0NLSU5HKSAgICAgICs9IGxvY2tzLm9cXG5mcy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQklORk1UX01JU0MpXFx0Kz0gYmluZm10X21pc2Mub1xcbmZzL01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19CSU5GTVRfU0NSSVBUKVxcdCs9IGJpbmZtdF9zY3JpcHQub1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTE2NT1zdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX3N0YXRfc3lzY3Rscyh2b2lkKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTE2Ny1cXHRyZWdpc3Rlcl9zeXNjdGxfaW5pdChcXFwiZnNcXFwiLCBmc19zdGF0X3N5c2N0bHMpO1xcbmZzL2ZpbGVfdGFibGUuYzoxNjg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKSkge1xcbmZzL2ZpbGVfdGFibGUuYy0xNjktXFx0XFx0c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhkcjtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTkyPXN0cnVjdCBsaW51eF9iaW5mbXQge1xcbi0tXFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmgtMTAxLVxcbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjEwMjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmgtMTAzLXN0cnVjdCBiaW5mbXRfbWlzYyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmg9NjQ9ZW51bSBybGltaXRfdHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtNzEtXFxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oOjcyOiNpZiBJU19FTkFCTEVEKENPTkZJR19CSU5GTVRfTUlTQylcXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtNzMtc3RydWN0IGJpbmZtdF9taXNjO1xcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyX25hbWVzcGFjZS5oPTc2PXN0cnVjdCB1c2VyX25hbWVzcGFjZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJfbmFtZXNwYWNlLmgtMTEzLVxcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaDoxMTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbmluY2x1ZGUvbGludXgvdXNlcl9uYW1lc3BhY2UuaC0xMTUtXFx0c3RydWN0IGJpbmZtdF9taXNjICpiaW5mbXRfbWlzYztcXG4tLVxcbmtlcm5lbC91c2VyLmMtMjMtXFxua2VybmVsL3VzZXIuYzoyNDojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxua2VybmVsL3VzZXIuYy0yNS1zdHJ1Y3QgYmluZm10X21pc2MgaW5pdF9iaW5mbXRfbWlzYyA9IHtcXG4tLVxcbmtlcm5lbC91c2VyLmM9Mzc9c3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNlcl9ucyA9IHtcXG4tLVxcbmtlcm5lbC91c2VyLmMtNzUtI2VuZGlmXFxua2VybmVsL3VzZXIuYzo3NjojaWYgSVNfRU5BQkxFRChDT05GSUdfQklORk1UX01JU0MpXFxua2VybmVsL3VzZXIuYy03Ny1cXHQuYmluZm10X21pc2MgPSBcXHUwMDI2aW5pdF9iaW5mbXRfbWlzYyxcXG4tLVxcbmtlcm5lbC91c2VyX25hbWVzcGFjZS5jPTE5Nz1zdGF0aWMgdm9pZCBmcmVlX3VzZXJfbnMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL3VzZXJfbmFtZXNwYWNlLmMtMjE3LVxcdFxcdH1cXG5rZXJuZWwvdXNlcl9uYW1lc3BhY2UuYzoyMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0JJTkZNVF9NSVNDKVxcbmtlcm5lbC91c2VyX25hbWVzcGFjZS5jLTIxOS1cXHRcXHRrZnJlZShucy1cXHUwMDNlYmluZm10X21pc2MpO1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9ODM4NT1za19maWx0ZXJfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTgzOTktXFx0XFx0cmV0dXJuIFxcdTAwMjZicGZfc2tiX2V2ZW50X291dHB1dF9wcm90bztcXG5uZXQvY29yZS9maWx0ZXIuYzo4NDAwOiNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylcXG5uZXQvY29yZS9maWx0ZXIuYy04NDAxLVxcdGNhc2UgQlBGX0ZVTkNfYmlucHJtX3NldF9pbnRlcnA6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9NT1DT05GSUdfQVVESVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo2OkNPTkZJR19CSU5GTVRfTUlTQz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTctQ09ORklHX0JMS19DR1JPVVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9OD1DT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6OTpDT05GSUdfQklORk1UX01JU0M9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTEwLUNPTkZJR19CTEtfQ0dST1VQPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQ9Q09ORklHX0FVRElUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo1OkNPTkZJR19CSU5GTVRfTUlTQz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb24tNi1DT05GSUdfQkxLX0NHUk9VUF9JT0xBVEVOQ1k9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMToyMy44MTAzMDY2MzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NTY5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIHdpdGggQklORk1UX01JU0MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYEJJTkZNVF9NSVNDYCBhbmQgYEJQRl9TWVNDQUxMYCByZWxhdGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZ2V0dGluZyBhIEJQRiBoZWxwZXIgd29ya2luZy4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlncywgd2hpY2ggSSd2ZSBpZGVudGlmaWVkIGFzIGBCSU5GTVRfTUlTQ2AgYW5kIGBCUEZfU1lTQ0FMTGAuIE5vdywgSSByZWNhbGwgc2VlaW5nIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCByZWxhdGVkIHRvIGBDT05GSUdfQklORk1UX01JU0NgLiBBaCwgcmlnaHQsIHRoZXJlJ3MgYW4gYCNpZiBJU19CVUlMVElOKENPTkZJR19CSU5GTVRfTUlTQylgIGJsb2NrIHRoZXJlLiBUaGF0IHN1Z2dlc3RzIHRoYXQgdGhlIEJQRiBoZWxwZXIsIGF0IGxlYXN0IGluIHRoYXQgY29udGV4dCwgaXMgb25seSBhdmFpbGFibGUgaWYgYEJJTkZNVF9NSVNDYCBpcyAqYnVpbHQtaW4qIHRvIHRoZSBrZXJuZWwuXG5cblNvLCBkaWdnaW5nIGEgbGl0dGxlIGRlZXBlciwgYElTX0JVSUxUSU4oQ09ORklHX0JJTkZNVF9NSVNDKWAgaXMgZXF1aXZhbGVudCB0byBgQ09ORklHX0JJTkZNVF9NSVNDPXlgLCBub3QgYSBtb2R1bGUuIFRoZXJlZm9yZSwgZm9yIHRoZSBCUEYgaGVscGVyIHRvIGJlIGF2YWlsYWJsZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBCSU5GTVRfTUlTQ2AgaXMgc2V0IHRvIGB5YCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGluIG9yZGVyIHRvIGdldCBpdCBsb2FkZWQuXG5cbkFuZCwgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGFsc28gbmVlZHMgdG8gYmUgZW5hYmxlZCwgYW5kIHRoaXMgbGlrZWx5IHRpZXMgaW4gdG8gYGZzL2JpbmZtdF9taXNjLmNgLiBMZXQgbWUgZG91YmxlLWNoZWNrIGBmcy9iaW5mbXRfbWlzYy5jYCB0byBjb25maXJtIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIHR3byBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JJTkZNVF9NSVNDYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzODEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MjguNTE3ODc4NDExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzYzNDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jLTMxLVxcbmZzL2JpbmZtdF9taXNjLmM6MzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtMzMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz01Nz10eXBlZGVmIHN0cnVjdCB7XFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTY4LVxcdHJlZmNvdW50X3QgdXNlcnM7XFx0XFx0Lyogc3luYyByZW1vdmFsIHdpdGggbG9hZF9taXNjX2JpbmFyeSgpICovXFxuZnMvYmluZm10X21pc2MuYzo2OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy03MC1cXHRzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nO1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz03ND1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYm1fZnNfdHlwZTtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtOTAtXFxuZnMvYmluZm10X21pc2MuYzo5MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy05Mi1zdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAge1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xMjE9Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9iaW5wcm1fc2V0X2ludGVycF9wcm90byA9IHtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTI3LX07XFxuZnMvYmluZm10X21pc2MuYzoxMjg6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbmZzL2JpbmZtdF9taXNjLmMtMTI5LVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xNDI9c3RhdGljIE5vZGUgKnNlYXJjaF9iaW5mbXRfaGFuZGxlcihzdHJ1Y3QgYmluZm10X21pc2MgKm1pc2MsXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTE1OS1cXHRcXHRpZiAodGVzdF9iaXQoQnBmLCBcXHUwMDI2ZS1cXHUwMDNlZmxhZ3MpKSB7XFxuZnMvYmluZm10X21pc2MuYzoxNjA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtMTYxLVxcdFxcdFxcdGlmIChlLVxcdTAwM2VicGZfcHJvZykge1xcbi0tXFxuZnMvYmluZm10X21pc2MuYz0yNDY9c3RhdGljIHZvaWQgcHV0X2JpbmZtdF9oYW5kbGVyKE5vZGUgKmUpXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jLTI1MC1cXHRcXHRcXHRmaWxwX2Nsb3NlKGUtXFx1MDAzZWludGVycF9maWxlLCBOVUxMKTtcXG5mcy9iaW5mbXRfbWlzYy5jOjI1MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZnMvYmluZm10X21pc2MuYy0yNTItXFx0XFx0aWYgKHRlc3RfYml0KEJwZiwgXFx1MDAyNmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNiBlLVxcdTAwM2VicGZfcHJvZylcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9NDU1PXN0YXRpYyBOb2RlICpjcmVhdGVfZW50cnkoY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy02MTUtXFxuZnMvYmluZm10X21pc2MuYzo2MTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL2JpbmZtdF9taXNjLmMtNjE3LVxcdFxcdGUtXFx1MDAzZWJwZl9wcm9nID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChlLVxcdTAwM2VtYWdpYywgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MjguNzQ1NTIzODYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNjI4OTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQlBGIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgeWVzLCBJJ20gY29uZmlkZW50IHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWJzb2x1dGVseSBuZWNlc3NhcnkgZm9yIHRoaXMuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIHVzaW5nIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYC4gTm93LCBpcyB0aGF0IGZ1bmN0aW9uIGV2ZW4gYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSBpdHMgcHJlc2VuY2UuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTozMi40NzE4MTYwNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MTcxMTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfcHJvZ19nZXRfdHlwZV9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjE2LSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5mcy9iaW5mbXRfbWlzYy5jOjYxNzpcXHRcXHRlLVxcdTAwM2VicGZfcHJvZyA9IGJwZl9wcm9nX2dldF90eXBlX3BhdGgoZS1cXHUwMDNlbWFnaWMsIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7XFxuZnMvYmluZm10X21pc2MuYy02MTgtXFx0XFx0aWYgKElTX0VSUihlLVxcdTAwM2VicGZfcHJvZykpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzA4OD1zdGF0aWMgaW5saW5lIGludCBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDkzLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzA5NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzA5NS1pbnQgYXJyYXlfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzQzNz1zdGF0aWMgaW5saW5lIGludCBjcHVfbWFwX2dlbmVyaWNfcmVkaXJlY3Qoc3RydWN0IGJwZl9jcHVfbWFwX2VudHJ5ICpyY3B1LFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNDQyLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzQ0MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChjb25zdCBjaGFyICpuYW1lLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzQ0NC1cXHRcXHRcXHRcXHRlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaW5vZGUuYz02MTE9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqX19nZXRfcHJvZ19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBlbnVtIGJwZl9wcm9nX3R5cGUgdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaW5vZGUuYy02MzctXFxua2VybmVsL2JwZi9pbm9kZS5jOjYzODpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2dldF90eXBlX3BhdGgoY29uc3QgY2hhciAqbmFtZSwgZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxua2VybmVsL2JwZi9pbm9kZS5jLTYzOS17XFxuLS1cXG5rZXJuZWwvYnBmL2lub2RlLmMtNjUwLX1cXG5rZXJuZWwvYnBmL2lub2RlLmM6NjUxOkVYUE9SVF9TWU1CT0woYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aCk7XFxua2VybmVsL2JwZi9pbm9kZS5jLTY1Mi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmM9NTU9c3RhdGljIGludCBfX2JwZl9tdF9jaGVja19wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBicGZfcHJvZyAqKnJldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmMtNTktXFxubmV0L25ldGZpbHRlci94dF9icGYuYzo2MDpcXHQqcmV0ID0gYnBmX3Byb2dfZ2V0X3R5cGVfcGF0aChwYXRoLCBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVIpO1xcbm5ldC9uZXRmaWx0ZXIveHRfYnBmLmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTygqcmV0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6MzQuNDEzNTMyMTMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUwODY4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBJbnRlcnByZXRlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYSBuZXcgQlBGIGhlbHBlciwgYW5kIHRoZW4gZmlkZGxlcyB3aXRoIGBiaW5mbXRfbWlzY2Agc28gdGhhdCBCUEYgcHJvZ3JhbXMgY2FuIGNob29zZSBhbiBpbnRlcnByZXRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGxvb2tzIHNvdW5kIGFuZCByZWFjaGFibGUg4oCTIGdvb2Qgc3RhcnQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWdzIGFyZSBlbmFibGVkOiBgQklORk1UX01JU0NgIGFuZCBgQlBGX1NZU0NBTExgLiAgV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSBgSVNfQlVJTFRJTihDT05GSUdfQklORk1UX01JU0MpYCB1c2VkIGluIGBuZXQvY29yZS9maWx0ZXIuY2AuIFRoYXQgaW1wbGllcyB0aGF0IGBCSU5GTVRfTUlTQ2AgKm11c3QqIGJlIGJ1aWx0LWluLCBub3QgYSBtb2R1bGUsIHJpZ2h0PyAgSGFuZyBvbiwgYENPTkZJR19CSU5GTVRfTUlTQ2AgY2FuIGJlIHNldCB0byBlaXRoZXIgYHlgIG9yIGBtYC4gSWYgaXQncyBzZXQgdG8gYG1gLCB0aGVuIGBJU19CVUlMVElOYCBpcyBnb2luZyB0byBiZSBmYWxzZS4gSG1tLCB0aGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBlbnN1cmUgaXQncyBzZXQgdG8gYHlgIGZvciB0aGlzIHRvIHdvcmsuICBUaGUgdG9vbCBqdXN0IHRha2VzIHRoZSBjb25maWcgbmFtZTsgSSBjYW4ndCBkaXJlY3RseSBzcGVjaWZ5IGA9eWAuICBJIGd1ZXNzIHN5emthbGxlciB3aWxsIGhhbmRsZSB0aGF0IGJpdCBieSBlbmFibGluZyBpdC5cblxuTGV0J3MgcXVpY2tseSBvdXRsaW5lIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzLiAgV2UncmUgbG9va2luZyBhdDpcblxuKiAgIGBicGZfYmlucHJtX3NldF9pbnRlcnBgICh0aGUgbmV3IEJQRiBoZWxwZXIpXG4qICAgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmBcbiogICBgZ2V0X2JpbmZtdF9oYW5kbGVyYFxuKiAgIGBsb2FkX21pc2NfYmluYXJ5YFxuKiAgIGBjcmVhdGVfZW50cnlgXG4qICAgYGVudHJ5X3N0YXR1c2BcblxuT2theSwgbGV0J3Mgc3RlcCB0aHJvdWdoIHRoaXMuIFRoZSBCUEYgaGVscGVyIGlzIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBhbmQgYGxvYWRfbWlzY19iaW5hcnlgIGFyZSBzdGF0aWMsIGFuZCBgbG9hZF9taXNjX2JpbmFyeWAgaXMgYWN0dWFsbHkgcmVnaXN0ZXJlZCBhcyBhIGJpbmZtdCBoYW5kbGVyLiBBbmQgdGhhdCBvdGhlciBvbmUsIGBjcmVhdGVfZW50cnlgLCBpcyBzdGF0aWMgdG9vLCBhbmQgaXMgY2FsbGVkIGZyb20gYGJtX3JlZ2lzdGVyX3dyaXRlYC4gIEFoLCBzbyBJIHNob3VsZCBiZSBsb29raW5nIGF0IGBmcy9iaW5mbXRfbWlzYy5jYCBmb3IgaG93IGBibV9yZWdpc3Rlcl93cml0ZWAgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTg0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQwLjkyMjIxNTA5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMTY0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm1fcmVnaXN0ZXJfd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTkyOT1zdGF0aWMgaW50IGFkZF9lbnRyeShOb2RlICplLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy05NTctXFxuZnMvYmluZm10X21pc2MuYzo5NTg6c3RhdGljIHNzaXplX3QgYm1fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsXFxuZnMvYmluZm10X21pc2MuYy05NTktXFx0XFx0XFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYz0xMDAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJtX3JlZ2lzdGVyX29wZXJhdGlvbnMgPSB7XFxuZnMvYmluZm10X21pc2MuYzoxMDAzOlxcdC53cml0ZVxcdFxcdD0gYm1fcmVnaXN0ZXJfd3JpdGUsXFxuZnMvYmluZm10X21pc2MuYy0xMDA0LVxcdC5sbHNlZWtcXHRcXHQ9IG5vb3BfbGxzZWVrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo0MC45Nzc1NDI2MDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA5MDQ4ODE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmluYXJ5IExvYWRpbmcgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBibV9yZWdpc3Rlcl93cml0ZWAsIGBjcmVhdGVfZW50cnlgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBicGZfYmlucHJtX3NldF9pbnRlcnBgLCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCwgYW5kIGBnZXRfYmluZm10X2hhbmRsZXJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzdGF0aWMvZHluYW1pYyBuYXR1cmUgZm9yIHRoaXMgc3BlY2lmaWMgYW5hbHlzaXMuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybTogaXMgYGxvYWRfbWlzY19iaW5hcnlgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIGl0IGlzLiBHb29kLiBUaGF0J3Mgb25lIGRhdGEgcG9pbnQuXG5cbk5vdywgd2hhdCBhYm91dCBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYD8gSG1tLCBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCdzIGRlZmluZWQgd2l0aCBgQlBGX0NBTExfMmAuIFdhaXQgYSBzZWNvbmTigKYgdGhhdCBgQlBGX0NBTExfMmAgbWFjcm8gaXMgZ29pbmcgdG8gZXhwYW5kIG91dCB0byBzb21ldGhpbmcgbGlrZSBgX19fX2JwZl9iaW5wcm1fc2V0X2ludGVycGAuIEdvdHRhIGNoZWNrIHRoYXQgbWFjcm8gdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGZ1bmN0aW9uIGxpbmthZ2UuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo0NS4wNjgwMzM5NjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDQ1Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9DQUxMXzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI1OT1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MjQtI2RlZmluZSBCUEZfQ0FMTF8xKG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDEsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYyNTojZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMiwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI2LSNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQ1LjEyNDQ4MzE0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU0MTEyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCBhbmQgdGhlIEJQRiBKSVQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBicGZfYmlucHJtX3NldF9pbnRlcnBgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQsIHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIHNldHRpbmcgdGhlIGludGVycHJldGVyIGZvciBhIGJpbmFyeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUgY29tZXMgaW50byBwbGF5IGhlcmUsIHNvIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIGBCUEZfQ0FMTF94YCBhbmQgc2VlIGhvdyB0aGUgQlBGIEpJVCBnZXRzIGludm9rZWQgKGlmIGF0IGFsbCkgaW4gdGhpcyBwYXRoLiBMZXQncyBzZWUgaG93IHRoZSBCUEYgdmVyaWZpZXIgaXMgYmVpbmcgdXRpbGl6ZWQuIEknbSBrZWVuIHRvIHRyYWNlIHRoZSBCUEYgcHJvZ3JhbSBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgbWFuaXB1bGF0aW9uIG9mIHRoZSBwcm9ncmFtIGhlYWRlcnMsIGFuZCBob3cgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjg1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6NDguMTc4NTk5MjQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEyNTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYwOS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjYxMDojZGVmaW5lIEJQRl9DQUxMX3goeCwgYXR0ciwgbmFtZSwgLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MTEtXFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjQ4LjIzNjcyOTkwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTEyNjk2NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipFeGFtaW5pbmcgQlBGIEZ1bmN0aW9uIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZXNlIEJQRiBjYWxscyBhcmUgZGVmaW5lZC4gVGhlIG1hY3JvIGBCUEZfQ0FMTF94YCBpcyB0aGUga2V5IGhlcmUuIEl0IGxvb2tzIGxpa2UgdGhpcyBtYWNybyBkZWZpbmVzIGBfX19fIyNuYW1lYCBhcyBhbiBpbmxpbmUgZnVuY3Rpb24sIGJ1dCAqYG5hbWVgKiBpdHNlbGYgcmVwcmVzZW50cyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgZnVuY3Rpb24uIFNvLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSBpbiB0aGlzIGNhc2UgaXMgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgdW5kZXJzdGFuZGluZywgZ2l2ZW4gdGhlIGludHJpY2FjaWVzIG9mIEJQRiBhbmQga2VybmVsIGludGVybmFscy5cblxuTm93LCB3aGVyZSBjYW4gSSBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYD8gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGlzIGlzIGluIGBmcy9iaW5mbXRfbWlzYy5jYC4gSSBuZWVkIHRvIGxvb2sgdGhlcmUgdG8gY29uZmlybSBteSBpbmZlcmVuY2UgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nIGluIHRoZSBjb250ZXh0IG9mIGBiaW5mbXRfbWlzY2AuIExldCBtZSBvcGVuIHRoYXQgZmlsZSBhbmQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjU1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMjE6MzE6NTEuNzQ5NDI5MDU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY5NDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYmluZm10X21pc2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9iaW5mbXRfbWlzYy5jPTk2PXN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgYmluZm10X2JwZl9pbnRlcnAsIGJpbmZtdF9icGZfaW50ZXJwKTtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtOTgtLypcXG5mcy9iaW5mbXRfbWlzYy5jOjk5OiAqIGJwZl9iaW5wcm1fc2V0X2ludGVycCAtIGxldCBhIGJpbmZtdF9taXNjICdCJyBwcm9ncmFtIHBpY2sgdGhlIGludGVycHJldGVyLlxcbmZzL2JpbmZtdF9taXNjLmMtMTAwLSAqIEBwYXRoOiBpbnRlcnByZXRlciBwYXRoLCBpbiBCUEYtYWNjZXNzaWJsZSBtZW1vcnlcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTA3LSAqL1xcbmZzL2JpbmZtdF9taXNjLmM6MTA4OkJQRl9DQUxMXzIoYnBmX2JpbnBybV9zZXRfaW50ZXJwLCBjb25zdCBjaGFyICosIHBhdGgsIHUzMiwgbGVuKVxcbmZzL2JpbmZtdF9taXNjLmMtMTA5LXtcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtMTIwLVxcbmZzL2JpbmZtdF9taXNjLmM6MTIxOmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfYmlucHJtX3NldF9pbnRlcnBfcHJvdG8gPSB7XFxuZnMvYmluZm10X21pc2MuYzoxMjI6XFx0LmZ1bmNcXHRcXHQ9IGJwZl9iaW5wcm1fc2V0X2ludGVycCxcXG5mcy9iaW5mbXRfbWlzYy5jLTEyMy1cXHQuZ3BsX29ubHlcXHQ9IGZhbHNlLFxcbi0tXFxuZnMvYmluZm10X21pc2MuYy0xMzQtICogQGJwZl9pbnRlcnA6IHJlY2VpdmVzIGEga21hbGxvYydkIGludGVycHJldGVyIHBhdGggaWYgYSAnQicgcHJvZ3JhbSBjaG9vc2VzXFxuZnMvYmluZm10X21pc2MuYzoxMzU6ICogICAgICAgICAgICAgIG9uZSB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCk7IHRoZSBjYWxsZXIgbXVzdCBrZnJlZSgpIGl0XFxuZnMvYmluZm10X21pc2MuYy0xMzYtICpcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmM9MjkxPXN0YXRpYyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X21pc2MuYy0zMDktXFx0ICogQSAnQicgKEJQRikgaGFuZGxlciBjYXJyaWVzIG5vIGludGVycHJldGVyIG9mIGl0cyBvd247IHRoZSBwcm9ncmFtXFxuZnMvYmluZm10X21pc2MuYzozMTA6XFx0ICogY2hvb3NlcyBpdCB2aWEgYnBmX2JpbnBybV9zZXRfaW50ZXJwKCkuIE90aGVyIGhhbmRsZXJzIHVzZSB0aGVcXG5mcy9iaW5mbXRfbWlzYy5jLTMxMS1cXHQgKiBpbnRlcnByZXRlciByZWNvcmRlZCBhdCByZWdpc3RyYXRpb24uXFxuLS1cXG5mcy9iaW5mbXRfbWlzYy5jPTQ1NT1zdGF0aWMgTm9kZSAqY3JlYXRlX2VudHJ5KGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudClcXG4tLVxcbmZzL2JpbmZtdF9taXNjLmMtNjc3LVxcdFxcdCAqIEEgJ0InIChCUEYpIGhhbmRsZXIgY2FycmllcyBubyBpbnRlcnByZXRlciBvZiBpdHMgb3duOyB0aGVcXG5mcy9iaW5mbXRfbWlzYy5jOjY3ODpcXHRcXHQgKiBwcm9ncmFtIHBpY2tzIGl0IHZpYSBicGZfYmlucHJtX3NldF9pbnRlcnAoKS4gUmVqZWN0IGFcXG5mcy9iaW5mbXRfbWlzYy5jLTY3OS1cXHRcXHQgKiBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgb25lLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQyMTozMTo1MS44MDcxMjg2OTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3NTE4MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgQmluRm10X01pc2MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldyBCUEYgbWF0Y2hpbmcgZm9yIGBiaW5mbXRfbWlzY2AgZmVhdHVyZSwgYW5kIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24gc2VlbSB0byBiZTogYGJwZl9iaW5wcm1fc2V0X2ludGVycGAsIGBzZWFyY2hfYmluZm10X2hhbmRsZXJgLCBgZ2V0X2JpbmZtdF9oYW5kbGVyYCwgYGxvYWRfbWlzY19iaW5hcnlgLCBgY3JlYXRlX2VudHJ5YCwgYW5kIGBibV9yZWdpc3Rlcl93cml0ZWAuIFRob3NlIGFyZSB0aGUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBhZGRpdGlvbi5cblxuVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byByZW1lbWJlciBhcmUgYEJJTkZNVF9NSVNDYCAob2J2aW91c2x5KSwgYW5kIGBCUEZfU1lTQ0FMTGAuIFRoaXMgaXMgYWJzb2x1dGVseSByaXBlIGZvciBmdXp6aW5nLiBBIG5ldyBmZWF0dXJlIGxpa2UgdGhpcyBhbHdheXMgYWRkcyBhdHRhY2sgc3VyZmFjZS4gTGV0J3MgbWFrZSBzdXJlIEkndmUgZ290IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGRlcGVuZGVuY2llcywgdGhvdWdoLlxuXG5SaWdodCwgYENPTkZJR19CSU5GTVRfTUlTQ2AgaXMgdGhlIHByaW1hcnkgb25lLCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIHN1cHBvcnRpbmcgY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0J3MgaW1wbGljaXRseSBpbmNsdWRlZCBvciBhc3N1bWVkLiBPa2F5LCBJIHNlZSB0aGF0IGBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVJgIGlzIHVzZWQgYXMgd2VsbCwgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEFsc28sIGBicGZfcHJvZ19nZXRfdHlwZV9wYXRoYCBpcyBjYWxsZWQsIGFuZCB0aGF04oCZcyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2lub2RlLmNgLiBUaGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCByaWdodD8gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEFsd2F5cyB0cnVzdCwgYnV0IHZlcmlmeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCUEYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjQ4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjU3LjE4MjMxMDcwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNDM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5vZGVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyArPSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMxOjU3LjIzOTM1OTYwOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA5OTc3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgYW5kIEJpbmFyeSBGb3JtYXQgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaW5vZGUub2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3csIHNldHMgdGhlIHN0YWdlIGZvciB3aGF0IEknbSBhYm91dCB0byBkby4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW50ZXJjb25uZWN0aW9ucy5cblxuTGV0J3Mgc2VlLCBteSBrZXkgc3ltYm9scyBmb3IgZXhhbWluYXRpb24gYXJlOiBgYnBmX2JpbnBybV9zZXRfaW50ZXJwYCwgYHNlYXJjaF9iaW5mbXRfaGFuZGxlcmAsIGBnZXRfYmluZm10X2hhbmRsZXJgLCBgbG9hZF9taXNjX2JpbmFyeWAsIGBjcmVhdGVfZW50cnlgLCBhbmQgYGJtX3JlZ2lzdGVyX3dyaXRlYC5cblxuV2FpdCBhIG1pbnV0ZSwgYGJwZl9iaW5wcm1fc2V0X2ludGVycGAgdGhhdCdzIGEgQlBGIGhlbHBlciEgSXQncyBpbnZva2VkIGJ5IEJQRiBwcm9ncmFtcywgaW50ZXJlc3RpbmcuIEFuZCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgc2VhcmNoX2JpbmZtdF9oYW5kbGVyYCBpcyBjYWxsZWQgYnkgYGdldF9iaW5mbXRfaGFuZGxlcmAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGxvYWRfbWlzY19iaW5hcnlgLiBBaC1oYSwgYGxvYWRfbWlzY19iaW5hcnlgIGlzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGFjdHVhbCBleGVjdXRpb24gb2YgYSBiaW5hcnkuIEFuZCBpdCBzZWVtcyB0aGF0IGBjcmVhdGVfZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBibV9yZWdpc3Rlcl93cml0ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgYGJtX3JlZ2lzdGVyX3dyaXRlYCBpcyBjYWxsZWQgd2hlbiB3cml0aW5nIHRvIGAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXJgLlxuXG5BbHJpZ2h0LCB0aGVzZSBhcmUgYWxsIHNvbGlkIGZvY3VzIHN5bWJvbHMsIHRoZXkgc2VlbSB0byBoaWdobGlnaHQgdGhlIHJpZ2h0IGFyZWFzLiBJJ20gc2F0aXNmaWVkLiBJJ2xsIGZpbmFsaXplIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NTksIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDIxOjMyOjAyLjk0OTMzOTMzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODY2MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfTUlTQ1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfYmlucHJtX3NldF9pbnRlcnBcIixcbiAgICBcInNlYXJjaF9iaW5mbXRfaGFuZGxlclwiLFxuICAgIFwiZ2V0X2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJsb2FkX21pc2NfYmluYXJ5XCIsXG4gICAgXCJjcmVhdGVfZW50cnlcIixcbiAgICBcImJtX3JlZ2lzdGVyX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyAnQicgKEJQRikgaGFuZGxlciB0eXBlIGZvciBiaW5mbXRfbWlzYywgYWxsb3dpbmcgQlBGIHByb2dyYW1zIHRvIG1hdGNoIGJpbmFyaWVzIGFuZCBzZWxlY3QgaW50ZXJwcmV0ZXJzLiBUaGlzIGFkZHMgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIGJpbmZtdF9taXNjIHJlZ2lzdHJhdGlvbiBhbmQgYmluYXJ5IGV4ZWN1dGlvbiBwYXRocywgYXMgd2VsbCBhcyBhIG5ldyBCUEYgaGVscGVyIGZ1bmN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJJTkZNVF9NSVNDXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9iaW5wcm1fc2V0X2ludGVycFwiLFxuICAgIFwic2VhcmNoX2JpbmZtdF9oYW5kbGVyXCIsXG4gICAgXCJnZXRfYmluZm10X2hhbmRsZXJcIixcbiAgICBcImxvYWRfbWlzY19iaW5hcnlcIixcbiAgICBcImNyZWF0ZV9lbnRyeVwiLFxuICAgIFwiYm1fcmVnaXN0ZXJfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3ICdCJyAoQlBGKSBoYW5kbGVyIHR5cGUgZm9yIGJpbmZtdF9taXNjLCBhbGxvd2luZyBCUEYgcHJvZ3JhbXMgdG8gbWF0Y2ggYmluYXJpZXMgYW5kIHNlbGVjdCBpbnRlcnByZXRlcnMuIFRoaXMgYWRkcyBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gYmluZm10X21pc2MgcmVnaXN0cmF0aW9uIGFuZCBiaW5hcnkgZXhlY3V0aW9uIHBhdGhzLCBhcyB3ZWxsIGFzIGEgbmV3IEJQRiBoZWxwZXIgZnVuY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[1] Phase: Succeeded StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-04 21:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-04 21:32:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2] Phase: Succeeded StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-04 21:32:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-04 21:32:14 +0000 UTC FinishedAt: 2026-07-04 21:32:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2326545417/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-04 21:32:24 +0000 UTC FinishedAt: 2026-07-04 22:00:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-04 21:32:24 +0000 UTC FinishedAt: 2026-07-04 22:00:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7fd92e27-7095-44a8-8a80-e933a88fdbb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2326545417/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ca3a26f7-6407-4380-ac9e-d753cdba805b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-2403663079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-04 21:32:24 +0000 UTC FinishedAt: 2026-07-04 22:00:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7fd92e27-7095-44a8-8a80-e933a88fdbb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2326545417/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ca3a26f7-6407-4380-ac9e-d753cdba805b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-2403663079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-04 22:00:37 +0000 UTC FinishedAt: 2026-07-04 22:00:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-04 22:00:37 +0000 UTC FinishedAt: 2026-07-04 22:00:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-04 22:00:37 +0000 UTC FinishedAt: 2026-07-04 22:00:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-04 22:00:37 +0000 UTC FinishedAt: 2026-07-04 22:00:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2922195996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-04 22:00:47 +0000 UTC FinishedAt: 2026-07-04 22:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-04 22:00:47 +0000 UTC FinishedAt: 2026-07-04 22:02:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ca3a26f7-6407-4380-ac9e-d753cdba805b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-2403663079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-04 22:02:47 +0000 UTC FinishedAt: 2026-07-04 22:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-04 22:02:47 +0000 UTC FinishedAt: 2026-07-04 22:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-04 22:02:47 +0000 UTC FinishedAt: 2026-07-04 22:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-04 22:02:47 +0000 UTC FinishedAt: 2026-07-04 22:26:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7fd92e27-7095-44a8-8a80-e933a88fdbb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2922195996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c55716a0-66ee-4223-80ea-15d4b4799201", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-505597816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-04 22:02:47 +0000 UTC FinishedAt: 2026-07-04 22:26:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7fd92e27-7095-44a8-8a80-e933a88fdbb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-2922195996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c55716a0-66ee-4223-80ea-15d4b4799201", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-505597816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-04 22:26:33 +0000 UTC FinishedAt: 2026-07-04 22:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-04 22:26:33 +0000 UTC FinishedAt: 2026-07-04 22:26:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-04 22:26:33 +0000 UTC FinishedAt: 2026-07-04 22:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-04 22:26:33 +0000 UTC FinishedAt: 2026-07-04 22:28:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c55716a0-66ee-4223-80ea-15d4b4799201,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-505597816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ca3a26f7-6407-4380-ac9e-d753cdba805b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c55716a0-66ee-4223-80ea-15d4b4799201,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-2403663079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-505597816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-04 22:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-04 22:28:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-1444112101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-04 22:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-04 22:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-04 22:28:31 +0000 UTC FinishedAt: 2026-07-04 22:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-04 22:28:41 +0000 UTC FinishedAt: 2026-07-05 01:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjspvd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["bpf_binprm_set_interp","search_binfmt_handler","get_binfmt_handler","load_misc_binary","create_entry","bm_register_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f31c00c377ccf07c85442712f7c940a855cb3371","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_MISC","BPF_SYSCALL"],"series_id":"0e76a95a-d39c-43c1-9f47-9ee40a5744b1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-04 22:28:41 +0000 UTC FinishedAt: 2026-07-05 01:31:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ca3a26f7-6407-4380-ac9e-d753cdba805b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c55716a0-66ee-4223-80ea-15d4b4799201,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-2403663079/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-build-action-505597816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjspvd/series-workflowjspvd-convert-artifact-1444112101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}