<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>311991</bug_id>
          
          <creation_ts>2026-04-10 19:40:24 -0700</creation_ts>
          <short_desc>REGRESSION(310317@main): ASan bot workaround gets landed</short_desc>
          <delta_ts>2026-04-10 19:44:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>311200</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2199037</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-04-10 19:40:24 -0700</bug_when>
    <thetext>https://commits.webkit.org/310317@main introduced a regression:
ASan bot workaround gets landed

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2199039</commentid>
    <comment_count>1</comment_count>
      <attachid>479006</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-04-10 19:41:37 -0700</bug_when>
    <thetext>Created attachment 479006
REVERT of 310317@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2199040</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-10 19:43:55 -0700</bug_when>
    <thetext>Committed 310976@main (de9233f58621): &lt;https://commits.webkit.org/310976@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479006.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2199041</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-10 19:44:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/174539021&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479006</attachid>
            <date>2026-04-10 19:41:37 -0700</date>
            <delta_ts>2026-04-10 19:43:56 -0700</delta_ts>
            <desc>REVERT of 310317@main</desc>
            <filename>bug-311991-20260411024131.patch</filename>
            <type>text/plain</type>
            <size>73319</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAwYzdjZWIyODA1NDI4ZmYwNDdlN2FiNjU5NjhlZTM1ZTNkYmNiZDIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDExIEFwciAyMDI2IDAyOjQxOjE1ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDMxMDMxN0BtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxMTk5MQoKQVNhbiBib3Qgd29ya2Fyb3VuZCBnZXRzIGxhbmRl
ZAoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIlVucmV2aWV3ZWQsIHJldmVydGluZyAzMTAyODJAbWFp
biAoY2Q5Yjk4NjA0ODQwKSIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxMTIwMApodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8zMTAzMTdAbWFpbgotLS0KIC4uLi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCB8ICAgMTAgKy0KIC4uLlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCB8ICAgIDggKy0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWJsZVNvcnQuaCAgICB8ICAzOTQgKysrKysrLQog
SlNUZXN0cy9zbG93TWljcm9iZW5jaG1hcmtzL21hZ2ljLWZvcmVzdC5qcyAgIHwgIDEwMSArKwog
Li4uL3NvcnQtZ2FsbG9waW5nLW1lcmdlLW9wdGltaXphdGlvbnMuanMgICAgIHwgMTA0NiArKysr
KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNDk5IGluc2VydGlvbnMoKyksIDYwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc2xvd01pY3JvYmVuY2htYXJr
cy9tYWdpYy1mb3Jlc3QuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9zb3J0
LWdhbGxvcGluZy1tZXJnZS1vcHRpbWl6YXRpb25zLmpzCgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDQ3YmYwZDg1NDU4NS4uNWVi
ZDNlNzgzYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC05MDAsNyArOTAwLDcgQEAgc3RhdGljIHVuc2lnbmVkIHNvcnRCdWNr
ZXRTb3J0KHN0ZDo6c3BhbjxFbmNvZGVkSlNWYWx1ZT4gc29ydGVkLCB1bnNpZ25lZCBkc3QsIFMK
ICAgICByZXR1cm4gZHN0OwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnNwYW48RW5j
b2RlZEpTVmFsdWU+IHNvcnRTdGFibGVTb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHN0ZDo6c3BhbjxFbmNvZGVkSlNWYWx1ZT4gc29ydGVkLCBzdGQ6OnNwYW48RW5jb2RlZEpTVmFs
dWU+IGNvbXBhY3RlZCwgSlNPYmplY3QqIGNvbXBhcmF0b3IpCitzdGF0aWMgQUxXQVlTX0lOTElO
RSBzdGQ6OnNwYW48RW5jb2RlZEpTVmFsdWU+IHNvcnRTdGFibGVTb3J0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHN0ZDo6c3BhbjxFbmNvZGVkSlNWYWx1ZT4gY29tcGFjdGVkLCBzdGQ6
OnNwYW48RW5jb2RlZEpTVmFsdWU+IHdvcmtpbmdTZXQsIEpTT2JqZWN0KiBjb21wYXJhdG9yKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05MTAsOCArOTEwLDggQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgc3RkOjpzcGFuPEVuY29kZWRKU1ZhbHVlPiBzb3J0U3RhYmxlU29ydChKU0dsb2JhbE9i
amVjdCogZ2wKIAogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpKUykg
W1tsaWtlbHldXSB7CiAgICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChnbG9iYWxPYmplY3Qs
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29tcGFyYXRvciksIDIpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBzb3J0ZWQpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGFycmF5U3RhYmxlU29ydCh2bSwgY29tcGFjdGVkLCBzb3J0ZWQsIFsmXShhdXRvIGxlZnQs
IGF1dG8gcmlnaHQpIEFMV0FZU19JTkxJTkVfTEFNQkRBIHsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgY29tcGFjdGVkKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBhcnJheVN0YWJsZVNvcnQodm0sIGNvbXBhY3RlZCwgd29ya2luZ1NldCwgWyZdKGF1dG8g
bGVmdCwgYXV0byByaWdodCkgQUxXQVlTX0lOTElORV9MQU1CREEgewogICAgICAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgICAgICBKU1ZhbHVl
IGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsV2l0aEFyZ3VtZW50cyhnbG9iYWxPYmplY3QsIGpz
VW5kZWZpbmVkKCksIEpTVmFsdWU6OmRlY29kZShsZWZ0KSwgSlNWYWx1ZTo6ZGVjb2RlKHJpZ2h0
KSk7CkBAIC05MjIsNyArOTIyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpzcGFuPEVu
Y29kZWRKU1ZhbHVlPiBzb3J0U3RhYmxlU29ydChKU0dsb2JhbE9iamVjdCogZ2wKICAgICB9CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYXJyYXlTdGFibGVTb3J0KHZtLCBjb21wYWN0ZWQsIHNvcnRlZCwgWyZdKGF1dG8gbGVm
dCwgYXV0byByaWdodCkgQUxXQVlTX0lOTElORV9MQU1CREEgeworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXJyYXlTdGFibGVTb3J0KHZtLCBjb21wYWN0ZWQsIHdvcmtpbmdTZXQsIFsm
XShhdXRvIGxlZnQsIGF1dG8gcmlnaHQpIEFMV0FZU19JTkxJTkVfTEFNQkRBIHsKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIGFyZ3MuY2xl
YXIoKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc29y
dEltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRoaXNPCiAgICAg
ICAgIHNvcnRCdWNrZXRTb3J0KHNvcnRlZCwgMCwgZW50cmllcywgMCk7CiAgICAgICAgIGRlc3Qg
PSBzb3J0ZWQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVzdCA9IHNvcnRTdGFibGVTb3J0KGds
b2JhbE9iamVjdCwgc29ydGVkLCBjb21wYWN0ZWQsIGFzT2JqZWN0KGNvbXBhcmF0b3JWYWx1ZSkp
OworICAgICAgICBkZXN0ID0gc29ydFN0YWJsZVNvcnQoZ2xvYmFsT2JqZWN0LCBjb21wYWN0ZWQs
IHNvcnRlZCwgYXNPYmplY3QoY29tcGFyYXRvclZhbHVlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAppbmRleCBiYjlkMDJlYzRkMTcuLjQ1MDAwZjc3MDY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBA
IC0xNjkwLDggKzE2OTAsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTb3J0SW1wbChWTSYgdgogICAgIH0KIAogICAg
IGF1dG8gc3JjID0gdmVjdG9yLm11dGFibGVTcGFuKCkuZmlyc3QobGVuZ3RoKTsKLSAgICBhdXRv
IGRzdCA9IHZlY3Rvci5tdXRhYmxlU3BhbigpLnN1YnNwYW4obGVuZ3RoKTsKLSAgICBBU1NFUlQo
ZHN0LnNpemUoKSA9PSBsZW5ndGgpOworICAgIGF1dG8gd29ya2luZ1NldCA9IHZlY3Rvci5tdXRh
YmxlU3BhbigpLnN1YnNwYW4obGVuZ3RoKTsKKyAgICBBU1NFUlQod29ya2luZ1NldC5zaXplKCkg
PT0gbGVuZ3RoKTsKICAgICBBU1NFUlQob3JpZ2luYWxTcGFuLnNpemUoKSA9PSBsZW5ndGgpOwog
ICAgIFdURjo6Y29weUVsZW1lbnRzKHNyYywgc3BhbkNvbnN0Q2FzdDxjb25zdCB0eXBlbmFtZSBW
aWV3Q2xhc3M6OkVsZW1lbnRUeXBlPihvcmlnaW5hbFNwYW4pKTsKIApAQCAtMTcwMCw3ICsxNzAw
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jU29ydEltcGwoVk0mIHYKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBD
YWxsRGF0YTo6VHlwZTo6SlMpIFtbbGlrZWx5XV0gewogICAgICAgICBDYWNoZWRDYWxsIGNhY2hl
ZENhbGwoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbXBhcmF0b3JWYWx1ZSks
IDIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBy
ZXN1bHQgPSBhcnJheVN0YWJsZVNvcnQodm0sIHNyYywgZHN0LCBbJl0oYXV0byBsZWZ0LCBhdXRv
IHJpZ2h0KSBBTFdBWVNfSU5MSU5FX0xBTUJEQSB7CisgICAgICAgIHJlc3VsdCA9IGFycmF5U3Rh
YmxlU29ydCh2bSwgc3JjLCB3b3JraW5nU2V0LCBbJl0oYXV0byBsZWZ0LCBhdXRvIHJpZ2h0KSBB
TFdBWVNfSU5MSU5FX0xBTUJEQSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAgICAgICAgIEpTVmFsdWUgbGVmdFZhbHVlID0gVmlld0Ns
YXNzOjpBZGFwdG9yOjp0b0pTVmFsdWUoZ2xvYmFsT2JqZWN0LCBsZWZ0KTsKQEAgLTE3MTYsNyAr
MTcxNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY1NvcnRJbXBsKFZNJiB2CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKLSAgICAgICAgcmVzdWx0ID0gYXJyYXlTdGFibGVTb3J0KHZtLCBzcmMsIGRz
dCwgWyZdKGF1dG8gbGVmdCwgYXV0byByaWdodCkgQUxXQVlTX0lOTElORV9MQU1CREEgeworICAg
ICAgICByZXN1bHQgPSBhcnJheVN0YWJsZVNvcnQodm0sIHNyYywgd29ya2luZ1NldCwgWyZdKGF1
dG8gbGVmdCwgYXV0byByaWdodCkgQUxXQVlTX0lOTElORV9MQU1CREEgewogICAgICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgICAgICBhcmdz
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFi
bGVTb3J0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFibGVTb3J0LmgKaW5k
ZXggYzA1NzM1ZjY2MTkwLi4xOWRiZjdiZjYyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWJsZVNvcnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFibGVTb3J0LmgKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyNC0yMDI2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDI2IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDYgKzIzLDE5IEBACiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
CisgKiAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4IFB5dGhv
biBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogQWxsIFJpZ2h0cyBSZXNlcnZlZAorICoKKyAqIFBh
cnQgb2YgdGhlIGltcGxlbWVudGF0aW9uLCBlLmcuIGdhbGxvcGluZyBtZXJnZSwgaXMgY29taW5n
IGZyb20gUHl0aG9uJ3MgVGltU29ydC4KKyAqCisgKiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi9tYXN0ZXIvT2JqZWN0cy9saXN0b2JqZWN0LmMKKyAqCisgKiBEZXRhaWxl
ZCBhbmFseXNpcyBhbmQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGNhbiBiZSBmb3Vu
ZCBhdDoKKyAqCisgKiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vYmxvYi9tYXN0
ZXIvT2JqZWN0cy9saXN0c29ydC50eHQKKyAqLwogCiAjcHJhZ21hIG9uY2UKIApAQCAtNzcsNDEg
KzkxLDMzMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGFycmF5SW5zZXJ0aW9uU29ydChW
TSYgdm0sIHN0ZDo6c3BhbjxFbGVtZW50VHlwZT4gc3BhbgogICAgIH0KIH0KIAorLy8gRGV0ZWN0
IGFzY2VuZGluZyBvciBzdHJpY3RseS1kZXNjZW5kaW5nIHJ1biBzdGFydGluZyBhdCBiZWdpbi4K
Ky8vIElmIGRlc2NlbmRpbmcsIHJldmVyc2UgaW4tcGxhY2UgdG8gbWFrZSBhc2NlbmRpbmcgKHN0
YWJsZTogdXNlcyBzdHJpY3QgPCBmb3IgZGVzY2VuZGluZykuCisvLyBSZXR1cm5zIGVuZCBpbmRl
eCAoaW5jbHVzaXZlKSBvZiB0aGUgbm9ybWFsaXplZCBhc2NlbmRpbmcgcnVuLgogdGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIG1lcmdlUG93ZXJzb3J0UnVucyhWTSYgdm0sIHN0ZDo6c3BhbjxFbGVtZW50VHlw
ZT4gZHN0LCBzdGQ6OnNwYW48Y29uc3QgRWxlbWVudFR5cGU+IHNyYywgc2l6ZV90IHNyY0luZGV4
MSwgc2l6ZV90IHNyY0VuZDEsIHNpemVfdCBzcmNJbmRleDIsIHNpemVfdCBzcmNFbmQyLCBjb25z
dCBGdW5jdG9yJiBjb21wYXJhdG9yKQorc3RhdGljIEFMV0FZU19JTkxJTkUgc2l6ZV90IGV4dGVu
ZEFuZE5vcm1hbGl6ZVJ1bihWTSYgdm0sIHN0ZDo6c3BhbjxFbGVtZW50VHlwZT4gc3Bhbiwgc2l6
ZV90IGJlZ2luLCBjb25zdCBGdW5jdG9yJiBjb21wYXJhdG9yKQogewogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHNpemVfdCBsZWZ0ID0gc3JjSW5kZXgx
OwotICAgIHNpemVfdCBsZWZ0RW5kID0gc3JjRW5kMTsKLSAgICBzaXplX3QgcmlnaHQgPSBzcmNJ
bmRleDI7Ci0gICAgc2l6ZV90IHJpZ2h0RW5kID0gc3JjRW5kMjsKKyAgICBzaXplX3QgZW5kID0g
YmVnaW47CisgICAgc2l6ZV90IG51bUVsZW1lbnRzID0gc3Bhbi5zaXplKCk7CisgICAgaWYgKGVu
ZCArIDEgPj0gbnVtRWxlbWVudHMpCisgICAgICAgIHJldHVybiBlbmQ7CisKKyAgICAvLyBDaGVj
ayBpZiB0aGUgcnVuIHN0YXJ0cyBkZXNjZW5kaW5nOiBhW2JlZ2luKzFdIDwgYVtiZWdpbl0gKHN0
cmljdCBmb3Igc3RhYmlsaXR5KS4KKyAgICBib29sIGRlc2NlbmRpbmcgPSBjb21wYXJhdG9yKHNw
YW5bZW5kICsgMV0sIHNwYW5bZW5kXSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RS
QVBTX0RFRkVSUkVEKHNjb3BlLCBlbmQpOworCisgICAgaWYgKGRlc2NlbmRpbmcpIHsKKyAgICAg
ICAgLy8gRXh0ZW5kIHN0cmljdGx5IGRlc2NlbmRpbmcgcnVuLgorICAgICAgICArK2VuZDsKKyAg
ICAgICAgd2hpbGUgKGVuZCArIDEgPCBudW1FbGVtZW50cykgeworICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBjb21wYXJhdG9yKHNwYW5bZW5kICsgMV0sIHNwYW5bZW5kXSk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIGVuZCk7Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICsrZW5kOworICAgICAgICB9CisgICAgICAgIHN0ZDo6cmFuZ2VzOjpyZXZlcnNlKHNwYW4u
c3Vic3BhbihiZWdpbiwgZW5kICsgMSAtIGJlZ2luKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gRXh0ZW5kIGFzY2VuZGluZyBydW4gKG5vbi1zdHJpY3RseTogYVtpKzFdID49IGFbaV0pLgor
ICAgICAgICArK2VuZDsKKyAgICAgICAgd2hpbGUgKGVuZCArIDEgPCBudW1FbGVtZW50cykgewor
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjb21wYXJhdG9yKHNwYW5bZW5kICsgMV0sIHNwYW5b
ZW5kXSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OX1dJVEhfVFJBUFNfREVGRVJS
RUQoc2NvcGUsIGVuZCk7CisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgKytlbmQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBBU1NF
UlQobGVmdEVuZCA8PSByaWdodCk7Ci0gICAgQVNTRVJUKHJpZ2h0RW5kIDw9IHNyYy5zaXplKCkp
OworICAgIHJldHVybiBlbmQ7Cit9CiAKLSAgICBmb3IgKHNpemVfdCBkc3RJbmRleCA9IGxlZnQ7
IGRzdEluZGV4IDwgcmlnaHRFbmQ7ICsrZHN0SW5kZXgpIHsKLSAgICAgICAgaWYgKHJpZ2h0IDwg
cmlnaHRFbmQpIHsKLSAgICAgICAgICAgIGlmIChsZWZ0ID49IGxlZnRFbmQpIHsKLSAgICAgICAg
ICAgICAgICBkc3RbZHN0SW5kZXhdID0gc3JjW3JpZ2h0KytdOwotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjb21wYXJh
dG9yKHNyY1tyaWdodF0sIHNyY1tsZWZ0XSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAgICBpZiAo
cmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgZHN0W2RzdEluZGV4XSA9IHNyY1tyaWdodCsrXTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKKy8vIGdhbGxvcExlZnQ6IEZpbmQgdGhlIGxlZnRt
b3N0IHBvc2l0aW9uIHdoZXJlIGtleSBzaG91bGQgYmUgaW5zZXJ0ZWQgKGJlZm9yZSBlcXVhbCBl
bGVtZW50cykuCisvLyBSZXR1cm5zIGsgaW4gWzAsIGxlbmd0aF0gc3VjaCB0aGF0IGJhc2Vbay0x
XSA8IGtleSA8PSBiYXNlW2tdLgorLy8gaGludCBpcyBhIHN0YXJ0aW5nIGluZGV4IGZvciB0aGUg
ZXhwb25lbnRpYWwgc2VhcmNoLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHR5cGVu
YW1lIEZ1bmN0b3I+CitzdGF0aWMgQUxXQVlTX0lOTElORSBzaXplX3QgZ2FsbG9wTGVmdChWTSYg
dm0sIGNvbnN0IEVsZW1lbnRUeXBlJiBrZXksIGNvbnN0IEVsZW1lbnRUeXBlKiBiYXNlLCBzaXpl
X3QgbGVuZ3RoLCBzaXplX3QgaGludCwgY29uc3QgRnVuY3RvciYgY29tcGFyYXRvcikKK3sKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQoaGlu
dCA8IGxlbmd0aCk7CisKKyAgICBzaXplX3QgbGFzdE9mZnNldCA9IDA7CisgICAgc2l6ZV90IG9m
ZnNldCA9IDE7CisKKyAgICAvLyBiYXNlW2hpbnRdIDwga2V5ID0+IGdhbGxvcCByaWdodAorICAg
IGJvb2wgaGludExlc3NUaGFuS2V5ID0gY29tcGFyYXRvcihiYXNlW2hpbnRdLCBrZXkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgMCk7CisKKyAg
ICBpZiAoaGludExlc3NUaGFuS2V5KSB7CisgICAgICAgIC8vIEdhbGxvcCByaWdodDogYVtoaW50
XSA8IGtleSwgc28gc2VhcmNoIGluIChoaW50LCBsZW5ndGgpLgorICAgICAgICBzaXplX3QgbWF4
T2Zmc2V0ID0gbGVuZ3RoIC0gaGludDsKKyAgICAgICAgd2hpbGUgKG9mZnNldCA8IG1heE9mZnNl
dCkgeworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjb21wYXJhdG9yKGJhc2VbaGludCArIG9m
ZnNldF0sIGtleSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OX1dJVEhfVFJBUFNf
REVGRVJSRUQoc2NvcGUsIDApOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBsYXN0T2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAg
ICAgc2l6ZV90IG5leHRPZmZzZXQgPSAob2Zmc2V0IDw8IDEpICsgMTsKKyAgICAgICAgICAgIG9m
ZnNldCA9IG5leHRPZmZzZXQgPiBvZmZzZXQgPyBzdGQ6Om1pbihuZXh0T2Zmc2V0LCBtYXhPZmZz
ZXQpIDogbWF4T2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGxhc3RPZmZzZXQgKz0gaGludDsK
KyAgICAgICAgb2Zmc2V0ICs9IGhpbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR2FsbG9w
IGxlZnQ6IGFbaGludF0gPj0ga2V5LCBzbyBzZWFyY2ggaW4gWzAsIGhpbnQpLgorICAgICAgICBz
aXplX3QgbWF4T2Zmc2V0ID0gaGludCArIDE7CisgICAgICAgIHdoaWxlIChvZmZzZXQgPCBtYXhP
ZmZzZXQpIHsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY29tcGFyYXRvcihiYXNlW2hpbnQg
LSBvZmZzZXRdLCBrZXkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RS
QVBTX0RFRkVSUkVEKHNjb3BlLCAwKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBsYXN0T2Zmc2V0ID0gb2Zmc2V0OworICAgICAg
ICAgICAgc2l6ZV90IG5leHRPZmZzZXQgPSAob2Zmc2V0IDw8IDEpICsgMTsKKyAgICAgICAgICAg
IG9mZnNldCA9IG5leHRPZmZzZXQgPiBvZmZzZXQgPyBzdGQ6Om1pbihuZXh0T2Zmc2V0LCBtYXhP
ZmZzZXQpIDogbWF4T2Zmc2V0OworICAgICAgICB9CisgICAgICAgIHNpemVfdCB0bXAgPSBsYXN0
T2Zmc2V0OworICAgICAgICBsYXN0T2Zmc2V0ID0gaGludCAtIG9mZnNldDsKKyAgICAgICAgb2Zm
c2V0ID0gaGludCAtIHRtcDsKKyAgICB9CisKKyAgICAvLyBOb3cgYmFzZVtsYXN0T2Zmc2V0XSA8
IGtleSA8PSBiYXNlW29mZnNldF0sIGJpbmFyeSBzZWFyY2ggaW4gKGxhc3RPZmZzZXQsIG9mZnNl
dF0uCisgICAgKytsYXN0T2Zmc2V0OworICAgIHdoaWxlIChsYXN0T2Zmc2V0IDwgb2Zmc2V0KSB7
CisgICAgICAgIHNpemVfdCBtID0gbGFzdE9mZnNldCArICgob2Zmc2V0IC0gbGFzdE9mZnNldCkg
Pj4gMSk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gY29tcGFyYXRvcihiYXNlW21dLCBrZXkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIDAp
OworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgbGFzdE9mZnNldCA9IG0gKyAxOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBvZmZzZXQgPSBtOworICAgIH0KKworICAgIHJldHVy
biBvZmZzZXQ7Cit9CisKKy8vIGdhbGxvcFJpZ2h0OiBGaW5kIHRoZSByaWdodG1vc3QgcG9zaXRp
b24gd2hlcmUga2V5IHNob3VsZCBiZSBpbnNlcnRlZCAoYWZ0ZXIgZXF1YWwgZWxlbWVudHMpLgor
Ly8gUmV0dXJucyBrIGluIFswLCBsZW5ndGhdIHN1Y2ggdGhhdCBiYXNlW2stMV0gPD0ga2V5IDwg
YmFzZVtrXS4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCB0eXBlbmFtZSBGdW5jdG9y
Pgorc3RhdGljIEFMV0FZU19JTkxJTkUgc2l6ZV90IGdhbGxvcFJpZ2h0KFZNJiB2bSwgY29uc3Qg
RWxlbWVudFR5cGUmIGtleSwgY29uc3QgRWxlbWVudFR5cGUqIGJhc2UsIHNpemVfdCBsZW5ndGgs
IHNpemVfdCBoaW50LCBjb25zdCBGdW5jdG9yJiBjb21wYXJhdG9yKQoreworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFTU0VSVChoaW50IDwgbGVuZ3Ro
KTsKKworICAgIHNpemVfdCBsYXN0T2Zmc2V0ID0gMDsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMTsK
KworICAgIC8vIGtleSA8IGJhc2VbaGludF0gPT4gZ2FsbG9wIGxlZnQKKyAgICBib29sIGtleUxl
c3NUaGFuSGludCA9IGNvbXBhcmF0b3Ioa2V5LCBiYXNlW2hpbnRdKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIDApOworCisgICAgaWYgKGtleUxl
c3NUaGFuSGludCkgeworICAgICAgICAvLyBHYWxsb3AgbGVmdDoga2V5IDwgYVtoaW50XSwgc28g
c2VhcmNoIGluIFswLCBoaW50KS4KKyAgICAgICAgc2l6ZV90IG1heE9mZnNldCA9IGhpbnQgKyAx
OworICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbWF4T2Zmc2V0KSB7CisgICAgICAgICAgICBib29s
IHJlc3VsdCA9IGNvbXBhcmF0b3Ioa2V5LCBiYXNlW2hpbnQgLSBvZmZzZXRdKTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgMCk7Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGxhc3RPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBzaXplX3QgbmV4dE9mZnNldCA9
IChvZmZzZXQgPDwgMSkgKyAxOworICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldCA+IG9m
ZnNldCA/IHN0ZDo6bWluKG5leHRPZmZzZXQsIG1heE9mZnNldCkgOiBtYXhPZmZzZXQ7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gVHJhbnNsYXRlIGJhY2sgdG8gcG9zaXRpdmUgb2Zmc2V0cyBmcm9t
IGJhc2UuCisgICAgICAgIHNpemVfdCB0bXAgPSBsYXN0T2Zmc2V0OworICAgICAgICBsYXN0T2Zm
c2V0ID0gaGludCAtIG9mZnNldDsKKyAgICAgICAgb2Zmc2V0ID0gaGludCAtIHRtcDsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBHYWxsb3AgcmlnaHQ6IGtleSA+PSBhW2hpbnRdLCBzbyBzZWFy
Y2ggaW4gKGhpbnQsIGxlbmd0aCkuCisgICAgICAgIHNpemVfdCBtYXhPZmZzZXQgPSBsZW5ndGgg
LSBoaW50OworICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbWF4T2Zmc2V0KSB7CisgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IGNvbXBhcmF0b3Ioa2V5LCBiYXNlW2hpbnQgKyBvZmZzZXRdKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwg
MCk7CisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgbGFzdE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICAgIHNpemVfdCBuZXh0T2Zm
c2V0ID0gKG9mZnNldCA8PCAxKSArIDE7CisgICAgICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0
ID4gb2Zmc2V0ID8gc3RkOjptaW4obmV4dE9mZnNldCwgbWF4T2Zmc2V0KSA6IG1heE9mZnNldDsK
KyAgICAgICAgfQorICAgICAgICAvLyBUcmFuc2xhdGUgdG8gYWJzb2x1dGUgb2Zmc2V0cy4KKyAg
ICAgICAgbGFzdE9mZnNldCArPSBoaW50OworICAgICAgICBvZmZzZXQgKz0gaGludDsKKyAgICB9
CisKKyAgICAvLyBOb3cgYmFzZVtsYXN0T2Zmc2V0XSA8PSBrZXkgPCBiYXNlW29mZnNldF0sIGJp
bmFyeSBzZWFyY2ggaW4gKGxhc3RPZmZzZXQsIG9mZnNldF0uCisgICAgKytsYXN0T2Zmc2V0Owor
ICAgIHdoaWxlIChsYXN0T2Zmc2V0IDwgb2Zmc2V0KSB7CisgICAgICAgIHNpemVfdCBtID0gbGFz
dE9mZnNldCArICgob2Zmc2V0IC0gbGFzdE9mZnNldCkgPj4gMSk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gY29tcGFyYXRvcihrZXksIGJhc2VbbV0pOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIDApOworICAgICAgICBpZiAocmVzdWx0KQor
ICAgICAgICAgICAgb2Zmc2V0ID0gbTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGFzdE9m
ZnNldCA9IG0gKyAxOworICAgIH0KKworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK3N0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1pbkdhbGxvcFRocmVzaG9sZCA9IDc7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBtZXJnZVBvd2Vyc29ydFJ1bnMoVk0mIHZtLCBzdGQ6OnNwYW48RWxlbWVudFR5cGU+IGRz
dCwgc3RkOjpzcGFuPGNvbnN0IEVsZW1lbnRUeXBlPiBzcmMsIHNpemVfdCBzcmNJbmRleDEsIHNp
emVfdCBzcmNFbmQxLCBzaXplX3Qgc3JjSW5kZXgyLCBzaXplX3Qgc3JjRW5kMiwgY29uc3QgRnVu
Y3RvciYgY29tcGFyYXRvciwgc2l6ZV90JiBtaW5HYWxsb3ApCit7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQVNTRVJUKHNyY0VuZDEgPD0gc3JjSW5k
ZXgyKTsKKyAgICBBU1NFUlQoc3JjRW5kMiA8PSBzcmMuc2l6ZSgpKTsKKworICAgIHNpemVfdCBs
ZWZ0TGVuZ3RoID0gc3JjRW5kMSAtIHNyY0luZGV4MTsKKyAgICBzaXplX3QgcmlnaHRMZW5ndGgg
PSBzcmNFbmQyIC0gc3JjSW5kZXgyOworCisgICAgLy8gRWl0aGVyIHJ1biBpcyBlbXB0eS4gSnVz
dCBjb3B5IGVudGlyZSB0d28gY29uc2VjdXRpdmUgcnVucyBpbnRvIGRlc3RpbmF0aW9uLgorICAg
IGlmICghbGVmdExlbmd0aCB8fCAhcmlnaHRMZW5ndGgpIHsKKyAgICAgICAgV1RGOjpjb3B5RWxl
bWVudHMoZHN0LnN1YnNwYW4oc3JjSW5kZXgxLCBzcmNFbmQyIC0gc3JjSW5kZXgxKSwgc3JjLnN1
YnNwYW4oc3JjSW5kZXgxLCBzcmNFbmQyIC0gc3JjSW5kZXgxKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBQcmUtbWVyZ2UgdHJpbTogc2tpcCBsZWFkaW5nIGVsZW1lbnRzIG9m
IGxlZnQgdGhhdCBhcmUgYWxyZWFkeSBpbiBwbGFjZS4KKyAgICAvLyBJZiB0aGUgcmlnaHQgcnVu
J3MgZmlyc3QgZWxlbWVudCBjYW4gYmUgaW5zZXJ0ZWQgaW50byBza2lwTGVmdCBwb3NpdGlvbiwK
KyAgICAvLyBbc3JjSW5kZXgsIHNraXBMZWZ0KSBzb3J0ZWQgb25lcyBhcmUgbG93ZXIgdGhhbiBh
bnkgb2YgcmlnaHQgcnVuJ3MgZWxlbWVudC4KKyAgICAvLyBUaHVzIGNvcHkgdGhlbSBpbnRvIHRo
ZSBkZXN0aW5hdGlvbidzIGxvd2VzdCBhcmVhLgorICAgIHNpemVfdCBza2lwTGVmdCA9IGdhbGxv
cFJpZ2h0KHZtLCBzcmNbc3JjSW5kZXgyXSwgc3JjLmRhdGEoKSArIHNyY0luZGV4MSwgbGVmdExl
bmd0aCwgMCwgY29tcGFyYXRvcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RSQVBT
X0RFRkVSUkVEKHNjb3BlLCB2b2lkKCkpOworCisgICAgLy8gQ29weSB0aGUgYWxyZWFkeS1pbi1w
bGFjZSBsZWFkaW5nIGVsZW1lbnRzLgorICAgIGlmIChza2lwTGVmdCkKKyAgICAgICAgV1RGOjpj
b3B5RWxlbWVudHMoZHN0LnN1YnNwYW4oc3JjSW5kZXgxLCBza2lwTGVmdCksIHNyYy5zdWJzcGFu
KHNyY0luZGV4MSwgc2tpcExlZnQpKTsKKworICAgIHNpemVfdCBsZWZ0ID0gc3JjSW5kZXgxICsg
c2tpcExlZnQ7CisgICAgbGVmdExlbmd0aCAtPSBza2lwTGVmdDsKKworICAgIGlmICghbGVmdExl
bmd0aCkgeworICAgICAgICAvLyBBbGwgb2YgbGVmdCBpcyA8PSBmaXJzdCBlbGVtZW50IG9mIHJp
Z2h0OyBqdXN0IGNvcHkgcmlnaHQuCisgICAgICAgIFdURjo6Y29weUVsZW1lbnRzKGRzdC5zdWJz
cGFuKHNyY0luZGV4MiwgcmlnaHRMZW5ndGgpLCBzcmMuc3Vic3BhbihzcmNJbmRleDIsIHJpZ2h0
TGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBQcmUtbWVyZ2UgdHJp
bTogc2tpcCB0cmFpbGluZyBlbGVtZW50cyBvZiByaWdodCB0aGF0IGFyZSBhbHJlYWR5IGluIHBs
YWNlLgorICAgIC8vIElmIHRoZSBsZWZ0IHJ1bidzIGxhc3QgZWxlbWVudCBjYW4gYmUgaW5zZXJ0
ZWQgaW50byBhIHBvc2l0aW9uLAorICAgIC8vIGVsZW1lbnRzIGFmdGVyIHRoYXQgaW4gdGhlIHJp
Z2h0IHJ1biBzaG91bGQgYmUgaW4gdGhlIGRlc3RpbmF0aW9uJ3MgaGlnaGVzdCBhcmVhLgorICAg
IHNpemVfdCBza2lwUmlnaHQgPSByaWdodExlbmd0aCAtIGdhbGxvcExlZnQodm0sIHNyY1tzcmNF
bmQxIC0gMV0sIHNyYy5kYXRhKCkgKyBzcmNJbmRleDIsIHJpZ2h0TGVuZ3RoLCByaWdodExlbmd0
aCAtIDEsIGNvbXBhcmF0b3IpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19E
RUZFUlJFRChzY29wZSwgdm9pZCgpKTsKKworICAgIC8vIENvcHkgdGhlIGFscmVhZHktaW4tcGxh
Y2UgdHJhaWxpbmcgZWxlbWVudHMuCisgICAgaWYgKHNraXBSaWdodCkKKyAgICAgICAgV1RGOjpj
b3B5RWxlbWVudHMoZHN0LnN1YnNwYW4oc3JjRW5kMiAtIHNraXBSaWdodCwgc2tpcFJpZ2h0KSwg
c3JjLnN1YnNwYW4oc3JjRW5kMiAtIHNraXBSaWdodCwgc2tpcFJpZ2h0KSk7CisKKyAgICBjb25z
dCBzaXplX3QgcmlnaHRFbmQgPSBzcmNFbmQyIC0gc2tpcFJpZ2h0OworICAgIHJpZ2h0TGVuZ3Ro
IC09IHNraXBSaWdodDsKKworICAgIGlmICghcmlnaHRMZW5ndGgpIHsKKyAgICAgICAgLy8gQWxs
IG9mIHJpZ2h0IGlzID49IGxhc3QgZWxlbWVudCBvZiBsZWZ0OyBqdXN0IGNvcHkgbGVmdC4KKyAg
ICAgICAgV1RGOjpjb3B5RWxlbWVudHMoZHN0LnN1YnNwYW4obGVmdCwgbGVmdExlbmd0aCksIHNy
Yy5zdWJzcGFuKGxlZnQsIGxlZnRMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVChsZWZ0TGVuZ3RoKTsKKyAgICBBU1NFUlQocmlnaHRMZW5ndGgpOworCisgICAg
Ly8gTWVyZ2Ugd2l0aCBnYWxsb3BpbmcgbW9kZS4gQWZ0ZXIgcHJlLW1lcmdlIHRyaW0sIG5ldyBy
YW5nZSBpcyBbbGVmdCwgbGVmdEVuZCkgYW5kIFtyaWdodCwgcmlnaHRFbmQpLgorICAgIGNvbnN0
IHNpemVfdCBsZWZ0RW5kID0gc3JjRW5kMTsKKyAgICBzaXplX3QgcmlnaHQgPSBzcmNJbmRleDI7
CisgICAgc2l6ZV90IGRzdEluZGV4ID0gbGVmdDsKKyAgICBzaXplX3QgbGVmdFdpbnMgPSAwOwor
ICAgIHNpemVfdCByaWdodFdpbnMgPSAwOworCisgICAgZm9yICg7OykgeworICAgICAgICAvLyBM
aW5lYXIgbWVyZ2UgdW50aWwgb25lIHNpZGUgd2lucyBtaW5HYWxsb3AgdGltZXMgY29uc2VjdXRp
dmVseS4KKyAgICAgICAgbGVmdFdpbnMgPSAwOworICAgICAgICByaWdodFdpbnMgPSAwOworCisg
ICAgICAgIHdoaWxlIChsZWZ0V2lucyA8IG1pbkdhbGxvcCAmJiByaWdodFdpbnMgPCBtaW5HYWxs
b3ApIHsKKyAgICAgICAgICAgIGlmIChyaWdodCA8IHJpZ2h0RW5kICYmIGxlZnQgPCBsZWZ0RW5k
KSB7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjb21wYXJhdG9yKHNyY1tyaWdodF0s
IHNyY1tsZWZ0XSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RS
QVBTX0RFRkVSUkVEKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQp
IHsKKyAgICAgICAgICAgICAgICAgICAgZHN0W2RzdEluZGV4KytdID0gc3JjW3JpZ2h0KytdOwor
ICAgICAgICAgICAgICAgICAgICArK3JpZ2h0V2luczsKKyAgICAgICAgICAgICAgICAgICAgbGVm
dFdpbnMgPSAwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGRzdFtkc3RJbmRleCsrXSA9IHNyY1tsZWZ0KytdOworICAgICAgICAgICAgICAgICAgICArK2xl
ZnRXaW5zOworICAgICAgICAgICAgICAgICAgICByaWdodFdpbnMgPSAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT25lIHNpZGUg
b2YgcnVuIGdldHMgZXhoYXVzdGVkLiBMZXQncyBqdXN0IGNvcHkgdGhlIHJlc3QuCisgICAgICAg
ICAgICAgICAgZ290byBtZXJnZUZpbmlzaDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGRzdFtkc3RJbmRleF0gPSBzcmNbbGVmdCsrXTsKKyAgICAgICAgLy8gR2FsbG9waW5n
IG1vZGU6IG9uZSBzaWRlIGlzIHdpbm5pbmcgY29uc2lzdGVudGx5LgorICAgICAgICAvLyBJbmNy
ZWFzZSBtaW5HYWxsb3AgdG8gbWFrZSBpdCBoYXJkZXIgdG8gcmUtZW50ZXIgZ2FsbG9waW5nIChw
ZW5hbGl6ZSBsZWF2aW5nKS4KKyAgICAgICAgKyttaW5HYWxsb3A7CisKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgLy8gRGVjcmVhc2UgbWluR2FsbG9wIHdoaWxlIGdhbGxvcGluZyBpcyBwcm9k
dWN0aXZlLgorICAgICAgICAgICAgaWYgKG1pbkdhbGxvcCA+IDEpCisgICAgICAgICAgICAgICAg
LS1taW5HYWxsb3A7CisKKyAgICAgICAgICAgIGlmIChsZWZ0ID49IGxlZnRFbmQgfHwgcmlnaHQg
Pj0gcmlnaHRFbmQpCisgICAgICAgICAgICAgICAgZ290byBtZXJnZUZpbmlzaDsKKworICAgICAg
ICAgICAgLy8gR2FsbG9wIGluIGxlZnQgcnVuIGZvciByaWdodCdzIGN1cnJlbnQgZWxlbWVudC4K
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgayA9IGdhbGxvcFJpZ2h0KHZt
LCBzcmNbcmlnaHRdLCBzcmMuZGF0YSgpICsgbGVmdCwgbGVmdEVuZCAtIGxlZnQsIDAsIGNvbXBh
cmF0b3IpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19E
RUZFUlJFRChzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgICAgICBsZWZ0V2lucyA9IGs7Cisg
ICAgICAgICAgICAgICAgaWYgKGspIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gayBlbGVtZW50
cyBpbiB0aGUgbGVmdCBhcmUgbG93ZXIgdGhhbiByaWdodCBlbGVtZW50cy4gSnVzdCBjb3B5IHRo
ZW0uCisgICAgICAgICAgICAgICAgICAgIFdURjo6Y29weUVsZW1lbnRzKGRzdC5zdWJzcGFuKGRz
dEluZGV4LCBrKSwgc3JjLnN1YnNwYW4obGVmdCwgaykpOworICAgICAgICAgICAgICAgICAgICBk
c3RJbmRleCArPSBrOworICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IGs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGRzdFtkc3RJbmRleCsrXSA9IHNyY1tyaWdodCsrXTsK
KworICAgICAgICAgICAgICAgIGlmIChsZWZ0ID49IGxlZnRFbmQgfHwgcmlnaHQgPj0gcmlnaHRF
bmQpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gbWVyZ2VGaW5pc2g7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEdhbGxvcCBpbiByaWdodCBydW4gZm9yIGxlZnQncyBjdXJyZW50
IGVsZW1lbnQuCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGsgPSBnYWxs
b3BMZWZ0KHZtLCBzcmNbbGVmdF0sIHNyYy5kYXRhKCkgKyByaWdodCwgcmlnaHRFbmQgLSByaWdo
dCwgMCwgY29tcGFyYXRvcik7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9X
SVRIX1RSQVBTX0RFRkVSUkVEKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgIHJpZ2h0
V2lucyA9IGs7CisgICAgICAgICAgICAgICAgaWYgKGspIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gayBlbGVtZW50cyBpbiB0aGUgcmlnaHQgYXJlIGxvd2VyIHRoYW4gbGVmdCBlbGVtZW50cy4g
SnVzdCBjb3B5IHRoZW0uCisgICAgICAgICAgICAgICAgICAgIFdURjo6Y29weUVsZW1lbnRzKGRz
dC5zdWJzcGFuKGRzdEluZGV4LCBrKSwgc3JjLnN1YnNwYW4ocmlnaHQsIGspKTsKKyAgICAgICAg
ICAgICAgICAgICAgZHN0SW5kZXggKz0gazsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgKz0g
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZHN0W2RzdEluZGV4KytdID0g
c3JjW2xlZnQrK107CisKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA+PSBsZWZ0RW5kIHx8IHJp
Z2h0ID49IHJpZ2h0RW5kKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG1lcmdlRmluaXNoOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChsZWZ0V2lucyA+PSBtaW5HYWxsb3BUaHJl
c2hvbGQgfHwgcmlnaHRXaW5zID49IG1pbkdhbGxvcFRocmVzaG9sZCk7CisKKyAgICAgICAgLy8g
TGVhdmluZyBnYWxsb3BpbmcgbW9kZTsgcGVuYWxpemUuCisgICAgICAgICsrbWluR2FsbG9wOwog
ICAgIH0KKworbWVyZ2VGaW5pc2g6CisgICAgLy8gQ29weSByZW1haW5pbmcgZWxlbWVudHMuCisg
ICAgd2hpbGUgKGxlZnQgPCBsZWZ0RW5kKQorICAgICAgICBkc3RbZHN0SW5kZXgrK10gPSBzcmNb
bGVmdCsrXTsKKyAgICB3aGlsZSAocmlnaHQgPCByaWdodEVuZCkKKyAgICAgICAgZHN0W2RzdElu
ZGV4KytdID0gc3JjW3JpZ2h0KytdOwogfQogCiAvLyBKLiBJYW4gTXVucm8gYW5kIFNlYmFzdGlh
biBXaWxkLiBOZWFybHktT3B0aW1hbCBNZXJnZXNvcnRzOiBGYXN0LCBQcmFjdGljYWwgU29ydGlu
ZyBNZXRob2RzIFRoYXQKIC8vIE9wdGltYWxseSBBZGFwdCB0byBFeGlzdGluZyBSdW5zLiBJbiAy
NnRoIEFubnVhbCBFdXJvcGVhbiBTeW1wb3NpdW0gb24gQWxnb3JpdGhtcyAoRVNBIDIwMTgpLgog
Ly8gTGVpYm5peiBJbnRlcm5hdGlvbmFsIFByb2NlZWRpbmdzIGluIEluZm9ybWF0aWNzIChMSVBJ
Y3MpLCBWb2x1bWUgMTEyLCBwcC4gNjM6MS02MzoxNiwgU2NobG9zcwogLy8gRGFnc3R1aGwg4oCT
IExlaWJuaXotWmVudHJ1bSBmw7xyIEluZm9ybWF0aWsgKDIwMTgpIGh0dHBzOi8vZG9pLm9yZy8x
MC40MjMwL0xJUEljcy5FU0EuMjAxOC42MworLy8gaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE4MDUu
MDQxNTQKIAogc3RydWN0IFNvcnRlZFJ1biB7CiAgICAgc2l6ZV90IG1fYmVnaW47CkBAIC0xMTks
NyArNDI0LDcgQEAgc3RydWN0IFNvcnRlZFJ1biB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgdHlwZW5hbWUgRnVuY3Rvciwgc2l6ZV90IGZvcmNlUnVuTGVuZ3RoID0gNjQ+
Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnNwYW48RWxlbWVudFR5cGU+IGFycmF5U3RhYmxl
U29ydChWTSYgdm0sIHN0ZDo6c3BhbjxFbGVtZW50VHlwZT4gc3JjLCBzdGQ6OnNwYW48RWxlbWVu
dFR5cGU+IGRzdCwgY29uc3QgRnVuY3RvciYgY29tcGFyYXRvcikKK3N0YXRpYyBBTFdBWVNfSU5M
SU5FIHN0ZDo6c3BhbjxFbGVtZW50VHlwZT4gYXJyYXlTdGFibGVTb3J0KFZNJiB2bSwgc3RkOjpz
cGFuPEVsZW1lbnRUeXBlPiBzcmMsIHN0ZDo6c3BhbjxFbGVtZW50VHlwZT4gd29ya2luZ1NldCwg
Y29uc3QgRnVuY3RvciYgY29tcGFyYXRvcikKIHsKICAgICBjb25zdGV4cHIgc2l6ZV90IGV4dGVu
ZFJ1bkN1dG9mZiA9IDg7CiAKQEAgLTE1NSwxMSArNDYwLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgc3RkOjpzcGFuPEVsZW1lbnRUeXBlPiBhcnJheVN0YWJsZVNvcnQoVk0mIHZtLCBzdGQ6OnNw
YW48RWwKICAgICAgICAgcmV0dXJuIGNseihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGlmZmVyaW5n
Qml0cykpOwogICAgIH07CiAKLSAgICBhdXRvIHRvID0gZHN0OwotICAgIGF1dG8gZnJvbSA9IHNy
YzsKLQotICAgIFdURjo6Y29weUVsZW1lbnRzKHRvLCBzcGFuQ29uc3RDYXN0PGNvbnN0IEVsZW1l
bnRUeXBlPihmcm9tKSk7Ci0KICAgICBzdHJ1Y3QgUG93ZXJzb3J0U3RhY2tFbnRyeSB7CiAgICAg
ICAgIFNvcnRlZFJ1biBydW47CiAgICAgICAgIHVuc2lnbmVkIHBvd2VyOwpAQCAtMTY5LDI4ICs0
NjksMjUgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpzcGFuPEVsZW1lbnRUeXBlPiBhcnJh
eVN0YWJsZVNvcnQoVk0mIHZtLCBzdGQ6OnNwYW48RWwKICAgICAvLyBmbG9vcihsZyhuKSkgKyAx
CiAgICAgcG93ZXJzdGFjay5yZXNlcnZlQ2FwYWNpdHkoOCAqIHNpemVvZihudW1FbGVtZW50cykg
LSBXVEY6OmNseihudW1FbGVtZW50cykpOwogCisgICAgc2l6ZV90IG1pbkdhbGxvcCA9IG1pbkdh
bGxvcFRocmVzaG9sZDsKKwogICAgIFNvcnRlZFJ1biBydW4xIHsgMCwgMCB9OwogCi0gICAgLy8g
RXh0ZW5kUnVuUmlnaHQocnVuMS5zdGFydCwgbikKLSAgICB3aGlsZSAocnVuMS5tX2VuZCArIDEg
PCBudW1FbGVtZW50cykgewotICAgICAgICBib29sIHJlc3VsdCA9IGNvbXBhcmF0b3IoZnJvbVty
dW4xLm1fZW5kICsgMV0sIGZyb21bcnVuMS5tX2VuZF0pOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OX1dJVEhfVFJBUFNfREVGRVJSRUQoc2NvcGUsIHNyYyk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKytydW4xLm1fZW5kOwotICAgIH0KKyAg
ICAvLyBEZXRlY3QgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgcnVuLCBub3JtYWxpemUgdG8gYXNj
ZW5kaW5nLgorICAgIHJ1bjEubV9lbmQgPSBleHRlbmRBbmROb3JtYWxpemVSdW4odm0sIHNyYywg
cnVuMS5tX2JlZ2luLCBjb21wYXJhdG9yKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OX1dJVEhf
VFJBUFNfREVGRVJSRUQoc2NvcGUsIHNyYyk7CiAKICAgICBpZiAocnVuMS5tX2VuZCAtIHJ1bjEu
bV9iZWdpbiA8IGV4dGVuZFJ1bkN1dG9mZikgewogICAgICAgICAvLyBJZiB0aGUgcnVuIGlzIHRv
byBzaG9ydCwgaW5zZXJ0aW9uIHNvcnQgYSBiaXQKICAgICAgICAgYXV0byBzaXplID0gc3RkOjpt
aW4oZm9yY2VSdW5MZW5ndGgsIG51bUVsZW1lbnRzIC0gcnVuMS5tX2JlZ2luKTsKLSAgICAgICAg
YXJyYXlJbnNlcnRpb25Tb3J0KHZtLCBmcm9tLnN1YnNwYW4ocnVuMS5tX2JlZ2luLCBzaXplKSwg
Y29tcGFyYXRvciwgcnVuMS5tX2VuZCAtIHJ1bjEubV9iZWdpbik7CisgICAgICAgIGFycmF5SW5z
ZXJ0aW9uU29ydCh2bSwgc3JjLnN1YnNwYW4ocnVuMS5tX2JlZ2luLCBzaXplKSwgY29tcGFyYXRv
ciwgcnVuMS5tX2VuZCAtIHJ1bjEubV9iZWdpbik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgc3JjKTsKICAgICAgICAgcnVuMS5tX2VuZCA9
IHJ1bjEubV9iZWdpbiArIHNpemUgLSAxOwogICAgIH0KIAogICAgIC8vIFNlZSBpZiB3ZSBjYW4g
ZXh0ZW5kIHRoZSBydW4gYW55IG1vcmUuCiAgICAgd2hpbGUgKHJ1bjEubV9lbmQgKyAxIDwgbnVt
RWxlbWVudHMpIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBjb21wYXJhdG9yKGZyb21bcnVuMS5t
X2VuZCArIDFdLCBmcm9tW3J1bjEubV9lbmRdKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjb21w
YXJhdG9yKHNyY1tydW4xLm1fZW5kICsgMV0sIHNyY1tydW4xLm1fZW5kXSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgc3JjKTsKICAgICAg
ICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDI2ICs0OTcsMjEgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpzcGFuPEVsZW1lbnRUeXBlPiBhcnJheVN0YWJsZVNv
cnQoVk0mIHZtLCBzdGQ6OnNwYW48RWwKICAgICB3aGlsZSAocnVuMS5tX2VuZCArIDEgPCBudW1F
bGVtZW50cykgewogICAgICAgICBTb3J0ZWRSdW4gcnVuMiB7IHJ1bjEubV9lbmQgKyAxLCBydW4x
Lm1fZW5kICsgMSB9OwogCi0gICAgICAgIC8vIEV4dGVuZFJ1blJpZ2h0KHJ1bjIuc3RhcnQsIG4p
Ci0gICAgICAgIHdoaWxlIChydW4yLm1fZW5kICsgMSA8IG51bUVsZW1lbnRzKSB7Ci0gICAgICAg
ICAgICBib29sIHJlc3VsdCA9IGNvbXBhcmF0b3IoZnJvbVtydW4yLm1fZW5kICsgMV0sIGZyb21b
cnVuMi5tX2VuZF0pOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RSQVBT
X0RFRkVSUkVEKHNjb3BlLCBzcmMpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICsrcnVuMi5tX2VuZDsKLSAgICAgICAgfQorICAg
ICAgICAvLyBEZXRlY3QgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgcnVuLCBub3JtYWxpemUgdG8g
YXNjZW5kaW5nLgorICAgICAgICBydW4yLm1fZW5kID0gZXh0ZW5kQW5kTm9ybWFsaXplUnVuKHZt
LCBzcmMsIHJ1bjIubV9iZWdpbiwgY29tcGFyYXRvcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgc3JjKTsKIAogICAgICAgICBpZiAocnVu
Mi5tX2VuZCAtIHJ1bjIubV9iZWdpbiA8IGV4dGVuZFJ1bkN1dG9mZikgewogICAgICAgICAgICAg
Ly8gSWYgdGhlIHJ1biBpcyB0b28gc2hvcnQsIGluc2VydGlvbiBzb3J0IGEgYml0CiAgICAgICAg
ICAgICBhdXRvIHNpemUgPSBzdGQ6Om1pbihmb3JjZVJ1bkxlbmd0aCwgbnVtRWxlbWVudHMgLSBy
dW4yLm1fYmVnaW4pOwotICAgICAgICAgICAgYXJyYXlJbnNlcnRpb25Tb3J0KHZtLCBmcm9tLnN1
YnNwYW4ocnVuMi5tX2JlZ2luLCBzaXplKSwgY29tcGFyYXRvciwgcnVuMi5tX2VuZCAtIHJ1bjIu
bV9iZWdpbik7CisgICAgICAgICAgICBhcnJheUluc2VydGlvblNvcnQodm0sIHNyYy5zdWJzcGFu
KHJ1bjIubV9iZWdpbiwgc2l6ZSksIGNvbXBhcmF0b3IsIHJ1bjIubV9lbmQgLSBydW4yLm1fYmVn
aW4pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RSQVBTX0RFRkVSUkVE
KHNjb3BlLCBzcmMpOwogICAgICAgICAgICAgcnVuMi5tX2VuZCA9IHJ1bjIubV9iZWdpbiArIHNp
emUgLSAxOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBleHRlbmQgdGhl
IHJ1biBhbnkgbW9yZS4KICAgICAgICAgd2hpbGUgKHJ1bjIubV9lbmQgKyAxIDwgbnVtRWxlbWVu
dHMpIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY29tcGFyYXRvcihmcm9tW3J1bjIubV9l
bmQgKyAxXSwgZnJvbVtydW4yLm1fZW5kXSk7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNv
bXBhcmF0b3Ioc3JjW3J1bjIubV9lbmQgKyAxXSwgc3JjW3J1bjIubV9lbmRdKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgc3JjKTsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzEs
OSArNTIzLDkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpzcGFuPEVsZW1lbnRUeXBlPiBh
cnJheVN0YWJsZVNvcnQoVk0mIHZtLCBzdGQ6OnNwYW48RWwKICAgICAgICAgICAgIGF1dG8gcmFu
Z2VUb01lcmdlID0gcG93ZXJzdGFjay50YWtlTGFzdCgpLnJ1bjsKICAgICAgICAgICAgIEFTU0VS
VChyYW5nZVRvTWVyZ2UubV9lbmQgPT0gcnVuMS5tX2JlZ2luIC0gMSk7CiAKLSAgICAgICAgICAg
IG1lcmdlUG93ZXJzb3J0UnVucyh2bSwgdG8sIHNwYW5Db25zdENhc3Q8Y29uc3QgRWxlbWVudFR5
cGU+KGZyb20pLCByYW5nZVRvTWVyZ2UubV9iZWdpbiwgcmFuZ2VUb01lcmdlLm1fZW5kICsgMSwg
cnVuMS5tX2JlZ2luLCBydW4xLm1fZW5kICsgMSwgY29tcGFyYXRvcik7CisgICAgICAgICAgICBt
ZXJnZVBvd2Vyc29ydFJ1bnModm0sIHdvcmtpbmdTZXQsIHNwYW5Db25zdENhc3Q8Y29uc3QgRWxl
bWVudFR5cGU+KHNyYyksIHJhbmdlVG9NZXJnZS5tX2JlZ2luLCByYW5nZVRvTWVyZ2UubV9lbmQg
KyAxLCBydW4xLm1fYmVnaW4sIHJ1bjEubV9lbmQgKyAxLCBjb21wYXJhdG9yLCBtaW5HYWxsb3Ap
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTl9XSVRIX1RSQVBTX0RFRkVSUkVEKHNj
b3BlLCBzcmMpOwotICAgICAgICAgICAgV1RGOjpjb3B5RWxlbWVudHMoZnJvbS5zdWJzcGFuKHJh
bmdlVG9NZXJnZS5tX2JlZ2luLCBydW4xLm1fZW5kICsgMSAtIHJhbmdlVG9NZXJnZS5tX2JlZ2lu
KSwgc3BhbkNvbnN0Q2FzdDxjb25zdCBFbGVtZW50VHlwZT4odG8pLnN1YnNwYW4ocmFuZ2VUb01l
cmdlLm1fYmVnaW4sIHJ1bjEubV9lbmQgKyAxIC0gcmFuZ2VUb01lcmdlLm1fYmVnaW4pKTsKKyAg
ICAgICAgICAgIFdURjo6Y29weUVsZW1lbnRzKHNyYy5zdWJzcGFuKHJhbmdlVG9NZXJnZS5tX2Jl
Z2luLCBydW4xLm1fZW5kICsgMSAtIHJhbmdlVG9NZXJnZS5tX2JlZ2luKSwgc3BhbkNvbnN0Q2Fz
dDxjb25zdCBFbGVtZW50VHlwZT4od29ya2luZ1NldCkuc3Vic3BhbihyYW5nZVRvTWVyZ2UubV9i
ZWdpbiwgcnVuMS5tX2VuZCArIDEgLSByYW5nZVRvTWVyZ2UubV9iZWdpbikpOwogICAgICAgICAg
ICAgcnVuMS5tX2JlZ2luID0gcmFuZ2VUb01lcmdlLm1fYmVnaW47CiAgICAgICAgIH0KIApAQCAt
MjQ1LDEzICs1MzcsMTMgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpzcGFuPEVsZW1lbnRU
eXBlPiBhcnJheVN0YWJsZVNvcnQoVk0mIHZtLCBzdGQ6OnNwYW48RWwKICAgICAgICAgYXV0byBy
YW5nZVRvTWVyZ2UgPSBwb3dlcnN0YWNrLnRha2VMYXN0KCkucnVuOwogICAgICAgICBBU1NFUlQo
cmFuZ2VUb01lcmdlLm1fZW5kID09IHJ1bjEubV9iZWdpbiAtIDEpOwogCi0gICAgICAgIG1lcmdl
UG93ZXJzb3J0UnVucyh2bSwgdG8sIHNwYW5Db25zdENhc3Q8Y29uc3QgRWxlbWVudFR5cGU+KGZy
b20pLCByYW5nZVRvTWVyZ2UubV9iZWdpbiwgcmFuZ2VUb01lcmdlLm1fZW5kICsgMSwgcnVuMS5t
X2JlZ2luLCBydW4xLm1fZW5kICsgMSwgY29tcGFyYXRvcik7CisgICAgICAgIG1lcmdlUG93ZXJz
b3J0UnVucyh2bSwgd29ya2luZ1NldCwgc3BhbkNvbnN0Q2FzdDxjb25zdCBFbGVtZW50VHlwZT4o
c3JjKSwgcmFuZ2VUb01lcmdlLm1fYmVnaW4sIHJhbmdlVG9NZXJnZS5tX2VuZCArIDEsIHJ1bjEu
bV9iZWdpbiwgcnVuMS5tX2VuZCArIDEsIGNvbXBhcmF0b3IsIG1pbkdhbGxvcCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT05fV0lUSF9UUkFQU19ERUZFUlJFRChzY29wZSwgc3JjKTsKLSAg
ICAgICAgV1RGOjpjb3B5RWxlbWVudHMoZnJvbS5zdWJzcGFuKHJhbmdlVG9NZXJnZS5tX2JlZ2lu
LCBydW4xLm1fZW5kICsgMSAtIHJhbmdlVG9NZXJnZS5tX2JlZ2luKSwgc3BhbkNvbnN0Q2FzdDxj
b25zdCBFbGVtZW50VHlwZT4odG8pLnN1YnNwYW4ocmFuZ2VUb01lcmdlLm1fYmVnaW4sIHJ1bjEu
bV9lbmQgKyAxIC0gcmFuZ2VUb01lcmdlLm1fYmVnaW4pKTsKKyAgICAgICAgV1RGOjpjb3B5RWxl
bWVudHMoc3JjLnN1YnNwYW4ocmFuZ2VUb01lcmdlLm1fYmVnaW4sIHJ1bjEubV9lbmQgKyAxIC0g
cmFuZ2VUb01lcmdlLm1fYmVnaW4pLCBzcGFuQ29uc3RDYXN0PGNvbnN0IEVsZW1lbnRUeXBlPih3
b3JraW5nU2V0KS5zdWJzcGFuKHJhbmdlVG9NZXJnZS5tX2JlZ2luLCBydW4xLm1fZW5kICsgMSAt
IHJhbmdlVG9NZXJnZS5tX2JlZ2luKSk7CiAgICAgICAgIHJ1bjEubV9iZWdpbiA9IHJhbmdlVG9N
ZXJnZS5tX2JlZ2luOwogICAgIH0KIAotICAgIHJldHVybiBmcm9tLmRhdGEoKSA9PSBzcmMuZGF0
YSgpID8gc3JjIDogZHN0OworICAgIHJldHVybiBzcmM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zbG93TWljcm9iZW5jaG1hcmtzL21hZ2ljLWZvcmVzdC5q
cyBiL0pTVGVzdHMvc2xvd01pY3JvYmVuY2htYXJrcy9tYWdpYy1mb3Jlc3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yOTk5ZmMwOWFjZGEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3Nsb3dNaWNyb2JlbmNobWFya3MvbWFnaWMtZm9yZXN0LmpzCkBAIC0w
LDAgKzEsMTAxIEBACisvLyBTZWUgaHR0cDovL3Vucmlza2luc2lnaHQuYmxvZ3Nwb3QuY29tLzIw
MTQvMDYvZmFzdC1mdW5jdGlvbmFsLWdvYXRzLWxpb25zLWFuZC13b2x2ZXMuaHRtbAorLy8gU2Fz
Y2hhIEtyYXRreSAoa3JhdGt5QHVucmlzay5jb20pLCB1bmkgc29mdHdhcmUgcGx1cyBHbWJIICYg
TWF0aENvbnN1bHQgR21iSAorLy8KKy8vIHJ1biB3aXRoIEdvb2dsZSB2ODoKKy8vIGQ4IG1hZ2lj
Rm9yZXN0LmpzIC0tIDExNyAxNTUgMTA2CisvLworLy8gcnVuIHdpdGggTW96aWxsYSBTcGlkZXJN
b25rZXk6CisvLyBqcyBtYWdpY0ZvcmVzdC5qcyAxMTcgMTU1IDEwNgorCitmdW5jdGlvbiBGb3Jl
c3QoZ29hdHMsIHdvbHZlcywgbGlvbnMpIHsKKyAgIHRoaXMuZ29hdHMgPSBnb2F0czsKKyAgIHRo
aXMud29sdmVzID0gd29sdmVzOworICAgdGhpcy5saW9ucyA9IGxpb25zOworfQorCitGb3Jlc3Qu
cHJvdG90eXBlLndvbGZEZXZvdXJzR29hdCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmdv
YXRzID4gMCAmJiB0aGlzLndvbHZlcyA+IDApCisgICAgICAgIHJldHVybiBuZXcgRm9yZXN0KHRo
aXMuZ29hdHMgLSAxLCB0aGlzLndvbHZlcyAtIDEsIHRoaXMubGlvbnMgKyAxKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBudWxsOworfQorCitGb3Jlc3QucHJvdG90eXBlLmxpb25EZXZvdXJz
R29hdCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmdvYXRzID4gMCAmJiB0aGlzLmxpb25z
ID4gMCkKKyAgICAgICAgcmV0dXJuIG5ldyBGb3Jlc3QodGhpcy5nb2F0cyAtIDEsIHRoaXMud29s
dmVzICsgMSwgdGhpcy5saW9ucyAtIDEpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIG51bGw7
Cit9CisKK0ZvcmVzdC5wcm90b3R5cGUubGlvbkRldm91cnNXb2xmID0gZnVuY3Rpb24oKSB7Cisg
ICAgaWYgKHRoaXMubGlvbnMgPiAwICYmIHRoaXMud29sdmVzID4gMCkKKyAgICAgICAgcmV0dXJu
IG5ldyBGb3Jlc3QodGhpcy5nb2F0cyArIDEsIHRoaXMud29sdmVzIC0gMSwgdGhpcy5saW9ucyAt
IDEpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIG51bGw7Cit9CisKK0ZvcmVzdC5wcm90b3R5
cGUubWVhbCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhpcy53b2xmRGV2b3Vyc0dvYXQo
KSwgdGhpcy5saW9uRGV2b3Vyc0dvYXQoKSwgdGhpcy5saW9uRGV2b3Vyc1dvbGYoKV0uZmlsdGVy
KAorICAgICAgICBmdW5jdGlvbihmKSB7IHJldHVybiBmICE9PSBudWxsOyB9KQorfQorCitGb3Jl
c3QucHJvdG90eXBlLmlzU3RhYmxlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMuZ29hdHMg
PT09IDApIHJldHVybiAodGhpcy53b2x2ZXMgPT09IDApIHx8ICh0aGlzLmxpb25zID09PSAwKTsK
KyAgICByZXR1cm4gKHRoaXMud29sdmVzID09PSAwKSAmJiAodGhpcy5saW9ucyA9PT0gMCk7Cit9
CisKK0ZvcmVzdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJu
ICJbZ29hdHM9IiArIHRoaXMuZ29hdHMgKyAiLCB3b2x2ZXM9IiArIHRoaXMud29sdmVzICsgIiwg
bGlvbnM9IiArIHRoaXMubGlvbnMgKyAiXSI7Cit9CisKK0ZvcmVzdC5jb21wYXJlID0gZnVuY3Rp
b24oZm9yZXN0MSwgZm9yZXN0MikgeworICAgIHZhciBjbXAgPSBmb3Jlc3QxLmdvYXRzLWZvcmVz
dDIuZ29hdHM7CisgICAgaWYgKGNtcCAhPT0gMCkgcmV0dXJuIGNtcDsKKyAgICBjbXAgPSBmb3Jl
c3QxLndvbHZlcy1mb3Jlc3QyLndvbHZlczsKKyAgICBpZiAoY21wICE9PSAwKSByZXR1cm4gY21w
OworICAgIHJldHVybiBmb3Jlc3QxLmxpb25zLWZvcmVzdDIubGlvbnM7Cit9CisKK2Z1bmN0aW9u
IG1lYWwoZm9yZXN0cykgeworICAgIHZhciBuZXh0Rm9yZXN0cyA9IFtdOworICAgIGZvcmVzdHMu
Zm9yRWFjaChmdW5jdGlvbihmb3Jlc3QpIHsKKyAgICAgICAgbmV4dEZvcmVzdHMucHVzaC5hcHBs
eShuZXh0Rm9yZXN0cywgZm9yZXN0Lm1lYWwoKSkKKyAgICB9KTsKKyAgICAvLyByZW1vdmUgZHVw
bGljYXRlcworICAgIHJldHVybiBuZXh0Rm9yZXN0cy5zb3J0KEZvcmVzdC5jb21wYXJlKS5maWx0
ZXIoZnVuY3Rpb24oZm9yZXN0LCBpbmRleCwgYXJyYXkpIHsKKyAgICAgICAgcmV0dXJuIChpbmRl
eCA9PT0gMCB8fCBGb3Jlc3QuY29tcGFyZShmb3Jlc3QsIGFycmF5W2luZGV4IC0gMV0pICE9PSAw
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZGV2b3VyaW5nUG9zc2libGUoZm9yZXN0cykgewor
ICAgIHJldHVybiBmb3Jlc3RzLmxlbmd0aCA+IDAgJiYgIWZvcmVzdHMuc29tZShmdW5jdGlvbihm
KSB7IHJldHVybiBmLmlzU3RhYmxlKCk7IH0pOworfQorCitmdW5jdGlvbiBzdGFibGVGb3Jlc3Rz
KGZvcmVzdHMpIHsKKyAgICByZXR1cm4gZm9yZXN0cy5maWx0ZXIoZnVuY3Rpb24oZikgeyByZXR1
cm4gZi5pc1N0YWJsZSgpOyB9KTsKK30KKworZnVuY3Rpb24gZmluZFN0YWJsZUZvcmVzdHMoZm9y
ZXN0KSB7CisgICAgdmFyIGZvcmVzdHMgPSBbZm9yZXN0XTsKKyAgICB3aGlsZSAoZGV2b3VyaW5n
UG9zc2libGUoZm9yZXN0cykpIHsKKyAgICAgICAgZm9yZXN0cyA9IG1lYWwoZm9yZXN0cyk7Cisg
ICAgfQorICAgIHJldHVybiBzdGFibGVGb3Jlc3RzKGZvcmVzdHMpOworfQorCitmdW5jdGlvbiBn
byhnLHcsbCkgeworICAgIHZhciBpbml0aWFsRm9yZXN0ID0gbmV3IEZvcmVzdChnLCB3LCBsKTsK
KyAgICBmaW5kU3RhYmxlRm9yZXN0cyhpbml0aWFsRm9yZXN0KS8qLmZvckVhY2goZnVuY3Rpb24o
Zil7IGNvbnNvbGUubG9nKGYpOyB9KSovCit9CisKK2Z1bmN0aW9uIGdvVUkoKQoreworICAgIGQ9
bmV3IERhdGUoKTsKKyAgICBnPXBhcnNlSW50KCIyMTciKTsKKyAgICB3PXBhcnNlSW50KCIyNTUi
KTsKKyAgICBsPXBhcnNlSW50KCIyMDYiKTsKKyAgICBnbyhnLCB3LCBsKTsKKyAgICAvLyBwcmlu
dCgiVGltZSB0YWtlbjogIiArIChuZXcgRGF0ZSgpIC0gZCkgKyAibXMiKTsKK30KK2dvVUkoKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NvcnQtZ2FsbG9waW5nLW1lcmdlLW9wdGltaXph
dGlvbnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zb3J0LWdhbGxvcGluZy1tZXJnZS1vcHRpbWl6YXRp
b25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDlhYzBkNmI0
OTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc29ydC1nYWxsb3BpbmctbWVy
Z2Utb3B0aW1pemF0aW9ucy5qcwpAQCAtMCwwICsxLDEwNDYgQEAKKy8vIENvbXByZWhlbnNpdmUg
dGVzdHMgZm9yIFBvd2VyU29ydCB3aXRoIGdhbGxvcGluZyBtZXJnZSBvcHRpbWl6YXRpb25zLgor
Ly8gQWxsIHNvcnRzIHVzZSBhIEpTIGNvbXBhcmF0b3IgdG8gZXhlcmNpc2UgdGhlIFN0YWJsZVNv
cnQuaCBjb2RlIHBhdGgKKy8vICh3aXRob3V0IGEgY29tcGFyYXRvciwgSlNDIHVzZXMgYSBmYXN0
IEMrKy1vbmx5IHN0ZDo6c29ydCkuCisKK2Z1bmN0aW9uIGFzc2VydFNvcnRlZChhcnJheSwgbXNn
KSB7CisgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoYXJyYXlbaV0gPCBhcnJheVtpIC0gMV0pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobXNnICsgIjogbm90IHNvcnRlZCBhdCBpbmRleCAiICsgaSArICIgKCIgKyBhcnJheVtpIC0g
MV0gKyAiID4gIiArIGFycmF5W2ldICsgIikiKTsKKyAgICB9Cit9CisKKy8vIFZlcmlmeSBzb3J0
IGlzIHN0YWJsZTogZm9yIGVxdWFsIC52YWx1ZSwgb3JpZ2luYWwgLmluZGV4IG9yZGVyIG11c3Qg
YmUgcHJlc2VydmVkLgorZnVuY3Rpb24gYXNzZXJ0U3RhYmxlKGFycmF5LCBtc2cpIHsKKyAgICBm
b3IgKGxldCBpID0gMTsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJh
eVtpXS52YWx1ZSA8IGFycmF5W2kgLSAxXS52YWx1ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihtc2cgKyAiOiBub3Qgc29ydGVkIGF0IGluZGV4ICIgKyBpKTsKKyAgICAgICAgaWYgKGFy
cmF5W2ldLnZhbHVlID09PSBhcnJheVtpIC0gMV0udmFsdWUgJiYgYXJyYXlbaV0uaW5kZXggPCBh
cnJheVtpIC0gMV0uaW5kZXgpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnICsgIjog
bm90IHN0YWJsZSBhdCBpbmRleCAiICsgaSArICIgKGluZGljZXMgIiArIGFycmF5W2kgLSAxXS5p
bmRleCArICIgLT4gIiArIGFycmF5W2ldLmluZGV4ICsgIikiKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGFzc2VydEFycmF5c0VxdWFsKGEsIGIsIG1zZykgeworICAgIGlmIChhLmxlbmd0aCAhPT0g
Yi5sZW5ndGgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cgKyAiOiBsZW5ndGggbWlzbWF0
Y2ggIiArIGEubGVuZ3RoICsgIiB2cyAiICsgYi5sZW5ndGgpOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cgKyAiOiBtaXNtYXRjaCBhdCBpbmRleCAiICsgaSAr
ICIgKCIgKyBhW2ldICsgIiB2cyAiICsgYltpXSArICIpIik7CisgICAgfQorfQorCisvLyBWZXJp
ZnkgdGhhdCB3ZSBoYXZlIHRoZSBzYW1lIG11bHRpc2V0IG9mIGVsZW1lbnRzIGJlZm9yZSBhbmQg
YWZ0ZXIgc29ydC4KK2Z1bmN0aW9uIGFzc2VydFNhbWVFbGVtZW50cyhvcmlnaW5hbCwgc29ydGVk
LCBtc2cpIHsKKyAgICBsZXQgYSA9IG9yaWdpbmFsLnNsaWNlKCkuc29ydCgoeCwgeSkgPT4geCAt
IHkpOworICAgIGxldCBiID0gc29ydGVkLnNsaWNlKCkuc29ydCgoeCwgeSkgPT4geCAtIHkpOwor
ICAgIGFzc2VydEFycmF5c0VxdWFsKGEsIGIsIG1zZyArICIgKGVsZW1lbnQgcHJlc2VydmF0aW9u
KSIpOworfQorCisvLyBTaW1wbGUgc2VlZGVkIFBSTkcgZm9yIGRldGVybWluaXN0aWMgdGVzdHMu
CitmdW5jdGlvbiBtYWtlUFJORyhzZWVkKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICBzZWVkID0gKHNlZWQgKiAxMTAzNTE1MjQ1ICsgMTIzNDUpICYgMHg3RkZGRkZGRjsKKyAg
ICAgICAgcmV0dXJuIHNlZWQ7CisgICAgfTsKK30KKworbGV0IGNtcCA9IChhLCBiKSA9PiBhIC0g
YjsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU2VjdGlvbiAxOiBleHRlbmRBbmROb3Jt
YWxpemVSdW4gZWRnZSBjYXNlcworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyAxYS4gRGVz
Y2VuZGluZyBydW4gc3RvcHMgYXQgZXF1YWwgZWxlbWVudHMgKHN0cmljdCA8IHJlcXVpcmVkIGZv
ciBkZXNjIGRldGVjdGlvbikuCisvLyBQYXR0ZXJuOiBbMTAsOSw4LDcsNyw2LDUsNCwzLDIsMSwu
Li5dIOKAlCB0aGUgNyw3IGJvdW5kYXJ5IHNob3VsZCBzcGxpdCBpbnRvCisvLyBhIGRlc2NlbmRp
bmcgcnVuIFsxMCw5LDgsN10gcmV2ZXJzZWQgdG8gWzcsOCw5LDEwXSwgdGhlbiBhIG5ldyBydW4g
c3RhcnRpbmcgYXQKKy8vIHRoZSBzZWNvbmQgNy4KK3sKKyAgICAvLyBCdWlsZCBhcnJheTogMTAw
IGRlc2MsIHRoZW4gYW4gZXF1YWwgcGFpciBtaWQtcnVuLCB0aGVuIG1vcmUgZGVzYywgcmVwZWF0
LgorICAgIGxldCBhID0gW107CisgICAgLy8gU2VnbWVudCAxOiBzdHJpY3RseSBkZXNjZW5kaW5n
IDUwLi4xCisgICAgZm9yIChsZXQgaSA9IDUwOyBpID49IDE7IGktLSkgYS5wdXNoKGkpOworICAg
IC8vIFNlZ21lbnQgMjogYXNjZW5kaW5nIDUxLi4xMDAgKGNyZWF0ZXMgYSBydW4gYm91bmRhcnkg
YXQgdGhlIGRlc2PihpJhc2MgdHJhbnNpdGlvbikKKyAgICBmb3IgKGxldCBpID0gNTE7IGkgPD0g
MTAwOyBpKyspIGEucHVzaChpKTsKKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21w
KTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAiZGVzYy10aGVuLWFzYy1ib3VuZGFyeSIpOwor
ICAgIGFzc2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJkZXNjLXRoZW4tYXNjLWJvdW5kYXJ5
Iik7Cit9CisKKy8vIDFiLiBTdHJpY3RseSBkZXNjZW5kaW5nIHJ1biBvZiBleGFjdGx5IDIgZWxl
bWVudHMgKG1pbmltdW0gZGVzY2VuZGluZyBydW4pLgoreworICAgIC8vIFsyLDEsIDMsNCw1LC4u
Ll0g4oCUIHJ1bjEgaXMgWzIsMV0gZGVzYywgcmV2ZXJzZWQgdG8gWzEsMl0sIHRoZW4gZXh0ZW5k
ZWQgYXNjLgorICAgIGxldCBhID0gWzIsIDFdOworICAgIGZvciAobGV0IGkgPSAzOyBpIDw9IDEw
MDsgaSsrKSBhLnB1c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7
CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgImRlc2MtcnVuLWxlbmd0aC0yIik7CisgICAgYXNz
ZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgImRlc2MtcnVuLWxlbmd0aC0yIik7Cit9CisKKy8v
IDFjLiBBbGwgZXF1YWwgZWxlbWVudHMg4oCUIGRlc2NlbmRpbmcgZGV0ZWN0aW9uIG11c3QgTk9U
IHRyaWdnZXIgKHVzZXMgc3RyaWN0IDwpLgorLy8gQSBydW4gb2YgYWxsLWVxdWFsIGlzIGFzY2Vu
ZGluZyAoYVtpKzFdID49IGFbaV0gc2luY2UgZXF1YWwpLCBzbyBubyByZXZlcnNhbC4KKy8vIFN0
YWJpbGl0eSB0ZXN0OiBvcmlnaW5hbCBpbmRpY2VzIG11c3QgYmUgcHJlc2VydmVkLgoreworICAg
IGxldCBhID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykKKyAgICAgICAg
YS5wdXNoKHsgdmFsdWU6IDQyLCBpbmRleDogaSB9KTsKKyAgICBhLnNvcnQoKHgsIHkpID0+IHgu
dmFsdWUgLSB5LnZhbHVlKTsKKyAgICBhc3NlcnRTdGFibGUoYSwgImFsbC1lcXVhbC0yMDAiKTsK
K30KKworLy8gMWQuIERlc2NlbmRpbmcgcnVuIHdpdGggZXF1YWwgZWxlbWVudHMgYXQgdGhlIGJv
dW5kYXJ5LgorLy8gWzEwLDksOCw3LDcsNiw1LC4uLl0g4oCUIGZpcnN0IGRlc2MgcnVuIGlzIFsx
MCw5LDgsN10sIHN0b3BzIGF0IDc9PTcuCisvLyBBZnRlciByZXZlcnNhbDogWzcsOCw5LDEwXS4g
VGhlbiBuZXcgcnVuIHN0YXJ0cyBhdCBzZWNvbmQgNy4KK3sKKyAgICBsZXQgYSA9IFsxMCwgOSwg
OCwgNywgNywgNiwgNSwgNCwgMywgMiwgMSwgMF07CisgICAgLy8gQWRkIG1vcmUgdG8gZXhjZWVk
IGV4dGVuZFJ1bkN1dG9mZgorICAgIGZvciAobGV0IGkgPSAxMTsgaSA8IDEwMDsgaSsrKSBhLnB1
c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0
U29ydGVkKHNvcnRlZCwgImRlc2MtZXF1YWwtYm91bmRhcnkiKTsKKyAgICBhc3NlcnRTYW1lRWxl
bWVudHMoYSwgc29ydGVkLCAiZGVzYy1lcXVhbC1ib3VuZGFyeSIpOworfQorCisvLyAxZS4gU2lu
Z2xlIGVsZW1lbnQgYXQgZW5kIG9mIGFycmF5IOKAlCBleHRlbmRBbmROb3JtYWxpemVSdW4gcmV0
dXJucyBpbW1lZGlhdGVseS4KKy8vIFRoaXMgaGFwcGVucyBmb3IgdGhlIGxhc3QgZWxlbWVudCB3
aGVuIGl0IHN0YXJ0cyBhIG5ldyBydW4uCit7CisgICAgLy8gQ3JlYXRlIHR3byBydW5zIG9mIH42
NCBlbGVtZW50cyArIDEgdHJhaWxpbmcgZWxlbWVudC4KKyAgICBsZXQgYSA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNjQ7IGkrKykgYS5wdXNoKGkgKiAyKTsgLy8gZXZlbjogMCwyLC4u
LiwxMjYKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY0OyBpKyspIGEucHVzaChpICogMiArIDEp
OyAvLyBvZGQ6IDEsMywuLi4sMTI3CisgICAgYS5wdXNoKDIwMCk7IC8vIHNpbmdsZSB0cmFpbGlu
ZyBlbGVtZW50CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNz
ZXJ0U29ydGVkKHNvcnRlZCwgInRyYWlsaW5nLXNpbmdsZS1lbGVtZW50Iik7CisgICAgYXNzZXJ0
U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgInRyYWlsaW5nLXNpbmdsZS1lbGVtZW50Iik7Cit9CisK
Ky8vIDFmLiBNYW55IHNob3J0IGRlc2NlbmRpbmcgc2VnbWVudHMg4oCUIGVhY2ggZ2V0cyByZXZl
cnNlZCBpbmRlcGVuZGVudGx5LgoreworICAgIGxldCBhID0gW107CisgICAgLy8gMjAgc2VnbWVu
dHMgb2YgMTAgZGVzY2VuZGluZyBlbGVtZW50cyBlYWNoOiBbOSw4LC4uLiwwXSwgWzE5LDE4LC4u
LiwxMF0sIC4uLgorICAgIGZvciAobGV0IHNlZyA9IDA7IHNlZyA8IDIwOyBzZWcrKykgeworICAg
ICAgICBsZXQgYmFzZSA9IHNlZyAqIDEwOworICAgICAgICBmb3IgKGxldCBpID0gOTsgaSA+PSAw
OyBpLS0pCisgICAgICAgICAgICBhLnB1c2goYmFzZSArIGkpOworICAgIH0KKyAgICBsZXQgc29y
dGVkID0gYS5zbGljZSgpLnNvcnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAibWFu
eS1zaG9ydC1kZXNjLXNlZ21lbnRzIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRl
ZCwgIm1hbnktc2hvcnQtZGVzYy1zZWdtZW50cyIpOworfQorCisvLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisvLyBTZWN0aW9uIDI6IFByZS1tZXJnZSB0cmltbWluZyBpbiBtZXJnZVJ1bnMKKy8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKworLy8gMmEuIEZ1bGwgbGVmdCB0cmltOiBhbGwgZWxlbWVudHMg
aW4gbGVmdCBydW4gPD0gZmlyc3QgZWxlbWVudCBvZiByaWdodCBydW4uCisvLyBBZnRlciB0cmlt
LCBsZWZ0TGVuZ3RoPTAg4oaSIGp1c3QgY29weSByaWdodCwgc2tpcCBtZXJnZSBlbnRpcmVseS4K
K3sKKyAgICBsZXQgYSA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIGEu
cHVzaChpKTsgICAgICAgLy8gcnVuIDE6IFswLi45OV0KKyAgICBmb3IgKGxldCBpID0gMTAwOyBp
IDwgMjAwOyBpKyspIGEucHVzaChpKTsgICAgICAvLyBydW4gMjogWzEwMC4uMTk5XQorICAgIC8v
IEJ1dCB0aGVzZSBmb3JtIG9uZSBiaWcgYXNjZW5kaW5nIHJ1biEgQnJlYWsgaXQ6CisgICAgLy8g
VXNlIG5vbi1vdmVybGFwcGluZyBkZXNjICsgYXNjIHRvIGZvcmNlIHR3byBydW5zLgorICAgIGEg
PSBbXTsKKyAgICBmb3IgKGxldCBpID0gOTk7IGkgPj0gMDsgaS0tKSBhLnB1c2goaSk7ICAgICAg
ICAvLyBkZXNjIHJ1biDihpIgcmV2ZXJzZWQgdG8gWzAuLjk5XQorICAgIGZvciAobGV0IGkgPSAx
MDA7IGkgPCAyMDA7IGkrKykgYS5wdXNoKGkpOyAgICAgICAvLyBhc2MgcnVuIFsxMDAuLjE5OV0K
KyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQo
c29ydGVkLCAiZnVsbC1sZWZ0LXRyaW0iKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29y
dGVkLCAiZnVsbC1sZWZ0LXRyaW0iKTsKK30KKworLy8gMmIuIEZ1bGwgcmlnaHQgdHJpbTogYWxs
IGVsZW1lbnRzIGluIHJpZ2h0IHJ1biA+PSBsYXN0IGVsZW1lbnQgb2YgbGVmdCBydW4uCisvLyBB
ZnRlciB0cmltLCByaWdodExlbmd0aD0wIOKGkiBqdXN0IGNvcHkgbGVmdCwgc2tpcCBtZXJnZSBl
bnRpcmVseS4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
OyBpKyspIGEucHVzaChpKTsgICAgICAgIC8vIGFzYyBydW4gWzAuLjk5XQorICAgIGZvciAobGV0
IGkgPSAxOTk7IGkgPj0gMTAwOyBpLS0pIGEucHVzaChpKTsgICAgICAvLyBkZXNjIHJ1biDihpIg
cmV2ZXJzZWQgdG8gWzEwMC4uMTk5XQorICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChj
bXApOworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJmdWxsLXJpZ2h0LXRyaW0iKTsKKyAgICBh
c3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAiZnVsbC1yaWdodC10cmltIik7Cit9CisKKy8v
IDJjLiBObyB0cmltIGF0IGFsbDogcnVucyBjb21wbGV0ZWx5IG92ZXJsYXAgaW4gdmFsdWUgcmFu
Z2UuCisvLyBnYWxsb3BSaWdodChCWzBdLCBBKSByZXR1cm5zIDAsIGdhbGxvcExlZnQoQVtsYXN0
XSwgQikgcmV0dXJucyByaWdodExlbmd0aC4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFJ1
biAxOiBldmVuIG51bWJlcnMgWzAsMiw0LC4uLiwxOThdICgxMDAgZWxlbWVudHMpCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkgKiAyKTsKKyAgICAvLyBSdW4gMjog
b2RkIG51bWJlcnMgWzEsMyw1LC4uLiwxOTldICgxMDAgZWxlbWVudHMpCisgICAgLy8gTXVzdCBz
dGFydCBkZXNjZW5kaW5nIG9yIGhhdmUgYSBicmVhayB0byBjcmVhdGUgYSBuZXcgcnVuLgorICAg
IC8vIFNpbmNlIDEgPCAxOTgsIGl0J3MgYSBicmVhay4gQnV0IHdlIHdhbnQgaXQgYXNjZW5kaW5n
LgorICAgIC8vIDEgPCBhWzk5XT0xOTgsIHNvIGNvbXBhcmF0b3IoMSwgMTk4KSA9IHRydWUg4oaS
IG5ldyBydW4gc3RhcnRzLgorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIGEucHVz
aChpICogMiArIDEpOworICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAg
IGFzc2VydFNvcnRlZChzb3J0ZWQsICJuby10cmltLWludGVybGVhdmVkIik7CisgICAgYXNzZXJ0
U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgIm5vLXRyaW0taW50ZXJsZWF2ZWQiKTsKK30KKworLy8g
MmQuIFBhcnRpYWwgdHJpbSBvbiBib3RoIHNpZGVzOiBydW5zIG92ZXJsYXAgaW4gdGhlIG1pZGRs
ZS4KKy8vIExlZnQ9WzAuLjk5XSwgUmlnaHQ9WzUwLi4xNDldLiBza2lwTGVmdCBza2lwcyBbMC4u
NDldLCBza2lwUmlnaHQgc2tpcHMgWzEwMC4uMTQ5XS4KKy8vIE1lcmdlIG9ubHkgbmVlZHMgdG8g
aGFuZGxlIFs1MC4uOTldIHZzIFs1MC4uOTldLgoreworICAgIGxldCBhID0gW107CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOyAgICAgICAgICAgLy8gYXNjIHJ1
biBbMC4uOTldCisgICAgLy8gRm9yY2UgbmV3IHJ1bjogc3RhcnQgd2l0aCBzb21ldGhpbmcgPCA5
OQorICAgIGZvciAobGV0IGkgPSA1MDsgaSA8IDE1MDsgaSsrKSBhLnB1c2goaSk7ICAgICAgICAg
ICAvLyBzaG91bGQgc3RhcnQgbmV3IHJ1biBzaW5jZSA1MCA8IDk5CisgICAgbGV0IHNvcnRlZCA9
IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgInBhcnRpYWwt
dHJpbS1ib3RoLXNpZGVzIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgInBh
cnRpYWwtdHJpbS1ib3RoLXNpZGVzIik7Cit9CisKKy8vIDJlLiBQYXJ0aWFsIGxlZnQgdHJpbSBv
bmx5OiBsZWZ0IHJ1bidzIHRhaWwgb3ZlcmxhcHMgZnVsbHkgd2l0aCByaWdodC4KKy8vIExlZnQ9
WzAuLjQ5LCAyMDAuLjI0OV0sIFJpZ2h0PVsxMDAuLjE5OV0uCisvLyBnYWxsb3BSaWdodCgxMDAs
IExlZnQpIOKGkiBza2lwcyBbMC4uNDldICg1MCBlbGVtZW50cykuCisvLyBnYWxsb3BMZWZ0KDI0
OSwgUmlnaHQpIOKGkiAyNDkgPiBhbGwgb2YgUmlnaHQsIG5vIHNraXAuCit7CisgICAgbGV0IGEg
PSBbXTsKKyAgICAvLyBSdW4gMTogWzAuLjQ5LCAyMDAuLjI0OV0gKGFzY2VuZGluZyBzaW5jZSAy
MDAgPiA0OSkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyBpKyspIGEucHVzaChpKTsKKyAg
ICBmb3IgKGxldCBpID0gMjAwOyBpIDwgMjUwOyBpKyspIGEucHVzaChpKTsKKyAgICAvLyBSdW4g
MjogWzEwMC4uMTk5XSAobmV3IHJ1biBzaW5jZSAxMDAgPCAyNDkpCisgICAgZm9yIChsZXQgaSA9
IDEwMDsgaSA8IDIwMDsgaSsrKSBhLnB1c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2Uo
KS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgInBhcnRpYWwtbGVmdC10cmlt
LW9ubHkiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAicGFydGlhbC1sZWZ0
LXRyaW0tb25seSIpOworfQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBTZWN0aW9uIDM6
IEdhbGxvcGluZyBtb2RlCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIDNhLiBUcmlnZ2Vy
IGdhbGxvcGluZyB2aWEgcmlnaHRXaW5zID49IG1pbkdhbGxvcCAoNykuCisvLyBSdW4gMSBoYXMg
bGFyZ2UgdmFsdWVzLCBSdW4gMiBzdGFydHMgd2l0aCBtYW55IHNtYWxsIHZhbHVlcy4KKy8vIEFm
dGVyIHByZS1tZXJnZSB0cmltLCByaWdodCBlbGVtZW50cyBhcmUgYWxsIHNtYWxsZXIg4oaSIHJp
Z2h0IHdpbnMgY29uc2VjdXRpdmVseS4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFJ1biAx
OiBbMjAwLDIwMSwuLi4sMjk5XSAoMTAwIGFzY2VuZGluZykKKyAgICBmb3IgKGxldCBpID0gMjAw
OyBpIDwgMzAwOyBpKyspIGEucHVzaChpKTsKKyAgICAvLyBSdW4gMjogWzAsMSwuLi4sNDksIDI1
MCwyNTEsLi4uLDI5OV0gKDEwMCBhc2NlbmRpbmcsIHNpbmNlIDI1MCA+IDQ5KQorICAgIC8vIFRo
aXMgc3RhcnRzIGEgbmV3IHJ1biBiZWNhdXNlIDAgPCAyOTkuCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDsgaSsrKSBhLnB1c2goaSk7CisgICAgZm9yIChsZXQgaSA9IDI1MDsgaSA8IDMwMDsg
aSsrKSBhLnB1c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7Cisg
ICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgImdhbGxvcC1yaWdodC13aW5zIik7CisgICAgYXNzZXJ0
U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgImdhbGxvcC1yaWdodC13aW5zIik7Cit9CisKKy8vIDNi
LiBUcmlnZ2VyIGdhbGxvcGluZyB2aWEgbGVmdFdpbnMgPj0gbWluR2FsbG9wLgorLy8gUnVuIDEg
c3RhcnRzIHdpdGggbWFueSBzbWFsbCB2YWx1ZXMsIFJ1biAyIGhhcyBsYXJnZSB2YWx1ZXMuCit7
CisgICAgbGV0IGEgPSBbXTsKKyAgICAvLyBSdW4gMTogWzAsMSwuLi4sNDksIDI1MCwyNTEsLi4u
LDI5OV0gKGFzY2VuZGluZykKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyBpKyspIGEucHVz
aChpKTsKKyAgICBmb3IgKGxldCBpID0gMjUwOyBpIDwgMzAwOyBpKyspIGEucHVzaChpKTsKKyAg
ICAvLyBSdW4gMjogWzIwMCwyMDEsLi4uLDI5OV0gKG5ldyBydW4gc2luY2UgMjAwIDwgMjk5KQor
ICAgIGZvciAobGV0IGkgPSAyMDA7IGkgPCAzMDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIEFm
dGVyIHRyaW06IGdhbGxvcFJpZ2h0KEJbMF09MjAwLCBBKSDihpIgMjAwIGlzIGFmdGVyIFswLi40
OV0gPSA1MC4KKyAgICAvLyBSZW1haW5pbmcgQSA9IFsyNTAsLi4uLDI5OV0uIGdhbGxvcExlZnQo
QVtsYXN0XT0yOTksIEIpIOKGkiBhbGwgb2YgQiDiiaQgMjk5LCBza2lwUmlnaHQ9MC4KKyAgICAv
LyBNZXJnZSBBJz1bMjUwLC4uLiwyOTldIHZzIEI9WzIwMCwuLi4sMjk5XS4KKyAgICAvLyAyMDAg
PCAyNTAg4oaSIHJpZ2h0IHdpbnMuIDIwMSA8IDI1MCDihpIgcmlnaHQgd2lucy4gLi4uIDI0OSA8
IDI1MCDihpIgcmlnaHQgd2lucy4gKDUwIHRpbWVzISkKKyAgICAvLyBBY3R1YWxseSB3YWl0OiBh
ZnRlciB0cmltIEEnIHN0YXJ0cyBhdCAyNTAsIEIgc3RhcnRzIGF0IDIwMC4KKyAgICAvLyBjb21w
YXJlKEJbMF09MjAwLCBBJ1swXT0yNTApOiAyMDAgPCAyNTAg4oaSIHJpZ2h0IHdpbnMuCisgICAg
Ly8gVGhpcyBjb250aW51ZXMgdW50aWwgQiByZWFjaGVzIDI1MCsuCisgICAgLy8gU28gcmlnaHRX
aW5zIHJlYWNoZXMgNTAsIHdlbGwgcGFzdCBtaW5HYWxsb3A9Ny4KKyAgICBsZXQgc29ydGVkID0g
YS5zbGljZSgpLnNvcnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAiZ2FsbG9wLWxl
ZnQtd2lucyIpOworICAgIGFzc2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJnYWxsb3AtbGVm
dC13aW5zIik7Cit9CisKKy8vIDNjLiBHYWxsb3BpbmcgbW9kZSBlbnRyeSwgdGhlbiBleGl0IGJh
Y2sgdG8gbGluZWFyIG1lcmdlLgorLy8gUGF0dGVybjogY2x1c3RlcmVkIHN0YXJ0ICh0cmlnZ2Vy
cyBnYWxsb3BpbmcpLCB0aGVuIGludGVybGVhdmVkIChleGl0cyBnYWxsb3BpbmcpLgoreworICAg
IGxldCBhID0gW107CisgICAgLy8gUnVuIDE6IFswLDEsLi4uLDE5LCAzMCwzMiwzNCwuLi4sNThd
IOKAlCAyMCBjbHVzdGVyZWQgdGhlbiAxNSBzcGFyc2UKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDIwOyBpKyspIGEucHVzaChpKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE1OyBpKyspIGEu
cHVzaCgzMCArIGkgKiAyKTsKKyAgICAvLyBSdW4gMjogWzIwLDIxLC4uLiwyOSwgMzEsMzMsMzUs
Li4uLDU5XSDigJQgMTAgY2x1c3RlcmVkIHRoZW4gMTUgc3BhcnNlIGludGVybGVhdmVkCisgICAg
Zm9yIChsZXQgaSA9IDIwOyBpIDwgMzA7IGkrKykgYS5wdXNoKGkpOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTU7IGkrKykgYS5wdXNoKDMxICsgaSAqIDIpOworICAgIC8vIEFmdGVyIHRyaW06
IGdhbGxvcFJpZ2h0KDIwLCBSdW4xKSDihpIgc2tpcCBbMC4uMTldLiBSZW1haW5pbmcgQT1bMzAs
MzIsLi4uLDU4XS4KKyAgICAvLyBnYWxsb3BMZWZ0KDU4LCBSdW4yPVsyMCwuLi4sMjksMzEsLi4u
LDU5XSkg4oaSIDU4IDwgNTksIHBvc2l0aW9uIGlzIGJlZm9yZSA1OS4KKyAgICAvLyBza2lwUmln
aHQ9MSAoanVzdCA1OSkuIFJlbWFpbmluZyBCPVsyMCwuLi4sMjksMzEsLi4uLDU3XS4KKyAgICAv
LyBNZXJnZSBBPVszMCwzMiwuLi4sNThdIHZzIEI9WzIwLC4uLiwyOSwzMSwuLi4sNTddOgorICAg
IC8vICAgQlswXT0yMCA8IEFbMF09MzAg4oaSIHJpZ2h0LiBCWzFdPTIxIOKGkiByaWdodC4gLi4u
IEJbOV09Mjkg4oaSIHJpZ2h0LiAoMTAgd2lucywgZ2FsbG9wISkKKyAgICAvLyAgIEluIGdhbGxv
cGluZzogZ2FsbG9wUmlnaHQoMzAsIEJbMTA6XSkg4oaSIGZpbmRzIDMwIGluIFszMSwzMywuLi5d
LiAzMCA8IDMxLCBrPTAuIENvcHkgQlsxMF09MzEuLi4gd2FpdCBuby4KKyAgICAvLyAgIFRoZW4g
Z2FsbG9wTGVmdChBWzBdPTMwLCBCWzEwOl09WzMxLDMzLC4uLl0pIOKGkiAzMCA8IDMxLCBrPTAu
IENvcHkgQVswXT0zMC4KKyAgICAvLyAgIEJvdGggaz0wIDwgNyDihpIgZXhpdCBnYWxsb3Bpbmcu
CisgICAgLy8gICBCYWNrIHRvIGxpbmVhcjogQVsxXT0zMiB2cyBCWzEwXT0zMSDihpIgbGVmdD0z
MiA+IHJpZ2h0PTMxLCByaWdodCB3aW5zLiBCWzExXT0zMyB2cyBBWzFdPTMyIOKGkiBsZWZ0IHdp
bnMuIEFsdGVybmF0aW5nLgorICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOwor
ICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJnYWxsb3AtdGhlbi1saW5lYXIiKTsKKyAgICBhc3Nl
cnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAiZ2FsbG9wLXRoZW4tbGluZWFyIik7Cit9CisKKy8v
IDNkLiBHYWxsb3Bpbmcgd2hlcmUgZ2FsbG9wUmlnaHQgZmluZHMgbWFueSBsZWZ0IGVsZW1lbnRz
IHRvIGJ1bGstY29weS4KKy8vIE5lZWQ6IHJpZ2h0IGVsZW1lbnQgaXMgbGFyZ2UsIG1hbnkgbGVm
dCBlbGVtZW50cyBzbWFsbGVyLgoreworICAgIGxldCBhID0gW107CisgICAgLy8gUnVuIDE6IFsw
LDEsLi4uLDk5LCA1MDAsNTAxLC4uLiw1MDldICgxMTAgZWxlbWVudHMpCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIGZvciAobGV0IGkgPSA1MDA7IGkg
PCA1MTA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIFJ1biAyOiBbNTAsNTEsLi4uLDE0OSwgNTEw
LDUxMSwuLi4sNTE5XSAoMTEwIGVsZW1lbnRzLCBzdGFydHMgYXQgNTAgPCA1MDkpCisgICAgZm9y
IChsZXQgaSA9IDUwOyBpIDwgMTUwOyBpKyspIGEucHVzaChpKTsKKyAgICBmb3IgKGxldCBpID0g
NTEwOyBpIDwgNTIwOyBpKyspIGEucHVzaChpKTsKKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgp
LnNvcnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAiZ2FsbG9wLWJ1bGstY29weS1s
ZWZ0Iik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgImdhbGxvcC1idWxrLWNv
cHktbGVmdCIpOworfQorCisvLyAzZS4gR2FsbG9waW5nIHdoZXJlIGdhbGxvcExlZnQgZmluZHMg
bWFueSByaWdodCBlbGVtZW50cyB0byBidWxrLWNvcHkuCit7CisgICAgbGV0IGEgPSBbXTsKKyAg
ICAvLyBSdW4gMTogWzUwMCw1MDEsLi4uLDUwOSwgMCwxLC4uLiw5XSDigJQgZGVzYyB0aGVuIGFz
Yz8gTm8sIG5lZWQgYXNjZW5kaW5nLgorICAgIC8vIFJ1biAxOiBbMCwxLC4uLiw5LCA1MDAsNTAx
LC4uLiw1MDldIChhc2NlbmRpbmcsIDIwIGVsZW1lbnRzKQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTA7IGkrKykgYS5wdXNoKGkpOworICAgIGZvciAobGV0IGkgPSA1MDA7IGkgPCA1MTA7IGkr
KykgYS5wdXNoKGkpOworICAgIC8vIFJ1biAyOiBbMTAsMTEsLi4uLDEwOV0gKDEwMCBlbGVtZW50
cywgbmV3IHJ1biBzaW5jZSAxMCA8IDUwOSkKKyAgICBmb3IgKGxldCBpID0gMTA7IGkgPCAxMTA7
IGkrKykgYS5wdXNoKGkpOworICAgIC8vIEFmdGVyIHRyaW06IGdhbGxvcFJpZ2h0KDEwLCBSdW4x
KSDihpIgMTAuIFNraXAgWzAuLjldLiBSZW1haW5pbmcgQT1bNTAwLC4uLiw1MDldLgorICAgIC8v
IGdhbGxvcExlZnQoNTA5LCBSdW4yPVsxMCwuLi4sMTA5XSkg4oaSIGFsbCA8IDUwOSwgcmV0dXJu
cyAxMDAuIHNraXBSaWdodD0wLgorICAgIC8vIE1lcmdlIEE9WzUwMCwuLi4sNTA5XSB2cyBCPVsx
MCwuLi4sMTA5XToKKyAgICAvLyBCWzBdPTEwIDwgQVswXT01MDAg4oaSIHJpZ2h0IHdpbnMuIENv
bnRpbnVlcyBmb3IgMTAwIGVsZW1lbnRzLgorICAgIC8vIEluIGdhbGxvcGluZzogZ2FsbG9wUmln
aHQoNTAwLCBCWzc6XSkg4oaSIGFsbCBvZiBCIDwgNTAwLCByZXR1cm5zIGxhcmdlIGsuCisgICAg
Ly8gVGhlbiBnYWxsb3BMZWZ0KEFbMF09NTAwLCBCX3JlbWFpbmluZykg4oaSIGNvcGllcyByZXN0
IG9mIEIuCisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0
U29ydGVkKHNvcnRlZCwgImdhbGxvcC1idWxrLWNvcHktcmlnaHQiKTsKKyAgICBhc3NlcnRTYW1l
RWxlbWVudHMoYSwgc29ydGVkLCAiZ2FsbG9wLWJ1bGstY29weS1yaWdodCIpOworfQorCisvLyAz
Zi4gTGVmdCBydW4gZXhoYXVzdGVkIGR1cmluZyBnYWxsb3BpbmcgbW9kZSAoZ290byBtZXJnZUZp
bmlzaCBmcm9tIGdhbGxvcCkuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICAvLyBSdW4gMTogWzEw
MCwgMTAxXSAoc2hvcnQsIHdpbGwgYmUgYm9vc3RlZCB0byA2NCB2aWEgaW5zZXJ0aW9uIHNvcnQp
CisgICAgLy8gQWN0dWFsbHksIGxldCdzIHVzZSBsb25nZXIgcnVucyBmb3IgcHJlZGljdGFiaWxp
dHkuCisgICAgLy8gUnVuIDE6IFsxMDAsMTAxLC4uLiwxMDldICgxMCBhc2NlbmRpbmcpCisgICAg
Zm9yIChsZXQgaSA9IDEwMDsgaSA8IDExMDsgaSsrKSBhLnB1c2goaSk7CisgICAgLy8gUnVuIDI6
IFswLDEsLi4uLDk5XSAoMTAwIGFzY2VuZGluZywgc3RhcnRzIGF0IDAgPCAxMDkpCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIEFmdGVyIHRyaW06
IGdhbGxvcFJpZ2h0KDAsIFJ1bjE9WzEwMCwuLi4sMTA5XSkg4oaSIDAsIG5vIHNraXAuCisgICAg
Ly8gZ2FsbG9wTGVmdCgxMDksIFJ1bjI9WzAsLi4uLDk5XSkg4oaSIGFsbCA8IDEwOSwgcmV0dXJu
cyAxMDAuIHNraXBSaWdodD0wLgorICAgIC8vIE1lcmdlIEE9WzEwMCwuLi4sMTA5XSB2cyBCPVsw
LC4uLiw5OV06CisgICAgLy8gQlswXT0wIDwgQVswXT0xMDAg4oaSIHJpZ2h0IHdpbnMgNysgdGlt
ZXMg4oaSIGdhbGxvcGluZy4KKyAgICAvLyBnYWxsb3BSaWdodChzcmNbcmlnaHRdLCBBKSDihpIg
YWxsIG9mIEEgPiBzcmNbcmlnaHRdLCBrPTAuCisgICAgLy8gQ29weSBCIGVsZW1lbnQuIGdhbGxv
cExlZnQoQVswXT0xMDAsIEJfcmVtYWluaW5nKSDihpIgY29waWVzIG1hbnkgQiBlbGVtZW50cy4K
KyAgICAvLyBFdmVudHVhbGx5IHJpZ2h0IGV4aGF1c3RlZCDihpIgbWVyZ2VGaW5pc2ggY29waWVz
IHJlbWFpbmluZyBBLgorCisgICAgLy8gQnV0IHdhaXQg4oCUIHdpdGggc2hvcnQgcnVucyBhbmQg
aW5zZXJ0aW9uIHNvcnQgYm9vc3RpbmcuLi4KKyAgICAvLyBSdW4xIGlzIDEwIGVsZW1lbnRzLCA8
IGV4dGVuZFJ1bkN1dG9mZj8gTm8sIGV4dGVuZFJ1bkN1dG9mZj04LCAxMCA+PSA4LgorICAgIC8v
IEJ1dCAxMCA8IGZvcmNlUnVuTGVuZ3RoPTY0Li4uIGFjdHVhbGx5IHRoZSBib29zdCBvbmx5IGhh
cHBlbnMgaWYgcnVuIDwgZXh0ZW5kUnVuQ3V0b2ZmLgorICAgIC8vIFNvIHJ1biBvZiAxMCBpcyBr
ZXB0IGFzLWlzLgorICAgIC8vIEFjdHVhbGx5LCBpbnNlcnRpb24gc29ydCBib29zdDogImlmIChy
dW4xLm1fZW5kIC0gcnVuMS5tX2JlZ2luIDwgZXh0ZW5kUnVuQ3V0b2ZmKSIKKyAgICAvLyBleHRl
bmRSdW5DdXRvZmY9OC4gMTAtZWxlbWVudCBydW46IGVuZC1iZWdpbj05ID49IDguIE5vIGJvb3N0
LiBHb29kLgorICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2Vy
dFNvcnRlZChzb3J0ZWQsICJsZWZ0LWV4aGF1c3RlZC1pbi1nYWxsb3AiKTsKKyAgICBhc3NlcnRT
YW1lRWxlbWVudHMoYSwgc29ydGVkLCAibGVmdC1leGhhdXN0ZWQtaW4tZ2FsbG9wIik7Cit9CisK
Ky8vIDNnLiBSaWdodCBydW4gZXhoYXVzdGVkIGR1cmluZyBnYWxsb3BpbmcgbW9kZS4KK3sKKyAg
ICBsZXQgYSA9IFtdOworICAgIC8vIFJ1biAxOiBbMCwxLC4uLiw5OV0gKDEwMCBhc2NlbmRpbmcp
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIFJ1
biAyOiBbMTAwLDEwMSwuLi4sMTA5XSAoMTAgYXNjZW5kaW5nLCAxMDAgPCA5OSBpcyBmYWxzZSBz
by4uLiB3YWl0LCAxMDAgPiA5OSwgc28KKyAgICAvLyBjb21wYXJhdG9yKDEwMCwgOTkpID0gKDEw
MCA8IDk5KSA9IGZhbHNlIOKGkiBleHRlbmRzIHJ1bjEhIFRoZXkgbWVyZ2UgaW50byBvbmUgcnVu
LgorICAgIC8vIEkgbmVlZCBhIGJyZWFrLiBSdW4yIG11c3Qgc3RhcnQgd2l0aCB2YWx1ZSA8IFJ1
bjEncyBsYXN0IHZhbHVlLgorICAgIC8vIFJ1biAyOiBbNTAsNTEsLi4uLDU5XSAoMTAgYXNjZW5k
aW5nLCA1MCA8IDk5IOKGkiBuZXcgcnVuKQorICAgIGZvciAobGV0IGkgPSA1MDsgaSA8IDYwOyBp
KyspIGEucHVzaChpKTsKKyAgICAvLyBBZnRlciB0cmltOiBnYWxsb3BSaWdodCg1MCwgUnVuMT1b
MCwuLi4sOTldKSDihpIgNTAuIFNraXAgWzAuLjQ5XS4gUmVtYWluaW5nIEE9WzUwLC4uLiw5OV0u
CisgICAgLy8gZ2FsbG9wTGVmdCg5OSwgUnVuMj1bNTAsLi4uLDU5XSkg4oaSIGFsbCDiiaQgOTks
IHJldHVybnMgMTAuIHNraXBSaWdodD0wLgorICAgIC8vIE1lcmdlIEE9WzUwLC4uLiw5OV0gdnMg
Qj1bNTAsLi4uLDU5XToKKyAgICAvLyBBWzBdPTUwID09IEJbMF09NTAg4oaSIGxlZnQgd2lucyAo
ZXF1YWwg4oaSICEocmlnaHQgPCBsZWZ0KSDihpIgdGFrZSBsZWZ0KS4KKyAgICAvLyBBWzFdPTUx
IHZzIEJbMF09NTAg4oaSIGxlZnQ9NTEgPiByaWdodD01MCwgcmlnaHQgd2lucy4KKyAgICAvLyBB
WzFdPTUxIHZzIEJbMV09NTEg4oaSIGxlZnQgd2lucy4KKyAgICAvLyBBbHRlcm5hdGluZywgdGhl
biBCIHJ1bnMgb3V0IOKGkiBtZXJnZUZpbmlzaCBjb3BpZXMgcmVtYWluaW5nIEEuCisgICAgbGV0
IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwg
InJpZ2h0LWV4aGF1c3RlZC1pbi1nYWxsb3AiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwg
c29ydGVkLCAicmlnaHQtZXhoYXVzdGVkLWluLWdhbGxvcCIpOworfQorCisvLyAzaC4gbWluR2Fs
bG9wIGFkYXB0YXRpb246IGZvcmNlIGl0IHRvIGRlY3JlYXNlIHRvIDEgdmlhIHN1c3RhaW5lZCBn
YWxsb3BpbmcuCisvLyBDcmVhdGUgYSBwYXR0ZXJuIHdoZXJlIGdhbGxvcGluZyBpcyB2ZXJ5IHBy
b2R1Y3RpdmUgb3ZlciBtYW55IG1lcmdlcy4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIE11
bHRpcGxlIG5vbi1vdmVybGFwcGluZyBzb3J0ZWQgc2VnbWVudHMgc2VwYXJhdGVkIGJ5IGJyZWFr
cy4KKyAgICAvLyBFYWNoIHBhaXIgb2Ygc2VnbWVudHM6IG9uZSBoaWdoLCBvbmUgbG93IOKGkiBn
YWxsb3BpbmcgYWx3YXlzIHByb2R1Y3RpdmUuCisgICAgZm9yIChsZXQgc2VnID0gMDsgc2VnIDwg
ODsgc2VnKyspIHsKKyAgICAgICAgbGV0IGJhc2UgPSBzZWcgKiAyMDA7CisgICAgICAgIC8vIEhp
Z2ggc2VnbWVudDogW2Jhc2UrMTAwLCAuLi4sIGJhc2UrMTk5XSAoMTAwIGVsZW1lbnRzKQorICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSBhLnB1c2goYmFzZSArIDEwMCArIGkp
OworICAgICAgICAvLyBMb3cgc2VnbWVudCBzdGFydGluZyBuZXcgcnVuOiBbYmFzZSwgLi4uLCBi
YXNlKzk5XQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSBhLnB1c2goYmFz
ZSArIGkpOworICAgIH0KKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21wKTsKKyAg
ICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAibWluZ2FsbG9wLWRlY3JlYXNlIik7CisgICAgYXNzZXJ0
U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgIm1pbmdhbGxvcC1kZWNyZWFzZSIpOworfQorCisvLyAz
aS4gbWluR2FsbG9wIGFkYXB0YXRpb246IGZvcmNlIGl0IHRvIGluY3JlYXNlIGJ5IGVudGVyaW5n
IHRoZW4gcXVpY2tseSBleGl0aW5nIGdhbGxvcGluZy4KKy8vIEludGVybGVhdmVkIGRhdGEgd2hl
cmUgZ2FsbG9waW5nIGRvZXNuJ3QgaGVscC4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFJ1
biAxOiBldmVuIG51bWJlcnMgWzAsMiw0LC4uLiw5OThdCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgYS5wdXNoKGkgKiAyKTsKKyAgICAvLyBSdW4gMjogb2RkIG51bWJlcnMgWzEs
Myw1LC4uLiw5OTldCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgYS5wdXNoKGkg
KiAyICsgMSk7CisgICAgLy8gVGhlc2UgdHdvIHJ1bnMgcGVyZmVjdGx5IGludGVybGVhdmUg4oaS
IG5vIGdhbGxvcGluZyBiZW5lZml0LgorICAgIC8vIEFmdGVyIHByZS1tZXJnZSB0cmltOiBnYWxs
b3BSaWdodCgxLCBbMCwyLC4uLiw5OThdKSA9IDEsIHNraXBMZWZ0PTEuCisgICAgLy8gZ2FsbG9w
TGVmdCg5OTgsIFsxLDMsLi4uLDk5OV0pIOKGkiA5OTggPCA5OTksIHBvc2l0aW9uPTQ5OSwgc2tp
cFJpZ2h0PTEuCisgICAgLy8gTGluZWFyIG1lcmdlIGFsdGVybmF0ZXM6IG5ldmVyIHJlYWNoZXMg
NyBjb25zZWN1dGl2ZSB3aW5zLgorICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXAp
OworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJtaW5nYWxsb3AtaW5jcmVhc2UtaW50ZXJsZWF2
ZWQiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAibWluZ2FsbG9wLWluY3Jl
YXNlLWludGVybGVhdmVkIik7Cit9CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNlY3Rp
b24gNDogYXJyYXlTdGFibGVTb3J0IHN0cnVjdHVyZQorLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
CisvLyA0YS4gRW50aXJlIGFycmF5IGlzIG9uZSBhc2NlbmRpbmcgcnVuIOKAlCBubyBtZXJnZSBu
ZWVkZWQuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsg
aSsrKSBhLnB1c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7Cisg
ICAgYXNzZXJ0QXJyYXlzRXF1YWwoc29ydGVkLCBhLCAic2luZ2xlLWFzY2VuZGluZy1ydW4iKTsK
K30KKworLy8gNGIuIEVudGlyZSBhcnJheSBpcyBvbmUgZGVzY2VuZGluZyBydW4g4oCUIHJldmVy
c2VkLCBubyBtZXJnZSBuZWVkZWQuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBp
ID0gNDk5OyBpID49IDA7IGktLSkgYS5wdXNoKGkpOworICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNl
KCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJzaW5nbGUtZGVzY2VuZGlu
Zy1ydW4iKTsKKyAgICBpZiAoc29ydGVkWzBdICE9PSAwIHx8IHNvcnRlZFs0OTldICE9PSA0OTkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigic2luZ2xlLWRlc2NlbmRpbmctcnVuOiB3cm9uZyBi
b3VuZGFyaWVzIik7Cit9CisKKy8vIDRjLiBTaG9ydCBydW4gYm9vc3Rpbmc6IGZpcnN0IHJ1biBp
cyB2ZXJ5IHNob3J0ICg8IGV4dGVuZFJ1bkN1dG9mZj04KSwKKy8vIHNvIGl0IGdldHMgaW5zZXJ0
aW9uLXNvcnRlZCB1cCB0byBmb3JjZVJ1bkxlbmd0aD02NCBlbGVtZW50cy4KK3sKKyAgICBsZXQg
YSA9IFtdOworICAgIC8vIFN0YXJ0IHdpdGggMy1lbGVtZW50IGRlc2NlbmRpbmc6IFsyLDEsMF0g
4oaSIHJldmVyc2VkIHRvIFswLDEsMl0sIHRoZW4gYm9vc3RlZCB0byA2NC4KKyAgICBhLnB1c2go
MiwgMSwgMCk7CisgICAgLy8gRmlsbCB3aXRoIHJhbmRvbS1pc2ggZGF0YSB0byBtYWtlIHRoZSBp
bnNlcnRpb24gc29ydCB3b3JrLgorICAgIGxldCBybmcgPSBtYWtlUFJORyg0Mik7CisgICAgZm9y
IChsZXQgaSA9IDM7IGkgPCAyMDA7IGkrKykKKyAgICAgICAgYS5wdXNoKHJuZygpICUgNTAwKTsK
KyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQo
c29ydGVkLCAic2hvcnQtcnVuLWJvb3N0Iik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNv
cnRlZCwgInNob3J0LXJ1bi1ib29zdCIpOworfQorCisvLyA0ZC4gU2Vjb25kIHJ1biBpcyBzaG9y
dCBhbmQgZ2V0cyBib29zdGVkLgoreworICAgIGxldCBhID0gW107CisgICAgLy8gTG9uZyBmaXJz
dCBydW46IDEwMCBhc2NlbmRpbmcKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSBh
LnB1c2goaSk7CisgICAgLy8gU2hvcnQgc2Vjb25kIHJ1bjogMyBlbGVtZW50cyBkZXNjZW5kaW5n
IFsxMDIsMTAxLDEwMF0g4oaSIHJldmVyc2VkIHRvIFsxMDAsMTAxLDEwMl0uCisgICAgLy8gVGhl
biBib29zdGVkIHZpYSBpbnNlcnRpb24gc29ydCB0byBtaW4oNjQsIHJlbWFpbmluZykuCisgICAg
YS5wdXNoKDEwMiwgMTAxLCAxMDApOworICAgIC8vIE1vcmUgcmFuZG9tIGRhdGEgZm9yIGluc2Vy
dGlvbiBzb3J0IHRvIGFic29yYi4KKyAgICBsZXQgcm5nID0gbWFrZVBSTkcoOTkpOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgICAgIGEucHVzaChybmcoKSAlIDUwMCk7
CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVk
KHNvcnRlZCwgInNlY29uZC1ydW4tc2hvcnQtYm9vc3QiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVu
dHMoYSwgc29ydGVkLCAic2Vjb25kLXJ1bi1zaG9ydC1ib29zdCIpOworfQorCisvLyA0ZS4gUnVu
IGV4dGVuc2lvbiBhZnRlciBpbnNlcnRpb24gc29ydDogYWZ0ZXIgYm9vc3RpbmcgYSBzaG9ydCBy
dW4gdG8gNjQgZWxlbWVudHMKKy8vIHZpYSBpbnNlcnRpb24gc29ydCwgdGhlIGFsZ29yaXRobSB0
cmllcyB0byBleHRlbmQgZnVydGhlci4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFNob3J0
IGRlc2MgcnVuIFs1LDQsMywyLDFdICg1IGVsZW1lbnRzLCA8IDgpLgorICAgIGZvciAobGV0IGkg
PSA1OyBpID49IDE7IGktLSkgYS5wdXNoKGkpOworICAgIC8vIEFmdGVyIHJldmVyc2FsOiBbMSwy
LDMsNCw1XS4gQm9vc3RlZCB0byA2NCB2aWEgaW5zZXJ0aW9uIHNvcnQuCisgICAgLy8gVGhlbiBl
eHRlbnNpb246IGlmIGVsZW1lbnQgNjUgPj0gZWxlbWVudCA2NCwgcnVuIGV4dGVuZHMuCisgICAg
Ly8gTWFrZSBlbGVtZW50cyA2LTEwMCBhc2NlbmRpbmcgc28gZXh0ZW5zaW9uIHdvcmtzLgorICAg
IGZvciAobGV0IGkgPSA2OyBpIDw9IDEwMDsgaSsrKSBhLnB1c2goaSk7CisgICAgLy8gVGhpcyBt
ZWFucyB0aGUgZW50aXJlIGFycmF5IGJlY29tZXMgb25lIHJ1biAobm8gbWVyZ2UpLgorICAgIGxl
dCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQs
ICJydW4tZXh0ZW5zaW9uLWFmdGVyLWJvb3N0Iik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEs
IHNvcnRlZCwgInJ1bi1leHRlbnNpb24tYWZ0ZXItYm9vc3QiKTsKK30KKworLy8gNGYuIEJvdW5k
YXJ5OiBleGFjdGx5IGV4dGVuZFJ1bkN1dG9mZiAoOCkgZWxlbWVudCBydW4g4oCUIG5vdCBib29z
dGVkLgoreworICAgIGxldCBhID0gW107CisgICAgZm9yIChsZXQgaSA9IDc7IGkgPj0gMDsgaS0t
KSBhLnB1c2goaSk7IC8vIDggZGVzYyDihpIgcmV2ZXJzZWQgdG8gWzAuLjddCisgICAgZm9yIChs
ZXQgaSA9IDEwMDsgaSA+PSA4OyBpLS0pIGEucHVzaChpKTsgLy8gYW5vdGhlciBkZXNjIHJ1biDi
hpIgcmV2ZXJzZWQgdG8gWzguLjEwMF0KKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQo
Y21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAiZXhhY3RseS1leHRlbmRSdW5DdXRvZmYi
KTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAiZXhhY3RseS1leHRlbmRSdW5D
dXRvZmYiKTsKK30KKworLy8gNGcuIEJvdW5kYXJ5OiA3LWVsZW1lbnQgcnVuICg8IGV4dGVuZFJ1
bkN1dG9mZj04KSDigJQgZ2V0cyBib29zdGVkLgoreworICAgIGxldCBhID0gW107CisgICAgZm9y
IChsZXQgaSA9IDY7IGkgPj0gMDsgaS0tKSBhLnB1c2goaSk7IC8vIDcgZGVzYyDihpIgcmV2ZXJz
ZWQgdG8gWzAuLjZdLCB0aGVuIGJvb3N0ZWQKKyAgICBsZXQgcm5nID0gbWFrZVBSTkcoNzcpOwor
ICAgIGZvciAobGV0IGkgPSA3OyBpIDwgMjAwOyBpKyspCisgICAgICAgIGEucHVzaChybmcoKSAl
IDUwMCk7CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0
U29ydGVkKHNvcnRlZCwgImJlbG93LWV4dGVuZFJ1bkN1dG9mZiIpOworICAgIGFzc2VydFNhbWVF
bGVtZW50cyhhLCBzb3J0ZWQsICJiZWxvdy1leHRlbmRSdW5DdXRvZmYiKTsKK30KKworLy8gNGgu
IFBvd2VyIHN0YWNrIGNhc2NhZGluZyBtZXJnZXM6IG1hbnkgcnVucyBjYXVzZSBtdWx0aXBsZSBz
dGFjayBwb3BzLgoreworICAgIGxldCBhID0gW107CisgICAgLy8gQ3JlYXRlIG1hbnkgc2hvcnQg
cnVucyBieSBhbHRlcm5hdGluZyBhc2MvZGVzYyBzZWdtZW50cyBvZiB+MTAgZWxlbWVudHMuCisg
ICAgZm9yIChsZXQgc2VnID0gMDsgc2VnIDwgMzA7IHNlZysrKSB7CisgICAgICAgIGxldCBiYXNl
ID0gc2VnICogMjA7CisgICAgICAgIGlmIChzZWcgJSAyID09PSAwKSB7CisgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIGEucHVzaChiYXNlICsgaSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmb3IgKGxldCBpID0gOTsgaSA+PSAwOyBpLS0pIGEucHVzaChi
YXNlICsgaSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5z
b3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgImNhc2NhZGluZy1wb3dlci1tZXJn
ZXMiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAiY2FzY2FkaW5nLXBvd2Vy
LW1lcmdlcyIpOworfQorCisvLyA0aS4gRmluYWwgc3RhY2sgZHJhaW46IG11bHRpcGxlIGVudHJp
ZXMgb24gcG93ZXIgc3RhY2sgYXQgdGhlIGVuZC4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8v
IEFzY2VuZGluZyBydW5zIG9mIGluY3JlYXNpbmcgc2l6ZSDigJQgdGhlIHBvd2VyIGZ1bmN0aW9u
IGFzc2lnbnMgZGlmZmVyZW50CisgICAgLy8gcG93ZXIgdmFsdWVzLCBzbyB0aGV5IGFjY3VtdWxh
dGUgb24gdGhlIHN0YWNrLgorICAgIGxldCBwb3MgPSAwOworICAgIGZvciAobGV0IHJ1bkxlbiBv
ZiBbMTAsIDIwLCAxNSwgMjUsIDEyLCAxOCwgMzAsIDgsIDIyLCAxNF0pIHsKKyAgICAgICAgLy8g
QWx0ZXJuYXRlIGJldHdlZW4gYXNjIGFuZCBkZXNjIHRvIGZvcmNlIHJ1biBib3VuZGFyaWVzLgor
ICAgICAgICBpZiAocG9zID4gMCkgeworICAgICAgICAgICAgLy8gU3RhcnQgZGVzYyAodmFsdWUg
PCBwcmV2aW91cyBsYXN0KSB0byBicmVhayBwcmV2aW91cyBydW4uCisgICAgICAgICAgICBmb3Ig
KGxldCBpID0gcnVuTGVuIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICAgICAgYS5wdXNo
KHBvcyArIGkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBydW5MZW47IGkrKykKKyAgICAgICAgICAgICAgICBhLnB1c2gocG9zICsgaSk7CisgICAg
ICAgIH0KKyAgICAgICAgcG9zICs9IHJ1bkxlbjsKKyAgICB9CisgICAgbGV0IHNvcnRlZCA9IGEu
c2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgImZpbmFsLXN0YWNr
LWRyYWluIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgImZpbmFsLXN0YWNr
LWRyYWluIik7Cit9CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNlY3Rpb24gNTogZ2Fs
bG9wTGVmdCBhbmQgZ2FsbG9wUmlnaHQgZWRnZSBjYXNlcworLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorCisvLyA1YS4gZ2FsbG9wUmlnaHQ6IGtleSBzbWFsbGVyIHRoYW4gYWxsIGVsZW1lbnRzIOKG
kiByZXR1cm5zIDAuCisvLyBUaGlzIGhhcHBlbnMgaW4gcHJlLW1lcmdlIHRyaW0gd2hlbiBCWzBd
IDwgQVswXS4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFJ1biAxOiBbMTAwLC4uLiwxOTld
IChhc2NlbmRpbmcpCisgICAgZm9yIChsZXQgaSA9IDEwMDsgaSA8IDIwMDsgaSsrKSBhLnB1c2go
aSk7CisgICAgLy8gUnVuIDI6IFswLC4uLiw5OV0gKHN0YXJ0cyBhdCAwIDwgMTk5LCBuZXcgcnVu
KQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIGEucHVzaChpKTsKKyAgICAvLyBn
YWxsb3BSaWdodChCWzBdPTAsIEE9WzEwMCwuLi4sMTk5XSkg4oaSIDAuCisgICAgbGV0IHNvcnRl
ZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRlZCwgImdhbGxv
cFJpZ2h0LWtleS1iZWZvcmUtYWxsIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRl
ZCwgImdhbGxvcFJpZ2h0LWtleS1iZWZvcmUtYWxsIik7Cit9CisKKy8vIDViLiBnYWxsb3BSaWdo
dDoga2V5IGxhcmdlciB0aGFuIGFsbCBlbGVtZW50cyDihpIgcmV0dXJucyBsZW5ndGguCisvLyBU
aGlzIGhhcHBlbnMgaW4gcHJlLW1lcmdlIHRyaW0gd2hlbiBCWzBdID4gQVtsYXN0XS4KK3sKKyAg
ICBsZXQgYSA9IFtdOworICAgIC8vIFJ1biAxOiBbMCwuLi4sOTldCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIFJ1biAyOiBuZWVkcyB0byBzdGFy
dCBhIG5ldyBydW4uIFVzZSBkZXNjIHRvIGJyZWFrLgorICAgIC8vIFsxOTksLi4uLDEwMF0g4oaS
IHJldmVyc2VkIHRvIFsxMDAsLi4uLDE5OV0KKyAgICBmb3IgKGxldCBpID0gMTk5OyBpID49IDEw
MDsgaS0tKSBhLnB1c2goaSk7CisgICAgLy8gZ2FsbG9wUmlnaHQoQlswXT0xMDAsIEE9WzAsLi4u
LDk5XSkg4oaSIDEwMCAoYWZ0ZXIgYWxsLCBzaW5jZSAxMDAgPiA5OSkuCisgICAgLy8gRnVsbCBs
ZWZ0IHRyaW0uIE5vIGFjdHVhbCBtZXJnZS4KKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNv
cnQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAiZ2FsbG9wUmlnaHQta2V5LWFmdGVy
LWFsbCIpOworICAgIGFzc2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJnYWxsb3BSaWdodC1r
ZXktYWZ0ZXItYWxsIik7Cit9CisKKy8vIDVjLiBnYWxsb3BMZWZ0OiBrZXkgbGFyZ2VyIHRoYW4g
YWxsIGVsZW1lbnRzIOKGkiByZXR1cm5zIGxlbmd0aC4KKy8vIFRoaXMgaGFwcGVucyBpbiBwcmUt
bWVyZ2UgcmlnaHQgdHJpbSB3aGVuIEFbbGFzdF0gPiBCW2xhc3RdLgoreworICAgIGxldCBhID0g
W107CisgICAgLy8gUnVuIDE6IFswLC4uLiw5OSwgMzAwLC4uLiwzOTldIChhc2NlbmRpbmcpCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIGZvciAobGV0
IGkgPSAzMDA7IGkgPCA0MDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIFJ1biAyOiBbMTAwLC4u
LiwxOTldIChzdGFydHMgYXQgMTAwIDwgMzk5KQorICAgIGZvciAobGV0IGkgPSAxMDA7IGkgPCAy
MDA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIGdhbGxvcExlZnQoQVtsYXN0XT0zOTksIEI9WzEw
MCwuLi4sMTk5XSkg4oaSIGFsbCA8IDM5OSwgcmV0dXJucyAxMDAuIHNraXBSaWdodD0wLgorICAg
IGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0
ZWQsICJnYWxsb3BMZWZ0LWtleS1hZnRlci1hbGwiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMo
YSwgc29ydGVkLCAiZ2FsbG9wTGVmdC1rZXktYWZ0ZXItYWxsIik7Cit9CisKKy8vIDVkLiBnYWxs
b3BMZWZ0OiBrZXkgc21hbGxlciB0aGFuIGFsbCBlbGVtZW50cyDihpIgcmV0dXJucyAwLgorewor
ICAgIGxldCBhID0gW107CisgICAgLy8gUnVuIDE6IFswLC4uLiw5XSAoMTAgYXNjZW5kaW5nKQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykgYS5wdXNoKGkpOworICAgIC8vIFJ1biAy
OiBbNSwuLi4sMTA0XSAoc3RhcnRzIGF0IDUgPCA5LCBuZXcgcnVuKQorICAgIGZvciAobGV0IGkg
PSA1OyBpIDwgMTA1OyBpKyspIGEucHVzaChpKTsKKyAgICAvLyBnYWxsb3BMZWZ0KEFbbGFzdF09
OSwgQj1bNSwuLi4sMTA0XSwgaGludD1yaWdodExlbi0xPTk5KToKKyAgICAvLyBCWzk5XT0xMDQg
Pj0gOSwgc28gZ2FsbG9wIGxlZnQgZnJvbSBoaW50PTk5LiBGaW5kcyBwb3NpdGlvbiA1IChiZWZv
cmUgQls1XT0xMCkuCisgICAgLy8gc2tpcFJpZ2h0ID0gMTAwIC0gNSA9IDk1LiBSZW1haW5pbmcg
Qj1bNSwuLi4sOV0uCisgICAgbGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAg
YXNzZXJ0U29ydGVkKHNvcnRlZCwgImdhbGxvcExlZnQta2V5LWJlZm9yZS1zb21lIik7CisgICAg
YXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgImdhbGxvcExlZnQta2V5LWJlZm9yZS1zb21l
Iik7Cit9CisKKy8vIDVlLiBnYWxsb3BMZWZ0IHdpdGggaGludCBhdCBlbmQsIGdhbGxvcGluZyBs
ZWZ0IHRocm91Z2ggbWFueSBlbGVtZW50cy4KKy8vIFRoZSBleHBvbmVudGlhbCBzZWFyY2ggc2hv
dWxkIGhpdCBtYXhPZmZzZXQgY2FwLgoreworICAgIGxldCBhID0gW107CisgICAgLy8gUnVuIDE6
IFswLCAxMDAwXSAoYXNjZW5kaW5nLCAyIGVsZW1lbnRzIOKAlCB0b28gc2hvcnQsIGdldHMgYm9v
c3RlZCkKKyAgICAvLyBMZXQncyB1c2UgYSBwYXR0ZXJuIHRoYXQgZm9yY2VzIGdhbGxvcExlZnQg
dG8gc2VhcmNoIGZhciBmcm9tIGhpbnQuCisgICAgLy8gUnVuIDE6IFswLC4uLiw0OSwgNTAwXSAo
NTEgYXNjZW5kaW5nKQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7IGkrKykgYS5wdXNoKGkp
OworICAgIGEucHVzaCg1MDApOworICAgIC8vIFJ1biAyOiBbNTAsLi4uLDQ5OV0gKHN0YXJ0cyBh
dCA1MCA8IDUwMCwgbmV3IHJ1bikKKyAgICBmb3IgKGxldCBpID0gNTA7IGkgPCA1MDA7IGkrKykg
YS5wdXNoKGkpOworICAgIC8vIGdhbGxvcExlZnQoNTAwLCBCPVs1MCwuLi4sNDk5XSwgaGludD00
NDkpOgorICAgIC8vIEJbNDQ5XT00OTkgPCA1MDAsIHNvIGhpbnRMZXNzVGhhbktleT10cnVlLiBH
YWxsb3AgcmlnaHQgZnJvbSA0NDkuCisgICAgLy8gbWF4T2Zmc2V0ID0gNDUwIC0gNDQ5ID0gMS4g
b2Zmc2V0PTEg4oaSIDEgPCAxIGZhbHNlLiBsYXN0T2Zmc2V0PTQ0OSwgb2Zmc2V0PTQ1MC4KKyAg
ICAvLyBCaW5hcnk6IG9uZSBzdGVwLiBSZXR1cm5zIDQ1MC4gc2tpcFJpZ2h0ID0gNDUwIC0gNDUw
ID0gMC4KKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21wKTsKKyAgICBhc3NlcnRT
b3J0ZWQoc29ydGVkLCAiZ2FsbG9wTGVmdC1oaW50LWZhciIpOworICAgIGFzc2VydFNhbWVFbGVt
ZW50cyhhLCBzb3J0ZWQsICJnYWxsb3BMZWZ0LWhpbnQtZmFyIik7Cit9CisKKy8vIDVmLiBnYWxs
b3BSaWdodDoga2V5IGVxdWFscyBtYW55IGVsZW1lbnRzIOKAlCBzaG91bGQgcmV0dXJuIGFmdGVy
IGFsbCBlcXVhbCBlbGVtZW50cy4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFJ1biAxOiBb
NSw1LDUsLi4uLDUsIDEwLDEwLC4uLiwxMF0gKDUwIGZpdmVzIHRoZW4gNTAgdGVucykKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDUwOyBpKyspIGEucHVzaCg1KTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDUwOyBpKyspIGEucHVzaCgxMCk7CisgICAgLy8gUnVuIDI6IFs1LDUsLi4uLDUsIDEw
LDEwLC4uLiwxMF0gKHNhbWUgcGF0dGVybiwgbmV3IHJ1biBzaW5jZSA1IDwgMTApCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDsgaSsrKSBhLnB1c2goNSk7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDsgaSsrKSBhLnB1c2goMTApOworICAgIC8vIGdhbGxvcFJpZ2h0KEJbMF09NSwgQT1b
NSo1MCwgMTAqNTBdKSDihpIgc2hvdWxkIHJldHVybiA1MCAoYWZ0ZXIgYWxsIDVzIGluIEEpLgor
ICAgIC8vIFRoaXMgaXMgdGhlIHJpZ2h0bW9zdCBpbnNlcnRpb24gcG9pbnQgZm9yIDUuCisgICAg
bGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KGNtcCk7CisgICAgYXNzZXJ0U29ydGVkKHNvcnRl
ZCwgImdhbGxvcFJpZ2h0LW1hbnktZXF1YWxzIik7CisgICAgLy8gQWxsIDVzIHNob3VsZCBjb21l
IGJlZm9yZSBhbGwgMTBzLgorICAgIGxldCBmaXZlcyA9IHNvcnRlZC5maWx0ZXIoeCA9PiB4ID09
PSA1KTsKKyAgICBsZXQgdGVucyA9IHNvcnRlZC5maWx0ZXIoeCA9PiB4ID09PSAxMCk7CisgICAg
aWYgKGZpdmVzLmxlbmd0aCAhPT0gMTAwIHx8IHRlbnMubGVuZ3RoICE9PSAxMDApCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiZ2FsbG9wUmlnaHQtbWFueS1lcXVhbHM6IHdyb25nIGNvdW50Iik7
Cit9CisKKy8vIDVnLiBnYWxsb3BMZWZ0OiBrZXkgZXF1YWxzIG1hbnkgZWxlbWVudHMg4oCUIHNo
b3VsZCByZXR1cm4gYmVmb3JlIGFsbCBlcXVhbCBlbGVtZW50cy4KK3sKKyAgICBsZXQgYSA9IFtd
OworICAgIC8vIFJ1biAxOiBbMSwuLi4sNDksIDUwLCA1MCwgLi4uLCA1MF0gKDQ5IHVuaXF1ZSAr
IDUxIGZpZnRpZXMpCisgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA1MDsgaSsrKSBhLnB1c2goaSk7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTsgaSsrKSBhLnB1c2goNTApOworICAgIC8vIFJ1
biAyOiBbMjUsLi4uLDc1XSAoc3RhcnRzIGF0IDI1IDwgNTAsIG5ldyBydW4pCisgICAgZm9yIChs
ZXQgaSA9IDI1OyBpIDw9IDc1OyBpKyspIGEucHVzaChpKTsKKyAgICAvLyBnYWxsb3BMZWZ0KEFb
bGFzdF09NTAsIEIsIGhpbnQ9cmlnaHRMZW4tMSk6CisgICAgLy8gU2hvdWxkIHJldHVybiBwb3Np
dGlvbiBiZWZvcmUgYWxsIDUwcyBpbiBCIChsZWZ0bW9zdCBpbnNlcnRpb24gcG9pbnQpLgorICAg
IGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0
ZWQsICJnYWxsb3BMZWZ0LW1hbnktZXF1YWxzIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEs
IHNvcnRlZCwgImdhbGxvcExlZnQtbWFueS1lcXVhbHMiKTsKK30KKworLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorLy8gU2VjdGlvbiA2OiBTdGFiaWxpdHkgdGVzdHMKKy8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKworLy8gNmEuIFN0YWJpbGl0eSB0aHJvdWdoIGRlc2NlbmRpbmcgcnVuIHJldmVyc2Fs
IHdpdGggZHVwbGljYXRlIGtleXMuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICAvLyBEZXNjZW5k
aW5nIHJ1biB3aXRoIGR1cGxpY2F0ZSBrZXlzOiBtdXN0IHVzZSBzdHJpY3QgPCBmb3IgZGVzY2Vu
ZGluZy4KKyAgICAvLyBbNSw0LDMsMywyLDFdIOKAlCB0aGUgMywzIHBhaXIgc3RvcHMgZGVzYyBl
eHRlbnNpb24uCisgICAgLy8gQWZ0ZXI6IFszLDQsNV0gcmV2ZXJzZWQgZnJvbSBbNSw0LDNdLCB0
aGVuIG5ldyBydW4gWzMsMiwxXSBkZXRlY3RlZC4KKyAgICAvLyBCdXQgWzMsMiwxXSBpcyBkZXNj
IOKGkiByZXZlcnNlZCB0byBbMSwyLDNdLgorICAgIC8vIFRoZSB0d28gM3MgYXJlIG5vdyBpbiBk
aWZmZXJlbnQgcnVucy4gVGhlaXIgc3RhYmlsaXR5IGRlcGVuZHMgb24gbWVyZ2UuCisgICAgLy8g
VGhlIDMgZnJvbSBydW4xIChvcmlnaW5hbCBpbmRleCAyKSBzaG91bGQgY29tZSBiZWZvcmUgMyBm
cm9tIHJ1bjIgKG9yaWdpbmFsIGluZGV4IDMpLgorICAgIGxldCB2YWxzID0gW107CisgICAgZm9y
IChsZXQgaSA9IDUwOyBpID49IDE7IGktLSkgdmFscy5wdXNoKGkpOworICAgIC8vIEFkZCBkdXBs
aWNhdGVzIGF0IHZhcmlvdXMgcG9pbnRzCisgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNTA7IGkr
KykgdmFscy5wdXNoKGkpOworICAgIGxldCB3cmFwcGVkID0gdmFscy5tYXAoKHYsIGkpID0+ICh7
IHZhbHVlOiB2LCBpbmRleDogaSB9KSk7CisgICAgd3JhcHBlZC5zb3J0KCh4LCB5KSA9PiB4LnZh
bHVlIC0geS52YWx1ZSk7CisgICAgYXNzZXJ0U3RhYmxlKHdyYXBwZWQsICJzdGFiaWxpdHktZGVz
Yy1yZXZlcnNhbC1kdXBlcyIpOworfQorCisvLyA2Yi4gU3RhYmlsaXR5IHRocm91Z2ggZ2FsbG9w
aW5nIG1lcmdlIHdpdGggbWFueSBkdXBsaWNhdGUga2V5cy4KK3sKKyAgICBsZXQgYSA9IFtdOwor
ICAgIC8vIDIwMCBlbGVtZW50cyB3aXRoIG9ubHkgNSBkaXN0aW5jdCBrZXlzLCBlbnN1cmluZyBs
b3RzIG9mIGVxdWFsIGNvbXBhcmlzb25zLgorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjAwOyBp
KyspCisgICAgICAgIGEucHVzaCh7IHZhbHVlOiBpICUgNSwgaW5kZXg6IGkgfSk7CisgICAgYS5z
b3J0KCh4LCB5KSA9PiB4LnZhbHVlIC0geS52YWx1ZSk7CisgICAgYXNzZXJ0U3RhYmxlKGEsICJz
dGFiaWxpdHktZ2FsbG9wLW1lcmdlLWR1cGVzIik7Cit9CisKKy8vIDZjLiBTdGFiaWxpdHkgYWNy
b3NzIG11bHRpcGxlIG1lcmdlIGxldmVscyB3aXRoIGR1cGxpY2F0ZXMuCit7CisgICAgbGV0IGEg
PSBbXTsKKyAgICAvLyBNYW55IHNtYWxsIHJ1bnMsIGVhY2ggY29udGFpbmluZyBvdmVybGFwcGlu
ZyB2YWx1ZXMuCisgICAgZm9yIChsZXQgc2VnID0gMDsgc2VnIDwgMjA7IHNlZysrKSB7CisgICAg
ICAgIGxldCBiYXNlID0gKHNlZyAlIDMpICogMTA7IC8vIG9ubHkgMyBkaXN0aW5jdCBiYXNlczog
MCwgMTAsIDIwCisgICAgICAgIC8vIERlc2NlbmRpbmcgc2VnbWVudDogY3JlYXRlcyBhIG5ldyBy
dW4KKyAgICAgICAgZm9yIChsZXQgaSA9IDE0OyBpID49IDA7IGktLSkKKyAgICAgICAgICAgIGEu
cHVzaCh7IHZhbHVlOiBiYXNlICsgaSwgaW5kZXg6IGEubGVuZ3RoIH0pOworICAgIH0KKyAgICBh
LnNvcnQoKHgsIHkpID0+IHgudmFsdWUgLSB5LnZhbHVlKTsKKyAgICBhc3NlcnRTdGFibGUoYSwg
InN0YWJpbGl0eS1tdWx0aS1sZXZlbC1tZXJnZSIpOworfQorCisvLyA2ZC4gU3RhYmlsaXR5OiBj
b25jYXRlbmF0ZWQgc29ydGVkIHN1YmFycmF5cyB3aXRoIHNhbWUgdmFsdWVzLgoreworICAgIGxl
dCBhID0gW107CisgICAgZm9yIChsZXQgYmF0Y2ggPSAwOyBiYXRjaCA8IDU7IGJhdGNoKyspIHsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICAgICAgICAgIGEucHVz
aCh7IHZhbHVlOiBpLCBpbmRleDogYS5sZW5ndGggfSk7CisgICAgfQorICAgIGEuc29ydCgoeCwg
eSkgPT4geC52YWx1ZSAtIHkudmFsdWUpOworICAgIGFzc2VydFN0YWJsZShhLCAic3RhYmlsaXR5
LWNvbmNhdC1zYW1lLXZhbHVlcyIpOworfQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBT
ZWN0aW9uIDc6IEV4Y2VwdGlvbiBzYWZldHkKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8g
N2EuIEV4Y2VwdGlvbiBkdXJpbmcgZGVzY2VuZGluZyBydW4gZGV0ZWN0aW9uLgoreworICAgIGxl
dCBhID0gWzUsIDQsIDMsIDIsIDEsIDBdOworICAgIGZvciAobGV0IGkgPSA2OyBpIDwgMTAwOyBp
KyspIGEucHVzaChpKTsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKKyAgICB0cnkgeworICAgICAgICBhLnNvcnQoKHgsIHkpID0+IHsKKyAgICAgICAgICAg
IGNhbGxDb3VudCsrOworICAgICAgICAgICAgaWYgKGNhbGxDb3VudCA9PT0gMykKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImR1cmluZy1kZXNjLWRldGVjdGlvbiIpOworICAgICAg
ICAgICAgcmV0dXJuIHggLSB5OworICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGlmIChlLm1lc3NhZ2UgPT09ICJkdXJpbmctZGVzYy1kZXRlY3Rpb24iKSB0aHJldyA9IHRy
dWU7CisgICAgICAgIGVsc2UgdGhyb3cgZTsKKyAgICB9CisgICAgaWYgKCF0aHJldykKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJleGNlcHRpb24gZHVyaW5nIGRlc2MgZGV0ZWN0aW9uIG5vdCBw
cm9wYWdhdGVkIik7Cit9CisKKy8vIDdiLiBFeGNlcHRpb24gZHVyaW5nIHByZS1tZXJnZSBnYWxs
b3BSaWdodC4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIC8vIFR3byBydW5zIHRoYXQgd2lsbCBi
ZSBtZXJnZWQuCisgICAgZm9yIChsZXQgaSA9IDk5OyBpID49IDA7IGktLSkgYS5wdXNoKGkpOyAg
IC8vIGRlc2Mg4oaSIHJldmVyc2VkIHRvIFswLi45OV0KKyAgICBmb3IgKGxldCBpID0gNTA7IGkg
PCAxNTA7IGkrKykgYS5wdXNoKGkpOyAgIC8vIGFzYyBbNTAuLjE0OV0KKyAgICBsZXQgY2FsbENv
dW50ID0gMDsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBhLnNv
cnQoKHgsIHkpID0+IHsKKyAgICAgICAgICAgIGNhbGxDb3VudCsrOworICAgICAgICAgICAgLy8g
VGhyb3cgZHVyaW5nIHRoZSBtZXJnZSBwaGFzZSAoYWZ0ZXIgcnVuIGRldGVjdGlvbiBpcyBkb25l
KS4KKyAgICAgICAgICAgIC8vIFJ1biBkZXRlY3Rpb24gdGFrZXMgfjIwMCBjb21wYXJpc29ucywg
bWVyZ2Ugc3RhcnRzIGFmdGVyLgorICAgICAgICAgICAgaWYgKGNhbGxDb3VudCA+IDI1MCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImR1cmluZy1nYWxsb3AtdHJpbSIpOworICAg
ICAgICAgICAgcmV0dXJuIHggLSB5OworICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGlmIChlLm1lc3NhZ2UgPT09ICJkdXJpbmctZ2FsbG9wLXRyaW0iKSB0aHJldyA9IHRy
dWU7CisgICAgICAgIGVsc2UgdGhyb3cgZTsKKyAgICB9CisgICAgaWYgKCF0aHJldykKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJleGNlcHRpb24gZHVyaW5nIGdhbGxvcCB0cmltIG5vdCBwcm9w
YWdhdGVkIik7Cit9CisKKy8vIDdjLiBFeGNlcHRpb24gZHVyaW5nIGdhbGxvcGluZyBtb2RlLgor
eworICAgIGxldCBhID0gW107CisgICAgLy8gUGF0dGVybiB0aGF0IHRyaWdnZXJzIGdhbGxvcGlu
ZzogUnVuMT1bMjAwLC4uLiwyOTldLCBSdW4yPVswLC4uLiw0OSwyNTAsLi4uLDI5OV0KKyAgICBm
b3IgKGxldCBpID0gMjAwOyBpIDwgMzAwOyBpKyspIGEucHVzaChpKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDUwOyBpKyspIGEucHVzaChpKTsKKyAgICBmb3IgKGxldCBpID0gMjUwOyBpIDwg
MzAwOyBpKyspIGEucHVzaChpKTsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBhLnNvcnQoKHgsIHkpID0+IHsKKyAgICAg
ICAgICAgIGNhbGxDb3VudCsrOworICAgICAgICAgICAgaWYgKGNhbGxDb3VudCA+IDMwMCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImR1cmluZy1nYWxsb3BpbmciKTsKKyAgICAg
ICAgICAgIHJldHVybiB4IC0geTsKKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBpZiAoZS5tZXNzYWdlID09PSAiZHVyaW5nLWdhbGxvcGluZyIpIHRocmV3ID0gdHJ1ZTsK
KyAgICAgICAgZWxzZSB0aHJvdyBlOworICAgIH0KKyAgICBpZiAoIXRocmV3KQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImV4Y2VwdGlvbiBkdXJpbmcgZ2FsbG9waW5nIG5vdCBwcm9wYWdhdGVk
Iik7Cit9CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNlY3Rpb24gODogU2l6ZSBib3Vu
ZGFyeSB0ZXN0cworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyA4YS4gU2l6ZXMgYXJvdW5k
IGluc2VydGlvbiBzb3J0IHRocmVzaG9sZCAoZXh0ZW5kUnVuQ3V0b2ZmPTgpLgoreworICAgIGZv
ciAobGV0IG4gPSAxOyBuIDw9IDIwOyBuKyspIHsKKyAgICAgICAgbGV0IGEgPSBbXTsKKyAgICAg
ICAgZm9yIChsZXQgaSA9IG47IGkgPj0gMTsgaS0tKSBhLnB1c2goaSk7CisgICAgICAgIGxldCBz
b3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgICAgICBhc3NlcnRTb3J0ZWQoc29ydGVk
LCAic2l6ZS0iICsgbik7CisgICAgICAgIGlmIChzb3J0ZWQubGVuZ3RoICE9PSBuKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJzaXplLSIgKyBuICsgIjogd3JvbmcgbGVuZ3RoIik7Cisg
ICAgfQorfQorCisvLyA4Yi4gU2l6ZSBleGFjdGx5IGZvcmNlUnVuTGVuZ3RoICg2NCk6IG9uZSBy
dW4gYWZ0ZXIgYm9vc3RpbmcsIG5vIG1lcmdlLgoreworICAgIGxldCBybmcgPSBtYWtlUFJORygx
MjMpOworICAgIGxldCBhID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2NDsgaSsrKSBh
LnB1c2gocm5nKCkgJSAxMDAwKTsKKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21w
KTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAic2l6ZS02NC1mb3JjZVJ1bkxlbmd0aCIpOwor
ICAgIGFzc2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJzaXplLTY0LWZvcmNlUnVuTGVuZ3Ro
Iik7Cit9CisKKy8vIDhjLiBTaXplIDY1OiB0d28gcnVucyAoZmlyc3QgYm9vc3RlZCB0byA2NCwg
cmVtYWluZGVyIGlzIDEgZWxlbWVudCkuCit7CisgICAgbGV0IHJuZyA9IG1ha2VQUk5HKDQ1Nik7
CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY1OyBpKyspIGEucHVz
aChybmcoKSAlIDEwMDApOworICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOwor
ICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJzaXplLTY1LXR3by1ydW5zIik7CisgICAgYXNzZXJ0
U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgInNpemUtNjUtdHdvLXJ1bnMiKTsKK30KKworLy8gOGQu
IFNpemUgMTI4OiB0d28gcnVucyBvZiA2NC4KK3sKKyAgICBsZXQgcm5nID0gbWFrZVBSTkcoNzg5
KTsKKyAgICBsZXQgYSA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspIGEu
cHVzaChybmcoKSAlIDEwMDApOworICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXAp
OworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJzaXplLTEyOC10d28tcnVucyIpOworICAgIGFz
c2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJzaXplLTEyOC10d28tcnVucyIpOworfQorCisv
LyA4ZS4gU2l6ZSAxMjk6IHRocmVlIHJ1bnMuCit7CisgICAgbGV0IHJuZyA9IG1ha2VQUk5HKDMy
MSk7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEyOTsgaSsrKSBh
LnB1c2gocm5nKCkgJSAxMDAwKTsKKyAgICBsZXQgc29ydGVkID0gYS5zbGljZSgpLnNvcnQoY21w
KTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAic2l6ZS0xMjktdGhyZWUtcnVucyIpOworICAg
IGFzc2VydFNhbWVFbGVtZW50cyhhLCBzb3J0ZWQsICJzaXplLTEyOS10aHJlZS1ydW5zIik7Cit9
CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNlY3Rpb24gOTogQ29tcGxleCBwYXR0ZXJu
cworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyA5YS4gT3JnYW4gcGlwZTogYXNjZW5kaW5n
IHRoZW4gZGVzY2VuZGluZy4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMjAwOyBpKyspIGEucHVzaChpKTsKKyAgICBmb3IgKGxldCBpID0gMTk5OyBpID49IDA7
IGktLSkgYS5wdXNoKGkpOworICAgIGxldCB3cmFwcGVkID0gYS5tYXAoKHYsIGkpID0+ICh7IHZh
bHVlOiB2LCBpbmRleDogaSB9KSk7CisgICAgd3JhcHBlZC5zb3J0KCh4LCB5KSA9PiB4LnZhbHVl
IC0geS52YWx1ZSk7CisgICAgYXNzZXJ0U3RhYmxlKHdyYXBwZWQsICJvcmdhbi1waXBlIik7Cit9
CisKKy8vIDliLiBSZXZlcnNlIG9yZ2FuIHBpcGU6IGRlc2NlbmRpbmcgdGhlbiBhc2NlbmRpbmcu
Cit7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMTk5OyBpID49IDA7IGktLSkg
YS5wdXNoKGkpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjAwOyBpKyspIGEucHVzaChpKTsK
KyAgICBsZXQgd3JhcHBlZCA9IGEubWFwKCh2LCBpKSA9PiAoeyB2YWx1ZTogdiwgaW5kZXg6IGkg
fSkpOworICAgIHdyYXBwZWQuc29ydCgoeCwgeSkgPT4geC52YWx1ZSAtIHkudmFsdWUpOworICAg
IGFzc2VydFN0YWJsZSh3cmFwcGVkLCAicmV2ZXJzZS1vcmdhbi1waXBlIik7Cit9CisKKy8vIDlj
LiBTYXd0b290aCB3aXRoIHZhcnlpbmcgc2VnbWVudCBsZW5ndGhzLgoreworICAgIGxldCBhID0g
W107CisgICAgbGV0IHBvcyA9IDA7CisgICAgZm9yIChsZXQgc2VnTGVuIG9mIFsxMDAsIDUwLCAy
MDAsIDMwLCAxNTAsIDgwLCAxMCwgMTIwXSkgeworICAgICAgICBpZiAoYS5sZW5ndGggPiAwICYm
IGEubGVuZ3RoICUgMiA9PT0gMCkgeworICAgICAgICAgICAgLy8gRGVzY2VuZGluZyBzZWdtZW50
CisgICAgICAgICAgICBmb3IgKGxldCBpID0gc2VnTGVuIC0gMTsgaSA+PSAwOyBpLS0pCisgICAg
ICAgICAgICAgICAgYS5wdXNoKHBvcyArIGkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gQXNjZW5kaW5nIHNlZ21lbnQKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
c2VnTGVuOyBpKyspCisgICAgICAgICAgICAgICAgYS5wdXNoKHBvcyArIGkpOworICAgICAgICB9
CisgICAgICAgIHBvcyArPSBzZWdMZW47CisgICAgfQorICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNl
KCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJzYXd0b290aC12YXJ5aW5n
LWxlbmd0aHMiKTsKKyAgICBhc3NlcnRTYW1lRWxlbWVudHMoYSwgc29ydGVkLCAic2F3dG9vdGgt
dmFyeWluZy1sZW5ndGhzIik7Cit9CisKKy8vIDlkLiBQbGF0ZWF1OiBsb25nIHJ1biBvZiBlcXVh
bCB2YWx1ZXMgc3Vycm91bmRlZCBieSBzb3J0ZWQgc2VxdWVuY2VzLgoreworICAgIGxldCBhID0g
W107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYS5wdXNoKGkpOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMjAwOyBpKyspIGEucHVzaCgxMDApOyAvLyBwbGF0ZWF1CisgICAg
Zm9yIChsZXQgaSA9IDEwMTsgaSA8IDIwMDsgaSsrKSBhLnB1c2goaSk7CisgICAgLy8gWzAuLjk5
XSBpcyBvbmUgcnVuLiBbMTAwKjIwMF0gaXMgb25lIHJ1biAoYXNjZW5kaW5nLCBhbGwgZXF1YWwp
LgorICAgIC8vIEJ1dCAxMDAgPT0gOTkrMSwgc28gY29tcGFyYXRvcigxMDAsIDk5KSA9IGZhbHNl
IOKGkiBleHRlbmRzIHJ1biAxIQorICAgIC8vIFNpbWlsYXJseSBbMTAwLCAxMDAsIC4uLl0gZXh0
ZW5kcy4gVGhlbiAxMDEgPiAxMDAsIGV4dGVuZHMgZnVydGhlci4KKyAgICAvLyBBY3R1YWxseSB0
aGUgZW50aXJlIGFycmF5IG1pZ2h0IGJlIG9uZSBydW4hIExldCBtZSBicmVhayBpdC4KKyAgICAv
LyBCZXR0ZXI6IGZvcmNlIGEgYnJlYWsuCisgICAgYSA9IFtdOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwOyBpKyspIGEucHVzaChpKTsgICAgICAgICAgIC8vIGFzYyBbMC4uOTldCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgYS5wdXNoKDUwKTsgICAgICAgICAgIC8vIHN0
YXJ0cyBhdCA1MCA8IDk5LCBuZXcgcnVuCisgICAgZm9yIChsZXQgaSA9IDUxOyBpIDwgMTUwOyBp
KyspIGEucHVzaChpKTsgICAgICAgICAgIC8vIGNvbnRpbnVlcyBhc2NlbmRpbmcgZnJvbSA1MQor
ICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChz
b3J0ZWQsICJwbGF0ZWF1LWluLW1pZGRsZSIpOworICAgIGFzc2VydFNhbWVFbGVtZW50cyhhLCBz
b3J0ZWQsICJwbGF0ZWF1LWluLW1pZGRsZSIpOworfQorCisvLyA5ZS4gVHdvLXZhbHVlIGFycmF5
OiBvbmx5IDBzIGFuZCAxcy4KK3sKKyAgICBsZXQgYSA9IFtdOworICAgIGxldCBybmcgPSBtYWtl
UFJORyg1NTUpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspCisgICAgICAgIGEu
cHVzaChybmcoKSAlIDIpOworICAgIGxldCBzb3J0ZWQgPSBhLnNsaWNlKCkuc29ydChjbXApOwor
ICAgIGFzc2VydFNvcnRlZChzb3J0ZWQsICJ0d28tdmFsdWVzIik7CisgICAgbGV0IHplcm9zID0g
c29ydGVkLmZpbHRlcih4ID0+IHggPT09IDApLmxlbmd0aDsKKyAgICBsZXQgb25lcyA9IHNvcnRl
ZC5maWx0ZXIoeCA9PiB4ID09PSAxKS5sZW5ndGg7CisgICAgaWYgKHplcm9zICsgb25lcyAhPT0g
NTAwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInR3by12YWx1ZXM6IGVsZW1lbnQgY291bnQg
d3JvbmciKTsKK30KKworLy8gOWYuIEFscmVhZHkgc29ydGVkIHdpdGggZHVwbGljYXRlcyDigJQg
cHJlLW1lcmdlIHRyaW0gc2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nLgoreworICAgIGxldCBhID0g
W107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBhLnB1c2go
aSk7CisgICAgICAgIGEucHVzaChpKTsgLy8gZHVwbGljYXRlIGVhY2gKKyAgICB9CisgICAgLy8g
VGhpcyBpcyBvbmUgYXNjZW5kaW5nIHJ1biAoZHVwbGljYXRlcyBhcmUgPj0pLiBObyBtZXJnZS4K
KyAgICAvLyBCcmVhayBpbnRvIHR3byBydW5zOgorICAgIGxldCBiID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgYi5wdXNoKGkpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyBpKyspIGIucHVzaChpKTsgLy8gc3RhcnRzIGF0IDAgPCA5OSwgbmV3IHJ1bgorICAg
IGxldCBzb3J0ZWQgPSBiLnNsaWNlKCkuc29ydChjbXApOworICAgIGFzc2VydFNvcnRlZChzb3J0
ZWQsICJzb3J0ZWQtd2l0aC1kdXBsaWNhdGVzIik7CisgICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGIs
IHNvcnRlZCwgInNvcnRlZC13aXRoLWR1cGxpY2F0ZXMiKTsKK30KKworLy8gOWcuIExhcmdlIHJh
bmRvbSB0ZXN0IHdpdGggc3RhYmlsaXR5IGNoZWNrLgoreworICAgIGxldCBybmcgPSBtYWtlUFJO
RygxMjM0NSk7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspCisgICAgICAgIGEucHVzaCh7IHZhbHVlOiBybmcoKSAlIDEwMCwgaW5kZXg6IGkgfSk7
CisgICAgYS5zb3J0KCh4LCB5KSA9PiB4LnZhbHVlIC0geS52YWx1ZSk7CisgICAgYXNzZXJ0U3Rh
YmxlKGEsICJsYXJnZS1yYW5kb20tc3RhYmlsaXR5Iik7Cit9CisKKy8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKy8vIFNlY3Rpb24gMTA6IFR5cGVkQXJyYXkgcGF0aHMKKy8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKworLy8gMTBhLiBUeXBlZEFycmF5IHdpdGggZGVzY2VuZGluZyBydW4gZGV0ZWN0aW9u
LgoreworICAgIGxldCB0YSA9IG5ldyBJbnQzMkFycmF5KDUwMCk7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDA7IGkrKykgdGFbaV0gPSA1MDAgLSBpOworICAgIHRhLnNvcnQoKHgsIHkpID0+
IHggLSB5KTsKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRhLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmICh0YVtpXSA8IHRhW2kgLSAxXSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
dHlwZWQtYXJyYXktZGVzYzogbm90IHNvcnRlZCBhdCAiICsgaSk7CisgICAgfQorfQorCisvLyAx
MGIuIFR5cGVkQXJyYXkgd2l0aCBnYWxsb3BpbmcgcGF0dGVybi4KK3sKKyAgICBsZXQgdGEgPSBu
ZXcgRmxvYXQ2NEFycmF5KDIwMCk7CisgICAgLy8gUnVuIDE6IFsyMDAsLi4uLDI5OV0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB0YVtpXSA9IDIwMCArIGk7CisgICAgLy8gUnVu
IDI6IFswLC4uLiw0OSwgMjUwLC4uLiwyOTldCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsg
aSsrKSB0YVsxMDAgKyBpXSA9IGk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgaSsrKSB0
YVsxNTAgKyBpXSA9IDI1MCArIGk7CisgICAgdGEuc29ydCgoeCwgeSkgPT4geCAtIHkpOworICAg
IGZvciAobGV0IGkgPSAxOyBpIDwgdGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHRhW2ld
IDwgdGFbaSAtIDFdKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ0eXBlZC1hcnJheS1n
YWxsb3A6IG5vdCBzb3J0ZWQgYXQgIiArIGkpOworICAgIH0KK30KKworLy8gMTBjLiBUeXBlZEFy
cmF5IHNhd3Rvb3RoLgoreworICAgIGxldCB0YSA9IG5ldyBVaW50MTZBcnJheSgzMDApOworICAg
IGZvciAobGV0IHNlZyA9IDA7IHNlZyA8IDY7IHNlZysrKSB7CisgICAgICAgIGxldCBiYXNlID0g
c2VnICogNTA7CisgICAgICAgIGlmIChzZWcgJSAyID09PSAwKSB7CisgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDUwOyBpKyspIHRhW2Jhc2UgKyBpXSA9IGJhc2UgKyBpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgaSsrKSB0YVti
YXNlICsgaV0gPSBiYXNlICsgNDkgLSBpOworICAgICAgICB9CisgICAgfQorICAgIHRhLnNvcnQo
KHgsIHkpID0+IHggLSB5KTsKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRhLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmICh0YVtpXSA8IHRhW2kgLSAxXSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigidHlwZWQtYXJyYXktc2F3dG9vdGg6IG5vdCBzb3J0ZWQgYXQgIiArIGkpOworICAg
IH0KK30KKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU2VjdGlvbiAxMTogQm9vbGVhbiBj
b21wYXJhdG9yIChKU0Mtc3BlY2lmaWMgY29lcmNpb24pCisvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisKKy8vIDExYS4gQm9vbGVhbiBjb21wYXJhdG9yIHdpdGggZGVzY2VuZGluZyBpbnB1dC4KKy8v
IGNvZXJjZUNvbXBhcmF0b3JSZXN1bHRUb0Jvb2xlYW4gcmV0dXJucyAhcmVzdWx0IGZvciBib29s
ZWFucy4KKy8vIChhLCBiKSA9PiBiIDw9IGE6IHdoZW4gYiA8PSBhLCByZXR1cm5zIHRydWUsIGNv
ZXJjZWQgdG8gZmFsc2UgKG5vdCBsZXNzLXRoYW4pLgorLy8gICAgICAgICAgICAgICAgICAgd2hl
biBiID4gYSwgcmV0dXJucyBmYWxzZSwgY29lcmNlZCB0byB0cnVlIChsZXNzLXRoYW4pLgorLy8g
U28gdGhpcyBzb3J0cyBhc2NlbmRpbmcuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3IgKGxl
dCBpID0gMjAwOyBpID49IDE7IGktLSkgYS5wdXNoKGkpOworICAgIGxldCBzb3J0ZWQgPSBhLnNs
aWNlKCkuc29ydCgoeCwgeSkgPT4geSA8PSB4KTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAi
Ym9vbGVhbi1jbXAtZGVzYy1pbnB1dCIpOworfQorCisvLyAxMWIuIEJvb2xlYW4gY29tcGFyYXRv
ciB3aXRoIHNhd3Rvb3RoIGlucHV0LgoreworICAgIGxldCBhID0gW107CisgICAgZm9yIChsZXQg
c2VnID0gMDsgc2VnIDwgMTA7IHNlZysrKSB7CisgICAgICAgIGlmIChzZWcgJSAyID09PSAwKSB7
CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMwOyBpKyspIGEucHVzaChzZWcgKiAz
MCArIGkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDI5OyBp
ID49IDA7IGktLSkgYS5wdXNoKHNlZyAqIDMwICsgaSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
bGV0IHNvcnRlZCA9IGEuc2xpY2UoKS5zb3J0KCh4LCB5KSA9PiB5IDw9IHgpOworICAgIGFzc2Vy
dFNvcnRlZChzb3J0ZWQsICJib29sZWFuLWNtcC1zYXd0b290aCIpOworfQorCisvLyAxMWMuIEJv
b2xlYW4gY29tcGFyYXRvciBzdGFiaWxpdHkuCit7CisgICAgbGV0IGEgPSBbXTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDIwMDsgaSsrKQorICAgICAgICBhLnB1c2goeyB2YWx1ZTogaSAlIDEw
LCBpbmRleDogaSB9KTsKKyAgICBhLnNvcnQoKHgsIHkpID0+IHkudmFsdWUgPD0geC52YWx1ZSk7
CisgICAgYXNzZXJ0U3RhYmxlKGEsICJib29sZWFuLWNtcC1zdGFiaWxpdHkiKTsKK30KKworLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorLy8gU2VjdGlvbiAxMjogdG9Tb3J0ZWQgKHJldHVybnMgbmV3
IGFycmF5LCB0ZXN0cyBzYW1lIGNvZGUgcGF0aCkKKy8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor
Ly8gMTJhLiB0b1NvcnRlZCB3aXRoIGdhbGxvcGluZyBwYXR0ZXJuLgoreworICAgIGxldCBhID0g
W107CisgICAgZm9yIChsZXQgaSA9IDIwMDsgaSA8IDMwMDsgaSsrKSBhLnB1c2goaSk7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgaSsrKSBhLnB1c2goaSk7CisgICAgZm9yIChsZXQgaSA9
IDI1MDsgaSA8IDMwMDsgaSsrKSBhLnB1c2goaSk7CisgICAgbGV0IHNvcnRlZCA9IGEudG9Tb3J0
ZWQoY21wKTsKKyAgICBhc3NlcnRTb3J0ZWQoc29ydGVkLCAidG9Tb3J0ZWQtZ2FsbG9wIik7Cisg
ICAgYXNzZXJ0U2FtZUVsZW1lbnRzKGEsIHNvcnRlZCwgInRvU29ydGVkLWdhbGxvcCIpOworICAg
IC8vIFZlcmlmeSBvcmlnaW5hbCBpcyB1bm1vZGlmaWVkLgorICAgIGlmIChhWzBdICE9PSAyMDAp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigidG9Tb3J0ZWQgbW9kaWZpZWQgb3JpZ2luYWwiKTsK
K30KKworLy8gMTJiLiB0b1NvcnRlZCBzdGFiaWxpdHkuCit7CisgICAgbGV0IGEgPSBbXTsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDMwMDsgaSsrKQorICAgICAgICBhLnB1c2goeyB2YWx1ZTog
aSAlIDcsIGluZGV4OiBpIH0pOworICAgIGxldCBzb3J0ZWQgPSBhLnRvU29ydGVkKCh4LCB5KSA9
PiB4LnZhbHVlIC0geS52YWx1ZSk7CisgICAgYXNzZXJ0U3RhYmxlKHNvcnRlZCwgInRvU29ydGVk
LXN0YWJpbGl0eSIpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>