<?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>162907</bug_id>
          
          <creation_ts>2016-10-04 09:10:18 -0700</creation_ts>
          <short_desc>[Web IDL] Add support for dictionary inheritance</short_desc>
          <delta_ts>2016-10-04 11:54:21 -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>Bindings</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236201</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 09:10:18 -0700</bug_when>
    <thetext>Add support for dictionary inheritance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236236</commentid>
    <comment_count>1</comment_count>
      <attachid>290612</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 10:33:08 -0700</bug_when>
    <thetext>Created attachment 290612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236247</commentid>
    <comment_count>2</comment_count>
      <attachid>290616</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 10:44:19 -0700</bug_when>
    <thetext>Created attachment 290616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236305</commentid>
    <comment_count>3</comment_count>
      <attachid>290616</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 11:54:13 -0700</bug_when>
    <thetext>Comment on attachment 290616
Patch

Clearing flags on attachment: 290616

Committed r206776: &lt;http://trac.webkit.org/changeset/206776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236306</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-04 11:54:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290612</attachid>
            <date>2016-10-04 10:33:08 -0700</date>
            <delta_ts>2016-10-04 10:44:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162907-20161004102958.patch</filename>
            <type>text/plain</type>
            <size>42961</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk2OGNhYTFkMTc3ZDk0
