<?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>218692</bug_id>
          
          <creation_ts>2020-11-07 20:51:58 -0800</creation_ts>
          <short_desc>Implement the imperative slotting API</short_desc>
          <delta_ts>2022-08-13 19:42:12 -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>DOM</component>
          <version>Safari 12</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219261</dependson>
    
    <dependson>220768</dependson>
    
    <dependson>242376</dependson>
    
    <dependson>242379</dependson>
    
    <dependson>243460</dependson>
    
    <dependson>243634</dependson>
    
    <dependson>243635</dependson>
    
    <dependson>243649</dependson>
    
    <dependson>243654</dependson>
    
    <dependson>243655</dependson>
    
    <dependson>243772</dependson>
    
    <dependson>243815</dependson>
    
    <dependson>243817</dependson>
    
    <dependson>243860</dependson>
    
    <dependson>243867</dependson>
    
    <dependson>243869</dependson>
    
    <dependson>243923</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>chi187</cc>
    
    <cc>emilio</cc>
    
    <cc>mike</cc>
    
    <cc>sam</cc>
    
    <cc>tetsuharu.ohzeki</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>westbrook.johnson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1705580</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-07 20:51:58 -0800</bug_when>
    <thetext>See
https://github.com/whatwg/html/pull/5483
https://github.com/whatwg/dom/pull/860</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705587</commentid>
    <comment_count>1</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-11-08 00:32:03 -0800</bug_when>
    <thetext>May I take this?

————

