Name: series-workflowgs5mz Phase: Succeeded StartedAt: 2026-07-17 15:35:28 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[0] Phase: Succeeded StartedAt: 2026-07-17 15:35:28 +0000 UTC FinishedAt: 2026-07-17 15:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 15:35:28 +0000 UTC FinishedAt: 2026-07-17 15:45:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "01cea4ad-ad95-4db1-871c-9b7a61a056a6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "arena_free_pages", "bpf_arena_free_pages", "bpf_arena_free_pages_non_sleepable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmE2MDg0M2JhMTFmNjlkMWU1NjM0MzNiMWYzYWI1NTVhZjhlOTFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXG5pbmRleCA4MGI3YjhhNjk0NDY0NS4uOTdhNWQ4ZDIxMjk1NWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuQEAgLTg1Myw2ICYjNDM7ODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcbiBcdHVhZGRyIFx1MDAyNj0gUEFHRV9NQVNLO1xuIFx0a2FkZHIgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoYXJlbmEpICYjNDM7IHVhZGRyO1xuIFx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXHUwMDNldXNlcl92bV9zdGFydCkgJiM0MzsgdWFkZHI7XG4mIzQzO1x0aWYgKGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnQpXG4mIzQzO1x0XHRyZXR1cm47XG4gXHR1YWRkcl9lbmQgPSBtaW4oYXJlbmEtXHUwMDNldXNlcl92bV9lbmQsIGZ1bGxfdWFkZHIgJiM0MzsgKHBhZ2VfY250IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSk7XG4gXHRpZiAoZnVsbF91YWRkciBcdTAwM2U9IHVhZGRyX2VuZClcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbmluZGV4IGRmMGUyMmQxYTI5YjEyLi5iMjQxYmJjZjU0YThhMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuQEAgLTEyLDE1ICYjNDM7MTIsMTcgQEBcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwmIzM0Oy5ic3MuXCYjMzQ7ICNuYW1lKSBfX2hpZGRlbiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSlcbiBcbiYjNDM7I2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbiYjNDM7I2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXHUwMDNjXHUwMDNjIDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgJiM0MzsgMSkpXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgQVJFTkFfVk1fU1RBUlQgKCgxdWxsIFx1MDAzY1x1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJFTkEpO1xuIFx0X191aW50KG1hcF9mbGFncywgQlBGX0ZfTU1BUEFCTEUpO1xuIFx0X191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovXG4tI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCBcdTAwM2NcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiAmIzQzOyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cbi0jZWxzZVxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFx1MDAzY1x1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuLSNlbmRpZlxuJiM0MztcdF9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cbiB9IGFyZW5hIFNFQyhcJiMzNDsubWFwc1wmIzM0Oyk7XG4gXG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbkBAIC05Myw2ICYjNDM7OTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiYjNDM7aW50IGZyZWVfc2NhbGFyX2JlbG93X2FyZW5hKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHZvaWQgX19hcmVuYSAqcGFnZTEsICpwYWdlMiwgKnBhZ2UzO1xuJiM0MztcdF9fdTY0IGJhZF9hZGRyID0gQVJFTkFfVk1fU1RBUlQgLSBfX1BBR0VfU0laRTtcbiYjNDM7XG4mIzQzO1x0cGFnZTEgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4mIzQzO1x0aWYgKCFwYWdlMSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRwYWdlMiA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcbiYjNDM7XHRpZiAoIXBhZ2UyKVxuJiM0MztcdFx0cmV0dXJuIDI7XG4mIzQzO1xuJiM0MztcdHBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xuJiM0MztcdGlmIChwYWdlMylcbiYjNDM7XHRcdHJldHVybiAzO1xuJiM0MztcbiYjNDM7XHRicGZfYXJlbmFfZnJlZV9wYWdlcyhcdTAwMjZhcmVuYSwgKHZvaWQgX19hcmVuYSAqKWJhZF9hZGRyLCAxKTtcbiYjNDM7XG4mIzQzO1x0cGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4mIzQzO1x0aWYgKHBhZ2UzKVxuJiM0MztcdFx0cmV0dXJuIDQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAgICYjMzQ7YnBmX2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAgICYjMzQ7YnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBhcmVuYV9mcmVlX3BhZ2VzYCB0byBwcmV2ZW50IGZyZWVpbmcgbWVtb3J5IGJlbG93IHRoZSBhcmVuYSYjMzk7cyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NmE2MDg0M2JhMTFmNjlkMWU1NjM0MzNiMWYzYWI1NTVhZjhlOTFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmMKaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9hcmVuYS5jCkBAIC04NTMsNiAmIzQzOzg1Myw4IEBAIHN0YXRpYyB2b2lkIGFyZW5hX2ZyZWVfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsCiAJdWFkZHIgJmFtcDs9IFBBR0VfTUFTSzsKIAlrYWRkciA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChhcmVuYSkgJiM0MzsgdWFkZHI7CiAJZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtJmd0O3VzZXJfdm1fc3RhcnQpICYjNDM7IHVhZGRyOwomIzQzOwlpZiAoZnVsbF91YWRkciAmbHQ7IGFyZW5hLSZndDt1c2VyX3ZtX3N0YXJ0KQomIzQzOwkJcmV0dXJuOwogCXVhZGRyX2VuZCA9IG1pbihhcmVuYS0mZ3Q7dXNlcl92bV9lbmQsIGZ1bGxfdWFkZHIgJiM0MzsgKHBhZ2VfY250ICZsdDsmbHQ7IFBBR0VfU0hJRlQpKTsKIAlpZiAoZnVsbF91YWRkciAmZ3Q7PSB1YWRkcl9lbmQpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKaW5kZXggZGYwZTIyZDFhMjliMTIuLmIyNDFiYmNmNTRhOGEzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwpAQCAtMTIsMTUgJiM0MzsxMiwxNyBAQAogCiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKCYjMzQ7LmJzcy4mIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCiAKJiM0MzsjaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NAomIzQzOyNkZWZpbmUgQVJFTkFfVk1fU1RBUlQgKCgxdWxsICZsdDsmbHQ7IDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgJiM0MzsgMSkpCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCAmbHQ7Jmx0OyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKQomIzQzOyNlbmRpZgomIzQzOwogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSRU5BKTsKIAlfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9NTUFQQUJMRSk7CiAJX191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovCi0jaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NAotICAgICAgICBfX3Vsb25nKG1hcF9leHRyYSwgKDF1bGwgJmx0OyZsdDsgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiAmIzQzOyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KLSNlbHNlCi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCAmbHQ7Jmx0OyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqLwotI2VuZGlmCiYjNDM7CV9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KIH0gYXJlbmEgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQpAQCAtOTMsNiAmIzQzOzk1LDM0IEBAIGludCBiYXNpY19hbGxvYzEodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO19fc3VjY2VzcyBfX3JldHZhbCgwKQomIzQzO2ludCBmcmVlX3NjYWxhcl9iZWxvd19hcmVuYSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwl2b2lkIF9fYXJlbmEgKnBhZ2UxLCAqcGFnZTIsICpwYWdlMzsKJiM0MzsJX191NjQgYmFkX2FkZHIgPSBBUkVOQV9WTV9TVEFSVCAtIF9fUEFHRV9TSVpFOwomIzQzOwomIzQzOwlwYWdlMSA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcygmYW1wO2FyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApOwomIzQzOwlpZiAoIXBhZ2UxKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CXBhZ2UyID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKCZhbXA7YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7CiYjNDM7CWlmICghcGFnZTIpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJcGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoJmFtcDthcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTsKJiM0MzsJaWYgKHBhZ2UzKQomIzQzOwkJcmV0dXJuIDM7CiYjNDM7CiYjNDM7CWJwZl9hcmVuYV9mcmVlX3BhZ2VzKCZhbXA7YXJlbmEsICh2b2lkIF9fYXJlbmEgKiliYWRfYWRkciwgMSk7CiYjNDM7CiYjNDM7CXBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKCZhbXA7YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7CiYjNDM7CWlmIChwYWdlMykKJiM0MzsJCXJldHVybiA0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBTRUMoJiMzNDtzb2NrZXQmIzM0OykKIF9fc3VjY2VzcyBfX3JldHZhbCgwKQogaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBBcmVuYSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGtlcm5lbC9icGYvYXJlbmEuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgbGluZToKCmBgYGMKCWZ1bGxfdWFkZHIgPSBjbGVhcl9sbzMyKGFyZW5hLSZndDt1c2VyX3ZtX3N0YXJ0KSAmIzQzOyB1YWRkcjsKJiM0MzsJaWYgKGZ1bGxfdWFkZHIgJmx0OyBhcmVuYS0mZ3Q7dXNlcl92bV9zdGFydCkKJiM0MzsJCXJldHVybjsKYGBgCgpSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRvIHRoZSBCUEYgYXJlbmEgY29kZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBjb25kaXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBiZWluZyBhZGRyZXNzZWQgaGVyZT8gVGhpcyBvdmVyZmxvdyBjaGVjayBzdWdnZXN0cyB0aGF0IGB1YWRkcmAgbWlnaHQsIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMsIGJlIGNhdXNpbmcgYGZ1bGxfdWFkZHJgIHRvIHdyYXAgYXJvdW5kLiBUaGF0IGtpbmQgb2YgYnVnIHdvdWxkIGJlIG5hc3R5LCBzbyB0aGlzIGlzIGxpa2VseSBhIGdvb2QgdGhpbmcuCgpOb3csIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGtlcm5lbC9icGYvYXJlbmEuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIGFzIHdlbGwuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzIGluIHRoZSBhcmVuYSBtYW5hZ2VtZW50LiBBcmUgdGhlcmUgb3RoZXIgcGxhY2VzIHRoaXMgaXNzdWUgY291bGQgc3VyZmFjZSwgb3IgaXMgdGhlIGZpeCBzZWxmLWNvbnRhaW5lZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zIGFuZCBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgaW50ZWdyYXRlZC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW1wb3J0YW50IHBpZWNlIG9mIGhhcmRlbmluZywgc28gSSYjMzk7bGwgd2FudCB0byByZXZpZXcgdGhlIG9yaWdpbmFsIHByb2JsZW0gYW5kIHRoaXMgc29sdXRpb24gY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2FyZW5hLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jLTQ4LVxua2VybmVsL2JwZi9hcmVuYS5jOjQ5OnN0YXRpYyB2b2lkIGFyZW5hX2ZyZWVfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsIGJvb2wgc2xlZXBhYmxlKTtcbmtlcm5lbC9icGYvYXJlbmEuYy01MC1cbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmM9MjA3PXN0YXRpYyBpbnQgYXBwbHlfcmFuZ2VfY2xlYXJfY2IocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy0yMjYtXHQgKiBTa2lwIHRoZSBwZXItYXJlbmEgc2NyYXRjaCBwYWdlLiBBIGtlcm5lbCBmYXVsdCBvbiBhbiB1bmFsbG9jYXRlZCB1YWRkclxua2VybmVsL2JwZi9hcmVuYS5jOjIyNzpcdCAqIHNjcmF0Y2hlcyBpdHMgUFRFLiBBIGxhdGVyIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKCkgb3ZlciB0aGF0IHJhbmdlIHdhbGtzXG5rZXJuZWwvYnBmL2FyZW5hLmMtMjI4LVx0ICogaGVyZS4gV2l0aG91dCB0aGUgc2tpcCwgc2NyYXRjaF9wYWdlIHdvdWxkIGJlIGZyZWVkLlxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYz02NTk9c3RhdGljIGxvbmcgYXJlbmFfYWxsb2NfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsIGludCBub2RlX2lkLFxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy03NjMtXHRcdGZsdXNoX3ZtYXBfY2FjaGUoa2Vybl92bV9zdGFydCAmIzQzOyB1YWRkcjMyLCBtYXBwZWQgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xua2VybmVsL2JwZi9hcmVuYS5jOjc2NDpcdFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgdWFkZHIzMiwgbWFwcGVkLCBzbGVlcGFibGUpO1xua2VybmVsL2JwZi9hcmVuYS5jLTc2NS1cdH1cbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmM9NzgwPXN0YXRpYyB2b2lkIHphcF9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudClcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtODM3LVxua2VybmVsL2JwZi9hcmVuYS5jOjgzODpzdGF0aWMgdm9pZCBhcmVuYV9mcmVlX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBib29sIHNsZWVwYWJsZSlcbmtlcm5lbC9icGYvYXJlbmEuYy04Mzkte1xuLS1cbmtlcm5lbC9icGYvYXJlbmEuYz0xMDY0PXZvaWQgKmJwZl9hcmVuYV9hbGxvY19wYWdlc19zbGVlcGFibGUodm9pZCAqcF9fbWFwLCB2b2lkICphZGRyX19pZ24sIHUzMiBwYWdlX2NudCxcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3NS1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMDc2Ol9fYnBmX2tmdW5jIHZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY250KVxua2VybmVsL2JwZi9hcmVuYS5jLTEwNzcte1xuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy0xMDgyLVx0XHRyZXR1cm47XG5rZXJuZWwvYnBmL2FyZW5hLmM6MTA4MzpcdGFyZW5hX2ZyZWVfcGFnZXMoYXJlbmEsIChsb25nKXB0cl9faWduLCBwYWdlX2NudCwgdHJ1ZSk7XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NC19XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NS1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMDg2OnZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Ny17XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jLTEwOTItXHRcdHJldHVybjtcbmtlcm5lbC9icGYvYXJlbmEuYzoxMDkzOlx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCBmYWxzZSk7XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA5NC19XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTExMTI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMilcbmtlcm5lbC9icGYvYXJlbmEuYzoxMTEzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbmtlcm5lbC9icGYvYXJlbmEuYy0xMTE0LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTk2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBCUEYgQXJlbmEgUGFnZSBGcmVlaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXJlbmFfZnJlZV9wYWdlc2AuIE15IHByaW1hcnkgaW50ZXJlc3QgaGVyZSBpcyBob3cgdGhlIEJQRiBhcmVuYSBzeXN0ZW0gbWFuYWdlcyBpdHMgbWVtb3J5IGZyZWVpbmcuIEkmIzM5O3ZlIHNwb3R0ZWQgdGhhdCBgYXJlbmFfZnJlZV9wYWdlc2AgaXMgdGhlIGNvcmUgZnVuY3Rpb24gY2FsbGVkIGZyb20gYm90aCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgIGFuZCBpdHMgbm9uLXNsZWVwYWJsZSBjb3VudGVycGFydCwgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzX25vbl9zbGVlcGFibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgdGhlIGNyaXRpY2FsIHBvaW50IGluIHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBjeWNsZS4gTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IGBrZXJuZWwvYnBmL2FyZW5hLmNgIGlzIGV2ZW4gZW5hYmxlZCBpbiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IGFjdGl2YXRlcyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcmVuYVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MTk9aWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OgoKKipNeSBCUEYgRnV6emluZyBQbGFuKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGtleSBjb25maWcgaGVyZSwgYXNzdW1pbmcgd2UgYWxzbyBoYXZlIGBDT05GSUdfTU1VYCBhbmQgYENPTkZJR182NEJJVGAgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgYXMgd2l0aG91dCB0aGVzZSwgdGhlIEJQRiBzeXNjYWxsIHdvdWxkbiYjMzk7dCBiZSByZWxldmFudC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjb25kaXRpb24gYGZ1bGxfdWFkZHIgJmx0OyBhcmVuYS0mZ3Q7dXNlcl92bV9zdGFydGAuIFRoaXMgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gZ2V0IHRvIHdvcmsgb24gdGhpcy4KCk15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgYXJlbmFfZnJlZV9wYWdlc2AsIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AsIGFuZCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNyYWZ0IGlucHV0cyB0aGF0IHNwZWNpZmljYWxseSB0cnkgdG8gdHJpZ2dlciB0aGF0IGBmdWxsX3VhZGRyYCBjb25kaXRpb24uCgpCZWZvcmUgSSBjb21taXQgdG8gdGhpcyBmdXp6aW5nIGNhbXBhaWduLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdCBwbGF5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgSEFWRV9FQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVx0aGVscFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz03Mz1jb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy03NS1cdGRlZmF1bHQgeVxua2VybmVsL2JwZi9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTc3LVx0aGVscFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz05Mj1jb25maWcgQlBGX0xTTVxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy05NC1cdGRlcGVuZHMgb24gQlBGX0VWRU5UU1xua2VybmVsL2JwZi9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTk2LVx0ZGVwZW5kcyBvbiBTRUNVUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjcKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gdGhlIG9uZSB0aGlua2luZyB0aHJvdWdoIHRoaXMgQlBGIGFyZW5hIG1lbW9yeSBpc3N1ZToKCioqQlBGIEFyZW5hIE1lbW9yeSBNYW5hZ2VtZW50IEVuaGFuY2VtZW50KioKClJpZ2h0LCBzbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgdGhlIGBCUEZfU1lTQ0FMTGAgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbi4gVGhlIHBhdGNoIGluIGNvbnNpZGVyYXRpb24gaW50cm9kdWNlcyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgYSBzYWZldHkgbmV0IOKAkyBhIGd1YXJkcmFpbCDigJMgZGVzaWduZWQgdG8gcHJldmVudCB0aGUgZGVhbGxvY2F0aW9uIG9mIG1lbW9yeSB0aGF0IGZhbGxzIGJlbG93IHRoZSBgYXJlbmEtJmd0O3VzZXJfdm1fc3RhcnRgIGJvdW5kYXJ5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHRvIGhvdyB0aGUgQlBGIGFyZW5hIG1hbmFnZXMgaXRzIG1lbW9yeSByZXNvdXJjZXMuIEFuZCB0aGlzIGNoYW5nZSBpcyB0cmlnZ2VyZWQgYnkgQlBGIHByb2dyYW1zIGNhbGxpbmcgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYCBvciB0aGUgbm9uLXNsZWVwYWJsZSB2YXJpYW50IGBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlYC4gSSBiZWxpZXZlIGl0JiMzOTtzIHRpbWUgdG8gdGVzdCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDoyOS42NDYyNTA3MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMxMjg0ODM4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgYXJlbmFfZnJlZV9wYWdlc2AgdG8gcHJldmVudCBmcmVlaW5nIG1lbW9yeSBiZWxvdyB0aGUgYXJlbmEncyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDoyOS42NDYzMzQxOThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NjM5MDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2YTYwODQzYmExMWY2OWQxZTU2MzQzM2IxZjNhYjU1NWFmOGU5MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXFxuaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYXJlbmEuY1xcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xcbkBAIC04NTMsNiArODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcXG4gXFx0dWFkZHIgXFx1MDAyNj0gUEFHRV9NQVNLO1xcbiBcXHRrYWRkciA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChhcmVuYSkgKyB1YWRkcjtcXG4gXFx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXFx1MDAzZXVzZXJfdm1fc3RhcnQpICsgdWFkZHI7XFxuK1xcdGlmIChmdWxsX3VhZGRyIFxcdTAwM2MgYXJlbmEtXFx1MDAzZXVzZXJfdm1fc3RhcnQpXFxuK1xcdFxcdHJldHVybjtcXG4gXFx0dWFkZHJfZW5kID0gbWluKGFyZW5hLVxcdTAwM2V1c2VyX3ZtX2VuZCwgZnVsbF91YWRkciArIChwYWdlX2NudCBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSk7XFxuIFxcdGlmIChmdWxsX3VhZGRyIFxcdTAwM2U9IHVhZGRyX2VuZClcXG4gXFx0XFx0cmV0dXJuO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuaW5kZXggZGYwZTIyZDFhMjliMTIuLmIyNDFiYmNmNTRhOGEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcXG5AQCAtMTIsMTUgKzEyLDE3IEBAXFxuIFxcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFxcXCIuYnNzLlxcXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxcbiBcXG4rI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcXG4rI2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXFx1MDAzY1xcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKVxcbisjZWxzZVxcbisjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCBcXHUwMDNjXFx1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICsgMSkpXFxuKyNlbmRpZlxcbitcXG4gc3RydWN0IHtcXG4gXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUkVOQSk7XFxuIFxcdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX01NQVBBQkxFKTtcXG4gXFx0X191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovXFxuLSNpZmRlZiBfX1RBUkdFVF9BUkNIX2FybTY0XFxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFxcdTAwM2NcXHUwMDNjIDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgKyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cXG4tI2Vsc2VcXG4tICAgICAgICBfX3Vsb25nKG1hcF9leHRyYSwgKDF1bGwgXFx1MDAzY1xcdTAwM2MgNDQpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xcbi0jZW5kaWZcXG4rXFx0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xcbiB9IGFyZW5hIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4gXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG5AQCAtOTMsNiArOTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4raW50IGZyZWVfc2NhbGFyX2JlbG93X2FyZW5hKHZvaWQgKmN0eClcXG4re1xcbitcXHR2b2lkIF9fYXJlbmEgKnBhZ2UxLCAqcGFnZTIsICpwYWdlMztcXG4rXFx0X191NjQgYmFkX2FkZHIgPSBBUkVOQV9WTV9TVEFSVCAtIF9fUEFHRV9TSVpFO1xcbitcXG4rXFx0cGFnZTEgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xcbitcXHRpZiAoIXBhZ2UxKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdHBhZ2UyID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFxcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcXG4rXFx0aWYgKCFwYWdlMilcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRwYWdlMyA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XFxuK1xcdGlmIChwYWdlMylcXG4rXFx0XFx0cmV0dXJuIDM7XFxuK1xcbitcXHRicGZfYXJlbmFfZnJlZV9wYWdlcyhcXHUwMDI2YXJlbmEsICh2b2lkIF9fYXJlbmEgKiliYWRfYWRkciwgMSk7XFxuK1xcbitcXHRwYWdlMyA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XFxuK1xcdGlmIChwYWdlMylcXG4rXFx0XFx0cmV0dXJuIDQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCJzb2NrZXRcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6MzAuNDkzODkyNjE4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzQ2NTE4ODc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgYXJlbmFfZnJlZV9wYWdlc2AgdG8gcHJldmVudCBmcmVlaW5nIG1lbW9yeSBiZWxvdyB0aGUgYXJlbmEncyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2YTYwODQzYmExMWY2OWQxZTU2MzQzM2IxZjNhYjU1NWFmOGU5MWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxNTo0NDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYXJlbmEuYyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jXG4rKysgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbkBAIC04NTMsNiArODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcbiBcdHVhZGRyIFx1MDAyNj0gUEFHRV9NQVNLO1xuIFx0a2FkZHIgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoYXJlbmEpICsgdWFkZHI7XG4gXHRmdWxsX3VhZGRyID0gY2xlYXJfbG8zMihhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0KSArIHVhZGRyO1xuK1x0aWYgKGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnQpXG4rXHRcdHJldHVybjtcbiBcdHVhZGRyX2VuZCA9IG1pbihhcmVuYS1cdTAwM2V1c2VyX3ZtX2VuZCwgZnVsbF91YWRkciArIChwYWdlX2NudCBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCkpO1xuIFx0aWYgKGZ1bGxfdWFkZHIgXHUwMDNlPSB1YWRkcl9lbmQpXG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5pbmRleCBkZjBlMjJkMWEyOWIxMi4uYjI0MWJiY2Y1NGE4YTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbkBAIC0xMiwxNSArMTIsMTcgQEBcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmJzcy5cIiAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXG4gXG4rI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbisjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCBcdTAwM2NcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKVxuKyNlbHNlXG4rI2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXHUwMDNjXHUwMDNjIDQ0KSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgKyAxKSlcbisjZW5kaWZcbitcbiBzdHJ1Y3Qge1xuIFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUkVOQSk7XG4gXHRfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9NTUFQQUJMRSk7XG4gXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpOyAvKiBhcmVuYSBvZiB0d28gcGFnZXMgY2xvc2UgdG8gMzItYml0IGJvdW5kYXJ5Ki9cbi0jaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NFxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFx1MDAzY1x1MDAzYyAzMikgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICsgMSkpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4tI2Vsc2Vcbi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCBcdTAwM2NcdTAwM2MgNDQpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuLSNlbmRpZlxuK1x0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuIH0gYXJlbmEgU0VDKFwiLm1hcHNcIik7XG4gXG4gU0VDKFwic29ja2V0XCIpXG5AQCAtOTMsNiArOTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rU0VDKFwic3lzY2FsbFwiKVxuK19fc3VjY2VzcyBfX3JldHZhbCgwKVxuK2ludCBmcmVlX3NjYWxhcl9iZWxvd19hcmVuYSh2b2lkICpjdHgpXG4re1xuK1x0dm9pZCBfX2FyZW5hICpwYWdlMSwgKnBhZ2UyLCAqcGFnZTM7XG4rXHRfX3U2NCBiYWRfYWRkciA9IEFSRU5BX1ZNX1NUQVJUIC0gX19QQUdFX1NJWkU7XG4rXG4rXHRwYWdlMSA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcbitcdGlmICghcGFnZTEpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0cGFnZTIgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4rXHRpZiAoIXBhZ2UyKVxuK1x0XHRyZXR1cm4gMjtcbitcbitcdHBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xuK1x0aWYgKHBhZ2UzKVxuK1x0XHRyZXR1cm4gMztcbitcbitcdGJwZl9hcmVuYV9mcmVlX3BhZ2VzKFx1MDAyNmFyZW5hLCAodm9pZCBfX2FyZW5hICopYmFkX2FkZHIsIDEpO1xuK1xuK1x0cGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4rXHRpZiAocGFnZTMpXG4rXHRcdHJldHVybiA0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcInNvY2tldFwiKVxuIF9fc3VjY2VzcyBfX3JldHZhbCgwKVxuIGludCBiYXNpY19hbGxvYzJfbm9zbGVlcCh2b2lkICpjdHgpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozMC40OTM4OTY2MjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEzNjEwNDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEFyZW5hIENvZGUgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBga2VybmVsL2JwZi9hcmVuYS5jYC4gTG9va3MgbGlrZSBpdCdzIGFkZGluZyBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBhcmVuYV9mcmVlX3BhZ2VzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmU6XG5cbmBgYGNcblx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXHUwMDNldXNlcl92bV9zdGFydCkgKyB1YWRkcjtcbitcdGlmIChmdWxsX3VhZGRyIFx1MDAzYyBhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0KVxuK1x0XHRyZXR1cm47XG5gYGBcblxuUmlnaHQgYXdheSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byB0aGUgQlBGIGFyZW5hIGNvZGUuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCdzIGludHJvZHVjaW5nIGEgbmV3IGNvbmRpdGlvbiBiZWZvcmUgZnJlZWluZyBwYWdlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFdoYXQncyB0aGUgcG90ZW50aWFsIHByb2JsZW0gYmVpbmcgYWRkcmVzc2VkIGhlcmU/IFRoaXMgb3ZlcmZsb3cgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgdWFkZHJgIG1pZ2h0LCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLCBiZSBjYXVzaW5nIGBmdWxsX3VhZGRyYCB0byB3cmFwIGFyb3VuZC4gVGhhdCBraW5kIG9mIGJ1ZyB3b3VsZCBiZSBuYXN0eSwgc28gdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGtlcm5lbC9icGYvYXJlbmEuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBgYXJlbmFfZnJlZV9wYWdlc2AgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIGFyZW5hIG1hbmFnZW1lbnQuIEFyZSB0aGVyZSBvdGhlciBwbGFjZXMgdGhpcyBpc3N1ZSBjb3VsZCBzdXJmYWNlLCBvciBpcyB0aGUgZml4IHNlbGYtY29udGFpbmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBwcm9wZXJseSBpbnRlZ3JhdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWxseSBpbXBvcnRhbnQgcGllY2Ugb2YgaGFyZGVuaW5nLCBzbyBJJ2xsIHdhbnQgdG8gcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9ibGVtIGFuZCB0aGlzIHNvbHV0aW9uIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE1OjQ0OjM1LjAwNzUwOTcyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTc1OTgwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJlbmFfZnJlZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2FyZW5hLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9hcmVuYS5jLTQ4LVxcbmtlcm5lbC9icGYvYXJlbmEuYzo0OTpzdGF0aWMgdm9pZCBhcmVuYV9mcmVlX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBib29sIHNsZWVwYWJsZSk7XFxua2VybmVsL2JwZi9hcmVuYS5jLTUwLVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTIwNz1zdGF0aWMgaW50IGFwcGx5X3JhbmdlX2NsZWFyX2NiKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy0yMjYtXFx0ICogU2tpcCB0aGUgcGVyLWFyZW5hIHNjcmF0Y2ggcGFnZS4gQSBrZXJuZWwgZmF1bHQgb24gYW4gdW5hbGxvY2F0ZWQgdWFkZHJcXG5rZXJuZWwvYnBmL2FyZW5hLmM6MjI3OlxcdCAqIHNjcmF0Y2hlcyBpdHMgUFRFLiBBIGxhdGVyIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKCkgb3ZlciB0aGF0IHJhbmdlIHdhbGtzXFxua2VybmVsL2JwZi9hcmVuYS5jLTIyOC1cXHQgKiBoZXJlLiBXaXRob3V0IHRoZSBza2lwLCBzY3JhdGNoX3BhZ2Ugd291bGQgYmUgZnJlZWQuXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM9NjU5PXN0YXRpYyBsb25nIGFyZW5hX2FsbG9jX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBpbnQgbm9kZV9pZCxcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy03NjMtXFx0XFx0Zmx1c2hfdm1hcF9jYWNoZShrZXJuX3ZtX3N0YXJ0ICsgdWFkZHIzMiwgbWFwcGVkIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbmtlcm5lbC9icGYvYXJlbmEuYzo3NjQ6XFx0XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgdWFkZHIzMiwgbWFwcGVkLCBzbGVlcGFibGUpO1xcbmtlcm5lbC9icGYvYXJlbmEuYy03NjUtXFx0fVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTc4MD1zdGF0aWMgdm9pZCB6YXBfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQpXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtODM3LVxcbmtlcm5lbC9icGYvYXJlbmEuYzo4Mzg6c3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCwgYm9vbCBzbGVlcGFibGUpXFxua2VybmVsL2JwZi9hcmVuYS5jLTgzOS17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM9MTA2ND12b2lkICpicGZfYXJlbmFfYWxsb2NfcGFnZXNfc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqYWRkcl9faWduLCB1MzIgcGFnZV9jbnQsXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3NS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTA3NjpfX2JwZl9rZnVuYyB2b2lkIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Mi1cXHRcXHRyZXR1cm47XFxua2VybmVsL2JwZi9hcmVuYS5jOjEwODM6XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCB0cnVlKTtcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NC19XFxua2VybmVsL2JwZi9hcmVuYS5jLTEwODUtXFxua2VybmVsL2JwZi9hcmVuYS5jOjEwODY6dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA5Mi1cXHRcXHRyZXR1cm47XFxua2VybmVsL2JwZi9hcmVuYS5jOjEwOTM6XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCBmYWxzZSk7XFxua2VybmVsL2JwZi9hcmVuYS5jLTEwOTQtfVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTExMTI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMilcXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTExMzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2ZyZWVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpXFxua2VybmVsL2JwZi9hcmVuYS5jLTExMTQtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozNS43MDUxMTMzMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcwMTAwNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBBcmVuYSBQYWdlIEZyZWVpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYXJlbmFfZnJlZV9wYWdlc2AuIE15IHByaW1hcnkgaW50ZXJlc3QgaGVyZSBpcyBob3cgdGhlIEJQRiBhcmVuYSBzeXN0ZW0gbWFuYWdlcyBpdHMgbWVtb3J5IGZyZWVpbmcuIEkndmUgc3BvdHRlZCB0aGF0IGBhcmVuYV9mcmVlX3BhZ2VzYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBib3RoIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AgYW5kIGl0cyBub24tc2xlZXBhYmxlIGNvdW50ZXJwYXJ0LCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyB0aGUgY3JpdGljYWwgcG9pbnQgaW4gdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGN5Y2xlLiBOb3csIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGtlcm5lbC9icGYvYXJlbmEuY2AgaXMgZXZlbiBlbmFibGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi4gVGltZSB0byBjaGVjayB0aGUgY29uZmlncy4uLiBsZXQncyBzZWUgd2hhdCBhY3RpdmF0ZXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozOC40NzUyMTY3MjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NDY2NTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyZW5hXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xOT1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBhcmVuYS5vIHJhbmdlX3RyZWUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6MzguNjkyNjkxOTM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTY4MTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKk15IEJQRiBGdXp6aW5nIFBsYW4qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUsIGFzc3VtaW5nIHdlIGFsc28gaGF2ZSBgQ09ORklHX01NVWAgYW5kIGBDT05GSUdfNjRCSVRgIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGFzIHdpdGhvdXQgdGhlc2UsIHRoZSBCUEYgc3lzY2FsbCB3b3VsZG4ndCBiZSByZWxldmFudC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjb25kaXRpb24gYGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnRgLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIHJlYWxseSBuZWVkIHRvIGdldCB0byB3b3JrIG9uIHRoaXMuXG5cbk15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgYXJlbmFfZnJlZV9wYWdlc2AsIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AsIGFuZCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY3JhZnQgaW5wdXRzIHRoYXQgc3BlY2lmaWNhbGx5IHRyeSB0byB0cmlnZ2VyIHRoYXQgYGZ1bGxfdWFkZHJgIGNvbmRpdGlvbi5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMgZnV6emluZyBjYW1wYWlnbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXQgcGxheS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE1OjQ0OjQzLjExNDM3NjEwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUyMDI3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz03Mz1jb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTc1LVxcdGRlZmF1bHQgeVxcbmtlcm5lbC9icGYvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTc3LVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz05Mj1jb25maWcgQlBGX0xTTVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTk0LVxcdGRlcGVuZHMgb24gQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTk2LVxcdGRlcGVuZHMgb24gU0VDVVJJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6NDMuNTE5NTk1NTU0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMTk0ODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSB0aGUgb25lIHRoaW5raW5nIHRocm91Z2ggdGhpcyBCUEYgYXJlbmEgbWVtb3J5IGlzc3VlOlxuXG4qKkJQRiBBcmVuYSBNZW1vcnkgTWFuYWdlbWVudCBFbmhhbmNlbWVudCoqXG5cblJpZ2h0LCBzbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgdGhlIGBCUEZfU1lTQ0FMTGAgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbi4gVGhlIHBhdGNoIGluIGNvbnNpZGVyYXRpb24gaW50cm9kdWNlcyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQncyBhIHNhZmV0eSBuZXQg4oCTIGEgZ3VhcmRyYWlsIOKAkyBkZXNpZ25lZCB0byBwcmV2ZW50IHRoZSBkZWFsbG9jYXRpb24gb2YgbWVtb3J5IHRoYXQgZmFsbHMgYmVsb3cgdGhlIGBhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0YCBib3VuZGFyeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBob3cgdGhlIEJQRiBhcmVuYSBtYW5hZ2VzIGl0cyBtZW1vcnkgcmVzb3VyY2VzLiBBbmQgdGhpcyBjaGFuZ2UgaXMgdHJpZ2dlcmVkIGJ5IEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2Agb3IgdGhlIG5vbi1zbGVlcGFibGUgdmFyaWFudCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAuIEkgYmVsaWV2ZSBpdCdzIHRpbWUgdG8gdGVzdCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY3LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDo0Ny43MzE1NDgwMTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc1MjU2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXJlbmFfZnJlZV9wYWdlc1wiLFxuICAgIFwiYnBmX2FyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzX25vbl9zbGVlcGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBhcmVuYV9mcmVlX3BhZ2VzYCB0byBwcmV2ZW50IGZyZWVpbmcgbWVtb3J5IGJlbG93IHRoZSBhcmVuYSdzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc1wiLFxuICAgIFwiYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJ3MgdXNlciB2aXJ0dWFsIG1lbW9yeSBzdGFydCBhZGRyZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBhcmVuYSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zIGNhbGxpbmcgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowgs5mz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 15:35:28 +0000 UTC FinishedAt: 2026-07-17 15:44:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "01cea4ad-ad95-4db1-871c-9b7a61a056a6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "arena_free_pages", "bpf_arena_free_pages", "bpf_arena_free_pages_non_sleepable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NmE2MDg0M2JhMTFmNjlkMWU1NjM0MzNiMWYzYWI1NTVhZjhlOTFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXG5pbmRleCA4MGI3YjhhNjk0NDY0NS4uOTdhNWQ4ZDIxMjk1NWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuQEAgLTg1Myw2ICYjNDM7ODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcbiBcdHVhZGRyIFx1MDAyNj0gUEFHRV9NQVNLO1xuIFx0a2FkZHIgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoYXJlbmEpICYjNDM7IHVhZGRyO1xuIFx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXHUwMDNldXNlcl92bV9zdGFydCkgJiM0MzsgdWFkZHI7XG4mIzQzO1x0aWYgKGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnQpXG4mIzQzO1x0XHRyZXR1cm47XG4gXHR1YWRkcl9lbmQgPSBtaW4oYXJlbmEtXHUwMDNldXNlcl92bV9lbmQsIGZ1bGxfdWFkZHIgJiM0MzsgKHBhZ2VfY250IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSk7XG4gXHRpZiAoZnVsbF91YWRkciBcdTAwM2U9IHVhZGRyX2VuZClcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbmluZGV4IGRmMGUyMmQxYTI5YjEyLi5iMjQxYmJjZjU0YThhMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuQEAgLTEyLDE1ICYjNDM7MTIsMTcgQEBcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwmIzM0Oy5ic3MuXCYjMzQ7ICNuYW1lKSBfX2hpZGRlbiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSlcbiBcbiYjNDM7I2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbiYjNDM7I2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXHUwMDNjXHUwMDNjIDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgJiM0MzsgMSkpXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgQVJFTkFfVk1fU1RBUlQgKCgxdWxsIFx1MDAzY1x1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gc3RydWN0IHtcbiBcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJFTkEpO1xuIFx0X191aW50KG1hcF9mbGFncywgQlBGX0ZfTU1BUEFCTEUpO1xuIFx0X191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovXG4tI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCBcdTAwM2NcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiAmIzQzOyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cbi0jZWxzZVxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFx1MDAzY1x1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuLSNlbmRpZlxuJiM0MztcdF9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cbiB9IGFyZW5hIFNFQyhcJiMzNDsubWFwc1wmIzM0Oyk7XG4gXG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbkBAIC05Myw2ICYjNDM7OTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiYjNDM7aW50IGZyZWVfc2NhbGFyX2JlbG93X2FyZW5hKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHZvaWQgX19hcmVuYSAqcGFnZTEsICpwYWdlMiwgKnBhZ2UzO1xuJiM0MztcdF9fdTY0IGJhZF9hZGRyID0gQVJFTkFfVk1fU1RBUlQgLSBfX1BBR0VfU0laRTtcbiYjNDM7XG4mIzQzO1x0cGFnZTEgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4mIzQzO1x0aWYgKCFwYWdlMSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRwYWdlMiA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcbiYjNDM7XHRpZiAoIXBhZ2UyKVxuJiM0MztcdFx0cmV0dXJuIDI7XG4mIzQzO1xuJiM0MztcdHBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xuJiM0MztcdGlmIChwYWdlMylcbiYjNDM7XHRcdHJldHVybiAzO1xuJiM0MztcbiYjNDM7XHRicGZfYXJlbmFfZnJlZV9wYWdlcyhcdTAwMjZhcmVuYSwgKHZvaWQgX19hcmVuYSAqKWJhZF9hZGRyLCAxKTtcbiYjNDM7XG4mIzQzO1x0cGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4mIzQzO1x0aWYgKHBhZ2UzKVxuJiM0MztcdFx0cmV0dXJuIDQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAgICYjMzQ7YnBmX2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAgICYjMzQ7YnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBhcmVuYV9mcmVlX3BhZ2VzYCB0byBwcmV2ZW50IGZyZWVpbmcgbWVtb3J5IGJlbG93IHRoZSBhcmVuYSYjMzk7cyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NmE2MDg0M2JhMTFmNjlkMWU1NjM0MzNiMWYzYWI1NTVhZjhlOTFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FyZW5hLmMgYi9rZXJuZWwvYnBmL2FyZW5hLmMKaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2FyZW5hLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9hcmVuYS5jCkBAIC04NTMsNiAmIzQzOzg1Myw4IEBAIHN0YXRpYyB2b2lkIGFyZW5hX2ZyZWVfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsCiAJdWFkZHIgJmFtcDs9IFBBR0VfTUFTSzsKIAlrYWRkciA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChhcmVuYSkgJiM0MzsgdWFkZHI7CiAJZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtJmd0O3VzZXJfdm1fc3RhcnQpICYjNDM7IHVhZGRyOwomIzQzOwlpZiAoZnVsbF91YWRkciAmbHQ7IGFyZW5hLSZndDt1c2VyX3ZtX3N0YXJ0KQomIzQzOwkJcmV0dXJuOwogCXVhZGRyX2VuZCA9IG1pbihhcmVuYS0mZ3Q7dXNlcl92bV9lbmQsIGZ1bGxfdWFkZHIgJiM0MzsgKHBhZ2VfY250ICZsdDsmbHQ7IFBBR0VfU0hJRlQpKTsKIAlpZiAoZnVsbF91YWRkciAmZ3Q7PSB1YWRkcl9lbmQpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKaW5kZXggZGYwZTIyZDFhMjliMTIuLmIyNDFiYmNmNTRhOGEzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwpAQCAtMTIsMTUgJiM0MzsxMiwxNyBAQAogCiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKCYjMzQ7LmJzcy4mIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCiAKJiM0MzsjaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NAomIzQzOyNkZWZpbmUgQVJFTkFfVk1fU1RBUlQgKCgxdWxsICZsdDsmbHQ7IDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgJiM0MzsgMSkpCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCAmbHQ7Jmx0OyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKQomIzQzOyNlbmRpZgomIzQzOwogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSRU5BKTsKIAlfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9NTUFQQUJMRSk7CiAJX191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovCi0jaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NAotICAgICAgICBfX3Vsb25nKG1hcF9leHRyYSwgKDF1bGwgJmx0OyZsdDsgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiAmIzQzOyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KLSNlbHNlCi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCAmbHQ7Jmx0OyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICYjNDM7IDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqLwotI2VuZGlmCiYjNDM7CV9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KIH0gYXJlbmEgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQpAQCAtOTMsNiAmIzQzOzk1LDM0IEBAIGludCBiYXNpY19hbGxvYzEodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO19fc3VjY2VzcyBfX3JldHZhbCgwKQomIzQzO2ludCBmcmVlX3NjYWxhcl9iZWxvd19hcmVuYSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwl2b2lkIF9fYXJlbmEgKnBhZ2UxLCAqcGFnZTIsICpwYWdlMzsKJiM0MzsJX191NjQgYmFkX2FkZHIgPSBBUkVOQV9WTV9TVEFSVCAtIF9fUEFHRV9TSVpFOwomIzQzOwomIzQzOwlwYWdlMSA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcygmYW1wO2FyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApOwomIzQzOwlpZiAoIXBhZ2UxKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CXBhZ2UyID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKCZhbXA7YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7CiYjNDM7CWlmICghcGFnZTIpCiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsKJiM0MzsJcGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoJmFtcDthcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTsKJiM0MzsJaWYgKHBhZ2UzKQomIzQzOwkJcmV0dXJuIDM7CiYjNDM7CiYjNDM7CWJwZl9hcmVuYV9mcmVlX3BhZ2VzKCZhbXA7YXJlbmEsICh2b2lkIF9fYXJlbmEgKiliYWRfYWRkciwgMSk7CiYjNDM7CiYjNDM7CXBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKCZhbXA7YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7CiYjNDM7CWlmIChwYWdlMykKJiM0MzsJCXJldHVybiA0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBTRUMoJiMzNDtzb2NrZXQmIzM0OykKIF9fc3VjY2VzcyBfX3JldHZhbCgwKQogaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBBcmVuYSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGtlcm5lbC9icGYvYXJlbmEuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgbGluZToKCmBgYGMKCWZ1bGxfdWFkZHIgPSBjbGVhcl9sbzMyKGFyZW5hLSZndDt1c2VyX3ZtX3N0YXJ0KSAmIzQzOyB1YWRkcjsKJiM0MzsJaWYgKGZ1bGxfdWFkZHIgJmx0OyBhcmVuYS0mZ3Q7dXNlcl92bV9zdGFydCkKJiM0MzsJCXJldHVybjsKYGBgCgpSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRvIHRoZSBCUEYgYXJlbmEgY29kZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBjb25kaXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBiZWluZyBhZGRyZXNzZWQgaGVyZT8gVGhpcyBvdmVyZmxvdyBjaGVjayBzdWdnZXN0cyB0aGF0IGB1YWRkcmAgbWlnaHQsIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMsIGJlIGNhdXNpbmcgYGZ1bGxfdWFkZHJgIHRvIHdyYXAgYXJvdW5kLiBUaGF0IGtpbmQgb2YgYnVnIHdvdWxkIGJlIG5hc3R5LCBzbyB0aGlzIGlzIGxpa2VseSBhIGdvb2QgdGhpbmcuCgpOb3csIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGtlcm5lbC9icGYvYXJlbmEuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIGFzIHdlbGwuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzIGluIHRoZSBhcmVuYSBtYW5hZ2VtZW50LiBBcmUgdGhlcmUgb3RoZXIgcGxhY2VzIHRoaXMgaXNzdWUgY291bGQgc3VyZmFjZSwgb3IgaXMgdGhlIGZpeCBzZWxmLWNvbnRhaW5lZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zIGFuZCBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgaW50ZWdyYXRlZC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaW1wb3J0YW50IHBpZWNlIG9mIGhhcmRlbmluZywgc28gSSYjMzk7bGwgd2FudCB0byByZXZpZXcgdGhlIG9yaWdpbmFsIHByb2JsZW0gYW5kIHRoaXMgc29sdXRpb24gY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZW5hX2ZyZWVfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2FyZW5hLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jLTQ4LVxua2VybmVsL2JwZi9hcmVuYS5jOjQ5OnN0YXRpYyB2b2lkIGFyZW5hX2ZyZWVfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsIGJvb2wgc2xlZXBhYmxlKTtcbmtlcm5lbC9icGYvYXJlbmEuYy01MC1cbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmM9MjA3PXN0YXRpYyBpbnQgYXBwbHlfcmFuZ2VfY2xlYXJfY2IocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpkYXRhKVxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy0yMjYtXHQgKiBTa2lwIHRoZSBwZXItYXJlbmEgc2NyYXRjaCBwYWdlLiBBIGtlcm5lbCBmYXVsdCBvbiBhbiB1bmFsbG9jYXRlZCB1YWRkclxua2VybmVsL2JwZi9hcmVuYS5jOjIyNzpcdCAqIHNjcmF0Y2hlcyBpdHMgUFRFLiBBIGxhdGVyIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKCkgb3ZlciB0aGF0IHJhbmdlIHdhbGtzXG5rZXJuZWwvYnBmL2FyZW5hLmMtMjI4LVx0ICogaGVyZS4gV2l0aG91dCB0aGUgc2tpcCwgc2NyYXRjaF9wYWdlIHdvdWxkIGJlIGZyZWVkLlxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYz02NTk9c3RhdGljIGxvbmcgYXJlbmFfYWxsb2NfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQsIGludCBub2RlX2lkLFxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy03NjMtXHRcdGZsdXNoX3ZtYXBfY2FjaGUoa2Vybl92bV9zdGFydCAmIzQzOyB1YWRkcjMyLCBtYXBwZWQgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xua2VybmVsL2JwZi9hcmVuYS5jOjc2NDpcdFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgdWFkZHIzMiwgbWFwcGVkLCBzbGVlcGFibGUpO1xua2VybmVsL2JwZi9hcmVuYS5jLTc2NS1cdH1cbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmM9NzgwPXN0YXRpYyB2b2lkIHphcF9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudClcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtODM3LVxua2VybmVsL2JwZi9hcmVuYS5jOjgzODpzdGF0aWMgdm9pZCBhcmVuYV9mcmVlX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBib29sIHNsZWVwYWJsZSlcbmtlcm5lbC9icGYvYXJlbmEuYy04Mzkte1xuLS1cbmtlcm5lbC9icGYvYXJlbmEuYz0xMDY0PXZvaWQgKmJwZl9hcmVuYV9hbGxvY19wYWdlc19zbGVlcGFibGUodm9pZCAqcF9fbWFwLCB2b2lkICphZGRyX19pZ24sIHUzMiBwYWdlX2NudCxcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3NS1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMDc2Ol9fYnBmX2tmdW5jIHZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY250KVxua2VybmVsL2JwZi9hcmVuYS5jLTEwNzcte1xuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy0xMDgyLVx0XHRyZXR1cm47XG5rZXJuZWwvYnBmL2FyZW5hLmM6MTA4MzpcdGFyZW5hX2ZyZWVfcGFnZXMoYXJlbmEsIChsb25nKXB0cl9faWduLCBwYWdlX2NudCwgdHJ1ZSk7XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NC19XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NS1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMDg2OnZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Ny17XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jLTEwOTItXHRcdHJldHVybjtcbmtlcm5lbC9icGYvYXJlbmEuYzoxMDkzOlx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCBmYWxzZSk7XG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA5NC19XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTExMTI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMilcbmtlcm5lbC9icGYvYXJlbmEuYzoxMTEzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbmtlcm5lbC9icGYvYXJlbmEuYy0xMTE0LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTk2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBCUEYgQXJlbmEgUGFnZSBGcmVlaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXJlbmFfZnJlZV9wYWdlc2AuIE15IHByaW1hcnkgaW50ZXJlc3QgaGVyZSBpcyBob3cgdGhlIEJQRiBhcmVuYSBzeXN0ZW0gbWFuYWdlcyBpdHMgbWVtb3J5IGZyZWVpbmcuIEkmIzM5O3ZlIHNwb3R0ZWQgdGhhdCBgYXJlbmFfZnJlZV9wYWdlc2AgaXMgdGhlIGNvcmUgZnVuY3Rpb24gY2FsbGVkIGZyb20gYm90aCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgIGFuZCBpdHMgbm9uLXNsZWVwYWJsZSBjb3VudGVycGFydCwgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzX25vbl9zbGVlcGFibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgdGhlIGNyaXRpY2FsIHBvaW50IGluIHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBjeWNsZS4gTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IGBrZXJuZWwvYnBmL2FyZW5hLmNgIGlzIGV2ZW4gZW5hYmxlZCBpbiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IGFjdGl2YXRlcyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcmVuYVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MTk9aWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OgoKKipNeSBCUEYgRnV6emluZyBQbGFuKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGtleSBjb25maWcgaGVyZSwgYXNzdW1pbmcgd2UgYWxzbyBoYXZlIGBDT05GSUdfTU1VYCBhbmQgYENPTkZJR182NEJJVGAgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgYXMgd2l0aG91dCB0aGVzZSwgdGhlIEJQRiBzeXNjYWxsIHdvdWxkbiYjMzk7dCBiZSByZWxldmFudC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjb25kaXRpb24gYGZ1bGxfdWFkZHIgJmx0OyBhcmVuYS0mZ3Q7dXNlcl92bV9zdGFydGAuIFRoaXMgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gZ2V0IHRvIHdvcmsgb24gdGhpcy4KCk15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgYXJlbmFfZnJlZV9wYWdlc2AsIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AsIGFuZCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNyYWZ0IGlucHV0cyB0aGF0IHNwZWNpZmljYWxseSB0cnkgdG8gdHJpZ2dlciB0aGF0IGBmdWxsX3VhZGRyYCBjb25kaXRpb24uCgpCZWZvcmUgSSBjb21taXQgdG8gdGhpcyBmdXp6aW5nIGNhbXBhaWduLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhdCBwbGF5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgSEFWRV9FQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVx0aGVscFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz03Mz1jb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy03NS1cdGRlZmF1bHQgeVxua2VybmVsL2JwZi9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTc3LVx0aGVscFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz05Mj1jb25maWcgQlBGX0xTTVxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy05NC1cdGRlcGVuZHMgb24gQlBGX0VWRU5UU1xua2VybmVsL2JwZi9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTk2LVx0ZGVwZW5kcyBvbiBTRUNVUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDE1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjcKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gdGhlIG9uZSB0aGlua2luZyB0aHJvdWdoIHRoaXMgQlBGIGFyZW5hIG1lbW9yeSBpc3N1ZToKCioqQlBGIEFyZW5hIE1lbW9yeSBNYW5hZ2VtZW50IEVuaGFuY2VtZW50KioKClJpZ2h0LCBzbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgdGhlIGBCUEZfU1lTQ0FMTGAgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbi4gVGhlIHBhdGNoIGluIGNvbnNpZGVyYXRpb24gaW50cm9kdWNlcyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgYSBzYWZldHkgbmV0IOKAkyBhIGd1YXJkcmFpbCDigJMgZGVzaWduZWQgdG8gcHJldmVudCB0aGUgZGVhbGxvY2F0aW9uIG9mIG1lbW9yeSB0aGF0IGZhbGxzIGJlbG93IHRoZSBgYXJlbmEtJmd0O3VzZXJfdm1fc3RhcnRgIGJvdW5kYXJ5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHRvIGhvdyB0aGUgQlBGIGFyZW5hIG1hbmFnZXMgaXRzIG1lbW9yeSByZXNvdXJjZXMuIEFuZCB0aGlzIGNoYW5nZSBpcyB0cmlnZ2VyZWQgYnkgQlBGIHByb2dyYW1zIGNhbGxpbmcgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYCBvciB0aGUgbm9uLXNsZWVwYWJsZSB2YXJpYW50IGBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlYC4gSSBiZWxpZXZlIGl0JiMzOTtzIHRpbWUgdG8gdGVzdCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTU6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlcyYjMzQ7LAogICAgJiMzNDticGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJiMzOTtzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDoyOS42NDYyNTA3MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMxMjg0ODM4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgYXJlbmFfZnJlZV9wYWdlc2AgdG8gcHJldmVudCBmcmVlaW5nIG1lbW9yeSBiZWxvdyB0aGUgYXJlbmEncyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDoyOS42NDYzMzQxOThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NjM5MDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2YTYwODQzYmExMWY2OWQxZTU2MzQzM2IxZjNhYjU1NWFmOGU5MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTU6NDQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9hcmVuYS5jIGIva2VybmVsL2JwZi9hcmVuYS5jXFxuaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYXJlbmEuY1xcbisrKyBiL2tlcm5lbC9icGYvYXJlbmEuY1xcbkBAIC04NTMsNiArODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcXG4gXFx0dWFkZHIgXFx1MDAyNj0gUEFHRV9NQVNLO1xcbiBcXHRrYWRkciA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChhcmVuYSkgKyB1YWRkcjtcXG4gXFx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXFx1MDAzZXVzZXJfdm1fc3RhcnQpICsgdWFkZHI7XFxuK1xcdGlmIChmdWxsX3VhZGRyIFxcdTAwM2MgYXJlbmEtXFx1MDAzZXVzZXJfdm1fc3RhcnQpXFxuK1xcdFxcdHJldHVybjtcXG4gXFx0dWFkZHJfZW5kID0gbWluKGFyZW5hLVxcdTAwM2V1c2VyX3ZtX2VuZCwgZnVsbF91YWRkciArIChwYWdlX2NudCBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSk7XFxuIFxcdGlmIChmdWxsX3VhZGRyIFxcdTAwM2U9IHVhZGRyX2VuZClcXG4gXFx0XFx0cmV0dXJuO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuaW5kZXggZGYwZTIyZDFhMjliMTIuLmIyNDFiYmNmNTRhOGEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcXG5AQCAtMTIsMTUgKzEyLDE3IEBAXFxuIFxcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFxcXCIuYnNzLlxcXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxcbiBcXG4rI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcXG4rI2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXFx1MDAzY1xcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKVxcbisjZWxzZVxcbisjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCBcXHUwMDNjXFx1MDAzYyA0NCkgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICsgMSkpXFxuKyNlbmRpZlxcbitcXG4gc3RydWN0IHtcXG4gXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUkVOQSk7XFxuIFxcdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX01NQVBBQkxFKTtcXG4gXFx0X191aW50KG1heF9lbnRyaWVzLCAyKTsgLyogYXJlbmEgb2YgdHdvIHBhZ2VzIGNsb3NlIHRvIDMyLWJpdCBib3VuZGFyeSovXFxuLSNpZmRlZiBfX1RBUkdFVF9BUkNIX2FybTY0XFxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFxcdTAwM2NcXHUwMDNjIDMyKSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgKyAxKSk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cXG4tI2Vsc2VcXG4tICAgICAgICBfX3Vsb25nKG1hcF9leHRyYSwgKDF1bGwgXFx1MDAzY1xcdTAwM2MgNDQpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xcbi0jZW5kaWZcXG4rXFx0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xcbiB9IGFyZW5hIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4gXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG5AQCAtOTMsNiArOTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4raW50IGZyZWVfc2NhbGFyX2JlbG93X2FyZW5hKHZvaWQgKmN0eClcXG4re1xcbitcXHR2b2lkIF9fYXJlbmEgKnBhZ2UxLCAqcGFnZTIsICpwYWdlMztcXG4rXFx0X191NjQgYmFkX2FkZHIgPSBBUkVOQV9WTV9TVEFSVCAtIF9fUEFHRV9TSVpFO1xcbitcXG4rXFx0cGFnZTEgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xcbitcXHRpZiAoIXBhZ2UxKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdHBhZ2UyID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFxcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcXG4rXFx0aWYgKCFwYWdlMilcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcbitcXHRwYWdlMyA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XFxuK1xcdGlmIChwYWdlMylcXG4rXFx0XFx0cmV0dXJuIDM7XFxuK1xcbitcXHRicGZfYXJlbmFfZnJlZV9wYWdlcyhcXHUwMDI2YXJlbmEsICh2b2lkIF9fYXJlbmEgKiliYWRfYWRkciwgMSk7XFxuK1xcbitcXHRwYWdlMyA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XFxuK1xcdGlmIChwYWdlMylcXG4rXFx0XFx0cmV0dXJuIDQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gU0VDKFxcXCJzb2NrZXRcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gaW50IGJhc2ljX2FsbG9jMl9ub3NsZWVwKHZvaWQgKmN0eClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6MzAuNDkzODkyNjE4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzQ2NTE4ODc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBgYXJlbmFfZnJlZV9wYWdlc2AgdG8gcHJldmVudCBmcmVlaW5nIG1lbW9yeSBiZWxvdyB0aGUgYXJlbmEncyB1c2VyIHZpcnR1YWwgbWVtb3J5IHN0YXJ0IGFkZHJlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIGFyZW5hIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgY2FsbGluZyBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU2YTYwODQzYmExMWY2OWQxZTU2MzQzM2IxZjNhYjU1NWFmOGU5MWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxNTo0NDoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYXJlbmEuYyBiL2tlcm5lbC9icGYvYXJlbmEuY1xuaW5kZXggODBiN2I4YTY5NDQ2NDUuLjk3YTVkOGQyMTI5NTViIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9hcmVuYS5jXG4rKysgYi9rZXJuZWwvYnBmL2FyZW5hLmNcbkBAIC04NTMsNiArODUzLDggQEAgc3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCxcbiBcdHVhZGRyIFx1MDAyNj0gUEFHRV9NQVNLO1xuIFx0a2FkZHIgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoYXJlbmEpICsgdWFkZHI7XG4gXHRmdWxsX3VhZGRyID0gY2xlYXJfbG8zMihhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0KSArIHVhZGRyO1xuK1x0aWYgKGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnQpXG4rXHRcdHJldHVybjtcbiBcdHVhZGRyX2VuZCA9IG1pbihhcmVuYS1cdTAwM2V1c2VyX3ZtX2VuZCwgZnVsbF91YWRkciArIChwYWdlX2NudCBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCkpO1xuIFx0aWYgKGZ1bGxfdWFkZHIgXHUwMDNlPSB1YWRkcl9lbmQpXG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5pbmRleCBkZjBlMjJkMWEyOWIxMi4uYjI0MWJiY2Y1NGE4YTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbkBAIC0xMiwxNSArMTIsMTcgQEBcbiBcbiAjZGVmaW5lIHByaXZhdGUobmFtZSkgU0VDKFwiLmJzcy5cIiAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXG4gXG4rI2lmZGVmIF9fVEFSR0VUX0FSQ0hfYXJtNjRcbisjZGVmaW5lIEFSRU5BX1ZNX1NUQVJUICgoMXVsbCBcdTAwM2NcdTAwM2MgMzIpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKVxuKyNlbHNlXG4rI2RlZmluZSBBUkVOQV9WTV9TVEFSVCAoKDF1bGwgXHUwMDNjXHUwMDNjIDQ0KSB8ICh+MHUgLSBfX1BBR0VfU0laRSAqIDIgKyAxKSlcbisjZW5kaWZcbitcbiBzdHJ1Y3Qge1xuIFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUkVOQSk7XG4gXHRfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9NTUFQQUJMRSk7XG4gXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpOyAvKiBhcmVuYSBvZiB0d28gcGFnZXMgY2xvc2UgdG8gMzItYml0IGJvdW5kYXJ5Ki9cbi0jaWZkZWYgX19UQVJHRVRfQVJDSF9hcm02NFxuLSAgICAgICAgX191bG9uZyhtYXBfZXh0cmEsICgxdWxsIFx1MDAzY1x1MDAzYyAzMikgfCAofjB1IC0gX19QQUdFX1NJWkUgKiAyICsgMSkpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4tI2Vsc2Vcbi0gICAgICAgIF9fdWxvbmcobWFwX2V4dHJhLCAoMXVsbCBcdTAwM2NcdTAwM2MgNDQpIHwgKH4wdSAtIF9fUEFHRV9TSVpFICogMiArIDEpKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuLSNlbmRpZlxuK1x0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuIH0gYXJlbmEgU0VDKFwiLm1hcHNcIik7XG4gXG4gU0VDKFwic29ja2V0XCIpXG5AQCAtOTMsNiArOTUsMzQgQEAgaW50IGJhc2ljX2FsbG9jMSh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rU0VDKFwic3lzY2FsbFwiKVxuK19fc3VjY2VzcyBfX3JldHZhbCgwKVxuK2ludCBmcmVlX3NjYWxhcl9iZWxvd19hcmVuYSh2b2lkICpjdHgpXG4re1xuK1x0dm9pZCBfX2FyZW5hICpwYWdlMSwgKnBhZ2UyLCAqcGFnZTM7XG4rXHRfX3U2NCBiYWRfYWRkciA9IEFSRU5BX1ZNX1NUQVJUIC0gX19QQUdFX1NJWkU7XG4rXG4rXHRwYWdlMSA9IGJwZl9hcmVuYV9hbGxvY19wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMSwgTlVNQV9OT19OT0RFLCAwKTtcbitcdGlmICghcGFnZTEpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0cGFnZTIgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4rXHRpZiAoIXBhZ2UyKVxuK1x0XHRyZXR1cm4gMjtcbitcbitcdHBhZ2UzID0gYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAxLCBOVU1BX05PX05PREUsIDApO1xuK1x0aWYgKHBhZ2UzKVxuK1x0XHRyZXR1cm4gMztcbitcbitcdGJwZl9hcmVuYV9mcmVlX3BhZ2VzKFx1MDAyNmFyZW5hLCAodm9pZCBfX2FyZW5hICopYmFkX2FkZHIsIDEpO1xuK1xuK1x0cGFnZTMgPSBicGZfYXJlbmFfYWxsb2NfcGFnZXMoXHUwMDI2YXJlbmEsIE5VTEwsIDEsIE5VTUFfTk9fTk9ERSwgMCk7XG4rXHRpZiAocGFnZTMpXG4rXHRcdHJldHVybiA0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcInNvY2tldFwiKVxuIF9fc3VjY2VzcyBfX3JldHZhbCgwKVxuIGludCBiYXNpY19hbGxvYzJfbm9zbGVlcCh2b2lkICpjdHgpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozMC40OTM4OTY2MjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEzNjEwNDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEFyZW5hIENvZGUgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBga2VybmVsL2JwZi9hcmVuYS5jYC4gTG9va3MgbGlrZSBpdCdzIGFkZGluZyBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBhcmVuYV9mcmVlX3BhZ2VzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmU6XG5cbmBgYGNcblx0ZnVsbF91YWRkciA9IGNsZWFyX2xvMzIoYXJlbmEtXHUwMDNldXNlcl92bV9zdGFydCkgKyB1YWRkcjtcbitcdGlmIChmdWxsX3VhZGRyIFx1MDAzYyBhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0KVxuK1x0XHRyZXR1cm47XG5gYGBcblxuUmlnaHQgYXdheSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byB0aGUgQlBGIGFyZW5hIGNvZGUuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIHR3ZWFrOyBpdCdzIGludHJvZHVjaW5nIGEgbmV3IGNvbmRpdGlvbiBiZWZvcmUgZnJlZWluZyBwYWdlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIFdoYXQncyB0aGUgcG90ZW50aWFsIHByb2JsZW0gYmVpbmcgYWRkcmVzc2VkIGhlcmU/IFRoaXMgb3ZlcmZsb3cgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgdWFkZHJgIG1pZ2h0LCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLCBiZSBjYXVzaW5nIGBmdWxsX3VhZGRyYCB0byB3cmFwIGFyb3VuZC4gVGhhdCBraW5kIG9mIGJ1ZyB3b3VsZCBiZSBuYXN0eSwgc28gdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGtlcm5lbC9icGYvYXJlbmEuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBgYXJlbmFfZnJlZV9wYWdlc2AgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIGFyZW5hIG1hbmFnZW1lbnQuIEFyZSB0aGVyZSBvdGhlciBwbGFjZXMgdGhpcyBpc3N1ZSBjb3VsZCBzdXJmYWNlLCBvciBpcyB0aGUgZml4IHNlbGYtY29udGFpbmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBwcm9wZXJseSBpbnRlZ3JhdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWxseSBpbXBvcnRhbnQgcGllY2Ugb2YgaGFyZGVuaW5nLCBzbyBJJ2xsIHdhbnQgdG8gcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9ibGVtIGFuZCB0aGlzIHNvbHV0aW9uIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE1OjQ0OjM1LjAwNzUwOTcyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTc1OTgwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJlbmFfZnJlZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2FyZW5hLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9hcmVuYS5jLTQ4LVxcbmtlcm5lbC9icGYvYXJlbmEuYzo0OTpzdGF0aWMgdm9pZCBhcmVuYV9mcmVlX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBib29sIHNsZWVwYWJsZSk7XFxua2VybmVsL2JwZi9hcmVuYS5jLTUwLVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTIwNz1zdGF0aWMgaW50IGFwcGx5X3JhbmdlX2NsZWFyX2NiKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqZGF0YSlcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy0yMjYtXFx0ICogU2tpcCB0aGUgcGVyLWFyZW5hIHNjcmF0Y2ggcGFnZS4gQSBrZXJuZWwgZmF1bHQgb24gYW4gdW5hbGxvY2F0ZWQgdWFkZHJcXG5rZXJuZWwvYnBmL2FyZW5hLmM6MjI3OlxcdCAqIHNjcmF0Y2hlcyBpdHMgUFRFLiBBIGxhdGVyIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKCkgb3ZlciB0aGF0IHJhbmdlIHdhbGtzXFxua2VybmVsL2JwZi9hcmVuYS5jLTIyOC1cXHQgKiBoZXJlLiBXaXRob3V0IHRoZSBza2lwLCBzY3JhdGNoX3BhZ2Ugd291bGQgYmUgZnJlZWQuXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM9NjU5PXN0YXRpYyBsb25nIGFyZW5hX2FsbG9jX3BhZ2VzKHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hLCBsb25nIHVhZGRyLCBsb25nIHBhZ2VfY250LCBpbnQgbm9kZV9pZCxcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy03NjMtXFx0XFx0Zmx1c2hfdm1hcF9jYWNoZShrZXJuX3ZtX3N0YXJ0ICsgdWFkZHIzMiwgbWFwcGVkIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbmtlcm5lbC9icGYvYXJlbmEuYzo3NjQ6XFx0XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgdWFkZHIzMiwgbWFwcGVkLCBzbGVlcGFibGUpO1xcbmtlcm5lbC9icGYvYXJlbmEuYy03NjUtXFx0fVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTc4MD1zdGF0aWMgdm9pZCB6YXBfcGFnZXMoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEsIGxvbmcgdWFkZHIsIGxvbmcgcGFnZV9jbnQpXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtODM3LVxcbmtlcm5lbC9icGYvYXJlbmEuYzo4Mzg6c3RhdGljIHZvaWQgYXJlbmFfZnJlZV9wYWdlcyhzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSwgbG9uZyB1YWRkciwgbG9uZyBwYWdlX2NudCwgYm9vbCBzbGVlcGFibGUpXFxua2VybmVsL2JwZi9hcmVuYS5jLTgzOS17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM9MTA2ND12b2lkICpicGZfYXJlbmFfYWxsb2NfcGFnZXNfc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqYWRkcl9faWduLCB1MzIgcGFnZV9jbnQsXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3NS1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTA3NjpfX2JwZl9rZnVuYyB2b2lkIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA3Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Mi1cXHRcXHRyZXR1cm47XFxua2VybmVsL2JwZi9hcmVuYS5jOjEwODM6XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCB0cnVlKTtcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4NC19XFxua2VybmVsL2JwZi9hcmVuYS5jLTEwODUtXFxua2VybmVsL2JwZi9hcmVuYS5jOjEwODY6dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA4Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTA5Mi1cXHRcXHRyZXR1cm47XFxua2VybmVsL2JwZi9hcmVuYS5jOjEwOTM6XFx0YXJlbmFfZnJlZV9wYWdlcyhhcmVuYSwgKGxvbmcpcHRyX19pZ24sIHBhZ2VfY250LCBmYWxzZSk7XFxua2VybmVsL2JwZi9hcmVuYS5jLTEwOTQtfVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTExMTI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9hbGxvY19wYWdlcywgS0ZfQVJFTkFfUkVUIHwgS0ZfQVJFTkFfQVJHMilcXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTExMzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2FyZW5hX2ZyZWVfcGFnZXMsIEtGX0FSRU5BX0FSRzIpXFxua2VybmVsL2JwZi9hcmVuYS5jLTExMTQtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozNS43MDUxMTMzMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcwMTAwNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBBcmVuYSBQYWdlIEZyZWVpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYXJlbmFfZnJlZV9wYWdlc2AuIE15IHByaW1hcnkgaW50ZXJlc3QgaGVyZSBpcyBob3cgdGhlIEJQRiBhcmVuYSBzeXN0ZW0gbWFuYWdlcyBpdHMgbWVtb3J5IGZyZWVpbmcuIEkndmUgc3BvdHRlZCB0aGF0IGBhcmVuYV9mcmVlX3BhZ2VzYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBib3RoIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AgYW5kIGl0cyBub24tc2xlZXBhYmxlIGNvdW50ZXJwYXJ0LCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyB0aGUgY3JpdGljYWwgcG9pbnQgaW4gdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGN5Y2xlLiBOb3csIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGtlcm5lbC9icGYvYXJlbmEuY2AgaXMgZXZlbiBlbmFibGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi4gVGltZSB0byBjaGVjayB0aGUgY29uZmlncy4uLiBsZXQncyBzZWUgd2hhdCBhY3RpdmF0ZXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDozOC40NzUyMTY3MjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NDY2NTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyZW5hXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xOT1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBhcmVuYS5vIHJhbmdlX3RyZWUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6MzguNjkyNjkxOTM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTY4MTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKk15IEJQRiBGdXp6aW5nIFBsYW4qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUsIGFzc3VtaW5nIHdlIGFsc28gaGF2ZSBgQ09ORklHX01NVWAgYW5kIGBDT05GSUdfNjRCSVRgIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGFzIHdpdGhvdXQgdGhlc2UsIHRoZSBCUEYgc3lzY2FsbCB3b3VsZG4ndCBiZSByZWxldmFudC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZ1bG5lcmFiaWxpdHkgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjb25kaXRpb24gYGZ1bGxfdWFkZHIgXHUwMDNjIGFyZW5hLVx1MDAzZXVzZXJfdm1fc3RhcnRgLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIHJlYWxseSBuZWVkIHRvIGdldCB0byB3b3JrIG9uIHRoaXMuXG5cbk15IGluaXRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgYXJlbmFfZnJlZV9wYWdlc2AsIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AsIGFuZCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gY3JhZnQgaW5wdXRzIHRoYXQgc3BlY2lmaWNhbGx5IHRyeSB0byB0cmlnZ2VyIHRoYXQgYGZ1bGxfdWFkZHJgIGNvbmRpdGlvbi5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMgZnV6emluZyBjYW1wYWlnbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXQgcGxheS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDE1OjQ0OjQzLjExNDM3NjEwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUyMDI3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz03Mz1jb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTc1LVxcdGRlZmF1bHQgeVxcbmtlcm5lbC9icGYvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTc3LVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz05Mj1jb25maWcgQlBGX0xTTVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTk0LVxcdGRlcGVuZHMgb24gQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTk2LVxcdGRlcGVuZHMgb24gU0VDVVJJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTU6NDQ6NDMuNTE5NTk1NTU0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMTk0ODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSB0aGUgb25lIHRoaW5raW5nIHRocm91Z2ggdGhpcyBCUEYgYXJlbmEgbWVtb3J5IGlzc3VlOlxuXG4qKkJQRiBBcmVuYSBNZW1vcnkgTWFuYWdlbWVudCBFbmhhbmNlbWVudCoqXG5cblJpZ2h0LCBzbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgdGhlIGBCUEZfU1lTQ0FMTGAgZnVuY3Rpb25hbGl0eS4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbi4gVGhlIHBhdGNoIGluIGNvbnNpZGVyYXRpb24gaW50cm9kdWNlcyBhIHNwZWNpZmljIGNoZWNrIHdpdGhpbiB0aGUgYGFyZW5hX2ZyZWVfcGFnZXNgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQncyBhIHNhZmV0eSBuZXQg4oCTIGEgZ3VhcmRyYWlsIOKAkyBkZXNpZ25lZCB0byBwcmV2ZW50IHRoZSBkZWFsbG9jYXRpb24gb2YgbWVtb3J5IHRoYXQgZmFsbHMgYmVsb3cgdGhlIGBhcmVuYS1cdTAwM2V1c2VyX3ZtX3N0YXJ0YCBib3VuZGFyeS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB0byBob3cgdGhlIEJQRiBhcmVuYSBtYW5hZ2VzIGl0cyBtZW1vcnkgcmVzb3VyY2VzLiBBbmQgdGhpcyBjaGFuZ2UgaXMgdHJpZ2dlcmVkIGJ5IEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2Agb3IgdGhlIG5vbi1zbGVlcGFibGUgdmFyaWFudCBgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZWAuIEkgYmVsaWV2ZSBpdCdzIHRpbWUgdG8gdGVzdCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY3LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxNTo0NDo0Ny43MzE1NDgwMTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc1MjU2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXJlbmFfZnJlZV9wYWdlc1wiLFxuICAgIFwiYnBmX2FyZW5hX2ZyZWVfcGFnZXNcIixcbiAgICBcImJwZl9hcmVuYV9mcmVlX3BhZ2VzX25vbl9zbGVlcGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGBhcmVuYV9mcmVlX3BhZ2VzYCB0byBwcmV2ZW50IGZyZWVpbmcgbWVtb3J5IGJlbG93IHRoZSBhcmVuYSdzIHVzZXIgdmlydHVhbCBtZW1vcnkgc3RhcnQgYWRkcmVzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgYXJlbmEgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBjYWxsaW5nIGBicGZfYXJlbmFfZnJlZV9wYWdlc2AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhcmVuYV9mcmVlX3BhZ2VzXCIsXG4gICAgXCJicGZfYXJlbmFfZnJlZV9wYWdlc1wiLFxuICAgIFwiYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gYGFyZW5hX2ZyZWVfcGFnZXNgIHRvIHByZXZlbnQgZnJlZWluZyBtZW1vcnkgYmVsb3cgdGhlIGFyZW5hJ3MgdXNlciB2aXJ0dWFsIG1lbW9yeSBzdGFydCBhZGRyZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBhcmVuYSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zIGNhbGxpbmcgYGJwZl9hcmVuYV9mcmVlX3BhZ2VzYC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowgs5mz[1] Phase: Succeeded StartedAt: 2026-07-17 15:45:17 +0000 UTC FinishedAt: 2026-07-17 15:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 15:45:17 +0000 UTC FinishedAt: 2026-07-17 15:45:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2] Phase: Succeeded StartedAt: 2026-07-17 15:45:18 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 15:45:18 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 15:45:18 +0000 UTC FinishedAt: 2026-07-17 15:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 15:45:18 +0000 UTC FinishedAt: 2026-07-17 15:46:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowgs5mz/series-workflowgs5mz-convert-artifact-2718397437/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 15:46:28 +0000 UTC FinishedAt: 2026-07-17 16:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 15:46:28 +0000 UTC FinishedAt: 2026-07-17 16:14:50 +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:*11f2ea30-2d21-471c-803b-1aa7b7e6a626,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-workflowgs5mz/series-workflowgs5mz-convert-artifact-2718397437/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": "1350c70d-638e-4640-8881-475ed03a51d8", "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-workflowgs5mz/series-workflowgs5mz-build-action-3440139571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 15:46:28 +0000 UTC FinishedAt: 2026-07-17 16:14:40 +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:*11f2ea30-2d21-471c-803b-1aa7b7e6a626,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-workflowgs5mz/series-workflowgs5mz-convert-artifact-2718397437/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": "1350c70d-638e-4640-8881-475ed03a51d8", "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-workflowgs5mz/series-workflowgs5mz-build-action-3440139571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 16:14:50 +0000 UTC FinishedAt: 2026-07-17 16:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 16:14:50 +0000 UTC FinishedAt: 2026-07-17 16:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 16:14:50 +0000 UTC FinishedAt: 2026-07-17 16:15:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 16:14:50 +0000 UTC FinishedAt: 2026-07-17 16:14:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowgs5mz/series-workflowgs5mz-convert-artifact-1087402584/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 16:15:00 +0000 UTC FinishedAt: 2026-07-17 16:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 16:15:00 +0000 UTC FinishedAt: 2026-07-17 16:16:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1350c70d-638e-4640-8881-475ed03a51d8,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-workflowgs5mz/series-workflowgs5mz-build-action-3440139571/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-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 16:17:08 +0000 UTC FinishedAt: 2026-07-17 16:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 16:17:08 +0000 UTC FinishedAt: 2026-07-17 16:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 16:17:08 +0000 UTC FinishedAt: 2026-07-17 16:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 16:17:08 +0000 UTC FinishedAt: 2026-07-17 16:50:04 +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:*11f2ea30-2d21-471c-803b-1aa7b7e6a626,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-workflowgs5mz/series-workflowgs5mz-convert-artifact-1087402584/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": "5648f109-d754-4101-9881-ddb42f6a2e79", "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-workflowgs5mz/series-workflowgs5mz-build-action-2843483076/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 16:17:08 +0000 UTC FinishedAt: 2026-07-17 16:49:54 +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:*11f2ea30-2d21-471c-803b-1aa7b7e6a626,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-workflowgs5mz/series-workflowgs5mz-convert-artifact-1087402584/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": "5648f109-d754-4101-9881-ddb42f6a2e79", "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-workflowgs5mz/series-workflowgs5mz-build-action-2843483076/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 16:50:04 +0000 UTC FinishedAt: 2026-07-17 16:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 16:50:04 +0000 UTC FinishedAt: 2026-07-17 16:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 16:50:04 +0000 UTC FinishedAt: 2026-07-17 16:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 16:50:04 +0000 UTC FinishedAt: 2026-07-17 16:52:07 +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:*5648f109-d754-4101-9881-ddb42f6a2e79,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-workflowgs5mz/series-workflowgs5mz-build-action-2843483076/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-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},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:*1350c70d-638e-4640-8881-475ed03a51d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5648f109-d754-4101-9881-ddb42f6a2e79,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-workflowgs5mz/series-workflowgs5mz-build-action-3440139571/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-workflowgs5mz/series-workflowgs5mz-build-action-2843483076/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 16:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 16:52:22 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},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-workflowgs5mz/series-workflowgs5mz-convert-artifact-2383063089/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 16:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 16:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 16:52:17 +0000 UTC FinishedAt: 2026-07-17 16:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 16:52:27 +0000 UTC FinishedAt: 2026-07-17 19:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgs5mz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["arena_free_pages","bpf_arena_free_pages","bpf_arena_free_pages_non_sleepable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d91ea01185656ac3ee63c5f9f6f8bde3c746b3d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"01cea4ad-ad95-4db1-871c-9b7a61a056a6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 16:52:27 +0000 UTC FinishedAt: 2026-07-17 19:54:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1350c70d-638e-4640-8881-475ed03a51d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5648f109-d754-4101-9881-ddb42f6a2e79,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-workflowgs5mz/series-workflowgs5mz-build-action-3440139571/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-workflowgs5mz/series-workflowgs5mz-build-action-2843483076/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-workflowgs5mz/series-workflowgs5mz-convert-artifact-2383063089/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,}