YWQwYjhhMWQxMGFmZjNiYjhmYTdhOGNjMi4uMzdkZTNiNzQzOWJkZDEyODdlZDg0N2M3MGQzOWFk
N2MxNWRjMmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBJRExdIEFkZCBzdXBw
b3J0IGZvciBkaWN0aW9uYXJ5IGluaGVyaXRhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSB0byBvdXIgV2ViIElETCBwYXJzZXIgYW5kCisgICAgICAgIGJpbmRpbmdzIGdlbmVyYXRv
ci4gTGV2ZXJhZ2UgdGhpcyBuZXcgc3VwcG9ydCBmb3IgRXZlbnRUYXJnZXQncworICAgICAgICBF
dmVudExpc3RlbmVyT3B0aW9ucyAvIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIGRpY3Rpb25hcmll
cywgaW4KKyAgICAgICAgb3JkZXIgdG8gbWF0Y2ggdGhlIERPTSBzcGVjaWZpY2F0aW9uOgorICAg
ICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLWV2ZW50dGFyZ2V0
CisKKyAgICAgICAgQWxzbyB1cGRhdGUgdGhlIGJpbmRpbmdzIGdlbmVyYXRvciB0byBjb252ZXJ0
IHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lbWJlcnMgaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVy
LCBhcyBwZXI6CisgICAgICAgIC0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMt
ZGljdGlvbmFyeSAoU3RlcCA1LjEpCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5l
ZCBiaW5kaW5ncyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbToKKyAgICAgICAgKEdldERpY3Rpb25hcnlCeU5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEaWN0aW9u
YXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlRGljdGlvbmFyeSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRl
TnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5Pik6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnk+KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKwogMjAxNi0xMC0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBjb250cm9scyBhcmUgZGlzcGxheWVk
IGluIHRoZSBpbmNvcnJlY3Qgc3RhdGUgbW9tZW50YXJpbHkgYWZ0ZXIgc3dpdGNoaW5nIGJldHdl
ZW4gdGFicyBwbGF5aW5nIG1lZGlhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggMzFiZTcxMWE0YTUxMjIzZjFiZjRkMzkwMjQ1ZTZi
MmQzNTM3ODc3Zi4uNmNmMDNiYzAyOTA3ZTA0ZGNlMzEzZWZjYTliZmZjM2RhNDhhZjUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpA
QCAtNDU1LDYgKzQ1NSwxNiBAQCBzdWIgSXNEaWN0aW9uYXJ5VHlwZQogICAgIHJldHVybiAwOwog
fQogCitzdWIgR2V0RGljdGlvbmFyeUJ5TmFtZQoreworICAgIG15ICgkb2JqZWN0LCAkbmFtZSkg
PSBAXzsKKyAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJG5hbWUpOworCisgICAgZm9yIG15ICRk
aWN0aW9uYXJ5IChAeyR1c2VEb2N1bWVudC0+ZGljdGlvbmFyaWVzfSkgeworICAgICAgICByZXR1
cm4gJGRpY3Rpb25hcnkgaWYgJGRpY3Rpb25hcnktPm5hbWUgZXEgJG5hbWU7CisgICAgfQorfQor
CiBzdWIgSGFzRGljdGlvbmFyeUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlCiB7CiAgICAgbXkg
KCRvYmplY3QsICR0eXBlKSA9IEBfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxY2EwZjFiMWMxYjQ3MTRmOTRkNDAwNDhh
NDVkNGI3MmE5NmM5NjMxLi5jMTI1ZDg0YWU4M2Y5NWVmMTk4YThmZDhlYTYzNjYyY2IwOWQ4ZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtOTUzLDEwICs5NTMsMTAgQEAgc3ViIEdlbmVyYXRlQ29udmVyc2lvblJ1bGVX
aXRoTGVhZGluZ0NvbW1hCiAKIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNv
bnRlbnQKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGRpY3Rpb25hcmllcykgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGFsbERpY3Rpb25hcmllcykgPSBAXzsKIAogICAgIG15ICRyZXN1bHQg
PSAiIjsKLSAgICBmb3JlYWNoIG15ICRkaWN0aW9uYXJ5IChAJGRpY3Rpb25hcmllcykgeworICAg
IGZvcmVhY2ggbXkgJGRpY3Rpb25hcnkgKEAkYWxsRGljdGlvbmFyaWVzKSB7CiAgICAgICAgIG15
ICRuYW1lID0gJGRpY3Rpb25hcnktPm5hbWU7CiAKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRpY3Rpb25h
cnkpOwpAQCAtOTg4LDc5ICs5ODgsOTAgQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVu
dGF0aW9uQ29udGVudAogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIAogICAgICAgICAj
IDMuIExldCBkaWN0IGJlIGFuIGVtcHR5IGRpY3Rpb25hcnkgdmFsdWUgb2YgdHlwZSBEOyBldmVy
eSBkaWN0aW9uYXJ5IG1lbWJlciBpcyBpbml0aWFsbHkgY29uc2lkZXJlZCB0byBiZSBub3QgcHJl
c2VudC4KKwogICAgICAgICAjIDQuIExldCBkaWN0aW9uYXJpZXMgYmUgYSBsaXN0IGNvbnNpc3Rp
bmcgb2YgRCBhbmQgYWxsIG9mIETigJlzIGluaGVyaXRlZCBkaWN0aW9uYXJpZXMsIGluIG9yZGVy
IGZyb20gbGVhc3QgdG8gbW9zdCBkZXJpdmVkLgotICAgICAgICAjIEZJWE1FOiBXZSBkbyBub3Qg
c3VwcG9ydCBkaWN0aW9uYXJ5IGluaGVyaXRlbmNlIHlldC4KKyAgICAgICAgbXkgQGRpY3Rpb25h
cmllczsKKyAgICAgICAgcHVzaChAZGljdGlvbmFyaWVzLCAkZGljdGlvbmFyeSk7CisgICAgICAg
IG15ICRwYXJlbnREaWN0aW9uYXJ5ID0gJGNvZGVHZW5lcmF0b3ItPkdldERpY3Rpb25hcnlCeU5h
bWUoJGRpY3Rpb25hcnktPnBhcmVudCk7CisgICAgICAgIHdoaWxlIChkZWZpbmVkKCRwYXJlbnRE
aWN0aW9uYXJ5KSkgeworICAgICAgICAgICAgdW5zaGlmdChAZGljdGlvbmFyaWVzLCAkcGFyZW50
RGljdGlvbmFyeSk7CisgICAgICAgICAgICAkcGFyZW50RGljdGlvbmFyeSA9ICRjb2RlR2VuZXJh
dG9yLT5HZXREaWN0aW9uYXJ5QnlOYW1lKCRwYXJlbnREaWN0aW9uYXJ5LT5wYXJlbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgbXkgJGFyZ3VtZW50cyA9ICIiOworICAgICAgICBteSAkY29tbWEg
PSAiIjsKIAogICAgICAgICAjIDUuIEZvciBlYWNoIGRpY3Rpb25hcnkgZGljdGlvbmFyeSBpbiBk
aWN0aW9uYXJpZXMsIGluIG9yZGVyOgotICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEB7JGRp
Y3Rpb25hcnktPm1lbWJlcnN9KSB7Ci0gICAgICAgICAgICAkbWVtYmVyLT5kZWZhdWx0KCJ1bmRl
ZmluZWQiKSBpZiAkbWVtYmVyLT50eXBlIGVxICJhbnkiOyAjIFVzZSB1bmRlZmluZWQgYXMgZGVm
YXVsdCB2YWx1ZSBmb3IgbWVtYmVyIG9mIHR5cGUgJ2FueScuCisgICAgICAgIGZvcmVhY2ggbXkg
JGRpY3Rpb25hcnkgKEBkaWN0aW9uYXJpZXMpIHsKKyAgICAgICAgICAgICMgRm9yIGVhY2ggZGlj
dGlvbmFyeSBtZW1iZXIgbWVtYmVyIGRlY2xhcmVkIG9uIGRpY3Rpb25hcnksIGluIGxleGljb2dy
YXBoaWNhbCBvcmRlcjoKKyAgICAgICAgICAgIG15IEBzb3J0ZWRNZW1iZXJzID0gc29ydCB7IGxj
KCRhLT5uYW1lKSBjbXAgbGMoJGItPm5hbWUpIH0gQHskZGljdGlvbmFyeS0+bWVtYmVyc307Cisg
ICAgICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEBzb3J0ZWRNZW1iZXJzKSB7CisgICAgICAg
ICAgICAgICAgJG1lbWJlci0+ZGVmYXVsdCgidW5kZWZpbmVkIikgaWYgJG1lbWJlci0+dHlwZSBl
cSAiYW55IjsgIyBVc2UgdW5kZWZpbmVkIGFzIGRlZmF1bHQgdmFsdWUgZm9yIG1lbWJlciBvZiB0
eXBlICdhbnknLgogCi0gICAgICAgICAgICBteSAkdHlwZSA9ICRtZW1iZXItPnR5cGU7CisgICAg
ICAgICAgICAgICAgbXkgJHR5cGUgPSAkbWVtYmVyLT50eXBlOwogCi0gICAgICAgICAgICAjIDUu
MS4gTGV0IGtleSBiZSB0aGUgaWRlbnRpZmllciBvZiBtZW1iZXIuCi0gICAgICAgICAgICBteSAk
a2V5ID0gJG1lbWJlci0+bmFtZTsKKyAgICAgICAgICAgICAgICAjIDUuMS4gTGV0IGtleSBiZSB0
aGUgaWRlbnRpZmllciBvZiBtZW1iZXIuCisgICAgICAgICAgICAgICAgbXkgJGtleSA9ICRtZW1i
ZXItPm5hbWU7CiAKLSAgICAgICAgICAgICMgNS4yLiBMZXQgdmFsdWUgYmUgYW4gRUNNQVNjcmlw
dCB2YWx1ZSwgZGVwZW5kaW5nIG9uIFR5cGUoVik6Ci0gICAgICAgICAgICAkcmVzdWx0IC49ICIg
ICAgSlNWYWx1ZSAke2tleX1WYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQo
KSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwi
JHtrZXl9XCIpKTtcbiI7CisgICAgICAgICAgICAgICAgIyA1LjIuIExldCB2YWx1ZSBiZSBhbiBF
Q01BU2NyaXB0IHZhbHVlLCBkZXBlbmRpbmcgb24gVHlwZShWKToKKyAgICAgICAgICAgICAgICAk
cmVzdWx0IC49ICIgICAgSlNWYWx1ZSAke2tleX1WYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8g
anNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsIFwiJHtrZXl9XCIpKTtcbiI7CiAKLSAgICAgICAgICAgIG15ICRuYXRpdmVUeXBl
ID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGludGVyZmFjZSwgJG1lbWJlcik7Ci0gICAg
ICAgICAgICBpZiAoJG1lbWJlci0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCAkbWVtYmVyLT5kZWZh
dWx0KSB7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIENvbnZlcnRlcjwkbmF0aXZl
VHlwZT46Ok9wdGlvbmFsVmFsdWUgJGtleTtcbiI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAkbmF0aXZlVHlwZSAka2V5O1xuIjsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVG
cm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRtZW1iZXIpOworICAgICAgICAgICAgICAgIGlmICgk
bWVtYmVyLT5pc09wdGlvbmFsICYmICFkZWZpbmVkICRtZW1iZXItPmRlZmF1bHQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIENvbnZlcnRlcjwkbmF0aXZlVHlwZT46Ok9w
dGlvbmFsVmFsdWUgJGtleTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICRuYXRpdmVUeXBlICRrZXk7XG4iOworICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgIyA1LjMuIElmIHZhbHVlIGlzIG5vdCB1bmRlZmlu
ZWQsIHRoZW46Ci0gICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKCEke2tleX1WYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7XG4iOwotICAgICAgICAgICAgIyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3
aWxsIHdhbnQgdGhpcyB0byBzaGFyZSBhIGxvdCBtb3JlIGNvZGUgd2l0aCBKU1ZhbHVlVG9OYXRp
dmUuCi0gICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUp
KSB7Ci0gICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHt0eXBlfS5oIik7Ci0g
ICAgICAgICAgICAgICAgZGllICJEaWN0aW9uYXJ5IG1lbWJlcnMgb2Ygbm9uLW51bGxhYmxlIHdy
YXBwZXIgdHlwZXMgbXVzdCBiZSBtYXJrZWQgYXMgcmVxdWlyZWQiIGlmICEkbWVtYmVyLT5pc051
bGxhYmxlICYmICRtZW1iZXItPmlzT3B0aW9uYWw7Ci0gICAgICAgICAgICAgICAgbXkgJG51bGxh
YmxlUGFyYW1ldGVyID0gJG1lbWJlci0+aXNOdWxsYWJsZSA/ICJJc051bGxhYmxlOjpZZXMiIDog
IklzTnVsbGFibGU6Ok5vIjsKLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgICRr
ZXkgPSBjb252ZXJ0V3JhcHBlclR5cGU8JHR5cGUsIEpTJHt0eXBlfT4oc3RhdGUsICR7a2V5fVZh
bHVlLCAkbnVsbGFibGVQYXJhbWV0ZXIpO1xuIjsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7Ci0gICAgICAg
ICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICAka2V5ID0gY29udmVydERpY3Rpb25hcnk8JHtu
YXRpdmVUeXBlfT4oc3RhdGUsICR7a2V5fVZhbHVlKTtcbiI7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG15ICRjb252ZXJzaW9uUnVsZVdpdGhMZWFkaW5nQ29tbWEgPSBH
ZW5lcmF0ZUNvbnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21tYSgkaW50ZXJmYWNlLCAkbWVtYmVy
KTsKLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgICRrZXkgPSBjb252ZXJ0PCR7
bmF0aXZlVHlwZX0+KHN0YXRlLCAke2tleX1WYWx1ZSR7Y29udmVyc2lvblJ1bGVXaXRoTGVhZGlu
Z0NvbW1hfSk7XG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpO1xuIjsKLSAgICAg
ICAgICAgICMgVmFsdWUgaXMgdW5kZWZpbmVkLgotICAgICAgICAgICAgIyA1LjQuIE90aGVyd2lz
ZSwgaWYgdmFsdWUgaXMgdW5kZWZpbmVkIGJ1dCB0aGUgZGljdGlvbmFyeSBtZW1iZXIgaGFzIGEg
ZGVmYXVsdCB2YWx1ZSwgdGhlbjoKLSAgICAgICAgICAgIGlmICgkbWVtYmVyLT5pc09wdGlvbmFs
ICYmIGRlZmluZWQgJG1lbWJlci0+ZGVmYXVsdCkgewotICAgICAgICAgICAgICAgICRyZXN1bHQg
Lj0gIiAgICB9IGVsc2VcbiI7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICAk
a2V5ID0gIiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2UsICRtZW1iZXIpIC4gIjtc
biI7Ci0gICAgICAgICAgICB9IGVsc2lmICghJG1lbWJlci0+aXNPcHRpb25hbCkgewotICAgICAg
ICAgICAgICAgICMgNS41LiBPdGhlcndpc2UsIGlmIHZhbHVlIGlzIHVuZGVmaW5lZCBhbmQgdGhl
IGRpY3Rpb25hcnkgbWVtYmVyIGlzIGEgcmVxdWlyZWQgZGljdGlvbmFyeSBtZW1iZXIsIHRoZW4g
dGhyb3cgYSBUeXBlRXJyb3IuCi0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH0gZWxz
ZSB7XG4iOwotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAi
ICAgICAgICByZXR1cm4gTnVsbG9wdDtcbiI7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAi
ICAgIH1cbiI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRyZXN1bHQg
Lj0gIiAgICB9XG4iOworICAgICAgICAgICAgICAgICMgNS4zLiBJZiB2YWx1ZSBpcyBub3QgdW5k
ZWZpbmVkLCB0aGVuOgorICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAoISR7a2V5
fVZhbHVlLmlzVW5kZWZpbmVkKCkpIHtcbiI7CisgICAgICAgICAgICAgICAgIyBGSVhNRTogRXZl
bnR1YWxseSB3ZSB3aWxsIHdhbnQgdGhpcyB0byBzaGFyZSBhIGxvdCBtb3JlIGNvZGUgd2l0aCBK
U1ZhbHVlVG9OYXRpdmUuCisgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dy
YXBwZXJUeXBlKCR0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlMke3R5cGV9LmgiKTsKKyAgICAgICAgICAgICAgICAgICAgZGllICJEaWN0aW9uYXJ5IG1l
bWJlcnMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgbXVzdCBiZSBtYXJrZWQgYXMgcmVx
dWlyZWQiIGlmICEkbWVtYmVyLT5pc051bGxhYmxlICYmICRtZW1iZXItPmlzT3B0aW9uYWw7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRudWxsYWJsZVBhcmFtZXRlciA9ICRtZW1iZXItPmlzTnVs
bGFibGUgPyAiSXNOdWxsYWJsZTo6WWVzIiA6ICJJc051bGxhYmxlOjpObyI7CisgICAgICAgICAg
ICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgJGtleSA9IGNvbnZlcnRXcmFwcGVyVHlwZTwk
dHlwZSwgSlMke3R5cGV9PihzdGF0ZSwgJHtrZXl9VmFsdWUsICRudWxsYWJsZVBhcmFtZXRlcik7
XG4iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25h
cnlUeXBlKCR0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdl
dE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkcmVz
dWx0IC49ICIgICAgICAgICRrZXkgPSBjb252ZXJ0RGljdGlvbmFyeTwke25hdGl2ZVR5cGV9Pihz
dGF0ZSwgJHtrZXl9VmFsdWUpO1xuIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBteSAkY29udmVyc2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hID0gR2VuZXJh
dGVDb252ZXJzaW9uUnVsZVdpdGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcik7Cisg
ICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgJGtleSA9IGNvbnZlcnQ8JHtu
YXRpdmVUeXBlfT4oc3RhdGUsICR7a2V5fVZhbHVlJHtjb252ZXJzaW9uUnVsZVdpdGhMZWFkaW5n
Q29tbWF9KTtcbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICRyZXN1bHQg
Lj0gIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTtcbiI7
CisgICAgICAgICAgICAgICAgIyBWYWx1ZSBpcyB1bmRlZmluZWQuCisgICAgICAgICAgICAgICAg
IyA1LjQuIE90aGVyd2lzZSwgaWYgdmFsdWUgaXMgdW5kZWZpbmVkIGJ1dCB0aGUgZGljdGlvbmFy
eSBtZW1iZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgdGhlbjoKKyAgICAgICAgICAgICAgICBpZiAo
JG1lbWJlci0+aXNPcHRpb25hbCAmJiBkZWZpbmVkICRtZW1iZXItPmRlZmF1bHQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH0gZWxzZVxuIjsKKyAgICAgICAgICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICAka2V5ID0gIiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVl
KCRpbnRlcmZhY2UsICRtZW1iZXIpIC4gIjtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAo
ISRtZW1iZXItPmlzT3B0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgIyA1LjUuIE90aGVy
d2lzZSwgaWYgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCB0aGUgZGljdGlvbmFyeSBtZW1iZXIgaXMg
YSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KKyAg
ICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH0gZWxzZSB7XG4iOworICAgICAgICAg
ICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJl
dHVybiBOdWxsb3B0O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH1c
biI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIH1cbiI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAg
ICB9CiAKLSAgICAgICAgIyA2LiBSZXR1cm4gZGljdC4KLSAgICAgICAgbXkgJGFyZ3VtZW50cyA9
ICIiOwotICAgICAgICBteSAkY29tbWEgPSAiIjsKLSAgICAgICAgZm9yZWFjaCBteSAkbWVtYmVy
IChAeyRkaWN0aW9uYXJ5LT5tZW1iZXJzfSkgewotICAgICAgICAgICAgbXkgJHZhbHVlOwotICAg
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRtZW1iZXItPnR5cGUp
ICYmICEkbWVtYmVyLT5pc051bGxhYmxlKSB7Ci0gICAgICAgICAgICAgICAgJHZhbHVlID0gIioi
IC4gJG1lbWJlci0+bmFtZTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c0RpY3Rpb25hcnlUeXBlKCRtZW1iZXItPnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgJHZhbHVl
ID0gJG1lbWJlci0+bmFtZSAuICIudmFsdWUoKSI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCIgLiAkbWVtYmVyLT5uYW1lIC4gIikiOwor
ICAgICAgICAgICAgIyA2LiBSZXR1cm4gZGljdC4KKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1l
bWJlciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30pIHsKKyAgICAgICAgICAgICAgICBteSAkdmFs
dWU7CisgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRt
ZW1iZXItPnR5cGUpICYmICEkbWVtYmVyLT5pc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAg
ICAgICR2YWx1ZSA9ICIqIiAuICRtZW1iZXItPm5hbWU7CisgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJG1lbWJlci0+dHlwZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJG1lbWJlci0+bmFtZSAuICIudmFsdWUoKSI7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldU
Rk1vdmUoIiAuICRtZW1iZXItPm5hbWUgLiAiKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICRhcmd1bWVudHMgLj0gJGNvbW1hIC4gJHZhbHVlOworICAgICAgICAgICAgICAg
ICRjb21tYSA9ICIsICI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkYXJndW1lbnRzIC49
ICRjb21tYSAuICR2YWx1ZTsKLSAgICAgICAgICAgICRjb21tYSA9ICIsICI7CiAgICAgICAgIH0K
IAogICAgICAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGFyZ3Vt
ZW50cyAuICIgfTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIn1cblxuIjsKLQogICAgICAgICAk
cmVzdWx0IC49ICIjZW5kaWZcblxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQogICAg
IHJldHVybiAkcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbQppbmRleCA2ZjIzOTlhY2FmOWUxZmNkZmIxNzI5MjI4NmY4NjhjMzFkZjE4MWM0Li43
OGQ1M2Y3ZGRlNzM5NDcyMGI2Yjg4NWRjNzMzNDY0M2FmNzU0ZTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTMwLDYgKzEzMCw3IEBAIHN0
cnVjdCggZG9tRW51bSA9PiB7CiB9KTsKIAogc3RydWN0KCBkb21EaWN0aW9uYXJ5ID0+IHsKKyAg
ICBwYXJlbnQgPT4gJyQnLCAgIyBQYXJlbnQgY2xhc3MgaWRlbnRpZmllcgogICAgIG5hbWUgPT4g
JyQnLAogICAgIG1lbWJlcnMgPT4gJ0AnLCAjIExpc3Qgb2YgJ2RvbVNpZ25hdHVyZScKICAgICBl
eHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLApAQCAtNjU5LDcgKzY2MCw4IEBAIHN1YiBwYXJzZURp
Y3Rpb25hcnkKICAgICAgICAgbXkgJG5hbWVUb2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRuYW1lVG9rZW4sIElkZW50aWZpZXJUb2tlbik7
CiAgICAgICAgICRkaWN0aW9uYXJ5LT5uYW1lKCRuYW1lVG9rZW4tPnZhbHVlKCkpOwotICAgICAg
ICAkc2VsZi0+cGFyc2VJbmhlcml0YW5jZSgpOworICAgICAgICBteSAkcGFyZW50cyA9ICRzZWxm
LT5wYXJzZUluaGVyaXRhbmNlKCk7CisgICAgICAgICRkaWN0aW9uYXJ5LT5wYXJlbnQoJHBhcmVu
dHMtPlswXSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAieyIsIF9fTElORV9fKTsKICAgICAgICAgJGRpY3Rpb25hcnktPm1lbWJlcnMoJHNlbGYt
PnBhcnNlRGljdGlvbmFyeU1lbWJlcnMoKSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZh
bHVlKCRzZWxmLT5nZXRUb2tlbigpLCAifSIsIF9fTElORV9fKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYTEx
YzY5NWJhNDZhMmIzY2NiZjIyY2VhMWJiNDI2ZGY0Y2E0YmU2Ni4uNDg2ZmU1MjA5MzdjMmUwNDEz
OGZmMTVlMWFlZmU5Y2E1ZTRkNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTUzMCwxMCArNTMwLDM3IEBA
IHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4oCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KLSAgICBKU1ZhbHVl
IGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKTsKLSAgICBDb252
ZXJ0ZXI8VGVzdE9iajo6RW51bVR5cGU+OjpPcHRpb25hbFZhbHVlIGVudW1lcmF0aW9uVmFsdWVX
aXRob3V0RGVmYXVsdDsKLSAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZh
dWx0ID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIGVudW1lcmF0aW9uVmFsdWVX
aXRob3V0RGVmYXVsdFZhbHVlKTsKKyAgICBKU1ZhbHVlIGFueVR5cGVkZWZWYWx1ZVZhbHVlID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImFueVR5cGVkZWZWYWx1ZSIpKTsKKyAgICBK
U0M6OkpTVmFsdWUgYW55VHlwZWRlZlZhbHVlOworICAgIGlmICghYW55VHlwZWRlZlZhbHVlVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBhbnlUeXBlZGVmVmFsdWUgPSBjb252ZXJ0PEpT
Qzo6SlNWYWx1ZT4oc3RhdGUsIGFueVR5cGVkZWZWYWx1ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YW55VHlwZWRlZlZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIGFueVZhbHVlVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYW55VmFsdWUiKSk7CisgICAgSlND
OjpKU1ZhbHVlIGFueVZhbHVlOworICAgIGlmICghYW55VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIGFueVZhbHVlID0gY29udmVydDxKU0M6OkpTVmFsdWU+KHN0YXRlLCBhbnlW
YWx1ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYW55VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAg
IEpTVmFsdWUgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpz
VW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAiYm9vbGVhbldpdGhEZWZhdWx0IikpOworICAgIGJvb2wgYm9vbGVhbldpdGhEZWZh
dWx0OworICAgIGlmICghYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBib29sZWFuV2l0aERlZmF1bHQgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBib29sZWFu
V2l0aERlZmF1bHRWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgTnVsbG9wdCk7CisgICAgfSBlbHNlCisgICAgICAgIGJvb2xlYW5XaXRoRGVmYXVsdCA9IGZh
bHNlOworICAgIEpTVmFsdWUgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0IikpOworICAgIENvbnZl
cnRlcjxib29sPjo6T3B0aW9uYWxWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHQ7CisgICAgaWYg
KCFib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGJv
b2xlYW5XaXRob3V0RGVmYXVsdCA9IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIGJvb2xlYW5XaXRob3V0
RGVmYXVsdFZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKKyAgICB9CisgICAgSlNWYWx1ZSBkaWN0aW9uYXJ5TWVtYmVyVmFsdWUgPSBpc051
bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZGljdGlvbmFyeU1lbWJlciIpKTsKKyAgICBDb252
ZXJ0ZXI8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+OjpPcHRpb25h
bFZhbHVlIGRpY3Rpb25hcnlNZW1iZXI7CisgICAgaWYgKCFkaWN0aW9uYXJ5TWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICBkaWN0aW9uYXJ5TWVtYmVyID0gY29udmVydERpY3Rp
b25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KHN0YXRlLCBk
aWN0aW9uYXJ5TWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIE51bGxvcHQpOwogICAgIH0KICAgICBKU1ZhbHVlIGVudW1lcmF0aW9uVmFsdWVXaXRo
RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9u
VmFsdWVXaXRoRGVmYXVsdCIpKTsKQEAgLTU1MCw1MCArNTc3LDUxIEBAIHRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9w
dCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdE
ZWZhdWx0ID0gVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nOwotICAgIEpTVmFsdWUgc3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzdHJp
bmdXaXRoRGVmYXVsdCIpKTsKLSAgICBTdHJpbmcgc3RyaW5nV2l0aERlZmF1bHQ7Ci0gICAgaWYg
KCFzdHJpbmdXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc3RyaW5n
V2l0aERlZmF1bHQgPSBjb252ZXJ0PFN0cmluZz4oc3RhdGUsIHN0cmluZ1dpdGhEZWZhdWx0VmFs
dWUpOworICAgIEpTVmFsdWUgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUgPSBp
c051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZh
dWx0IikpOworICAgIENvbnZlcnRlcjxUZXN0T2JqOjpFbnVtVHlwZT46Ok9wdGlvbmFsVmFsdWUg
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0OworICAgIGlmICghZW51bWVyYXRpb25WYWx1
ZVdpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBlbnVtZXJhdGlv
blZhbHVlV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwg
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwotICAgIH0gZWxzZQotICAgICAgICBzdHJp
bmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5nIjsKLSAgICBKU1ZhbHVlIHN0cmluZ1dpdGhv
dXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic3RyaW5nV2l0
aG91dERlZmF1bHQiKSk7Ci0gICAgQ29udmVydGVyPFN0cmluZz46Ok9wdGlvbmFsVmFsdWUgc3Ry
aW5nV2l0aG91dERlZmF1bHQ7Ci0gICAgaWYgKCFzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PFN0
cmluZz4oc3RhdGUsIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUpOworICAgIH0KKyAgICBKU1Zh
bHVlIGludGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9i
amVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJpbnRlZ2Vy
IikpOworICAgIENvbnZlcnRlcjxpbnQzMl90Pjo6T3B0aW9uYWxWYWx1ZSBpbnRlZ2VyOworICAg
IGlmICghaW50ZWdlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50ZWdlciA9IGNv
bnZlcnQ8aW50MzJfdD4oc3RhdGUsIGludGVnZXJWYWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfQot
ICAgIEpTVmFsdWUgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/
IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnN0YXRlLCAiYm9vbGVhbldpdGhEZWZhdWx0IikpOwotICAgIGJvb2wgYm9vbGVhbldpdGhE
ZWZhdWx0OwotICAgIGlmICghYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkg
ewotICAgICAgICBib29sZWFuV2l0aERlZmF1bHQgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBib29s
ZWFuV2l0aERlZmF1bHRWYWx1ZSk7CisgICAgSlNWYWx1ZSBpbnRlZ2VyV2l0aERlZmF1bHRWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJpbnRlZ2VyV2l0aERlZmF1bHQiKSk7
CisgICAgaW50MzJfdCBpbnRlZ2VyV2l0aERlZmF1bHQ7CisgICAgaWYgKCFpbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGVnZXJXaXRoRGVmYXVsdCA9
IGNvbnZlcnQ8aW50MzJfdD4oc3RhdGUsIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKICAgICB9IGVsc2UKLSAgICAgICAgYm9vbGVhbldpdGhEZWZhdWx0ID0gZmFsc2U7Ci0g
ICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVk
ID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7Ci0gICAgQ29udmVydGVyPGJv
b2w+OjpPcHRpb25hbFZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKLSAgICBpZiAoIWJvb2xl
YW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgYm9vbGVhbldp
dGhvdXREZWZhdWx0ID0gY29udmVydDxib29sPihzdGF0ZSwgYm9vbGVhbldpdGhvdXREZWZhdWx0
VmFsdWUpOworICAgICAgICBpbnRlZ2VyV2l0aERlZmF1bHQgPSAwOworICAgIEpTVmFsdWUgbGFy
Z2VJbnRlZ2VyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibGFyZ2VJbnRl
Z2VyIikpOworICAgIENvbnZlcnRlcjxpbnQ2NF90Pjo6T3B0aW9uYWxWYWx1ZSBsYXJnZUludGVn
ZXI7CisgICAgaWYgKCFsYXJnZUludGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IGxhcmdlSW50ZWdlciA9IGNvbnZlcnQ8aW50NjRfdD4oc3RhdGUsIGxhcmdlSW50ZWdlclZhbHVl
LCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBOdWxsb3B0KTsKICAgICB9Ci0gICAgSlNWYWx1ZSBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVl
ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNlcXVlbmNlT2ZTdHJpbmdzIikpOwot
ICAgIENvbnZlcnRlcjxWZWN0b3I8U3RyaW5nPj46Ok9wdGlvbmFsVmFsdWUgc2VxdWVuY2VPZlN0
cmluZ3M7Ci0gICAgaWYgKCFzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgc2VxdWVuY2VPZlN0cmluZ3MgPSBjb252ZXJ0PFZlY3RvcjxTdHJpbmc+PihzdGF0
ZSwgc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZSk7CisgICAgSlNWYWx1ZSBsYXJnZUludGVnZXJXaXRo
RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdl
cldpdGhEZWZhdWx0IikpOworICAgIGludDY0X3QgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQ7Cisg
ICAgaWYgKCFsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0PGludDY0X3Q+KHN0YXRlLCBs
YXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9CisgICAgfSBl
bHNlCisgICAgICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICBKU1ZhbHVlIG51
bGxhYmxlTm9kZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm51bGxhYmxl
Tm9kZSIpKTsKKyAgICBOb2RlKiBudWxsYWJsZU5vZGU7CisgICAgaWYgKCFudWxsYWJsZU5vZGVW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG51bGxhYmxlTm9kZSA9IGNvbnZlcnRXcmFw
cGVyVHlwZTxOb2RlLCBKU05vZGU+KHN0YXRlLCBudWxsYWJsZU5vZGVWYWx1ZSwgSXNOdWxsYWJs
ZTo6WWVzKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbnVsbGFibGVOb2RlID0gbnVsbHB0cjsKICAgICBKU1Zh
bHVlIHJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmlu
ZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJyZXN0cmljdGVkRG91YmxlIikpOwogICAgIENvbnZlcnRlcjxkb3VibGU+OjpPcHRpb25hbFZh
bHVlIHJlc3RyaWN0ZWREb3VibGU7CiAgICAgaWYgKCFyZXN0cmljdGVkRG91YmxlVmFsdWUuaXNV
bmRlZmluZWQoKSkgewogICAgICAgICByZXN0cmljdGVkRG91YmxlID0gY29udmVydDxkb3VibGU+
KHN0YXRlLCByZXN0cmljdGVkRG91YmxlVmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObyk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAg
fQotICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUgPSBpc051bGxPclVuZGVmaW5l
ZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRG91YmxlIikpOwotICAgIENvbnZlcnRlcjxkb3Vi
bGU+OjpPcHRpb25hbFZhbHVlIHVucmVzdHJpY3RlZERvdWJsZTsKLSAgICBpZiAoIXVucmVzdHJp
Y3RlZERvdWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5yZXN0cmljdGVkRG91
YmxlID0gY29udmVydDxkb3VibGU+KHN0YXRlLCB1bnJlc3RyaWN0ZWREb3VibGVWYWx1ZSwgU2hv
dWxkQWxsb3dOb25GaW5pdGU6Olllcyk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgTnVsbG9wdCk7Ci0gICAgfQogICAgIEpTVmFsdWUgcmVzdHJpY3RlZERvdWJsZVdp
dGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3Rl
ZERvdWJsZVdpdGhEZWZhdWx0IikpOwogICAgIGRvdWJsZSByZXN0cmljdGVkRG91YmxlV2l0aERl
ZmF1bHQ7CiAgICAgaWYgKCFyZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CkBAIC02MDEsMjUgKzYyOSwxMiBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RP
Ymo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KAog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0g
ZWxzZQogICAgICAgICByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQgPSAwOwotICAgIEpTVmFs
dWUgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVk
ID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJ1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKLSAgICBkb3Vi
bGUgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQ7Ci0gICAgaWYgKCF1bnJlc3RyaWN0ZWRE
b3VibGVXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5yZXN0cmlj
dGVkRG91YmxlV2l0aERlZmF1bHQgPSBjb252ZXJ0PGRvdWJsZT4oc3RhdGUsIHVucmVzdHJpY3Rl
ZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwotICAgIH0gZWxz
ZQotICAgICAgICB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IDA7CiAgICAgSlNWYWx1
ZSByZXN0cmljdGVkRmxvYXRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQo
KSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJy
ZXN0cmljdGVkRmxvYXQiKSk7CiAgICAgQ29udmVydGVyPGZsb2F0Pjo6T3B0aW9uYWxWYWx1ZSBy
ZXN0cmljdGVkRmxvYXQ7CiAgICAgaWYgKCFyZXN0cmljdGVkRmxvYXRWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgIHJlc3RyaWN0ZWRGbG9hdCA9IGNvbnZlcnQ8ZmxvYXQ+KHN0YXRlLCBy
ZXN0cmljdGVkRmxvYXRWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKICAgICB9Ci0gICAgSlNW
YWx1ZSB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVm
aW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgInVucmVzdHJpY3RlZEZsb2F0IikpOwotICAgIENvbnZlcnRlcjxmbG9hdD46Ok9wdGlvbmFs
VmFsdWUgdW5yZXN0cmljdGVkRmxvYXQ7Ci0gICAgaWYgKCF1bnJlc3RyaWN0ZWRGbG9hdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5yZXN0cmljdGVkRmxvYXQgPSBjb252ZXJ0PGZs
b2F0PihzdGF0ZSwgdW5yZXN0cmljdGVkRmxvYXRWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6
Olllcyk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7
Ci0gICAgfQogICAgIEpTVmFsdWUgcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IGlz
TnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIp
KTsKICAgICBmbG9hdCByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdDsKICAgICBpZiAoIXJlc3Ry
aWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNjI3LDEzICs2
NDIsMTIgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5PiBjb252ZXJ0
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PigKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdHJpY3Rl
ZEZsb2F0V2l0aERlZmF1bHQgPSAwOwotICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRmxvYXRXaXRo
RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVzdHJpY3Rl
ZEZsb2F0V2l0aERlZmF1bHQiKSk7Ci0gICAgZmxvYXQgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVm
YXVsdDsKLSAgICBpZiAoIXVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0
PGZsb2F0PihzdGF0ZSwgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlLCBTaG91bGRB
bGxvd05vbkZpbml0ZTo6WWVzKTsKKyAgICBKU1ZhbHVlIHNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic2VxdWVuY2VPZlN0cmluZ3MiKSk7Cisg
ICAgQ29udmVydGVyPFZlY3RvcjxTdHJpbmc+Pjo6T3B0aW9uYWxWYWx1ZSBzZXF1ZW5jZU9mU3Ry
aW5nczsKKyAgICBpZiAoIXNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBzZXF1ZW5jZU9mU3RyaW5ncyA9IGNvbnZlcnQ8VmVjdG9yPFN0cmluZz4+KHN0YXRl
LCBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5yZXN0cmljdGVkRmxv
YXRXaXRoRGVmYXVsdCA9IDA7CisgICAgfQogICAgIEpTVmFsdWUgc21hbGxJbnRlZ2VyQ2xhbXBl
ZFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNtYWxsSW50ZWdlckNsYW1w
ZWQiKSk7CiAgICAgQ29udmVydGVyPGludDhfdD46Ok9wdGlvbmFsVmFsdWUgc21hbGxJbnRlZ2Vy
Q2xhbXBlZDsKICAgICBpZiAoIXNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CkBAIC02NTksMTkgKzY3Myw0NSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRp
Y3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KAogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0gZWxzZQog
ICAgICAgICBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKLSAgICBKU1ZhbHVl
IGludGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVj
dC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJpbnRlZ2VyIikp
OwotICAgIENvbnZlcnRlcjxpbnQzMl90Pjo6T3B0aW9uYWxWYWx1ZSBpbnRlZ2VyOwotICAgIGlm
ICghaW50ZWdlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50ZWdlciA9IGNvbnZl
cnQ8aW50MzJfdD4oc3RhdGUsIGludGVnZXJWYWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAg
SlNWYWx1ZSBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInN0cmluZ1dpdGhEZWZhdWx0IikpOworICAgIFN0cmluZyBzdHJpbmdXaXRoRGVmYXVs
dDsKKyAgICBpZiAoIXN0cmluZ1dpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBzdHJpbmdXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8U3RyaW5nPihzdGF0ZSwgc3RyaW5nV2l0
aERlZmF1bHRWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7CisgICAgfSBlbHNlCisgICAgICAgIHN0cmluZ1dpdGhEZWZhdWx0ID0gImRlZmF1
bHRTdHJpbmciOworICAgIEpTVmFsdWUgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVs
bE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzdHJpbmdXaXRob3V0RGVmYXVsdCIpKTsKKyAgICBD
b252ZXJ0ZXI8U3RyaW5nPjo6T3B0aW9uYWxWYWx1ZSBzdHJpbmdXaXRob3V0RGVmYXVsdDsKKyAg
ICBpZiAoIXN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICBzdHJpbmdXaXRob3V0RGVmYXVsdCA9IGNvbnZlcnQ8U3RyaW5nPihzdGF0ZSwgc3RyaW5nV2l0
aG91dERlZmF1bHRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgTnVsbG9wdCk7CiAgICAgfQotICAgIEpTVmFsdWUgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlcldpdGhEZWZhdWx0IikpOwot
ICAgIGludDMyX3QgaW50ZWdlcldpdGhEZWZhdWx0OwotICAgIGlmICghaW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRlZ2VyV2l0aERlZmF1bHQgPSBj
b252ZXJ0PGludDMyX3Q+KHN0YXRlLCBpbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CisgICAgSlNWYWx1ZSB1bnJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IGlzTnVsbE9y
VW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJlc3RyaWN0ZWREb3VibGUiKSk7CisgICAgQ29udmVy
dGVyPGRvdWJsZT46Ok9wdGlvbmFsVmFsdWUgdW5yZXN0cmljdGVkRG91YmxlOworICAgIGlmICgh
dW5yZXN0cmljdGVkRG91YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB1bnJlc3Ry
aWN0ZWREb3VibGUgPSBjb252ZXJ0PGRvdWJsZT4oc3RhdGUsIHVucmVzdHJpY3RlZERvdWJsZVZh
bHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9CisgICAgSlNWYWx1ZSB1bnJlc3RyaWN0
ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
InVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0IikpOworICAgIGRvdWJsZSB1bnJlc3RyaWN0
ZWREb3VibGVXaXRoRGVmYXVsdDsKKyAgICBpZiAoIXVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZh
dWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB1bnJlc3RyaWN0ZWREb3VibGVXaXRo
RGVmYXVsdCA9IGNvbnZlcnQ8ZG91YmxlPihzdGF0ZSwgdW5yZXN0cmljdGVkRG91YmxlV2l0aERl
ZmF1bHRWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGlu
dGVnZXJXaXRoRGVmYXVsdCA9IDA7CisgICAgICAgIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZh
dWx0ID0gMDsKKyAgICBKU1ZhbHVlIHVucmVzdHJpY3RlZEZsb2F0VmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRmxvYXQiKSk7CisgICAgQ29udmVydGVy
PGZsb2F0Pjo6T3B0aW9uYWxWYWx1ZSB1bnJlc3RyaWN0ZWRGbG9hdDsKKyAgICBpZiAoIXVucmVz
dHJpY3RlZEZsb2F0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB1bnJlc3RyaWN0ZWRG
bG9hdCA9IGNvbnZlcnQ8ZmxvYXQ+KHN0YXRlLCB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlLCBTaG91
bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9CisgICAgSlNWYWx1ZSB1bnJlc3RyaWN0ZWRGbG9hdFdp
dGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmlj
dGVkRmxvYXRXaXRoRGVmYXVsdCIpKTsKKyAgICBmbG9hdCB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhE
ZWZhdWx0OworICAgIGlmICghdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IGNvbnZl
cnQ8ZmxvYXQ+KHN0YXRlLCB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUsIFNob3Vs
ZEFsbG93Tm9uRmluaXRlOjpZZXMpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIE51bGxvcHQpOworICAgIH0gZWxzZQorICAgICAgICB1bnJlc3RyaWN0ZWRGbG9hdFdp
dGhEZWZhdWx0ID0gMDsKICAgICBKU1ZhbHVlIHVuc2lnbmVkSW50ZWdlclZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkSW50ZWdlciIpKTsKICAgICBDb252ZXJ0
ZXI8dWludDMyX3Q+OjpPcHRpb25hbFZhbHVlIHVuc2lnbmVkSW50ZWdlcjsKICAgICBpZiAoIXVu
c2lnbmVkSW50ZWdlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTY4NSwxOSArNzI1LDYgQEAg
dGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2JqOjpEaWN0aW9uYXJ5PigKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBOdWxsb3B0KTsKICAgICB9IGVsc2UKICAgICAgICAgdW5zaWduZWRJbnRlZ2VyV2l0
aERlZmF1bHQgPSAwOwotICAgIEpTVmFsdWUgbGFyZ2VJbnRlZ2VyVmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAibGFyZ2VJbnRlZ2VyIikpOwotICAgIENvbnZlcnRlcjxpbnQ2
NF90Pjo6T3B0aW9uYWxWYWx1ZSBsYXJnZUludGVnZXI7Ci0gICAgaWYgKCFsYXJnZUludGVnZXJW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGxhcmdlSW50ZWdlciA9IGNvbnZlcnQ8aW50
NjRfdD4oc3RhdGUsIGxhcmdlSW50ZWdlclZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9Ci0gICAg
SlNWYWx1ZSBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlcldpdGhEZWZhdWx0IikpOwotICAgIGludDY0X3QgbGFy
Z2VJbnRlZ2VyV2l0aERlZmF1bHQ7Ci0gICAgaWYgKCFsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSBj
b252ZXJ0PGludDY0X3Q+KHN0YXRlLCBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSAw
OwogICAgIEpTVmFsdWUgdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZExhcmdlSW50ZWdlciIpKTsKICAgICBDb252ZXJ0ZXI8
dWludDY0X3Q+OjpPcHRpb25hbFZhbHVlIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyOwogICAgIGlmICgh
dW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03MTEsMzMgKzcz
OCw2IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHVuc2lnbmVkTGFy
Z2VJbnRlZ2VyV2l0aERlZmF1bHQgPSAwOwotICAgIEpTVmFsdWUgbnVsbGFibGVOb2RlVmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibnVsbGFibGVOb2RlIikpOwotICAgIE5v
ZGUqIG51bGxhYmxlTm9kZTsKLSAgICBpZiAoIW51bGxhYmxlTm9kZVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgbnVsbGFibGVOb2RlID0gY29udmVydFdyYXBwZXJUeXBlPE5vZGUsIEpT
Tm9kZT4oc3RhdGUsIG51bGxhYmxlTm9kZVZhbHVlLCBJc051bGxhYmxlOjpZZXMpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwotICAgIH0gZWxzZQot
ICAgICAgICBudWxsYWJsZU5vZGUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgYW55VmFsdWVWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJhbnlWYWx1ZSIpKTsKLSAgICBKU0M6
OkpTVmFsdWUgYW55VmFsdWU7Ci0gICAgaWYgKCFhbnlWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgYW55VmFsdWUgPSBjb252ZXJ0PEpTQzo6SlNWYWx1ZT4oc3RhdGUsIGFueVZh
bHVlVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxv
cHQpOwotICAgIH0gZWxzZQotICAgICAgICBhbnlWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAg
SlNWYWx1ZSBhbnlUeXBlZGVmVmFsdWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRl
ZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJhbnlUeXBlZGVmVmFsdWUiKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGFueVR5cGVkZWZWYWx1
ZTsKLSAgICBpZiAoIWFueVR5cGVkZWZWYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgYW55VHlwZWRlZlZhbHVlID0gY29udmVydDxKU0M6OkpTVmFsdWU+KHN0YXRlLCBhbnlUeXBl
ZGVmVmFsdWVWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFueVR5cGVkZWZWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7Ci0gICAgSlNWYWx1ZSBkaWN0aW9uYXJ5TWVtYmVyVmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAiZGljdGlvbmFyeU1lbWJlciIpKTsKLSAgICBDb252ZXJ0ZXI8VGVz
dE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+OjpPcHRpb25hbFZhbHVlIGRp
Y3Rpb25hcnlNZW1iZXI7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5TWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICBkaWN0aW9uYXJ5TWVtYmVyID0gY29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KHN0YXRlLCBkaWN0aW9uYXJ5
TWVtYmVyVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51
bGxvcHQpOwotICAgIH0KICAgICByZXR1cm4gVGVzdE9iajo6RGljdGlvbmFyeSB7IFdURk1vdmUo
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVl
V2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZh
dWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aG91dERl
ZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCksIFdURk1vdmUoYm9vbGVhbldpdGhv
dXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5ncyksIFdURk1vdmUocmVzdHJpY3Rl
ZERvdWJsZSksIFdURk1vdmUodW5yZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZShyZXN0cmljdGVk
RG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0
KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0KSwg
V1RGTW92ZShyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUodW5yZXN0cmljdGVk
RmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUoc21hbGxJbnRlZ2VyQ2xhbXBlZCksIFdURk1vdmUo
c21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5m
b3JjZWRSYW5nZSksIFdURk1vdmUoc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdU
Rk1vdmUoaW50ZWdlciksIFdURk1vdmUoaW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnNp
Z25lZEludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZShsYXJnZUludGVnZXIpLCBXVEZNb3ZlKGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZSh1bnNpZ25lZExhcmdlSW50ZWdlciksIFdURk1vdmUodW5zaWduZWRMYXJnZUludGVnZXJXaXRo
RGVmYXVsdCksIFdURk1vdmUobnVsbGFibGVOb2RlKSwgV1RGTW92ZShhbnlWYWx1ZSksIFdURk1v
dmUoYW55VHlwZWRlZlZhbHVlKSwgZGljdGlvbmFyeU1lbWJlci52YWx1ZSgpIH07CiB9CiAKQEAg
LTc1NSwxNSArNzU1LDYgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5
VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4gY29udmVydERpY3Rpb24KICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAg
ICAgfQotICAgIEpTVmFsdWUgcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlIikpOwotICAg
IFRlc3RPYmo6OkVudW1UeXBlIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZTsKLSAgICBpZiAoIXJl
cXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVx
dWlyZWRFbnVtZXJhdGlvblZhbHVlID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUs
IHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9IGVsc2UgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAg
ICB9CiAgICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5k
ZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7CiAgICAgQ29udmVy
dGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKICAgICBpZiAo
IWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTc4OCw2ICs3
NzksMTUgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3Vs
ZE5vdFRvbGVyYXRlTnVsbD4gY29udmVydERpY3Rpb24KICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQorICAg
IEpTVmFsdWUgcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBpc051bGxPclVuZGVmaW5l
ZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAicmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlIikpOworICAgIFRlc3RPYmo6
OkVudW1UeXBlIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZTsKKyAgICBpZiAoIXJlcXVpcmVkRW51
bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVxdWlyZWRFbnVt
ZXJhdGlvblZhbHVlID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIHJlcXVpcmVk
RW51bWVyYXRpb25WYWx1ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CiAgICAg
cmV0dXJuIFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsIHsgV1RG
TW92ZShyZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVm
YXVsdCksICpub25OdWxsYWJsZU5vZGUsIHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlci52YWx1ZSgp
IH07CiB9CiAKQEAgLTgwNSwxOCArODA1LDE4IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5CiAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBOdWxsb3B0OwogICAgIH0KLSAgICBKU1ZhbHVlIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGlz
TnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlIikpOwotICAgIENv
bnZlcnRlcjxUZXN0T2JqOjpFbnVtVHlwZT46Ok9wdGlvbmFsVmFsdWUgZW51bWVyYXRpb25WYWx1
ZTsKLSAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgIGVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwg
ZW51bWVyYXRpb25WYWx1ZVZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9CiAgICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1
bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERl
ZmF1bHQiKSk7CiAgICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIGJvb2xlYW5XaXRo
b3V0RGVmYXVsdDsKICAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKICAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0ID0gY29udmVydDxib29sPihz
dGF0ZSwgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0KKyAgICBKU1ZhbHVlIGVudW1lcmF0
aW9uVmFsdWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVj
dC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlv
blZhbHVlIikpOworICAgIENvbnZlcnRlcjxUZXN0T2JqOjpFbnVtVHlwZT46Ok9wdGlvbmFsVmFs
dWUgZW51bWVyYXRpb25WYWx1ZTsKKyAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIGVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6
OkVudW1UeXBlPihzdGF0ZSwgZW51bWVyYXRpb25WYWx1ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9CiAgICAgcmV0dXJuIFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsIHsgV1RGTW92ZShlbnVtZXJh
dGlvblZhbHVlKSwgV1RGTW92ZShib29sZWFuV2l0aG91dERlZmF1bHQpIH07CiB9CiAKQEAgLTgz
NCwxOSArODM0LDg5IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRGljdGlvbmFyeU5h
bWU+IGNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAg
IH0KKyAgICBKU1ZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRl
ZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCIpKTsKKyAgICBDb252ZXJ0
ZXI8Ym9vbD46Ok9wdGlvbmFsVmFsdWUgYm9vbGVhbldpdGhvdXREZWZhdWx0OworICAgIGlmICgh
Ym9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBib29s
ZWFuV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBib29sZWFuV2l0aG91dERl
ZmF1bHRWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVs
bG9wdCk7CisgICAgfQogICAgIEpTVmFsdWUgZW51bWVyYXRpb25WYWx1ZVZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWUiKSk7CiAgICAgQ29udmVy
dGVyPFRlc3RPYmo6OkVudW1UeXBlPjo6T3B0aW9uYWxWYWx1ZSBlbnVtZXJhdGlvblZhbHVlOwog
ICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAg
ZW51bWVyYXRpb25WYWx1ZSA9IGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+KHN0YXRlLCBlbnVt
ZXJhdGlvblZhbHVlVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIE51bGxvcHQpOwogICAgIH0KLSAgICBKU1ZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZh
bHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImJvb2xlYW5XaXRob3V0RGVmYXVs
dCIpKTsKLSAgICBDb252ZXJ0ZXI8Ym9vbD46Ok9wdGlvbmFsVmFsdWUgYm9vbGVhbldpdGhvdXRE
ZWZhdWx0OwotICAgIGlmICghYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PGJvb2w+KHN0YXRl
LCBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7CisgICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rp
b25hcnlOYW1lIHsgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVlKSwgV1RGTW92ZShib29sZWFuV2l0
aG91dERlZmF1bHQpIH07Cit9CisKK3RlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6UGFyZW50
RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6UGFyZW50RGljdGlvbmFyeT4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAg
IGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9i
amVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0
LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAg
IEpTVmFsdWUgcGFyZW50TWVtYmVyMVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVm
aW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgInBhcmVudE1lbWJlcjEiKSk7CisgICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVl
IHBhcmVudE1lbWJlcjE7CisgICAgaWYgKCFwYXJlbnRNZW1iZXIxVmFsdWUuaXNVbmRlZmluZWQo
KSkgeworICAgICAgICBwYXJlbnRNZW1iZXIxID0gY29udmVydDxib29sPihzdGF0ZSwgcGFyZW50
TWVtYmVyMVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKICAgICB9Ci0gICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lIHsgV1RG
TW92ZShlbnVtZXJhdGlvblZhbHVlKSwgV1RGTW92ZShib29sZWFuV2l0aG91dERlZmF1bHQpIH07
CisgICAgSlNWYWx1ZSBwYXJlbnRNZW1iZXIyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpz
VW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAicGFyZW50TWVtYmVyMiIpKTsKKyAgICBDb252ZXJ0ZXI8Ym9vbD46Ok9wdGlvbmFs
VmFsdWUgcGFyZW50TWVtYmVyMjsKKyAgICBpZiAoIXBhcmVudE1lbWJlcjJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIHBhcmVudE1lbWJlcjIgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBw
YXJlbnRNZW1iZXIyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIE51bGxvcHQpOworICAgIH0KKyAgICByZXR1cm4gVGVzdE9iajo6UGFyZW50RGljdGlvbmFy
eSB7IFdURk1vdmUocGFyZW50TWVtYmVyMiksIFdURk1vdmUocGFyZW50TWVtYmVyMSkgfTsKK30K
KwordGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnk+IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RPYmo6OkNoaWxkRGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmlu
ZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVs
bE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJ
S0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
fQorICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2Jq
ZWN0VHlwZSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAgIEpTVmFsdWUgcGFyZW50TWVtYmVy
MVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInBhcmVudE1lbWJlcjEiKSk7
CisgICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIHBhcmVudE1lbWJlcjE7CisgICAg
aWYgKCFwYXJlbnRNZW1iZXIxVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBwYXJlbnRN
ZW1iZXIxID0gY29udmVydDxib29sPihzdGF0ZSwgcGFyZW50TWVtYmVyMVZhbHVlKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9CisgICAg
SlNWYWx1ZSBwYXJlbnRNZW1iZXIyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZp
bmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCAicGFyZW50TWVtYmVyMiIpKTsKKyAgICBDb252ZXJ0ZXI8Ym9vbD46Ok9wdGlvbmFsVmFsdWUg
cGFyZW50TWVtYmVyMjsKKyAgICBpZiAoIXBhcmVudE1lbWJlcjJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHBhcmVudE1lbWJlcjIgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBwYXJlbnRN
ZW1iZXIyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51
bGxvcHQpOworICAgIH0KKyAgICBKU1ZhbHVlIGNoaWxkTWVtYmVyMVZhbHVlID0gaXNOdWxsT3JV
bmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZzdGF0ZSwgImNoaWxkTWVtYmVyMSIpKTsKKyAgICBDb252ZXJ0ZXI8Ym9v
bD46Ok9wdGlvbmFsVmFsdWUgY2hpbGRNZW1iZXIxOworICAgIGlmICghY2hpbGRNZW1iZXIxVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBjaGlsZE1lbWJlcjEgPSBjb252ZXJ0PGJvb2w+
KHN0YXRlLCBjaGlsZE1lbWJlcjFWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgfQorICAgIEpTVmFsdWUgY2hpbGRNZW1iZXIyVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY2hpbGRNZW1iZXIyIikpOworICAg
IENvbnZlcnRlcjxib29sPjo6T3B0aW9uYWxWYWx1ZSBjaGlsZE1lbWJlcjI7CisgICAgaWYgKCFj
aGlsZE1lbWJlcjJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGNoaWxkTWVtYmVyMiA9
IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIGNoaWxkTWVtYmVyMlZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICB9CisgICAgcmV0dXJuIFRl
c3RPYmo6OkNoaWxkRGljdGlvbmFyeSB7IFdURk1vdmUocGFyZW50TWVtYmVyMiksIFdURk1vdmUo
cGFyZW50TWVtYmVyMSksIFdURk1vdmUoY2hpbGRNZW1iZXIyKSwgV1RGTW92ZShjaGlsZE1lbWJl
cjEpIH07CiB9CiAKIC8vIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGNmNGJiODgwMGQ0NTRlNmFhMzgxODE1YzM5
N2M3MTU4ZWFjMWEwYjcuLjc1MTMzZDAzZDRkYWM1ZGY3YzhmYjcyMjg2MWNmNDRkZWRjOTQwNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKQEAgLTQ3NCwzICs0NzQsMTQgQEAgZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeVRoYXRTaG91
bGRUb2xlcmF0ZU51bGwgewogICAgIFRlc3RFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlOwogICAg
IGJvb2xlYW4gYm9vbGVhbldpdGhvdXREZWZhdWx0OwogfTsKKworZGljdGlvbmFyeSBQYXJlbnRE
aWN0aW9uYXJ5IHsKKyAgICBib29sZWFuIHBhcmVudE1lbWJlcjI7CisgICAgYm9vbGVhbiBwYXJl
bnRNZW1iZXIxOworfTsKKworZGljdGlvbmFyeSBDaGlsZERpY3Rpb25hcnkgOiBQYXJlbnREaWN0
aW9uYXJ5IHsKKyAgICBib29sZWFuIGNoaWxkTWVtYmVyMjsKKyAgICBib29sZWFuIGNoaWxkTWVt
YmVyMTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4IDBlNDFjZGJlZTIx
YmU0NzZkODE3NjU4ZTQwMDc3NzZmMGUwNGYwY2MuLjZiMTVhZGQ3OTliZmM3MTE0MzRkMTk3NTcz
NDMwMDUyYmEyNTIyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbApAQCAtNDIsOCAr
NDIsNyBAQCBkaWN0aW9uYXJ5IEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKICAgICBib29sZWFuIGNh
cHR1cmUgPSBmYWxzZTsKIH07CiAKLWRpY3Rpb25hcnkgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMg
ewotICAgIGJvb2xlYW4gY2FwdHVyZSA9IGZhbHNlOworZGljdGlvbmFyeSBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyA6IEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKICAgICBib29sZWFuIHBhc3NpdmUg
PSBmYWxzZTsKICAgICBib29sZWFuIG9uY2UgPSBmYWxzZTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290616</attachid>
            <date>2016-10-04 10:44:19 -0700</date>
            <delta_ts>2016-10-04 11:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162907-20161004104109.patch</filename>
            <type>text/plain</type>
            <size>42953</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk2OGNhYTFkMTc3ZDk0
