[Patch] Fortran/OpenMP: Add parsing support for spatial dimensions
Tobias Burnus <[email protected]> Sun, 19 Jul 2026 20:21:15 +0200
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------3ucEhVCS4Xix0ekOx7wDyM8q Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The attached patch adds parsing support for the following features: * strict/relaxed modifiers to thread_limit and num_threads clauses (default is 'relaxed') * supporting a list of arguments for num_threads This is to set the number of threads also for nested parallels; the OMP_NUM_THREADS env var already supports this. * Spatial dimension support, e.g. 'num_teams(dim(3) : 32, 32, 32)', with the num_teams, thread_limit, and num_threads clauses. (this implies 'strict', unless overridden). When using any of the new features (but the relaxed modifier), a 'sorry, unimplemented' is printed. Comments before I commit this? Tobias --------------3ucEhVCS4Xix0ekOx7wDyM8q Content-Type: text/x-patch; charset=UTF-8; name="spatial-dim-fortran.diff" Content-Disposition: attachment; filename="spatial-dim-fortran.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbi9PcGVuTVA6IEFkZCBwYXJzaW5nIHN1cHBvcnQgZm9yIHNwYXRpYWwgZGltZW5z aW9ucwoKQWRkcyAnZGltKC4uLiknIG1vZGlmaWVyIHBhcnNpbmcgZm9yIHNwYXRpYWwgZGlt ZW5zaW9ucyB0byB0aGUgbnVtX3RlYW1zLAp0aHJlYWRfbGltaXQsIGFuZCBudW1fdGhyZWFk cyBjbGF1c2VzLgoKQWRkIHN0cmljdCArIHJlbGF4ZWQgbW9kaWZpZXIgc3VwcG9ydCB0byB0 aGUgdGhyZWFkX2xpbWl0IGFuZCBudW1fdGhyZWFkcwpjbGF1c2VzLiBbRm9yIHRlYW1zLCB0 aGUgZWZmZWN0IG9mIHN0cmljdC9yZWxheGVkIGlzIHByb3ZpZGVkIGJ5IHRoZQpsb3dlcl9i b3VuZCBmZWF0dXJlLl0KCkZvciBudW1fdGhyZWFkcywgc3VwcG9ydCBzcGVjaWZpeWluZyBt dWx0aXBsZSB2YWx1ZXMgLSB0byBiZSBhcHBsaWNhYmxlCmZvciBuZXN0ZWQgcGFyYWxsZWwg Y29uc3RydWN0cy4KCk5PVEU6IEFsbCBhZGRlZCBmZWF0dXJlcyAoYnV0ICdyZWxheGVkJykg d2lsbCBmYWlsIGFmdGVyIHBhcnNpbmcgd2l0aAphICdzb3JyeSwgdW5pbXBsZW1lbnRlZCcg YXMgb25seSB0aGUgcGFyc2luZyBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGFuZApub3QgdGhl IGFjdHVhbCBmZWF0dXJlLgoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogZHVtcC1wYXJz ZS10cmVlLmNjIChzaG93X29tcF9jbGF1c2VzKTogSGFuZGxlIHNwYXRpYWwgZGltZW5zaW9u CglpbiBudW1fdGVhbXMgYW5kIGl0IGFuZCBzdHJpY3QvcmVsYXhlZCBpbiB0aHJlYWRfbGlt aXRzIGFuZAoJbnVtX3RocmVhZHMuCgkqIHRyYW5zLW9wZW5tcC5jYyAoZ2ZjX3RyYW5zX29t cF9jbGF1c2VzLCBnZmNfc3BsaXRfb21wX2NsYXVzZXMpOgoJZ2ZjX3RyYW5zX29tcF90YXJn ZXQpOiBMaWtld2lzZS4KCSogb3Blbm1wLmNjIChnZmNfZnJlZV9vbXBfY2xhdXNlcywgZ2Zj X21hdGNoX29tcF9jbGF1c2VzLAoJcmVzb2x2ZV9vbXBfY2xhdXNlcyk6IExpa2V3aXNlLgoJ KG1hdGNoX29tcF9vYWNjX2V4cHJfbGlzdCk6IFJldHVybiBjdXJyZW50IGxvY3VzIGZvciBh IHBhcnNlCglmYWlsIGluc3RlYWQgb2YgcmVzZXR0aW5nIHRoZSBsb2N1cy4KCSogZ2ZvcnRy YW4uaCAoZ2ZjX29tcF9jbGF1c2VzKTogQ2hhbmdlZCBnZmNfZXhwciBudW1fdGhyZWFkcywK CW51bV90ZWFtc19sb3dlciwgbnVtX3RlYW1zX3VwcGVyLCBhbmQgdGhyZWFkX2xpbWl0IHRv CglnZmNfZXhwcl9saXN0IG51bV90aHJlYWRzX2xpc3QsIG51bV90ZWFtc19saXN0LCBhbmQg dGhyZWFkX2xpbWl0X2xpc3QuCglBZGQgdGhyZWFkX2xpbWl0X3N0cmljdCwgbnVtX3RocmVh ZHNfc3RyaWN0LCBudW1fdGVhbXNfZGltcywKCXRocmVhZF9saW1pdF9kaW1zLCBhbmQgbnVt X3RocmVhZHNfZGltcy4KCSogZnJvbnRlbmQtcGFzc2VzLmNjIChnZmNfY29kZV93YWxrZXIp OiBVcGRhdGUgZm9yIHRoaXMgY2hhbmdlLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJ KiBnZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0xLmY5MDogTmV3IHRlc3Qu CgkqIGdmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkwOiBOZXcgdGVz dC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTA6IE5ldyB0 ZXN0LgoKIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyAgICAgICAgICAgICAgICAg ICAgIHwgIDYwICsrKy0KIGdjYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nlcy5jYyAgICAgICAg ICAgICAgICAgICAgIHwgIDEzICstCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMDEgKysrKysrKysrKysrKysrKysrLS0t CiBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgICAgICAgICAgICAgICAgICAgICAgICB8 IDEwNiArKysrKy0tLQogLi4uL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25z LTEuZjkwICAgICAgfCAxMTYgKysrKysrKysKIC4uLi9nZm9ydHJhbi5kZy9nb21wL3NwYXRp YWwtZGltZW5zaW9ucy0yLmY5MCAgICAgIHwgIDIyICsrCiAuLi4vZ2ZvcnRyYW4uZGcvZ29t cC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTAgICAgICB8IDI1MiArKysrKysrKysrKysrKysr KwogOCBmaWxlcyBjaGFuZ2VkLCA3OTQgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjIGIvZ2NjL2Zv cnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCmluZGV4IDVmMDU4Y2RjODMwLi4zZjFiMzViNzE1 YSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCisrKyBiL2dj Yy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYwpAQCAtMTg5OCwxMCArMTg5OCwyNCBAQCBz aG93X29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzKQogICAgICAg c2hvd19leHByIChvbXBfY2xhdXNlcy0+ZmluYWxfZXhwcik7CiAgICAgICBmcHV0YyAoJykn LCBkdW1wZmlsZSk7CiAgICAgfQotICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzKQor ICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzX2xpc3QpCiAgICAgewogICAgICAgZnB1 dHMgKCIgTlVNX1RIUkVBRFMoIiwgZHVtcGZpbGUpOwotICAgICAgc2hvd19leHByIChvbXBf Y2xhdXNlcy0+bnVtX3RocmVhZHMpOworICAgICAgaWYgKG9tcF9jbGF1c2VzLT5udW1fdGhy ZWFkc19zdHJpY3QpCisJZnB1dHMgKCJTVFJJQ1QiLCBkdW1wZmlsZSk7CisgICAgICBpZiAo b21wX2NsYXVzZXMtPm51bV90aHJlYWRzX3N0cmljdCAmJiBvbXBfY2xhdXNlcy0+bnVtX3Ro cmVhZHNfZGltcykKKwlmcHV0YyAoJywnLCBkdW1wZmlsZSk7CisgICAgICBpZiAob21wX2Ns YXVzZXMtPm51bV90aHJlYWRzX2RpbXMpCisJZnB1dHMgKCJESU1TKCkiLCBkdW1wZmlsZSk7 CisgICAgICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzX3N0cmljdCB8fCBvbXBfY2xh dXNlcy0+bnVtX3RocmVhZHNfZGltcykKKwlmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisgICAg ICBnZmNfZXhwcl9saXN0ICpudDsKKyAgICAgIGZvciAobnQgPSBvbXBfY2xhdXNlcy0+bnVt X3RocmVhZHNfbGlzdDsgbnQ7IG50ID0gbnQtPm5leHQpCisJeworCSAgc2hvd19leHByIChu dC0+ZXhwcik7CisJICBpZiAobnQtPm5leHQpCisJICAgIGZwdXRzICgiLCAiLCBkdW1wZmls ZSk7CisJfQogICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogICAgIH0KICAgaWYgKG9t cF9jbGF1c2VzLT5hc3luYykKQEAgLTIxOTksMTUgKzIyMTMsMjkgQEAgc2hvd19vbXBfY2xh dXNlcyAoZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcykKIAl9CiAgICAgICBmcHJpbnRm IChkdW1wZmlsZSwgIiBCSU5EKCVzKSIsIHR5cGUpOwogICAgIH0KLSAgaWYgKG9tcF9jbGF1 c2VzLT5udW1fdGVhbXNfdXBwZXIpCisgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xp c3QpCiAgICAgewogICAgICAgZnB1dHMgKCIgTlVNX1RFQU1TKCIsIGR1bXBmaWxlKTsKLSAg ICAgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyKQorICAgICAgaWYgKG9tcF9j bGF1c2VzLT5udW1fdGVhbXNfZGltcykKIAl7Ci0JICBzaG93X2V4cHIgKG9tcF9jbGF1c2Vz LT5udW1fdGVhbXNfbG93ZXIpOwotCSAgZnB1dGMgKCc6JywgZHVtcGZpbGUpOworCSAgZnB1 dHMgKCJESU1TKCk6IiwgZHVtcGZpbGUpOworCSAgZ2ZjX2V4cHJfbGlzdCAqbnQ7CisJICBm b3IgKG50ID0gb21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OyBudDsgbnQgPSBudC0+bmV4 dCkKKwkgICB7CisJICAgICBzaG93X2V4cHIgKG50LT5leHByKTsKKwkgICAgIGlmIChudC0+ bmV4dCkKKwkgICAgICAgZnB1dHMgKCIsICIsIGR1bXBmaWxlKTsKKwkgICB9CisJfQorICAg ICAgZWxzZQorCXsKKwkgIHNob3dfZXhwciAob21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0 LT5leHByKTsKKwkgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQpCisJ ICAgIHsKKwkgICAgICBmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisJICAgICAgc2hvd19leHBy IChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQtPmV4cHIpOworCSAgICB9CiAJ fQotICAgICAgc2hvd19leHByIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyKTsKICAg ICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9CiAgIGlmIChvbXBfY2xhdXNlcy0+ ZGV2aWNlKQpAQCAtMjIxOCwxMCArMjI0NiwyNCBAQCBzaG93X29tcF9jbGF1c2VzIChnZmNf b21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzKQogICAgICAgc2hvd19leHByIChvbXBfY2xhdXNl cy0+ZGV2aWNlKTsKICAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9Ci0gIGlm IChvbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0KQorICBpZiAob21wX2NsYXVzZXMtPnRocmVh ZF9saW1pdF9saXN0KQogICAgIHsKICAgICAgIGZwdXRzICgiIFRIUkVBRF9MSU1JVCgiLCBk dW1wZmlsZSk7Ci0gICAgICBzaG93X2V4cHIgKG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXQp OworICAgICAgaWYgKG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0KQorCWZwdXRz ICgiU1RSSUNUIiwgZHVtcGZpbGUpOworICAgICAgaWYgKG9tcF9jbGF1c2VzLT50aHJlYWRf bGltaXRfc3RyaWN0ICYmIG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfZGltcykKKwlmcHV0 YyAoJywnLCBkdW1wZmlsZSk7CisgICAgICBpZiAob21wX2NsYXVzZXMtPnRocmVhZF9saW1p dF9kaW1zKQorCWZwdXRzICgiRElNUygpIiwgZHVtcGZpbGUpOworICAgICAgaWYgKG9tcF9j bGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0IHx8IG9tcF9jbGF1c2VzLT50aHJlYWRfbGlt aXRfZGltcykKKwlmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisgICAgICBnZmNfZXhwcl9saXN0 ICpudDsKKyAgICAgIGZvciAobnQgPSBvbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0X2xpc3Q7 IG50OyBudCA9IG50LT5uZXh0KQorCXsKKwkgIHNob3dfZXhwciAobnQtPmV4cHIpOworCSAg aWYgKG50LT5uZXh0KQorCSAgICBmcHV0cyAoIiwgIiwgZHVtcGZpbGUpOworCX0KICAgICAg IGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9CiAgIGlmIChvbXBfY2xhdXNlcy0+ZGlz dF9zY2hlZF9raW5kICE9IE9NUF9TQ0hFRF9OT05FKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy YW4vZnJvbnRlbmQtcGFzc2VzLmNjIGIvZ2NjL2ZvcnRyYW4vZnJvbnRlbmQtcGFzc2VzLmNj CmluZGV4IDkyNjc4MzEwZmZkLi5mZDM0ZjBjMTkxMiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRy YW4vZnJvbnRlbmQtcGFzc2VzLmNjCisrKyBiL2djYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nl cy5jYwpAQCAtNTcwOSwxNCArNTcwOSwxMCBAQCBnZmNfY29kZV93YWxrZXIgKGdmY19jb2Rl ICoqYywgd2Fsa19jb2RlX2ZuX3QgY29kZWZuLCB3YWxrX2V4cHJfZm5fdCBleHByZm4sCiAJ CSAgZm9yIChpZHggPSAwOyBpZHggPCBPTVBfSUZfTEFTVDsgaWR4KyspCiAJCSAgICBXQUxL X1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPmlmX2V4cHJzW2lkeF0pOwogCQkgIFdB TEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+ZmluYWxfZXhwcik7Ci0JCSAgV0FM S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGhyZWFkcyk7CiAJCSAgV0FM S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5jaHVua19zaXplKTsKIAkJICBXQUxL X1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPnNhZmVsZW5fZXhwcik7CiAJCSAgV0FM S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5zaW1kbGVuX2V4cHIpOwotCQkgIFdB TEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyKTsKLQkJ ICBXQUxLX1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPm51bV90ZWFtc191cHBlcik7 CiAJCSAgV0FMS19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5kZXZpY2UpOwotCQkg IFdBTEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0KTsKIAkJ ICBXQUxLX1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPmRpc3RfY2h1bmtfc2l6ZSk7 CiAJCSAgV0FMS19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5ncmFpbnNpemUpOwog CQkgIFdBTEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+aGludCk7CkBAIC01NzI2 LDYgKzU3MjIsMTUgQEAgZ2ZjX2NvZGVfd2Fsa2VyIChnZmNfY29kZSAqKmMsIHdhbGtfY29k ZV9mbl90IGNvZGVmbiwgd2Fsa19leHByX2ZuX3QgZXhwcmZuLAogCQkgIFdBTEtfU1VCRVhQ UiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+ZHluX2dyb3VwcHJpdmF0ZSk7CiAJCSAgV0FMS19T VUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5ub3ZhcmlhbnRzKTsKIAkJICBXQUxLX1NV QkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPm5vY29udGV4dCk7CisJCSAgZ2ZjX2V4cHJf bGlzdCAqZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdDsKKwkJICBm b3IgKCA7IGVsOyBlbCA9IGVsLT5uZXh0KQorCQkgICAgV0FMS19TVUJFWFBSIChlbC0+ZXhw cik7CisJCSAgZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfbGlzdDsK KwkJICBmb3IgKCA7IGVsOyBlbCA9IGVsLT5uZXh0KQorCQkgICAgV0FMS19TVUJFWFBSIChl bC0+ZXhwcik7CisJCSAgZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGhyZWFkc19s aXN0OworCQkgIGZvciAoIDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICBXQUxLX1NVQkVY UFIgKGVsLT5leHByKTsKIAkJICBmb3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUgKGxp c3RfdHlwZXMpOyBpZHgrKykKIAkJICAgIGZvciAobiA9IGNvLT5leHQub21wX2NsYXVzZXMt Pmxpc3RzW2xpc3RfdHlwZXNbaWR4XV07CiAJCQkgbjsgbiA9IG4tPm5leHQpCmRpZmYgLS1n aXQgYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApp bmRleCBkZjk4NzU3NmZmZi4uNDhkZGQ5YTcyZDUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu L2dmb3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApAQCAtMTcwOSwxNCAr MTcwOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX2NsYXVzZXMKICAgc3RydWN0IGdm Y19leHByICppZl9leHByc1tPTVBfSUZfTEFTVF07CiAgIHN0cnVjdCBnZmNfZXhwciAqc2Vs Zl9leHByOwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmZpbmFsX2V4cHI7Ci0gIHN0cnVjdCBnZmNf ZXhwciAqbnVtX3RocmVhZHM7CisgIHN0cnVjdCBnZmNfZXhwcl9saXN0ICpudW1fdGhyZWFk c19saXN0OwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmNodW5rX3NpemU7CiAgIHN0cnVjdCBnZmNf ZXhwciAqc2FmZWxlbl9leHByOwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKnNpbWRsZW5fZXhwcjsK LSAgc3RydWN0IGdmY19leHByICpudW1fdGVhbXNfbG93ZXI7Ci0gIHN0cnVjdCBnZmNfZXhw ciAqbnVtX3RlYW1zX3VwcGVyOworICBzdHJ1Y3QgZ2ZjX2V4cHJfbGlzdCAqbnVtX3RlYW1z X2xpc3Q7CiAgIHN0cnVjdCBnZmNfZXhwciAqZGV2aWNlOwotICBzdHJ1Y3QgZ2ZjX2V4cHIg KnRocmVhZF9saW1pdDsKKyAgc3RydWN0IGdmY19leHByX2xpc3QgKnRocmVhZF9saW1pdF9s aXN0OwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmdyYWluc2l6ZTsKICAgc3RydWN0IGdmY19leHBy ICpmaWx0ZXI7CiAgIHN0cnVjdCBnZmNfZXhwciAqaGludDsKQEAgLTE3NDcsNiArMTc0Niw4 IEBAIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfY2xhdXNlcwogICB1bnNpZ25lZCBjb250YWlu c190ZWFtc19jb25zdHJ1Y3Q6MSwgdGFyZ2V0X2ZpcnN0X3N0X2lzX3RlYW1zX29yX21ldGE6 MTsKICAgdW5zaWduZWQgY29udGFpbmVkX2luX3RhcmdldF9jb25zdHJ1Y3Q6MSwgaW5kaXJl Y3Q6MTsKICAgdW5zaWduZWQgZnVsbDoxLCBlcnJvbmVvdXM6MTsKKyAgdW5zaWduZWQgdGhy ZWFkX2xpbWl0X3N0cmljdDoxLCBudW1fdGhyZWFkc19zdHJpY3Q6MTsKKyAgdW5zaWduZWQg bnVtX3RlYW1zX2RpbXM6MSwgdGhyZWFkX2xpbWl0X2RpbXM6MSwgbnVtX3RocmVhZHNfZGlt czoxOwogICBFTlVNX0JJVEZJRUxEIChnZmNfb21wX3NjaGVkX2tpbmQpIHNjaGVkX2tpbmQ6 MzsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9kZXZpY2VfdHlwZSkgZGV2aWNlX3R5cGU6 MjsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9tZW1vcmRlcikgbWVtb3JkZXI6MzsKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2djYy9mb3J0cmFuL29wZW5tcC5j YwppbmRleCA2NDM1NTk3MWQ5ZS4uZmYwMjFhNjBmZTAgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0 cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAgLTE4OCwxNSAr MTg4LDExIEBAIGdmY19mcmVlX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKmMpCiAg ICAgZ2ZjX2ZyZWVfZXhwciAoYy0+aWZfZXhwcnNbaV0pOwogICBnZmNfZnJlZV9leHByIChj LT5zZWxmX2V4cHIpOwogICBnZmNfZnJlZV9leHByIChjLT5maW5hbF9leHByKTsKLSAgZ2Zj X2ZyZWVfZXhwciAoYy0+bnVtX3RocmVhZHMpOwogICBnZmNfZnJlZV9leHByIChjLT5jaHVu a19zaXplKTsKICAgZ2ZjX2ZyZWVfZXhwciAoYy0+c2FmZWxlbl9leHByKTsKICAgZ2ZjX2Zy ZWVfZXhwciAoYy0+c2ltZGxlbl9leHByKTsKLSAgZ2ZjX2ZyZWVfZXhwciAoYy0+bnVtX3Rl YW1zX2xvd2VyKTsKLSAgZ2ZjX2ZyZWVfZXhwciAoYy0+bnVtX3RlYW1zX3VwcGVyKTsKICAg Z2ZjX2ZyZWVfZXhwciAoYy0+ZGV2aWNlKTsKICAgZ2ZjX2ZyZWVfZXhwciAoYy0+ZHluX2dy b3VwcHJpdmF0ZSk7Ci0gIGdmY19mcmVlX2V4cHIgKGMtPnRocmVhZF9saW1pdCk7CiAgIGdm Y19mcmVlX2V4cHIgKGMtPmRpc3RfY2h1bmtfc2l6ZSk7CiAgIGdmY19mcmVlX2V4cHIgKGMt PmdyYWluc2l6ZSk7CiAgIGdmY19mcmVlX2V4cHIgKGMtPmhpbnQpOwpAQCAtMjE2LDYgKzIx Miw5IEBAIGdmY19mcmVlX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKmMpCiAgIGZv ciAoZW51bSBnZmNfb21wX2xpc3RfdHlwZSB0ID0gT01QX0xJU1RfRklSU1Q7IHQgPCBPTVBf TElTVF9OVU07CiAgICAgICAgdCA9IGdmY19vbXBfbGlzdF90eXBlICh0ICsgMSkpCiAgICAg Z2ZjX2ZyZWVfb21wX25hbWVsaXN0IChjLT5saXN0c1t0XSwgdCk7CisgIGdmY19mcmVlX2V4 cHJfbGlzdCAoYy0+bnVtX3RlYW1zX2xpc3QpOworICBnZmNfZnJlZV9leHByX2xpc3QgKGMt PnRocmVhZF9saW1pdF9saXN0KTsKKyAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT5udW1fdGhy ZWFkc19saXN0KTsKICAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT53YWl0X2xpc3QpOwogICBn ZmNfZnJlZV9leHByX2xpc3QgKGMtPnRpbGVfbGlzdCk7CiAgIGdmY19mcmVlX2V4cHJfbGlz dCAoYy0+c2l6ZXNfbGlzdCk7CkBAIC04NDYsOCArODQ1LDcgQEAgbWF0Y2hfb21wX29hY2Nf ZXhwcl9saXN0IChjb25zdCBjaGFyICpzdHIsIGdmY19leHByX2xpc3QgKipsaXN0LAogCiAg IG9sZF9sb2MgPSBnZmNfY3VycmVudF9sb2N1czsKIAotICBtID0gZ2ZjX21hdGNoIChzdHIp OwotICBpZiAobSAhPSBNQVRDSF9ZRVMpCisgIGlmIChzdHIgJiYgKG0gPSBnZmNfbWF0Y2gg KHN0cikpICE9IE1BVENIX1lFUykKICAgICByZXR1cm4gbTsKIAogICBmb3IgKDs7KQpAQCAt NDEwNSwzMCArNDEwMywxNjEgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2Ns YXVzZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAkgICAgICBjb250aW51ZTsKIAkg ICAgfQogCSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9OVU1fVEVBTVMpCi0JICAgICAgJiYg KG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWMtPm51bV90ZWFtc191cHBlciwgIm51bV90 ZWFtcyIsCi0JCQkJCSAgICB0cnVlKSkgIT0gTUFUQ0hfTk8pCisJICAgICAgJiYgKG0gPSBn ZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWMtPm51bV90ZWFtc19saXN0LAorCQkJCQkgICAgIm51 bV90ZWFtcyIsIHRydWUpKSAhPSBNQVRDSF9OTykKIAkgICAgewogCSAgICAgIGlmIChtID09 IE1BVENIX0VSUk9SKQogCQlnb3RvIGVycm9yOwotCSAgICAgIGlmIChnZmNfbWF0Y2ggKCIl ZSAiLCAmYy0+bnVtX3RlYW1zX3VwcGVyKSAhPSBNQVRDSF9ZRVMpCi0JCWdvdG8gZXJyb3I7 Ci0JICAgICAgaWYgKGdmY19wZWVrX2FzY2lpX2NoYXIgKCkgPT0gJzonKQorCSAgICAgIGdm Y19leHByICpleHByOworCSAgICAgIGlmIChnZmNfbWF0Y2ggKCJkaW1zICggJWUgKSA6ICIs ICZleHByKSA9PSBNQVRDSF9ZRVMKKwkJICAmJiBtYXRjaF9vbXBfb2FjY19leHByX2xpc3Qg KE5VTEwsICZjLT5udW1fdGVhbXNfbGlzdCwKKwkJCQkJICAgICAgIGZhbHNlLCB0cnVlKSA9 PSBNQVRDSF9ZRVMpCisJCXsKKwkJICBpbnQgbnVtID0gMDsKKwkJICBnZmNfZXhwcl9saXN0 ICplbDsKKwkJICBmb3IgKGVsID0gYy0+bnVtX3RlYW1zX2xpc3Q7IGVsOyBlbCA9IGVsLT5u ZXh0KQorCQkgICAgKytudW07CisJCSAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChleHByKQor CQkgICAgICB8fCBleHByLT50cy50eXBlICE9IEJUX0lOVEVHRVIKKwkJICAgICAgfHwgZXhw ci0+cmFuayAhPSAwCisJCSAgICAgIHx8IGV4cHItPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNU QU5UCisJCSAgICAgIHx8IG1wel9zZ24gKGV4cHItPnZhbHVlLmludGVnZXIpIDw9IDApCisJ CSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBv c2l0aXZlIGludGVnZXIgIgorCQkJCSAiYXQgJUwiLCAmZXhwci0+d2hlcmUpOworCQkgICAg ICBnb3RvIGVycm9yOworCQkgICAgfQorCQkgIGlmIChtcHpfY21wX3NpIChleHByLT52YWx1 ZS5pbnRlZ2VyLCBudW0pICE9IDApCisJCSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIlRo ZSBudW1iZXIgb2YgYXJndW1lbnRzICglZCkgbXVzdCBiZSB0aGUgc2FtZSIKKwkJCQkgIiBh cyBzcGVjaWZpZWQgZm9yIERJTVMgYXQgJUwiLCBudW0sCisJCQkJICZleHByLT53aGVyZSk7 CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgYy0+bnVtX3RlYW1zX2RpbXMg PSB0cnVlOworCQl9CisJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiJWUgIiwgJmV4cHIp ID09IE1BVENIX1lFUykKIAkJewotCQkgIGMtPm51bV90ZWFtc19sb3dlciA9IGMtPm51bV90 ZWFtc191cHBlcjsKLQkJICBjLT5udW1fdGVhbXNfdXBwZXIgPSBOVUxMOwotCQkgIGlmIChn ZmNfbWF0Y2ggKCI6ICVlICIsICZjLT5udW1fdGVhbXNfdXBwZXIpICE9IE1BVENIX1lFUykK KwkJICBjLT5udW1fdGVhbXNfbGlzdCA9IGdmY19nZXRfZXhwcl9saXN0KCk7CisJCSAgYy0+ bnVtX3RlYW1zX2xpc3QtPmV4cHIgPSBleHByOworCQkgIGlmIChnZmNfcGVla19hc2NpaV9j aGFyICgpID09ICc6JykKKwkJICAgIHsKKwkJICAgICAgZXhwciA9IE5VTEw7CisJCSAgICAg IGlmIChnZmNfbWF0Y2ggKCI6ICVlICIsICZleHByKSAhPSBNQVRDSF9ZRVMpCisJCQlnb3Rv IGVycm9yOworCQkgICAgICBjLT5udW1fdGVhbXNfbGlzdC0+bmV4dCA9IGdmY19nZXRfZXhw cl9saXN0KCk7CisJCSAgICAgIGMtPm51bV90ZWFtc19saXN0LT5uZXh0LT5leHByID0gZXhw cjsKKwkJICAgIH0KKwkJICBpZiAoZ2ZjX21hdGNoICgiKSAiKSAhPSBNQVRDSF9ZRVMpCiAJ CSAgICBnb3RvIGVycm9yOwogCQl9Ci0JICAgICAgaWYgKGdmY19tYXRjaCAoIikgIikgIT0g TUFUQ0hfWUVTKQotCQlnb3RvIGVycm9yOworCSAgICAgIGVsc2UKKwkJeworCQkgIGdmY19l cnJvciAoIkV4cGVjdGVkIGVpdGhlciAlPFtsb3dlci1leHByIDogXSB1cHBlci1leHByJT4g b3IgIgorCQkJICAgICAiJTxkaW1zKE4pOiBleHByLWxpc3QlPiBhdCAlQyIpOworCQkgIGdv dG8gZXJyb3I7CisJCX0KIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCSAgaWYgKChtYXNr ICYgT01QX0NMQVVTRV9OVU1fVEhSRUFEUykKLQkgICAgICAmJiAobSA9IGdmY19tYXRjaF9k dXBsX2NoZWNrICghYy0+bnVtX3RocmVhZHMsICJudW1fdGhyZWFkcyIsIHRydWUsCi0JCQkJ CSAgICAmYy0+bnVtX3RocmVhZHMpKSAhPSBNQVRDSF9OTykKKwkgICAgICAmJiAobSA9IGdm Y19tYXRjaF9kdXBsX2NoZWNrICghYy0+bnVtX3RocmVhZHNfbGlzdCwKKwkJCQkJICAgICJu dW1fdGhyZWFkcyIsIHRydWUsIE5VTEwpKQorCQkgICE9IE1BVENIX05PKQogCSAgICB7CisJ ICAgICAgaW50IG5zdHJpY3QgPSAwLCBucmVsYXhlZCA9IDAsIG5kaW1zID0gMDsKKwkgICAg ICBib29sIGZhaWwgPSBmYWxzZTsKKwkgICAgICBnZmNfZXhwciAqZGltcyA9IE5VTEw7CisJ ICAgICAgbG9jdXMgb2xkX2xvYyA9IGdmY19jdXJyZW50X2xvY3VzOworCiAJICAgICAgaWYg KG0gPT0gTUFUQ0hfRVJST1IpCiAJCWdvdG8gZXJyb3I7CisJICAgICAgd2hpbGUgKHRydWUp CisJCXsKKwkJICBpZiAoZ2ZjX21hdGNoICgic3RyaWN0ICIpID09IE1BVENIX1lFUykKKwkJ ICAgIG5zdHJpY3QrKzsKKwkJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJyZWxheGVkICIpID09 IE1BVENIX1lFUykKKwkJICAgIG5yZWxheGVkKys7CisJCSAgZWxzZSBpZiAoZ2ZjX21hdGNo ICgiZGltcyAiKSA9PSBNQVRDSF9ZRVMpCisJCSAgICB7CisJCSAgICAgIG5kaW1zKys7CisJ CSAgICAgIGlmIChkaW1zKQorCQkJZ2ZjX2ZyZWVfZXhwciAoZGltcyk7CisJCSAgICAgIGlm IChnZmNfbWF0Y2ggKCIoICVlICkgIiwgJmRpbXMpICE9IE1BVENIX1lFUykKKwkJCWJyZWFr OworCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgZmFpbCA9IHRydWU7CisJ CSAgICAgIGJyZWFrOworCQkgICAgfQorCQkgIGlmIChnZmNfbWF0Y2ggKCIsICIpID09IE1B VENIX1lFUykKKwkJICAgIGNvbnRpbnVlOworCQkgIGJyZWFrOworCQl9CisJICAgICAgaWYg KGdmY19tYXRjaCAoIiA6ICIpID09IE1BVENIX1lFUykKKwkJeworCQkgIGlmIChuc3RyaWN0 ICsgbnJlbGF4ZWQgKyBuZGltcyA9PSAwIHx8IGZhaWwpCisJCSAgICB7CisJCSAgICAgIGdm Y19lcnJvciAoIkV4cGVjdGVkIFNUUklDVCwgUkVMQVhFRCBvciBESU1TIG1vZGlmaWVyIGF0 ICIKKwkJCQkgIiVDIik7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgZWxz ZSBpZiAobnN0cmljdCArIG5yZWxheGVkID4gMSkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vy cm9yICgiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVybWl0dGVkIgor CQkJCSAiIGF0ICVMIiwgJm9sZF9sb2MpOworCQkgICAgICBnb3RvIGVycm9yOworCQkgICAg fQorCQkgIGlmIChuZGltcyA+IDEpCisJCSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIkR1 cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIGF0ICVMIiwKKwkJCQkgJmRpbXMtPndoZXJlKTsK KwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJICBpZiAobnN0cmljdCB8fCAoZGlt cyAmJiAhbnJlbGF4ZWQpKQorCQkgICAgYy0+bnVtX3RocmVhZHNfc3RyaWN0ID0gdHJ1ZTsK KwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIGdmY19mcmVlX2V4cHIgKGRpbXMpOworCQkg IGRpbXMgPSBOVUxMOworCQkgIGdmY19jdXJyZW50X2xvY3VzID0gb2xkX2xvYzsKKwkJfQor CisJICAgICAgbSA9IG1hdGNoX29tcF9vYWNjX2V4cHJfbGlzdCAoTlVMTCwgJmMtPm51bV90 aHJlYWRzX2xpc3QsIGZhbHNlLAorCQkJCQkgICAgdHJ1ZSk7CisJICAgICAgaWYgKG0gIT0g TUFUQ0hfWUVTKQorCQl7CisJCSAgZ2ZjX2Vycm9yICgiRXhwZWN0ZWQgYSBsaXN0IG9mIGlu dGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgIgorCQkJICAgICAiYnkgYSAlPCklPiBhbmQg b3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwiCisJCQkgICAgICIgUkVMQVhF RCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgJUMiKTsKKwkJICBnb3Rv IGVycm9yOworCQl9CisJICAgICAgaWYgKGRpbXMpCisJCXsKKwkJICBpbnQgbnVtID0gMDsK KwkJICBnZmNfZXhwcl9saXN0ICplbDsKKwkJICBmb3IgKGVsID0gYy0+bnVtX3RocmVhZHNf bGlzdDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICArK251bTsKKwkJICBpZiAoIWdmY19y ZXNvbHZlX2V4cHIgKGRpbXMpCisJCSAgICAgIHx8IGRpbXMtPnRzLnR5cGUgIT0gQlRfSU5U RUdFUgorCQkgICAgICB8fCBkaW1zLT5yYW5rICE9IDAKKwkJICAgICAgfHwgZGltcy0+ZXhw cl90eXBlICE9IEVYUFJfQ09OU1RBTlQKKwkJICAgICAgfHwgbXB6X3NnbiAoZGltcy0+dmFs dWUuaW50ZWdlcikgPD0gMCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiRElNUyBt dXN0IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciAiCisJCQkJICJhdCAlTCIsICZk aW1zLT53aGVyZSk7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgaWYgKG1w el9jbXBfc2kgKGRpbXMtPnZhbHVlLmludGVnZXIsIG51bSkgIT0gMCkKKwkJICAgIHsKKwkJ ICAgICAgZ2ZjX2Vycm9yICgiVGhlIG51bWJlciBvZiBhcmd1bWVudHMgKCVkKSBtdXN0IGJl IHRoZSBzYW1lIgorCQkJCSAiIGFzIHNwZWNpZmllZCBmb3IgRElNUyBhdCAlTCIsIG51bSwK KwkJCQkgJmRpbXMtPndoZXJlKTsKKwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJ ICBjLT5udW1fdGhyZWFkc19kaW1zID0gdHJ1ZTsKKwkJfQogCSAgICAgIGNvbnRpbnVlOwog CSAgICB9CiAJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX05VTV9XT1JLRVJTKQpAQCAtNDUy MCwxMiArNDY0OSwxMTAgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVz ZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAkJCQkJCSBhbGxvd19kZXJpdmVkKSA9 PSBNQVRDSF9ZRVMpCiAJICAgIGNvbnRpbnVlOwogCSAgaWYgKChtYXNrICYgT01QX0NMQVVT RV9USFJFQURfTElNSVQpCi0JICAgICAgJiYgKG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAo IWMtPnRocmVhZF9saW1pdCwgInRocmVhZF9saW1pdCIsCi0JCQkJCSAgICB0cnVlLCAmYy0+ dGhyZWFkX2xpbWl0KSkKLQkJICE9IE1BVENIX05PKQorCSAgICAgICYmIChtID0gZ2ZjX21h dGNoX2R1cGxfY2hlY2sgKCFjLT50aHJlYWRfbGltaXRfbGlzdCwgInRocmVhZF9saW1pdCIs CisJCQkJCSAgICB0cnVlLCBOVUxMKSkgIT0gTUFUQ0hfTk8pCiAJICAgIHsKKwkgICAgICBp bnQgbnN0cmljdCA9IDAsIG5yZWxheGVkID0gMCwgbmRpbXMgPSAwOworCSAgICAgIGJvb2wg ZmFpbCA9IGZhbHNlOworCSAgICAgIGdmY19leHByICpkaW1zID0gTlVMTDsKKwkgICAgICBs b2N1cyBvbGRfbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CisKIAkgICAgICBpZiAobSA9PSBN QVRDSF9FUlJPUikKIAkJZ290byBlcnJvcjsKKwkgICAgICB3aGlsZSAodHJ1ZSkKKwkJewor CQkgIGlmIChnZmNfbWF0Y2ggKCJzdHJpY3QgIikgPT0gTUFUQ0hfWUVTKQorCQkgICAgbnN0 cmljdCsrOworCQkgIGVsc2UgaWYgKGdmY19tYXRjaCAoInJlbGF4ZWQgIikgPT0gTUFUQ0hf WUVTKQorCQkgICAgbnJlbGF4ZWQrKzsKKwkJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJkaW1z ICIpID09IE1BVENIX1lFUykKKwkJICAgIHsKKwkJICAgICAgbmRpbXMrKzsKKwkJICAgICAg aWYgKGRpbXMpCisJCQlnZmNfZnJlZV9leHByIChkaW1zKTsKKwkJICAgICAgaWYgKGdmY19t YXRjaCAoIiggJWUgKSAiLCAmZGltcykgIT0gTUFUQ0hfWUVTKQorCQkJYnJlYWs7CisJCSAg ICB9CisJCSAgZWxzZQorCQkgICAgeworCQkgICAgICBmYWlsID0gdHJ1ZTsKKwkJICAgICAg YnJlYWs7CisJCSAgICB9CisJCSAgaWYgKGdmY19tYXRjaCAoIiwgIikgPT0gTUFUQ0hfWUVT KQorCQkgICAgY29udGludWU7CisJCSAgYnJlYWs7CisJCX0KKwkgICAgICBpZiAoZ2ZjX21h dGNoICgiIDogIikgPT0gTUFUQ0hfWUVTKQorCQl7CisJCSAgaWYgKG5zdHJpY3QgKyBucmVs YXhlZCArIG5kaW1zID09IDAgfHwgZmFpbCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9y ICgiRXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9kaWZpZXIgYXQgIgorCQkJ CSAiJUMiKTsKKwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJICBlbHNlIGlmIChu c3RyaWN0ICsgbnJlbGF4ZWQgPiAxKQorCQkgICAgeworCQkgICAgICBnZmNfZXJyb3IgKCJP bmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiCisJCQkJICIg YXQgJUwiLCAmb2xkX2xvYyk7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAg aWYgKG5kaW1zID4gMSkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiRHVwbGljYXRl ZCBESU1TIGV4cHJlc3Npb24gYXQgJUwiLAorCQkJCSAmZGltcy0+d2hlcmUpOworCQkgICAg ICBnb3RvIGVycm9yOworCQkgICAgfQorCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgZ2Zj X2ZyZWVfZXhwciAoZGltcyk7CisJCSAgZGltcyA9IE5VTEw7CisJCSAgZ2ZjX2N1cnJlbnRf bG9jdXMgPSBvbGRfbG9jOworCQl9CisKKwkgICAgICBtID0gbWF0Y2hfb21wX29hY2NfZXhw cl9saXN0IChOVUxMLCAmYy0+dGhyZWFkX2xpbWl0X2xpc3QsCisJCQkJCSAgICBmYWxzZSwg dHJ1ZSk7CisJICAgICAgaWYgKG0gIT0gTUFUQ0hfWUVTKQorCQl7CisJCSAgZ2ZjX2Vycm9y ICgiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgIgor CQkJICAgICAiYnkgYSAlPCklPiBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNU UklDVCwiCisJCQkgICAgICIgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEg Y29sb24gYXQgJUMiKTsKKwkJICBnb3RvIGVycm9yOworCQl9CisJICAgICAgYy0+dGhyZWFk X2xpbWl0X3N0cmljdCA9IChuc3RyaWN0ICE9IDApIHx8IChkaW1zICYmICFucmVsYXhlZCk7 CisKKwkgICAgICBpZiAoIWRpbXMgJiYgYy0+dGhyZWFkX2xpbWl0X2xpc3QtPm5leHQpCisJ CXsKKwkJICBnZmNfZXJyb3IgKCJXaXRob3V0IHRoZSBESU0gbW9kaWZpZXIsIG9ubHkgYSBz aW5nbGUgaW50ZWdlciAiCisJCQkgICAgICJleHByZXNzaW9uIG1heSBiZSBzcGVjaWZpZWQg YXQgJUwiLAorCQkJICAgICAmYy0+dGhyZWFkX2xpbWl0X2xpc3QtPm5leHQtPmV4cHItPndo ZXJlKTsKKwkJICBnb3RvIGVycm9yOworCQl9CisJICAgICAgZWxzZSBpZiAoZGltcykKKwkJ eworCQkgIGludCBudW0gPSAwOworCQkgIGdmY19leHByX2xpc3QgKmVsOworCQkgIGZvciAo ZWwgPSBjLT50aHJlYWRfbGltaXRfbGlzdDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICAr K251bTsKKwkJICBpZiAoIWdmY19yZXNvbHZlX2V4cHIgKGRpbXMpCisJCSAgICAgIHx8IGRp bXMtPnRzLnR5cGUgIT0gQlRfSU5URUdFUgorCQkgICAgICB8fCBkaW1zLT5yYW5rICE9IDAK KwkJICAgICAgfHwgZGltcy0+ZXhwcl90eXBlICE9IEVYUFJfQ09OU1RBTlQKKwkJICAgICAg fHwgbXB6X3NnbiAoZGltcy0+dmFsdWUuaW50ZWdlcikgPD0gMCkKKwkJICAgIHsKKwkJICAg ICAgZ2ZjX2Vycm9yICgiRElNUyBtdXN0IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdl ciAiCisJCQkJICJhdCAlTCIsICZkaW1zLT53aGVyZSk7CisJCSAgICAgIGdvdG8gZXJyb3I7 CisJCSAgICB9CisJCSAgaWYgKG1wel9jbXBfc2kgKGRpbXMtPnZhbHVlLmludGVnZXIsIG51 bSkgIT0gMCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiVGhlIG51bWJlciBvZiBh cmd1bWVudHMgKCVkKSBtdXN0IGJlIHRoZSBzYW1lIgorCQkJCSAiIGFzIHNwZWNpZmllZCBm b3IgRElNUyBhdCAlTCIsIG51bSwKKwkJCQkgJmRpbXMtPndoZXJlKTsKKwkJICAgICAgZ290 byBlcnJvcjsKKwkJICAgIH0KKwkJICBjLT50aHJlYWRfbGltaXRfZGltcyA9IHRydWU7CisJ CX0KIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCSAgaWYgKChtYXNrICYgT01QX0NMQVVT RV9USFJFQURTKQpAQCAtMTAyOTYsOCArMTA1MjMsMTAgQEAgcmVzb2x2ZV9vbXBfY2xhdXNl cyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVzZXMsCiAJICAm ZXhwci0+d2hlcmUpOwogICAgICAgaWZfd2l0aG91dF9tb2QgPSB0cnVlOwogICAgIH0KLSAg aWYgKG9tcF9jbGF1c2VzLT5udW1fdGhyZWFkcykKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2lu dF9leHByIChvbXBfY2xhdXNlcy0+bnVtX3RocmVhZHMsICJOVU1fVEhSRUFEUyIpOworCisg IGZvciAoZWwgPSBvbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfbGlzdDsgZWw7IGVsID0gZWwt Pm5leHQpCisgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAoZWwtPmV4cHIsICJOVU1f VEhSRUFEUyIpOworCiAgIGlmIChvbXBfY2xhdXNlcy0+ZHluX2dyb3VwcHJpdmF0ZSkKICAg ICByZXNvbHZlX25vbm5lZ2F0aXZlX2ludF9leHByIChvbXBfY2xhdXNlcy0+ZHluX2dyb3Vw cHJpdmF0ZSwKIAkJCQkgICJEWU5fR1JPVVBQUklWQVRFIik7CkBAIC0xMTEwMCwxOCArMTEz MjksMTggQEAgcmVzb2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBf Y2xhdXNlcyAqb21wX2NsYXVzZXMsCiAgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAo b21wX2NsYXVzZXMtPnNhZmVsZW5fZXhwciwgIlNBRkVMRU4iKTsKICAgaWYgKG9tcF9jbGF1 c2VzLT5zaW1kbGVuX2V4cHIpCiAgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAob21w X2NsYXVzZXMtPnNpbWRsZW5fZXhwciwgIlNJTURMRU4iKTsKLSAgaWYgKG9tcF9jbGF1c2Vz LT5udW1fdGVhbXNfbG93ZXIpCi0gICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAob21w X2NsYXVzZXMtPm51bV90ZWFtc19sb3dlciwgIk5VTV9URUFNUyIpOwotICBpZiAob21wX2Ns YXVzZXMtPm51bV90ZWFtc191cHBlcikKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHBy IChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyLCAiTlVNX1RFQU1TIik7Ci0gIGlmIChv bXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyCi0gICAgICAmJiBvbXBfY2xhdXNlcy0+bnVt X3RlYW1zX2xvd2VyLT5leHByX3R5cGUgPT0gRVhQUl9DT05TVEFOVAotICAgICAgJiYgb21w X2NsYXVzZXMtPm51bV90ZWFtc191cHBlci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQK LSAgICAgICYmIG1wel9jbXAgKG9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbG93ZXItPnZhbHVl LmludGVnZXIsCi0JCSAgb21wX2NsYXVzZXMtPm51bV90ZWFtc191cHBlci0+dmFsdWUuaW50 ZWdlcikgPiAwKQorICBmb3IgKGVsID0gb21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OyBl bDsgZWwgPSBlbC0+bmV4dCkKKyAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHByIChlbC0+ ZXhwciwgIk5VTV9URUFNUyIpOworICBpZiAob21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0 CisgICAgICAmJiBvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQKKyAgICAgICYm ICFvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2RpbXMKKyAgICAgICYmIG9tcF9jbGF1c2VzLT5u dW1fdGVhbXNfbGlzdC0+ZXhwci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQKKyAgICAg ICYmIG9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdC0+bmV4dC0+ZXhwci0+ZXhwcl90eXBl ID09IEVYUFJfQ09OU1RBTlQKKyAgICAgICYmIG1wel9jbXAgKG9tcF9jbGF1c2VzLT5udW1f dGVhbXNfbGlzdC0+ZXhwci0+dmFsdWUuaW50ZWdlciwKKwkJICBvbXBfY2xhdXNlcy0+bnVt X3RlYW1zX2xpc3QtPm5leHQtPmV4cHItPnZhbHVlLmludGVnZXIpID4gMCkKICAgICBnZmNf d2FybmluZyAoT1BUX1dvcGVubXAsICJOVU1fVEVBTVMgbG93ZXIgYm91bmQgYXQgJUwgbGFy Z2VyIHRoYW4gdXBwZXIgIgotCQkgImJvdW5kIGF0ICVMIiwgJm9tcF9jbGF1c2VzLT5udW1f dGVhbXNfbG93ZXItPndoZXJlLAotCQkgJm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfdXBwZXIt PndoZXJlKTsKKwkJICJib3VuZCBhdCAlTCIsICZvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xp c3QtPmV4cHItPndoZXJlLAorCQkgJm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdC0+bmV4 dC0+ZXhwci0+d2hlcmUpOwogICBpZiAob21wX2NsYXVzZXMtPmRldmljZSkKICAgICByZXNv bHZlX3NjYWxhcl9pbnRfZXhwciAob21wX2NsYXVzZXMtPmRldmljZSwgIkRFVklDRSIpOwog ICBpZiAob21wX2NsYXVzZXMtPmZpbHRlcikKQEAgLTExMTM1LDggKzExMzY0LDggQEAgcmVz b2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21w X2NsYXVzZXMsCiAJZ2ZjX2Vycm9yICgiRElTVF9TQ0hFRFVMRSBjbGF1c2UncyBjaHVua19z aXplIGF0ICVMIHJlcXVpcmVzICIKIAkJICAgImEgc2NhbGFyIElOVEVHRVIgZXhwcmVzc2lv biIsICZleHByLT53aGVyZSk7CiAgICAgfQotICBpZiAob21wX2NsYXVzZXMtPnRocmVhZF9s aW1pdCkKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHByIChvbXBfY2xhdXNlcy0+dGhy ZWFkX2xpbWl0LCAiVEhSRUFEX0xJTUlUIik7CisgIGZvciAoZWwgPSBvbXBfY2xhdXNlcy0+ dGhyZWFkX2xpbWl0X2xpc3Q7IGVsOyBlbCA9IGVsLT5uZXh0KQorICAgIHJlc29sdmVfcG9z aXRpdmVfaW50X2V4cHIgKGVsLT5leHByLCAiVEhSRUFEX0xJTUlUIik7CiAgIGlmIChvbXBf Y2xhdXNlcy0+Z3JhaW5zaXplKQogICAgIHJlc29sdmVfcG9zaXRpdmVfaW50X2V4cHIgKG9t cF9jbGF1c2VzLT5ncmFpbnNpemUsICJHUkFJTlNJWkUiKTsKICAgaWYgKG9tcF9jbGF1c2Vz LT5udW1fdGFza3MpCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2Mg Yi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKaW5kZXggYWE0ZThlYmZhMjMuLjM4MWZi NDhkMDA4IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKKysrIGIv Z2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC01NjYwLDEyICs1NjYwLDI1IEBAIGdm Y190cmFuc19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVz ZXMgKmNsYXVzZXMsCiAgICAgICBvbXBfY2xhdXNlcyA9IGdmY190cmFuc19hZGRfY2xhdXNl IChjLCBvbXBfY2xhdXNlcyk7CiAgICAgfQogCi0gIGlmIChjbGF1c2VzLT5udW1fdGhyZWFk cykKKyAgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRzX2xpc3QpCiAgICAgewogICAgICAgdHJl ZSBudW1fdGhyZWFkczsKIAorICAgICAgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRzX2RpbXMp CisJc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24gKCZjbGF1c2VzLT5udW1fdGhyZWFkc19s aXN0LT5leHByLT53aGVyZSksCisJCSAgIiU8bnVtX3RocmVhZHMlPiB3aXRoICU8ZGltcyU+ IG1vZGlmaWVyIik7CisgICAgICBlbHNlIGlmIChjbGF1c2VzLT5udW1fdGhyZWFkc19zdHJp Y3QpCisJc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24gKCZjbGF1c2VzLT5udW1fdGhyZWFk c19saXN0LT5leHByLT53aGVyZSksCisJCSAgIiU8bnVtX3RocmVhZHMlPiB3aXRoICU8c3Ry aWN0JT4gbW9kaWZpZXIiKTsKKyAgICAgIGVsc2UgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRz X2xpc3QtPm5leHQpCisJeworCSAgZ2ZjX2V4cHIgKmV4cHIgPSBjbGF1c2VzLT5udW1fdGhy ZWFkc19saXN0LT5uZXh0LT5leHByOworCSAgc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24g KCZleHByLT53aGVyZSksCisJCSAgICAiJTxudW1fdGhyZWFkcyU+IHdpdGggbW9yZSB0aGFu IG9uZSBhcmd1bWVudCIpOworCX0KKwogICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7 Ci0gICAgICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51bV90aHJlYWRzKTsKKyAg ICAgIGdmY19jb252X2V4cHIgKCZzZSwgY2xhdXNlcy0+bnVtX3RocmVhZHNfbGlzdC0+ZXhw cik7CiAgICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnByZSk7CiAg ICAgICBudW1fdGhyZWFkcyA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsK ICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CkBAIC01 OTcwLDI0ICs1OTgzLDMxIEBAIGdmY190cmFuc19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3Qg KmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNsYXVzZXMsCiAJfQogICAgIH0KIAotICBpZiAo Y2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyKQorICBpZiAoY2xhdXNlcy0+bnVtX3RlYW1zX2xp c3QpCiAgICAgewogICAgICAgdHJlZSBudW1fdGVhbXNfbG93ZXIgPSBOVUxMX1RSRUUsIG51 bV90ZWFtc191cHBlcjsKIAotICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAg ICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51bV90ZWFtc191cHBlcik7Ci0gICAg ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnByZSk7Ci0gICAgICBudW1f dGVhbXNfdXBwZXIgPSBnZmNfZXZhbHVhdGVfbm93IChzZS5leHByLCBibG9jayk7Ci0gICAg ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnBvc3QpOworICAgICAgaWYg KGNsYXVzZXMtPm51bV90ZWFtc19kaW1zKQorCXNvcnJ5X2F0IChnZmNfZ2V0X2xvY2F0aW9u ICgmY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPmV4cHItPndoZXJlKSwKKwkJICAgICIlPG51 bV90ZWFtcyU+IHdpdGggJTxkaW1zJT4gbW9kaWZpZXIiKTsKIAotICAgICAgaWYgKGNsYXVz ZXMtPm51bV90ZWFtc19sb3dlcikKKyAgICAgIGdmY19leHByX2xpc3QgKmVsID0gY2xhdXNl cy0+bnVtX3RlYW1zX2xpc3Q7CisgICAgICBpZiAoZWwtPm5leHQpCiAJewogCSAgZ2ZjX2lu aXRfc2UgKCZzZSwgTlVMTCk7Ci0JICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51 bV90ZWFtc19sb3dlcik7CisJICBnZmNfY29udl9leHByICgmc2UsIGVsLT5leHByKTsKIAkg IGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucHJlKTsKIAkgIG51bV90ZWFt c19sb3dlciA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKIAkgIGdmY19h ZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CisJICBlbCA9IGVsLT5uZXh0 OwogCX0KKworICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisgICAgICBnZmNfY29u dl9leHByICgmc2UsIGVsLT5leHByKTsKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg KGJsb2NrLCAmc2UucHJlKTsKKyAgICAgIG51bV90ZWFtc191cHBlciA9IGdmY19ldmFsdWF0 ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg KGJsb2NrLCAmc2UucG9zdCk7CisKICAgICAgIGMgPSBidWlsZF9vbXBfY2xhdXNlIChnZmNf Z2V0X2xvY2F0aW9uICgmd2hlcmUpLCBPTVBfQ0xBVVNFX05VTV9URUFNUyk7CiAgICAgICBP TVBfQ0xBVVNFX05VTV9URUFNU19MT1dFUl9FWFBSIChjKSA9IG51bV90ZWFtc19sb3dlcjsK ICAgICAgIE9NUF9DTEFVU0VfTlVNX1RFQU1TX1VQUEVSX0VYUFIgKGMpID0gbnVtX3RlYW1z X3VwcGVyOwpAQCAtNjAxMywxMiArNjAzMywxOCBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMg KHN0bXRibG9ja190ICpibG9jaywgZ2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogICAgICAg b21wX2NsYXVzZXMgPSBnZmNfdHJhbnNfYWRkX2NsYXVzZSAoYywgb21wX2NsYXVzZXMpOwog ICAgIH0KIAotICBpZiAoY2xhdXNlcy0+dGhyZWFkX2xpbWl0KQorICBpZiAoY2xhdXNlcy0+ dGhyZWFkX2xpbWl0X2xpc3QpCiAgICAgewogICAgICAgdHJlZSB0aHJlYWRfbGltaXQ7CiAK KyAgICAgIGlmIChjbGF1c2VzLT50aHJlYWRfbGltaXRfZGltcykKKwlzb3JyeV9hdCAoZ2Zj X2dldF9sb2NhdGlvbiAoJmNsYXVzZXMtPnRocmVhZF9saW1pdF9saXN0LT5leHByLT53aGVy ZSksCisJCSAgICAiJTx0aHJlYWRfbGltaXQlPiB3aXRoICU8ZGltcyU+IG1vZGlmaWVyIik7 CisgICAgICBlbHNlIGlmIChjbGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0KQorCXNvcnJ5 X2F0IChnZmNfZ2V0X2xvY2F0aW9uICgmY2xhdXNlcy0+dGhyZWFkX2xpbWl0X2xpc3QtPmV4 cHItPndoZXJlKSwKKwkJICAgICIlPHRocmVhZF9saW1pdCU+IHdpdGggJTxzdHJpY3QlPiBt b2RpZmllciIpOwogICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAgICBnZmNf Y29udl9leHByICgmc2UsIGNsYXVzZXMtPnRocmVhZF9saW1pdCk7CisgICAgICBnZmNfY29u dl9leHByICgmc2UsIGNsYXVzZXMtPnRocmVhZF9saW1pdF9saXN0LT5leHByKTsKICAgICAg IGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucHJlKTsKICAgICAgIHRocmVh ZF9saW1pdCA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKICAgICAgIGdm Y19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CkBAIC04NDcxLDggKzg0 OTcsMTIgQEAgZ2ZjX3NwbGl0X29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwKIAkgICAg PSBjb2RlLT5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0hBU19ERVZJQ0VfQURE Ul07CiAJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0uZGV2aWNlCiAJICAgID0g Y29kZS0+ZXh0Lm9tcF9jbGF1c2VzLT5kZXZpY2U7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQ TElUX1RBUkdFVF0udGhyZWFkX2xpbWl0Ci0JICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2Vz LT50aHJlYWRfbGltaXQ7CisJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0udGhy ZWFkX2xpbWl0X2xpc3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9s aW1pdF9saXN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9UQVJHRVRdLnRocmVhZF9s aW1pdF9zdHJpY3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9saW1p dF9zdHJpY3Q7CisJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0udGhyZWFkX2xp bWl0X2RpbXMKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9saW1pdF9k aW1zOwogCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9UQVJHRVRdLmxpc3RzW09NUF9MSVNU X1VTRVNfQUxMT0NBVE9SU10KIAkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPmxpc3Rz W09NUF9MSVNUX1VTRVNfQUxMT0NBVE9SU107CiAJICBmb3IgKGludCBpID0gMDsgaSA8IE9N UF9ERUZBVUxUTUFQX0NBVF9OVU07IGkrKykKQEAgLTg0OTEsMTIgKzg1MjEsMTYgQEAgZ2Zj X3NwbGl0X29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwKICAgICAgIGlmIChtYXNrICYg R0ZDX09NUF9NQVNLX1RFQU1TKQogCXsKIAkgIC8qIEZpcnN0IHRoZSBjbGF1c2VzIHRoYXQg YXJlIHVuaXF1ZSB0byBzb21lIGNvbnN0cnVjdHMuICAqLwotCSAgY2xhdXNlc2FbR0ZDX09N UF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2xvd2VyCi0JICAgID0gY29kZS0+ZXh0Lm9tcF9j bGF1c2VzLT5udW1fdGVhbXNfbG93ZXI7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RF QU1TXS5udW1fdGVhbXNfdXBwZXIKLQkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51 bV90ZWFtc191cHBlcjsKLQkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVh ZF9saW1pdAotCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0Owor CSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2xpc3QKKwkgICAg PSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OworCSAgY2xhdXNlc2Fb R0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2RpbXMKKwkgICAgPSBjb2RlLT5leHQu b21wX2NsYXVzZXMtPm51bV90ZWFtc19kaW1zOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJ VF9URUFNU10udGhyZWFkX2xpbWl0X2xpc3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVz ZXMtPnRocmVhZF9saW1pdF9saXN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFN U10udGhyZWFkX2xpbWl0X3N0cmljdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+ dGhyZWFkX2xpbWl0X3N0cmljdDsKKwkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNd LnRocmVhZF9saW1pdF9kaW1zCisJICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2VzLT50aHJl YWRfbGltaXRfZGltczsKIAkgIC8qIFNoYXJlZCBhbmQgZGVmYXVsdCBjbGF1c2VzIGFyZSBh bGxvd2VkIG9uIHBhcmFsbGVsLCB0ZWFtcwogCSAgICAgYW5kIHRhc2tsb29wLiAgKi8KIAkg IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLmxpc3RzW09NUF9MSVNUX1NIQVJFRF0K QEAgLTg1MjYsOCArODU2MCwxMiBAQCBnZmNfc3BsaXRfb21wX2NsYXVzZXMgKGdmY19jb2Rl ICpjb2RlLAogCSAgLyogRmlyc3QgdGhlIGNsYXVzZXMgdGhhdCBhcmUgdW5pcXVlIHRvIHNv bWUgY29uc3RydWN0cy4gICovCiAJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1BBUkFMTEVM XS5saXN0c1tPTVBfTElTVF9DT1BZSU5dCiAJICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2Vz LT5saXN0c1tPTVBfTElTVF9DT1BZSU5dOwotCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9Q QVJBTExFTF0ubnVtX3RocmVhZHMKLQkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51 bV90aHJlYWRzOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9QQVJBTExFTF0ubnVtX3Ro cmVhZHNfbGlzdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNf bGlzdDsKKwkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfUEFSQUxMRUxdLm51bV90aHJlYWRz X3N0cmljdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfc3Ry aWN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9QQVJBTExFTF0ubnVtX3RocmVhZHNf ZGltcworCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfZGltczsK IAkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfUEFSQUxMRUxdLnByb2NfYmluZAogCSAgICA9 IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+cHJvY19iaW5kOwogCSAgLyogU2hhcmVkIGFuZCBk ZWZhdWx0IGNsYXVzZXMgYXJlIGFsbG93ZWQgb24gcGFyYWxsZWwsIHRlYW1zCkBAIC05MzQ0 LDggKzkzODIsOCBAQCBnZmNfdHJhbnNfb21wX3RhcmdldCAoZ2ZjX2NvZGUgKmNvZGUpCiAg ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgaWYgKGZsYWdfb3Blbm1wCi0JICAm JiAoY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX3VwcGVyCi0JICAg ICAgfHwgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10udGhyZWFkX2xpbWl0KSkKKwkg ICYmIChjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RFQU1TXS5udW1fdGVhbXNfbGlzdAorCSAg ICAgIHx8IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1pdF9saXN0 KSkKIAl7CiAJICBnZmNfb21wX2NsYXVzZXMgY2xhdXNlc2I7CiAJICB0cmVlIHRlYW1zX2Ns YXVzZXM7CkBAIC05MzUzLDE0ICs5MzkxLDE4IEBAIGdmY190cmFuc19vbXBfdGFyZ2V0IChn ZmNfY29kZSAqY29kZSkKIAkgICAgIHRocmVhZF9saW1pdCBjbGF1c2VzIGFyZSBldmFsdWF0 ZWQgYmVmb3JlIGVudGVyaW5nIHRoZQogCSAgICAgdGFyZ2V0IGNvbnN0cnVjdC4gICovCiAJ ICBtZW1zZXQgKCZjbGF1c2VzYiwgJ1wwJywgc2l6ZW9mIChjbGF1c2VzYikpOwotCSAgY2xh dXNlc2IubnVtX3RlYW1zX2xvd2VyCi0JICAgID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9U RUFNU10ubnVtX3RlYW1zX2xvd2VyOwotCSAgY2xhdXNlc2IubnVtX3RlYW1zX3VwcGVyCi0J ICAgID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX3VwcGVyOwot CSAgY2xhdXNlc2IudGhyZWFkX2xpbWl0ID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFN U10udGhyZWFkX2xpbWl0OwotCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVt X3RlYW1zX2xvd2VyID0gTlVMTDsKLQkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNd Lm51bV90ZWFtc191cHBlciA9IE5VTEw7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RF QU1TXS50aHJlYWRfbGltaXQgPSBOVUxMOworCSAgY2xhdXNlc2IubnVtX3RlYW1zX2xpc3QK KwkgICAgPSBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RFQU1TXS5udW1fdGVhbXNfbGlzdDsK KwkgIGNsYXVzZXNiLm51bV90ZWFtc19kaW1zCisJICAgID0gY2xhdXNlc2FbR0ZDX09NUF9T UExJVF9URUFNU10ubnVtX3RlYW1zX2RpbXM7CisJICBjbGF1c2VzYi50aHJlYWRfbGltaXRf bGlzdAorCSAgICA9IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1p dF9saXN0OworCSAgY2xhdXNlc2IudGhyZWFkX2xpbWl0X3N0cmljdAorCSAgICA9IGNsYXVz ZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1pdF9zdHJpY3Q7CisJICBjbGF1 c2VzYi50aHJlYWRfbGltaXRfZGltcworCSAgICA9IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRf VEVBTVNdLnRocmVhZF9saW1pdF9kaW1zOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9U RUFNU10ubnVtX3RlYW1zX2xpc3QgPSBOVUxMOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJ VF9URUFNU10udGhyZWFkX2xpbWl0X2xpc3QgPSBOVUxMOwogCSAgdGVhbXNfY2xhdXNlcwog CSAgICA9IGdmY190cmFuc19vbXBfY2xhdXNlcyAoJmJsb2NrLCAmY2xhdXNlc2IsIGNvZGUt PmxvYyk7CiAJICBwdXNobGV2ZWwgKCk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTEuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0xLmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQzNDkxODBmNWUKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNp b25zLTEuZjkwCkBAIC0wLDAgKzEsMTE2IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5hbCIgfQorCitzdWJy b3V0aW5lIG9uZV9hCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcygzKSA6IDEsMiwzKSAm ICAgICAgICAgICAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnbnVt X3RlYW1zJyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAmICAgICAgdGhyZWFkX2xp bWl0ICggZGltcyAoIDQgKSA6IDEsIDIsIDMsIDQpICEgeyBkZy1tZXNzYWdlICJzb3JyeSwg dW5pbXBsZW1lbnRlZDogJ3RocmVhZF9saW1pdCcgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0K KyEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcygzKTogMSwyLDMpICAgICAgICAh IHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0 aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQg dGVhbXMKK2VuZAorCitzdWJyb3V0aW5lIG9uZV9iCishJG9tcCB0ZWFtcyBudW1fdGVhbXMo ZGltcygzKSA6IDEsMiwzKSAmICAgICAgICAgICAgICAgICAgICAgICEgeyBkZy1tZXNzYWdl ICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ251bV90ZWFtcycgd2l0aCAnZGltcycgbW9kaWZp ZXIiIH0KKyEkb21wJiAgICAgIHRocmVhZF9saW1pdCAoIGRpbXMgKCA0ICkgLCByZWxheGVk IDogMSwgMiwgMywgNCkgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAn dGhyZWFkX2xpbWl0JyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxl bCBudW1fdGhyZWFkcyhkaW1zKDMpICwgcmVsYXhlZCA6IDEsMiwzKSAgICAgICAhIHsgZGct bWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGlt cycgbW9kaWZpZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMK K2VuZAorCitzdWJyb3V0aW5lIG9uZV9jCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcygz KSA6IDEsMiwzKSAmICAgICAgICAgICAgICAgICAgICAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5 LCB1bmltcGxlbWVudGVkOiAnbnVtX3RlYW1zJyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQor ISRvbXAmICAgICAgdGhyZWFkX2xpbWl0ICggZGltcyAoIDQgKSAsIHN0cmljdCA6IDEsIDIs IDMsIDQpICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3RocmVhZF9s aW1pdCcgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wICAgcGFyYWxsZWwgbnVtX3Ro cmVhZHMoZGltcygzKSAsIHN0cmljdCA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAi c29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZp ZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitz dWJyb3V0aW5lIG9uZV9kCishJG9tcCB0ZWFtcyBudW1fdGVhbXMgKCBkaW1zKDMpIDogMSwy LDMpICYgICAgICAgICAgICAgICAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1w bGVtZW50ZWQ6ICdudW1fdGVhbXMnIHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9CishJG9tcCYg ICAgICB0aHJlYWRfbGltaXQgKCByZWxheGVkICwgIGRpbXMgKCA0ICkgOiAxLCAyLCAzLCA0 KSAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICd0aHJlYWRfbGltaXQn IHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9CishJG9tcCAgIHBhcmFsbGVsIG51bV90aHJlYWRz KCByZWxheGVkICwgZGltcygzKSA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29y cnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZpZXIi IH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitzdWJy b3V0aW5lIG9uZV9lCishJG9tcCB0ZWFtcyBudW1fdGVhbXMgKCBkaW1zKDMpIDogMSwyLDMp ICYgICAgICAgICAgICAgICAgICAgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1l bnRlZDogJ251bV90ZWFtcycgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wJiAgICAg IHRocmVhZF9saW1pdCAoIHN0cmljdCAsICBkaW1zICggNCApIDogMSwgMiwgMywgNCkgISB7 IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAndGhyZWFkX2xpbWl0JyB3aXRo ICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFkcyggc3Ry aWN0ICwgZGltcygzKSA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVu aW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEk b21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCisKK3N1YnJvdXRp bmUgdHdvCishJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKHN0cmljdCA6IDQpICAgICAgICAg ICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3RocmVhZF9saW1pdCcg d2l0aCAnc3RyaWN0JyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFk cyhzdHJpY3QgOiAyKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50 ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnc3RyaWN0JyBtb2RpZmllciIgfQorISRvbXAgICBl bmQgcGFyYWxsZWwKKyEkb21wIGVuZCB0ZWFtcworZW5kCisKK3N1YnJvdXRpbmUgemVybwor ISRvbXAgdGVhbXMgbnVtX3RlYW1zKDEyMzQpIHRocmVhZF9saW1pdCAoIDIzNDUpICAhIE9L CishJG9tcCAgIHBhcmFsbGVsIG51bV90aHJlYWRzKCAzNDU2KSAgICAgICAgICAgICEgT0sK KyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKKworISRvbXAgdGVhbXMg bnVtX3RlYW1zKDEyMzo0NTYpCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitzdWJyb3V0aW5l IHRocmVlCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoNDU2NykgdGhyZWFkX2xpbWl0IChyZWxh eGVkIDogNTY3OCkgICEgT0sKKyEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMocmVsYXhl ZCA6IDY3ODkpICAgICAgICAgICAgISBPSworISRvbXAgICBlbmQgcGFyYWxsZWwKKyEkb21w IGVuZCB0ZWFtcworZW5kCisKK3N1YnJvdXRpbmUgZm91cgorISRvbXAgcGFyYWxsZWwgbnVt X3RocmVhZHMoMSAsIDIgLCAzICkgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1l bnRlZDogJ251bV90aHJlYWRzJyB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQiIH0KKyEk b21wIGVuZCBwYXJhbGxlbAorZW5kCisKK3N1YnJvdXRpbmUgZml2ZQorISRvbXAgcGFyYWxs ZWwgbnVtX3RocmVhZHMocmVsYXhlZCA6IDEsMiwzKSAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5 LCB1bmltcGxlbWVudGVkOiAnbnVtX3RocmVhZHMnIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1 bWVudCIgfQorISRvbXAgZW5kIHBhcmFsbGVsCitlbmQKKworc3Vicm91dGluZSBzaXgKKyEk b21wIHBhcmFsbGVsIG51bV90aHJlYWRzKHN0cmljdCA6IDEsMiwzKSAgISB7IGRnLW1lc3Nh Z2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnbnVtX3RocmVhZHMnIHdpdGggJ3N0cmljdCcg bW9kaWZpZXIiIH0KKyEkb21wIGVuZCBwYXJhbGxlbAorZW5kCisKKworc3Vicm91dGluZSBz ZXZlbgorICBpbnRlZ2VyIDo6IHN0YXRpYywgcmVsYXhlZCwgZGltcygyKQorICAhJG9tcCB0 ZWFtcyBudW1fdGVhbXMoc3RhdGljKSB0aHJlYWRfbGltaXQgKHN0YXRpYykgICEgT0sKKyAg ISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFkcyhzdGF0aWMpICAgICAgICAgICAgICAgICAh IE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21wIGVuZCB0ZWFtcworCisgICEk b21wIHRlYW1zIG51bV90ZWFtcyhyZWxheGVkKSB0aHJlYWRfbGltaXQgKHJlbGF4ZWQpICAh IE9LCisgICEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMocmVsYXhlZCkgICAgICAgICAg ICAgICAgICAhIE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21wIGVuZCB0ZWFt cworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKDIpKSB0aHJlYWRfbGltaXQgKGRp bXMoMikpICAhIE9LCisgICEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcygyKSkg ICAgICAgICAgICAgICAgICAhIE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21w IGVuZCB0ZWFtcworCitlbmQgc3Vicm91dGluZQorCishIENoZWNrIHRoYXQgdGhlIHRyZWUg aXMgY29ycmVjdGx5IGdlbmVyYXRlZDoKKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDEyMzRcXCkgdGhyZWFk X2xpbWl0XFwoMjM0NVxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwo MzQ1NlxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDQ1NjdcXCkgdGhyZWFk X2xpbWl0XFwoNTY3OFxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwo Njc4OVxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDEyMzo0NTZcXCkiIDEg Im9yaWdpbmFsIiB9IH0KKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg IkRcXC5cWzAtOVxdKyA9IHN0YXRpYzsiIDMgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJEXFwuXFswLTlcXSsgPSByZWxheGVkOyIgMyAi b3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkRc XC5cWzAtOVxdKyA9IGRpbXNcXFxbMVxcXF07IiAzICJvcmlnaW5hbCIgfSB9CishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGVhbXMgbnVtX3Rl YW1zXFwoRFxcLlxbMC05XF0rXFwpIHRocmVhZF9saW1pdFxcKERcXC5cWzAtOVxdK1xcKSIg MyAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg IiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwoRFxcLlxbMC05XF0rXFwpIiAz ICJvcmlnaW5hbCIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0yLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZGI1NzBkZjg2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkw CkBAIC0wLDAgKzEsMjIgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1hZGRpdGlv bmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLW9yaWdpbmFsIiB9CisKKyEgVGhpcyB0ZXN0Y2Fz ZSBpcyBhbWJpZ291cyBpbiBGb3J0cmFuCishIGNmLiBPcGVuTVAgU3BlYyBJc3N1ZXMgNDk5 OAorISBVbnJlc29sdmVkIHdoZW4gdGhpcyB0ZXN0Y2FzZSB3YXMgd3JpdHRlbgorCishIEZJ WE1FOiBDaGVjayB3aGF0J3MgdGhlIG91dGNvbWUgb2YgdGhlIGRpc2N1c3Npb24KKworISBO T1RFOiBHQ0MgY3VycmVudGx5IGltcGxlbWVudHMgdGhpcyBhcyBzcGF0aWFsIGRpbWVuc2lv bgorISBhbmQgbm90IGFzIGxvd2VyIGJvdW5kIC4uLgorCitzdWJyb3V0aW5lIHN1YgorICBp bnRlZ2VyLCBwYXJhbWV0ZXIgOjogZGltcygyKSA9IFsxMSwyMl0KKyEuLi4KKyAgISRvbXAg dGVhbXMgIG51bV90ZWFtcyggZGltcygxKSA6IDI1NiApICAhIHsgZGctbWVzc2FnZSAic29y cnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGVhbXMnIHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9 CisgICEkb21wIGVuZCB0ZWFtcworZW5kCisKKyEgLi4uIGhlbmNlOiAnbnVtX3RlYW1zKDI1 NiknIGFuZCBub3QgJ251bV90ZWFtcygxMToyNTYpJworCishIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiI3ByYWdtYSBvbXAgdGVhbXMgbnVtX3RlYW1zXFwoMjU2XFwpIiAib3Jp Z2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L3NwYXRpYWwtZGltZW5zaW9ucy0zLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Z29tcC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjc0ZTc2Nzk1MDg1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0zLmY5MApAQCAt MCwwICsxLDI1MiBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLWFkZGl0aW9uYWwt b3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKworc3Vicm91dGluZSBvbmUKKyAg ISRvbXAgdGVhbXMgbnVtX3RlYW1zKDEpIG51bV90ZWFtcygyKSAgISB7IGRnLWVycm9yICJE dXBsaWNhdGVkICdudW1fdGVhbXMnIGNsYXVzZSIgfQorICBibG9jazsgZW5kIGJsb2NrCisK KyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0KDEpIHRocmVhZF9saW1pdCgyKSAgISB7IGRn LWVycm9yICJEdXBsaWNhdGVkICd0aHJlYWRfbGltaXQnIGNsYXVzZSIgfQorICBibG9jazsg ZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoMSkgbnVtX3RocmVh ZHMoMikgICEgeyBkZy1lcnJvciAiRHVwbGljYXRlZCAnbnVtX3RocmVhZHMnIGNsYXVzZSIg fQorICBibG9jazsgZW5kIGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGlt cyhbMSwxXSkgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBw b3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFt cyBudW1fdGVhbXMoZGltcygxLjApIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJl IGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisK KyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKGRpbXMoaSkgOiAxKSAgISB7IGRnLWVycm9yICJE SU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBl bmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcyhpKSA6IDEpICAhIHsg ZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0K KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKCAx IC0gMikgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3Np dGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBu dW1fdGVhbXMoZGltcyggaW50ICggY29zKDAuMCkgKSkgOiAxKSAgISBPSworICBibG9jazsg ZW5kIGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoZGltcyhbMSwxXSkg OiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBp bnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRf bGltaXQoZGltcygxLjApIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJlIGEgY29u c3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRv bXAgdGVhbXMgdGhyZWFkX2xpbWl0KGRpbXMoaSkgOiAxKSAgISB7IGRnLWVycm9yICJESU1T IG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQg YmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoZGltcyhpKSA6IDEpICAhIHsg ZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0K KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdChkaW1z KCAxIC0gMikgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBw b3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFt cyB0aHJlYWRfbGltaXQoZGltcyggaW50ICggY29zKDAuMCkgKSkgOiAxKSAgISBPSworICBi bG9jazsgZW5kIGJsb2NrCisKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyhkaW1z KFsxLDFdKSA6IDEpICAhIHsgZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBv c2l0aXZlIGludGVnZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFs bGVsIG51bV90aHJlYWRzKGRpbXMoMS4wKSA6IDEpICAhIHsgZGctZXJyb3IgIkRJTVMgbXVz dCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9j aworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzKGRpbXMoaSkgOiAxKSAgISB7IGRn LWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9Cisg IGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyhkaW1z KGkpIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJlIGEgY29uc3RhbnQgcG9zaXRp dmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwg bnVtX3RocmVhZHMoZGltcyggMSAtIDIpIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0 IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2Nr CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcyggaW50ICggY29zKDAuMCkg KSkgOiAxKSAgISBPSworICBibG9jazsgZW5kIGJsb2NrCitlbmQKKworc3Vicm91dGluZSB0 d28KKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcyggaW50ICggY29zKDAuMCkg KSArIDEgKSA6IDEpICAhIHsgZGctZXJyb3IgIlRoZSBudW1iZXIgb2YgYXJndW1lbnRzIFxc KDFcXCkgbXVzdCBiZSB0aGUgc2FtZSBhcyBzcGVjaWZpZWQgZm9yIERJTVMiIH0KKyAgYmxv Y2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKCAzICkgIDog MSwgMiwgMyAsIDQpICAhIHsgZGctZXJyb3IgIlRoZSBudW1iZXIgb2YgYXJndW1lbnRzIFxc KDRcXCkgbXVzdCBiZSB0aGUgc2FtZSBhcyBzcGVjaWZpZWQgZm9yIERJTVMiIH0KKyAgYmxv Y2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdChkaW1zKCAzICkg OiAxLCA0KSAgISB7IGRnLWVycm9yICJUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBcXCgyXFwp IG11c3QgYmUgdGhlIHNhbWUgYXMgc3BlY2lmaWVkIGZvciBESU1TIiB9CisgIGJsb2NrOyBl bmQgYmxvY2sKK2VuZAorCitzdWJyb3V0aW5lIHRocmVlCisgICEkb21wIHRlYW1zIG51bV90 ZWFtcyAgISB7IGRnLWVycm9yICJFeHBlY3RlZCAnXFwoJyBhZnRlciAnbnVtX3RlYW1zJyIg fQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKCA6ICAh IHsgZGctZXJyb3IgIkV4cGVjdGVkIGVpdGhlciAnXFxcW2xvd2VyLWV4cHIgOiBcXFxdIHVw cGVyLWV4cHInIG9yICdkaW1zXFwoTlxcKTogZXhwci1saXN0JyIgfQorICBibG9jazsgZW5k IGJsb2NrCisKKyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKCAgISB7IGRnLWVycm9yICJFeHBl Y3RlZCBlaXRoZXIgJ1xcXFtsb3dlci1leHByIDogXFxcXSB1cHBlci1leHByJyBvciAnZGlt c1xcKE5cXCk6IGV4cHItbGlzdCciIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21w IHRlYW1zIG51bV90ZWFtcyggZGltcyAhIHsgZGctZXJyb3IgIkZhaWxlZCB0byBtYXRjaCBj bGF1c2UiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFt cyggZGltcygxKSAhIHsgZGctZXJyb3IgIkludmFsaWQgY2hhcmFjdGVyIGluIG5hbWUiIH0K KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyggZGltcygx KSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgZWl0aGVyICdcXFxbbG93ZXItZXhwciA6IFxc XF0gdXBwZXItZXhwcicgb3IgJ2RpbXNcXChOXFwpOiBleHByLWxpc3QnIiB9CisgIGJsb2Nr OyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoIGRpbXMoMSkgOiAxICEg eyBkZy1lcnJvciAiU3ludGF4IGVycm9yIGluIE9wZW5NUCBleHByZXNzaW9uIiB9CisgIGJs b2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoIDUgOiAhIHsgZGct ZXJyb3IgIkludmFsaWQgY2hhcmFjdGVyIGluIG5hbWUiIH0KKyAgYmxvY2s7IGVuZCBibG9j aworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyggNSA6IDUgISB7IGRnLWVycm9yICJGYWls ZWQgdG8gbWF0Y2ggY2xhdXNlIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKK2VuZAorCitzdWJy b3V0aW5lIGZvdXIKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0ICAhIHsgZGctZXJyb3Ig IkV4cGVjdGVkICdcXCgnIGFmdGVyICd0aHJlYWRfbGltaXQnIiB9CisgIGJsb2NrOyBlbmQg YmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIDogICEgeyBkZy1lcnJvciAi RXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9kaWZpZXIiIH0KKyAgYmxvY2s7 IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCggICEgeyBkZy1lcnJv ciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkg YSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhF RCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2Nr OyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIGRpbXMgISB7IGRn LWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBleHByZXNzaW9ucyBmb2xsb3dl ZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRlZCBieSB0aGUgU1RSSUNULCBS RUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBjb2xvbiBhdCAuMS4iIH0KKyAg YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCggZGltcygx KSAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGEgbGlzdCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25z IGZvbGxvd2VkIGJ5IGEgJ1xcKScgYW5kIG9wdGlvbmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBT VFJJQ1QsIFJFTEFYRUQsIG9yIERJTVMgYXMgbW9kaWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4x LiIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0 KCBkaW1zKDEpIDogISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBl eHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRl ZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBj b2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo cmVhZF9saW1pdCggZGltcygxKSA6IDEgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qg b2YgaW50ZWdlciBleHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25h bGx5IHByZWNlZWRlZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlm aWVycyBhbmQgYSBjb2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEk b21wIHRlYW1zIHRocmVhZF9saW1pdCggNSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBs aXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0 aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBt b2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKwor ICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIDUgOiA1ICEgeyBkZy1lcnJvciAiRXhwZWN0 ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBh bmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElN UyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxv Y2sKK2VuZAorCitzdWJyb3V0aW5lIGZpdmUKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVh ZHMgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgJ1xcKCcgYWZ0ZXIgJ251bV90aHJlYWRzJyIg fQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMo IDogICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9k aWZpZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90 aHJlYWRzKCAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBleHBy ZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRlZCBi eSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBjb2xv biBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51 bV90aHJlYWRzKCBkaW1zICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVn ZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVj ZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5k IGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJh bGxlbCBudW1fdGhyZWFkcyggZGltcygxKSAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGEgbGlz dCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25zIGZvbGxvd2VkIGJ5IGEgJ1xcKScgYW5kIG9wdGlv bmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBTVFJJQ1QsIFJFTEFYRUQsIG9yIERJTVMgYXMgbW9k aWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4xLiIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAg ISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoIGRpbXMoMSkgOiAhIHsgZGctZXJyb3IgIkV4 cGVjdGVkIGEgbGlzdCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25zIGZvbGxvd2VkIGJ5IGEgJ1xc KScgYW5kIG9wdGlvbmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBTVFJJQ1QsIFJFTEFYRUQsIG9y IERJTVMgYXMgbW9kaWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4xLiIgfQorICBibG9jazsgZW5k IGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoIGRpbXMoMSkgOiAxICEg eyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9s bG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklD VCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9 CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcygg NSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lv bnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhl IFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQg LjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhy ZWFkcyggNSA6IDUgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBl eHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRl ZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBj b2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworZW5kCisKK3N1YnJvdXRpbmUg c2l4CisgICEkb21wIHRlYW1zIG51bV90ZWFtcyAoZGltcygxKSwgZGltcygxKSA6IDEpICEg eyBkZy1lcnJvciAiSW52YWxpZCBjaGFyYWN0ZXIgaW4gbmFtZSIgfQorICBibG9jazsgZW5k IGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKGRpbXMoMSksIGRpbXMo MSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIiB9Cisg IGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKGRpbXMo MSksIHJlbGF4ZWQsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElN UyBleHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0 aHJlYWRfbGltaXQgKGRpbXMoMSksIHN0cmljdCwgZGltcygxKSA6IDEpICEgeyBkZy1lcnJv ciAiRHVwbGljYXRlZCBESU1TIGV4cHJlc3Npb24iIH0KKyAgYmxvY2s7IGVuZCBibG9jawor CisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0LCByZWxheGVkLCBkaW1zKDEp IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo cmVhZF9saW1pdCAocmVsYXhlZCwgc3RyaWN0LCBkaW1zKDEpIDogMSkgISB7IGRnLWVycm9y ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0 LCByZWxheGVkIDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhF RCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21w IHRlYW1zIHRocmVhZF9saW1pdCAocmVsYXhlZCwgc3RyaWN0IDogMSkgISB7IGRnLWVycm9y ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0 LCBkaW1zKDEpLCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklDVCBv ciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2NrCisK KyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0IChyZWxheGVkLCBkaW1zKDEpLCByZWxheGVk IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo cmVhZF9saW1pdCAoc3RyaWN0LCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25l IFNUUklDVCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5k IGJsb2NrCisKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0IChyZWxheGVkLCByZWxheGVk IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisKKyAgISRvbXAgcGFyYWxs ZWwgbnVtX3RocmVhZHMgKGRpbXMoMSksIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1 cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAh JG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyAoZGltcygxKSwgcmVsYXhlZCwgZGltcygxKSA6 IDEpICEgeyBkZy1lcnJvciAiRHVwbGljYXRlZCBESU1TIGV4cHJlc3Npb24iIH0KKyAgYmxv Y2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChkaW1zKDEp LCBzdHJpY3QsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElNUyBl eHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBu dW1fdGhyZWFkcyAoc3RyaWN0LCByZWxheGVkLCBkaW1zKDEpIDogMSkgISB7IGRnLWVycm9y ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChyZWxh eGVkLCBzdHJpY3QsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklD VCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2Nr CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKHN0cmljdCwgcmVsYXhlZCA6IDEp ICEgeyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVy bWl0dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1f dGhyZWFkcyAocmVsYXhlZCwgc3RyaWN0IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBT VFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBi bG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChzdHJpY3QsIGRpbXMoMSks IHN0cmljdCA6IDEpICEgeyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQg bW9kaWZpZXIgcGVybWl0dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBw YXJhbGxlbCBudW1fdGhyZWFkcyAocmVsYXhlZCwgZGltcygxKSwgcmVsYXhlZCA6IDEpICEg eyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVybWl0 dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhy ZWFkcyAoc3RyaWN0LCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklD VCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2Nr CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKHJlbGF4ZWQsIHJlbGF4ZWQgOiAx KSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklDVCBvciBSRUxBWEVEIG1vZGlmaWVyIHBl cm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2NrCitlbmQgc3Vicm91dGluZQorCitzdWJy b3V0aW5lIHNldmVuCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyAoMiwyKSAgISB7IGRnLWVy cm9yICJGYWlsZWQgdG8gbWF0Y2ggY2xhdXNlIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKwor ICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKDIsMikgICEgeyBkZy1lcnJvciAiV2l0aG91 dCB0aGUgRElNIG1vZGlmaWVyLCBvbmx5IGEgc2luZ2xlIGludGVnZXIgZXhwcmVzc2lvbiBt YXkgYmUgc3BlY2lmaWVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJh bGxlbCBudW1fdGhyZWFkcyAoMiwyKSAgISBPSworICBibG9jazsgZW5kIGJsb2NrCitlbmQK --------------3ucEhVCS4Xix0ekOx7wDyM8q--