When we start to implement this, should we add an experimental flag for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705591</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-08 10:17:47 -0800</bug_when>
    <thetext>(In reply to Tetsuharu Ohzeki [UTC+9] from comment #1)
&gt; May I take this?
&gt; 
&gt; ————
&gt; 
&gt; When we start to implement this, should we add an experimental flag for this?

You may! Please do!

Yeah, adding an experimental flag to Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml would be a great thing to do for this.

Please let us know if you have any questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705686</commentid>
    <comment_count>3</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2020-11-09 03:37:03 -0800</bug_when>
    <thetext>(If one of you could also do another pass over those PRs against DOM and HTML, perhaps after the latest round of feedback is addressed, that would be terrific. I&apos;m afraid I&apos;m starting to miss the bigger picture due to the long review cycles.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707567</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-14 20:52:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71407958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709919</commentid>
    <comment_count>5</comment_count>
      <attachid>414807</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-11-23 10:34:39 -0800</bug_when>
    <thetext>Created attachment 414807
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794284</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-16 17:47:03 -0700</bug_when>
    <thetext>References:
https://github.com/whatwg/html/pull/6561/files
https://github.com/whatwg/dom/pull/966/files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843721</commentid>
    <comment_count>7</comment_count>
    <who name="Westbrook">westbrook.johnson</who>
    <bug_when>2022-02-18 16:46:42 -0800</bug_when>
    <thetext>With this fully landed in Chrome and Firefox, any word on prioritization for bringing this to WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847387</commentid>
    <comment_count>8</comment_count>
      <attachid>453608</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2022-03-02 07:31:14 -0800</bug_when>
    <thetext>Created attachment 453608
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847746</commentid>
    <comment_count>9</comment_count>
      <attachid>453697</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-03-02 22:10:28 -0800</bug_when>
    <thetext>Created attachment 453697
Alternative WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889627</commentid>
    <comment_count>10</comment_count>
      <attachid>461478</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-08 02:18:48 -0700</bug_when>
    <thetext>Created attachment 461478
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889631</commentid>
    <comment_count>11</comment_count>
      <attachid>461479</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-08 02:42:43 -0700</bug_when>
    <thetext>Created attachment 461479
WIP

The most basic aspect of the feature works with this WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889635</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-08 02:57:22 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #10)
&gt; Created attachment 461478 [details]
&gt; WIP

hm... on my second thought, this approach doesn&apos;t quite work. I was trying to avoid having a dedicated back reference from a Node to its manually assigned slot but I don&apos;t think there is a way around it. When a slot that&apos;s outside &quot;this&quot; shadow tree is assigned of a node that had previously been assigned to another slot in &quot;this&quot; shadow tree, we still need to sever the slot assignment but we won&apos;t be able to find the slot without having some kind of a back reference from the node to its manually assigned slot.

So we probably need a new member in NodeRareData which is about back reference from a Node to its manually assigned slot. It kind of stinks that we have to use NodeRareData for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891051</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-12 18:01:39 -0700</bug_when>
    <thetext>This feature is basically complete. We just need to enable it by default everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891096</commentid>
    <comment_count>14</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2022-08-13 00:31:17 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3290</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891099</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-13 02:13:02 -0700</bug_when>
    <thetext>Committed 253402@main (80742bc96322): &lt;https://commits.webkit.org/253402@main&gt;

Reviewed commits have been landed. Closing PR #3290 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414807</attachid>
            <date>2020-11-23 10:34:39 -0800</date>
            <delta_ts>2020-11-23 10:53:10 -0800</delta_ts>
            <desc>wip</desc>
            <filename>bug-218692-20201124033438.patch</filename>
            <type>text/plain</type>
            <size>28923</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRlMDRkZDFmYTgzMWE5ZGJmOGM0NGU0
OTg4ZWNhMmVlNTFjYTcwY2MuLjBkNWI3YzA3YzgzMGQ0NGY2OGFkMGU3Yzg2YjRiMTdlMDY2ODJj
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMjMgIFRldHN1aGFydSBPaHpla2kgIDx0
ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGltcGVy
YXRpdmUgc2xvdHRpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTg2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbDoKKwogMjAyMC0xMS0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgYW4gRXhwZXJpbWVudGFsIEZlYXR1cmVzIGZvciB3aGVlbCBl
dmVudCBnZXN0dXJlcyBiZWNvbWluZyBub24tYmxvY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjNhYjZi
NGU2YzQ0MWMwNjNlYzUzODRjNmY5MDk0N2JkMWE0NjlkLi4yMDA1NzdlZmNjNzYxNGYyYzRkZGEy
MDg0YjBmM2M3OGM5MTc2Mzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMTEt
MjMgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGltcGVyYXRpdmUgc2xvdHRpbmcgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk5vZGVNZXRob2RC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmlkbDoKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnRNb2RlLmg6CisgICAgICAg
ICogZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGw6CisgICAgICAgICogZG9tL1RleHQuaWRsOgor
ICAgICAgICAgIFdlIGFkZGVkIGBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3RgIGF0dHJpYnV0ZXMg
dG8gYFRleHRgCisgICAgICAgICAgdG8gYXZvaWQgdGhlIGNvbXBpbGUgZXJyb3I6CisgICAgICAg
ICAgYGBgCisgICAgICAgICAgY2Fubm90IGluaXRpYWxpemUgcmV0dXJuIG9iamVjdCBvZiB0eXBl
ICdXZWJDb3JlOjpKU1RvV3JhcHBlZE92ZXJsb2FkZXI8V2ViQ29yZTo6VGV4dCwgdm9pZD46OlJl
dHVyblR5cGUnCisgICAgICAgICAgKGFrYSAnV2ViQ29yZTo6VGV4dCAqJykgd2l0aCBhbiBydmFs
dWUgb2YgdHlwZSAnV2ViQ29yZTo6Tm9kZSAqJworICAgICAgICAgIGBgYAorICAgICAgICAqIGZl
YXR1cmVzLmpzb246CisgICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzaWduKToKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFNsb3RFbGVtZW50LmlkbDoKKwogMjAyMC0xMS0yMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IENvbnZlcnQgc29tZSByZW1haW5pbmcgSW5saW5lQm94IGFjY2VzcyB0byB1c2UgaW5saW5lIGl0
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGYwYWY0NzA1ZDI5MDUyNzlm
YzI5ZmU4YjRlMGJiNmQ2OWE4ZDI0YjkuLmE3NDIyOTA3ZWQzNzhhMmM1MmI1ZWQ0ZWI5Yjk2OWU5
MDIyYWEyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0zNTgsNiArMzU4LDE5
IEBAIEltYWdlQml0bWFwRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTKSIgOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogCisjIFRPRE86IERpc2FibGUgYmVm
b3JlIGxhbmRpbmcgdGhpcy4KK0ltcGVyYXRpdmVTbG90QVBJRW5hYmxlZDoKKyAgdHlwZTogYm9v
bAorICBodW1hblJlYWRhYmxlTmFtZTogIkltcGVyYXRpdmUgU2xvdCBBUEkiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkltcGVyYXRpdmUgU2hhZG93IERPTSBEaXN0cmlidXRpb24gQVBJ
IgorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogdHJ1
ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJDb3JlOgorICAgICAg
ZGVmYXVsdDogdHJ1ZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0
TGVnYWN5LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHku
CiBJblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNjgzYmU1M2YzNjM4MmFjYWVlYjk4NGE4NGNkNjBmZDI3Mjg3NDQ2Yy4uNjIz
YWJjYTI4NzhmYmZiYTkzODMxYTNjOTk4Yjk0NzFiY2Y2MjNkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAg
IGRvbS9TaGFkb3dSb290LmlkbAogICAgIGRvbS9TaGFkb3dSb290TW9kZS5pZGwKICAgICBkb20v
U2xvdGFibGUuaWRsCisgICAgZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwKICAgICBkb20vU3Rh
dGljUmFuZ2UuaWRsCiAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmlkbAogICAgIGRvbS9UZXh0Lmlk
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggNDE2Zjk3ZTY0M2U4NTk1NjQzMTA0ZTI1ODhiODliZTJkNzZiMmZlZi4uYWZjZGI3NTI0MjRj
YWJmYzAwNWY1NDM2MGE4OTI3ZjgxMDI1MzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC04MDYsNiArODA2LDcgQEAgJChQUk9KRUNU
X0RJUikvZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJ
UikvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9k
b20vU2hhZG93Um9vdC5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TaGFkb3dSb290TW9kZS5pZGwK
KyQoUFJPSkVDVF9ESVIpL2RvbS9TbG90QXNzaWdubWVudE1vZGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9kb20vU2xvdGFibGUuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vU3RhdGljUmFuZ2UuaWRsCiAk
KFBST0pFQ1RfRElSKS9kb20vU3RyaW5nQ2FsbGJhY2suaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDI1MDU1ZTViMjBmMzA3N2I4
MzljZjcyODYwZjgzOTJhOTY0NGZjNGMuLmEyZTVhMDdiMzkxZWVlMmVlZTNiYzI2ZTI5ZDI1NWFm
ZjlmOTcxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CkBAIC0yMTM5LDYgKzIxMzksOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYWRvd1Jvb3RNb2RlLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFkb3dSb290TW9kZS5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlRGF0YS5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2hhcmVEYXRhLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2xvdEFzc2ln
bm1lbnRNb2RlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNTbG90QXNzaWdubWVudE1vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNTbG90YWJsZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTU2xvdGFibGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTb3VyY2VCdWZmZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiOTFmMzRmNTNlMmY0YTZiNWM3ZTNiNjhiMDZiNTUxOTI4ZGFmNDgx
Li40ZGZlOTY2ZWI0MTc1ZTY2YzhiY2NlZTg1NmRjN2I5Y2VlNWZkZWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc2MSw2ICs3NjEsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0g
XAogICAgICQoV2ViQ29yZSkvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9TaGFkb3dSb290LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20v
U2hhZG93Um9vdE1vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9TbG90QXNzaWdubWVudE1v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9TbG90YWJsZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL1N0YXRpY1JhbmdlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vU3RyaW5nQ2FsbGJh
Y2suaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM3ODlhYTM4Mzk0MGQyNTc0MTI0YmMyZmY0
M2U3ZWVjNGFlOTUwZDUuLjViM2ExYmUxNDMyNjM0OTQwZmZlMjk2YjdkM2I5YjUxNzJhN2E2Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDk0LDYgKzQ5NCw3IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vU2hhZG93Um9vdE1vZGUuaAogICAgIGRvbS9T
aW1wbGVSYW5nZS5oCiAgICAgZG9tL1NpbXVsYXRlZENsaWNrT3B0aW9ucy5oCisgICAgZG9tL1Ns
b3RBc3NpZ25tZW50TW9kZS5oCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuaAogICAgIGRvbS9T
dGF0aWNSYW5nZS5oCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkxZDc0Yzc0NTIyNTk3
OTA2NzkxYWQxZThhMjEyODNkNTRjNjExNjguLmE1ODJjMzZmOGU5M2ZlZWQ0ZjI0OTk3ZmE1YWFl
MWNiYWY0OTdhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTY1LDYgKzY1LDcgQEAKIAkJMDFEM0NGODMxNEJEMEEzMDAwRkU5
OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RDE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0
R3JvdXAuaCAqLzsgfTsKIAkJMDFEM0NGODUxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5oICovOyB9Owog
CQkwMUQzQ0Y4NzE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAxRDNDRjgxMTRCRDBBMzAw
MEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9iamVjdC5oICovOyB9OworCQkwNTA1N0ZGMTI1NkJGNUM1
MDBDNDU1MzAgLyogU2xvdEFzc2lnbm1lbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTA1N0ZFRTI1NkJGNTY1MDBDNDU1MzAgLyogU2xvdEFz
c2lnbm1lbnRNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTYwMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDVGRDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRp
bWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDVGRDY5REYxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA2MDI3Q0FEMEIxQ0JGQzAwMDg4
NEIyRCAvKiBDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA2MDI3Q0FDMEIxQ0JGQzAwMDg4NEIyRCAvKiBDb250ZXh0TWVudUl0
ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTU3OCw2ICs1NTc5LDggQEAKIAkJMDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29u
dGV4dE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbnRl
eHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDFEM0NGODAxNEJEMEEz
MDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdMU2hhcmVkT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDFEM0NGODExNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMU2hhcmVkT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA1MDU3RkVFMjU2QkY1NjUwMEM0NTUzMCAv
KiBTbG90QXNzaWdubWVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2xvdEFzc2lnbm1lbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA1MDU3
RkYwMjU2QkY1NjUwMEM0NTUzMCAvKiBTbG90QXNzaWdubWVudE1vZGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNsb3RBc3NpZ25tZW50TW9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTGF5ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDVGRDY5REYxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVT
dGFtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UaW1lU3RhbXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8q
IENvbnRleHRNZW51SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAyMiw3ICsx
ODAyNSw2IEBACiAJCQkJQTFDQzU2NEExRjQ2MTNCQjAwQTQ1NTVCIC8qIFBheW1lbnRSZXF1ZXN0
ICovLAogCQkJCTFEMDAyNjlBMjM3NEI5RjgwMENBNkNERiAvKiBQaWN0dXJlSW5QaWN0dXJlICov
LAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVnaW5zICovLAotCQkJCTg5RjYw
QjE3MTU3RjZBMDIwMDc1RTE1NyAvKiBRdW90YSAqLywKIAkJCQlCQzk4NTQ0NjBDRDNEQTVGMDAw
NjlCQzEgLyogUmFuZ2VzICovLAogCQkJCUNEOEM2QzI0MjJGRERBNjQwMEE3MjBBQiAvKiBSZW1v
dGVQbGF5YmFjayAqLywKIAkJCQk1MTgyQzI0QzFGMzE0MjA5MDA1OUJBN0MgLyogU2VydmljZVdv
cmtlcnMgKi8sCkBAIC0zMDE3MSw2ICszMDE3Myw4IEBACiAJCQkJOTMxNkRERkEyNDBDNjRCMzAw
OTM0MEFBIC8qIFNpbXBsZVJhbmdlLmNwcCAqLywKIAkJCQk5MzE2RERGODI0MEM2NEIzMDA5MzQw
QUEgLyogU2ltcGxlUmFuZ2UuaCAqLywKIAkJCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovLAorCQkJCTA1MDU3RkVFMjU2QkY1NjUwMEM0NTUzMCAvKiBT
bG90QXNzaWdubWVudE1vZGUuaCAqLywKKwkJCQkwNTA1N0ZGMDI1NkJGNTY1MDBDNDU1MzAgLyog
U2xvdEFzc2lnbm1lbnRNb2RlLmlkbCAqLywKIAkJCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCAqLywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0UgLyog
U2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi8sCiAJCQkJODM1RjhCMjYxRDJEOTBCQTAwRTQwOEVD
IC8qIFNsb3RhYmxlLmlkbCAqLywKQEAgLTMwOTQ5LDYgKzMwOTUzLDcgQEAKIAkJCQk3QzY1NzlF
MDFFMDA3OUY5MDBFM0EyN0EgLyogQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFERjVBN0YxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBQUQxRjgwNzVGMDAwNThBNDc3IC8qIEFwcGxlUGF5UmVx
dWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA1MDU3RkYxMjU2QkY1QzUwMEM0NTUzMCAv
KiBTbG90QXNzaWdubWVudE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEE2NDU5MUQxOUZD
RkMwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2
RjIwMjMzMUE4QzcwMDU3RTlEMiAvKiBBcHBsZVBheVNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1OEU4NjUxRDE5RDRFQjAwQzBFQTczIC8qIEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjg4MTE1MDE2ZWY4Njli
ODZjODNjYTcxODgyZWI4ZDM4MDA2OWMzNi4uZDJiNjdlYjUwN2RhOTI0YTRjM2I0NzUwM2M4NzU2
MTc1MmU0ZjA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJKU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkpTVGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgorI2luY2x1ZGUgIkpTVGV4dC5o
IgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgogI2luY2x1ZGUgIkpTWFBhdGhOU1Jlc29sdmVyLmgiCkBAIC0xNTcyLDYgKzE1NzMsNyBAQCBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl92YXJpYWRpY1N0cmluZ01ldGhvZAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNEb3VibGVNZXRob2QpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFy
aWFkaWNOb2RlTWV0aG9kKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljVW5pb25NZXRob2QpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNV
bmlvbk5vZGVNZXRob2QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fYW55KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb24pOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
dGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KTsKQEAgLTIzMDUsNiArMjMwNyw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KICAgICB7ICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fdmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAg
eyAidmFyaWFkaWNOb2RlTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRp
Y05vZGVNZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidmFyaWFkaWNVbmlvbk1l
dGhvZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk1ldGhvZCksIChp
bnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJ2YXJpYWRpY1VuaW9uTm9kZU1ldGhvZCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk5vZGVNZXRob2QpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAiYW55Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9hbnkpLCAo
aW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdGVzdFByb21pc2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0g
fSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCks
IChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTg4NjEsNiArODg2NCwyNSBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk1ldGhv
ZCwgKEpTR2xvYgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRpY1VuaW9uTWV0aG9kQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ2YXJpYWRpY1VuaW9uTWV0aG9kIik7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl92YXJpYWRpY1VuaW9uTm9kZU1ldGhvZEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbm9kZXMgPSBjb252ZXJ0VmFyaWFkaWNBcmd1
bWVudHM8SURMVW5pb248SURMSW50ZXJmYWNlPE5vZGU+LCBJRExJbnRlcmZhY2U8VGV4dD4+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgMCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKKyAgICBpbXBsLnZhcmlhZGljVW5pb25Ob2RlTWV0aG9kKFdURk1vdmUobm9kZXMpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlv
bk5vZGVNZXRob2QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRpY1VuaW9uTm9kZU1ldGhvZEJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidmFyaWFkaWNVbmlvbk5vZGVN
ZXRob2QiKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX2FueUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGRhM2FjYjMxMTRkODhk
YTExZGRmZThlZDM0MGQwODcyNTE4ZjgzZTkuLjBmYjEyYzE1YmYzNWM5NmNkNTk3MTcwNDQ5OGE2
MzYwMzc5N2FlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKQEAgLTM4OSw2ICszODksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsg
ImhpZ2giLCAia2luZGEtbG93IiB9OwogICAgIHVuZGVmaW5lZCB2YXJpYWRpY0RvdWJsZU1ldGhv
ZCh1bnJlc3RyaWN0ZWQgZG91YmxlIGhlYWQsIHVucmVzdHJpY3RlZCBkb3VibGUuLi4gdGFpbCk7
CiAgICAgdW5kZWZpbmVkIHZhcmlhZGljTm9kZU1ldGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFp
bCk7CiAgICAgdW5kZWZpbmVkIHZhcmlhZGljVW5pb25NZXRob2QoRE9NU3RyaW5nIGhlYWQsIChO
b2RlIG9yIERPTVN0cmluZykuLi4gdGFpbCk7CisgICAgdW5kZWZpbmVkIHZhcmlhZGljVW5pb25O
b2RlTWV0aG9kKChOb2RlIG9yIFRleHQpLi4uIG5vZGVzKTsKIAogICAgIC8vIE51bGxhYmxlIGF0
dHJpYnV0ZXMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGU/IG51
bGxhYmxlRG91YmxlQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ2MWM3ZjY5
NTQxMmE1NWIxNjQ2MzBmN2VkY2U5Y2NmM2I1MTg3MWUuLmUwZjQ5NDZiZDhlMmFkNzM2NjJmMjlm
YWFmOTE0ZDlkODMyZGM5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzOTMsNiArMjM5
Myw3IEBAIEV4Y2VwdGlvbk9yPFNoYWRvd1Jvb3QmPiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29u
c3QgU2hhZG93Um9vdEluaXQmIGluaXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciB9OwogICAgIGlmIChpbml0Lm1vZGUgPT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIC8v
IFRPRE86CiAgICAgYXV0byBzaGFkb3cgPSBTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQoKSwg
aW5pdC5tb2RlLCBpbml0LmRlbGVnYXRlc0ZvY3VzID8gU2hhZG93Um9vdDo6RGVsZWdhdGVzRm9j
dXM6OlllcyA6IFNoYWRvd1Jvb3Q6OkRlbGVnYXRlc0ZvY3VzOjpObyk7CiAgICAgYXV0byYgcmVz
dWx0ID0gc2hhZG93LmdldCgpOwogICAgIGFkZFNoYWRvd1Jvb3QoV1RGTW92ZShzaGFkb3cpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IGZjYjdjZWI2MjViOTE0Mzk3OGNmYTc3ZmQzZmU4YTc4Y2Y0
MWQ5ZDMuLmVmZmZhZWNhYTc1M2IxMGYyZGQxNTBhMjc2ZTA5ZGMwZDIwNjA0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdE1vZGUuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlv
bnMuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudE1vZGUuaCIKICNpbmNsdWRlICJTdHlsZUNo
YW5nZS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CkBAIC0zMDAsNiArMzAxLDcgQEAgcHVibGljOgogICAgIHN0cnVj
dCBTaGFkb3dSb290SW5pdCB7CiAgICAgICAgIFNoYWRvd1Jvb3RNb2RlIG1vZGU7CiAgICAgICAg
IGJvb2wgZGVsZWdhdGVzRm9jdXMgeyBmYWxzZSB9OworICAgICAgICBTbG90QXNzaWdubWVudE1v
ZGUgc2xvdEFzc2lnbm1lbnQ7CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxTaGFkb3dSb290Jj4gYXR0YWNoU2hhZG93KGNvbnN0IFNoYWRvd1Jvb3RJbml0Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbAppbmRleCA3ZjRlOTVmNTU0NzQ5YWRhNDNiOTNhOWQzNWIzZjI3YTUy
NmExMDI3Li44OGU4MjliOGUxYWQ2MDQ4NjgxMmE2NzVjZmQzYzdlMjg3YmQxYTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgVGV0c3VoYXJ1IE9oemVraSA8dGV0c3VoYXJ1Lm9oemVraUBn
bWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwMSw2ICsxMDIsOSBAQAogZGljdGlv
bmFyeSBTaGFkb3dSb290SW5pdCB7CiAgICAgcmVxdWlyZWQgU2hhZG93Um9vdE1vZGUgbW9kZTsK
ICAgICBib29sZWFuIGRlbGVnYXRlc0ZvY3VzID0gZmFsc2U7CisKKyAgICAvLyBUT0RPOiBBZGQg
cHJlZgorICAgIFNsb3RBc3NpZ25tZW50TW9kZSBzbG90QXNzaWdubWVudCA9ICJhdXRvIjsKIH07
CiAKIEVsZW1lbnQgaW5jbHVkZXMgQWNjZXNzaWJpbGl0eVJvbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaAppbmRleCA4OTBkNjkwYzZiYTY1Yzg0NTI4YjEyZTg0NDhkYzllZjAzODIxMTllLi5iNmI0
MmUzZmI1OTY2NGZmYTQ4MzIzM2MzYTEwZjQ0OTQ3YmM4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGV0c3VoYXJ1
IE9oemVraSA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiU2hhZG93Um9vdE1vZGUuaCIKKyNpbmNsdWRlICJT
bG90QXNzaWdubWVudE1vZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00OCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3Mg
RGVsZWdhdGVzRm9jdXMgOiB1aW50OF90IHsgWWVzLCBObyB9OwogCisgICAgLy8gVE9ETzoKICAg
ICBzdGF0aWMgUmVmPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRv
d1Jvb3RNb2RlIHR5cGUsIERlbGVnYXRlc0ZvY3VzIGRlbGVnYXRlc0ZvY3VzID0gRGVsZWdhdGVz
Rm9jdXM6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhZG93Um9v
dChkb2N1bWVudCwgdHlwZSwgZGVsZWdhdGVzRm9jdXMpKTsKQEAgLTczLDYgKzc2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q29udGFpbnNGb2N1c2VkRWxlbWVudChib29sIGZsYWcpIHsgbV9j
b250YWluc0ZvY3VzZWRFbGVtZW50ID0gZmxhZzsgfQogCiAgICAgRWxlbWVudCogaG9zdCgpIGNv
bnN0IHsgcmV0dXJuIG1faG9zdC5nZXQoKTsgfQorICAgIFNsb3RBc3NpZ25tZW50TW9kZSBzbG90
QXNzaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2xvdF9hc3NpZ25tZW50X21vZGU7IH0KICAg
ICB2b2lkIHNldEhvc3QoV2Vha1B0cjxFbGVtZW50PiYmIGhvc3QpIHsgbV9ob3N0ID0gV1RGTW92
ZShob3N0KTsgfQogCiAgICAgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0OwpAQCAtMTMyLDYgKzEz
Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RlbGVnYXRlc0ZvY3VzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fY29udGFpbnNGb2N1c2VkRWxlbWVudCB7IGZhbHNlIH07CiAgICAgU2hhZG93Um9v
dE1vZGUgbV90eXBlIHsgU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9OworICAgIFNsb3RBc3Np
Z25tZW50TW9kZSBtX3Nsb3RfYXNzaWdubWVudF9tb2RlOwogCiAgICAgV2Vha1B0cjxFbGVtZW50
PiBtX2hvc3Q7CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRMaXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmluZGV4IGMzODRlNDg4MzIyMTNlMzZkYmI5MTI4Nzkz
YWEyYWNkOTJkNjg3YzAuLmIyNzEwODI2OTA3YTBmNmQwNDdkZWExY2JlYzQyZWQ2MDI4OTQ2MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKQEAgLTEsNSArMSw2IEBACiAvKgogKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmln
aHQgKEMpIDIwMjAgVGV0c3VoYXJ1IE9oemVraSA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+
CiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI5LDkgQEAKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU2hhZG93Um9vdCA6IERvY3VtZW50RnJhZ21lbnQgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTaGFkb3dSb290TW9kZSBtb2RlOworICAgIC8vIFRPRE86
IHByZWYKKyAgICAvLyBUT0RPOiBhZGQgU2xvdEFzc2lnbm1lbnRNb2RlIGZpbGUuCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNsb3RBc3NpZ25tZW50TW9kZSBzbG90QXNzaWdubWVudDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBob3N0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRs
ZXIgb25zbG90Y2hhbmdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudE1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudE1vZGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMzVkZGFmNzhmY2ZlNmQ1MmZiNzkyYjNiMWNmODRiZmZhNjcwZTIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5o
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGV0c3VoYXJ1IE9o
emVraSA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gY2xhc3MgU2xvdEFzc2lnbm1lbnRNb2RlIDogdWludDhfdCB7CisgICAgTWFudWFs
LAorICAgIEF1dG8sCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnRNb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudE1v
ZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiMmE1ZjczZmQzMGViMzY3OTM3OTcwMTM3YzgxMzg1MzcxNWUy
ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnRN
b2RlLmlkbApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFRldHN1
aGFydSBPaHpla2kgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIFNsb3RBc3NpZ25tZW50TW9kZSB7Cisg
ICAgIm1hbnVhbCIsCisgICAgImF1dG8iCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaWRsCmluZGV4IDMyZjFmYjc1
ZDJhMzY5MjBkYzg2NTQ4NWMyODBmNTRiNTUxNjE1MjMuLjM1MWYxZjdkNjgwMGQ2MGQyNzEyZDhk
NWMwYWU0OTdjMDE3NTAzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMCBUZXRzdWhhcnUgT2h6ZWtpIDx0ZXRzdWhhcnUub2h6ZWtpQGdt
YWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksNiArMjAsNyBAQAogCiBbCiAgICAg
Q3VzdG9tVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFRleHQgOiBDaGFyYWN0ZXJEYXRhIHsKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIERPTVN0cmluZyBkYXRhID0gIiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmVhdHVyZXMuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2ZlYXR1cmVzLmpzb24KaW5kZXggNTQ5MzY0NWQ3ODU5ZWMxMGU1NDVkZWY2NDhjNjdkYzkz
Zjk1ZTUzNy4uOTc3NzlkOGM4YzJhNTQ2NGYwNmI4N2NhNzRjYTA4MjY1NGJjYTViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmVhdHVyZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
ZWF0dXJlcy5qc29uCkBAIC00NzQsNiArNDc0LDE2IEBACiAgICAgICAgICJrZXl3b3JkcyI6IFsi
aHRtbCIsICJodG1sNSIsICJodG1sNS4xIl0sCiAgICAgICAgICJjYXRlZ29yeSI6ICJodG1sIgog
ICAgIH0sCisgICAgeworICAgICAgICAibmFtZSI6ICJJbXBlcmF0aXZlIFNsb3QgQVBJIiwKKyAg
ICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICJzdGF0dXMiOiAiSW4gRGV2ZWxvcG1lbnQi
LAorICAgICAgICAgICAgImVuYWJsZWQtYnktZGVmYXVsdCI6IGZhbHNlCisgICAgICAgIH0sCisg
ICAgICAgICJzcGVjaWZpY2F0aW9uIjogIldlYiBDb21wb25lbnRzIiwKKyAgICAgICAgInVybCI6
ICJodHRwczovL2dpdGh1Yi5jb20vV0lDRy93ZWJjb21wb25lbnRzL2Jsb2IvZ2gtcGFnZXMvcHJv
cG9zYWxzL0ltcGVyYXRpdmUtU2hhZG93LURPTS1EaXN0cmlidXRpb24tQVBJLm1kIiwKKyAgICAg
ICAgIndlYmtpdC11cmwiOiAiVE9ETyIKKyAgICB9LAogICAgIHsKICAgICAgICAgIm5hbWUiOiAi
SW5kZXhlZCBEYXRhYmFzZSIsCiAgICAgICAgICJzdGF0dXMiOiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5jcHAKaW5kZXggMWNmNTk4MzgyZDI2ZDcyZGJhYjE0ZGI3MDIwYjQ0
MjBmZjk2NDEwZC4uMDZiY2EzZDFiZDZlMzcxMDk3YWE5NDYzMmJjMzFmNzY2MDBjOGU0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogCisjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE3MSw2ICsxNzMsMTMgQEAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gSFRNTFNsb3RF
bGVtZW50Ojphc3NpZ25lZEVsZW1lbnRzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb24KICAgICBy
ZXR1cm4gZWxlbWVudHM7CiB9CiAKKy8vIFRPRE86IGh0dHBzOi8vd2hhdHByLm9yZy9odG1sLzU0
ODMvc2NyaXB0aW5nLmh0bWwjZG9tLXNsb3QtYXNzaWduCisvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNkb20tc2xvdC1hc3NpZ24KK0V4Y2Vw
dGlvbk9yPHZvaWQ+IGFzc2lnbihWZWN0b3I8VmFyaWFudDxSZWZQdHI8RWxlbWVudD4sIFJlZlB0
cjxUZXh0Pj4+JiYgdmVjdG9yKQoreworICAgIHJldHVybiB7IH07Cit9CisKIHZvaWQgSFRNTFNs
b3RFbGVtZW50OjplbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCkKIHsKICAgICAvLyBodHRwczovL2Rv
bS5zcGVjLndoYXR3Zy5vcmcvI3NpZ25hbC1hLXNsb3QtY2hhbmdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuaAppbmRleCAzNzk5NDNjZGE4MzRmODc3Y2I5OTNlMTg5NjhlMDJjYjk4
M2NiZDk5Li5kM2EzOTRmNmY4ZDJhMjhkNTkwOWRiMjk4ZDgwNmFiNDM2OGUyYWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKQEAgLTI1LDkgKzI1LDEyIEBACiAKICNwcmFn
bWEgb25jZQogCi0KICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxTbG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CkBAIC00Miw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmPE5v
ZGU+PiBhc3NpZ25lZE5vZGVzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJikgY29uc3Q7CiAg
ICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gYXNzaWduZWRFbGVtZW50cyhjb25zdCBBc3NpZ25lZE5v
ZGVzT3B0aW9ucyYpIGNvbnN0OwogCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXNzaWduKFZlY3Rv
cjxWYXJpYW50PFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPFRleHQ+Pj4mJik7CisKICAgICB2b2lk
IGVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyb21TaWduYWxT
bG90TGlzdCgpIHsgbV9pblNpZ25hbFNsb3RMaXN0ID0gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCmluZGV4IDJiZmFiMzg1MDkxN2EwOGRhNjNkMDUwMzJj
YjYyYjBlYzA5ZjkwOTIuLjI4OWI4MzQ1NzQ2MTA0NDcyNjUyMzFmMDc0YmJlYTdjNjhhODUwZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBUZXRzdWhhcnUgT2h6ZWtpIDx0ZXRzdWhhcnUub2h6
ZWtpQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzEsOSBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKICAgICBzZXF1ZW5jZTxOb2RlPiBhc3NpZ25lZE5vZGVzKG9wdGlvbmFs
IEFzc2lnbmVkTm9kZXNPcHRpb25zIG9wdGlvbnMpOwogICAgIHNlcXVlbmNlPEVsZW1lbnQ+IGFz
c2lnbmVkRWxlbWVudHMob3B0aW9uYWwgQXNzaWduZWROb2Rlc09wdGlvbnMgb3B0aW9ucyk7CisK
KyAgICAvLyBUT0RPOiBBZGQgY29uZmlnLgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIGFzc2lnbigoRWxlbWVudCBvciBUZXh0KS4uLiBub2Rlcyk7CiB9OwogCiBkaWN0aW9uYXJ5
IEFzc2lnbmVkTm9kZXNPcHRpb25zIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453608</attachid>
            <date>2022-03-02 07:31:14 -0800</date>
            <delta_ts>2022-03-02 07:31:14 -0800</delta_ts>
            <desc>wip</desc>
            <filename>bug-218692-20220303003112.patch</filename>
            <type>text/plain</type>
            <size>34848</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ3ZjBkMjJlYmQ1MzAxNWI2MDgzNTU1
OWRmMDlhMjA0OWVlNDUyOGQuLmJhZDNkY2NlZGRiNDk1MzIzM2E2ZmNkNjA0NjY3M2E0MDVhOTQ0
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjItMDMtMDIgIFRldHN1aGFydSBPaHpla2kgIDx0
ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGltcGVy
YXRpdmUgc2xvdHRpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTg2OTIKKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKKwogMjAyMi0wMi0yMiAgQXN1bXUgVGFraWthd2Eg
IDxhc3VtdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgV2FzbS9F
U00taW50ZWdyYXRpb24gaW4gdGhlIFdlYkNvcmUgbW9kdWxlIGxvYWRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGJjN2ViOGE0YWE3NmJlZDZjZjFiNjE0ZDM5NTA4OWU5MzlmNTY0ZWYuLmU5MmRkMGI4NjRmMjg4
NmRmZmYzNGQwMTliNzBjZjc5MjNkNmI1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAyMi0wMy0wMiAgVGV0c3VoYXJ1IE9oemVraSAgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCB0aGUgaW1wZXJhdGl2ZSBzbG90dGluZyBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODY5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290Lmg6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaWRsOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290SW5pdC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290SW5pdC5pZGw6CisgICAgICAg
ICogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQu
aDoKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnRNb2RlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmlkbC4KKyAgICAgICAgKiBkb20vU2xvdEFz
c2lnbm1lbnRNb2RlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xv
dEVsZW1lbnQuaWRsLgorICAgICAgICAqIGRvbS9UZXh0LmlkbDoKKyAgICAgICAgKiBmZWF0dXJl
cy5qc29uOgorICAgICAgICAqIGh0bWwvSFRNTFNsb3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBo
dG1sL0hUTUxTbG90RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNsb3RFbGVtZW50Lmlk
bDoKKwogMjAyMi0wMi0yMiAgTWFyY29zIENhY2VyZXMgIDxtYXJjb3NAbWFyY29zYy5jb20+CiAK
ICAgICAgICAgUGVybWlzc2lvbiBBUEk6IGhhbmRsZSBub24tZnVsbHkgYWN0aXZlIGRvY3VtZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCAzNGZkOWVlZTYzYWY4ZTEzMTE3ZDRm
NmZmMjZiMzgxYmY3Zjk5MDNmLi43OGQ5MjQ5MTdlYTVhNDA3NmVkY2M4NTA5ZjM4MTFmZjVmYzYx
Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtNjQ5LDYgKzY0OSwxOSBAQCBJ
bWFnZUJpdG1hcEVuYWJsZWQ6CiAgICAgICAiRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFUyki
IDogdHJ1ZQogICAgICAgZGVmYXVsdDogdHJ1ZQogCisjIFRPRE86IERpc2FibGUgYmVmb3JlIGxh
bmRpbmcgdGhpcy4KK0ltcGVyYXRpdmVTbG90QVBJRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBo
dW1hblJlYWRhYmxlTmFtZTogIkltcGVyYXRpdmUgU2xvdCBBUEkiCisgIGh1bWFuUmVhZGFibGVE
ZXNjcmlwdGlvbjogIkltcGVyYXRpdmUgU2hhZG93IERPTSBEaXN0cmlidXRpb24gQVBJIgorICBk
ZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogdHJ1ZQorICAg
IFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVs
dDogdHJ1ZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0TGVnYWN5
LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBJblBy
b2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMTRkMTAyMTgwMGYyYjAwMDU0ZWRhNTI4NTNhNTBiYWQwNTYzZGFlNS4uYjY1YjI4MWNh
Mzk2N2ZkNDQ2Nzg4YTgzOWVkNjA5MDdhZWQxOTY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTk1Miw2ICs5NTIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9T
aGFkb3dSb290SW5pdC5pZGwKICAgICBkb20vU2hhZG93Um9vdE1vZGUuaWRsCiAgICAgZG9tL1Ns
b3RhYmxlLmlkbAorICAgIGRvbS9TbG90QXNzaWdubWVudE1vZGUuaWRsCiAgICAgZG9tL1N0YXRp
Y1JhbmdlLmlkbAogICAgIGRvbS9TdHJpbmdDYWxsYmFjay5pZGwKICAgICBkb20vVGV4dC5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDZiZTdmNGYwODMxOGFlYThhNWFlMjEzM2IxZTJmYjEzZjRjMTNiYzMuLmFmNzU2NzU5NDM1ZGJi
M2ZlMmY1NDA3MjYyMDAzOWQxNzExOTVmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTEwMyw2ICsxMTAzLDcgQEAgJChQUk9KRUNU
X0RJUikvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElS
KS9kb20vU2hhZG93Um9vdC5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TaGFkb3dSb290SW5pdC5p
ZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TaGFkb3dSb290TW9kZS5pZGwKKyQoUFJPSkVDVF9ESVIp
L2RvbS9TbG90QXNzaWdubWVudE1vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vU2xvdGFibGUu
aWRsCiAkKFBST0pFQ1RfRElSKS9kb20vU3RhdGljUmFuZ2UuaWRsCiAkKFBST0pFQ1RfRElSKS9k
b20vU3RyaW5nQ2FsbGJhY2suaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDZjMjA1ZTcxZGE0Zjk3MTk1YzM3YWJkYTJlOWJkNWFj
MWMzMmRjMDEuLjgwMzZkOWFjYjIxYmQxZGZhYzI1MGY4NWEyNDdkNzBiMTY1MTA0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0y
NDk0LDYgKzI0OTQsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1NoYXJlZFdvcmtlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTU2hhcmVkV29ya2VyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U2xvdEFzc2lnbm1lbnRNb2RlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNTbG90QXNzaWdubWVudE1vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTbG90YWJsZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2xvdGFibGUuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTb3VyY2VCdWZmZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyNjgwMzI3MGQ2N2E3NzQ1NTllY2YyM2Q3NWI2YmIw
NWIwNjkzODg1Li41MmY5OGEwMTNiNmFiNjY1ODJkMGE3YmFiMjNlZTNkZmM1MmY1MjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk1Nyw2ICs5NTcsNyBAQCBKU19CSU5ESU5H
X0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvZG9tL1NoYWRvd1Jvb3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9TaGFkb3dSb290SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1NoYWRv
d1Jvb3RNb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vU2xvdEFzc2lnbm1lbnRNb2RlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9kb20vU2xvdGFibGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9TdGF0aWNSYW5nZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1N0cmluZ0NhbGxiYWNrLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBmMWNlZGI5Yzc1YmNmOTc3N2MwZmM4OWY1Njg5N2Uy
M2M4YTI3YmQwLi4wZWVkN2MyODkzNTVkMzA0Y2RiNjM5MDc3MWFmNDA0NGNlZWU2YzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTcyMiw2ICs3MjIsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgZG9tL1NoYWRvd1Jvb3RNb2RlLmgKICAgICBkb20vU2ltcGxl
UmFuZ2UuaAogICAgIGRvbS9TaW11bGF0ZWRDbGlja09wdGlvbnMuaAorICAgIGRvbS9TbG90QXNz
aWdubWVudE1vZGUuaAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmgKICAgICBkb20vU3RhdGlj
UmFuZ2UuaAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggY2FjNGRk
ZWNhZGYyNDE1OGZmMTQ5YTQwMTlkYWVlMjllZjY3NTE3My4uNDJhZjEzZTA5YmYzMWUyMWQwN2Q2
YjNhNTY0ZmM3ZGVjNTAxY2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4ODcsNiArMzg4Nyw3IEBA
IEpTU2hhZG93Um9vdE1vZGUuY3BwCiBKU1NoYXJlRGF0YS5jcHAKIEpTU2hhcmVkV29ya2VyLmNw
cAogSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKK0pTU2xvdEFzc2lnbm1lbnRNb2RlLmNw
cAogSlNTbG90YWJsZS5jcHAKIEpTU291cmNlQnVmZmVyLmNwcAogSlNTb3VyY2VCdWZmZXJMaXN0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc4ZmNiYjA3N2I3NTEyNjkzNjZiMjRmYzc1ZmE0ZTE4OWQxNDc2MWQuLmY3YWRh
M2I5N2JiMDFjNDViNDZiZjdkMmQ1MDcwODhjZjQxNWIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3LDYgKzY3LDcgQEAK
IAkJMDFEM0NGODMxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RDE0QkQwQTMw
MDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCAqLzsgfTsKIAkJMDFEM0NGODUxNEJEMEEz
MDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdM
Q29udGV4dE9iamVjdC5oICovOyB9OwogCQkwMUQzQ0Y4NzE0QkQwQTMwMDBGRTk5NzAgLyogV2Vi
R0xTaGFyZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDAxRDNDRjgxMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9iamVjdC5oICov
OyB9OworCQkwNTIzRTA4QzI1QURDMEEwMDA1NjNDOTYgLyogU2xvdEFzc2lnbm1lbnRNb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTIzRTA4QjI1
QURDMEEwMDA1NjNDOTYgLyogU2xvdEFzc2lnbm1lbnRNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2
IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDU2QTdBQzgy
NTZDNEY0ODAwMkY5RERDIC8qIFNoYWRvd1Jvb3RJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTRFM0EzMzI1NkMzQkQ5MDA3MkM1QjkgLyogU2hh
ZG93Um9vdEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNUZENjlFMDEyODQ1RDQzMDBCMkJFQjMgLyogRXBvY2hUaW1lU3RhbXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1RkQ2OURGMTI4NDVE
NDMwMEIyQkVCMyAvKiBFcG9jaFRpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OTIwLDYgKzU5MjEsOCBAQAogCQkwMUQzQ0Y3RjE0
QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwMUQzQ0Y4MDE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xTaGFyZWRPYmpl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMUQzQ0Y4MTE0QkQwQTMwMDBG
RTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR0xTaGFyZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDUyM0UwOEIyNUFEQzBBMDAwNTYzQzk2IC8qIFNsb3RBc3NpZ25tZW50TW9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbG90QXNzaWdubWVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDUyM0UwOUMyNUFEQzEwQjAwNTYzQzk2IC8qIFNsb3RBc3NpZ25tZW50TW9kZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU2xvdEFzc2lnbm1lbnRNb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDU0RTNBMzMyNTZDM0JEOTAwNzJDNUI5IC8qIFNoYWRvd1Jvb3RJbml0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYWRvd1Jvb3RJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NEUz
QTM1MjU2QzNCRDkwMDcyQzVCOSAvKiBTaGFkb3dSb290SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9v
dEluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk2MDE1NzNGODhG
MDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjc1
Niw2ICszMjc1OSw4IEBACiAJCQkJODM1RjhCMjYxRDJEOTBCQTAwRTQwOEVDIC8qIFNsb3RhYmxl
LmlkbCAqLywKIAkJCQk5QjUzMkVBMTFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQu
Y3BwICovLAogCQkJCTlCNTMyRUEyMUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5o
ICovLAorCQkJCTA1MjNFMDhCMjVBREMwQTAwMDU2M0M5NiAvKiBTbG90QXNzaWdubWVudE1vZGUu
aCAqLywKKwkJCQkwNTIzRTA5QzI1QURDMTBCMDA1NjNDOTYgLyogU2xvdEFzc2lnbm1lbnRNb2Rl
LmlkbCAqLywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmlu
Zy5jcHAgKi8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJp
bmcuaCAqLywKIAkJCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwICovLApAQCAtMzczMzUsNiArMzczNDAsNyBAQAogCQkJCUMxNDlENTY3MjQyRUI4NEEwMDNF
QkIxMiAvKiBTbGVlcERpc2FibGVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1
MEY5RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNTIzRTA4QzI1QURDMEEwMDA1NjNDOTYgLyogU2xvdEFzc2lnbm1l
bnRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyog
U21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAwQzBEQUYzMzU0MDBGNUY1
NUMgLyogU01JTFRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZEMDBFMERBRjMzNTUwMEY1
RjU1QyAvKiBTTUlMVGltZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4
IGYxYmU3NjExN2ZhOTg3YjQxMjZmYmEyZDE1NTc2MjgxMWRmNTAyNDAuLjYzNmQxY2MzNjY1MGYy
OWU4ZjQwYjFiZWYyNjc1MGY2NzcyOTlhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03OSw2ICs3OSw3IEBA
CiAjaW5jbHVkZSAiSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU1Rl
c3RTdGFuZGFsb25lRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKKyNp
bmNsdWRlICJKU1RleHQuaCIKICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkpTV2luZG93UHJveHkuaCIKICNpbmNsdWRlICJKU1hQYXRoTlNSZXNvbHZlci5oIgpAQCAtMTYy
MCw2ICsxNjIxLDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNTdHJpbmdNZXRob2QKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljRG91Ymxl
TWV0aG9kKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX3ZhcmlhZGljTm9kZU1ldGhvZCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl92YXJpYWRpY1VuaW9uTWV0aG9k
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX3ZhcmlhZGljVW5pb25Ob2RlTWV0aG9kKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2FueSk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlz
ZUZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCk7CkBA
IC0yMzQ2LDYgKzIzNDgsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAidmFyaWFkaWNEb3VibGVNZXRob2QiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljRG91YmxlTWV0aG9kKSwgKGludHB0cl90
KSAoMSkgfSB9LAogICAgIHsgInZhcmlhZGljTm9kZU1ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fdmFyaWFkaWNOb2RlTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsg
InZhcmlhZGljVW5pb25NZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGlj
VW5pb25NZXRob2QpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAidmFyaWFkaWNVbmlvbk5v
ZGVNZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3ZhcmlhZGljVW5pb25Ob2RlTWV0
aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImFueSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fYW55KSwgKGludHB0cl90KSAoMikgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVu
Y3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RQcm9taXNlRnVuY3Rpb24pLCAo
aW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFy
Z3VtZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aEZsb2F0QXJndW1lbnQpLCAoaW50cHRyX3QpICgxKSB9IH0sCkBAIC04NDMyLDYgKzg0MzUsMjMg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3Zh
cmlhZGljVW5pb25NZXRob2QsIChKU0dsb2IKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk1ldGhv
ZEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidmFyaWFkaWNVbmlvbk1l
dGhvZCIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk5vZGVNZXRob2RCb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIG5vZGVzID0gY29u
dmVydFZhcmlhZGljQXJndW1lbnRzPElETFVuaW9uPElETEludGVyZmFjZTxOb2RlPiwgSURMSW50
ZXJmYWNlPFRleHQ+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsIDApOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudmFyaWFkaWNVbmlvbk5vZGVNZXRob2QoV1RGTW92ZShu
b2RlcykpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fdmFyaWFkaWNVbmlvbk5vZGVNZXRob2QsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl92YXJpYWRpY1VuaW9uTm9kZU1ldGhvZEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAidmFyaWFkaWNVbmlvbk5vZGVNZXRob2QiKTsKK30KKwogc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2FueUJvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCmluZGV4IGU0NDViY2JiMWQwMThiZGI3Mjg5MDU5OTRmMDBjYzhiMTQ1ZWI0OWMuLmRi
YjNjNTBkNGE5NTZkMDAwY2I3NzMwMzIzOGFlMWU0MjJlZTJmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTM4MSw2ICszODEs
NyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9OwogICAgIHVu
ZGVmaW5lZCB2YXJpYWRpY0RvdWJsZU1ldGhvZCh1bnJlc3RyaWN0ZWQgZG91YmxlIGhlYWQsIHVu
cmVzdHJpY3RlZCBkb3VibGUuLi4gdGFpbCk7CiAgICAgdW5kZWZpbmVkIHZhcmlhZGljTm9kZU1l
dGhvZChOb2RlIGhlYWQsIE5vZGUuLi4gdGFpbCk7CiAgICAgdW5kZWZpbmVkIHZhcmlhZGljVW5p
b25NZXRob2QoRE9NU3RyaW5nIGhlYWQsIChOb2RlIG9yIERPTVN0cmluZykuLi4gdGFpbCk7Cisg
ICAgdW5kZWZpbmVkIHZhcmlhZGljVW5pb25Ob2RlTWV0aG9kKChOb2RlIG9yIFRleHQpLi4uIG5v
ZGVzKTsKIAogICAgIC8vIE51bGxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGU/IG51bGxhYmxlRG91YmxlQXR0cmlidXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IGZlZTk4YzNmMWZlOWI4MTE2Mjc0OGEzN2MzMGYxMmUzMzBhYTI0
MmEuLmE2YWI0ZDA3YjdiYjhmZmM3YWQ5NGFiNTBhZGYzY2Y2MjE1OTlhZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTI1NDgsNyArMjU0OCw3IEBAIEV4Y2VwdGlvbk9yPFNoYWRvd1Jvb3Qm
PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogICAgIGlmIChpbml0
Lm1vZGUgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OwotICAgIGF1dG8gc2hhZG93ID0gU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50KCksIGluaXQubW9kZSwgaW5pdC5kZWxlZ2F0ZXNGb2N1cyA/IFNoYWRvd1Jvb3Q6
OkRlbGVnYXRlc0ZvY3VzOjpZZXMgOiBTaGFkb3dSb290OjpEZWxlZ2F0ZXNGb2N1czo6Tm8pOwor
ICAgIGF1dG8gc2hhZG93ID0gU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIGluaXQubW9k
ZSwgaW5pdC5kZWxlZ2F0ZXNGb2N1cyA/IFNoYWRvd1Jvb3Q6OkRlbGVnYXRlc0ZvY3VzOjpZZXMg
OiBTaGFkb3dSb290OjpEZWxlZ2F0ZXNGb2N1czo6Tm8sIGluaXQuc2xvdEFzc2lnbm1lbnQpOwog
ICAgIGF1dG8mIHJlc3VsdCA9IHNoYWRvdy5nZXQoKTsKICAgICBhZGRTaGFkb3dSb290KFdURk1v
dmUoc2hhZG93KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAppbmRleCBhMzIyZGVjNDFkZGY0YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi5hMWQ1NDI1
YjJkNTcyOTE4OGI5N2QyNTM1NzU4NjhiYThkYWY5N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTbG90QXNzaWdubWVu
dC5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50TW9kZS5oIgogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExp
c3QuaCIKQEAgLTY2LDIwICs2NywzMSBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93Um9v
dCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaAogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFdlYWtQdHI8RWxlbWVudD4pID09IHNpemVvZih2b2lkKiksIFdlYWtQ
dHJfc2hvdWxkX2JlX3NhbWVfc2l6ZV9hc19yYXdfcG9pbnRlcik7CiAjZW5kaWYKIAotU2hhZG93
Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUs
IERlbGVnYXRlc0ZvY3VzIGRlbGVnYXRlc0ZvY3VzKQorU2hhZG93Um9vdDo6U2hhZG93Um9vdChE
b2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUsIERlbGVnYXRlc0ZvY3VzIGRl
bGVnYXRlc0ZvY3VzLCBTbG90QXNzaWdubWVudE1vZGUgc2xvdEFzc2lnbm1lbnRNb2RlKQogICAg
IDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRy
ZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX2RlbGVnYXRlc0ZvY3VzKGRlbGVnYXRl
c0ZvY3VzID09IERlbGVnYXRlc0ZvY3VzOjpZZXMpCiAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAs
IG1fc2xvdEFzc2lnbm1lbnRNb2RlKHNsb3RBc3NpZ25tZW50TW9kZSkKICAgICAsIG1fc3R5bGVT
Y29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCitTaGFkb3dSb290
OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSwgRGVs
ZWdhdGVzRm9jdXMgZGVsZWdhdGVzRm9jdXMpCisgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3Vt
ZW50LCBDcmVhdGVTaGFkb3dSb290KQorICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkK
KyAgICAsIG1fZGVsZWdhdGVzRm9jdXMoZGVsZWdhdGVzRm9jdXMgPT0gRGVsZWdhdGVzRm9jdXM6
OlllcykKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9zbG90QXNzaWdubWVudE1vZGUoU2xv
dEFzc2lnbm1lbnRNb2RlOjpOYW1lKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCit7Cit9CiAKIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvdEFzc2ln
bm1lbnQpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290
KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dS
b290TW9kZTo6VXNlckFnZW50KQorICAgICwgbV9zbG90QXNzaWdubWVudE1vZGUoc2xvdEFzc2ln
bm1lbnQtPm1vZGUoKSkKICAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29w
ZT4oKnRoaXMpKQogICAgICwgbV9zbG90QXNzaWdubWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50
KSkKIHsKQEAgLTE2NCw2ICsxNzYsMTMgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9v
dFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAm
bmV3RG9jdW1lbnQpOwogfQogCitTbG90QXNzaWdubWVudE1vZGUgU2hhZG93Um9vdDo6c2xvdEFz
c2lnbm1lbnQoKSBjb25zdAoreworICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQorICAgICAgICBB
U1NFUlQobV9zbG90QXNzaWdubWVudC0+bW9kZSgpID09IG1fc2xvdEFzc2lnbm1lbnRNb2RlKTsK
KyAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudE1vZGU7Cit9CisKIFN0eWxlOjpTY29wZSYgU2hh
ZG93Um9vdDo6c3R5bGVTY29wZSgpCiB7CiAgICAgcmV0dXJuICptX3N0eWxlU2NvcGU7CkBAIC0y
NDYsOCArMjY1LDEwIEBAIHZvaWQgU2hhZG93Um9vdDo6cmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNs
b3RFbGVtZW50JiBzbG90LCBjb25zdCBBdG9tU3RyaW5nJiBvbGROCiB2b2lkIFNoYWRvd1Jvb3Q6
OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxl
bWVudCYgc2xvdCkKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9vdE5vZGUoKSA9PSB0aGlzKTsKLSAg
ICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtl
VW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAgIGlmICghbV9zbG90QXNzaWdubWVudCkgewor
ICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4obV9z
bG90QXNzaWdubWVudE1vZGUpOworICAgICAgICBBU1NFUlQobV9zbG90QXNzaWdubWVudC0+bW9k
ZSgpID09IG1fc2xvdEFzc2lnbm1lbnRNb2RlKTsKKyAgICB9CiAKICAgICByZXR1cm4gbV9zbG90
QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYWQ0YjBiMzY2ZTA1Y2M5YmNlNmVjZTNlYjU3ZDdj
NjM1YzE1MWM3My4uMGJiZWE0ZmM1Yzk1MjdlMWY5ZDI5MThhYzY3OGE3ZDQzMmQ0YWM5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIyIFRldHN1aGFydSBPaHpla2kgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29tPgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNlbmRpZgogI2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2Rl
LmgiCisjaW5jbHVkZSAiU2xvdEFzc2lnbm1lbnRNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksOSArNTEsOSBAQCBwdWJsaWM6CiAK
ICAgICBlbnVtIGNsYXNzIERlbGVnYXRlc0ZvY3VzIDogdWludDhfdCB7IFllcywgTm8gfTsKIAot
ICAgIHN0YXRpYyBSZWY8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU2hh
ZG93Um9vdE1vZGUgdHlwZSwgRGVsZWdhdGVzRm9jdXMgZGVsZWdhdGVzRm9jdXMgPSBEZWxlZ2F0
ZXNGb2N1czo6Tm8pCisgICAgc3RhdGljIFJlZjxTaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlLCBEZWxlZ2F0ZXNGb2N1cyBkZWxlZ2F0ZXNG
b2N1cyA9IERlbGVnYXRlc0ZvY3VzOjpObywgU2xvdEFzc2lnbm1lbnRNb2RlIHNsb3RBc3NpZ25t
ZW50TW9kZSA9IFNsb3RBc3NpZ25tZW50TW9kZTo6TmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYWRvd1Jvb3QoZG9jdW1lbnQsIHR5cGUsIGRlbGVnYXRlc0ZvY3Vz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYWRvd1Jvb3QoZG9jdW1lbnQsIHR5
cGUsIGRlbGVnYXRlc0ZvY3VzLCBzbG90QXNzaWdubWVudE1vZGUpKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUmVmPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxTbG90QXNzaWdubWVudD4mJiBhc3NpZ25tZW50KQpAQCAtNzQsNiArNzYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjb250YWluc0ZvY3VzZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb250YWluc0ZvY3VzZWRFbGVtZW50OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0ZvY3VzZWRF
bGVtZW50KGJvb2wgZmxhZykgeyBtX2NvbnRhaW5zRm9jdXNlZEVsZW1lbnQgPSBmbGFnOyB9CiAK
KyAgICBTbG90QXNzaWdubWVudE1vZGUgc2xvdEFzc2lnbm1lbnQoKSBjb25zdDsKICAgICBFbGVt
ZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRI
b3N0KFdlYWtQdHI8RWxlbWVudD4mJiBob3N0KSB7IG1faG9zdCA9IFdURk1vdmUoaG9zdCk7IH0K
IApAQCAtMTE4LDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1h
dGlvbj4+IGdldEFuaW1hdGlvbnMoKTsKIAogcHJpdmF0ZToKKyAgICBTaGFkb3dSb290KERvY3Vt
ZW50JiwgU2hhZG93Um9vdE1vZGUsIERlbGVnYXRlc0ZvY3VzLCBTbG90QXNzaWdubWVudE1vZGUp
OwogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQmLCBTaGFkb3dSb290TW9kZSwgRGVsZWdhdGVzRm9j
dXMpOwogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2ln
bm1lbnQ+JiYpOwogCkBAIC0xMzUsNiArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVs
ZWdhdGVzRm9jdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jb250YWluc0ZvY3VzZWRFbGVtZW50
IHsgZmFsc2UgfTsKICAgICBTaGFkb3dSb290TW9kZSBtX3R5cGUgeyBTaGFkb3dSb290TW9kZTo6
VXNlckFnZW50IH07CisgICAgY29uc3QgU2xvdEFzc2lnbm1lbnRNb2RlIG1fc2xvdEFzc2lnbm1l
bnRNb2RlOwogCiAgICAgV2Vha1B0cjxFbGVtZW50PiBtX2hvc3Q7CiAgICAgUmVmUHRyPFN0eWxl
U2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmlu
ZGV4IDZiNDU2ZGEyNmM1YzVhOGZlYWU3MjFmMjY0NzIzODlmYjhlNGU0YWYuLmUwYTc4YWVkNTg3
M2ViNGIwMDkzZGI2NmQ2Mjk1YzI3M2YyMzQzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5p
ZGwKQEAgLTEsNSArMSw2IEBACiAvKgogKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGV0c3VoYXJ1IE9oemVr
aSA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI5LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU2hh
ZG93Um9vdCA6IERvY3VtZW50RnJhZ21lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTaGFk
b3dSb290TW9kZSBtb2RlOworICAgIFtFbmFibGVkQnlTZXR0aW5nPUltcGVyYXRpdmVTbG90QVBJ
RW5hYmxlZF0gcmVhZG9ubHkgYXR0cmlidXRlIFNsb3RBc3NpZ25tZW50TW9kZSBzbG90QXNzaWdu
bWVudDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBkZWxlZ2F0ZXNGb2N1czsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBob3N0OwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25zbG90Y2hhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3RJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQuaAppbmRleCA3
MTY1MzhmN2Y4ZGY4N2MzNTgwMGQwMDRiN2Y1MDFiNjUxZDA3OWNjLi43NWY2ZTgwZGQyYjRlZmE3
ZTNhY2ZlNTE1MTMwYjk0Njk4MDM1NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdEluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIFRldHN1aGFydSBPaHpl
a2kgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiwxMiArMjcsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdE1vZGUuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudE1vZGUuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2hhZG93Um9vdEluaXQgewogICAgIFNoYWRvd1Jvb3RN
b2RlIG1vZGU7CiAgICAgYm9vbCBkZWxlZ2F0ZXNGb2N1cyB7IGZhbHNlIH07CisgICAgU2xvdEFz
c2lnbm1lbnRNb2RlIHNsb3RBc3NpZ25tZW50IHsgU2xvdEFzc2lnbm1lbnRNb2RlOjpOYW1lIH07
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RJbml0LmlkbAppbmRleCAzYjY5MjM0
YmEwM2M2YWIyYzYwN2EzOGJmYWNjYTYzMDI4MWE4MWU2Li5kZTNmZmE1M2I5ZmRlMWMxNTA1Yzdk
OTc5MmNmZDZjOWMxNGY0ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdEluaXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290SW5pdC5pZGwK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBUZXRzdWhhcnUgT2h6ZWtp
IDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNCArMjcsNSBAQAogZGljdGlvbmFyeSBTaGFkb3dSb290SW5pdCB7CiAgICAg
cmVxdWlyZWQgU2hhZG93Um9vdE1vZGUgbW9kZTsKICAgICBib29sZWFuIGRlbGVnYXRlc0ZvY3Vz
ID0gZmFsc2U7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9SW1wZXJhdGl2ZVNsb3RBUElFbmFibGVk
XSBTbG90QXNzaWdubWVudE1vZGUgc2xvdEFzc2lnbm1lbnQgPSAibmFtZSI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggYTM1NDllZjI4ZWM2N2ViZjU2NWNiNWI2
YmZkZDAyZGRkYjRlMWQzMi4uYTY2ZmU4YWJmYjY4YWYyMDJjMmRhNzk5MDhhMWNmNzBkOGYxMjEx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorI2lu
Y2x1ZGUgIlNsb3RBc3NpZ25tZW50TW9kZS5oIgogCiAjaW5jbHVkZSAiRWxlbWVudElubGluZXMu
aCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKQEAgLTcxLDYgKzcyLDExIEBAIHN0YXRp
YyBIVE1MU2xvdEVsZW1lbnQqIG5leHRTbG90RWxlbWVudFNraXBwaW5nU3VidHJlZShDb250YWlu
ZXJOb2RlJiBzdGFydGluZ05vCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTbG90RWxlbWVudD4o
bm9kZSk7CiB9CiAKK1Nsb3RBc3NpZ25tZW50OjpTbG90QXNzaWdubWVudChTbG90QXNzaWdubWVu
dE1vZGUgbW9kZSkKKyAgICA6IG1fbW9kZShtb2RlKQoreworfQorCiBTbG90QXNzaWdubWVudDo6
U2xvdEFzc2lnbm1lbnQoKSA9IGRlZmF1bHQ7CiAKIFNsb3RBc3NpZ25tZW50Ojp+U2xvdEFzc2ln
bm1lbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCmluZGV4IGVl
NWM5ZGJmMGMzMWIzZWVjMDdmY2UxZmUxNmVmOWFlZDY5YWVhY2YuLjdkZGM0ZjBjZGExNzE2MzRi
MmJiNDhiNWE2ZjU2YmZkYTM0MzhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
bG90QXNzaWdubWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5o
CkBAIC00Myw5ICs0MywxMSBAQCBjbGFzcyBOb2RlOwogY2xhc3MgU2xvdEFzc2lnbm1lbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNsb3RBc3NpZ25tZW50KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CisgICAgU2xvdEFzc2lnbm1lbnQoU2xvdEFzc2lnbm1lbnRNb2Rl
KTsKICAgICBTbG90QXNzaWdubWVudCgpOwogICAgIHZpcnR1YWwgflNsb3RBc3NpZ25tZW50KCk7
CiAKKyAgICBTbG90QXNzaWdubWVudE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVmYXVsdFNsb3ROYW1lKCkgeyByZXR1
cm4gZW1wdHlBdG9tKCk7IH0KIAogICAgIEhUTUxTbG90RWxlbWVudCogZmluZEFzc2lnbmVkU2xv
dChjb25zdCBOb2RlJik7CkBAIC05OSw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8
SFRNTFNsb3RFbGVtZW50Kj4gbV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrOwogI2Vu
ZGlmCiAKKyAgICBjb25zdCBTbG90QXNzaWdubWVudE1vZGUgbV9tb2RlIHsgU2xvdEFzc2lnbm1l
bnRNb2RlOjpOYW1lIH07CiAgICAgYm9vbCBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV93aWxsQmVSZW1vdmluZ0FsbENoaWxkcmVuIHsgZmFsc2UgfTsKICAg
ICB1bnNpZ25lZCBtX3Nsb3RNdXRhdGlvblZlcnNpb24geyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnRNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnRNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM5ODA3NTdhNTY2ZTQ2Mjk5MjQ1ODY4
OWJkNTRiZDczZTJlMzhlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
bG90QXNzaWdubWVudE1vZGUuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIFRldHN1aGFydSBPaHpla2kgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFNsb3RBc3NpZ25tZW50TW9kZSA6IHVp
bnQ4X3QgeworICAgIE1hbnVhbCwKKyAgICBOYW1lLAorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnRNb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDE0NTE4MWE3ODcxZWU3MzYy
ZDVhN2FmY2YzZmQxOTk4NzU3MzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBUZXRzdWhhcnUgT2h6ZWtpIDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBTbG90
QXNzaWdubWVudE1vZGUgeworICAgICJtYW51YWwiLAorICAgICJuYW1lIgorfTsKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHQuaWRsCmluZGV4IGRlOGI2NjljNGU0YzA2Mzc2MTliZmMwNTIyZjRmOWM5ZDcwNGFlOTIuLmFm
YTQxMzA3MDJmOGM0MTc5Njk0MDBiNTM0MzhjMjQzMzJkZjhjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5pZGwK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBUZXRzdWhhcnUgT2h6ZWtp
IDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTks
NiArMjAsNyBAQAogCiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9O
YXRpdmVPYmplY3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFRleHQgOiBDaGFy
YWN0ZXJEYXRhIHsKICAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBjb25zdHJ1Y3Rvcihv
cHRpb25hbCBET01TdHJpbmcgZGF0YSA9ICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZlYXR1cmVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5qc29uCmluZGV4IDc5YTNl
N2IwMjJhMjkyODk1ZmQ5NjBkYTYzOWM2ZGQ5NTlhN2Y1ZDQuLjViZDZhYjMyNzU0MDc3YzRjNWM2
NTgyZTg5NmJlMjlmZjQ5ODJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZlYXR1cmVz
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvZmVhdHVyZXMuanNvbgpAQCAtNTM4LDYgKzUzOCwx
NiBAQAogICAgICAgICAia2V5d29yZHMiOiBbImh0bWwiLCAiaHRtbDUiLCAiaHRtbDUuMSJdLAog
ICAgICAgICAiY2F0ZWdvcnkiOiAiaHRtbCIKICAgICB9LAorICAgIHsKKyAgICAgICAgIm5hbWUi
OiAiSW1wZXJhdGl2ZSBTbG90IEFQSSIsCisgICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAg
ICAic3RhdHVzIjogIkluIERldmVsb3BtZW50IiwKKyAgICAgICAgICAgICJlbmFibGVkLWJ5LWRl
ZmF1bHQiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICAic3BlY2lmaWNhdGlvbiI6ICJXZWIg
Q29tcG9uZW50cyIsCisgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvd2Vi
Y29tcG9uZW50cy9ibG9iL2doLXBhZ2VzL3Byb3Bvc2Fscy9JbXBlcmF0aXZlLVNoYWRvdy1ET00t
RGlzdHJpYnV0aW9uLUFQSS5tZCIsCisgICAgICAgICJ3ZWJraXQtdXJsIjogIlRPRE8iCisgICAg
fSwKICAgICB7CiAgICAgICAgICJuYW1lIjogIkluZGV4ZWQgRGF0YWJhc2UiLAogICAgICAgICAi
c3RhdHVzIjogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDMy
NDE4ODk3MWVhMjMyODI1NjE4NWIyMmM3Yjc5NGIwOTJhMGJmZWEuLmFiYjFlZWQwY2E2NmJjNTc4
YmRkMzBlMTljYWE2YTRmOWI1YTlhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNsb3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBUZXRzdWhh
cnUgT2h6ZWtpIDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMTMgKzI3LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudE1vZGUuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xNjQsNiArMTY5LDEyIEBAIFZlY3Rv
cjxSZWY8RWxlbWVudD4+IEhUTUxTbG90RWxlbWVudDo6YXNzaWduZWRFbGVtZW50cyhjb25zdCBB
c3NpZ25lZE5vZGVzT3B0aW9uCiAgICAgfSk7CiB9CiAKKy8vIFRPRE86IGh0dHBzOi8vd2hhdHBy
Lm9yZy9odG1sLzU0ODMvc2NyaXB0aW5nLmh0bWwjZG9tLXNsb3QtYXNzaWduCisvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNkb20tc2xvdC1h
c3NpZ24KK3ZvaWQgSFRNTFNsb3RFbGVtZW50Ojphc3NpZ24oRml4ZWRWZWN0b3I8c3RkOjp2YXJp
YW50PFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPFRleHQ+Pj4mJikKK3sKK30KKwogdm9pZCBIVE1M
U2xvdEVsZW1lbnQ6OmVucXVldWVTbG90Q2hhbmdlRXZlbnQoKQogewogICAgIC8vIGh0dHBzOi8v
ZG9tLnNwZWMud2hhdHdnLm9yZy8jc2lnbmFsLWEtc2xvdC1jaGFuZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5oCmluZGV4IDBiZTI5ZGE2NmUxZTZjOGNkOWUyNWU2NWQyZDdkZjRm
ZGNmNTRiNDkuLjIyMDg1ODZjYmUwMWMzYzE5OGJlOTFmMDVjMjg1NmI0ZWNjMzQ2YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIFRldHN1aGFydSBPaHpla2kgPHRldHN1aGFydS5vaHpla2lAZ21haWwu
Y29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNiwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJl
ZjxOb2RlPj4gYXNzaWduZWROb2Rlcyhjb25zdCBBc3NpZ25lZE5vZGVzT3B0aW9ucyYpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IGFzc2lnbmVkRWxlbWVudHMoY29uc3QgQXNzaWdu
ZWROb2Rlc09wdGlvbnMmKSBjb25zdDsKIAorICAgIHZvaWQgYXNzaWduKEZpeGVkVmVjdG9yPHN0
ZDo6dmFyaWFudDxSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxUZXh0Pj4+JiYpOworCiAgICAgdm9p
ZCBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CiAgICAgdm9pZCBkaWRSZW1vdmVGcm9tU2lnbmFs
U2xvdExpc3QoKSB7IG1faW5TaWduYWxTbG90TGlzdCA9IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNsb3RFbGVtZW50LmlkbAppbmRleCAyYmZhYjM4NTA5MTdhMDhkYTYzZDA1MDMy
Y2I2MmIwZWMwOWY5MDkyLi5iODkyNjU5OWI4NGEzODcxMWYxNWZlMTI1OWY5YTcxMTNjZTNjNDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGV0c3VoYXJ1IE9oemVraSA8dGV0c3VoYXJ1Lm9o
emVraUBnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYg
KzMxLDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIG5hbWU7CiAgICAgc2VxdWVuY2U8Tm9kZT4gYXNzaWduZWROb2RlcyhvcHRpb25h
bCBBc3NpZ25lZE5vZGVzT3B0aW9ucyBvcHRpb25zKTsKICAgICBzZXF1ZW5jZTxFbGVtZW50PiBh
c3NpZ25lZEVsZW1lbnRzKG9wdGlvbmFsIEFzc2lnbmVkTm9kZXNPcHRpb25zIG9wdGlvbnMpOwor
ICAgIFtFbmFibGVkQnlTZXR0aW5nPUltcGVyYXRpdmVTbG90QVBJRW5hYmxlZF0gdW5kZWZpbmVk
IGFzc2lnbigoRWxlbWVudCBvciBUZXh0KS4uLiBub2Rlcyk7CiB9OwogCiBkaWN0aW9uYXJ5IEFz
c2lnbmVkTm9kZXNPcHRpb25zIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453697</attachid>
            <date>2022-03-02 22:10:28 -0800</date>
            <delta_ts>2022-08-08 02:18:48 -0700</delta_ts>
            <desc>Alternative WIP</desc>
            <filename>slot-assign-wip1.patch</filename>
            <type>text/plain</type>
            <size>41645</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTQ5OWI0YTIxMjFlLi4wN2FiYmIzMGRkZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC05NTAsNiArOTUwLDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19J
RExfRklMRVMKICAgICBkb20vU2hhZG93Um9vdC5pZGwKICAgICBkb20vU2hhZG93Um9vdEluaXQu
aWRsCiAgICAgZG9tL1NoYWRvd1Jvb3RNb2RlLmlkbAorICAgIGRvbS9TbG90QXNzaWdubWVudE1v
ZGUuaWRsCiAgICAgZG9tL1Nsb3RhYmxlLmlkbAogICAgIGRvbS9TdGF0aWNSYW5nZS5pZGwKICAg
ICBkb20vU3RyaW5nQ2FsbGJhY2suaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBjYzg5YzllYjNlMWEuLmNkNjBmZTY1Njc0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0x
MTAxLDYgKzExMDEsNyBAQCAkKFBST0pFQ1RfRElSKS9kb20vU2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TaGFkb3dSb290LmlkbAogJChQUk9KRUNU
X0RJUikvZG9tL1NoYWRvd1Jvb3RJbml0LmlkbAogJChQUk9KRUNUX0RJUikvZG9tL1NoYWRvd1Jv
b3RNb2RlLmlkbAorJChQUk9KRUNUX0RJUikvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwKICQo
UFJPSkVDVF9ESVIpL2RvbS9TbG90YWJsZS5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TdGF0aWNS
YW5nZS5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9TdHJpbmdDYWxsYmFjay5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggY2QzMzUy
NzliOWQzLi4yN2JhOTBkZGVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNDkxLDYgKzI0OTEsOCBAQCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdvcmtlci5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2hhcmVkV29ya2VyLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2xvdEFzc2lnbm1lbnRNb2RlLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTbG90QXNzaWdubWVudE1v
ZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTbG90
YWJsZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U2xvdGFibGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNTb3VyY2VCdWZmZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1YjM4
OTEwMzBlMDUuLmFiOWExZjY1YjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC05NTUsNiArOTU1LDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9TaGFkb3dSb290LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vU2hhZG93Um9vdEluaXQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2RvbS9TaGFkb3dSb290TW9kZS5pZGwgXAorICAgICQoV2ViQ29y
ZSkvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1Nsb3Rh
YmxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vU3RhdGljUmFuZ2UuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9TdHJpbmdDYWxsYmFjay5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZjg4
MmEyZmRlNTJhLi5hOWZlYWYyMThhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzA5LDYgKzcw
OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vU2hh
ZG93Um9vdE1vZGUuaAogICAgIGRvbS9TaW1wbGVSYW5nZS5oCiAgICAgZG9tL1NpbXVsYXRlZENs
aWNrT3B0aW9ucy5oCisgICAgZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5oCiAgICAgZG9tL1NwYWNl
U3BsaXRTdHJpbmcuaAogICAgIGRvbS9TdGF0aWNSYW5nZS5oCiAgICAgZG9tL1N0eWxlZEVsZW1l
bnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0NzRmY2M4OGFlOWMuLjY0ZTMyZjBjYmFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTM4NzgsNiArMzg3OCw3IEBAIEpTU2hhZG93Um9vdE1vZGUuY3BwCiBKU1No
YXJlRGF0YS5jcHAKIEpTU2hhcmVkV29ya2VyLmNwcAogSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKK0pTU2xvdEFzc2lnbm1lbnRNb2RlLmNwcAogSlNTbG90YWJsZS5jcHAKIEpTU291cmNl
QnVmZmVyLmNwcAogSlNTb3VyY2VCdWZmZXJMaXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyOThiZGU3ZWJiNy4uZDQy
YjQwODVjMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zMjUyLDYgKzMyNTIsNyBAQAogCQk5QjY5RDNCNTFCOThGRkU5MDBF
MzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVt
ZW50LmggKi87IH07CiAJCTlCNjlEM0I5MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2
OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlC
NkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAw
ODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTlCNzAyM0U3MjdBNzkyOTYwMEMyNkIwQyAvKiBTbG90
QXNzaWdubWVudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNzAyM0U0MjdBNjg2RkIwMEMyNkIwQyAvKiBTbG90QXNzaWdubWVudE1vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjcxNEUy
MTFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjcxNEUxRjFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQ
YXRoLmggKi87IH07CiAJCTlCNzQyNjA1MjM0QkU5NTYwMERCNTJFOSAvKiBJZGxlUmVxdWVzdENh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
Qjc0MjYwMzIzNEJFOTU2MDBEQjUyRTkgLyogSWRsZVJlcXVlc3RDYWxsYmFjay5oICovOyB9Owog
CQk5Qjc0MjYwQjIzNEJFQTZFMDBEQjUyRTkgLyogSWRsZURlYWRsaW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Qjc0MjYwODIzNEJFQTZFMDBEQjUy
RTkgLyogSWRsZURlYWRsaW5lLmggKi87IH07CkBAIC0xMzM3MCw2ICsxMzM3MSwxMSBAQAogCQk5
QjZCQzk2MDFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhZG93Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJp
bmdXaXRoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z1dpdGhEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUI3MDIzRTEy
N0E2ODZGOTAwQzI2QjBDIC8qIFNsb3RBc3NpZ25tZW50TW9kZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2xvdEFzc2ln
bm1lbnRNb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUI3MDIzRTMyN0E2
ODZGQTAwQzI2QjBDIC8qIGlvcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IGlvczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUI3MDIzRTQyN0E2ODZGQjAwQzI2QjBDIC8qIFNsb3RBc3NpZ25tZW50TW9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTbG90QXNzaWdubWVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUI3MDIzRTUyN0E2ODZGQzAwQzI2QjBDIC8qIG1hYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IG1hYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUI3MDIzRTYyN0E2ODZGQzAwQzI2QjBDIC8qIG1l
c3NhZ2Vwb3J0cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZvbGRlcjsgcGF0aCA9IG1lc3NhZ2Vwb3J0czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUI3MTRFMUUxQzkxMTY2OTAwQUMwRTkyIC8qIEV2ZW50UGF0aC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFBhdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjcxNEUxRjFDOTExNjY5MDBBQzBFOTIgLyogRXZlbnRQYXRoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50UGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwMzIzNEJFOTU2MDBEQjUyRTkgLyogSWRsZVJlcXVl
c3RDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlUmVxdWVzdENhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjE2NSw2ICszMjE3MSw5IEBACiAJCQkJQ0UyNjE2
QTQxODdFNjVDMTAwNzk1NUYzIC8qIGlvcyAqLywKIAkJCQkyRDUwMzY2NjFCQ0REREM0MDBFMjBC
QjMgLyogbWFjICovLAogCQkJCTUxRUNDM0U0MjAwNTgzMUYwMDQ4M0VBRSAvKiBtZXNzYWdlcG9y
dHMgKi8sCisJCQkJOUI3MDIzRTMyN0E2ODZGQTAwQzI2QjBDIC8qIGlvcyAqLywKKwkJCQk5Qjcw
MjNFNTI3QTY4NkZDMDBDMjZCMEMgLyogbWFjICovLAorCQkJCTlCNzAyM0U2MjdBNjg2RkMwMEMy
NkIwQyAvKiBtZXNzYWdlcG9ydHMgKi8sCiAJCQkJNDE4ODA3RTEyNEU0NThDMzAwRERBRjk0IC8q
IEFib3J0QWxnb3JpdGhtLmggKi8sCiAJCQkJNDE4ODA3REYyNEU0NTU4MzAwRERBRjk0IC8qIEFi
b3J0QWxnb3JpdGhtLmlkbCAqLywKIAkJCQk3Q0QwRTJCNjFGODBBNDgyMDAxNkE0Q0UgLyogQWJv
cnRDb250cm9sbGVyLmNwcCAqLywKQEAgLTMyNjQyLDYgKzMyNjUxLDggQEAKIAkJCQk4MzVGOEIy
NjFEMkQ5MEJBMDBFNDA4RUMgLyogU2xvdGFibGUuaWRsICovLAogCQkJCTlCNTMyRUExMUJBOTI4
NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5jcHAgKi8sCiAJCQkJOUI1MzJFQTIxQkE5Mjg1
NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmggKi8sCisJCQkJOUI3MDIzRTQyN0E2ODZGQjAw
QzI2QjBDIC8qIFNsb3RBc3NpZ25tZW50TW9kZS5oICovLAorCQkJCTlCNzAyM0UxMjdBNjg2Rjkw
MEMyNkIwQyAvKiBTbG90QXNzaWdubWVudE1vZGUuaWRsICovLAogCQkJCUQwMUEyN0FCMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdBQzEwQzlC
RkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAogCQkJCUJDN0ZBNjJDMEQxRjBF
RkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi8sCkBAIC0zNDc2NSw2ICszNDc3Niw3
IEBACiAJCQkJQThFQTdDQjUwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxQYXJhZ3JhcGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxRDQ1ODBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBh
cmFtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJB
IC8qIEhUTUxQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCNzAyM0U3MjdBNzky
OTYwMEMyNkIwQyAvKiBTbG90QXNzaWdubWVudE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
M0Y0MThBMTY5Qjk1RkYwMDA2QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3QjM4NzExMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxQYXJzZXJTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzMzMjU2MDU5ODMwMDI4QzU5MiAvKiBIVE1MUGFy
c2VyU2NyaXB0aW5nRmxhZ1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggODUyMWMyNDAxOTExLi45NjU3NzgzODRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTI1NDMsNyArMjU0Myw4IEBAIEV4Y2VwdGlvbk9yPFNoYWRvd1Jvb3QmPiBFbGVtZW50
OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogICAgIGlmIChpbml0Lm1vZGUgPT0g
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciB9OwotICAgIGF1dG8gc2hhZG93ID0gU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50
KCksIGluaXQubW9kZSwgaW5pdC5kZWxlZ2F0ZXNGb2N1cyA/IFNoYWRvd1Jvb3Q6OkRlbGVnYXRl
c0ZvY3VzOjpZZXMgOiBTaGFkb3dSb290OjpEZWxlZ2F0ZXNGb2N1czo6Tm8pOworICAgIGF1dG8g
c2hhZG93ID0gU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIGluaXQubW9kZSwgaW5pdC5z
bG90QXNzaWdubWVudCwKKyAgICAgICAgaW5pdC5kZWxlZ2F0ZXNGb2N1cyA/IFNoYWRvd1Jvb3Q6
OkRlbGVnYXRlc0ZvY3VzOjpZZXMgOiBTaGFkb3dSb290OjpEZWxlZ2F0ZXNGb2N1czo6Tm8pOwog
ICAgIGF1dG8mIHJlc3VsdCA9IHNoYWRvdy5nZXQoKTsKICAgICBhZGRTaGFkb3dSb290KFdURk1v
dmUoc2hhZG93KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAppbmRleCBhMzIyZGVjNDFkZGYuLjFjNGNjMjAwZDRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNU
VVJFX0FQSSkKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNlbmRpZgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTY2LDEx
ICs2NywxMiBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaAogQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KFdlYWtQdHI8RWxlbWVudD4pID09IHNpemVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxkX2JlX3Nh
bWVfc2l6ZV9hc19yYXdfcG9pbnRlcik7CiAjZW5kaWYKIAotU2hhZG93Um9vdDo6U2hhZG93Um9v
dChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUsIERlbGVnYXRlc0ZvY3Vz
IGRlbGVnYXRlc0ZvY3VzKQorU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1l
bnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUsIFNsb3RBc3NpZ25tZW50TW9kZSBtb2RlLCBEZWxlZ2F0
ZXNGb2N1cyBkZWxlZ2F0ZXNGb2N1cykKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQs
IENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAg
ICwgbV9kZWxlZ2F0ZXNGb2N1cyhkZWxlZ2F0ZXNGb2N1cyA9PSBEZWxlZ2F0ZXNGb2N1czo6WWVz
KQogICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3Nsb3RBc3NpZ25tZW50TW9kZShtb2RlKQog
ICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9
CkBAIC04MCw2ICs4Miw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0
aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQor
ICAgICwgbV9zbG90QXNzaWdubWVudE1vZGUoU2xvdEFzc2lnbm1lbnRNb2RlOjpOYW1lZCkKICAg
ICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwg
bV9zbG90QXNzaWdubWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKQEAgLTI0MywxOSAr
MjQ2LDIzIEBAIHZvaWQgU2hhZG93Um9vdDo6cmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVt
ZW50JiBzbG90LCBjb25zdCBBdG9tU3RyaW5nJiBvbGROCiAgICAgcmV0dXJuIG1fc2xvdEFzc2ln
bm1lbnQtPnJlbmFtZVNsb3RFbGVtZW50KHNsb3QsIG9sZE5hbWUsIG5ld05hbWUsICp0aGlzKTsK
IH0KIAotdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QpCit2b2lkIFNoYWRvd1Jvb3Q6OmRpZElu
c2VydFNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBBU1NFUlQoJnNs
b3Qucm9vdE5vZGUoKSA9PSB0aGlzKTsKLSAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAg
ICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAg
IGlmICghbV9zbG90QXNzaWdubWVudCkgeworICAgICAgICBpZiAobV9zbG90QXNzaWdubWVudE1v
ZGUgPT0gU2xvdEFzc2lnbm1lbnRNb2RlOjpNYW51YWwpCisgICAgICAgICAgICBtX3Nsb3RBc3Np
Z25tZW50ID0gbWFrZVVuaXF1ZTxNYW51YWxTbG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8TmFtZWRTbG90QXNz
aWdubWVudD4oKTsKKyAgICB9CiAKLSAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xv
dEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOworICAgIHJldHVybiBtX3Nsb3RBc3Np
Z25tZW50LT5kaWRJbnNlcnRTbG90RWxlbWVudChzbG90LCAqdGhpcyk7CiB9CiAKLXZvaWQgU2hh
ZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
SFRNTFNsb3RFbGVtZW50JiBzbG90LCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlKQordm9pZCBTaGFkb3dSb290OjpkaWRSZW1vdmVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1l
bnQmIHNsb3QsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7CiAgICAg
QVNTRVJUKG1fc2xvdEFzc2lnbm1lbnQpOwotICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5y
ZW1vdmVTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBzbG90LCAmb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSwgKnRoaXMpOworICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5kaWRSZW1vdmVTbG90RWxl
bWVudChzbG90LCAmb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgKnRoaXMpOwogfQogCiB2b2lkIFNo
YWRvd1Jvb3Q6OnNsb3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmIHNsb3QpCkBA
IC0yNjQsNiArMjcxLDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6c2xvdEZhbGxiYWNrRGlkQ2hhbmdl
KEhUTUxTbG90RWxlbWVudCYgc2xvdCkKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+c2xv
dEZhbGxiYWNrRGlkQ2hhbmdlKHNsb3QsICp0aGlzKTsKIH0KIAordm9pZCBTaGFkb3dSb290Ojp3
aWxsVXBkYXRlTWFudWFsbHlBc3NpZ25lZE5vZGVzKEhUTUxTbG90RWxlbWVudCYgc2xvdCwgY29u
c3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+JiBwcmV2aW91c2x5QXNzaWduZWROb2RlcywgY29uc3Qg
VmVjdG9yPFdlYWtQdHI8Tm9kZT4+JiBuZXdseUFzc2lnbmVkTm9kZXMpCit7CisgICAgaWYgKG1f
c2xvdEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPndpbGxVcGRhdGVNYW51
YWxseUFzc2lnbmVkTm9kZXMoc2xvdCwgcHJldmlvdXNseUFzc2lnbmVkTm9kZXMsIG5ld2x5QXNz
aWduZWROb2Rlcyk7Cit9CisKIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogU2hhZG93Um9v
dDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50JiBzbG90KQogewog
ICAgIGlmICghbV9zbG90QXNzaWdubWVudCkKQEAgLTM2OSw3ICszODIsNyBAQCBWZWN0b3I8U2hh
ZG93Um9vdCo+IGFzc2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoY29uc3QgTm9kZSYgbm9kZSkK
IH0KIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQotSFRNTFZpZGVvRWxlbWVu
dCogU2hhZG93Um9vdDo6cGljdHVyZUluUGljdHVyZUVsZW1lbnQoKSBjb25zdAorRWxlbWVudCog
U2hhZG93Um9vdDo6cGljdHVyZUluUGljdHVyZUVsZW1lbnQoKSBjb25zdAogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApp
bmRleCBhMmU1YWVkY2NhZTcuLjcyMGI2ZDQxMTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CkBAIC0zMCwxMCArMzAsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9yZGluYWwuaCIKLSNpZiBFTkFC
TEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKLSNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50Lmgi
Ci0jZW5kaWYKICNpbmNsdWRlICJTaGFkb3dSb290TW9kZS5oIgorI2luY2x1ZGUgIlNsb3RBc3Np
Z25tZW50TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ5LDkgKzQ3LDEwIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgRGVsZWdh
dGVzRm9jdXMgOiB1aW50OF90IHsgWWVzLCBObyB9OwogCi0gICAgc3RhdGljIFJlZjxTaGFkb3dS
b290PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlLCBEZWxl
Z2F0ZXNGb2N1cyBkZWxlZ2F0ZXNGb2N1cyA9IERlbGVnYXRlc0ZvY3VzOjpObykKKyAgICBzdGF0
aWMgUmVmPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RN
b2RlIHR5cGUsCisgICAgICAgIFNsb3RBc3NpZ25tZW50TW9kZSBtb2RlID0gU2xvdEFzc2lnbm1l
bnRNb2RlOjpOYW1lZCwgRGVsZWdhdGVzRm9jdXMgZGVsZWdhdGVzRm9jdXMgPSBEZWxlZ2F0ZXNG
b2N1czo6Tm8pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkb3dSb290
KGRvY3VtZW50LCB0eXBlLCBkZWxlZ2F0ZXNGb2N1cykpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFkb3dSb290KGRvY3VtZW50LCB0eXBlLCBtb2RlLCBkZWxlZ2F0ZXNGb2N1cykp
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIGFzc2lnbm1lbnQpCkBA
IC04NiwxMiArODUsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3Rl
bmVycygpIG92ZXJyaWRlOwogCisgICAgU2xvdEFzc2lnbm1lbnRNb2RlIHNsb3RBc3NpZ25tZW50
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnRNb2RlOyB9CisKICAgICBIVE1M
U2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpOwogCiAgICAgdm9pZCBy
ZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRO
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIGFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmKTsKLSAgICB2b2lkIHJl
bW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQm
LCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICB2b2lkIGRpZElu
c2VydFNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYpOworICAgIHZvaWQgZGlkUmVtb3ZlU2xv
dEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSk7CiAgICAgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50
Jik7CisgICAgdm9pZCB3aWxsVXBkYXRlTWFudWFsbHlBc3NpZ25lZE5vZGVzKEhUTUxTbG90RWxl
bWVudCYsIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiYgcHJldmlvdXNseUFzc2lnbmVkTm9k
ZXMsIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiYgbmV3bHlBc3NpZ25lZE5vZGVzKTsKICAg
ICB2b2lkIHJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKICAgICB2
b2lkIHdpbGxSZW1vdmVBbGxDaGlsZHJlbihDb250YWluZXJOb2RlJik7CiAgICAgdm9pZCB3aWxs
UmVtb3ZlQXNzaWduZWROb2RlKGNvbnN0IE5vZGUmKTsKQEAgLTExMSwxMyArMTEzLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVQYXJ0TWFwcGluZ3MoKTsKIAogI2lmIEVOQUJMRShQ
SUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBpY3R1cmVJblBp
Y3R1cmVFbGVtZW50KCkgY29uc3Q7CisgICAgRWxlbWVudCogcGljdHVyZUluUGljdHVyZUVsZW1l
bnQoKSBjb25zdDsKICNlbmRpZgogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBn
ZXRBbmltYXRpb25zKCk7CiAKIHByaXZhdGU6Ci0gICAgU2hhZG93Um9vdChEb2N1bWVudCYsIFNo
YWRvd1Jvb3RNb2RlLCBEZWxlZ2F0ZXNGb2N1cyk7CisgICAgU2hhZG93Um9vdChEb2N1bWVudCYs
IFNoYWRvd1Jvb3RNb2RlLCBTbG90QXNzaWdubWVudE1vZGUsIERlbGVnYXRlc0ZvY3VzKTsKICAg
ICBTaGFkb3dSb290KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYm
KTsKIAogICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC0xMzQsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVsZWdhdGVzRm9jdXMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9jb250YWluc0ZvY3VzZWRFbGVtZW50IHsgZmFsc2UgfTsK
ICAgICBTaGFkb3dSb290TW9kZSBtX3R5cGUgeyBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50IH07
CisgICAgU2xvdEFzc2lnbm1lbnRNb2RlIG1fc2xvdEFzc2lnbm1lbnRNb2RlIHsgU2xvdEFzc2ln
bm1lbnRNb2RlOjpOYW1lZCB9OwogCiAgICAgV2Vha1B0cjxFbGVtZW50PiBtX2hvc3Q7CiAgICAg
UmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaWRsCmluZGV4IDZiNDU2ZGEyNmM1Yy4uZWQ4NDc0NGVkNmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaWRsCkBAIC0yOSw2ICsyOSw3IEBACiBdIGludGVyZmFjZSBTaGFkb3dSb290
IDogRG9jdW1lbnRGcmFnbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNoYWRvd1Jvb3RN
b2RlIG1vZGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZGVsZWdhdGVzRm9jdXM7
CisgICAgW0ltcGxlbWVudGVkQXM9c2xvdEFzc2lnbm1lbnRNb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgU2xvdEFzc2lnbm1lbnRNb2RlIHNsb3RBc3NpZ25tZW50OwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBFbGVtZW50IGhvc3Q7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNsb3RjaGFu
Z2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RJbml0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQuaAppbmRleCA3MTY1MzhmN2Y4ZGYu
LmYxZmZlYTZhMGE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RJ
bml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RJbml0LmgKQEAgLTI2LDEy
ICsyNiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFkb3dSb290TW9kZS5oIgor
I2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50TW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBTaGFkb3dSb290SW5pdCB7CiAgICAgU2hhZG93Um9vdE1vZGUgbW9kZTsKICAgICBi
b29sIGRlbGVnYXRlc0ZvY3VzIHsgZmFsc2UgfTsKKyAgICBTbG90QXNzaWdubWVudE1vZGUgc2xv
dEFzc2lnbm1lbnQgeyBTbG90QXNzaWdubWVudE1vZGU6Ok5hbWVkIH07CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3RJbml0LmlkbAppbmRleCAzYjY5MjM0YmEwM2MuLmVkMjM2NGU5
NTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RJbml0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdEluaXQuaWRsCkBAIC0yNiw0ICsyNiw1
IEBACiBkaWN0aW9uYXJ5IFNoYWRvd1Jvb3RJbml0IHsKICAgICByZXF1aXJlZCBTaGFkb3dSb290
TW9kZSBtb2RlOwogICAgIGJvb2xlYW4gZGVsZWdhdGVzRm9jdXMgPSBmYWxzZTsKKyAgICBTbG90
QXNzaWdubWVudE1vZGUgc2xvdEFzc2lnbm1lbnQgPSAibmFtZWQiOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGEzNTQ5ZWYyOGVjNi4uYWI4OGQyZDhjZWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTM1LDE1ICszNSwzOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK01hbnVh
bFNsb3RBc3NpZ25tZW50OjpNYW51YWxTbG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsKK01hbnVh
bFNsb3RBc3NpZ25tZW50Ojp+TWFudWFsU2xvdEFzc2lnbm1lbnQoKSA9IGRlZmF1bHQ7CisKK3Zv
aWQgTWFudWFsU2xvdEFzc2lnbm1lbnQ6OmRpZEluc2VydFNsb3RFbGVtZW50KEhUTUxTbG90RWxl
bWVudCYsIFNoYWRvd1Jvb3QmKQoreworfQorCit2b2lkIE1hbnVhbFNsb3RBc3NpZ25tZW50Ojpk
aWRSZW1vdmVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBDb250YWluZXJOb2RlKiwgU2hh
ZG93Um9vdCYpCit7Cit9CisKK0hUTUxTbG90RWxlbWVudCogTWFudWFsU2xvdEFzc2lnbm1lbnQ6
OmZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK2NvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogTWFudWFsU2xvdEFzc2lnbm1lbnQ6OmFz
c2lnbmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYgc2xvdCwgU2hhZG93Um9v
dCYgc2hhZG93Um9vdCkKK3sKKyAgICBBU1NFUlQoc2hhZG93Um9vdC5zbG90QXNzaWdubWVudE1v
ZGUoKSA9PSBTbG90QXNzaWdubWVudE1vZGU6Ok1hbnVhbCk7CisKKyAgICAvLyBGSVhNRTogRmls
dGVyIHRoZSByZXN1bHRzLgorICAgIHJldHVybiAmc2xvdC5tYW51YWxseUFzc2lnbmVkTm9kZXMo
KTsKK30KKwogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZh
bHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBudWxs
QXRvbSgpID8gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpIDogdmFsdWU7CisgICAg
cmV0dXJuIHZhbHVlID09IG51bGxBdG9tKCkgPyBOYW1lZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0
U2xvdE5hbWUoKSA6IHZhbHVlOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5h
bWVGcm9tU2xvdEF0dHJpYnV0ZShjb25zdCBOb2RlJiBjaGlsZCkKIHsKICAgICBpZiAoaXM8VGV4
dD4oY2hpbGQpKQotICAgICAgICByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFt
ZSgpOworICAgICAgICByZXR1cm4gTmFtZWRTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1l
KCk7CiAKICAgICByZXR1cm4gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoZG93bmNhc3Q8RWxl
bWVudD4oY2hpbGQpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2xvdEF0dHIpKTsK
IH0KQEAgLTcxLDExICs5NSwxMSBAQCBzdGF0aWMgSFRNTFNsb3RFbGVtZW50KiBuZXh0U2xvdEVs
ZW1lbnRTa2lwcGluZ1N1YnRyZWUoQ29udGFpbmVyTm9kZSYgc3RhcnRpbmdObwogICAgIHJldHVy
biBkb3duY2FzdDxIVE1MU2xvdEVsZW1lbnQ+KG5vZGUpOwogfQogCi1TbG90QXNzaWdubWVudDo6
U2xvdEFzc2lnbm1lbnQoKSA9IGRlZmF1bHQ7CitOYW1lZFNsb3RBc3NpZ25tZW50OjpOYW1lZFNs
b3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OwogCi1TbG90QXNzaWdubWVudDo6flNsb3RBc3NpZ25t
ZW50KCkgPSBkZWZhdWx0OworTmFtZWRTbG90QXNzaWdubWVudDo6fk5hbWVkU2xvdEFzc2lnbm1l
bnQoKSA9IGRlZmF1bHQ7CiAKLUhUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRB
c3NpZ25lZFNsb3QoY29uc3QgTm9kZSYgbm9kZSkKK0hUTUxTbG90RWxlbWVudCogTmFtZWRTbG90
QXNzaWdubWVudDo6ZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJiBub2RlKQogewogICAgIGlm
ICghaXM8VGV4dD4obm9kZSkgJiYgIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg3LDE0ICsxMTEsMTQgQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdu
bWVudDo6ZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJiBub2RlKQogICAgIHJldHVybiBmaW5k
Rmlyc3RTbG90RWxlbWVudCgqc2xvdCk7CiB9CiAKLWlubGluZSBib29sIFNsb3RBc3NpZ25tZW50
OjpoYXNBc3NpZ25lZE5vZGVzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNsb3QmIHNsb3QpCitp
bmxpbmUgYm9vbCBOYW1lZFNsb3RBc3NpZ25tZW50OjpoYXNBc3NpZ25lZE5vZGVzKFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QsIFNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50
c0lzVmFsaWQpCiAgICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOwogICAgIHJldHVybiAh
c2xvdC5hc3NpZ25lZE5vZGVzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6
cmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRv
bVN0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYg
c2hhZG93Um9vdCkKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6cmVuYW1lU2xvdEVsZW1lbnQo
SFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAg
ICBBU1NFUlQobV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90
RWxlbWVudCkpOwogCkBAIC0xMDQsNyArMTI4LDEyIEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJl
bmFtZVNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQsIGNvbnN0IEF0b21T
CiAgICAgYWRkU2xvdEVsZW1lbnRCeU5hbWUobmV3TmFtZSwgc2xvdEVsZW1lbnQsIHNoYWRvd1Jv
b3QpOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dS
b290JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50OjpkaWRJbnNlcnRTbG90
RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dS
b290KQoreworICAgIGFkZFNsb3RFbGVtZW50QnlOYW1lKHNsb3RFbGVtZW50LmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpLCBzbG90RWxlbWVudCwgc2hhZG93Um9vdCk7
Cit9CisKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCghbV9z
bG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90RWxlbWVudCkpOwpA
QCAtMTM5LDcgKzE2OCwxMiBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVudEJ5
TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAgIHJlc29sdmVT
bG90c0FmdGVyU2xvdE11dGF0aW9uKHNoYWRvd1Jvb3QsIFNsb3RNdXRhdGlvblR5cGU6Okluc2Vy
dGlvbik7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1l
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQsIENv
bnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50OjpkaWRSZW1vdmVTbG90RWxl
bWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBDb250YWluZXJOb2RlKiBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAg
ICByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShzbG90RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKG5hbWVBdHRyKSwgc2xvdEVsZW1lbnQsIG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWVGb3JSZW1vdmFsLCBzaGFkb3dSb290KTsKK30KKwordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50
OjpyZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xv
dEVsZW1lbnQmIHNsb3RFbGVtZW50LCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlRm9yUmVtb3ZhbCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIEFTU0VSVChtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFp
bnMoJnNsb3RFbGVtZW50KSk7CkBAIC0xODcsNyArMjIxLDcgQEAgdm9pZCBTbG90QXNzaWdubWVu
dDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNs
b3RFbGUKICAgICB9CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVy
U2xvdE11dGF0aW9uKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNsb3RNdXRhdGlvblR5cGUgbXV0
YXRpb25UeXBlLCBDb250YWluZXJOb2RlKiBzdWJ0cmVlVG9Ta2lwKQordm9pZCBOYW1lZFNsb3RB
c3NpZ25tZW50OjpyZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihTaGFkb3dSb290JiBzaGFk
b3dSb290LCBTbG90TXV0YXRpb25UeXBlIG11dGF0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSogc3Vi
dHJlZVRvU2tpcCkKIHsKICAgICBpZiAobV9zbG90UmVzb2x1dGlvblZlcnNpb24gPT0gbV9zbG90
TXV0YXRpb25WZXJzaW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNTksNyArMjkzLDcgQEAgdm9p
ZCBTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQWZ0ZXJTbG90TXV0YXRpb24oU2hhZG93Um9v
dCYgc2hhZG93Um9vdCwgU2xvdE0KICAgICB9CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OnNs
b3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dS
b290JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50OjpzbG90RmFsbGJhY2tE
aWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkKIHsKICAgICBpZiAoc2hhZG93Um9vdC5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY5LDcgKzMwMyw3IEBAIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OnNsb3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVt
ZW50LCBTaGFkb3dSCiAgICAgICAgIHNsb3RFbGVtZW50LmVucXVldWVTbG90Q2hhbmdlRXZlbnQo
KTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3Ry
aW5nJiBzbG90QXR0clZhbHVlLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNs
b3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21TdHJpbmcmIHNsb3RBdHRyVmFs
dWUsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgYXV0byYgc2xvdE5hbWUgPSBzbG90
TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShzbG90QXR0clZhbHVlKTsKICAgICBhdXRvKiBzbG90ID0g
bV9zbG90cy5nZXQoc2xvdE5hbWUpOwpAQCAtMjkwLDEzICszMjQsMTQgQEAgdm9pZCBTbG90QXNz
aWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiBzbG90QXR0clZhbHVlLCBT
aGFkb3dSb290JgogICAgICAgICBzbG90RWxlbWVudC0+ZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudCgp
OwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNv
bnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3ZvaWQg
TmFtZWRTbG90QXNzaWdubWVudDo6aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVt
ZW50JiBjaGlsZEVsZW1lbnQsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgZGlkQ2hh
bmdlU2xvdChjaGlsZEVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzbG90
QXR0ciksIHNoYWRvd1Jvb3QpOwogfQogCi1jb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIFNs
b3RBc3NpZ25tZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQm
IHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQorY29uc3QgVmVjdG9yPFdlYWtQ
dHI8Tm9kZT4+KiBOYW1lZFNsb3RBc3NpZ25tZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25z
dCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQog
eworICAgIEFTU0VSVChzaGFkb3dSb290LnNsb3RBc3NpZ25tZW50TW9kZSgpID09IFNsb3RBc3Np
Z25tZW50TW9kZTo6TmFtZWQpOwogICAgIEFTU0VSVChzbG90RWxlbWVudC5jb250YWluaW5nU2hh
ZG93Um9vdCgpID09ICZzaGFkb3dSb290KTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFt
ZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RFbGVtZW50LmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpKTsKICAgICBhdXRvKiBzbG90ID0gbV9zbG90cy5n
ZXQoc2xvdE5hbWUpOwpAQCAtMzE5LDcgKzM1NCw3IEBAIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5v
ZGU+PiogU2xvdEFzc2lnbm1lbnQ6OmFzc2lnbmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90
CiAgICAgcmV0dXJuICZzbG90LT5hc3NpZ25lZE5vZGVzOwogfQogCi12b2lkIFNsb3RBc3NpZ25t
ZW50Ojp3aWxsUmVtb3ZlQXNzaWduZWROb2RlKGNvbnN0IE5vZGUmIG5vZGUpCit2b2lkIE5hbWVk
U2xvdEFzc2lnbm1lbnQ6OndpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYgbm9kZSkK
IHsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzM2LDE5ICszNzEsMTkgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6d2lsbFJlbW92ZUFzc2ln
bmVkTm9kZShjb25zdCBOb2RlJiBub2RlKQogICAgIH0pOwogfQogCi1jb25zdCBBdG9tU3RyaW5n
JiBTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hpbGQp
IGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBOYW1lZFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZv
ckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsKICAgICByZXR1cm4gc2xvdE5h
bWVGcm9tU2xvdEF0dHJpYnV0ZShjaGlsZCk7CiB9CiAKLUhUTUxTbG90RWxlbWVudCogU2xvdEFz
c2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3QpCitIVE1MU2xvdEVsZW1l
bnQqIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3Qp
CiB7CiAgICAgQVNTRVJUKCFzbG90LmVsZW1lbnQgfHwgbV9zbG90RWxlbWVudHNGb3JDb25zaXN0
ZW5jeUNoZWNrLmNvbnRhaW5zKHNsb3QuZWxlbWVudC5nZXQoKSkpOwogCiAgICAgcmV0dXJuIHNs
b3QuZWxlbWVudC5nZXQoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWduU2xvdHMo
U2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6YXNzaWdu
U2xvdHMoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAgICBBU1NFUlQoIW1fc2xvdEFzc2ln
bm1lbnRzSXNWYWxpZCk7CiAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gdHJ1ZTsKQEAg
LTM2OSw3ICs0MDQsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90cyhTaGFkb3dS
b290JiBzaGFkb3dSb290KQogICAgICAgICBlbnRyeS52YWx1ZS0+YXNzaWduZWROb2Rlcy5zaHJp
bmtUb0ZpdCgpOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYg
Y2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKQordm9pZCBOYW1lZFNsb3RBc3NpZ25t
ZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1l
KQogewogICAgIEFTU0VSVCghc2xvdE5hbWUuaXNOdWxsKCkpOwogICAgIGlmIChzbG90TmFtZSA9
PSBkZWZhdWx0U2xvdE5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Ns
b3RBc3NpZ25tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAppbmRl
eCBlZTVjOWRiZjBjMzEuLmE1MDI0Y2U0N2U3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Nsb3RBc3NpZ25tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25t
ZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50TW9kZS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MywyNyArNDQsODcgQEAgY2xhc3MgTm9kZTsKIGNs
YXNzIFNsb3RBc3NpZ25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbG90QXNzaWdu
bWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNsb3RBc3NpZ25t
ZW50KCk7Ci0gICAgdmlydHVhbCB+U2xvdEFzc2lnbm1lbnQoKTsKKyAgICB2aXJ0dWFsIH5TbG90
QXNzaWdubWVudCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW51YWxB
c3NpZ25tZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBIVE1MU2xvdEVsZW1lbnQqIGZp
bmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW5h
bWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBTaGFkb3dSb290JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRJbnNlcnRTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVTbG90RWxlbWVudChIVE1MU2xvdEVs
ZW1lbnQmLCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCwg
U2hhZG93Um9vdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2xvdEZhbGxiYWNrRGlkQ2hhbmdl
KEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFVwZGF0ZU1hbnVhbGx5QXNzaWduZWROb2RlcyhIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBW
ZWN0b3I8V2Vha1B0cjxOb2RlPj4mLCBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92
YWwoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVBbGxDaGlsZHJlbigpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21TdHJpbmcmLCBTaGFk
b3dSb290JikgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4q
IGFzc2lnbmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3Qm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9k
ZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNv
bnN0IEVsZW1lbnQmLCBTaGFkb3dSb290JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgU2xvdEFz
c2lnbm1lbnQoKSA9IGRlZmF1bHQ7Cit9OworCitjbGFzcyBNYW51YWxTbG90QXNzaWdubWVudCBm
aW5hbCA6IHB1YmxpYyBTbG90QXNzaWdubWVudCB7CitwdWJsaWM6CisgICAgTWFudWFsU2xvdEFz
c2lnbm1lbnQoKTsKKyAgICB+TWFudWFsU2xvdEFzc2lnbm1lbnQoKTsKKworICAgIGJvb2wgaXNN
YW51YWxBc3NpZ25tZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAg
IEhUTUxTbG90RWxlbWVudCogZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJikgZmluYWw7CisK
KyAgICB2b2lkIHJlbmFtZVNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYsIGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZGlkSW5zZXJ0U2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVtb3ZlU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgQ29u
dGFpbmVyTm9kZSogb2xkUGFyZW50T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNoYWRvd1Jvb3Qm
KSBmaW5hbDsKKyAgICB2b2lkIHNsb3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQm
LCBTaGFkb3dSb290JikgZmluYWwgeyB9CisKKyAgICB2b2lkIHdpbGxVcGRhdGVNYW51YWxseUFz
c2lnbmVkTm9kZXMoSFRNTFNsb3RFbGVtZW50JiwgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+
JiwgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+JikgZmluYWwgeyB9CisgICAgdm9pZCByZXNv
bHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCkgZmluYWwgeyB9CisgICAgdm9p
ZCB3aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKSBmaW5hbCB7IH0KKworICAgIHZvaWQgZGlkQ2hhbmdl
U2xvdChjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorCisgICAgY29u
c3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1M
U2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlQXNz
aWduZWROb2RlKGNvbnN0IE5vZGUmKSBmaW5hbCB7IH0KKworICAgIHZvaWQgaG9zdENoaWxkRWxl
bWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorCitw
cml2YXRlOgorICAgIFdlYWtIYXNoTWFwPE5vZGUsIFdlYWtQdHI8SFRNTFNsb3RFbGVtZW50Pj4g
bV9hc3NpZ25lZFNsb3RNYXA7Cit9OworCitjbGFzcyBOYW1lZFNsb3RBc3NpZ25tZW50IDogcHVi
bGljIFNsb3RBc3NpZ25tZW50IHsKK3B1YmxpYzoKKyAgICBOYW1lZFNsb3RBc3NpZ25tZW50KCk7
CisgICAgdmlydHVhbCB+TmFtZWRTbG90QXNzaWdubWVudCgpOwogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAK
LSAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpOworICAg
IGJvb2wgaXNNYW51YWxBc3NpZ25tZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZvaWQgcmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgY29uc3QgQXRv
bVN0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYp
OwotICAgIHZvaWQgYWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxT
bG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKLSAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlO
YW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmLCBDb250YWluZXJOb2RlKiBv
bGRQYXJlbnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCwgU2hhZG93Um9vdCYpOwotICAgIHZvaWQg
c2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKKyAg
ICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpIGZpbmFsOwog
Ci0gICAgdm9pZCByZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCk7Ci0g
ICAgdm9pZCB3aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICB2b2lkIHJlbmFtZVNsb3RFbGVt
ZW50KEhUTUxTbG90RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIG5ld05hbWUsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEluc2Vy
dFNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlbW92ZVNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYsIENvbnRhaW5lck5vZGUq
IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBTaGFkb3dSb290JikgZmluYWw7Cisg
ICAgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9v
dCYpIGZpbmFsOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21TdHJpbmcmLCBT
aGFkb3dSb290Jik7CisgICAgdm9pZCB3aWxsVXBkYXRlTWFudWFsbHlBc3NpZ25lZE5vZGVzKEhU
TUxTbG90RWxlbWVudCYsIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiYsIGNvbnN0IFZlY3Rv
cjxXZWFrUHRyPE5vZGU+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVzb2x2ZVNsb3RzQmVmb3Jl
Tm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZUFsbENo
aWxkcmVuKCkgZmluYWw7CiAKLSAgICBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIGFzc2ln
bmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKLSAg
ICB2b2lkIHdpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpOworICAgIHZvaWQgZGlk
Q2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpIGZpbmFsOwogCi0gICAg
dmlydHVhbCB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNo
YWRvd1Jvb3QmKTsKKyAgICBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIGFzc2lnbmVkTm9k
ZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAg
ICB2b2lkIHdpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpIGZpbmFsOworCisgICAg
dm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmLCBTaGFkb3dSb290
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNsb3QgewpAQCAtODMsNiArMTQ0
LDEwIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIGJvb2wgaGFzQXNzaWduZWROb2RlcyhTaGFk
b3dSb290JiwgU2xvdCYpOworCisgICAgdm9pZCByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgQ29udGFpbmVyTm9kZSogb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNoYWRvd1Jvb3QmKTsKKyAgICB2b2lkIGFkZFNsb3RF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dS
b290Jik7CisKICAgICBlbnVtIGNsYXNzIFNsb3RNdXRhdGlvblR5cGUgeyBJbnNlcnRpb24sIFJl
bW92YWwgfTsKICAgICB2b2lkIHJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKFNoYWRvd1Jv
b3QmLCBTbG90TXV0YXRpb25UeXBlLCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlID0gbnVsbHB0cik7CiAKQEAgLTEwNiwxMyArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9zbG90RWxlbWVudENvdW50IHsgMCB9OwogfTsKIAotaW5saW5lIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OnJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKQoraW5s
aW5lIHZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2Vy
dGlvbk9yUmVtb3ZhbCgpCiB7CiAgICAgbV9zbG90TXV0YXRpb25WZXJzaW9uKys7CiAgICAgbV93
aWxsQmVSZW1vdmluZ0FsbENoaWxkcmVuID0gZmFsc2U7CiB9CiAKLWlubGluZSB2b2lkIFNsb3RB
c3NpZ25tZW50Ojp3aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKQoraW5saW5lIHZvaWQgTmFtZWRTbG90
QXNzaWdubWVudDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKCkKIHsKICAgICBtX3Nsb3RNdXRhdGlv
blZlcnNpb24rKzsKICAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYzRkMTE0OWMzMjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNz
IFNsb3RBc3NpZ25tZW50TW9kZSA6IHVpbnQ4X3QgeworICAgIE1hbnVhbCwKKyAgICBOYW1lZCwK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudE1v
ZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50TW9kZS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZDdhMTNmNmVkZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnRNb2RlLmlkbApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBTbG90QXNzaWdubWVudE1vZGUgeworICAg
ICJtYW51YWwiLAorICAgICJuYW1lZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKaW5kZXggYmY1NDMyYWYzMTZlLi5hMjczM2Q1Nzc1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnlTbG90TmFtZSgpCiAgICAgcmV0dXJuIHN1
bW1hcnlTbG90OwogfQogCi1jbGFzcyBEZXRhaWxzU2xvdEFzc2lnbm1lbnQgZmluYWwgOiBwdWJs
aWMgU2xvdEFzc2lnbm1lbnQgeworY2xhc3MgRGV0YWlsc1Nsb3RBc3NpZ25tZW50IGZpbmFsIDog
cHVibGljIE5hbWVkU2xvdEFzc2lnbm1lbnQgewogcHJpdmF0ZToKICAgICB2b2lkIGhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBvdmVycmlkZTsK
ICAgICBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRGV0YWlsc1Nsb3RBc3NpZ25t
ZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVu
CiAgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIGFuc3dlciB3aGVuIHRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIGluc2lkZSBFbGVtZW50OjpyZW1vdmVkRnJvbS4KICAgICAgICAgZGlk
Q2hhbmdlU2xvdChzdW1tYXJ5U2xvdE5hbWUoKSwgc2hhZG93Um9vdCk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGRpZENoYW5nZVNsb3QoU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpLCBz
aGFkb3dSb290KTsKKyAgICAgICAgZGlkQ2hhbmdlU2xvdChOYW1lZFNsb3RBc3NpZ25tZW50Ojpk
ZWZhdWx0U2xvdE5hbWUoKSwgc2hhZG93Um9vdCk7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIERl
dGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hp
bGQpIGNvbnN0CkBAIC03OCw3ICs3OCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIERldGFpbHNTbG90
QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hpbGQpCiAgICAg
ICAgIGlmICgmY2hpbGQgPT0gY2hpbGRyZW5PZlR5cGU8SFRNTFN1bW1hcnlFbGVtZW50PihkZXRh
aWxzKS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnlTbG90TmFtZSgpOwogICAg
IH0KLSAgICByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpOworICAgIHJl
dHVybiBOYW1lZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKTsKIH0KIAogUmVmPEhU
TUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDMyNDE4ODk3MWVhMi4uMzU5M2UyOTQ5YWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCkBAIC02MSw4ICs2MSw4IEBAIEhU
TUxTbG90RWxlbWVudDo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTFNsb3RFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3RvCiAgICAgQVNTRVJUX1VOVVNFRChpbnNlcnRpb25SZXN1bHQs
IGluc2VydGlvblJlc3VsdCA9PSBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZSk7CiAK
ICAgICBpZiAoaW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkICYmIGlzSW5TaGFkb3dUcmVl
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9v
dCgpKQotICAgICAgICAgICAgc2hhZG93Um9vdC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUoYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0ciksICp0aGlzKTsKKyAgICAgICAgaWYg
KFJlZlB0ciBzaGFkb3dSb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAg
IHNoYWRvd1Jvb3QtPmRpZEluc2VydFNsb3RFbGVtZW50KCp0aGlzKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQ6OkRvbmU7CkBAIC03MSw5ICs3MSwxMCBA
QCBIVE1MU2xvdEVsZW1lbnQ6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxTbG90RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0bwogdm9pZCBIVE1MU2xvdEVsZW1lbnQ6OnJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5n
ZWQgJiYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5pc0luU2hhZG93VHJlZSgpKSB7Ci0gICAgICAg
IGF1dG8qIG9sZFNoYWRvd1Jvb3QgPSBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmNvbnRhaW5pbmdT
aGFkb3dSb290KCk7CisgICAgICAgIFJlZlB0ciBvbGRTaGFkb3dSb290ID0gb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZS5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgICAgICBBU1NFUlQob2xkU2hh
ZG93Um9vdCk7Ci0gICAgICAgIG9sZFNoYWRvd1Jvb3QtPnJlbW92ZVNsb3RFbGVtZW50QnlOYW1l
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpLCAqdGhpcywgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgICAgIG9sZFNoYWRvd1Jvb3QtPmRpZFJlbW92ZVNsb3RF
bGVtZW50KCp0aGlzLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKy8vICAgICAgICBvbGRTaGFk
b3dSb290LT5yZW1vdmVTbG90RWxlbWVudEJ5TmFtZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKG5hbWVBdHRyKSwgKnRoaXMsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogICAgIH0K
IAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlKTsKQEAgLTE2NCw2ICsxNjUsMjQgQEAgVmVjdG9yPFJlZjxFbGVt
ZW50Pj4gSFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZEVsZW1lbnRzKGNvbnN0IEFzc2lnbmVkTm9k
ZXNPcHRpb24KICAgICB9KTsKIH0KIAordm9pZCBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbihGaXhl
ZFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5vZGU+PiYmIG5vZGVzKQoreworICAgIGF1
dG8gYXNzaWduZWROb2RlcyA9IFdURjo6bWFwKG5vZGVzLCBbXShhdXRvJiBub2RlKSB7CisvKiAg
ICAgICAgV2Vha1B0cjxOb2RlPiB3ZWFrUHRyOworICAgICAgICBXVEY6OnN3aXRjaE9uKG5vZGUs
CisgICAgICAgICAgICBbJl0oUmVmPEVsZW1lbnQ+JiBlbGVtZW50KSB7IHdlYWtQdHIgPSBlbGVt
ZW50OyB9LAorICAgICAgICAgICAgWyZdKFJlZjxUZXh0PiYgdGV4dCkgeyB3ZWFrUHRyID0gdGV4
dDsgfSk7CisgICAgICAgIEFTU0VSVCh3ZWFrUHRyKTsKKyAgICAgICAgcmV0dXJuIHdlYWtQdHI7
Ki8KKyAgICAgICAgcmV0dXJuIFdlYWtQdHI8Tm9kZT4geyBub2RlIH07CisgICAgfSk7CisKKyAg
ICBpZiAoUmVmUHRyIHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAg
ICBzaGFkb3dSb290LT53aWxsVXBkYXRlTWFudWFsbHlBc3NpZ25lZE5vZGVzKCp0aGlzLCBtX21h
bnVhbGx5QXNzaWduZWROb2RlcywgYXNzaWduZWROb2Rlcyk7CisKKyAgICBtX21hbnVhbGx5QXNz
aWduZWROb2RlcyA9IGFzc2lnbmVkTm9kZXM7Cit9CisKIHZvaWQgSFRNTFNsb3RFbGVtZW50Ojpl
bnF1ZXVlU2xvdENoYW5nZUV2ZW50KCkKIHsKICAgICAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI3NpZ25hbC1hLXNsb3QtY2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTbG90RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuaAppbmRleCAwYmUyOWRhNjZlMWUuLmEyYjc5YWFlOGIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0K
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00Miw2ICs0Miw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmPE5v
ZGU+PiBhc3NpZ25lZE5vZGVzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJikgY29uc3Q7CiAg
ICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gYXNzaWduZWRFbGVtZW50cyhjb25zdCBBc3NpZ25lZE5v
ZGVzT3B0aW9ucyYpIGNvbnN0OwogCisgICAgdm9pZCBhc3NpZ24oRml4ZWRWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxOb2RlPj4mJik7CisgICAgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9k
ZT4+JiBtYW51YWxseUFzc2lnbmVkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX21hbnVhbGx5QXNz
aWduZWROb2RlczsgfQorCiAgICAgdm9pZCBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CiAgICAg
dm9pZCBkaWRSZW1vdmVGcm9tU2lnbmFsU2xvdExpc3QoKSB7IG1faW5TaWduYWxTbG90TGlzdCA9
IGZhbHNlOyB9CiAKQEAgLTU5LDYgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pblNp
Z25hbFNsb3RMaXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNJbkluc2VydGVkSW50b0FuY2Vz
dG9yIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8V2Vha1B0cjxOb2RlPj4gbV9tYW51YWxseUFzc2ln
bmVkTm9kZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
bG90RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwK
aW5kZXggMmJmYWIzODUwOTE3Li5kNTc2M2U3ZWM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTbG90RWxlbWVudC5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgc2VxdWVuY2U8
Tm9kZT4gYXNzaWduZWROb2RlcyhvcHRpb25hbCBBc3NpZ25lZE5vZGVzT3B0aW9ucyBvcHRpb25z
KTsKICAgICBzZXF1ZW5jZTxFbGVtZW50PiBhc3NpZ25lZEVsZW1lbnRzKG9wdGlvbmFsIEFzc2ln
bmVkTm9kZXNPcHRpb25zIG9wdGlvbnMpOworICAgIHVuZGVmaW5lZCBhc3NpZ24oTm9kZS4uLiBu
b2Rlcyk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZShFbGVtZW50IG9yIFRleHQpIGluc3RlYWQg
b2YgTm9kZS4KIH07CiAKIGRpY3Rpb25hcnkgQXNzaWduZWROb2Rlc09wdGlvbnMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IGQ1ZTQ1NjJhNDBhMS4u
NTdjZjEwNWM2Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQu
Y3BwCkBAIC00MSwxNCArNDEsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEhUTUxT
dW1tYXJ5RWxlbWVudCk7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIFN1
bW1hcnlTbG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTbG90QXNzaWdubWVudCB7CitjbGFzcyBT
dW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTmFtZWRTbG90QXNzaWdubWVudCB7CiBw
cml2YXRlOgogICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50
JiwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGRpZENo
YW5nZVNsb3QoU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpLCBzaGFkb3dSb290KTsK
KyAgICAgICAgZGlkQ2hhbmdlU2xvdChOYW1lZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5h
bWUoKSwgc2hhZG93Um9vdCk7CiAgICAgfQogCi0gICAgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5h
bWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNsb3RB
c3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHNs
b3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBO
YW1lZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKTsgfQogfTsKIAogUmVmPEhUTUxT
dW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461478</attachid>
            <date>2022-08-08 02:18:48 -0700</date>
            <delta_ts>2022-08-08 02:42:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip218692b.patch</filename>
            <type>text/plain</type>
            <size>28023</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiODUyN2RhMTA4YzUuLmI1MjE5ZWZmYzc1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjgyMCw3ICsyODIwLDcgQEAgdm9pZCBFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgY2FzZSBD
aGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdl
OjpUeXBlOjpUZXh0UmVtb3ZlZDoKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4
dENoYW5nZWQ6Ci0gICAgICAgICAgICBzaGFkb3dSb290LT5kaWRDaGFuZ2VEZWZhdWx0U2xvdCgp
OworICAgICAgICAgICAgc2hhZG93Um9vdC0+ZGlkTXV0YXRlVGV4dE5vZGVzT2ZTaGFkb3dIb3N0
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBl
OjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCA0Y2ZiMjY5ZTI0ZmIuLjkxODM0OWVjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5h
bWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNT
RVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50
KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4o
KTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8TmFtZWRTbG90QXNzaWdu
bWVudD4oKTsKIAogICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5
TmFtZShuYW1lLCBzbG90LCAqdGhpcyk7CiB9CkBAIC0yNjEsNiArMjYxLDEyIEBAIHZvaWQgU2hh
ZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
SFRNTFNsb3RFbGVtZW50CiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPnJlbW92ZVNsb3RF
bGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICZvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCAqdGhpcyk7
CiB9CiAKK3ZvaWQgU2hhZG93Um9vdDo6c2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2UoSFRN
TFNsb3RFbGVtZW50JiBzbG90KQoreworICAgIEFTU0VSVChtX3Nsb3RBc3NpZ25tZW50KTsKKyAg
ICBtX3Nsb3RBc3NpZ25tZW50LT5zbG90TWFudWFsQXNzaWdubWVudERpZENoYW5nZShzbG90LCAq
dGhpcyk7Cit9CisKIHZvaWQgU2hhZG93Um9vdDo6c2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxT
bG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9vdE5vZGUoKSA9PSB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDBlZDUyMzJjN2ZhOS4uZGMxMDYwZTQ5YTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTk1LDEzICs5NSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lKTsKICAgICB2b2lkIGFkZFNs
b3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmKTsKICAg
ICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xv
dEVsZW1lbnQmLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICB2
b2lkIHNsb3RNYW51YWxBc3NpZ25tZW50RGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYpOwogICAg
IHZvaWQgc2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYpOwogICAgIHZvaWQg
cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwogICAgIHZvaWQgd2ls
bFJlbW92ZUFsbENoaWxkcmVuKENvbnRhaW5lck5vZGUmKTsKICAgICB2b2lkIHdpbGxSZW1vdmVB
c3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxDaGlsZHJl
bk9mU2hhZG93SG9zdCgpOwotICAgIHZvaWQgZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKKyAgICB2
b2lkIGRpZE11dGF0ZVRleHROb2Rlc09mU2hhZG93SG9zdCgpOwogICAgIHZvaWQgaG9zdENoaWxk
RWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50Jik7CiAgICAgdm9pZCBob3N0Q2hpbGRFbGVt
ZW50RGlkQ2hhbmdlU2xvdEF0dHJpYnV0ZShFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5jcHAKaW5kZXggYTM1NDllZjI4ZWM2Li45NWRlN2U0MDAyZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJSZW5kZXJUcmVlVXBkYXRlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIApAQCAtMzUsMTUgKzM2LDI2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAor
c3RydWN0IFNhbWVTaXplQXNOYW1lZFNsb3RBc3NpZ25tZW50IHsKKyAgICB2aXJ0dWFsIH5TYW1l
U2l6ZUFzTmFtZWRTbG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsKKyAgICB1aW50MzJfdCB2YWx1
ZXNbNF07CisgICAgSGFzaE1hcDx2b2lkKiwgdm9pZCo+IHBvaW50ZXI7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBIYXNoU2V0PHZvaWQqPiBoYXNoU2V0OworI2VuZGlmCit9OworCitzdGF0aWNf
YXNzZXJ0KHNpemVvZihOYW1lZFNsb3RBc3NpZ25tZW50KSA9PSBzaXplb2YoU2FtZVNpemVBc05h
bWVkU2xvdEFzc2lnbm1lbnQpLCAiTmFtZWRTbG90QXNzaWdubWVudCBzaG91bGQgcmVtYWluIHNt
YWxsIik7CisKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZyb21BdHRyaWJ1dGVW
YWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gbnVs
bEF0b20oKSA/IFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKSA6IHZhbHVlOworICAg
IHJldHVybiB2YWx1ZSA9PSBudWxsQXRvbSgpID8gTmFtZWRTbG90QXNzaWdubWVudDo6ZGVmYXVs
dFNsb3ROYW1lKCkgOiB2YWx1ZTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNsb3RO
YW1lRnJvbVNsb3RBdHRyaWJ1dGUoY29uc3QgTm9kZSYgY2hpbGQpCiB7CiAgICAgaWYgKGlzPFRl
eHQ+KGNoaWxkKSkKLSAgICAgICAgcmV0dXJuIFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5h
bWUoKTsKKyAgICAgICAgcmV0dXJuIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFt
ZSgpOwogCiAgICAgcmV0dXJuIHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKGRvd25jYXN0PEVs
ZW1lbnQ+KGNoaWxkKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNsb3RBdHRyKSk7
CiB9CkBAIC03MSwxMSArODMsMTEgQEAgc3RhdGljIEhUTUxTbG90RWxlbWVudCogbmV4dFNsb3RF
bGVtZW50U2tpcHBpbmdTdWJ0cmVlKENvbnRhaW5lck5vZGUmIHN0YXJ0aW5nTm8KICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTFNsb3RFbGVtZW50Pihub2RlKTsKIH0KIAotU2xvdEFzc2lnbm1lbnQ6
OlNsb3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OworTmFtZWRTbG90QXNzaWdubWVudDo6TmFtZWRT
bG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsKIAotU2xvdEFzc2lnbm1lbnQ6On5TbG90QXNzaWdu
bWVudCgpID0gZGVmYXVsdDsKK05hbWVkU2xvdEFzc2lnbm1lbnQ6On5OYW1lZFNsb3RBc3NpZ25t
ZW50KCkgPSBkZWZhdWx0OwogCi1IVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5k
QXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUpCitIVE1MU2xvdEVsZW1lbnQqIE5hbWVkU2xv
dEFzc2lnbm1lbnQ6OmZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYgbm9kZSkKIHsKICAgICBp
ZiAoIWlzPFRleHQ+KG5vZGUpICYmICFpczxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC04NywxNCArOTksMTQgQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdu
bWVudDo6ZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJiBub2RlKQogICAgIHJldHVybiBmaW5k
Rmlyc3RTbG90RWxlbWVudCgqc2xvdCk7CiB9CiAKLWlubGluZSBib29sIFNsb3RBc3NpZ25tZW50
OjpoYXNBc3NpZ25lZE5vZGVzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNsb3QmIHNsb3QpCitp
bmxpbmUgYm9vbCBOYW1lZFNsb3RBc3NpZ25tZW50OjpoYXNBc3NpZ25lZE5vZGVzKFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QsIFNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50
c0lzVmFsaWQpCiAgICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOwogICAgIHJldHVybiAh
c2xvdC5hc3NpZ25lZE5vZGVzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6
cmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRv
bVN0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYg
c2hhZG93Um9vdCkKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6cmVuYW1lU2xvdEVsZW1lbnQo
SFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAg
ICBBU1NFUlQobV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90
RWxlbWVudCkpOwogCkBAIC0xMDQsNyArMTE2LDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVu
YW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRvbVMK
ICAgICBhZGRTbG90RWxlbWVudEJ5TmFtZShuZXdOYW1lLCBzbG90RWxlbWVudCwgc2hhZG93Um9v
dCk7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQsIFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QpCit2b2lkIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1l
bnQsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBB
U1NFUlQoIW1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucygmc2xvdEVs
ZW1lbnQpKTsKQEAgLTEzOSw3ICsxNTEsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90
RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAg
IHJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKHNoYWRvd1Jvb3QsIFNsb3RNdXRhdGlvblR5
cGU6Okluc2VydGlvbik7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVt
ZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgc2xvdEVs
ZW1lbnQsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBT
aGFkb3dSb290JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50OjpyZW1vdmVT
bG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQm
IHNsb3RFbGVtZW50LCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlRm9yUmVt
b3ZhbCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IEFTU0VSVChtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFpbnMoJnNsb3RF
bGVtZW50KSk7CkBAIC0xODcsNyArMTk5LDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3Zl
U2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGUKICAg
ICB9CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0
aW9uKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFNsb3RNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBl
LCBDb250YWluZXJOb2RlKiBzdWJ0cmVlVG9Ta2lwKQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50
OjpyZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihTaGFkb3dSb290JiBzaGFkb3dSb290LCBT
bG90TXV0YXRpb25UeXBlIG11dGF0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSogc3VidHJlZVRvU2tp
cCkKIHsKICAgICBpZiAobV9zbG90UmVzb2x1dGlvblZlcnNpb24gPT0gbV9zbG90TXV0YXRpb25W
ZXJzaW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNTksNyArMjcxLDExIEBAIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKFNoYWRvd1Jvb3QmIHNoYWRv
d1Jvb3QsIFNsb3RNCiAgICAgfQogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjpzbG90RmFsbGJh
Y2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCkKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6c2xvdE1hbnVhbEFzc2lnbm1lbnRE
aWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpCit7Cit9CisKK3ZvaWQgTmFt
ZWRTbG90QXNzaWdubWVudDo6c2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYg
c2xvdEVsZW1lbnQsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgaWYgKHNoYWRvd1Jv
b3QubW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsK
QEAgLTI2OSw3ICsyODUsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpzbG90RmFsbGJhY2tEaWRD
aGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93UgogICAgICAgICBzbG90
RWxlbWVudC5lbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1l
bnQ6OmRpZENoYW5nZVNsb3QoY29uc3QgQXRvbVN0cmluZyYgc2xvdEF0dHJWYWx1ZSwgU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xv
dChjb25zdCBBdG9tU3RyaW5nJiBzbG90QXR0clZhbHVlLCBTaGFkb3dSb290JiBzaGFkb3dSb290
KQogewogICAgIGF1dG8mIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xv
dEF0dHJWYWx1ZSk7CiAgICAgYXV0byogc2xvdCA9IG1fc2xvdHMuZ2V0KHNsb3ROYW1lKTsKQEAg
LTI5MCwxMiArMzA2LDI5IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QoY29u
c3QgQXRvbVN0cmluZyYgc2xvdEF0dHJWYWx1ZSwgU2hhZG93Um9vdCYKICAgICAgICAgc2xvdEVs
ZW1lbnQtPmVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVu
dDo6aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQs
IFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit2b2lkIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmRpZFJl
bW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7Cisg
ICAgZGlkQ2hhbmdlU2xvdChudWxsQXRvbSgpLCBzaGFkb3dSb290KTsgLy8gRklYTUU6IFRoaXMg
aXMgaW5jb3JyZWN0IHdoZW4gdGhlcmUgd2VyZSBubyBlbGVtZW50cyBvciB0ZXh0IG5vZGVzIHJl
bW92ZWQuCit9CisKK3ZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6ZGlkTXV0YXRlVGV4dE5vZGVz
T2ZTaGFkb3dIb3N0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7CisgICAgZGlkQ2hhbmdlU2xv
dChudWxsQXRvbSgpLCBzaGFkb3dSb290KTsKK30KKwordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50
Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVudCwg
U2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAgICBkaWRDaGFuZ2VTbG90KGNoaWxkRWxlbWVu
dC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNsb3RBdHRyKSwgc2hhZG93Um9vdCk7
CiB9CiAKLWNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogU2xvdEFzc2lnbm1lbnQ6OmFzc2ln
bmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQsIFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QpCit2b2lkIE5hbWVkU2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVs
ZW1lbnREaWRDaGFuZ2VTbG90QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21T
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgU2hhZG93Um9vdCYg
c2hhZG93Um9vdCkKK3sKKyAgICBkaWRDaGFuZ2VTbG90KG9sZFZhbHVlLCBzaGFkb3dSb290KTsK
KyAgICBkaWRDaGFuZ2VTbG90KG5ld1ZhbHVlLCBzaGFkb3dSb290KTsKKyAgICBSZW5kZXJUcmVl
VXBkYXRlcjo6dGVhckRvd25SZW5kZXJlcnMoZWxlbWVudCk7Cit9CisKK2NvbnN0IFZlY3RvcjxX
ZWFrUHRyPE5vZGU+PiogTmFtZWRTbG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3Qo
Y29uc3QgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9v
dCkKIHsKICAgICBBU1NFUlQoc2xvdEVsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSA9PSAm
c2hhZG93Um9vdCk7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUgPSBzbG90TmFtZUZy
b21BdHRyaWJ1dGVWYWx1ZShzbG90RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG5hbWVBdHRyKSk7CkBAIC0zMTksNyArMzUyLDcgQEAgY29uc3QgVmVjdG9yPFdlYWtQdHI8
Tm9kZT4+KiBTbG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNs
b3QKICAgICByZXR1cm4gJnNsb3QtPmFzc2lnbmVkTm9kZXM7CiB9CiAKLXZvaWQgU2xvdEFzc2ln
bm1lbnQ6OndpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYgbm9kZSkKK3ZvaWQgTmFt
ZWRTbG90QXNzaWdubWVudDo6d2lsbFJlbW92ZUFzc2lnbmVkTm9kZShjb25zdCBOb2RlJiBub2Rl
KQogewogICAgIGlmICghbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQogICAgICAgICByZXR1cm47
CkBAIC0zMzYsMTkgKzM2OSwxOSBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojp3aWxsUmVtb3ZlQXNz
aWduZWROb2RlKGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgfSk7CiB9CiAKLWNvbnN0IEF0b21TdHJp
bmcmIFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGls
ZCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1l
Rm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogewogICAgIHJldHVybiBzbG90
TmFtZUZyb21TbG90QXR0cmlidXRlKGNoaWxkKTsKIH0KIAotSFRNTFNsb3RFbGVtZW50KiBTbG90
QXNzaWdubWVudDo6ZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xvdCYgc2xvdCkKK0hUTUxTbG90RWxl
bWVudCogTmFtZWRTbG90QXNzaWdubWVudDo6ZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xvdCYgc2xv
dCkKIHsKICAgICBBU1NFUlQoIXNsb3QuZWxlbWVudCB8fCBtX3Nsb3RFbGVtZW50c0ZvckNvbnNp
c3RlbmN5Q2hlY2suY29udGFpbnMoc2xvdC5lbGVtZW50LmdldCgpKSk7CiAKICAgICByZXR1cm4g
c2xvdC5lbGVtZW50LmdldCgpOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90
cyhTaGFkb3dSb290JiBzaGFkb3dSb290KQordm9pZCBOYW1lZFNsb3RBc3NpZ25tZW50Ojphc3Np
Z25TbG90cyhTaGFkb3dSb290JiBzaGFkb3dSb290KQogewogICAgIEFTU0VSVCghbV9zbG90QXNz
aWdubWVudHNJc1ZhbGlkKTsKICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSB0cnVlOwpA
QCAtMzY5LDcgKzQwMiw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblNsb3RzKFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QpCiAgICAgICAgIGVudHJ5LnZhbHVlLT5hc3NpZ25lZE5vZGVzLnNo
cmlua1RvRml0KCk7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2Rl
JiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUpCit2b2lkIE5hbWVkU2xvdEFzc2ln
bm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5h
bWUpCiB7CiAgICAgQVNTRVJUKCFzbG90TmFtZS5pc051bGwoKSk7CiAgICAgaWYgKHNsb3ROYW1l
ID09IGRlZmF1bHRTbG90TmFtZSgpKSB7CkBAIC0zODUsNiArNDE4LDg1IEBAIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xv
dE5hbWUpCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXNzaWduZWROb2Rlcy5hcHBl
bmQoY2hpbGQpOwogfQogCitIVE1MU2xvdEVsZW1lbnQqIE1hbnVhbFNsb3RBc3NpZ25tZW50Ojpm
aW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgYXV0byBpdCA9IG1fbm9k
ZUFzc2lnbm1lbnQuZmluZChub2RlKTsKKyAgICBpZiAoaXQgPT0gbV9ub2RlQXNzaWdubWVudC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQo
KTsKK30KKworY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBNYW51YWxTbG90QXNzaWdubWVu
dDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50JiBzbG90LCBTaGFk
b3dSb290JikKK3sKKyAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3QpOworICAgIGlmIChp
dCA9PSBtX3Nsb3RzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
Jml0LT52YWx1ZS5hc3NpZ25tZW50OworfQorCit2b2lkIE1hbnVhbFNsb3RBc3NpZ25tZW50Ojpy
ZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgQXRvbVN0cmluZyYsIFNoYWRvd1Jvb3QmKQoreworfQorCit2b2lkIE1hbnVhbFNsb3RBc3Np
Z25tZW50OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RF
bGVtZW50JiBzbG90LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIHNsb3RNYW51YWxB
c3NpZ25tZW50RGlkQ2hhbmdlKHNsb3QsIHNoYWRvd1Jvb3QpOworfQorCit2b2lkIE1hbnVhbFNs
b3RBc3NpZ25tZW50OjpyZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiwg
SFRNTFNsb3RFbGVtZW50JiBzbG90LCBDb250YWluZXJOb2RlKiwgU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkKK3sKKyAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3QpOworICAgIEFTU0VSVChp
dCAhPSBtX3Nsb3RzLmVuZCgpKTsKKyAgICBhdXRvIHJlbW92ZWRBc3NpZ25tZW50ID0gc3RkOjpl
eGNoYW5nZShpdC0+dmFsdWUuYXNzaWdubWVudCwgeyB9KTsKKyAgICBtX3Nsb3RzLnJlbW92ZShp
dCk7CisKKyAgICBIYXNoU2V0PFJlZjxIVE1MU2xvdEVsZW1lbnQ+PiBzbG90c1RvVXBkYXRlOwor
ICAgIGZvciAoYXV0byYgbm9kZSA6IHJlbW92ZWRBc3NpZ25tZW50KSB7CisgICAgICAgIC8vIFRo
aXMgbm9kZSBtYXkgbm93IGJlbG9uZyB0byBhbm90aGVyIHNsb3QuIEZpbmQgdGhlIG9uZSB3aXRo
IGhpZ2hlc3QgdHJlZSB2ZXJzaW9uLgorICAgICAgICBSZWZQdHI8SFRNTFNsb3RFbGVtZW50PiBz
bG90V2l0aEhpZ2hlc3RUcmVlVmVyc2lvbjsKKyAgICAgICAgdWludDY0X3QgY3VycmVudFRyZWVW
ZXJpc29uID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGl0IDogbV9zbG90cykgeworICAgICAgICAg
ICAgYXV0byBub2RlSW5kZXggPSBpdC5rZXkubWFudWFsbHlBc3NpZ25lZE5vZGVzKCkuZmluZChu
b2RlKTsKKyAgICAgICAgICAgIGlmIChub2RlSW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB1aW50NjRfdCBuZXdUcmVlVmVyc2lvbiA9IHNs
b3QubWFudWFsbHlBc3NpZ25lZE5vZGVzVHJlZVZlcnNpb24oKTsKKyAgICAgICAgICAgIGlmIChj
dXJyZW50VHJlZVZlcmlzb24gPCBuZXdUcmVlVmVyc2lvbikgeworICAgICAgICAgICAgICAgIHNs
b3RXaXRoSGlnaGVzdFRyZWVWZXJzaW9uID0gJnNsb3Q7CisgICAgICAgICAgICAgICAgY3VycmVu
dFRyZWVWZXJpc29uID0gbmV3VHJlZVZlcnNpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNsb3RXaXRoSGlnaGVzdFRyZWVWZXJzaW9uKSB7CisgICAgICAgICAgICBt
X25vZGVBc3NpZ25tZW50LnNldCgqbm9kZSwgV2Vha1B0ciB7ICpzbG90V2l0aEhpZ2hlc3RUcmVl
VmVyc2lvbiB9KTsKKyAgICAgICAgICAgIHNsb3RzVG9VcGRhdGUuYWRkKCpzbG90V2l0aEhpZ2hl
c3RUcmVlVmVyc2lvbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHNsb3Qg
OiBzbG90c1RvVXBkYXRlKQorICAgICAgICBzbG90TWFudWFsQXNzaWdubWVudERpZENoYW5nZShz
bG90LmdldCgpLCBzaGFkb3dSb290KTsKK30KKwordm9pZCBNYW51YWxTbG90QXNzaWdubWVudDo6
c2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90LCBTaGFk
b3dSb290JikKK3sKKyAgICBWZWN0b3I8V2Vha1B0cjxOb2RlPj4gYWN0dWFsQXNzaWdubWVudDsK
KyAgICBmb3IgKGF1dG8mIG5vZGUgOiBzbG90Lm1hbnVhbGx5QXNzaWduZWROb2RlcygpKSB7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ub2RlQXNzaWdubWVudC5lbnN1cmUoKm5vZGUsIFsm
XSgpIHsgcmV0dXJuIFdlYWtQdHIgeyBzbG90IH07IH0pOworICAgICAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIG1fbm9kZUFzc2lnbm1lbnQuc2V0KCpub2RlLCBX
ZWFrUHRyIHsgc2xvdCB9KTsKKyAgICAgICAgICAgIGFjdHVhbEFzc2lnbm1lbnQuYXBwZW5kKG5v
ZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyIGFu
b3RoZXJTbG90ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgaWYg
KHNsb3QubWFudWFsbHlBc3NpZ25lZE5vZGVzVHJlZVZlcnNpb24oKSA+IGFub3RoZXJTbG90LT5t
YW51YWxseUFzc2lnbmVkTm9kZXNUcmVlVmVyc2lvbigpKSB7CisgICAgICAgICAgICBhdXRvIGl0
ID0gbV9zbG90cy5maW5kKCphbm90aGVyU2xvdCk7CisgICAgICAgICAgICBBU1NFUlQoaXQgIT0g
bV9zbG90cy5lbmQoKSk7CisgICAgICAgICAgICBpdC0+dmFsdWUuYXNzaWdubWVudC5yZW1vdmVG
aXJzdChub2RlLmdldCgpKTsgLy8gbV9zbG90cworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHNsb3Q7IC8vIG1fbm9kZUFzc2lnbm1lbnQKKyAgICAgICAgICAgIGFjdHVh
bEFzc2lnbm1lbnQuYXBwZW5kKG5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIG1fc2xvdHMu
c2V0KHNsb3QsIFNsb3QgeyBXVEZNb3ZlKGFjdHVhbEFzc2lnbm1lbnQpIH0pOworfQorCiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAppbmRleCBlZTVjOWRiZjBjMzEuLjU0Y2U3
NzJlZjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKQEAgLTI1LDcgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC00MywyOSArNDIsOTIgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFNs
b3RBc3NpZ25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbG90QXNzaWdubWVudCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNsb3RBc3NpZ25tZW50KCk7
Ci0gICAgdmlydHVhbCB+U2xvdEFzc2lnbm1lbnQoKTsKKyAgICBTbG90QXNzaWdubWVudCgpID0g
ZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5TbG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsKIAotICAg
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkZWZhdWx0U2xvdE5hbWUoKSB7IHJldHVybiBlbXB0
eUF0b20oKTsgfQorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSB1c2VmdWwgZm9yIE5h
bWVkU2xvdEFzc2lnbm1lbnQgYnV0IGl0J3MgaGVyZSB0byBhdm9pZCB2aXJ0dWFsIGZ1bmN0aW9u
IGNhbGxzIGluIHBlcmYgY3JpdGljYWwgY29kZSBwYXRocy4KKyAgICB2b2lkIHJlc29sdmVTbG90
c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVBbGxD
aGlsZHJlbigpOwogCi0gICAgSFRNTFNsb3RFbGVtZW50KiBmaW5kQXNzaWduZWRTbG90KGNvbnN0
IE5vZGUmKTsKKyAgICB2aXJ0dWFsIEhUTUxTbG90RWxlbWVudCogZmluZEFzc2lnbmVkU2xvdChj
b25zdCBOb2RlJikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+
KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290
JikgPSAwOwogCi0gICAgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBj
b25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBTaGFk
b3dSb290Jik7Ci0gICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5n
JiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpOwotICAgIHZvaWQgcmVtb3ZlU2xvdEVs
ZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIENvbnRhaW5l
ck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBTaGFkb3dSb290Jik7Ci0g
ICAgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9v
dCYpOworICAgIHZpcnR1YWwgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQm
LCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBT
aGFkb3dSb290JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShj
b25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYs
IEhUTUxTbG90RWxlbWVudCYsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVG
b3JSZW1vdmFsLCBTaGFkb3dSb290JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzbG90TWFudWFs
QXNzaWdubWVudERpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50Jiwg
U2hhZG93Um9vdCYpID0gMDsKIAotICAgIHZvaWQgcmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2Vy
dGlvbk9yUmVtb3ZhbCgpOwotICAgIHZvaWQgd2lsbFJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAg
dmlydHVhbCB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNo
YWRvd1Jvb3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFu
Z2VTbG90QXR0cmlidXRlKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIFNoYWRvd1Jvb3QmKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZENoYW5nZVNsb3QoY29uc3QgQXRvbVN0cmluZyYsIFNoYWRvd1Jvb3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbFJlbW92ZUFzc2lnbmVkTm9kZShjb25zdCBOb2RlJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdChTaGFkb3dSb290JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRNdXRhdGVUZXh0Tm9kZXNPZlNoYWRvd0hvc3QoU2hhZG93
Um9vdCYpID0gMDsKKworcHJvdGVjdGVkOgorICAgIC8vIFRoZXNlIGZsYWdzIGFyZSB1c2VkIGJ5
IE5hbWVkU2xvdEFzc2lnbm1lbnQgYnV0IGl0J3MgaGVyZSB0byBhdm9pZCB2aXJ0dWFsIGZ1bmN0
aW9uIGNhbGxzIGluIHBlcmYgY3JpdGljYWwgY29kZSBwYXRocy4KKyAgICBib29sIG1fc2xvdEFz
c2lnbm1lbnRzSXNWYWxpZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dpbGxCZVJlbW92aW5nQWxs
Q2hpbGRyZW4geyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fc2xvdE11dGF0aW9uVmVyc2lvbiB7
IDAgfTsKK307CisKK2NsYXNzIE1hbnVhbFNsb3RBc3NpZ25tZW50IDogcHVibGljIFNsb3RBc3Np
Z25tZW50IHsKK3B1YmxpYzoKKyAgICBNYW51YWxTbG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsK
KworICAgIEhUTUxTbG90RWxlbWVudCogZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJiBub2Rl
KSBmaW5hbDsKKworICAgIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogYXNzaWduZWROb2Rl
c0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50JiBzbG90LCBTaGFkb3dSb290JikgZmluYWw7
CisgICAgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgQXRvbVN0cmluZyYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lk
IGFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQm
IHNsb3QsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlO
YW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QsIENvbnRhaW5lck5v
ZGUqLCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCBzbG90TWFudWFsQXNzaWdubWVudERp
ZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCBz
bG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpIGZpbmFs
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3Qg
RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBmaW5hbCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENo
aWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyaWJ1dGUoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHdpbGxSZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpIGZpbmFsIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdChTaGFkb3dS
b290JikgZmluYWwgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE11dGF0ZVRleHROb2Rlc09mU2hh
ZG93SG9zdChTaGFkb3dSb290JikgZmluYWwgeyB9CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNs
b3QgeworICAgICAgICBWZWN0b3I8V2Vha1B0cjxOb2RlPj4gYXNzaWdubWVudDsKKyAgICB9Owor
ICAgIFdlYWtIYXNoTWFwPEhUTUxTbG90RWxlbWVudCwgU2xvdD4gbV9zbG90czsKKyAgICBXZWFr
SGFzaE1hcDxOb2RlLCBXZWFrUHRyPEhUTUxTbG90RWxlbWVudD4+IG1fbm9kZUFzc2lnbm1lbnQ7
Cit9OwogCi0gICAgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBhc3NpZ25lZE5vZGVzRm9y
U2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290Jik7Ci0gICAgdm9pZCB3aWxs
UmVtb3ZlQXNzaWduZWROb2RlKGNvbnN0IE5vZGUmKTsKK2NsYXNzIE5hbWVkU2xvdEFzc2lnbm1l
bnQgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5h
bWVkU2xvdEFzc2lnbm1lbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBOYW1lZFNsb3RBc3NpZ25tZW50KCk7CisgICAgdmlydHVhbCB+TmFtZWRTbG90QXNzaWdubWVu
dCgpOworCisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsg
cmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaG9zdENoaWxkRWxlbWVu
dERpZENoYW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpOworcHJvdGVjdGVkOgorICAg
IHZvaWQgZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpOwogCiBw
cml2YXRlOgorICAgIEhUTUxTbG90RWxlbWVudCogZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2Rl
JikgZmluYWw7CisKKyAgICB2b2lkIHJlbmFtZVNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYs
IGNvbnN0IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld05hbWUsIFNo
YWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVt
ZW50JiwgQ29udGFpbmVyTm9kZSogb2xkUGFyZW50T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNo
YWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIHNsb3RNYW51YWxBc3NpZ25tZW50RGlkQ2hhbmdl
KEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIHNsb3RGYWxs
YmFja0RpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgZmluYWw7CisKKyAg
ICBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIGFzc2lnbmVkTm9kZXNGb3JTbG90KGNvbnN0
IEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1v
dmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpIGZpbmFsOworCisgICAgdm9pZCBkaWRSZW1vdmVB
bGxDaGlsZHJlbk9mU2hhZG93SG9zdChTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCBkaWRN
dXRhdGVUZXh0Tm9kZXNPZlNoYWRvd0hvc3QoU2hhZG93Um9vdCYpIGZpbmFsOworICAgIHZvaWQg
aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyaWJ1dGUo
RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBu
ZXdWYWx1ZSwgU2hhZG93Um9vdCYpIGZpbmFsOworCiAgICAgc3RydWN0IFNsb3QgewogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC05MywxNyArMTU1LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhc3NpZ25TbG90cyhTaGFkb3dSb290Jik7CiAgICAgdm9p
ZCBhc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKTsK
IAorICAgIHVuc2lnbmVkIG1fc2xvdFJlc29sdXRpb25WZXJzaW9uIHsgMCB9OworICAgIHVuc2ln
bmVkIG1fc2xvdEVsZW1lbnRDb3VudCB7IDAgfTsKKwogICAgIEhhc2hNYXA8QXRvbVN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPFNsb3Q+PiBtX3Nsb3RzOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBIYXNoU2V0PEhUTUxTbG90RWxlbWVudCo+IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lD
aGVjazsKICNlbmRpZgotCi0gICAgYm9vbCBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV93aWxsQmVSZW1vdmluZ0FsbENoaWxkcmVuIHsgZmFsc2UgfTsKLSAg
ICB1bnNpZ25lZCBtX3Nsb3RNdXRhdGlvblZlcnNpb24geyAwIH07Ci0gICAgdW5zaWduZWQgbV9z
bG90UmVzb2x1dGlvblZlcnNpb24geyAwIH07Ci0gICAgdW5zaWduZWQgbV9zbG90RWxlbWVudENv
dW50IHsgMCB9OwogfTsKIAogaW5saW5lIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90
c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKQpAQCAtMTMyLDE5ICsxOTEsMTkgQEAgaW5s
aW5lIHZvaWQgU2hhZG93Um9vdDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKENvbnRhaW5lck5vZGUm
KQogCiBpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93
SG9zdCgpCiB7Ci0gICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpIC8vIEZJWE1FOiBUaGlzIGlzIGlu
Y29ycmVjdCB3aGVuIHRoZXJlIHdlcmUgbm8gZWxlbWVudHMgb3IgdGV4dCBub2RlcyByZW1vdmVk
LgotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tKCksICp0
aGlzKTsKKyAgICBpZiAoVU5MSUtFTFkobV9zbG90QXNzaWdubWVudCkpCisgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQtPmRpZFJlbW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KCp0aGlzKTsKIH0K
IAotaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKQoraW5saW5l
IHZvaWQgU2hhZG93Um9vdDo6ZGlkTXV0YXRlVGV4dE5vZGVzT2ZTaGFkb3dIb3N0KCkKIHsKLSAg
ICBpZiAobV9zbG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudC0+ZGlkQ2hh
bmdlU2xvdChudWxsQXRvbSgpLCAqdGhpcyk7CisgICAgaWYgKFVOTElLRUxZKG1fc2xvdEFzc2ln
bm1lbnQpKQorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRNdXRhdGVUZXh0Tm9kZXNPZlNo
YWRvd0hvc3QoKnRoaXMpOwogfQogCiBpbmxpbmUgdm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRF
bGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVudCkKIHsKLSAgICBpZiAo
bV9zbG90QXNzaWdubWVudCkKKyAgICBpZiAoVU5MSUtFTFkobV9zbG90QXNzaWdubWVudCkpCiAg
ICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY2hpbGRF
bGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTE1Miw5ICsyMTEsNyBAQCBpbmxpbmUgdm9pZCBTaGFk
b3dSb290Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlU2xvdEF0dHJpYnV0ZShFbGVtZW50JiBl
bGVtZW50LAogewogICAgIGlmICghbV9zbG90QXNzaWdubWVudCkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3Qob2xkVmFsdWUsICp0aGlzKTsKLSAg
ICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG5ld1ZhbHVlLCAqdGhpcyk7Ci0gICAg
UmVuZGVyVHJlZVVwZGF0ZXI6OnRlYXJEb3duUmVuZGVyZXJzKGVsZW1lbnQpOworICAgIG1fc2xv
dEFzc2lnbm1lbnQtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cmlidXRlKGVsZW1l
bnQsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgKnRoaXMpOwogfQogCiBpbmxpbmUgdm9pZCBTaGFkb3dS
b290Ojp3aWxsUmVtb3ZlQXNzaWduZWROb2RlKGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggOTQzNTcxNDVlYmViLi4xZGZj
NjI4YzQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnlTbG90TmFt
ZSgpCiAgICAgcmV0dXJuIHN1bW1hcnlTbG90OwogfQogCi1jbGFzcyBEZXRhaWxzU2xvdEFzc2ln
bm1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgeworY2xhc3MgRGV0YWlsc1Nsb3RB
c3NpZ25tZW50IGZpbmFsIDogcHVibGljIE5hbWVkU2xvdEFzc2lnbm1lbnQgewogcHJpdmF0ZToK
ICAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRv
d1Jvb3QmKSBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZvckhvc3RD
aGlsZChjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
RGV0YWlsc1Nsb3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVs
ZW1lbnQmIGNoaWxkRWxlbWVuCiAgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIGFu
c3dlciB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluc2lkZSBFbGVtZW50OjpyZW1vdmVk
RnJvbS4KICAgICAgICAgZGlkQ2hhbmdlU2xvdChzdW1tYXJ5U2xvdE5hbWUoKSwgc2hhZG93Um9v
dCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRpZENoYW5nZVNsb3QoU2xvdEFzc2lnbm1lbnQ6OmRl
ZmF1bHRTbG90TmFtZSgpLCBzaGFkb3dSb290KTsKKyAgICAgICAgZGlkQ2hhbmdlU2xvdChOYW1l
ZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKSwgc2hhZG93Um9vdCk7CiB9CiAKIGNv
bnN0IEF0b21TdHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hp
bGQoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CkBAIC03OCw3ICs3OCw3IEBAIGNvbnN0IEF0b21T
dHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3Qg
Tm9kZSYgY2hpbGQpCiAgICAgICAgIGlmICgmY2hpbGQgPT0gY2hpbGRyZW5PZlR5cGU8SFRNTFN1
bW1hcnlFbGVtZW50PihkZXRhaWxzKS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHN1bW1h
cnlTbG90TmFtZSgpOwogICAgIH0KLSAgICByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRT
bG90TmFtZSgpOworICAgIHJldHVybiBOYW1lZFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5h
bWUoKTsKIH0KIAogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDVkNDVlNzBiYmFmMi4u
NzQ5MGI2MmI5YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCkBA
IC0xNjQsNiArMTY0LDE5IEBAIFZlY3RvcjxSZWY8RWxlbWVudD4+IEhUTUxTbG90RWxlbWVudDo6
YXNzaWduZWRFbGVtZW50cyhjb25zdCBBc3NpZ25lZE5vZGVzT3B0aW9uCiAgICAgfSk7CiB9CiAK
K3ZvaWQgSFRNTFNsb3RFbGVtZW50Ojphc3NpZ24oRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxOb2RlPj4mJiBub2RlcykKK3sKKyAgICBtX21hbnVhbGx5QXNzaWduZWROb2RlcyA9
IFdURjo6bWFwKG5vZGVzLCBbJl0oY29uc3QgTm9kZSYgbm9kZSkgeworICAgICAgICByZXR1cm4g
V2Vha1B0ciB7IG5vZGUgfTsKKyAgICB9KTsKKworICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZl
cnNpb24oKTsKKyAgICBtX2RvbVRyZWVWZXJzaW9uQXRUaW1lT2ZNYW51YWxBc3NpZ25tZW50ID0g
ZG9jdW1lbnQoKS5kb21UcmVlVmVyc2lvbigpOworCisgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290
ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2hhZG93Um9vdC0+c2xvdE1hbnVh
bEFzc2lnbm1lbnREaWRDaGFuZ2UoKnRoaXMpOworfQorCiB2b2lkIEhUTUxTbG90RWxlbWVudDo6
ZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNzaWduYWwtYS1zbG90LWNoYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2xvdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVt
ZW50LmgKaW5kZXggMGJlMjlkYTY2ZTFlLi5jYzA5NDlkOWM5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2xvdEVsZW1lbnQuaApAQCAtNDIsNiArNDIsMTAgQEAgcHVibGljOgogICAgIFZlY3Rv
cjxSZWY8Tm9kZT4+IGFzc2lnbmVkTm9kZXMoY29uc3QgQXNzaWduZWROb2Rlc09wdGlvbnMmKSBj
b25zdDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBhc3NpZ25lZEVsZW1lbnRzKGNvbnN0IEFz
c2lnbmVkTm9kZXNPcHRpb25zJikgY29uc3Q7CiAKKyAgICBjb25zdCBWZWN0b3I8V2Vha1B0cjxO
b2RlPj4mIG1hbnVhbGx5QXNzaWduZWROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFudWFsbHlB
c3NpZ25lZE5vZGVzOyB9CisgICAgdWludDY0X3QgbWFudWFsbHlBc3NpZ25lZE5vZGVzVHJlZVZl
cnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVWZXJzaW9uQXRUaW1lT2ZNYW51YWxBc3Np
Z25tZW50OyB9CisgICAgdm9pZCBhc3NpZ24oRml4ZWRWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxOb2RlPj4mJik7CisKICAgICB2b2lkIGVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKICAg
ICB2b2lkIGRpZFJlbW92ZUZyb21TaWduYWxTbG90TGlzdCgpIHsgbV9pblNpZ25hbFNsb3RMaXN0
ID0gZmFsc2U7IH0KIApAQCAtNTksNiArNjMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lu
U2lnbmFsU2xvdExpc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0luSW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fZG9tVHJlZVZlcnNpb25BdFRpbWVPZk1h
bnVhbEFzc2lnbm1lbnQgeyAwIH07CisgICAgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+IG1fbWFudWFs
bHlBc3NpZ25lZE5vZGVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2xvdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuaWRsCmluZGV4IDJiZmFiMzg1MDkxNy4uZDU3NjNlN2VjNGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCkBAIC0zMCw2ICszMCw3IEBACiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIHNl
cXVlbmNlPE5vZGU+IGFzc2lnbmVkTm9kZXMob3B0aW9uYWwgQXNzaWduZWROb2Rlc09wdGlvbnMg
b3B0aW9ucyk7CiAgICAgc2VxdWVuY2U8RWxlbWVudD4gYXNzaWduZWRFbGVtZW50cyhvcHRpb25h
bCBBc3NpZ25lZE5vZGVzT3B0aW9ucyBvcHRpb25zKTsKKyAgICB1bmRlZmluZWQgYXNzaWduKE5v
ZGUuLi4gbm9kZXMpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUoRWxlbWVudCBvciBUZXh0KSBp
bnN0ZWFkIG9mIE5vZGUuCiB9OwogCiBkaWN0aW9uYXJ5IEFzc2lnbmVkTm9kZXNPcHRpb25zIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBhOGVhN2U0
ZTAxNjYuLmE2NTdkNzlhODI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmNwcApAQCAtNDEsMjAgKzQxLDIwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChIVE1MU3VtbWFyeUVsZW1lbnQpOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1j
bGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgewor
Y2xhc3MgU3VtbWFyeVNsb3RBc3NpZ25tZW50IGZpbmFsIDogcHVibGljIE5hbWVkU2xvdEFzc2ln
bm1lbnQgewogcHJpdmF0ZToKLSAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29u
c3QgRWxlbWVudCYsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpIG92ZXJyaWRlCisgICAgdm9pZCBo
b3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmLCBTaGFkb3dSb290JiBzaGFk
b3dSb290KSBmaW5hbAogICAgIHsKLSAgICAgICAgZGlkQ2hhbmdlU2xvdChTbG90QXNzaWdubWVu
dDo6ZGVmYXVsdFNsb3ROYW1lKCksIHNoYWRvd1Jvb3QpOworICAgICAgICBkaWRDaGFuZ2VTbG90
KE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpLCBzaGFkb3dSb290KTsKICAg
ICB9CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90
TmFtZSgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29u
c3QgTm9kZSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5hbWVkU2xvdEFzc2lnbm1lbnQ6OmRlZmF1
bHRTbG90TmFtZSgpOyB9CiB9OwogCiBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFy
eUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gc3VtbWFyeSA9IGFkb3B0
UmVmKCpuZXcgSFRNTFN1bW1hcnlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgc3Vt
bWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlx
dWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CisgICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChT
aGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8U3VtbWFyeVNsb3RBc3NpZ25t
ZW50PigpKSk7CiAgICAgcmV0dXJuIHN1bW1hcnk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461479</attachid>
            <date>2022-08-08 02:42:43 -0700</date>
            <delta_ts>2022-08-08 02:42:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip218692c.patch</filename>
            <type>text/plain</type>
            <size>11583</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA0OWJiMTAzMGQ3Y2QuLmIxNGVjMDU3ZjZi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjQ5LDggKzI0OSwxMiBAQCB2b2lk
IFNoYWRvd1Jvb3Q6OnJlbmFtZVNsb3RFbGVtZW50KEhUTUxTbG90RWxlbWVudCYgc2xvdCwgY29u
c3QgQXRvbVN0cmluZyYgb2xkTgogdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFt
ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7Ci0gICAgaWYgKCFtX3Nsb3RBc3NpZ25t
ZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxOYW1lZFNsb3RBc3Np
Z25tZW50PigpOworICAgIGlmICghbV9zbG90QXNzaWdubWVudCkgeworICAgICAgICBpZiAobV9z
bG90QXNzaWdubWVudE1vZGUgPT0gU2xvdEFzc2lnbm1lbnRNb2RlOjpOYW1lZCkKKyAgICAgICAg
ICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPE5hbWVkU2xvdEFzc2lnbm1lbnQ+KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVl
PE1hbnVhbFNsb3RBc3NpZ25tZW50PigpOworICAgIH0KIAogICAgIHJldHVybiBtX3Nsb3RBc3Np
Z25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBzbG90LCAqdGhpcyk7CiB9CkBAIC0y
NjEsNiArMjY1LDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUo
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50CiAgICAgcmV0dXJuIG1fc2xv
dEFzc2lnbm1lbnQtPnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICZvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlLCAqdGhpcyk7CiB9CiAKK3ZvaWQgU2hhZG93Um9vdDo6c2xvdE1hbnVh
bEFzc2lnbm1lbnREaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90KQoreworICAgIEFTU0VS
VChtX3Nsb3RBc3NpZ25tZW50KTsKKyAgICBtX3Nsb3RBc3NpZ25tZW50LT5zbG90TWFudWFsQXNz
aWdubWVudERpZENoYW5nZShzbG90LCAqdGhpcyk7Cit9CisKIHZvaWQgU2hhZG93Um9vdDo6c2xv
dEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBBU1NFUlQo
JnNsb3Qucm9vdE5vZGUoKSA9PSB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDkz
NzcxNzAyYTNmYi4uZGMxMDYwZTQ5YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTk1
LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RF
bGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3
TmFtZSk7CiAgICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiwg
SFRNTFNsb3RFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZSk7CisgICAgdm9pZCBzbG90TWFudWFsQXNzaWdubWVudERpZENoYW5nZShI
VE1MU2xvdEVsZW1lbnQmKTsKICAgICB2b2lkIHNsb3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xv
dEVsZW1lbnQmKTsKICAgICB2b2lkIHJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJl
bW92YWwoKTsKICAgICB2b2lkIHdpbGxSZW1vdmVBbGxDaGlsZHJlbihDb250YWluZXJOb2RlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBhYzM2NzVhNmZjMjUuLmYx
NjBjNTFhYzMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNzEs
NiArMjcxLDEwIEBAIHZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQWZ0ZXJT
bG90TXV0YXRpb24oU2hhZG93Um9vdCYgc2hhZG93Um9vdCwKICAgICB9CiB9CiAKK3ZvaWQgTmFt
ZWRTbG90QXNzaWdubWVudDo6c2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2UoSFRNTFNsb3RF
bGVtZW50JiwgU2hhZG93Um9vdCYpCit7Cit9CisKIHZvaWQgTmFtZWRTbG90QXNzaWdubWVudDo6
c2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQsIFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgaWYgKHNoYWRvd1Jvb3QubW9kZSgpID09IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpCkBAIC00MTQsNiArNDE4LDg5IEBAIHZvaWQgTmFtZWRTbG90
QXNzaWdubWVudDo6YXNzaWduVG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBz
bG90TmFtZSkKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFw
cGVuZChjaGlsZCk7CiB9CiAKK0hUTUxTbG90RWxlbWVudCogTWFudWFsU2xvdEFzc2lnbm1lbnQ6
OmZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9u
b2RlQXNzaWdubWVudC5maW5kKG5vZGUpOworICAgIGlmIChpdCA9PSBtX25vZGVBc3NpZ25tZW50
LmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmdl
dCgpOworfQorCitjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIE1hbnVhbFNsb3RBc3NpZ25t
ZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QsIFNo
YWRvd1Jvb3QmKQoreworICAgIGF1dG8gaXQgPSBtX3Nsb3RzLmZpbmQoc2xvdCk7CisgICAgaWYg
KGl0ID09IG1fc2xvdHMuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8m
IGFzc2lnbm1lbnQgPSBpdC0+dmFsdWUuYXNzaWdubWVudDsKKyAgICBpZiAoIWFzc2lnbm1lbnQu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJmFzc2lnbm1lbnQ7
Cit9CisKK3ZvaWQgTWFudWFsU2xvdEFzc2lnbm1lbnQ6OnJlbmFtZVNsb3RFbGVtZW50KEhUTUxT
bG90RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93
Um9vdCYpCit7Cit9CisKK3ZvaWQgTWFudWFsU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QsIFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QpCit7CisgICAgc2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2Uoc2xv
dCwgc2hhZG93Um9vdCk7Cit9CisKK3ZvaWQgTWFudWFsU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNs
b3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3Qs
IENvbnRhaW5lck5vZGUqLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIGF1dG8gaXQg
PSBtX3Nsb3RzLmZpbmQoc2xvdCk7CisgICAgQVNTRVJUKGl0ICE9IG1fc2xvdHMuZW5kKCkpOwor
ICAgIGF1dG8gcmVtb3ZlZEFzc2lnbm1lbnQgPSBzdGQ6OmV4Y2hhbmdlKGl0LT52YWx1ZS5hc3Np
Z25tZW50LCB7IH0pOworICAgIG1fc2xvdHMucmVtb3ZlKGl0KTsKKworICAgIHNoYWRvd1Jvb3Qu
aG9zdCgpLT5pbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CisKKyAgICBI
YXNoU2V0PFJlZjxIVE1MU2xvdEVsZW1lbnQ+PiBzbG90c1RvVXBkYXRlOworICAgIGZvciAoYXV0
byYgbm9kZSA6IHJlbW92ZWRBc3NpZ25tZW50KSB7CisgICAgICAgIC8vIFRoaXMgbm9kZSBtYXkg
bm93IGJlbG9uZyB0byBhbm90aGVyIHNsb3QuIEZpbmQgdGhlIG9uZSB3aXRoIGhpZ2hlc3QgdHJl
ZSB2ZXJzaW9uLgorICAgICAgICBSZWZQdHI8SFRNTFNsb3RFbGVtZW50PiBzbG90V2l0aEhpZ2hl
c3RUcmVlVmVyc2lvbjsKKyAgICAgICAgdWludDY0X3QgY3VycmVudFRyZWVWZXJpc29uID0gMDsK
KyAgICAgICAgZm9yIChhdXRvIGl0IDogbV9zbG90cykgeworICAgICAgICAgICAgYXV0byBub2Rl
SW5kZXggPSBpdC5rZXkubWFudWFsbHlBc3NpZ25lZE5vZGVzKCkuZmluZChub2RlKTsKKyAgICAg
ICAgICAgIGlmIChub2RlSW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB1aW50NjRfdCBuZXdUcmVlVmVyc2lvbiA9IHNsb3QubWFudWFsbHlB
c3NpZ25lZE5vZGVzVHJlZVZlcnNpb24oKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50VHJlZVZl
cmlzb24gPCBuZXdUcmVlVmVyc2lvbikgeworICAgICAgICAgICAgICAgIHNsb3RXaXRoSGlnaGVz
dFRyZWVWZXJzaW9uID0gJnNsb3Q7CisgICAgICAgICAgICAgICAgY3VycmVudFRyZWVWZXJpc29u
ID0gbmV3VHJlZVZlcnNpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHNsb3RXaXRoSGlnaGVzdFRyZWVWZXJzaW9uKSB7CisgICAgICAgICAgICBtX25vZGVBc3NpZ25t
ZW50LnNldCgqbm9kZSwgV2Vha1B0ciB7ICpzbG90V2l0aEhpZ2hlc3RUcmVlVmVyc2lvbiB9KTsK
KyAgICAgICAgICAgIHNsb3RzVG9VcGRhdGUuYWRkKCpzbG90V2l0aEhpZ2hlc3RUcmVlVmVyc2lv
bik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHNsb3QgOiBzbG90c1RvVXBk
YXRlKQorICAgICAgICBzbG90TWFudWFsQXNzaWdubWVudERpZENoYW5nZShzbG90LmdldCgpLCBz
aGFkb3dSb290KTsKK30KKwordm9pZCBNYW51YWxTbG90QXNzaWdubWVudDo6c2xvdE1hbnVhbEFz
c2lnbm1lbnREaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiBzbG90LCBTaGFkb3dSb290JikKK3sK
KyAgICBWZWN0b3I8V2Vha1B0cjxOb2RlPj4gYWN0dWFsQXNzaWdubWVudDsKKyAgICBmb3IgKGF1
dG8mIG5vZGUgOiBzbG90Lm1hbnVhbGx5QXNzaWduZWROb2RlcygpKSB7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ub2RlQXNzaWdubWVudC5lbnN1cmUoKm5vZGUsIFsmXSgpIHsgcmV0dXJu
IFdlYWtQdHIgeyBzbG90IH07IH0pOworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKKyAgICAgICAgICAgIGFjdHVhbEFzc2lnbm1lbnQuYXBwZW5kKG5vZGUpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyIGFub3RoZXJTbG90ID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgaWYgKHNsb3QubWFudWFsbHlB
c3NpZ25lZE5vZGVzVHJlZVZlcnNpb24oKSA+IGFub3RoZXJTbG90LT5tYW51YWxseUFzc2lnbmVk
Tm9kZXNUcmVlVmVyc2lvbigpKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5k
KCphbm90aGVyU2xvdCk7CisgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9zbG90cy5lbmQoKSk7
CisgICAgICAgICAgICBpdC0+dmFsdWUuYXNzaWdubWVudC5yZW1vdmVGaXJzdChub2RlLmdldCgp
KTsgLy8gbV9zbG90cworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHNs
b3Q7IC8vIG1fbm9kZUFzc2lnbm1lbnQKKyAgICAgICAgICAgIGFjdHVhbEFzc2lnbm1lbnQuYXBw
ZW5kKG5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIG1fc2xvdHMuc2V0KHNsb3QsIFNsb3Qg
eyBXVEZNb3ZlKGFjdHVhbEFzc2lnbm1lbnQpIH0pOworfQorCiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuaAppbmRleCA4YWE3NWQ0NTQzNTguLjU0Y2U3NzJlZjUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBB
dG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBTaGFkb3dSb290
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9t
U3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90
RWxlbWVudCYsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFs
LCBTaGFkb3dSb290JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzbG90TWFudWFsQXNzaWdubWVu
dERpZENoYW5nZShIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9v
dCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNv
bnN0IEVsZW1lbnQmLCBTaGFkb3dSb290JikgPSAwOwpAQCAtNzEsNiArNzIsMzQgQEAgcHJvdGVj
dGVkOgogICAgIHVuc2lnbmVkIG1fc2xvdE11dGF0aW9uVmVyc2lvbiB7IDAgfTsKIH07CiAKK2Ns
YXNzIE1hbnVhbFNsb3RBc3NpZ25tZW50IDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKK3B1Ymxp
YzoKKyAgICBNYW51YWxTbG90QXNzaWdubWVudCgpID0gZGVmYXVsdDsKKworICAgIEhUTUxTbG90
RWxlbWVudCogZmluZEFzc2lnbmVkU2xvdChjb25zdCBOb2RlJiBub2RlKSBmaW5hbDsKKworICAg
IGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogYXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3Qg
SFRNTFNsb3RFbGVtZW50JiBzbG90LCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCByZW5h
bWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
QXRvbVN0cmluZyYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QsIFNoYWRvd1Jv
b3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21T
dHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QsIENvbnRhaW5lck5vZGUqLCBTaGFkb3dSb290
JikgZmluYWw7CisgICAgdm9pZCBzbG90TWFudWFsQXNzaWdubWVudERpZENoYW5nZShIVE1MU2xv
dEVsZW1lbnQmLCBTaGFkb3dSb290JikgZmluYWw7CisgICAgdm9pZCBzbG90RmFsbGJhY2tEaWRD
aGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRv
d1Jvb3QmKSBmaW5hbCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENo
YW5nZVNsb3RBdHRyaWJ1dGUoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBdG9t
U3RyaW5nJiwgU2hhZG93Um9vdCYpIGZpbmFsIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHdpbGxS
ZW1vdmVBc3NpZ25lZE5vZGUoY29uc3QgTm9kZSYpIGZpbmFsIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdChTaGFkb3dSb290JikgZmluYWwgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZE11dGF0ZVRleHROb2Rlc09mU2hhZG93SG9zdChTaGFkb3dS
b290JikgZmluYWwgeyB9CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNsb3QgeworICAgICAgICBW
ZWN0b3I8V2Vha1B0cjxOb2RlPj4gYXNzaWdubWVudDsKKyAgICB9OworICAgIFdlYWtIYXNoTWFw
PEhUTUxTbG90RWxlbWVudCwgU2xvdD4gbV9zbG90czsKKyAgICBXZWFrSGFzaE1hcDxOb2RlLCBX
ZWFrUHRyPEhUTUxTbG90RWxlbWVudD4+IG1fbm9kZUFzc2lnbm1lbnQ7Cit9OworCiBjbGFzcyBO
YW1lZFNsb3RBc3NpZ25tZW50IDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShOYW1lZFNsb3RBc3NpZ25tZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkBAIC04OCw2ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVuYW1l
U2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYpIGZpbmFsOwogICAgIHZvaWQg
YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90RWxlbWVudCYs
IFNoYWRvd1Jvb3QmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNv
bnN0IEF0b21TdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmLCBDb250YWluZXJOb2RlKiBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCwgU2hhZG93Um9vdCYpIGZpbmFsOworICAgIHZvaWQg
c2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2UoSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9v
dCYpIGZpbmFsOwogICAgIHZvaWQgc2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90RWxlbWVu
dCYsIFNoYWRvd1Jvb3QmKSBmaW5hbDsKIAogICAgIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+
PiogYXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9v
dCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDVk
NDVlNzBiYmFmMi4uNzQ5MGI2MmI5YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVs
ZW1lbnQuY3BwCkBAIC0xNjQsNiArMTY0LDE5IEBAIFZlY3RvcjxSZWY8RWxlbWVudD4+IEhUTUxT
bG90RWxlbWVudDo6YXNzaWduZWRFbGVtZW50cyhjb25zdCBBc3NpZ25lZE5vZGVzT3B0aW9uCiAg
ICAgfSk7CiB9CiAKK3ZvaWQgSFRNTFNsb3RFbGVtZW50Ojphc3NpZ24oRml4ZWRWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxOb2RlPj4mJiBub2RlcykKK3sKKyAgICBtX21hbnVhbGx5QXNz
aWduZWROb2RlcyA9IFdURjo6bWFwKG5vZGVzLCBbJl0oY29uc3QgTm9kZSYgbm9kZSkgeworICAg
ICAgICByZXR1cm4gV2Vha1B0ciB7IG5vZGUgfTsKKyAgICB9KTsKKworICAgIGRvY3VtZW50KCku
aW5jRE9NVHJlZVZlcnNpb24oKTsKKyAgICBtX2RvbVRyZWVWZXJzaW9uQXRUaW1lT2ZNYW51YWxB
c3NpZ25tZW50ID0gZG9jdW1lbnQoKS5kb21UcmVlVmVyc2lvbigpOworCisgICAgaWYgKFJlZlB0
ciBzaGFkb3dSb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2hhZG93Um9v
dC0+c2xvdE1hbnVhbEFzc2lnbm1lbnREaWRDaGFuZ2UoKnRoaXMpOworfQorCiB2b2lkIEhUTUxT
bG90RWxlbWVudDo6ZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9k
b20uc3BlYy53aGF0d2cub3JnLyNzaWduYWwtYS1zbG90LWNoYW5nZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNsb3RFbGVtZW50LmgKaW5kZXggMGJlMjlkYTY2ZTFlLi5jYzA5NDlkOWM5YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaApAQCAtNDIsNiArNDIsMTAgQEAgcHVibGlj
OgogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IGFzc2lnbmVkTm9kZXMoY29uc3QgQXNzaWduZWROb2Rl
c09wdGlvbnMmKSBjb25zdDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBhc3NpZ25lZEVsZW1l
bnRzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJikgY29uc3Q7CiAKKyAgICBjb25zdCBWZWN0
b3I8V2Vha1B0cjxOb2RlPj4mIG1hbnVhbGx5QXNzaWduZWROb2RlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbWFudWFsbHlBc3NpZ25lZE5vZGVzOyB9CisgICAgdWludDY0X3QgbWFudWFsbHlBc3NpZ25l
ZE5vZGVzVHJlZVZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVWZXJzaW9uQXRUaW1l
T2ZNYW51YWxBc3NpZ25tZW50OyB9CisgICAgdm9pZCBhc3NpZ24oRml4ZWRWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxOb2RlPj4mJik7CisKICAgICB2b2lkIGVucXVldWVTbG90Q2hhbmdl
RXZlbnQoKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyb21TaWduYWxTbG90TGlzdCgpIHsgbV9pblNp
Z25hbFNsb3RMaXN0ID0gZmFsc2U7IH0KIApAQCAtNTksNiArNjMsOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2luU2lnbmFsU2xvdExpc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0luSW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fZG9tVHJlZVZlcnNp
b25BdFRpbWVPZk1hbnVhbEFzc2lnbm1lbnQgeyAwIH07CisgICAgVmVjdG9yPFdlYWtQdHI8Tm9k
ZT4+IG1fbWFudWFsbHlBc3NpZ25lZE5vZGVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuaWRsCmluZGV4IDJiZmFiMzg1MDkxNy4uZDU3NjNlN2VjNGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCkBAIC0zMCw2ICszMCw3IEBACiAg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBu
YW1lOwogICAgIHNlcXVlbmNlPE5vZGU+IGFzc2lnbmVkTm9kZXMob3B0aW9uYWwgQXNzaWduZWRO
b2Rlc09wdGlvbnMgb3B0aW9ucyk7CiAgICAgc2VxdWVuY2U8RWxlbWVudD4gYXNzaWduZWRFbGVt
ZW50cyhvcHRpb25hbCBBc3NpZ25lZE5vZGVzT3B0aW9ucyBvcHRpb25zKTsKKyAgICB1bmRlZmlu
ZWQgYXNzaWduKE5vZGUuLi4gbm9kZXMpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUoRWxlbWVu
dCBvciBUZXh0KSBpbnN0ZWFkIG9mIE5vZGUuCiB9OwogCiBkaWN0aW9uYXJ5IEFzc2lnbmVkTm9k
ZXNPcHRpb25zIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>