YWQwYjhhMWQxMGFmZjNiYjhmYTdhOGNjMi4uMzdkZTNiNzQzOWJkZDEyODdlZDg0N2M3MGQzOWFk
N2MxNWRjMmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBJRExdIEFkZCBzdXBw
b3J0IGZvciBkaWN0aW9uYXJ5IGluaGVyaXRhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSB0byBvdXIgV2ViIElETCBwYXJzZXIgYW5kCisgICAgICAgIGJpbmRpbmdzIGdlbmVyYXRv
ci4gTGV2ZXJhZ2UgdGhpcyBuZXcgc3VwcG9ydCBmb3IgRXZlbnRUYXJnZXQncworICAgICAgICBF
dmVudExpc3RlbmVyT3B0aW9ucyAvIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIGRpY3Rpb25hcmll
cywgaW4KKyAgICAgICAgb3JkZXIgdG8gbWF0Y2ggdGhlIERPTSBzcGVjaWZpY2F0aW9uOgorICAg
ICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLWV2ZW50dGFyZ2V0
CisKKyAgICAgICAgQWxzbyB1cGRhdGUgdGhlIGJpbmRpbmdzIGdlbmVyYXRvciB0byBjb252ZXJ0
IHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lbWJlcnMgaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVy
LCBhcyBwZXI6CisgICAgICAgIC0gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMt
ZGljdGlvbmFyeSAoU3RlcCA1LjEpCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5l
ZCBiaW5kaW5ncyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbToKKyAgICAgICAgKEdldERpY3Rpb25hcnlCeU5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEaWN0aW9u
YXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlRGljdGlvbmFyeSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRl
TnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5Pik6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnk+KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKwogMjAxNi0xMC0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBjb250cm9scyBhcmUgZGlzcGxheWVk
IGluIHRoZSBpbmNvcnJlY3Qgc3RhdGUgbW9tZW50YXJpbHkgYWZ0ZXIgc3dpdGNoaW5nIGJldHdl
ZW4gdGFicyBwbGF5aW5nIG1lZGlhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggMzFiZTcxMWE0YTUxMjIzZjFiZjRkMzkwMjQ1ZTZi
MmQzNTM3ODc3Zi4uNmNmMDNiYzAyOTA3ZTA0ZGNlMzEzZWZjYTliZmZjM2RhNDhhZjUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpA
QCAtNDU1LDYgKzQ1NSwxNiBAQCBzdWIgSXNEaWN0aW9uYXJ5VHlwZQogICAgIHJldHVybiAwOwog
fQogCitzdWIgR2V0RGljdGlvbmFyeUJ5TmFtZQoreworICAgIG15ICgkb2JqZWN0LCAkbmFtZSkg
PSBAXzsKKyAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJG5hbWUpOworCisgICAgZm9yIG15ICRk
aWN0aW9uYXJ5IChAeyR1c2VEb2N1bWVudC0+ZGljdGlvbmFyaWVzfSkgeworICAgICAgICByZXR1
cm4gJGRpY3Rpb25hcnkgaWYgJGRpY3Rpb25hcnktPm5hbWUgZXEgJG5hbWU7CisgICAgfQorfQor
CiBzdWIgSGFzRGljdGlvbmFyeUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlCiB7CiAgICAgbXkg
KCRvYmplY3QsICR0eXBlKSA9IEBfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxY2EwZjFiMWMxYjQ3MTRmOTRkNDAwNDhh
NDVkNGI3MmE5NmM5NjMxLi4zOTVjN2E4YzNjMmVkMzhhMzBiOGI4ZmEyN2U5MDM1MzIzOGJlNDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtOTUzLDEwICs5NTMsMTAgQEAgc3ViIEdlbmVyYXRlQ29udmVyc2lvblJ1bGVX
aXRoTGVhZGluZ0NvbW1hCiAKIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNv
bnRlbnQKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGRpY3Rpb25hcmllcykgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGFsbERpY3Rpb25hcmllcykgPSBAXzsKIAogICAgIG15ICRyZXN1bHQg
PSAiIjsKLSAgICBmb3JlYWNoIG15ICRkaWN0aW9uYXJ5IChAJGRpY3Rpb25hcmllcykgeworICAg
IGZvcmVhY2ggbXkgJGRpY3Rpb25hcnkgKEAkYWxsRGljdGlvbmFyaWVzKSB7CiAgICAgICAgIG15
ICRuYW1lID0gJGRpY3Rpb25hcnktPm5hbWU7CiAKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRpY3Rpb25h
cnkpOwpAQCAtOTg4LDc5ICs5ODgsOTAgQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVu
dGF0aW9uQ29udGVudAogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIAogICAgICAgICAj
IDMuIExldCBkaWN0IGJlIGFuIGVtcHR5IGRpY3Rpb25hcnkgdmFsdWUgb2YgdHlwZSBEOyBldmVy
eSBkaWN0aW9uYXJ5IG1lbWJlciBpcyBpbml0aWFsbHkgY29uc2lkZXJlZCB0byBiZSBub3QgcHJl
c2VudC4KKwogICAgICAgICAjIDQuIExldCBkaWN0aW9uYXJpZXMgYmUgYSBsaXN0IGNvbnNpc3Rp
bmcgb2YgRCBhbmQgYWxsIG9mIETigJlzIGluaGVyaXRlZCBkaWN0aW9uYXJpZXMsIGluIG9yZGVy
IGZyb20gbGVhc3QgdG8gbW9zdCBkZXJpdmVkLgotICAgICAgICAjIEZJWE1FOiBXZSBkbyBub3Qg
c3VwcG9ydCBkaWN0aW9uYXJ5IGluaGVyaXRlbmNlIHlldC4KKyAgICAgICAgbXkgQGRpY3Rpb25h
cmllczsKKyAgICAgICAgcHVzaChAZGljdGlvbmFyaWVzLCAkZGljdGlvbmFyeSk7CisgICAgICAg
IG15ICRwYXJlbnREaWN0aW9uYXJ5ID0gJGNvZGVHZW5lcmF0b3ItPkdldERpY3Rpb25hcnlCeU5h
bWUoJGRpY3Rpb25hcnktPnBhcmVudCk7CisgICAgICAgIHdoaWxlIChkZWZpbmVkKCRwYXJlbnRE
aWN0aW9uYXJ5KSkgeworICAgICAgICAgICAgdW5zaGlmdChAZGljdGlvbmFyaWVzLCAkcGFyZW50
RGljdGlvbmFyeSk7CisgICAgICAgICAgICAkcGFyZW50RGljdGlvbmFyeSA9ICRjb2RlR2VuZXJh
dG9yLT5HZXREaWN0aW9uYXJ5QnlOYW1lKCRwYXJlbnREaWN0aW9uYXJ5LT5wYXJlbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgbXkgJGFyZ3VtZW50cyA9ICIiOworICAgICAgICBteSAkY29tbWEg
PSAiIjsKIAogICAgICAgICAjIDUuIEZvciBlYWNoIGRpY3Rpb25hcnkgZGljdGlvbmFyeSBpbiBk
aWN0aW9uYXJpZXMsIGluIG9yZGVyOgotICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEB7JGRp
Y3Rpb25hcnktPm1lbWJlcnN9KSB7Ci0gICAgICAgICAgICAkbWVtYmVyLT5kZWZhdWx0KCJ1bmRl
ZmluZWQiKSBpZiAkbWVtYmVyLT50eXBlIGVxICJhbnkiOyAjIFVzZSB1bmRlZmluZWQgYXMgZGVm
YXVsdCB2YWx1ZSBmb3IgbWVtYmVyIG9mIHR5cGUgJ2FueScuCisgICAgICAgIGZvcmVhY2ggbXkg
JGRpY3Rpb25hcnkgKEBkaWN0aW9uYXJpZXMpIHsKKyAgICAgICAgICAgICMgRm9yIGVhY2ggZGlj
dGlvbmFyeSBtZW1iZXIgbWVtYmVyIGRlY2xhcmVkIG9uIGRpY3Rpb25hcnksIGluIGxleGljb2dy
YXBoaWNhbCBvcmRlcjoKKyAgICAgICAgICAgIG15IEBzb3J0ZWRNZW1iZXJzID0gc29ydCB7ICRh
LT5uYW1lIGNtcCAkYi0+bmFtZSB9IEB7JGRpY3Rpb25hcnktPm1lbWJlcnN9OworICAgICAgICAg
ICAgZm9yZWFjaCBteSAkbWVtYmVyIChAc29ydGVkTWVtYmVycykgeworICAgICAgICAgICAgICAg
ICRtZW1iZXItPmRlZmF1bHQoInVuZGVmaW5lZCIpIGlmICRtZW1iZXItPnR5cGUgZXEgImFueSI7
ICMgVXNlIHVuZGVmaW5lZCBhcyBkZWZhdWx0IHZhbHVlIGZvciBtZW1iZXIgb2YgdHlwZSAnYW55
Jy4KIAotICAgICAgICAgICAgbXkgJHR5cGUgPSAkbWVtYmVyLT50eXBlOworICAgICAgICAgICAg
ICAgIG15ICR0eXBlID0gJG1lbWJlci0+dHlwZTsKIAotICAgICAgICAgICAgIyA1LjEuIExldCBr
ZXkgYmUgdGhlIGlkZW50aWZpZXIgb2YgbWVtYmVyLgotICAgICAgICAgICAgbXkgJGtleSA9ICRt
ZW1iZXItPm5hbWU7CisgICAgICAgICAgICAgICAgIyA1LjEuIExldCBrZXkgYmUgdGhlIGlkZW50
aWZpZXIgb2YgbWVtYmVyLgorICAgICAgICAgICAgICAgIG15ICRrZXkgPSAkbWVtYmVyLT5uYW1l
OwogCi0gICAgICAgICAgICAjIDUuMi4gTGV0IHZhbHVlIGJlIGFuIEVDTUFTY3JpcHQgdmFsdWUs
IGRlcGVuZGluZyBvbiBUeXBlKFYpOgotICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIEpTVmFs
dWUgJHtrZXl9VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBcIiR7a2V5fVwi
KSk7XG4iOworICAgICAgICAgICAgICAgICMgNS4yLiBMZXQgdmFsdWUgYmUgYW4gRUNNQVNjcmlw
dCB2YWx1ZSwgZGVwZW5kaW5nIG9uIFR5cGUoVik6CisgICAgICAgICAgICAgICAgJHJlc3VsdCAu
PSAiICAgIEpTVmFsdWUgJHtrZXl9VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZp
bmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCBcIiR7a2V5fVwiKSk7XG4iOwogCi0gICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5h
dGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRtZW1iZXIpOwotICAgICAgICAgICAg
aWYgKCRtZW1iZXItPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQgJG1lbWJlci0+ZGVmYXVsdCkgewot
ICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICBDb252ZXJ0ZXI8JG5hdGl2ZVR5cGU+OjpP
cHRpb25hbFZhbHVlICRrZXk7XG4iOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAkcmVzdWx0IC49ICIgICAgJG5hdGl2ZVR5cGUgJGtleTtcbiI7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25h
dHVyZSgkaW50ZXJmYWNlLCAkbWVtYmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoJG1lbWJlci0+
aXNPcHRpb25hbCAmJiAhZGVmaW5lZCAkbWVtYmVyLT5kZWZhdWx0KSB7CisgICAgICAgICAgICAg
ICAgICAgICRyZXN1bHQgLj0gIiAgICBDb252ZXJ0ZXI8JG5hdGl2ZVR5cGU+OjpPcHRpb25hbFZh
bHVlICRrZXk7XG4iOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICAkbmF0aXZlVHlwZSAka2V5O1xuIjsKKyAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICMgNS4zLiBJZiB2YWx1ZSBpcyBub3QgdW5kZWZpbmVkLCB0aGVu
OgotICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmICghJHtrZXl9VmFsdWUuaXNVbmRlZmlu
ZWQoKSkge1xuIjsKLSAgICAgICAgICAgICMgRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCB3YW50
IHRoaXMgdG8gc2hhcmUgYSBsb3QgbW9yZSBjb2RlIHdpdGggSlNWYWx1ZVRvTmF0aXZlLgotICAg
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkgewotICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7dHlwZX0uaCIpOwotICAgICAgICAg
ICAgICAgIGRpZSAiRGljdGlvbmFyeSBtZW1iZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5
cGVzIG11c3QgYmUgbWFya2VkIGFzIHJlcXVpcmVkIiBpZiAhJG1lbWJlci0+aXNOdWxsYWJsZSAm
JiAkbWVtYmVyLT5pc09wdGlvbmFsOwotICAgICAgICAgICAgICAgIG15ICRudWxsYWJsZVBhcmFt
ZXRlciA9ICRtZW1iZXItPmlzTnVsbGFibGUgPyAiSXNOdWxsYWJsZTo6WWVzIiA6ICJJc051bGxh
YmxlOjpObyI7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICAka2V5ID0gY29u
dmVydFdyYXBwZXJUeXBlPCR0eXBlLCBKUyR7dHlwZX0+KHN0YXRlLCAke2tleX1WYWx1ZSwgJG51
bGxhYmxlUGFyYW1ldGVyKTtcbiI7Ci0gICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZl
VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwotICAgICAgICAgICAgICAg
ICRyZXN1bHQgLj0gIiAgICAgICAgJGtleSA9IGNvbnZlcnREaWN0aW9uYXJ5PCR7bmF0aXZlVHlw
ZX0+KHN0YXRlLCAke2tleX1WYWx1ZSk7XG4iOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBteSAkY29udmVyc2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hID0gR2VuZXJhdGVD
b252ZXJzaW9uUnVsZVdpdGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcik7Ci0gICAg
ICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICAka2V5ID0gY29udmVydDwke25hdGl2ZVR5
cGV9PihzdGF0ZSwgJHtrZXl9VmFsdWUke2NvbnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21tYX0p
O1xuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTtcbiI7Ci0gICAgICAgICAgICAj
IFZhbHVlIGlzIHVuZGVmaW5lZC4KLSAgICAgICAgICAgICMgNS40LiBPdGhlcndpc2UsIGlmIHZh
bHVlIGlzIHVuZGVmaW5lZCBidXQgdGhlIGRpY3Rpb25hcnkgbWVtYmVyIGhhcyBhIGRlZmF1bHQg
dmFsdWUsIHRoZW46Ci0gICAgICAgICAgICBpZiAoJG1lbWJlci0+aXNPcHRpb25hbCAmJiBkZWZp
bmVkICRtZW1iZXItPmRlZmF1bHQpIHsKLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAg
fSBlbHNlXG4iOwotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgJGtleSA9ICIg
LiBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkbWVtYmVyKSAuICI7XG4iOwotICAg
ICAgICAgICAgfSBlbHNpZiAoISRtZW1iZXItPmlzT3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAg
ICAjIDUuNS4gT3RoZXJ3aXNlLCBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgYW5kIHRoZSBkaWN0aW9u
YXJ5IG1lbWJlciBpcyBhIHJlcXVpcmVkIGRpY3Rpb25hcnkgbWVtYmVyLCB0aGVuIHRocm93IGEg
VHlwZUVycm9yLgotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9IGVsc2Uge1xuIjsK
LSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgdGhyb3dTY29wZSk7XG4iOwotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAg
cmV0dXJuIE51bGxvcHQ7XG4iOwotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9XG4i
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAg
fVxuIjsKKyAgICAgICAgICAgICAgICAjIDUuMy4gSWYgdmFsdWUgaXMgbm90IHVuZGVmaW5lZCwg
dGhlbjoKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKCEke2tleX1WYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7XG4iOworICAgICAgICAgICAgICAgICMgRklYTUU6IEV2ZW50dWFsbHkg
d2Ugd2lsbCB3YW50IHRoaXMgdG8gc2hhcmUgYSBsb3QgbW9yZSBjb2RlIHdpdGggSlNWYWx1ZVRv
TmF0aXZlLgorICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlw
ZSgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHt0
eXBlfS5oIik7CisgICAgICAgICAgICAgICAgICAgIGRpZSAiRGljdGlvbmFyeSBtZW1iZXJzIG9m
IG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIG11c3QgYmUgbWFya2VkIGFzIHJlcXVpcmVkIiBp
ZiAhJG1lbWJlci0+aXNOdWxsYWJsZSAmJiAkbWVtYmVyLT5pc09wdGlvbmFsOworICAgICAgICAg
ICAgICAgICAgICBteSAkbnVsbGFibGVQYXJhbWV0ZXIgPSAkbWVtYmVyLT5pc051bGxhYmxlID8g
IklzTnVsbGFibGU6OlllcyIgOiAiSXNOdWxsYWJsZTo6Tm8iOworICAgICAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICIgICAgICAgICRrZXkgPSBjb252ZXJ0V3JhcHBlclR5cGU8JHR5cGUsIEpT
JHt0eXBlfT4oc3RhdGUsICR7a2V5fVZhbHVlLCAkbnVsbGFibGVQYXJhbWV0ZXIpO1xuIjsKKyAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgk
dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVU
eXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAi
ICAgICAgICAka2V5ID0gY29udmVydERpY3Rpb25hcnk8JHtuYXRpdmVUeXBlfT4oc3RhdGUsICR7
a2V5fVZhbHVlKTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbXkgJGNvbnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21tYSA9IEdlbmVyYXRlQ29udmVy
c2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hKCRpbnRlcmZhY2UsICRtZW1iZXIpOworICAgICAgICAg
ICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgICRrZXkgPSBjb252ZXJ0PCR7bmF0aXZlVHlw
ZX0+KHN0YXRlLCAke2tleX1WYWx1ZSR7Y29udmVyc2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hfSk7
XG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7XG4iOworICAgICAg
ICAgICAgICAgICMgVmFsdWUgaXMgdW5kZWZpbmVkLgorICAgICAgICAgICAgICAgICMgNS40LiBP
dGhlcndpc2UsIGlmIHZhbHVlIGlzIHVuZGVmaW5lZCBidXQgdGhlIGRpY3Rpb25hcnkgbWVtYmVy
IGhhcyBhIGRlZmF1bHQgdmFsdWUsIHRoZW46CisgICAgICAgICAgICAgICAgaWYgKCRtZW1iZXIt
PmlzT3B0aW9uYWwgJiYgZGVmaW5lZCAkbWVtYmVyLT5kZWZhdWx0KSB7CisgICAgICAgICAgICAg
ICAgICAgICRyZXN1bHQgLj0gIiAgICB9IGVsc2VcbiI7CisgICAgICAgICAgICAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgJGtleSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJm
YWNlLCAkbWVtYmVyKSAuICI7XG4iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCEkbWVtYmVy
LT5pc09wdGlvbmFsKSB7CisgICAgICAgICAgICAgICAgICAgICMgNS41LiBPdGhlcndpc2UsIGlm
IHZhbHVlIGlzIHVuZGVmaW5lZCBhbmQgdGhlIGRpY3Rpb25hcnkgbWVtYmVyIGlzIGEgcmVxdWly
ZWQgZGljdGlvbmFyeSBtZW1iZXIsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuCisgICAgICAgICAg
ICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9IGVsc2Uge1xuIjsKKyAgICAgICAgICAgICAgICAg
ICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUp
O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gTnVs
bG9wdDtcbiI7CisgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9XG4iOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAg
ICB9XG4iOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0g
ICAgICAgICMgNi4gUmV0dXJuIGRpY3QuCi0gICAgICAgIG15ICRhcmd1bWVudHMgPSAiIjsKLSAg
ICAgICAgbXkgJGNvbW1hID0gIiI7Ci0gICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGlj
dGlvbmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgIG15ICR2YWx1ZTsKLSAgICAgICAgICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkbWVtYmVyLT50eXBlKSAmJiAhJG1l
bWJlci0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIqIiAuICRtZW1i
ZXItPm5hbWU7Ci0gICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9u
YXJ5VHlwZSgkbWVtYmVyLT50eXBlKSkgewotICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRtZW1i
ZXItPm5hbWUgLiAiLnZhbHVlKCkiOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAkdmFsdWUgPSAiV1RGTW92ZSgiIC4gJG1lbWJlci0+bmFtZSAuICIpIjsKKyAgICAgICAg
ICAgICMgNi4gUmV0dXJuIGRpY3QuCisgICAgICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEB7
JGRpY3Rpb25hcnktPm1lbWJlcnN9KSB7CisgICAgICAgICAgICAgICAgbXkgJHZhbHVlOworICAg
ICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkbWVtYmVyLT50
eXBlKSAmJiAhJG1lbWJlci0+aXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAkdmFs
dWUgPSAiKiIgLiAkbWVtYmVyLT5uYW1lOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCRtZW1iZXItPnR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgICAgICR2YWx1ZSA9ICRtZW1iZXItPm5hbWUgLiAiLnZhbHVlKCkiOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCIg
LiAkbWVtYmVyLT5uYW1lIC4gIikiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAkYXJndW1lbnRzIC49ICRjb21tYSAuICR2YWx1ZTsKKyAgICAgICAgICAgICAgICAkY29tbWEg
PSAiLCAiOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgJGFyZ3VtZW50cyAuPSAkY29tbWEg
LiAkdmFsdWU7Ci0gICAgICAgICAgICAkY29tbWEgPSAiLCAiOwogICAgICAgICB9CiAKICAgICAg
ICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiAkY2xhc3NOYW1lIHsgIiAuICRhcmd1bWVudHMgLiAi
IH07XG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7Ci0KICAgICAgICAgJHJlc3VsdCAu
PSAiI2VuZGlmXG5cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KICAgICByZXR1cm4g
JHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
aW5kZXggNmYyMzk5YWNhZjllMWZjZGZiMTcyOTIyODZmODY4YzMxZGYxODFjNC4uNzhkNTNmN2Rk
ZTczOTQ3MjBiNmI4ODVkYzczMzQ2NDNhZjc1NGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTEzMCw2ICsxMzAsNyBAQCBzdHJ1Y3QoIGRv
bUVudW0gPT4gewogfSk7CiAKIHN0cnVjdCggZG9tRGljdGlvbmFyeSA9PiB7CisgICAgcGFyZW50
ID0+ICckJywgICMgUGFyZW50IGNsYXNzIGlkZW50aWZpZXIKICAgICBuYW1lID0+ICckJywKICAg
ICBtZW1iZXJzID0+ICdAJywgIyBMaXN0IG9mICdkb21TaWduYXR1cmUnCiAgICAgZXh0ZW5kZWRB
dHRyaWJ1dGVzID0+ICckJywKQEAgLTY1OSw3ICs2NjAsOCBAQCBzdWIgcGFyc2VEaWN0aW9uYXJ5
CiAgICAgICAgIG15ICRuYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNl
bGYtPmFzc2VydFRva2VuVHlwZSgkbmFtZVRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwogICAgICAg
ICAkZGljdGlvbmFyeS0+bmFtZSgkbmFtZVRva2VuLT52YWx1ZSgpKTsKLSAgICAgICAgJHNlbGYt
PnBhcnNlSW5oZXJpdGFuY2UoKTsKKyAgICAgICAgbXkgJHBhcmVudHMgPSAkc2VsZi0+cGFyc2VJ
bmhlcml0YW5jZSgpOworICAgICAgICAkZGljdGlvbmFyeS0+cGFyZW50KCRwYXJlbnRzLT5bMF0p
OwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgInsi
LCBfX0xJTkVfXyk7CiAgICAgICAgICRkaWN0aW9uYXJ5LT5tZW1iZXJzKCRzZWxmLT5wYXJzZURp
Y3Rpb25hcnlNZW1iZXJzKCkpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgIn0iLCBfX0xJTkVfXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGExMWM2OTViYTQ2
YTJiM2NjYmYyMmNlYTFiYjQyNmRmNGNhNGJlNjYuLjQ4NmZlNTIwOTM3YzJlMDQxMzhmZjE1ZTFh
ZWZlOWNhNWU0ZDcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01MzAsMTAgKzUzMCwzNyBAQCB0ZW1wbGF0
ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+KAogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9Ci0gICAgSlNWYWx1ZSBlbnVtZXJh
dGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRl
ZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQiKSk7Ci0gICAgQ29udmVydGVyPFRl
c3RPYmo6OkVudW1UeXBlPjo6T3B0aW9uYWxWYWx1ZSBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERl
ZmF1bHQ7Ci0gICAgaWYgKCFlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCA9IGNv
bnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+KHN0YXRlLCBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERl
ZmF1bHRWYWx1ZSk7CisgICAgSlNWYWx1ZSBhbnlUeXBlZGVmVmFsdWVWYWx1ZSA9IGlzTnVsbE9y
VW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJhbnlUeXBlZGVmVmFsdWUiKSk7CisgICAgSlNDOjpKU1Zh
bHVlIGFueVR5cGVkZWZWYWx1ZTsKKyAgICBpZiAoIWFueVR5cGVkZWZWYWx1ZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgYW55VHlwZWRlZlZhbHVlID0gY29udmVydDxKU0M6OkpTVmFs
dWU+KHN0YXRlLCBhbnlUeXBlZGVmVmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgfSBlbHNlCisgICAgICAgIGFueVR5cGVk
ZWZWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBhbnlWYWx1ZVZhbHVlID0gaXNO
dWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImFueVZhbHVlIikpOworICAgIEpTQzo6SlNWYWx1
ZSBhbnlWYWx1ZTsKKyAgICBpZiAoIWFueVZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBhbnlWYWx1ZSA9IGNvbnZlcnQ8SlNDOjpKU1ZhbHVlPihzdGF0ZSwgYW55VmFsdWVWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGFueVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVl
IGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
ImJvb2xlYW5XaXRoRGVmYXVsdCIpKTsKKyAgICBib29sIGJvb2xlYW5XaXRoRGVmYXVsdDsKKyAg
ICBpZiAoIWJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
Ym9vbGVhbldpdGhEZWZhdWx0ID0gY29udmVydDxib29sPihzdGF0ZSwgYm9vbGVhbldpdGhEZWZh
dWx0VmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxv
cHQpOworICAgIH0gZWxzZQorICAgICAgICBib29sZWFuV2l0aERlZmF1bHQgPSBmYWxzZTsKKyAg
ICBKU1ZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCIpKTsKKyAgICBDb252ZXJ0ZXI8Ym9v
bD46Ok9wdGlvbmFsVmFsdWUgYm9vbGVhbldpdGhvdXREZWZhdWx0OworICAgIGlmICghYm9vbGVh
bldpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBib29sZWFuV2l0
aG91dERlZmF1bHQgPSBjb252ZXJ0PGJvb2w+KHN0YXRlLCBib29sZWFuV2l0aG91dERlZmF1bHRW
YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7
CisgICAgfQorICAgIEpTVmFsdWUgZGljdGlvbmFyeU1lbWJlclZhbHVlID0gaXNOdWxsT3JVbmRl
ZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImRpY3Rpb25hcnlNZW1iZXIiKSk7CisgICAgQ29udmVydGVyPFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPjo6T3B0aW9uYWxWYWx1ZSBk
aWN0aW9uYXJ5TWVtYmVyOworICAgIGlmICghZGljdGlvbmFyeU1lbWJlclZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgZGljdGlvbmFyeU1lbWJlciA9IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPihzdGF0ZSwgZGljdGlvbmFy
eU1lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKICAgICB9CiAgICAgSlNWYWx1ZSBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlV2l0
aERlZmF1bHQiKSk7CkBAIC01NTAsNTAgKzU3Nyw1MSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+
KAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAg
IH0gZWxzZQogICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCA9
IFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZzsKLSAgICBKU1ZhbHVlIHN0cmluZ1dpdGhE
ZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3Qt
PmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic3RyaW5nV2l0aERl
ZmF1bHQiKSk7Ci0gICAgU3RyaW5nIHN0cmluZ1dpdGhEZWZhdWx0OwotICAgIGlmICghc3RyaW5n
V2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHN0cmluZ1dpdGhEZWZh
dWx0ID0gY29udmVydDxTdHJpbmc+KHN0YXRlLCBzdHJpbmdXaXRoRGVmYXVsdFZhbHVlKTsKKyAg
ICBKU1ZhbHVlIGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0gaXNOdWxsT3JV
bmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKTsK
KyAgICBDb252ZXJ0ZXI8VGVzdE9iajo6RW51bVR5cGU+OjpPcHRpb25hbFZhbHVlIGVudW1lcmF0
aW9uVmFsdWVXaXRob3V0RGVmYXVsdDsKKyAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVXaXRob3V0
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdp
dGhvdXREZWZhdWx0ID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIGVudW1lcmF0
aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RyaW5nV2l0aERl
ZmF1bHQgPSAiZGVmYXVsdFN0cmluZyI7Ci0gICAgSlNWYWx1ZSBzdHJpbmdXaXRob3V0RGVmYXVs
dFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInN0cmluZ1dpdGhvdXREZWZh
dWx0IikpOwotICAgIENvbnZlcnRlcjxTdHJpbmc+OjpPcHRpb25hbFZhbHVlIHN0cmluZ1dpdGhv
dXREZWZhdWx0OwotICAgIGlmICghc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHN0cmluZ1dpdGhvdXREZWZhdWx0ID0gY29udmVydDxTdHJpbmc+KHN0
YXRlLCBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlKTsKKyAgICB9CisgICAgSlNWYWx1ZSBpbnRl
Z2VyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlciIpKTsKKyAg
ICBDb252ZXJ0ZXI8aW50MzJfdD46Ok9wdGlvbmFsVmFsdWUgaW50ZWdlcjsKKyAgICBpZiAoIWlu
dGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGVnZXIgPSBjb252ZXJ0PGlu
dDMyX3Q+KHN0YXRlLCBpbnRlZ2VyVmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0KLSAgICBKU1Zh
bHVlIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVm
aW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgImJvb2xlYW5XaXRoRGVmYXVsdCIpKTsKLSAgICBib29sIGJvb2xlYW5XaXRoRGVmYXVsdDsK
LSAgICBpZiAoIWJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgYm9vbGVhbldpdGhEZWZhdWx0ID0gY29udmVydDxib29sPihzdGF0ZSwgYm9vbGVhbldpdGhE
ZWZhdWx0VmFsdWUpOworICAgIEpTVmFsdWUgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBpc051
bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlcldpdGhEZWZhdWx0IikpOworICAgIGlu
dDMyX3QgaW50ZWdlcldpdGhEZWZhdWx0OworICAgIGlmICghaW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0
PGludDMyX3Q+KHN0YXRlLCBpbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIGJvb2xlYW5XaXRoRGVmYXVsdCA9IGZhbHNlOwotICAgIEpTVmFs
dWUgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5k
ZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0IikpOwotICAgIENvbnZlcnRlcjxib29sPjo6T3B0
aW9uYWxWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHQ7Ci0gICAgaWYgKCFib29sZWFuV2l0aG91
dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGJvb2xlYW5XaXRob3V0RGVm
YXVsdCA9IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsK
KyAgICAgICAgaW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICBKU1ZhbHVlIGxhcmdlSW50ZWdl
clZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlciIpKTsK
KyAgICBDb252ZXJ0ZXI8aW50NjRfdD46Ok9wdGlvbmFsVmFsdWUgbGFyZ2VJbnRlZ2VyOworICAg
IGlmICghbGFyZ2VJbnRlZ2VyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBsYXJnZUlu
dGVnZXIgPSBjb252ZXJ0PGludDY0X3Q+KHN0YXRlLCBsYXJnZUludGVnZXJWYWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVs
bG9wdCk7CiAgICAgfQotICAgIEpTVmFsdWUgc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZSA9IGlzTnVs
bE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzZXF1ZW5jZU9mU3RyaW5ncyIpKTsKLSAgICBDb252
ZXJ0ZXI8VmVjdG9yPFN0cmluZz4+OjpPcHRpb25hbFZhbHVlIHNlcXVlbmNlT2ZTdHJpbmdzOwot
ICAgIGlmICghc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IHNlcXVlbmNlT2ZTdHJpbmdzID0gY29udmVydDxWZWN0b3I8U3RyaW5nPj4oc3RhdGUsIHNlcXVl
bmNlT2ZTdHJpbmdzVmFsdWUpOworICAgIEpTVmFsdWUgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJsYXJnZUludGVnZXJXaXRoRGVm
YXVsdCIpKTsKKyAgICBpbnQ2NF90IGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0OworICAgIGlmICgh
bGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGxh
cmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydDxpbnQ2NF90PihzdGF0ZSwgbGFyZ2VJbnRl
Z2VyV2l0aERlZmF1bHRWYWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAg
ICAgICBsYXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IDA7CisgICAgSlNWYWx1ZSBudWxsYWJsZU5v
ZGVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJudWxsYWJsZU5vZGUiKSk7
CisgICAgTm9kZSogbnVsbGFibGVOb2RlOworICAgIGlmICghbnVsbGFibGVOb2RlVmFsdWUuaXNV
bmRlZmluZWQoKSkgeworICAgICAgICBudWxsYWJsZU5vZGUgPSBjb252ZXJ0V3JhcHBlclR5cGU8
Tm9kZSwgSlNOb2RlPihzdGF0ZSwgbnVsbGFibGVOb2RlVmFsdWUsIElzTnVsbGFibGU6Olllcyk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAg
fSBlbHNlCisgICAgICAgIG51bGxhYmxlTm9kZSA9IG51bGxwdHI7CiAgICAgSlNWYWx1ZSByZXN0
cmljdGVkRG91YmxlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBv
YmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJp
Y3RlZERvdWJsZSIpKTsKICAgICBDb252ZXJ0ZXI8ZG91YmxlPjo6T3B0aW9uYWxWYWx1ZSByZXN0
cmljdGVkRG91YmxlOwogICAgIGlmICghcmVzdHJpY3RlZERvdWJsZVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgcmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnQ8ZG91YmxlPihzdGF0ZSwg
cmVzdHJpY3RlZERvdWJsZVZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0KLSAgICBK
U1ZhbHVlIHVucmVzdHJpY3RlZERvdWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInVucmVzdHJpY3RlZERvdWJsZSIpKTsKLSAgICBDb252ZXJ0ZXI8ZG91YmxlPjo6T3B0
aW9uYWxWYWx1ZSB1bnJlc3RyaWN0ZWREb3VibGU7Ci0gICAgaWYgKCF1bnJlc3RyaWN0ZWREb3Vi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZERvdWJsZSA9IGNv
bnZlcnQ8ZG91YmxlPihzdGF0ZSwgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUsIFNob3VsZEFsbG93
Tm9uRmluaXRlOjpZZXMpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IE51bGxvcHQpOwotICAgIH0KICAgICBKU1ZhbHVlIHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVs
dFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGVX
aXRoRGVmYXVsdCIpKTsKICAgICBkb3VibGUgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Owog
ICAgIGlmICghcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkg
ewpAQCAtNjAxLDI1ICs2MjksMTIgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0
aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PigKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKICAgICB9IGVsc2UKICAg
ICAgICAgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0ID0gMDsKLSAgICBKU1ZhbHVlIHVucmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5k
ZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAidW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQiKSk7Ci0gICAgZG91YmxlIHVucmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0OwotICAgIGlmICghdW5yZXN0cmljdGVkRG91YmxlV2l0
aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZERvdWJs
ZVdpdGhEZWZhdWx0ID0gY29udmVydDxkb3VibGU+KHN0YXRlLCB1bnJlc3RyaWN0ZWREb3VibGVX
aXRoRGVmYXVsdFZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQgPSAwOwogICAgIEpTVmFsdWUgcmVzdHJp
Y3RlZEZsb2F0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3Rl
ZEZsb2F0IikpOwogICAgIENvbnZlcnRlcjxmbG9hdD46Ok9wdGlvbmFsVmFsdWUgcmVzdHJpY3Rl
ZEZsb2F0OwogICAgIGlmICghcmVzdHJpY3RlZEZsb2F0VmFsdWUuaXNVbmRlZmluZWQoKSkgewog
ICAgICAgICByZXN0cmljdGVkRmxvYXQgPSBjb252ZXJ0PGZsb2F0PihzdGF0ZSwgcmVzdHJpY3Rl
ZEZsb2F0VmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObyk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfQotICAgIEpTVmFsdWUgdW5y
ZXN0cmljdGVkRmxvYXRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJl
c3RyaWN0ZWRGbG9hdCIpKTsKLSAgICBDb252ZXJ0ZXI8ZmxvYXQ+OjpPcHRpb25hbFZhbHVlIHVu
cmVzdHJpY3RlZEZsb2F0OwotICAgIGlmICghdW5yZXN0cmljdGVkRmxvYXRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZEZsb2F0ID0gY29udmVydDxmbG9hdD4oc3Rh
dGUsIHVucmVzdHJpY3RlZEZsb2F0VmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwotICAgIH0K
ICAgICBKU1ZhbHVlIHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQiKSk7CiAgICAg
ZmxvYXQgcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQ7CiAgICAgaWYgKCFyZXN0cmljdGVkRmxv
YXRXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTYyNywxMyArNjQyLDEyIEBA
IHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4oCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgTnVsbG9wdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFdp
dGhEZWZhdWx0ID0gMDsKLSAgICBKU1ZhbHVlIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJlc3RyaWN0ZWRGbG9hdFdp
dGhEZWZhdWx0IikpOwotICAgIGZsb2F0IHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQ7Ci0g
ICAgaWYgKCF1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkg
ewotICAgICAgICB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0ID0gY29udmVydDxmbG9hdD4o
c3RhdGUsIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSwgU2hvdWxkQWxsb3dOb25G
aW5pdGU6Olllcyk7CisgICAgSlNWYWx1ZSBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNlcXVlbmNlT2ZTdHJpbmdzIikpOworICAgIENvbnZl
cnRlcjxWZWN0b3I8U3RyaW5nPj46Ok9wdGlvbmFsVmFsdWUgc2VxdWVuY2VPZlN0cmluZ3M7Cisg
ICAgaWYgKCFzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
c2VxdWVuY2VPZlN0cmluZ3MgPSBjb252ZXJ0PFZlY3RvcjxTdHJpbmc+PihzdGF0ZSwgc2VxdWVu
Y2VPZlN0cmluZ3NWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgTnVsbG9wdCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVucmVzdHJpY3RlZEZsb2F0V2l0aERl
ZmF1bHQgPSAwOworICAgIH0KICAgICBKU1ZhbHVlIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSA9
IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzbWFsbEludGVnZXJDbGFtcGVkIikpOwog
ICAgIENvbnZlcnRlcjxpbnQ4X3Q+OjpPcHRpb25hbFZhbHVlIHNtYWxsSW50ZWdlckNsYW1wZWQ7
CiAgICAgaWYgKCFzbWFsbEludGVnZXJDbGFtcGVkVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
NjU5LDE5ICs2NzMsNDUgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5
PiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PigKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKICAgICB9IGVsc2UKICAgICAgICAg
c21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCA9IDA7Ci0gICAgSlNWYWx1ZSBpbnRlZ2Vy
VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlciIpKTsKLSAgICBD
b252ZXJ0ZXI8aW50MzJfdD46Ok9wdGlvbmFsVmFsdWUgaW50ZWdlcjsKLSAgICBpZiAoIWludGVn
ZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGludGVnZXIgPSBjb252ZXJ0PGludDMy
X3Q+KHN0YXRlLCBpbnRlZ2VyVmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAgIEpTVmFsdWUg
c3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQo
KSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJz
dHJpbmdXaXRoRGVmYXVsdCIpKTsKKyAgICBTdHJpbmcgc3RyaW5nV2l0aERlZmF1bHQ7CisgICAg
aWYgKCFzdHJpbmdXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgc3Ry
aW5nV2l0aERlZmF1bHQgPSBjb252ZXJ0PFN0cmluZz4oc3RhdGUsIHN0cmluZ1dpdGhEZWZhdWx0
VmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQp
OworICAgIH0gZWxzZQorICAgICAgICBzdHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5n
IjsKKyAgICBKU1ZhbHVlIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAic3RyaW5nV2l0aG91dERlZmF1bHQiKSk7CisgICAgQ29udmVydGVy
PFN0cmluZz46Ok9wdGlvbmFsVmFsdWUgc3RyaW5nV2l0aG91dERlZmF1bHQ7CisgICAgaWYgKCFz
dHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgc3RyaW5n
V2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PFN0cmluZz4oc3RhdGUsIHN0cmluZ1dpdGhvdXREZWZh
dWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxv
cHQpOwogICAgIH0KLSAgICBKU1ZhbHVlIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImludGVnZXJXaXRoRGVmYXVsdCIpKTsKLSAgICBpbnQz
Ml90IGludGVnZXJXaXRoRGVmYXVsdDsKLSAgICBpZiAoIWludGVnZXJXaXRoRGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydDxp
bnQzMl90PihzdGF0ZSwgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
OworICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUgPSBpc051bGxPclVuZGVmaW5l
ZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRG91YmxlIikpOworICAgIENvbnZlcnRlcjxkb3Vi
bGU+OjpPcHRpb25hbFZhbHVlIHVucmVzdHJpY3RlZERvdWJsZTsKKyAgICBpZiAoIXVucmVzdHJp
Y3RlZERvdWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdW5yZXN0cmljdGVkRG91
YmxlID0gY29udmVydDxkb3VibGU+KHN0YXRlLCB1bnJlc3RyaWN0ZWREb3VibGVWYWx1ZSwgU2hv
dWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgTnVsbG9wdCk7CisgICAgfQorICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRG91Ymxl
V2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9i
amVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJlc3Ry
aWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKKyAgICBkb3VibGUgdW5yZXN0cmljdGVkRG91Ymxl
V2l0aERlZmF1bHQ7CisgICAgaWYgKCF1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQg
PSBjb252ZXJ0PGRvdWJsZT4oc3RhdGUsIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFs
dWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwogICAgIH0gZWxzZQotICAgICAgICBpbnRlZ2VyV2l0
aERlZmF1bHQgPSAwOworICAgICAgICB1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IDA7
CisgICAgSlNWYWx1ZSB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgInVucmVzdHJpY3RlZEZsb2F0IikpOworICAgIENvbnZlcnRlcjxmbG9hdD46
Ok9wdGlvbmFsVmFsdWUgdW5yZXN0cmljdGVkRmxvYXQ7CisgICAgaWYgKCF1bnJlc3RyaWN0ZWRG
bG9hdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdW5yZXN0cmljdGVkRmxvYXQgPSBj
b252ZXJ0PGZsb2F0PihzdGF0ZSwgdW5yZXN0cmljdGVkRmxvYXRWYWx1ZSwgU2hvdWxkQWxsb3dO
b25GaW5pdGU6Olllcyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7CisgICAgfQorICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVs
dFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVzdHJpY3RlZEZsb2F0
V2l0aERlZmF1bHQiKSk7CisgICAgZmxvYXQgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdDsK
KyAgICBpZiAoIXVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0PGZsb2F0
PihzdGF0ZSwgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlLCBTaG91bGRBbGxvd05v
bkZpbml0ZTo6WWVzKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVs
dCA9IDA7CiAgICAgSlNWYWx1ZSB1bnNpZ25lZEludGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZEludGVnZXIiKSk7CiAgICAgQ29udmVydGVyPHVpbnQz
Ml90Pjo6T3B0aW9uYWxWYWx1ZSB1bnNpZ25lZEludGVnZXI7CiAgICAgaWYgKCF1bnNpZ25lZElu
dGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC02ODUsMTkgKzcyNSw2IEBAIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4oCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0
ID0gMDsKLSAgICBKU1ZhbHVlIGxhcmdlSW50ZWdlclZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlciIpKTsKLSAgICBDb252ZXJ0ZXI8aW50NjRfdD46Ok9w
dGlvbmFsVmFsdWUgbGFyZ2VJbnRlZ2VyOwotICAgIGlmICghbGFyZ2VJbnRlZ2VyVmFsdWUuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICBsYXJnZUludGVnZXIgPSBjb252ZXJ0PGludDY0X3Q+KHN0
YXRlLCBsYXJnZUludGVnZXJWYWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Ci0gICAgfQotICAgIEpTVmFsdWUg
bGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRl
ZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJsYXJnZUludGVnZXJXaXRoRGVmYXVsdCIpKTsKLSAgICBpbnQ2NF90IGxhcmdlSW50ZWdl
cldpdGhEZWZhdWx0OwotICAgIGlmICghbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydDxp
bnQ2NF90PihzdGF0ZSwgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKICAgICBK
U1ZhbHVlIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpz
VW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAidW5zaWduZWRMYXJnZUludGVnZXIiKSk7CiAgICAgQ29udmVydGVyPHVpbnQ2NF90
Pjo6T3B0aW9uYWxWYWx1ZSB1bnNpZ25lZExhcmdlSW50ZWdlcjsKICAgICBpZiAoIXVuc2lnbmVk
TGFyZ2VJbnRlZ2VyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtNzExLDMzICs3MzgsNiBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIE51bGxvcHQpOwogICAgIH0gZWxzZQogICAgICAgICB1bnNpZ25lZExhcmdlSW50ZWdl
cldpdGhEZWZhdWx0ID0gMDsKLSAgICBKU1ZhbHVlIG51bGxhYmxlTm9kZVZhbHVlID0gaXNOdWxs
T3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm51bGxhYmxlTm9kZSIpKTsKLSAgICBOb2RlKiBudWxs
YWJsZU5vZGU7Ci0gICAgaWYgKCFudWxsYWJsZU5vZGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIG51bGxhYmxlTm9kZSA9IGNvbnZlcnRXcmFwcGVyVHlwZTxOb2RlLCBKU05vZGU+KHN0
YXRlLCBudWxsYWJsZU5vZGVWYWx1ZSwgSXNOdWxsYWJsZTo6WWVzKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAgICB9IGVsc2UKLSAgICAgICAg
bnVsbGFibGVOb2RlID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIGFueVZhbHVlVmFsdWUgPSBpc051
bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYW55VmFsdWUiKSk7Ci0gICAgSlNDOjpKU1ZhbHVl
IGFueVZhbHVlOwotICAgIGlmICghYW55VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgIGFueVZhbHVlID0gY29udmVydDxKU0M6OkpTVmFsdWU+KHN0YXRlLCBhbnlWYWx1ZVZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgYW55VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwotICAgIEpTVmFsdWUg
YW55VHlwZWRlZlZhbHVlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkg
OiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYW55
VHlwZWRlZlZhbHVlIikpOwotICAgIEpTQzo6SlNWYWx1ZSBhbnlUeXBlZGVmVmFsdWU7Ci0gICAg
aWYgKCFhbnlUeXBlZGVmVmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGFueVR5
cGVkZWZWYWx1ZSA9IGNvbnZlcnQ8SlNDOjpKU1ZhbHVlPihzdGF0ZSwgYW55VHlwZWRlZlZhbHVl
VmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQp
OwotICAgIH0gZWxzZQotICAgICAgICBhbnlUeXBlZGVmVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwot
ICAgIEpTVmFsdWUgZGljdGlvbmFyeU1lbWJlclZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBq
c1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImRpY3Rpb25hcnlNZW1iZXIiKSk7Ci0gICAgQ29udmVydGVyPFRlc3RPYmo6OkRp
Y3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPjo6T3B0aW9uYWxWYWx1ZSBkaWN0aW9uYXJ5
TWVtYmVyOwotICAgIGlmICghZGljdGlvbmFyeU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgZGljdGlvbmFyeU1lbWJlciA9IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRp
Y3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPihzdGF0ZSwgZGljdGlvbmFyeU1lbWJlclZh
bHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsK
LSAgICB9CiAgICAgcmV0dXJuIFRlc3RPYmo6OkRpY3Rpb25hcnkgeyBXVEZNb3ZlKGVudW1lcmF0
aW9uVmFsdWVXaXRob3V0RGVmYXVsdCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZh
dWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdU
Rk1vdmUoc3RyaW5nV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwg
V1RGTW92ZShib29sZWFuV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVs
dCksIFdURk1vdmUoc2VxdWVuY2VPZlN0cmluZ3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUp
LCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdp
dGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1v
dmUocmVzdHJpY3RlZEZsb2F0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUo
cmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0
aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsSW50ZWdlckNsYW1wZWQpLCBXVEZNb3ZlKHNtYWxsSW50
ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZShzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFu
Z2UpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGlu
dGVnZXIpLCBXVEZNb3ZlKGludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRJbnRl
Z2VyKSwgV1RGTW92ZSh1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUobGFyZ2VJ
bnRlZ2VyKSwgV1RGTW92ZShsYXJnZUludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWdu
ZWRMYXJnZUludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQp
LCBXVEZNb3ZlKG51bGxhYmxlTm9kZSksIFdURk1vdmUoYW55VmFsdWUpLCBXVEZNb3ZlKGFueVR5
cGVkZWZWYWx1ZSksIGRpY3Rpb25hcnlNZW1iZXIudmFsdWUoKSB9OwogfQogCkBAIC03NTUsMTUg
Kzc1NSw2IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91
bGROb3RUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uCiAgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KLSAg
ICBKU1ZhbHVlIHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlID0gaXNOdWxsT3JVbmRlZmlu
ZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZSwgInJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZSIpKTsKLSAgICBUZXN0T2Jq
OjpFbnVtVHlwZSByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWU7Ci0gICAgaWYgKCFyZXF1aXJlZEVu
dW1lcmF0aW9uVmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlcXVpcmVkRW51
bWVyYXRpb25WYWx1ZSA9IGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+KHN0YXRlLCByZXF1aXJl
ZEVudW1lcmF0aW9uVmFsdWVWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgTnVsbG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgfQogICAg
IEpTVmFsdWUgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/
IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnN0YXRlLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0IikpOwogICAgIENvbnZlcnRlcjxib29s
Pjo6T3B0aW9uYWxWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHQ7CiAgICAgaWYgKCFib29sZWFu
V2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC03ODgsNiArNzc5LDE1IEBA
IHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xl
cmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uCiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KKyAgICBKU1ZhbHVl
IHJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZSIpKTsKKyAgICBUZXN0T2JqOjpFbnVtVHlw
ZSByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWU7CisgICAgaWYgKCFyZXF1aXJlZEVudW1lcmF0aW9u
VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlcXVpcmVkRW51bWVyYXRpb25W
YWx1ZSA9IGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+KHN0YXRlLCByZXF1aXJlZEVudW1lcmF0
aW9uVmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0
aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQogICAgIHJldHVybiBU
ZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCB7IFdURk1vdmUocmVx
dWlyZWRFbnVtZXJhdGlvblZhbHVlKSwgV1RGTW92ZShib29sZWFuV2l0aG91dERlZmF1bHQpLCAq
bm9uTnVsbGFibGVOb2RlLCByZXF1aXJlZERpY3Rpb25hcnlNZW1iZXIudmFsdWUoKSB9OwogfQog
CkBAIC04MDUsMTggKzgwNSwxOCBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rp
b25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPiBjb252ZXJ0RGljdGlvbmFyeQogICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9w
dDsKICAgICB9Ci0gICAgSlNWYWx1ZSBlbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBpc051bGxPclVu
ZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAiZW51bWVyYXRpb25WYWx1ZSIpKTsKLSAgICBDb252ZXJ0ZXI8
VGVzdE9iajo6RW51bVR5cGU+OjpPcHRpb25hbFZhbHVlIGVudW1lcmF0aW9uVmFsdWU7Ci0gICAg
aWYgKCFlbnVtZXJhdGlvblZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBlbnVt
ZXJhdGlvblZhbHVlID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIGVudW1lcmF0
aW9uVmFsdWVWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
TnVsbG9wdCk7Ci0gICAgfQogICAgIEpTVmFsdWUgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0Iikp
OwogICAgIENvbnZlcnRlcjxib29sPjo6T3B0aW9uYWxWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1
bHQ7CiAgICAgaWYgKCFib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CiAgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdCA9IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIGJv
b2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBOdWxsb3B0KTsKICAgICB9CisgICAgSlNWYWx1ZSBlbnVtZXJhdGlvblZhbHVl
VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZW51bWVyYXRpb25WYWx1ZSIp
KTsKKyAgICBDb252ZXJ0ZXI8VGVzdE9iajo6RW51bVR5cGU+OjpPcHRpb25hbFZhbHVlIGVudW1l
cmF0aW9uVmFsdWU7CisgICAgaWYgKCFlbnVtZXJhdGlvblZhbHVlVmFsdWUuaXNVbmRlZmluZWQo
KSkgeworICAgICAgICBlbnVtZXJhdGlvblZhbHVlID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlw
ZT4oc3RhdGUsIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgfQogICAgIHJldHVybiBUZXN0T2JqOjpE
aWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbCB7IFdURk1vdmUoZW51bWVyYXRpb25WYWx1
ZSksIFdURk1vdmUoYm9vbGVhbldpdGhvdXREZWZhdWx0KSB9OwogfQogCkBAIC04MzQsMTkgKzgz
NCw4OSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPiBjb252
ZXJ0RGljdGlvbmFyeTxBbHRlcm5hdGVEaWN0aW9uYQogICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CisgICAg
SlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8g
anNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7CisgICAgQ29udmVydGVyPGJvb2w+
OjpPcHRpb25hbFZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKKyAgICBpZiAoIWJvb2xlYW5X
aXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgYm9vbGVhbldpdGhv
dXREZWZhdWx0ID0gY29udmVydDxib29sPihzdGF0ZSwgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFs
dWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOwor
ICAgIH0KICAgICBKU1ZhbHVlIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlIikpOwogICAgIENvbnZlcnRlcjxUZXN0
T2JqOjpFbnVtVHlwZT46Ok9wdGlvbmFsVmFsdWUgZW51bWVyYXRpb25WYWx1ZTsKICAgICBpZiAo
IWVudW1lcmF0aW9uVmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGVudW1lcmF0
aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgZW51bWVyYXRpb25W
YWx1ZVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKICAgICB9Ci0gICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlz
TnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7Ci0g
ICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsK
LSAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0ID0gY29udmVydDxib29sPihzdGF0ZSwgYm9vbGVh
bldpdGhvdXREZWZhdWx0VmFsdWUpOworICAgIHJldHVybiBBbHRlcm5hdGVEaWN0aW9uYXJ5TmFt
ZSB7IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZSksIFdURk1vdmUoYm9vbGVhbldpdGhvdXREZWZh
dWx0KSB9OworfQorCit0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlBhcmVudERpY3Rpb25h
cnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnk+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlz
TnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBv
YmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgp
ID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIH0KKyAgICBKU1ZhbHVl
IHBhcmVudE1lbWJlcjFWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwYXJl
bnRNZW1iZXIxIikpOworICAgIENvbnZlcnRlcjxib29sPjo6T3B0aW9uYWxWYWx1ZSBwYXJlbnRN
ZW1iZXIxOworICAgIGlmICghcGFyZW50TWVtYmVyMVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgcGFyZW50TWVtYmVyMSA9IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIHBhcmVudE1lbWJlcjFW
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7
CiAgICAgfQotICAgIHJldHVybiBBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZSB7IFdURk1vdmUoZW51
bWVyYXRpb25WYWx1ZSksIFdURk1vdmUoYm9vbGVhbldpdGhvdXREZWZhdWx0KSB9OworICAgIEpT
VmFsdWUgcGFyZW50TWVtYmVyMlZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
InBhcmVudE1lbWJlcjIiKSk7CisgICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIHBh
cmVudE1lbWJlcjI7CisgICAgaWYgKCFwYXJlbnRNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICBwYXJlbnRNZW1iZXIyID0gY29udmVydDxib29sPihzdGF0ZSwgcGFyZW50TWVt
YmVyMlZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKKyAgICB9CisgICAgcmV0dXJuIFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnkgeyBXVEZN
b3ZlKHBhcmVudE1lbWJlcjIpLCBXVEZNb3ZlKHBhcmVudE1lbWJlcjEpIH07Cit9CisKK3RlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVm
aW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlz
TnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIH0KKyAgICBp
ZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUp
KSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgIH0KKyAgICBKU1ZhbHVlIHBhcmVudE1lbWJlcjFWYWx1ZSA9
IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwYXJlbnRNZW1iZXIxIikpOworICAgIENv
bnZlcnRlcjxib29sPjo6T3B0aW9uYWxWYWx1ZSBwYXJlbnRNZW1iZXIxOworICAgIGlmICghcGFy
ZW50TWVtYmVyMVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcGFyZW50TWVtYmVyMSA9
IGNvbnZlcnQ8Ym9vbD4oc3RhdGUsIHBhcmVudE1lbWJlcjFWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgfQorICAgIEpTVmFsdWUg
cGFyZW50TWVtYmVyMlZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDog
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInBhcmVu
dE1lbWJlcjIiKSk7CisgICAgQ29udmVydGVyPGJvb2w+OjpPcHRpb25hbFZhbHVlIHBhcmVudE1l
bWJlcjI7CisgICAgaWYgKCFwYXJlbnRNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBwYXJlbnRNZW1iZXIyID0gY29udmVydDxib29sPihzdGF0ZSwgcGFyZW50TWVtYmVyMlZh
bHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsK
KyAgICB9CisgICAgSlNWYWx1ZSBjaGlsZE1lbWJlcjFWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVk
ID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJjaGlsZE1lbWJlcjEiKSk7CisgICAgQ29udmVydGVyPGJvb2w+OjpPcHRp
b25hbFZhbHVlIGNoaWxkTWVtYmVyMTsKKyAgICBpZiAoIWNoaWxkTWVtYmVyMVZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgY2hpbGRNZW1iZXIxID0gY29udmVydDxib29sPihzdGF0ZSwg
Y2hpbGRNZW1iZXIxVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIE51bGxvcHQpOworICAgIH0KKyAgICBKU1ZhbHVlIGNoaWxkTWVtYmVyMlZhbHVlID0gaXNO
dWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNoaWxkTWVtYmVyMiIpKTsKKyAgICBDb252ZXJ0
ZXI8Ym9vbD46Ok9wdGlvbmFsVmFsdWUgY2hpbGRNZW1iZXIyOworICAgIGlmICghY2hpbGRNZW1i
ZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBjaGlsZE1lbWJlcjIgPSBjb252ZXJ0
PGJvb2w+KHN0YXRlLCBjaGlsZE1lbWJlcjJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgfQorICAgIHJldHVybiBUZXN0T2JqOjpD
aGlsZERpY3Rpb25hcnkgeyBXVEZNb3ZlKHBhcmVudE1lbWJlcjIpLCBXVEZNb3ZlKHBhcmVudE1l
bWJlcjEpLCBXVEZNb3ZlKGNoaWxkTWVtYmVyMiksIFdURk1vdmUoY2hpbGRNZW1iZXIxKSB9Owog
fQogCiAvLyBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAppbmRleCBjZjRiYjg4MDBkNDU0ZTZhYTM4MTgxNWMzOTdjNzE1OGVh
YzFhMGI3Li43NTEzM2QwM2Q0ZGFjNWRmN2M4ZmI3MjI4NjFjZjQ0ZGVkYzk0MDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC00
NzQsMyArNDc0LDE0IEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJh
dGVOdWxsIHsKICAgICBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZTsKICAgICBib29sZWFu
IGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKIH07CisKK2RpY3Rpb25hcnkgUGFyZW50RGljdGlvbmFy
eSB7CisgICAgYm9vbGVhbiBwYXJlbnRNZW1iZXIyOworICAgIGJvb2xlYW4gcGFyZW50TWVtYmVy
MTsKK307CisKK2RpY3Rpb25hcnkgQ2hpbGREaWN0aW9uYXJ5IDogUGFyZW50RGljdGlvbmFyeSB7
CisgICAgYm9vbGVhbiBjaGlsZE1lbWJlcjI7CisgICAgYm9vbGVhbiBjaGlsZE1lbWJlcjE7Cit9
OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCAwZTQxY2RiZWUyMWJlNDc2ZDgx
NzY1OGU0MDA3Nzc2ZjBlMDRmMGNjLi42YjE1YWRkNzk5YmZjNzExNDM0ZDE5NzU3MzQzMDA1MmJh
MjUyMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTQyLDggKzQyLDcgQEAg
ZGljdGlvbmFyeSBFdmVudExpc3RlbmVyT3B0aW9ucyB7CiAgICAgYm9vbGVhbiBjYXB0dXJlID0g
ZmFsc2U7CiB9OwogCi1kaWN0aW9uYXJ5IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIHsKLSAgICBi
b29sZWFuIGNhcHR1cmUgPSBmYWxzZTsKK2RpY3Rpb25hcnkgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMgOiBFdmVudExpc3RlbmVyT3B0aW9ucyB7CiAgICAgYm9vbGVhbiBwYXNzaXZlID0gZmFsc2U7
CiAgICAgYm9vbGVhbiBvbmNlID0gZmFsc2U7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>