<?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>147781</bug_id>
          
          <creation_ts>2015-08-07 05:59:17 -0700</creation_ts>
          <short_desc>Reduce uses of PassRefPtr in bindings</short_desc>
          <delta_ts>2015-08-07 22:39:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115732</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 05:59:17 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115733</commentid>
    <comment_count>1</comment_count>
      <attachid>258488</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 06:00:50 -0700</bug_when>
    <thetext>Created attachment 258488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115746</commentid>
    <comment_count>2</comment_count>
      <attachid>258496</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 07:34:52 -0700</bug_when>
    <thetext>Created attachment 258496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115754</commentid>
    <comment_count>3</comment_count>
      <attachid>258499</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 08:02:48 -0700</bug_when>
    <thetext>Created attachment 258499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115919</commentid>
    <comment_count>4</comment_count>
      <attachid>258540</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 16:18:11 -0700</bug_when>
    <thetext>Created attachment 258540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115956</commentid>
    <comment_count>5</comment_count>
      <attachid>258540</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-07 18:44:37 -0700</bug_when>
    <thetext>Comment on attachment 258540
Patch

r=me but you need to rebaseline the bindings tests like so: Tools/Scripts/run-bindings-tests --reset-results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115992</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 21:16:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 258540 [details]
&gt; Patch
&gt; 
&gt; r=me but you need to rebaseline the bindings tests like so:
&gt; Tools/Scripts/run-bindings-tests --reset-results

Thank you for review. BTW all tests are passed. So I don&apos;t know what tests should be rebaseline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115993</commentid>
    <comment_count>7</comment_count>
      <attachid>258540</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-07 21:43:38 -0700</bug_when>
    <thetext>Comment on attachment 258540
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258540&amp;action=review

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:903
&gt; +            push(@headerContent, &quot;    static RefPtr&lt;NodeFilter&gt; toWrapped(JSC::VM&amp;, JSC::JSValue);\n&quot;);

You altered the bindings generator here so I assumed that the bindings tests needed rebaselining. If they don&apos;t then it likely means our test coverage isn&apos;t good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115995</commentid>
    <comment_count>8</comment_count>
      <attachid>258540</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-07 21:50:04 -0700</bug_when>
    <thetext>Comment on attachment 258540
Patch

win-ews seems to be broken now. Let me check win bot after landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116002</commentid>
    <comment_count>9</comment_count>
      <attachid>258540</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 22:39:23 -0700</bug_when>
    <thetext>Comment on attachment 258540
Patch

Clearing flags on attachment: 258540

Committed r188187: &lt;http://trac.webkit.org/changeset/188187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116003</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 22:39:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258488</attachid>
            <date>2015-08-07 06:00:50 -0700</date>
            <delta_ts>2015-08-07 07:34:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147781-20150807220039.patch</filename>
            <type>text/plain</type>
            <size>38225</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJlZjQ1M2JlZjM2YzNm
ZWU2NGM5NDIwM2M5MmRlOTQzNDk4ZTM4YS4uZWJiZjcyY2E1NmI2NTIyNmFlY2NkYjA2NjZmNzQy
MTA0YjEwMTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTA4LTA3ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyIHdoZW4gZnVuY3Rpb24gY2FuIHJldHVybiBu
dWxsIG9yIGFuIGluc3RhbmNlLiBJZiBub3QsIFJlZiBpcyB1c2VkLgorCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJp
bmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAqIGJpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNv
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZh
dGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9u
T25seUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUlEQktleUZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jp
cHRWYWx1ZVRvSURCS2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b0ludDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDE2QXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9JbnQzMkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVWlu
dDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b1VpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVWludDE2QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9VaW50MzJB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0Zsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjp0b0Zsb2F0NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTGlzdDo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkUm90YXRpb25SYXRlQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXJyb3JIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU0Vycm9ySGFu
ZGxlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dG9XcmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVu
c2lvbnMubW06CisgICAgICAgICgtW0RPTU5vZGUgcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGhd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisK
IDIwMTUtMDgtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggR1RLIGNsZWFuIGJ1aWxkIGFmdGVyIHIxODc5OTcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
CmluZGV4IDM5OTZlMWNjZWFmMDUwZGRjMTJlNDI5ODA1OTY4YTBhMDRlYTVkNmEuLmEzYTc1NmNm
NTUzMjFmNjg4Yjc1ZDcyM2EwMTc4M2Y1MGU3ZWMzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMjYw
LDExICsyNjAsMTEgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1pbmxpbmUgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdG9OYXRpdmVU
eXBlZFZpZXcoSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6
Vmlld1R5cGU+IHRvTmF0aXZlVHlwZWRWaWV3KEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgdHlwZW5h
bWUgQWRhcHRvcjo6SlNWaWV3VHlwZSogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8dHlwZW5hbWUg
QWRhcHRvcjo6SlNWaWV3VHlwZSo+KHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gd3JhcHBlci0+
dHlwZWRJbXBsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uaAppbmRleCA2OTI3NjRkMjUw
ZmU3MzIzN2JjM2QyMDUxMTUzOTBhZWM3YjBhOTE0Li42MTI4MDI1ZmZjODdjYWEzZDEyMTY2YjNh
OWY4ODhiNWVhZTA5OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29uZGl0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oCkBAIC0yMiw3ICsyMiw2
IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogCiAjaW5jbHVkZSAiV2ViS2l0
RE9NTm9kZUZpbHRlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0WFBhdGhOU1Jlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVz
b2x2ZXIuaAppbmRleCAzNjlhZDA1MjEwMzkzMmNkNDgzOGFiNzA5YTkyN2E0YzY2NWVmNDAxLi5i
ZTEzNGMxOTg1YjYwZTM0YTgwYTcwMTY0NDBmYjliZTBkMDRjMzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIu
aApAQCAtMjEsNyArMjEsNiBAQAogCiAjaW5jbHVkZSAiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVy
LmgiCiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
Tm9kZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TU5vZGVGaWx0ZXIuY3BwCmluZGV4IGZjNjhjNmQ0MjI2MWNmYzU5YjI5ZTE3ODYyNjkwOGI1NzRi
ZjIzYTEuLjI1OGZjNGFkOGY5ZGJkM2QwNjY0YTQzYzNkMGY0OTdjNDBmOGI1ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmls
dGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBXZWJLaXRET01Ob2RlRmlsdGVyKiBraXQoV2ViQ29y
ZTo6Tm9kZUZpbHRlciogY29yZU5vZGVGaWx0ZXIpCiAgICAgcmV0dXJuIG5vZGVGaWx0ZXJNYXAo
KS5nZXQoY29yZU5vZGVGaWx0ZXIpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0
ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikKK1JlZlB0cjxXZWJDb3Jl
OjpOb2RlRmlsdGVyPiBjb3JlKFdlYktpdERPTU5vZGVGaWx0ZXIqIG5vZGVGaWx0ZXIpCiB7CiAg
ICAgaWYgKCFub2RlRmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRl
clByaXZhdGUuaAppbmRleCBjMWEyNjhjNWQ3MTA2MzM1NDdmZWIzNDY0ZTFlZDZkYmJiOGY2Mjlk
Li42YmIxMzliOTU3NThkMjlkZjc1NjgwYzMwNjM1NTcyMDljNmRmNDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmls
dGVyUHJpdmF0ZS5oCkBAIC0yMSw3ICsyMSw2IEBACiAjZGVmaW5lIFdlYktpdERPTU5vZGVGaWx0
ZXJQcml2YXRlX2gKIAogI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01Ob2RlRmlsdGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTm9kZUZpbHRlcjsKQEAgLTI5LDcgKzI4LDcgQEAgY2xhc3MgTm9kZUZpbHRlcjsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJLaXRET01Ob2RlRmlsdGVyKiBraXQoV2ViQ29yZTo6Tm9kZUZp
bHRlciopOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiBjb3JlKFdlYktpdERPTU5v
ZGVGaWx0ZXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiBjb3JlKFdlYktpdERPTU5v
ZGVGaWx0ZXIqKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLyogV2ViS2l0RE9N
Tm9kZUZpbHRlclByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IGE3ZTdi
NThjZDViMmQzNTRjYzVmMWViM2UyOWY0MTBiNTg1OGE3ZTcuLmFjMjgyMDg3ZmMyMGZlODIxNTll
ZjYxMzkwOGUyNzg1YjkyOTBkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTEwOCw3
ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZUluaXQo
V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVySWZhY2UqIGlmYQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNvcmUoV2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyKiB4UGF0aE5TUmVzb2x2ZXIpCitSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jl
c29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sdmVyKQog
ewogICAgIGlmICgheFBhdGhOU1Jlc29sdmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29y
ZShXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIHhQYXRoTlNSZXNvbAogICAgICAgICBjb3JlUmVz
b2x2ZXIgPSBjb3JlKFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSKHhQYXRoTlNS
ZXNvbHZlcikpOwogICAgIGVsc2UKICAgICAgICAgY29yZVJlc29sdmVyID0gV2ViQ29yZTo6R09i
amVjdFhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHhQYXRoTlNSZXNvbHZlcik7Ci0gICAgcmV0dXJu
IGNvcmVSZXNvbHZlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvcmVSZXNvbHZlcjsKIH0KIAog
V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiBraXQoV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBj
b3JlWFBhdGhOU1Jlc29sdmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaAppbmRl
eCBhMzA3MmY2Yjc4ODM4NDFjMDk1ZjNhM2ViYjRlY2U3NTVmOTI2NjNlLi5mZmJhNmM0YTA3ZDAy
MDFiNzQzOTZhYjBlYTA2M2I2NmFiOTEyNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclBy
aXZhdGUuaApAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgi
CiAjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKICNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX05BVElWRV9Y
UEFUSF9OU19SRVNPTFZFUiAgICAgICAgICAgICh3ZWJraXRfZG9tX25hdGl2ZV94cGF0aF9uc19y
ZXNvbHZlcl9nZXRfdHlwZSgpKQogI2RlZmluZSBXRUJLSVRfRE9NX05BVElWRV9YUEFUSF9OU19S
RVNPTFZFUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSLCBXZWJLaXRET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXIpKQpAQCAtMzYsNyArMzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
cjsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJDbGFzcyBX
ZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXJDbGFzczsKIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNvcmUoV2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyKik7CiBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChX
ZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqKTsKIFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogY29y
ZShXZWJLaXRET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIqKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4
IDI1NjJjZTk3YTA5NTJmNGFmZDY1YjU1MTViMGZlMzQxZTI5OWY0MzguLmNiNTExMDcwNjU4MDZk
ZTZiMGFmODZmMTY0NTFhYWY2NDMzNzcwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTQ2LDExICs0NiwxMSBAQCBib29sIGNoZWNrRnVu
Y3Rpb25Pbmx5Q2FsbGJhY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIENhbGxiYWNr
QWxsb3dlZFZhbAogCiAvLyBDcmVhdGVzIGNhbGxiYWNrIG9iamVjdHMgZm9yIGNhbGxiYWNrcyBt
YXJrZWQgYXMgRnVuY3Rpb25Pbmx5IGluIFdlYklETC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBKU0Nh
bGxiYWNrVHlwZT4KLVBhc3NSZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNj
ZXB0ZWRWYWx1ZXMgPSAwKQorUmVmUHRyPEpTQ2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzIGFj
Y2VwdGVkVmFsdWVzID0gMCkKIHsKICAgICBpZiAoY2hlY2tGdW5jdGlvbk9ubHlDYWxsYmFjayhl
eGVjLCB2YWx1ZSwgYWNjZXB0ZWRWYWx1ZXMpKQogICAgICAgICByZXR1cm4gSlNDYWxsYmFja1R5
cGU6OmNyZWF0ZShhc09iamVjdCh2YWx1ZSksIGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCBiMWYxYjczNmVhMGZkZTJjMWZl
YjkzOWYxNTdiOTY1ZjI3MjhmYmQyLi4yYmFjNjBkOTk1ZTc3OTRjZjVjNmE0NmMyYjc3NmEwOWMx
NTEwODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBAIC01Myw5
ICs1Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JikgY29uc3Q7CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29u
c3Q7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJn
ZXQpIGNvbnN0OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OwogCiAgICAgYm9vbCBp
c09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAgICBi
b29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fZGljdGlvbmFyeS5pc1Zh
bGlkKCk7IH0KQEAgLTg2LDI0ICs4NiwyNCBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdAor
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RpY3Rp
b25hcnkuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmVudExpc3RlbmVyOwogICAgIGlm
ICghbV9kaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgZXZlbnRMaXN0ZW5l
cikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
ZXZlbnRMaXN0ZW5lci5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWV2ZW50TGlzdGVuZXIuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGV2ZW50TGlzdGVuZXIuanNWYWx1ZSgpKSwgYXNK
U09iamVjdCh0YXJnZXQpLCB0cnVlLCBjdXJyZW50V29ybGQobV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBUKiB0YXJnZXQpIGNvbnN0CitSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6
Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBj
b25zdAogewogICAgIHJldHVybiBnZXRFdmVudExpc3RlbmVyKHByb3BlcnR5TmFtZS51dGY4KCku
ZGF0YSgpLCB0YXJnZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCA2ZjgwNjYxNGVhNGIwY2I0MTZhNTNmMjcyOTJk
OWNlZDk1Y2Y2OTI1Li5iZWM3OGZlZmRlZDg2NDBlZGMxOTZkZThmY2NmODRiOTQ0NjE0ZGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGlkYktleVRvSlNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4aW11bURlcHRoID0gMjAwMDsKIAotc3RhdGljIFBhc3NSZWZQdHI8
SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBWZWN0b3I8SlNBcnJheSo+JiBzdGFjaykKK3N0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8
SlNBcnJheSo+JiBzdGFjaykKIHsKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiAhc3RkOjpp
c25hbih2YWx1ZS50b051bWJlcihleGVjKSkpCiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0
ZU51bWJlcih2YWx1ZS50b051bWJlcihleGVjKSk7CkBAIC0xMjksOSArMTI5LDkgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLAogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGFycmF5LT5sZW5n
dGgoKTsKIAogICAgICAgICAgICAgaWYgKHN0YWNrLmNvbnRhaW5zKGFycmF5KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIGlmIChzdGFjay5zaXplKCkgPj0gbWF4aW11bURlcHRoKQotICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
c3RhY2suYXBwZW5kKGFycmF5KTsKIAogICAgICAgICAgICAgSURCS2V5OjpLZXlBcnJheSBzdWJr
ZXlzOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLAogICAgICAg
ICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlQXJyYXkoc3Via2V5cyk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKK3N0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZlY3RvcjxKU0FycmF5Kj4g
c3RhY2s7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4
ZWMsIHZhbHVlLCBzdGFjayk7CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0
TnRoVmFsdWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29u
c3QgVmUKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXk+IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGludGVybmFsQ3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJv
ciBlcnJvcjsKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlu
dGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdAogICAg
IEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlLmpzVmFsdWUoKTsKICAgICBqc1ZhbHVlID0gZ2V0TnRo
VmFsdWVPbktleVBhdGgoZXhlYywganNWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxl
bWVudHMuc2l6ZSgpKTsKICAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktl
eUZyb21WYWx1ZShleGVjLCBqc1ZhbHVlKTsKIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wg
aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBQYXNzUmVmUHRyPElEQktlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQorUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
ImNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgiKTsKICAgICBBU1NFUlQoIWtl
eVBhdGguaXNOdWxsKCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBj
cmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCk7IGkrKykgewog
ICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9t
U2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBhcnJheVtpXSk7CiAgICAgICAgICAg
ICBpZiAoIWtleSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoa2V5KTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShyZXN1bHQpOwpAQCAtMzQ0LDcg
KzM0NCw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSCiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkp
KTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVz
dFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3Jp
cHRWYWx1ZSkKK1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0
YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRW
YWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAg
ICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmgKaW5kZXggZDAwODMyMWVkMDg3MDM3ZjM5ZTlmNDIzMGY1NjNjZGE5ZjY0NGZhYi4uYWVlYWM2
MGY2NzQ1ZDdjNGQwMmY1ZGQyMDVmZDAyNTEwYWI4MTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtNDUsMTMgKzQ1LDEzIEBA
IHN0cnVjdCBJREJLZXlEYXRhOwogSURCS2V5UGF0aCBpZGJLZXlQYXRoRnJvbVZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIAogYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBi
b29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBib29sIGtleUlzRGVmaW5lZCk7CiBXRUJDT1JFX0VYUE9SVCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCBrZXlJc0RlZmluZWQpOwogRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNz
UmVmUHRyPElEQktleT4pOwotUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXko
RE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKK1JlZlB0
cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2VuZXJhdGVJbmRl
eEtleXNGb3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUsIFZlY3RvcjxJREJLZXlE
YXRhPiYgaW5kZXhLZXlzKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAppbmRleCA3NTc1MTk0MjhhNDllNTUzYWZiNTBkNjM2MjdiMTgxY2M5N2JhNzZmLi4z
ZTMzODc3MDU3N2ZlNWMzODAyMTY1Y2NlYzQ5MmRmMzg4ZWE4OGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNDY1LDE1ICs0NjUsMTUgQEAgaW5saW5l
IFBhc3NSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IHRvQXJyYXlCdWZmZXJWaWV3KEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gd3JhcHBlci0+aW1wbCgpOwogfQogCi1pbmxpbmUg
UGFzc1JlZlB0cjxKU0M6OkludDhBcnJheT4gdG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVl
KSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6SW50OEFkYXB0b3I+KHZhbHVl
KTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpJbnQxNkFycmF5PiB0b0ludDE2QXJyYXkoSlND
OjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6SW50
MTZBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpTQzo6SW50MzJBcnJheT4g
dG9JbnQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5
cGVkVmlldzxKU0M6OkludDMyQWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxpbmUgUGFzc1JlZlB0cjxK
U0M6OlVpbnQ4QXJyYXk+IHRvVWludDhBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJu
IEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50OEFkYXB0b3I+KHZhbHVlKTsgfQotaW5s
aW5lIFBhc3NSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gdG9VaW50OENsYW1wZWRBcnJh
eShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlND
OjpVaW50OENsYW1wZWRBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpTQzo6
VWludDE2QXJyYXk+IHRvVWludDE2QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBK
U0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDE2QWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxp
bmUgUGFzc1JlZlB0cjxKU0M6OlVpbnQzMkFycmF5PiB0b1VpbnQzMkFycmF5KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQzMkFkYXB0
b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxv
YXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVk
VmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpT
Qzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0
dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpGbG9hdDY0QWRhcHRvcj4odmFsdWUpOyB9
CitpbmxpbmUgUmVmUHRyPEpTQzo6SW50OEFycmF5PiB0b0ludDhBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQ4QWRhcHRvcj4o
dmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6SW50MTZBcnJheT4gdG9JbnQxNkFycmF5KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6Oklu
dDE2QWRhcHRvcj4odmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6SW50MzJBcnJheT4gdG9J
bnQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVk
VmlldzxKU0M6OkludDMyQWRhcHRvcj4odmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6VWlu
dDhBcnJheT4gdG9VaW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0
b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQ4QWRhcHRvcj4odmFsdWUpOyB9CitpbmxpbmUgUmVm
UHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IHRvVWludDhDbGFtcGVkQXJyYXkoSlNDOjpKU1Zh
bHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDhDbGFt
cGVkQWRhcHRvcj4odmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6VWludDE2QXJyYXk+IHRv
VWludDE2QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlw
ZWRWaWV3PEpTQzo6VWludDE2QWRhcHRvcj4odmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6
VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBK
U0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDMyQWRhcHRvcj4odmFsdWUpOyB9Citpbmxp
bmUgUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiB0b0Zsb2F0MzJBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpGbG9hdDMyQWRhcHRv
cj4odmFsdWUpOyB9CitpbmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRB
cnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8
SlNDOjpGbG9hdDY0QWRhcHRvcj4odmFsdWUpOyB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKaW5kZXggZGQ4MzU4ZDQ4MzZlZTFkMTI4
ODg2NTI4ZjIxM2VmYTNjZDFmODE5OC4uZmQ0MDFiMjkwNWY2OTFmNmRmZmZkYjVkODVkZDQyNTM0
YWRmMjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJp
bmdMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ0xpc3RDdXN0b20uY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IEpT
RE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
K1JlZlB0cjxET01TdHJpbmdMaXN0PiBKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTRE9N
U3RyaW5nTGlzdDo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuICZqc0Nhc3Q8SlNET01TdHJpbmdM
aXN0Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOwogCiAgICAgaWYgKCFpc0pTQXJyYXkodmFs
dWUpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBzdHJpbmdMaXN0ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKQogICAgICAgICBzdHJpbmdMaXN0LT5h
cHBlbmQoYXJyYXktPmdldEluZGV4KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CiAKLSAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0cmlu
Z0xpc3Q7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXgg
ZWNiYjMzZWVmODc4YzVlNWYxZTAzYzlmOGI3NjYwM2UyY2IyMjA1MC4uYjg4NjUwMWY3ZTJlMGQ5
ZDVhNjE2ODI1NzQ2N2UyODdiYWUyNjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTQwLDc4ICs0
MCw3OCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gcmVhZEFjY2Vs
ZXJhdGlvbkFyZ3VtZW50KEpTVmFsdWUgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBS
ZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0aW9uQXJn
dW1lbnQoSlNWYWx1ZSB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICh2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5
aWVsZCBhbiBvYmplY3QuCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4
ZWMpOwogCiAgICAgSlNWYWx1ZSB4VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJ4IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJvb2wgY2Fu
UHJvdmlkZVggPSAheFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIHggPSB4
VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBKU1ZhbHVlIHlW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInki
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlWSA9ICF5VmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgeSA9IHlWYWx1ZS50b051bWJlcihleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgelZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieiIpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBib29sIGNhblByb3ZpZGVaID0gIXpWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAg
IGRvdWJsZSB6ID0gelZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFjYW5Qcm92aWRlWCAmJiAhY2FuUHJvdmlkZVkgJiYgIWNhblByb3ZpZGVaKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gRGV2
aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uOjpjcmVhdGUoY2FuUHJvdmlkZVgsIHgsIGNhblBy
b3ZpZGVZLCB5LCBjYW5Qcm92aWRlWiwgeik7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPERldmlj
ZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KEpTVmFs
dWUgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBSZWZQdHI8RGV2aWNlTW90aW9uRGF0
YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWx1ZSB2YWx1ZSwg
RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBHaXZl
biB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBh
bHBoYVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiYWxwaGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEg
PSAhYWxwaGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBhbHBoYSA9IGFs
cGhhVmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBKU1ZhbHVl
IGJldGFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgImJldGEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9
ICFiZXRhVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgYmV0YSA9IGJldGFW
YWx1ZS50b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgZ2Ft
bWFWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImdhbW1hIikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0g
IWdhbW1hVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgZ2FtbWEgPSBnYW1t
YVZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFjYW5Q
cm92aWRlQWxwaGEgJiYgIWNhblByb3ZpZGVCZXRhICYmICFjYW5Qcm92aWRlR2FtbWEpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBEZXZp
Y2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZShjYW5Qcm92aWRlQWxwaGEsIGFscGhh
LCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuaAppbmRleCBkZmUxM2MyZmFi
NTUwNjMyMjRiNDVmZWRlNjEyZjBhOWFhZTY4NWUyLi41NTc3NzhkNDZjY2MwNzQ4OWEyZTM4MDRl
ZGI2NGY3Mjk4OTBmNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwcml2YXRlOgogCiAvLyBDcmVhdGVzIGEgSlMg
RXZlbnRMaXN0ZW5lciBmb3IgIm9uZXJyb3IiIGV2ZW50IGhhbmRsZXIgaW4gd29ya2VyIGNvbnRl
eHQuIEl0IGhhcyBjdXN0b20gaW1wbGVtZW50YXRpb24gYmVjYXVzZQogLy8gdW5saWtlIG90aGVy
IGV2ZW50IGxpc3RlbmVycyBpdCBhY2NlcHRzIHRocmVlIHBhcmFtZXRlcnMuCi1pbmxpbmUgUGFz
c1JlZlB0cjxKU0Vycm9ySGFuZGxlcj4gY3JlYXRlSlNFcnJvckhhbmRsZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBlcikK
K2lubGluZSBSZWZQdHI8SlNFcnJvckhhbmRsZXI+IGNyZWF0ZUpTRXJyb3JIYW5kbGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QqIHdy
YXBwZXIpCiB7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gSlNFcnJvckhhbmRsZXI6
OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHdyYXBwZXIsIHRydWUsIGN1cnJlbnRXb3JsZChl
eGVjKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xv
Y2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCmluZGV4IGQxYTJkYWExYTViMTQ1NWRkMTdkYzU0NjhjNWY0ODQzMzk2M2M5
YTAuLjEyNzAyNDc3NGMxOWEwMzNlOGRlZDA4NzAyOGFkZThhZTA2ZTNkYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC02
OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIHNldE1heGltdW1BZ2UoUG9zaXRpb25PcHRpb25zKiBv
cHRpb25zLCBjb25zdCBkb3VibGUmIG1heGltdW1BZ2UpCiB9CiAKIAotc3RhdGljIFBhc3NSZWZQ
dHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBv
c2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8g
Q3JlYXRlIGRlZmF1bHQgb3B0aW9ucy4KICAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRp
b25zID0gUG9zaXRpb25PcHRpb25zOjpjcmVhdGUoKTsKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHUKICAgICAvLyBBcmd1bWVudCBpcyBvcHRpb25hbCAoaGVuY2UgdW5k
ZWZpbmVkIGlzIGFsbG93ZWQpLCBhbmQgbnVsbCBpcyBhbGxvd2VkLgogICAgIGlmICh2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIC8vIFVzZSBkZWZhdWx0IG9wdGlvbnMuCi0g
ICAgICAgIHJldHVybiBvcHRpb25zLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnM7
CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMg
eWllbGQgYW4gb2JqZWN0LgpAQCAtODcsMTMgKzg3LDEzIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFBv
c2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRpb25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1CiAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywgb2JqZWN0KTsKIAogICAgIGlm
ICghZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eSgiZW5hYmxlSGlnaEFjY3VyYWN5Iiwgb3B0aW9u
cy5nZXQoKSwgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eSgi
dGltZW91dCIsIG9wdGlvbnMuZ2V0KCksIHNldFRpbWVvdXQpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3Bl
cnR5KCJtYXhpbXVtQWdlIiwgb3B0aW9ucy5nZXQoKSwgc2V0TWF4aW11bUFnZSkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBvcHRpb25z
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3B0aW9uczsKIH0KIAogSlNWYWx1ZSBKU0dlb2xvY2F0
aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggZjQxMGUyOGMxZjJiMTQ2ZTk2MzM4
YjYxMTgwYTkxMzE1Nzc4NTdkNC4uNmQ0YzgxZDJkYjVlODVmNWM3ZGZjMWMxM2QyNjM5NGNkNmY0
MGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBA
IC02Nyw3ICs2Nyw2IEBACiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRl
eCA2MmQxYjFjYzQwM2EzMTEyYmFiZmNlOWJiZmE3OTgyOGFlYjI5YWNiLi4yYmQ1YTI3MGQzNzFi
OTdlMDhiOTljZDY2YjU1NDQ0ZTFhYTM0NmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTM1LDE0ICszNSwxNCBAQCB2b2lk
IEpTTm9kZUZpbHRlcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoJmltcGwoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8Tm9kZUZpbHRlcj4gSlNOb2RlRmlsdGVyOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKK1JlZlB0cjxOb2RlRmlsdGVyPiBKU05vZGVGaWx0ZXI6OnRvV3Jh
cHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5p
bmhlcml0cyhKU05vZGVGaWx0ZXI6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiAmSlNDOjpqc0Nh
c3Q8SlNOb2RlRmlsdGVyKj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOwogCiAgICAgUmVmUHRy
PE5vZGVGaWx0ZXI+IHJlc3VsdCA9IE5vZGVGaWx0ZXI6OmNyZWF0ZSgpOwogICAgIHJlc3VsdC0+
c2V0Q29uZGl0aW9uKEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6Y3JlYXRlKHZtLCByZXN1bHQuZ2V0
KCksIHZhbHVlKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkZWQxMzVmMGEzNmY2ZDQ1MWVi
YWMxNWFkMGEyOWM1M2NmNmU4MzJjLi40YjNiMDk3MmJlNzdmM2M3NjU5NWYxNDBlMjZhNzQ4ZmY4
ZWE0NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjCiAgICAg
cmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpj
cmVhdGVXb3JsZCgpCitSZWY8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVh
dGVXb3JsZCgpCiB7CiAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKEpTRE9NV2lu
ZG93Ojpjb21tb25WTSgpKTsKIH0KQEAgLTM3NSw3ICszNzUsNyBAQCBCaW5kaW5nczo6Um9vdE9i
amVjdCogU2NyaXB0Q29udHJvbGxlcjo6YmluZGluZ1Jvb3RPYmplY3QoKQogICAgIHJldHVybiBt
X2JpbmRpbmdSb290T2JqZWN0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPEJpbmRpbmdzOjpSb290
T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhh
bmRsZSkKK1JlZlB0cjxCaW5kaW5nczo6Um9vdE9iamVjdD4gU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlUm9vdE9iamVjdCh2b2lkKiBuYXRpdmVIYW5kbGUpCiB7CiAgICAgUm9vdE9iamVjdE1hcDo6
aXRlcmF0b3IgaXQgPSBtX3Jvb3RPYmplY3RzLmZpbmQobmF0aXZlSGFuZGxlKTsKICAgICBpZiAo
aXQgIT0gbV9yb290T2JqZWN0cy5lbmQoKSkKQEAgLTM4NCw3ICszODQsNyBAQCBQYXNzUmVmUHRy
PEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVSb290T2JqZWN0
KHZvaWQqIG5hdGl2ZQogICAgIFJlZlB0cjxCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9vdE9iamVj
dCA9IEJpbmRpbmdzOjpSb290T2JqZWN0OjpjcmVhdGUobmF0aXZlSGFuZGxlLCBnbG9iYWxPYmpl
Y3QocGx1Z2luV29ybGQoKSkpOwogCiAgICAgbV9yb290T2JqZWN0cy5zZXQobmF0aXZlSGFuZGxl
LCByb290T2JqZWN0KTsKLSAgICByZXR1cm4gcm9vdE9iamVjdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJvb3RPYmplY3Q7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xh
dGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3Jp
Z2luKj4+JiByZXN1bHQpCkBAIC00MzIsNyArNDMyLDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1l
bnQKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotUGFzc1JlZlB0cjxKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JX
aWRnZXQoV2lkZ2V0KiB3aWRnZXQpCitSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCogd2lk
Z2V0KQogewogICAgIGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAppbmRleCBiYTY5OWFlY2U5ZmMzNzFkOGRlYzNlOWY0YjExOTE1MDRhNTNlYTk1Li4w
N2M1M2I3YzhlZGZiNGUyOGY1Y2ExM2FhMmM0ZTA1NTk0ZWY1MTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBTY3JpcHRDb250cm9sbGVyKEZyYW1lJik7CiAgICAgflNjcmlw
dENvbnRyb2xsZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKIAogICAgIEpTRE9NV2luZG93U2hl
bGwqIGNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgZGVzdHJv
eVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTQ2LDExICsxNDYsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB1cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKIAotICAgIFBh
c3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+ICBjcmVhdGVTY3JpcHRJbnN0YW5jZUZv
cldpZGdldChXaWRnZXQqKTsKKyAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+ICBj
cmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqKTsKICAgICBKU0M6OkJpbmRpbmdz
OjpSb290T2JqZWN0KiBiaW5kaW5nUm9vdE9iamVjdCgpOwogICAgIEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqIGNhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IGNyZWF0ZVJvb3RPYmpl
Y3Qodm9pZCogbmF0aXZlSGFuZGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SlNDOjpC
aW5kaW5nczo6Um9vdE9iamVjdD4gY3JlYXRlUm9vdE9iamVjdCh2b2lkKiBuYXRpdmVIYW5kbGUp
OwogCiAgICAgdm9pZCBjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpT
Qzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZTllYTYzMGUxYmEx
ZjgyN2M1NjRhNDQzNDFiYmI0ZTUzZmJjOTExNS4uZjIzNDQwMDkwMTIzNDhjODI4ZWViZjdjMTUz
MTg1NmRlMzI4YTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyTWFjLm1tCkBAIC02MCwxMSArNjAsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
Qzo6QmluZGluZ3M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCitSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+
IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCog
d2lkZ2V0KQogewogICAgIE5TVmlldyogd2lkZ2V0VmlldyA9IHdpZGdldC0+cGxhdGZvcm1XaWRn
ZXQoKTsKICAgICBpZiAoIXdpZGdldFZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0ID0gY3Jl
YXRlUm9vdE9iamVjdCh3aWRnZXRWaWV3KTsKIApAQCAtNzQsMjUgKzc0LDI1IEBAIFBhc3NSZWZQ
dHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlw
dEluc3RhbmNlRm9yV2lkCiAgICAgaWYgKFt3aWRnZXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iob2JqZWN0Rm9yV2ViU2NyaXB0KV0pIHsKICAgICAgICAgaWQgb2JqZWN0Rm9yV2Vi
U2NyaXB0ID0gW3dpZGdldFZpZXcgb2JqZWN0Rm9yV2ViU2NyaXB0XTsKICAgICAgICAgaWYgKCFv
YmplY3RGb3JXZWJTY3JpcHQpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gSlNDOjpCaW5kaW5nczo6T2JqY0luc3RhbmNl
OjpjcmVhdGUob2JqZWN0Rm9yV2ViU2NyaXB0LCByb290T2JqZWN0LnJlbGVhc2UoKSk7CiAgICAg
fQogCiAgICAgaWYgKFt3aWRnZXRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY3Jl
YXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCldKSB7CiAjaWYgIUVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxz
ZQogICAgICAgICBOUE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIFJlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVj
dCwgcm9vdE9iamVjdC5yZWxlYXNlKCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0
YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4
cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiBXZWJTY3JpcHRPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Njcmlw
dE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBkZTBjNTJiMTI4MTk5YmI1NTlhMzIxOTcyZTU0ODI3YWYw
M2JmOWZjLi42MmVhMWMxYmRjZWQ2MzA2NTg5OGE4YjQxYjBiNmQyMWI4NTdhYjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTI2OTUsNyArMjY5NSw3IEBAIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKQogfQogI2VuZGlmCiAKLVBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShK
U0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlWYWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQorUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYg
YXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSB0b0pTKG9yaWdpbkNvbnRleHQpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CkBA
IC0yNzA1LDEwICsyNzA1LDEwIEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpCiAgICAgICAgIGlm
IChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+
ZXhjZXB0aW9uKCktPnZhbHVlKCkpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEFT
U0VSVChzZXJpYWxpemVkVmFsdWUpOwotICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWUucmVsZWFz
ZSgpOworICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CiB9CiAKIFN0cmluZyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMjE2MTVhMTJjZWMyYTdkN2RhNTUzZGU5
NDA5NTAwNTM4OTBmNzc0Ny4uODFkNjAwZjU2ZjUyNjI4NzMxOWQzYzJiNmI4OGI2OGUzZWRhOTEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTg0LDcgKzgzLDcg
QEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZygpOwogCiAgICAgLy8gQVBJIGltcGxlbWVu
dGF0aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBB
cnJheUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1Zh
bHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsK
IAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4
dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbQppbmRleCBjYzc2MmE4M2Y2YTk5NDg0OTA0Nzg0NDg4ZGZkYTMxY2QyMTc1N2FmLi41
ZGM0Zjk0YmNjOGEyNzhlOWIzODZkNTU2ZmFjN2U1ZGZmYWU4ZWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMjMxLDcg
KzIzMSw3IEBAIHVzaW5nIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjsKICAgICBQb3NpdGlvbiBw
YXJhZ3JhcGhFbmQgPSB2aXNpYmxlUGFyYWdyYXBoRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCk7ICAgIAogICAgIAogICAgIGlmIChwYXJhZ3JhcGhTdGFydC5p
c05vdE51bGwoKSAmJiBwYXJhZ3JhcGhFbmQuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpub2RlLT5vd25lckRvY3VtZW50KCks
IHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpOworICAgICAgICBSZWY8UmFuZ2U+IHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZSgqbm9kZS0+b3duZXJEb2N1bWVudCgpLCBwYXJhZ3JhcGhTdGFydCwg
cGFyYWdyYXBoRW5kKTsKICAgICAgICAgcmVzdWx0ID0ga2l0KHJhbmdlLmdldCgpKTsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmgKaW5kZXggY2MwNzdiMzEwMjQzZThjMDRhNjg0N2Y3MTMxODBhMGQ1
YjBlZTQ5Ni4uM2JlMTU2MzZhNWE4ZGZhM2I1NzFjY2E4NDFiZDJkMzA1YWVkZTYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24uaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlv
bi5oIgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKIEBwcm90b2NvbCBET01Ob2RlRmlsdGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258496</attachid>
            <date>2015-08-07 07:34:52 -0700</date>
            <delta_ts>2015-08-07 08:02:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147781-20150807233440.patch</filename>
            <type>text/plain</type>
            <size>38272</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk1NDU2MzFmNzFiZjQx
N2Y1OTJkZjgxMzFjYTE1OWQwNzhiYzIyYy4uZTQ1Nzg4YjIwYWYyMGI0Y2JlZGJhMGFhNTcyMjI4
YTE2MGFmZDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTA4LTA3ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyIHdoZW4gZnVuY3Rpb24gY2FuIHJldHVybiBu
dWxsIG9yIGFuIGluc3RhbmNlLiBJZiBub3QsIFJlZiBpcyB1c2VkLgorCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJp
bmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAqIGJpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNv
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZh
dGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9u
T25seUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUlEQktleUZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jp
cHRWYWx1ZVRvSURCS2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b0ludDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDE2QXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9JbnQzMkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVWlu
dDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b1VpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVWludDE2QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9VaW50MzJB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0Zsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjp0b0Zsb2F0NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTGlzdDo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkUm90YXRpb25SYXRlQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXJyb3JIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU0Vycm9ySGFu
ZGxlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dG9XcmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVu
c2lvbnMubW06CisgICAgICAgICgtW0RPTU5vZGUgcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGhd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisK
IDIwMTUtMDgtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFja2FnZUtp
dCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggMzk5
NmUxY2NlYWYwNTBkZGMxMmU0Mjk4MDU5NjhhMGEwNGVhNWQ2YS4uYTNhNzU2Y2Y1NTMyMWY2ODhi
NzVkNzIzYTAxNzgzZjUwZTdlYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNjAsMTEgKzI2MCwx
MSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLWlubGluZSBQ
YXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB0b05hdGl2ZVR5cGVkVmlldyhK
U1ZhbHVlIHZhbHVlKQoraW5saW5lIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4g
dG9OYXRpdmVUeXBlZFZpZXcoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB0eXBlbmFtZSBBZGFwdG9y
OjpKU1ZpZXdUeXBlKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDx0eXBlbmFtZSBBZGFwdG9yOjpK
U1ZpZXdUeXBlKj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB3cmFwcGVyLT50eXBlZEltcGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oCmluZGV4IDY5Mjc2NGQyNTBmZTczMjM3YmMz
ZDIwNTExNTM5MGFlYzdiMGE5MTQuLjYxMjgwMjVmZmM4N2NhYTNkMTIxNjZiM2E5Zjg4OGI1ZWFl
MDk5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVj
dE5vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29uZGl0aW9uLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNs
dWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlRmls
dGVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCmlu
ZGV4IDM2OWFkMDUyMTAzOTMyY2Q0ODM4YWI3MDlhOTI3YTRjNjY1ZWY0MDEuLmJlMTM0YzE5ODVi
NjBlMzRhODBhNzAxNjQ0MGZiOWJlMGQwNGMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNpbmNsdWRlICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRl
ci5jcHAKaW5kZXggZmM2OGM2ZDQyMjYxY2ZjNTliMjllMTc4NjI2OTA4YjU3NGJmMjNhMS4uMjU4
ZmM0YWQ4ZjlkYmQzZDA2NjRhNDNjM2QwZjQ5N2M0MGY4YjVkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXIuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpOb2RlRmls
dGVyKiBjb3JlTm9kZUZpbHRlcikKICAgICByZXR1cm4gbm9kZUZpbHRlck1hcCgpLmdldChjb3Jl
Tm9kZUZpbHRlcik7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4gY29yZShX
ZWJLaXRET01Ob2RlRmlsdGVyKiBub2RlRmlsdGVyKQorUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0
ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikKIHsKICAgICBpZiAoIW5v
ZGVGaWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJpdmF0ZS5o
CmluZGV4IGMxYTI2OGM1ZDcxMDYzMzU0N2ZlYjM0NjRlMWVkNmRiYmI4ZjYyOWQuLjZiYjEzOWI5
NTc1OGQyOWRmNzU2ODBjMzA2MzU1NzIwOWM2ZGY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXJQcml2YXRl
LmgKQEAgLTIxLDcgKzIxLDYgQEAKICNkZWZpbmUgV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGVf
aAogCiAjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU5vZGVGaWx0ZXIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb2RlRmls
dGVyOwpAQCAtMjksNyArMjgsNyBAQCBjbGFzcyBOb2RlRmlsdGVyOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpOb2RlRmlsdGVyKik7Ci1Q
YXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciop
OworUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciop
OwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvKiBXZWJLaXRET01Ob2RlRmlsdGVy
UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggYTdlN2I1OGNkNWIyZDM1
NGNjNWYxZWIzZTI5ZjQxMGI1ODU4YTdlNy4uYWMyODIwODdmYzIwZmU4MjE1OWVmNjEzOTA4ZTI3
ODViOTI5MGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdChXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXJJZmFjZSogaWZhCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVm
UHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRET01YUGF0aE5TUmVzb2x2
ZXIqIHhQYXRoTlNSZXNvbHZlcikKK1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGNv
cmUoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiB4UGF0aE5TUmVzb2x2ZXIpCiB7CiAgICAgaWYg
KCF4UGF0aE5TUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE4LDcgKzEx
OCw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERP
TVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sCiAgICAgICAgIGNvcmVSZXNvbHZlciA9IGNv
cmUoV0VCS0lUX0RPTV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIoeFBhdGhOU1Jlc29sdmVyKSk7
CiAgICAgZWxzZQogICAgICAgICBjb3JlUmVzb2x2ZXIgPSBXZWJDb3JlOjpHT2JqZWN0WFBhdGhO
U1Jlc29sdmVyOjpjcmVhdGUoeFBhdGhOU1Jlc29sdmVyKTsKLSAgICByZXR1cm4gY29yZVJlc29s
dmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY29yZVJlc29sdmVyOwogfQogCiBXZWJLaXRET01Y
UGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIGNvcmVYUGF0aE5T
UmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dl
YktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCmluZGV4IGEzMDcyZjZi
Nzg4Mzg0MWMwOTVmM2EzZWJiNGVjZTc1NWY5MjY2M2UuLmZmYmE2YzRhMDdkMDIwMWI3NDM5NmFi
MGVhMDYzYjY2YWI5MTI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCkBA
IC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRIX05TX1JF
U09MVkVSICAgICAgICAgICAgKHdlYmtpdF9kb21fbmF0aXZlX3hwYXRoX25zX3Jlc29sdmVyX2dl
dF90eXBlKCkpCiAjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09MVkVSKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9E
T01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQYXRoTlNS
ZXNvbHZlcikpCkBAIC0zNiw3ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXIgV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzIFdlYktpdERPTU5h
dGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNSZXNvbHZl
ciopOworUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXIqKTsKIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcioga2l0KFdlYkNvcmU6OlhQ
YXRoTlNSZXNvbHZlciopOwogV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBjb3JlKFdlYktpdERP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlciopOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMjU2MmNlOTdh
MDk1MmY0YWZkNjViNTUxNWIwZmUzNDFlMjk5ZjQzOC4uY2I1MTEwNzA2NTgwNmRlNmIwYWY4NmYx
NjQ1MWFhZjY0MzM3NzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxi
YWNrRnVuY3Rpb24uaApAQCAtNDYsMTEgKzQ2LDExIEBAIGJvb2wgY2hlY2tGdW5jdGlvbk9ubHlD
YWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFs
CiAKIC8vIENyZWF0ZXMgY2FsbGJhY2sgb2JqZWN0cyBmb3IgY2FsbGJhY2tzIG1hcmtlZCBhcyBG
dW5jdGlvbk9ubHkgaW4gV2ViSURMLgogdGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2FsbGJhY2tUeXBl
PgotUGFzc1JlZlB0cjxKU0NhbGxiYWNrVHlwZT4gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2so
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRlZFZhbHVl
cyA9IDApCitSZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNr
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1
ZXMgPSAwKQogewogICAgIGlmIChjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKGV4ZWMsIHZhbHVl
LCBhY2NlcHRlZFZhbHVlcykpCiAgICAgICAgIHJldHVybiBKU0NhbGxiYWNrVHlwZTo6Y3JlYXRl
KGFzT2JqZWN0KHZhbHVlKSwgZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IGIxZjFiNzM2ZWEwZmRlMmMxZmViOTM5ZjE1N2I5
NjVmMjcyOGZiZDIuLjJiYWM2MGQ5OTVlNzc5NGNmNWM2YTQ2YzJiNzc2YTA5YzE1MTA4NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTUzLDkgKzUzLDkgQEAg
cHVibGljOgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQm
KSBjb25zdDsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1l
LCBUKiB0YXJnZXQpIGNvbnN0OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExp
c3RlbmVyKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2
ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7
CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CiAKICAgICBib29sIGlzT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wgaXNVbmRl
ZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQpA
QCAtODYsMjQgKzg2LDI0IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVu
ZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0CitSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKIHsKICAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CiAgICAgaWYgKCFtX2RpY3Rp
b25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChldmVudExpc3Rl
bmVyLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmICghZXZlbnRMaXN0ZW5lci5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2JqZWN0KHRh
cmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkpKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rp
b25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRh
cmdldCkgY29uc3QKK1JlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRFdmVudExp
c3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdldEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRhKCksIHRh
cmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCmluZGV4IDZmODA2NjE0ZWE0YjBjYjQxNmE1M2YyNzI5MmQ5Y2VkOTVjZjY5
MjUuLmJlYzc4ZmVmZGVkODY0MGVkYzE5NmRlOGZjY2Y4NGI5NDQ2MTRkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgc3RhdGljIEpTVmFsdWUgaWRiS2V5VG9KU1ZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtRGVwdGggPSAyMDAwOwogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjxKU0FycmF5Kj4mIHN0YWNrKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0FycmF5Kj4m
IHN0YWNrKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFzdGQ6OmlzbmFuKHZhbHVl
LnRvTnVtYmVyKGV4ZWMpKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKHZh
bHVlLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsCiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwogCiAg
ICAgICAgICAgICBpZiAoc3RhY2suY29udGFpbnMoYXJyYXkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYg
KHN0YWNrLnNpemUoKSA+PSBtYXhpbXVtRGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzdGFjay5hcHBl
bmQoYXJyYXkpOwogCiAgICAgICAgICAgICBJREJLZXk6OktleUFycmF5IHN1YmtleXM7CkBAIC0x
NDgsMTAgKzE0OCwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsCiAgICAgICAgICAgICByZXR1
cm4gSURCS2V5OjpjcmVhdGVBcnJheShzdWJrZXlzKTsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVmVjdG9yPEpTQXJyYXkqPiBzdGFjazsKICAg
ICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywgdmFsdWUs
IHN0YWNrKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9u
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBWZQogICAg
IHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaW50
ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCitzdGF0aWMgUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2Ny
aXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwpA
QCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0CiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdmFsdWUuanNWYWx1ZSgpOwogICAgIGpzVmFsdWUgPSBnZXROdGhWYWx1ZU9uS2V5
UGF0aChleGVjLCBqc1ZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXpl
KCkpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVl
KGV4ZWMsIGpzVmFsdWUpOwogfQogCkBAIC0yNTgsNyArMjU4LDcgQEAgYm9vbCBpbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQ
dHI8SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CitSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VSVCgha2V5UGF0aC5pc051
bGwoKSk7CkBAIC0yNjksNyArMjY5LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAg
ICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFycmF5W2ldKTsKICAgICAgICAgICAgIGlmICgha2V5
KQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KHJlc3VsdCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3Rh
dGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1IKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwogfQogCi1Q
YXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQor
UmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVl
c3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIHJldHVybiBj
cmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCBk
MDA4MzIxZWQwODcwMzdmMzllOWY0MjMwZjU2M2NkYTlmNjQ0ZmFiLi5hZWVhYzYwZjY3NDVkN2M0
ZDAyZjVkZDIwNWZkMDI1MTBhYjgxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00NSwxMyArNDUsMTMgQEAgc3RydWN0IElE
QktleURhdGE7CiBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUpOwogCiBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1JlZlB0cjxJREJLZXk+IGNyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5q
ZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxp
emVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIGJvb2wga2V5SXNEZWZpbmVkKTsKIFdFQkNPUkVfRVhQT1JUIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBib29sIGtleUlzRGVmaW5lZCk7CiBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURC
S2V5Pik7Ci1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0
U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOworUmVmUHRyPElEQktleT4g
c2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+JiBpbmRl
eEtleXMpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IDc1NzUxOTQyOGE0OWU1NTNhZmI1MGQ2MzYyN2IxODFjYzk3YmE3NmYuLjNlMzM4NzcwNTc3
ZmU1YzM4MDIxNjVjY2VjNDkyZGYzODhlYTg4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC00NjUsMTUgKzQ2NSwxNSBAQCBpbmxpbmUgUGFzc1JlZlB0
cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CiB9CiAKLWlubGluZSBQYXNzUmVmUHRy
PEpTQzo6SW50OEFycmF5PiB0b0ludDhBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJu
IEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQ4QWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxp
bmUgUGFzc1JlZlB0cjxKU0M6OkludDE2QXJyYXk+IHRvSW50MTZBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQxNkFkYXB0b3I+
KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0ludDMyQXJy
YXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpT
Qzo6SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpTQzo6VWludDhB
cnJheT4gdG9VaW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05h
dGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQ4QWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxpbmUgUGFzc1Jl
ZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiB0b1VpbnQ4Q2xhbXBlZEFycmF5KEpTQzo6SlNW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQ4Q2xh
bXBlZEFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpVaW50MTZBcnJh
eT4gdG9VaW50MTZBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRp
dmVUeXBlZFZpZXc8SlNDOjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVm
UHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7
IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDMyQWRhcHRvcj4odmFsdWUp
OyB9Ci1pbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9hdDMyQXJyYXko
SlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6
RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpGbG9hdDY0
QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0
b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBS
ZWZQdHI8SlNDOjpJbnQ4QXJyYXk+IHRvSW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBy
ZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkludDhBZGFwdG9yPih2YWx1ZSk7IH0K
K2lubGluZSBSZWZQdHI8SlNDOjpJbnQxNkFycmF5PiB0b0ludDE2QXJyYXkoSlNDOjpKU1ZhbHVl
IHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6SW50MTZBZGFwdG9y
Pih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0ludDMyQXJyYXko
SlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6
SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiB0
b1VpbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlw
ZWRWaWV3PEpTQzo6VWludDhBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpV
aW50OENsYW1wZWRBcnJheT4gdG9VaW50OENsYW1wZWRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50OENsYW1wZWRBZGFwdG9y
Pih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50MTZBcnJheT4gdG9VaW50MTZBcnJh
eShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlND
OjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50MzJBcnJh
eT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRp
dmVUeXBlZFZpZXc8SlNDOjpVaW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8
SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBy
ZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2YWx1ZSk7
IH0KK2lubGluZSBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6
SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0
NjRBZGFwdG9yPih2YWx1ZSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2
ZVZhbHVlVHJhaXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01TdHJpbmdMaXN0Q3VzdG9tLmNwcAppbmRleCBkZDgzNThkNDgzNmVlMWQxMjg4ODY1MjhmMjEz
ZWZhM2NkMWY4MTk4Li5mZDQwMWIyOTA1ZjY5MWY2ZGZmZmRiNWQ4NWRkNDI1MzRhZGYyODliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSlNET01TdHJpbmdM
aXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNET01TdHJpbmdMaXN0
OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVN0cmluZ0xpc3QqPihhc09i
amVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTQXJyYXkqIGFy
cmF5ID0gYXNBcnJheSh2YWx1ZSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xp
c3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXJyYXktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZChhcnJh
eS0+Z2V0SW5kZXgoZXhlYywgaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIAotICAg
IHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBlY2JiMzNlZWY4
NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIyMDUwLi5iODg2NTAxZjdlMmUwZDlkNWE2MTY4MjU3
NDY3ZTI4N2JhZTI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNDAsNzggKzQwLDc4IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0aW9uQXJn
dW1lbnQoSlNWYWx1ZSB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0cjxEZXZp
Y2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IHJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudChKU1Zh
bHVlIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9i
amVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKICAg
ICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlWCA9
ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgeCA9IHhWYWx1ZS50b051
bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgeVZhbHVlID0gb2Jq
ZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieSIpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpOwogICAgIGRvdWJsZSB5ID0geVZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJvb2wg
Y2FuUHJvdmlkZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIHog
PSB6VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWNh
blByb3ZpZGVYICYmICFjYW5Qcm92aWRlWSAmJiAhY2FuUHJvdmlkZVopCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25E
YXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShjYW5Qcm92aWRlWCwgeCwgY2FuUHJvdmlkZVksIHks
IGNhblByb3ZpZGVaLCB6KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0
YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWx1ZSB2YWx1ZSwg
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlv
blJhdGU+IHJlYWRSb3RhdGlvblJhdGVBcmd1bWVudChKU1ZhbHVlIHZhbHVlLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEdpdmVuIHRoZSBhYm92
ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09iamVjdCog
b2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGFscGhhVmFsdWUg
PSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJhbHBoYSIp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9ICFhbHBoYVZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIGFscGhhID0gYWxwaGFWYWx1ZS50
b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgYmV0YVZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiYmV0YSIp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVCZXRhID0gIWJldGFWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBiZXRhID0gYmV0YVZhbHVlLnRvTnVt
YmVyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNWYWx1ZSBnYW1tYVZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZ2FtbWEiKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2FtbWFWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBnYW1tYSA9IGdhbW1hVmFsdWUudG9O
dW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWNhblByb3ZpZGVBbHBo
YSAmJiAhY2FuUHJvdmlkZUJldGEgJiYgIWNhblByb3ZpZGVHYW1tYSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIERldmljZU1vdGlvbkRh
dGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3Zp
ZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oCmluZGV4IGRmZTEzYzJmYWI1NTA2MzIyNGI0
NWZlZGU2MTJmMGE5YWFlNjg1ZTIuLjU1Nzc3OGQ0NmNjYzA3NDg5YTJlMzgwNGVkYjY0ZjcyOTg5
MGY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuaApA
QCAtNTEsMTAgKzUxLDEwIEBAIHByaXZhdGU6CiAKIC8vIENyZWF0ZXMgYSBKUyBFdmVudExpc3Rl
bmVyIGZvciAib25lcnJvciIgZXZlbnQgaGFuZGxlciBpbiB3b3JrZXIgY29udGV4dC4gSXQgaGFz
IGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCiAvLyB1bmxpa2Ugb3RoZXIgZXZlbnQgbGlz
dGVuZXJzIGl0IGFjY2VwdHMgdGhyZWUgcGFyYW1ldGVycy4KLWlubGluZSBQYXNzUmVmUHRyPEpT
RXJyb3JIYW5kbGVyPiBjcmVhdGVKU0Vycm9ySGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQoraW5saW5lIFJl
ZlB0cjxKU0Vycm9ySGFuZGxlcj4gY3JlYXRlSlNFcnJvckhhbmRsZXIoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBlcikKIHsK
ICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBKU0Vycm9ySGFuZGxlcjo6Y3JlYXRlKGFz
T2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBlciwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAKaW5kZXggZDFhMmRhYTFhNWIxNDU1ZGQxN2RjNTQ2OGM1ZjQ4NDMzOTYzYzlhMC4uMTI3MDI0
Nzc0YzE5YTAzM2U4ZGVkMDg3MDI4YWRlOGFlMDZlM2RiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTY5LDcgKzY5LDcg
QEAgc3RhdGljIHZvaWQgc2V0TWF4aW11bUFnZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNv
bnN0IGRvdWJsZSYgbWF4aW11bUFnZSkKIH0KIAogCi1zdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlv
bk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCitzdGF0aWMgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRpb25PcHRp
b25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBDcmVhdGUgZGVm
YXVsdCBvcHRpb25zLgogICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMgPSBQb3Np
dGlvbk9wdGlvbnM6OmNyZWF0ZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdQogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmluZWQgaXMg
YWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKICAgICAgICAgLy8gVXNlIGRlZmF1bHQgb3B0aW9ucy4KLSAgICAgICAgcmV0
dXJuIG9wdGlvbnMucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gb3B0aW9uczsKICAgICB9CiAK
ICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBv
YmplY3QuCkBAIC04NywxMyArODcsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRp
b25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICBK
U0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBvYmplY3QpOwogCiAgICAgaWYgKCFkaWN0aW9u
YXJ5LnRyeUdldFByb3BlcnR5KCJlbmFibGVIaWdoQWNjdXJhY3kiLCBvcHRpb25zLmdldCgpLCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3kpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJ0aW1lb3V0Iiwg
b3B0aW9ucy5nZXQoKSwgc2V0VGltZW91dCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkoIm1heGlt
dW1BZ2UiLCBvcHRpb25zLmdldCgpLCBzZXRNYXhpbXVtQWdlKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG9wdGlvbnMucmVsZWFzZSgp
OworICAgIHJldHVybiBvcHRpb25zOwogfQogCiBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OmdldEN1
cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCBmNDEwZTI4YzFmMmIxNDZlOTYzMzhiNjExODBhOTEz
MTU3Nzg1N2Q0Li42ZDRjODFkMmRiNWU4NWY1YzdkZmMxYzEzZDI2Mzk0Y2Q2ZjQwZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTY3LDcgKzY3
LDYgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IDYyZDFiMWNj
NDAzYTMxMTJiYWJmY2U5YmJmYTc5ODI4YWViMjlhY2IuLjJiZDVhMjcwZDM3MWI5N2UwOGI5OWNk
NjZiNTU0NDRlMWFhMzQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtMzUsMTQgKzM1LDE0IEBAIHZvaWQgSlNOb2RlRmls
dGVyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKIH0KIAotUGFzc1JlZlB0cjxOb2Rl
RmlsdGVyPiBKU05vZGVGaWx0ZXI6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQorUmVmUHRyPE5vZGVGaWx0ZXI+IEpTTm9kZUZpbHRlcjo6dG9XcmFwcGVkKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpT
Tm9kZUZpbHRlcjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU05vZGVG
aWx0ZXIqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBSZWZQdHI8Tm9kZUZpbHRl
cj4gcmVzdWx0ID0gTm9kZUZpbHRlcjo6Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5zZXRDb25kaXRp
b24oSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpjcmVhdGUodm0sIHJlc3VsdC5nZXQoKSwgdmFsdWUp
KTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGRlZDEzNWYwYTM2ZjZkNDUxZWJhYzE1YWQwYTI5
YzUzY2Y2ZTgzMmMuLjRiM2IwOTcyYmU3N2YzYzc2NTk1ZjE0MGUyNmE3NDhmZjhlYTQ1MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0xODAsNyArMTgwLDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKICAgICByZXR1cm4gZXZh
bHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAot
UGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxk
KCkKK1JlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCkK
IHsKICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6OmNvbW1v
blZNKCkpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIEJpbmRpbmdzOjpSb290T2JqZWN0KiBTY3Jp
cHRDb250cm9sbGVyOjpiaW5kaW5nUm9vdE9iamVjdCgpCiAgICAgcmV0dXJuIG1fYmluZGluZ1Jv
b3RPYmplY3QuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8QmluZGluZ3M6OlJvb3RPYmplY3Q+IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxlKQorUmVm
UHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVSb290T2Jq
ZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSkKIHsKICAgICBSb290T2JqZWN0TWFwOjppdGVyYXRvciBp
dCA9IG1fcm9vdE9iamVjdHMuZmluZChuYXRpdmVIYW5kbGUpOwogICAgIGlmIChpdCAhPSBtX3Jv
b3RPYmplY3RzLmVuZCgpKQpAQCAtMzg0LDcgKzM4NCw3IEBAIFBhc3NSZWZQdHI8QmluZGluZ3M6
OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0
aXZlCiAgICAgUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0ID0gQmluZGlu
Z3M6OlJvb3RPYmplY3Q6OmNyZWF0ZShuYXRpdmVIYW5kbGUsIGdsb2JhbE9iamVjdChwbHVnaW5X
b3JsZCgpKSk7CiAKICAgICBtX3Jvb3RPYmplY3RzLnNldChuYXRpdmVIYW5kbGUsIHJvb3RPYmpl
Y3QpOwotICAgIHJldHVybiByb290T2JqZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcm9vdE9i
amVjdDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0
cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPj4mIHJl
c3VsdCkKQEAgLTQzMiw3ICs0MzIsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxlbWVudAogI2VuZGlm
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1QYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRn
ZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJv
bGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCiB7CiAg
ICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IGJhNjk5YWVjZTlmYzM3MWQ4ZGVjM2U5ZjRiMTE5MTUwNGE1M2VhOTUuLjA3YzUzYjdjOGVk
ZmI0ZTI4ZjVjYTEzYWEyYzRlMDU1OTRlZjUxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IFNjcmlwdENvbnRyb2xsZXIoRnJhbWUmKTsKICAgICB+U2NyaXB0Q29udHJvbGxl
cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBjcmVhdGVXb3JsZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RE9NV3Jh
cHBlcldvcmxkPiBjcmVhdGVXb3JsZCgpOwogCiAgICAgSlNET01XaW5kb3dTaGVsbCogY3JlYXRl
V2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBkZXN0cm95V2luZG93U2hl
bGwoRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUGFzc1JlZlB0cjxK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdp
ZGdldCopOworICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0ZVNjcmlw
dEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCopOwogICAgIEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QqIGJpbmRpbmdSb290T2JqZWN0KCk7CiAgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCog
Y2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NS
ZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gY3JlYXRlUm9vdE9iamVjdCh2b2lkKiBu
YXRpdmVIYW5kbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0PiBjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CiAKICAgICB2
b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3Rh
dGUqLCBTZWN1cml0eU9yaWdpbio+PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBlOWVhNjMwZTFiYTFmODI3YzU2NGE0
NDM0MWJiYjRlNTNmYmM5MTE1Li5mMjM0NDAwOTAxMjM0OGM4MjhlZWJmN2MxNTMxODU2ZGUzMjhh
Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTYwLDExICs2MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5n
czsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChX
aWRnZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCiB7
CiAgICAgTlNWaWV3KiB3aWRnZXRWaWV3ID0gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpOwogICAg
IGlmICghd2lkZ2V0VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QgPSBjcmVhdGVSb290T2Jq
ZWN0KHdpZGdldFZpZXcpOwogCkBAIC03NCwyNSArNzQsMjUgQEAgUGFzc1JlZlB0cjxKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWQKICAgICBpZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihv
YmplY3RGb3JXZWJTY3JpcHQpXSkgewogICAgICAgICBpZCBvYmplY3RGb3JXZWJTY3JpcHQgPSBb
d2lkZ2V0VmlldyBvYmplY3RGb3JXZWJTY3JpcHRdOwogICAgICAgICBpZiAoIW9iamVjdEZvcldl
YlNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6OmNyZWF0ZShv
YmplY3RGb3JXZWJTY3JpcHQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBp
ZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihjcmVhdGVQbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0KV0pIHsKICNpZiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCiAgICAgICAg
IE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlwdGFibGVP
YmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0
YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCByb290T2Jq
ZWN0LnJlbGVhc2UoKSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0
IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8g
cmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsKLSAgICAg
ICAgcmV0dXJuIGluc3RhbmNlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
I2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IFdlYlNjcmlwdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IGRlMGM1MmIxMjgxOTliYjU1OWEzMjE5NzJlNTQ4MjdhZjAzYmY5ZmMuLjYy
ZWExYzFiZGNlZDYzMDY1ODk4YThiNDFiMGI2ZDIxYjg1N2FiODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjY5
NSw3ICsyNjk1LDcgQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJl
ZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlWYWx1ZSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMob3Jp
Z2luQ29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAgLTI3MDUsMTAg
KzI3MDUsMTAgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmkKICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24o
KS0+dmFsdWUoKSk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgQVNTRVJUKHNlcmlh
bGl6ZWRWYWx1ZSk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCAyMTYxNWExMmNlYzJhN2Q3ZGE1NTNkZTk0MDk1MDA1Mzg5
MGY3NzQ3Li44MWQ2MDBmNTZmNTI2Mjg3MzE5ZDNjMmI2Yjg4YjY4ZTNlZGE5MTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODQsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CiAKICAgICAvLyBBUEkgaW1wbGVtZW50YXRpb24gaGVs
cGVycy4gVGhlc2UgZG9uJ3QgZXhwb3NlIHNwZWNpYWwgYmVoYXZpb3IgZm9yIEFycmF5QnVmZmVy
cyBvciBNZXNzYWdlUG9ydHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVSZWYgZGVz
ZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCmlu
ZGV4IGNjNzYyYTgzZjZhOTk0ODQ5MDQ3ODQ0ODhkZmRhMzFjZDIxNzU3YWYuLjVkYzRmOTRiY2M4
YTI3OGU5YjM4NmQ1NTZmYWM3ZTVkZmZhZThlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAg
dXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIFBvc2l0aW9uIHBhcmFncmFwaEVu
ZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsgICAgCiAgICAgCiAgICAgaWYgKHBhcmFncmFwaFN0YXJ0LmlzTm90TnVsbCgp
ICYmIHBhcmFncmFwaEVuZC5pc05vdE51bGwoKSkgewotICAgICAgICBQYXNzUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm5vZGUtPm93bmVyRG9jdW1lbnQoKSwgcGFyYWdyYXBo
U3RhcnQsIHBhcmFncmFwaEVuZCk7CisgICAgICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCpub2RlLT5vd25lckRvY3VtZW50KCksIHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhF
bmQpOwogICAgICAgICByZXN1bHQgPSBraXQocmFuZ2UuZ2V0KCkpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24uaAppbmRleCBjYzA3N2IzMTAyNDNlOGMwNGE2ODQ3ZjcxMzE4MGEwZDViMGVlNDk2Li4z
YmUxNTYzNmE1YThkZmEzYjU3MWNjYTg0MWJkMmQzMDVhZWRlNjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oCkBA
IC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
QHByb3RvY29sIERPTU5vZGVGaWx0ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258499</attachid>
            <date>2015-08-07 08:02:48 -0700</date>
            <delta_ts>2015-08-07 16:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147781-20150808000236.patch</filename>
            <type>text/plain</type>
            <size>40291</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDIzNTc0ODhkZTYwM2ZiMDdlODRiMzAyZTNmYjNhZWZjMjBjZGJiLi4xY2Q0MTNhN2VkNThiODNm
NmM3MTVjMTE4MjMyMzJjODY5MjIzYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wOC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBiaW5kaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0
ciB3aGVuIGZ1bmN0aW9uIGNhbiByZXR1cm4gbnVsbCBvciBhbiBpbnN0YW5jZS4gSWYgbm90LCBS
ZWYgaXMgdXNlZC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKEpTQzo6dG9OYXRpdmVUeXBlZFZpZXcpOgorCiAyMDE1LTA4LTA2ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBn
ZXRfYnlfaWQgbGlrZSBJQyBpbnRvIGdldF9ieV92YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBpcyBT
dHJpbmcgb3IgU3ltYm9sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk1NDU2MzFmNzFiZjQxN2Y1OTJkZjgxMzFj
YTE1OWQwNzhiYzIyYy4uNzNjNDkxYzc0YzY0MDQ4NWRlMGU0ZDM4YzdmNWVkMThhNWFkOTZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE1LTA4LTA3ICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNlcyBvZiBQYXNzUmVm
UHRyIGluIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDc3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgUmVmUHRyIHdoZW4gZnVuY3Rpb24gY2FuIHJldHVybiBudWxsIG9yIGFuIGlu
c3RhbmNlLiBJZiBub3QsIFJlZiBpcyB1c2VkLgorCisgICAgICAgICogYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmpl
Y3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NTm9kZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhbGxiYWNr
RnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZy
b21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3Jp
cHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRWYWx1ZVRvSURC
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0lu
dDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDE2QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JbnQzMkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVWludDhBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1VpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnRvVWludDE2QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9VaW50MzJBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0Zsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0Zsb2F0
NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkUm90YXRpb25SYXRlQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU0Vycm9ySGFuZGxlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06Cisg
ICAgICAgICgtW0RPTU5vZGUgcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGhdKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisKIDIwMTUtMDgtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFj
a2FnZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5k
ZXggMzk5NmUxY2NlYWYwNTBkZGMxMmU0Mjk4MDU5NjhhMGEwNGVhNWQ2YS4uYTNhNzU2Y2Y1NTMy
MWY2ODhiNzVkNzIzYTAxNzgzZjUwZTdlYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNjAsMTEg
KzI2MCwxMSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLWlu
bGluZSBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB0b05hdGl2ZVR5cGVk
VmlldyhKU1ZhbHVlIHZhbHVlKQoraW5saW5lIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gdG9OYXRpdmVUeXBlZFZpZXcoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB0eXBlbmFtZSBB
ZGFwdG9yOjpKU1ZpZXdUeXBlKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDx0eXBlbmFtZSBBZGFw
dG9yOjpKU1ZpZXdUeXBlKj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB3cmFwcGVyLT50eXBl
ZEltcGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oCmluZGV4IDY5Mjc2NGQyNTBmZTcz
MjM3YmMzZDIwNTExNTM5MGFlYzdiMGE5MTQuLjYxMjgwMjVmZmM4N2NhYTNkMTIxNjZiM2E5Zjg4
OGI1ZWFlMDk5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29uZGl0aW9uLmgKQEAgLTIyLDcgKzIyLDYgQEAK
ICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAKICNpbmNsdWRlICJXZWJLaXRET01O
b2RlRmlsdGVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZl
ci5oCmluZGV4IDM2OWFkMDUyMTAzOTMyY2Q0ODM4YWI3MDlhOTI3YTRjNjY1ZWY0MDEuLmJlMTM0
YzE5ODViNjBlMzRhODBhNzAxNjQ0MGZiOWJlMGQwNGMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCkBA
IC0yMSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCIK
ICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2Rl
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9k
ZUZpbHRlci5jcHAKaW5kZXggZmM2OGM2ZDQyMjYxY2ZjNTliMjllMTc4NjI2OTA4YjU3NGJmMjNh
MS4uMjU4ZmM0YWQ4ZjlkYmQzZDA2NjRhNDNjM2QwZjQ5N2M0MGY4YjVkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXIu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpO
b2RlRmlsdGVyKiBjb3JlTm9kZUZpbHRlcikKICAgICByZXR1cm4gbm9kZUZpbHRlck1hcCgpLmdl
dChjb3JlTm9kZUZpbHRlcik7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4g
Y29yZShXZWJLaXRET01Ob2RlRmlsdGVyKiBub2RlRmlsdGVyKQorUmVmUHRyPFdlYkNvcmU6Ok5v
ZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikKIHsKICAgICBp
ZiAoIW5vZGVGaWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJp
dmF0ZS5oCmluZGV4IGMxYTI2OGM1ZDcxMDYzMzU0N2ZlYjM0NjRlMWVkNmRiYmI4ZjYyOWQuLjZi
YjEzOWI5NTc1OGQyOWRmNzU2ODBjMzA2MzU1NzIwOWM2ZGY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXJQ
cml2YXRlLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNkZWZpbmUgV2ViS2l0RE9NTm9kZUZpbHRlclBy
aXZhdGVfaAogCiAjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU5vZGVGaWx0ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBO
b2RlRmlsdGVyOwpAQCAtMjksNyArMjgsNyBAQCBjbGFzcyBOb2RlRmlsdGVyOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpOb2RlRmlsdGVy
Kik7Ci1QYXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZp
bHRlciopOworUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZp
bHRlciopOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvKiBXZWJLaXRET01Ob2Rl
RmlsdGVyUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggYTdlN2I1OGNk
NWIyZDM1NGNjNWYxZWIzZTI5ZjQxMGI1ODU4YTdlNy4uYWMyODIwODdmYzIwZmU4MjE1OWVmNjEz
OTA4ZTI3ODViOTI5MGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdChXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZSogaWZhCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRET01YUGF0aE5T
UmVzb2x2ZXIqIHhQYXRoTlNSZXNvbHZlcikKK1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2
ZXI+IGNvcmUoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiB4UGF0aE5TUmVzb2x2ZXIpCiB7CiAg
ICAgaWYgKCF4UGF0aE5TUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE4
LDcgKzExOCw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sCiAgICAgICAgIGNvcmVSZXNvbHZl
ciA9IGNvcmUoV0VCS0lUX0RPTV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIoeFBhdGhOU1Jlc29s
dmVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb3JlUmVzb2x2ZXIgPSBXZWJDb3JlOjpHT2JqZWN0
WFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUoeFBhdGhOU1Jlc29sdmVyKTsKLSAgICByZXR1cm4gY29y
ZVJlc29sdmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY29yZVJlc29sdmVyOwogfQogCiBXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIGNvcmVY
UGF0aE5TUmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCmluZGV4IGEz
MDcyZjZiNzg4Mzg0MWMwOTVmM2EzZWJiNGVjZTc1NWY5MjY2M2UuLmZmYmE2YzRhMDdkMDIwMWI3
NDM5NmFiMGVhMDYzYjY2YWI5MTI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0
ZS5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNp
bmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIAogI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRI
X05TX1JFU09MVkVSICAgICAgICAgICAgKHdlYmtpdF9kb21fbmF0aXZlX3hwYXRoX25zX3Jlc29s
dmVyX2dldF90eXBlKCkpCiAjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09M
VkVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlcikpCkBAIC0zNiw3ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzIFdlYktp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNS
ZXNvbHZlciopOworUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXIqKTsKIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcioga2l0KFdlYkNv
cmU6OlhQYXRoTlNSZXNvbHZlciopOwogV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBjb3JlKFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciopOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMjU2
MmNlOTdhMDk1MmY0YWZkNjViNTUxNWIwZmUzNDFlMjk5ZjQzOC4uY2I1MTEwNzA2NTgwNmRlNmIw
YWY4NmYxNjQ1MWFhZjY0MzM3NzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhbGxiYWNrRnVuY3Rpb24uaApAQCAtNDYsMTEgKzQ2LDExIEBAIGJvb2wgY2hlY2tGdW5jdGlv
bk9ubHlDYWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgQ2FsbGJhY2tBbGxv
d2VkVmFsCiAKIC8vIENyZWF0ZXMgY2FsbGJhY2sgb2JqZWN0cyBmb3IgY2FsbGJhY2tzIG1hcmtl
ZCBhcyBGdW5jdGlvbk9ubHkgaW4gV2ViSURMLgogdGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2FsbGJh
Y2tUeXBlPgotUGFzc1JlZlB0cjxKU0NhbGxiYWNrVHlwZT4gY3JlYXRlRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRl
ZFZhbHVlcyA9IDApCitSZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0
ZWRWYWx1ZXMgPSAwKQogewogICAgIGlmIChjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKGV4ZWMs
IHZhbHVlLCBhY2NlcHRlZFZhbHVlcykpCiAgICAgICAgIHJldHVybiBKU0NhbGxiYWNrVHlwZTo6
Y3JlYXRlKGFzT2JqZWN0KHZhbHVlKSwgZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IGIxZjFiNzM2ZWEwZmRlMmMxZmViOTM5
ZjE1N2I5NjVmMjcyOGZiZDIuLjJiYWM2MGQ5OTVlNzc5NGNmNWM2YTQ2YzJiNzc2YTA5YzE1MTA4
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTUzLDkgKzUz
LDkgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBS
ZXN1bHQmKSBjb25zdDsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRF
dmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkg
Y29uc3Q7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CiAKICAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9kaWN0aW9uYXJ5LmlzVmFsaWQo
KTsgfQpAQCAtODYsMjQgKzg2LDI0IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50
TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0CitSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKIHsKICAgICBpZiAoIW1fZGljdGlvbmFy
eS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CiAgICAgaWYgKCFt
X2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChldmVu
dExpc3RlbmVyLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmICghZXZlbnRMaXN0ZW5lci5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2Jq
ZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFQqIHRhcmdldCkgY29uc3QKK1JlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRh
KCksIHRhcmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDZmODA2NjE0ZWE0YjBjYjQxNmE1M2YyNzI5MmQ5Y2Vk
OTVjZjY5MjUuLmJlYzc4ZmVmZGVkODY0MGVkYzE5NmRlOGZjY2Y4NGI5NDQ2MTRkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIEpTVmFsdWUgaWRiS2V5VG9KU1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhpbXVtRGVwdGggPSAyMDAwOwogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IFZlY3RvcjxKU0FycmF5Kj4mIHN0YWNrKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0Fy
cmF5Kj4mIHN0YWNrKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFzdGQ6OmlzbmFu
KHZhbHVlLnRvTnVtYmVyKGV4ZWMpKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVt
YmVyKHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsCiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgp
OwogCiAgICAgICAgICAgICBpZiAoc3RhY2suY29udGFpbnMoYXJyYXkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgaWYgKHN0YWNrLnNpemUoKSA+PSBtYXhpbXVtRGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzdGFj
ay5hcHBlbmQoYXJyYXkpOwogCiAgICAgICAgICAgICBJREJLZXk6OktleUFycmF5IHN1YmtleXM7
CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsCiAgICAgICAgICAg
ICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShzdWJrZXlzKTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVmVjdG9yPEpTQXJyYXkqPiBzdGFj
azsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywg
dmFsdWUsIHN0YWNrKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhW
YWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBW
ZQogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eT4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCitzdGF0aWMgUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgVmVj
dG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVy
cm9yOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaW50ZXJu
YWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0CiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdmFsdWUuanNWYWx1ZSgpOwogICAgIGpzVmFsdWUgPSBnZXROdGhWYWx1
ZU9uS2V5UGF0aChleGVjLCBqc1ZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50
cy5zaXplKCkpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJv
bVZhbHVlKGV4ZWMsIGpzVmFsdWUpOwogfQogCkBAIC0yNTgsNyArMjU4LDcgQEAgYm9vbCBpbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBh
c3NSZWZQdHI8SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCitSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VSVCgha2V5UGF0
aC5pc051bGwoKSk7CkBAIC0yNjksNyArMjY5LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdAog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3Jp
cHRWYWx1ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFycmF5W2ldKTsKICAgICAgICAgICAgIGlm
ICgha2V5KQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KHJlc3VsdCk7CkBAIC0zNDQsNyArMzQ0
LDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1IKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwog
fQogCi1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3Rh
dGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZh
bHVlKQorUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUq
IHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVl
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApp
bmRleCBkMDA4MzIxZWQwODcwMzdmMzllOWY0MjMwZjU2M2NkYTlmNjQ0ZmFiLi5hZWVhYzYwZjY3
NDVkN2M0ZDAyZjVkZDIwNWZkMDI1MTBhYjgxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00NSwxMyArNDUsMTMgQEAgc3Ry
dWN0IElEQktleURhdGE7CiBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCiBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIGJvb2wga2V5SXNEZWZpbmVkKTsKIFdFQkNPUkVfRVhQT1JUIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sIGtleUlzRGVmaW5lZCk7CiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQ
dHI8SURCS2V5Pik7Ci1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01S
ZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOworUmVmUHRyPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+
JiBpbmRleEtleXMpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCmluZGV4IDc1NzUxOTQyOGE0OWU1NTNhZmI1MGQ2MzYyN2IxODFjYzk3YmE3NmYuLjNlMzM4
NzcwNTc3ZmU1YzM4MDIxNjVjY2VjNDkyZGYzODhlYTg4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC00NjUsMTUgKzQ2NSwxNSBAQCBpbmxpbmUgUGFz
c1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CiB9CiAKLWlubGluZSBQYXNz
UmVmUHRyPEpTQzo6SW50OEFycmF5PiB0b0ludDhBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQ4QWRhcHRvcj4odmFsdWUpOyB9
Ci1pbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkludDE2QXJyYXk+IHRvSW50MTZBcnJheShKU0M6OkpT
VmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQxNkFk
YXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0lu
dDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRW
aWV3PEpTQzo6SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpTQzo6
VWludDhBcnJheT4gdG9VaW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlND
Ojp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQ4QWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxpbmUg
UGFzc1JlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiB0b1VpbnQ4Q2xhbXBlZEFycmF5KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVp
bnQ4Q2xhbXBlZEFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpVaW50
MTZBcnJheT4gdG9VaW50MTZBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6
dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQ
YXNzUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZh
bHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDMyQWRhcHRvcj4o
dmFsdWUpOyB9Ci1pbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9hdDMy
QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3
PEpTQzo6RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpG
bG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4g
SlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KK2lu
bGluZSBSZWZQdHI8SlNDOjpJbnQ4QXJyYXk+IHRvSW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkludDhBZGFwdG9yPih2YWx1
ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpJbnQxNkFycmF5PiB0b0ludDE2QXJyYXkoSlNDOjpK
U1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6SW50MTZB
ZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0ludDMy
QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3
PEpTQzo6SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50OEFy
cmF5PiB0b1VpbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0
aXZlVHlwZWRWaWV3PEpTQzo6VWludDhBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4gdG9VaW50OENsYW1wZWRBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50OENsYW1wZWRB
ZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50MTZBcnJheT4gdG9VaW50
MTZBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZp
ZXc8SlNDOjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50
MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6
dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBS
ZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2
YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6
OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IE5hdGl2ZVZhbHVlVHJhaXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcAppbmRleCBkZDgzNThkNDgzNmVlMWQxMjg4ODY1
MjhmMjEzZWZhM2NkMWY4MTk4Li5mZDQwMWIyOTA1ZjY5MWY2ZGZmZmRiNWQ4NWRkNDI1MzRhZGYy
ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSlNET01T
dHJpbmdMaXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNET01TdHJp
bmdMaXN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVN0cmluZ0xpc3Qq
Pihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTQXJy
YXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0
cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHN0cmluZ0xpc3QtPmFwcGVu
ZChhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
IAotICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RyaW5nTGlz
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBlY2Ji
MzNlZWY4NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIyMDUwLi5iODg2NTAxZjdlMmUwZDlkNWE2
MTY4MjU3NDY3ZTI4N2JhZTI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNDAsNzggKzQwLDc4
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0
aW9uQXJndW1lbnQoSlNWYWx1ZSB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0
cjxEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IHJlYWRBY2NlbGVyYXRpb25Bcmd1bWVu
dChKU1ZhbHVlIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxk
IGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7
CiAKICAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92
aWRlWCA9ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgeCA9IHhWYWx1
ZS50b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgeVZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieSIpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSB5ID0geVZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGJvb2wgY2FuUHJvdmlkZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91
YmxlIHogPSB6VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIWNhblByb3ZpZGVYICYmICFjYW5Qcm92aWRlWSAmJiAhY2FuUHJvdmlkZVopCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBEZXZpY2VN
b3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShjYW5Qcm92aWRlWCwgeCwgY2FuUHJvdmlk
ZVksIHksIGNhblByb3ZpZGVaLCB6KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90
aW9uRGF0YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWx1ZSB2
YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpS
b3RhdGlvblJhdGU+IHJlYWRSb3RhdGlvblJhdGVBcmd1bWVudChKU1ZhbHVlIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEdpdmVuIHRo
ZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09i
amVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGFscGhh
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJh
bHBoYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9ICFh
bHBoYVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIGFscGhhID0gYWxwaGFW
YWx1ZS50b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgYmV0
YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YmV0YSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVCZXRhID0gIWJl
dGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBiZXRhID0gYmV0YVZhbHVl
LnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNWYWx1ZSBnYW1tYVZh
bHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZ2Ft
bWEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2Ft
bWFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBnYW1tYSA9IGdhbW1hVmFs
dWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWNhblByb3Zp
ZGVBbHBoYSAmJiAhY2FuUHJvdmlkZUJldGEgJiYgIWNhblByb3ZpZGVHYW1tYSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNh
blByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oCmluZGV4IGRmZTEzYzJmYWI1NTA2
MzIyNGI0NWZlZGU2MTJmMGE5YWFlNjg1ZTIuLjU1Nzc3OGQ0NmNjYzA3NDg5YTJlMzgwNGVkYjY0
ZjcyOTg5MGY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJy
b3JIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHByaXZhdGU6CiAKIC8vIENyZWF0ZXMgYSBKUyBFdmVu
dExpc3RlbmVyIGZvciAib25lcnJvciIgZXZlbnQgaGFuZGxlciBpbiB3b3JrZXIgY29udGV4dC4g
SXQgaGFzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCiAvLyB1bmxpa2Ugb3RoZXIgZXZl
bnQgbGlzdGVuZXJzIGl0IGFjY2VwdHMgdGhyZWUgcGFyYW1ldGVycy4KLWlubGluZSBQYXNzUmVm
UHRyPEpTRXJyb3JIYW5kbGVyPiBjcmVhdGVKU0Vycm9ySGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQoraW5s
aW5lIFJlZlB0cjxKU0Vycm9ySGFuZGxlcj4gY3JlYXRlSlNFcnJvckhhbmRsZXIoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBl
cikKIHsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBKU0Vycm9ySGFuZGxlcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBlciwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAKaW5kZXggZDFhMmRhYTFhNWIxNDU1ZGQxN2RjNTQ2OGM1ZjQ4NDMzOTYzYzlhMC4u
MTI3MDI0Nzc0YzE5YTAzM2U4ZGVkMDg3MDI4YWRlOGFlMDZlM2RiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgc3RhdGljIHZvaWQgc2V0TWF4aW11bUFnZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlv
bnMsIGNvbnN0IGRvdWJsZSYgbWF4aW11bUFnZSkKIH0KIAogCi1zdGF0aWMgUGFzc1JlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCitzdGF0aWMgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRp
b25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBDcmVh
dGUgZGVmYXVsdCBvcHRpb25zLgogICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMg
PSBQb3NpdGlvbk9wdGlvbnM6OmNyZWF0ZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdQogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmlu
ZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgLy8gVXNlIGRlZmF1bHQgb3B0aW9ucy4KLSAgICAg
ICAgcmV0dXJuIG9wdGlvbnMucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gb3B0aW9uczsKICAg
ICB9CiAKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVs
ZCBhbiBvYmplY3QuCkBAIC04NywxMyArODcsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRp
b25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUK
ICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBvYmplY3QpOwogCiAgICAgaWYgKCFk
aWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJlbmFibGVIaWdoQWNjdXJhY3kiLCBvcHRpb25zLmdl
dCgpLCBzZXRFbmFibGVIaWdoQWNjdXJhY3kpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJ0aW1l
b3V0Iiwgb3B0aW9ucy5nZXQoKSwgc2V0VGltZW91dCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHko
Im1heGltdW1BZ2UiLCBvcHRpb25zLmdldCgpLCBzZXRNYXhpbXVtQWdlKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG9wdGlvbnMucmVs
ZWFzZSgpOworICAgIHJldHVybiBvcHRpb25zOwogfQogCiBKU1ZhbHVlIEpTR2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCBmNDEwZTI4YzFmMmIxNDZlOTYzMzhiNjEx
ODBhOTEzMTU3Nzg1N2Q0Li42ZDRjODFkMmRiNWU4NWY1YzdkZmMxYzEzZDI2Mzk0Y2Q2ZjQwZDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTY3
LDcgKzY3LDYgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IDYy
ZDFiMWNjNDAzYTMxMTJiYWJmY2U5YmJmYTc5ODI4YWViMjlhY2IuLjJiZDVhMjcwZDM3MWI5N2Uw
OGI5OWNkNjZiNTU0NDRlMWFhMzQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtMzUsMTQgKzM1LDE0IEBAIHZvaWQgSlNO
b2RlRmlsdGVyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKIH0KIAotUGFzc1JlZlB0
cjxOb2RlRmlsdGVyPiBKU05vZGVGaWx0ZXI6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQorUmVmUHRyPE5vZGVGaWx0ZXI+IEpTTm9kZUZpbHRlcjo6dG9XcmFwcGVk
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVy
aXRzKEpTTm9kZUZpbHRlcjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxK
U05vZGVGaWx0ZXIqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBSZWZQdHI8Tm9k
ZUZpbHRlcj4gcmVzdWx0ID0gTm9kZUZpbHRlcjo6Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5zZXRD
b25kaXRpb24oSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpjcmVhdGUodm0sIHJlc3VsdC5nZXQoKSwg
dmFsdWUpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGRlZDEzNWYwYTM2ZjZkNDUxZWJhYzE1
YWQwYTI5YzUzY2Y2ZTgzMmMuLjRiM2IwOTcyYmU3N2YzYzc2NTk1ZjE0MGUyNmE3NDhmZjhlYTQ1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKICAgICByZXR1
cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsK
IH0KIAotUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0
ZVdvcmxkKCkKK1JlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdv
cmxkKCkKIHsKICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6
OmNvbW1vblZNKCkpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIEJpbmRpbmdzOjpSb290T2JqZWN0
KiBTY3JpcHRDb250cm9sbGVyOjpiaW5kaW5nUm9vdE9iamVjdCgpCiAgICAgcmV0dXJuIG1fYmlu
ZGluZ1Jvb3RPYmplY3QuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8QmluZGluZ3M6OlJvb3RPYmpl
Y3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxl
KQorUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVS
b290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSkKIHsKICAgICBSb290T2JqZWN0TWFwOjppdGVy
YXRvciBpdCA9IG1fcm9vdE9iamVjdHMuZmluZChuYXRpdmVIYW5kbGUpOwogICAgIGlmIChpdCAh
PSBtX3Jvb3RPYmplY3RzLmVuZCgpKQpAQCAtMzg0LDcgKzM4NCw3IEBAIFBhc3NSZWZQdHI8Qmlu
ZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9p
ZCogbmF0aXZlCiAgICAgUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0ID0g
QmluZGluZ3M6OlJvb3RPYmplY3Q6OmNyZWF0ZShuYXRpdmVIYW5kbGUsIGdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKSk7CiAKICAgICBtX3Jvb3RPYmplY3RzLnNldChuYXRpdmVIYW5kbGUsIHJv
b3RPYmplY3QpOwotICAgIHJldHVybiByb290T2JqZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
cm9vdE9iamVjdDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRD
b250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4q
Pj4mIHJlc3VsdCkKQEAgLTQzMiw3ICs0MzIsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxl
cjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxlbWVudAog
I2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1QYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6
Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdl
dChXaWRnZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0
Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQp
CiB7CiAgICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCmluZGV4IGJhNjk5YWVjZTlmYzM3MWQ4ZGVjM2U5ZjRiMTE5MTUwNGE1M2VhOTUuLjA3YzUz
YjdjOGVkZmI0ZTI4ZjVjYTEzYWEyYzRlMDU1OTRlZjUxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcmlwdENvbnRyb2xsZXIoRnJhbWUmKTsKICAgICB+U2NyaXB0Q29u
dHJvbGxlcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3Jh
cHBlcldvcmxkPiBjcmVhdGVXb3JsZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVXb3JsZCgpOwogCiAgICAgSlNET01XaW5kb3dTaGVsbCog
Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBkZXN0cm95V2lu
ZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUGFzc1Jl
ZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lk
Z2V0KFdpZGdldCopOworICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0
ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCopOwogICAgIEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqIGJpbmRpbmdSb290T2JqZWN0KCk7CiAgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9i
amVjdCogY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gY3JlYXRlUm9vdE9iamVjdCh2
b2lkKiBuYXRpdmVIYW5kbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OkJpbmRp
bmdzOjpSb290T2JqZWN0PiBjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CiAK
ICAgICB2b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpF
eGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBlOWVhNjMwZTFiYTFmODI3
YzU2NGE0NDM0MWJiYjRlNTNmYmM5MTE1Li5mMjM0NDAwOTAxMjM0OGM4MjhlZWJmN2MxNTMxODU2
ZGUzMjhhMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTYwLDExICs2MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOjpC
aW5kaW5nczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEpTQzo6QmluZGlu
Z3M6Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldp
ZGdldChXaWRnZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRn
ZXQpCiB7CiAgICAgTlNWaWV3KiB3aWRnZXRWaWV3ID0gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgp
OwogICAgIGlmICghd2lkZ2V0VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QgPSBjcmVhdGVS
b290T2JqZWN0KHdpZGdldFZpZXcpOwogCkBAIC03NCwyNSArNzQsMjUgQEAgUGFzc1JlZlB0cjxK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5z
dGFuY2VGb3JXaWQKICAgICBpZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihvYmplY3RGb3JXZWJTY3JpcHQpXSkgewogICAgICAgICBpZCBvYmplY3RGb3JXZWJTY3Jp
cHQgPSBbd2lkZ2V0VmlldyBvYmplY3RGb3JXZWJTY3JpcHRdOwogICAgICAgICBpZiAoIW9iamVj
dEZvcldlYlNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6OmNy
ZWF0ZShvYmplY3RGb3JXZWJTY3JpcHQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKICAgICB9CiAK
ICAgICBpZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihjcmVhdGVQ
bHVnaW5TY3JpcHRhYmxlT2JqZWN0KV0pIHsKICNpZiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCiAg
ICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlw
dGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCBy
b290T2JqZWN0LnJlbGVhc2UoKSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVnaW5TY3JpcHRhYmxl
T2JqZWN0IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxsZXIgaXMgZXhwZWN0
ZWQgdG8gcmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsK
LSAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFdlYlNjcmlwdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0T2Jq
ZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGRlMGM1MmIxMjgxOTliYjU1OWEzMjE5NzJlNTQ4MjdhZjAzYmY5
ZmMuLjYyZWExYzFiZGNlZDYzMDY1ODk4YThiNDFiMGI2ZDIxYjg1N2FiODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMjY5NSw3ICsyNjk1LDcgQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29u
dGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlW
YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMob3JpZ2luQ29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAgLTI3
MDUsMTAgKzI3MDUsMTAgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmkKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgQVNTRVJU
KHNlcmlhbGl6ZWRWYWx1ZSk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAyMTYxNWExMmNlYzJhN2Q3ZGE1NTNkZTk0MDk1
MDA1Mzg5MGY3NzQ3Li44MWQ2MDBmNTZmNTI2Mjg3MzE5ZDNjMmI2Yjg4YjY4ZTNlZGE5MTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODQsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CiAKICAgICAvLyBBUEkgaW1wbGVtZW50YXRp
b24gaGVscGVycy4gVGhlc2UgZG9uJ3QgZXhwb3NlIHNwZWNpYWwgYmVoYXZpb3IgZm9yIEFycmF5
QnVmZmVycyBvciBNZXNzYWdlUG9ydHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVS
ZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCmluZGV4IGNjNzYyYTgzZjZhOTk0ODQ5MDQ3ODQ0ODhkZmRhMzFjZDIxNzU3YWYuLjVkYzRm
OTRiY2M4YTI3OGU5YjM4NmQ1NTZmYWM3ZTVkZmZhZThlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0yMzEsNyArMjMx
LDcgQEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIFBvc2l0aW9uIHBhcmFn
cmFwaEVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKTsgICAgCiAgICAgCiAgICAgaWYgKHBhcmFncmFwaFN0YXJ0LmlzTm90
TnVsbCgpICYmIHBhcmFncmFwaEVuZC5pc05vdE51bGwoKSkgewotICAgICAgICBQYXNzUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm5vZGUtPm93bmVyRG9jdW1lbnQoKSwgcGFy
YWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CisgICAgICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKCpub2RlLT5vd25lckRvY3VtZW50KCksIHBhcmFncmFwaFN0YXJ0LCBwYXJh
Z3JhcGhFbmQpOwogICAgICAgICByZXN1bHQgPSBraXQocmFuZ2UuZ2V0KCkpOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24uaAppbmRleCBjYzA3N2IzMTAyNDNlOGMwNGE2ODQ3ZjcxMzE4MGEwZDViMGVl
NDk2Li4zYmUxNTYzNmE1YThkZmEzYjU3MWNjYTg0MWJkMmQzMDVhZWRlNjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgi
CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogQHByb3RvY29sIERPTU5vZGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGU2NGNiMWM0ZTkwNzkwNjQ4
YzRlOTQ4MmY4NzUyZGU4YTE0ZTg4MDcuLjM4NWRiYzQ0NmQ1Njc3YjgwOWUxZDI3OWY4ZmI1ZTY2
NWJhMDYzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC05MDAsOSArOTAwLDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgIyBKU1ZhbHVlIHRvIGltcGxlbWVudGF0aW9uIHR5cGUKICAgICBpZiAoISRoYXNQYXJlbnQg
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9i
amVjdCJ9KSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUZpbHRlciIpIHsK
LSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm9kZUZpbHRlcj4gdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBSZWZQdHI8Tm9kZUZpbHRl
cj4gdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0gZWxz
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01TdHJpbmdMaXN0IikgewotICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0
b1dyYXBwZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
dG9XcmFwcGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGlt
cGxUeXBlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258540</attachid>
            <date>2015-08-07 16:18:11 -0700</date>
            <delta_ts>2015-08-07 22:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147781-20150808081759.patch</filename>
            <type>text/plain</type>
            <size>40347</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDIzNTc0ODhkZTYwM2ZiMDdlODRiMzAyZTNmYjNhZWZjMjBjZGJiLi4xY2Q0MTNhN2VkNThiODNm
NmM3MTVjMTE4MjMyMzJjODY5MjIzYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wOC0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBiaW5kaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFJlZlB0
ciB3aGVuIGZ1bmN0aW9uIGNhbiByZXR1cm4gbnVsbCBvciBhbiBpbnN0YW5jZS4gSWYgbm90LCBS
ZWYgaXMgdXNlZC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKEpTQzo6dG9OYXRpdmVUeXBlZFZpZXcpOgorCiAyMDE1LTA4LTA2ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBn
ZXRfYnlfaWQgbGlrZSBJQyBpbnRvIGdldF9ieV92YWwgd2hlbiB0aGUgZ2l2ZW4gbmFtZSBpcyBT
dHJpbmcgb3IgU3ltYm9sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk1NDU2MzFmNzFiZjQxN2Y1OTJkZjgxMzFj
YTE1OWQwNzhiYzIyYy4uNzNjNDkxYzc0YzY0MDQ4NWRlMGU0ZDM4YzdmNWVkMThhNWFkOTZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE1LTA4LTA3ICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNlcyBvZiBQYXNzUmVm
UHRyIGluIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDc3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgUmVmUHRyIHdoZW4gZnVuY3Rpb24gY2FuIHJldHVybiBudWxsIG9yIGFuIGlu
c3RhbmNlLiBJZiBub3QsIFJlZiBpcyB1c2VkLgorCisgICAgICAgICogYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmpl
Y3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NTm9kZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhbGxiYWNr
RnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZy
b21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3Jp
cHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRWYWx1ZVRvSURC
S2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0lu
dDhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDE2QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JbnQzMkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVWludDhBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1VpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnRvVWludDE2QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9VaW50MzJBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0Zsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b0Zsb2F0
NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlYWRBY2NlbGVyYXRpb25Bcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkUm90YXRpb25SYXRlQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU0Vycm9ySGFuZGxlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06Cisg
ICAgICAgICgtW0RPTU5vZGUgcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGhdKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisKIDIwMTUtMDgtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFj
a2FnZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5k
ZXggMzk5NmUxY2NlYWYwNTBkZGMxMmU0Mjk4MDU5NjhhMGEwNGVhNWQ2YS4uYTNhNzU2Y2Y1NTMy
MWY2ODhiNzVkNzIzYTAxNzgzZjUwZTdlYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNjAsMTEg
KzI2MCwxMSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLWlu
bGluZSBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB0b05hdGl2ZVR5cGVk
VmlldyhKU1ZhbHVlIHZhbHVlKQoraW5saW5lIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gdG9OYXRpdmVUeXBlZFZpZXcoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB0eXBlbmFtZSBB
ZGFwdG9yOjpKU1ZpZXdUeXBlKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDx0eXBlbmFtZSBBZGFw
dG9yOjpKU1ZpZXdUeXBlKj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB3cmFwcGVyLT50eXBl
ZEltcGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlvbi5oCmluZGV4IDY5Mjc2NGQyNTBmZTcz
MjM3YmMzZDIwNTExNTM5MGFlYzdiMGE5MTQuLjYxMjgwMjVmZmM4N2NhYTNkMTIxNjZiM2E5Zjg4
OGI1ZWFlMDk5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29uZGl0aW9uLmgKQEAgLTIyLDcgKzIyLDYgQEAK
ICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAKICNpbmNsdWRlICJXZWJLaXRET01O
b2RlRmlsdGVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RYUGF0aE5TUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZl
ci5oCmluZGV4IDM2OWFkMDUyMTAzOTMyY2Q0ODM4YWI3MDlhOTI3YTRjNjY1ZWY0MDEuLmJlMTM0
YzE5ODViNjBlMzRhODBhNzAxNjQ0MGZiOWJlMGQwNGMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdFhQYXRoTlNSZXNvbHZlci5oCkBA
IC0yMSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuaCIK
ICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2Rl
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9k
ZUZpbHRlci5jcHAKaW5kZXggZmM2OGM2ZDQyMjYxY2ZjNTliMjllMTc4NjI2OTA4YjU3NGJmMjNh
MS4uMjU4ZmM0YWQ4ZjlkYmQzZDA2NjRhNDNjM2QwZjQ5N2M0MGY4YjVkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXIu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpO
b2RlRmlsdGVyKiBjb3JlTm9kZUZpbHRlcikKICAgICByZXR1cm4gbm9kZUZpbHRlck1hcCgpLmdl
dChjb3JlTm9kZUZpbHRlcik7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4g
Y29yZShXZWJLaXRET01Ob2RlRmlsdGVyKiBub2RlRmlsdGVyKQorUmVmUHRyPFdlYkNvcmU6Ok5v
ZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZpbHRlciogbm9kZUZpbHRlcikKIHsKICAgICBp
ZiAoIW5vZGVGaWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01Ob2RlRmlsdGVyUHJp
dmF0ZS5oCmluZGV4IGMxYTI2OGM1ZDcxMDYzMzU0N2ZlYjM0NjRlMWVkNmRiYmI4ZjYyOWQuLjZi
YjEzOWI5NTc1OGQyOWRmNzU2ODBjMzA2MzU1NzIwOWM2ZGY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NTm9kZUZpbHRlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU5vZGVGaWx0ZXJQ
cml2YXRlLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNkZWZpbmUgV2ViS2l0RE9NTm9kZUZpbHRlclBy
aXZhdGVfaAogCiAjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU5vZGVGaWx0ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBO
b2RlRmlsdGVyOwpAQCAtMjksNyArMjgsNyBAQCBjbGFzcyBOb2RlRmlsdGVyOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIFdlYktpdERPTU5vZGVGaWx0ZXIqIGtpdChXZWJDb3JlOjpOb2RlRmlsdGVy
Kik7Ci1QYXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZp
bHRlciopOworUmVmUHRyPFdlYkNvcmU6Ok5vZGVGaWx0ZXI+IGNvcmUoV2ViS2l0RE9NTm9kZUZp
bHRlciopOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvKiBXZWJLaXRET01Ob2Rl
RmlsdGVyUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggYTdlN2I1OGNk
NWIyZDM1NGNjNWYxZWIzZTI5ZjQxMGI1ODU4YTdlNy4uYWMyODIwODdmYzIwZmU4MjE1OWVmNjEz
OTA4ZTI3ODViOTI5MGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdERPTVhQYXRoTlNSZXNvbHZlcklmYWNlSW5pdChXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXJJZmFjZSogaWZhCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRET01YUGF0aE5T
UmVzb2x2ZXIqIHhQYXRoTlNSZXNvbHZlcikKK1JlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2
ZXI+IGNvcmUoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiB4UGF0aE5TUmVzb2x2ZXIpCiB7CiAg
ICAgaWYgKCF4UGF0aE5TUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE4
LDcgKzExOCw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdl
YktpdERPTVhQYXRoTlNSZXNvbHZlciogeFBhdGhOU1Jlc29sCiAgICAgICAgIGNvcmVSZXNvbHZl
ciA9IGNvcmUoV0VCS0lUX0RPTV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIoeFBhdGhOU1Jlc29s
dmVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb3JlUmVzb2x2ZXIgPSBXZWJDb3JlOjpHT2JqZWN0
WFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUoeFBhdGhOU1Jlc29sdmVyKTsKLSAgICByZXR1cm4gY29y
ZVJlc29sdmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY29yZVJlc29sdmVyOwogfQogCiBXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXIqIGtpdChXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIGNvcmVY
UGF0aE5TUmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTVhQYXRoTlNSZXNvbHZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCmluZGV4IGEz
MDcyZjZiNzg4Mzg0MWMwOTVmM2EzZWJiNGVjZTc1NWY5MjY2M2UuLmZmYmE2YzRhMDdkMDIwMWI3
NDM5NmFiMGVhMDYzYjY2YWI5MTI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyUHJpdmF0
ZS5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNp
bmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIAogI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfTkFUSVZFX1hQQVRI
X05TX1JFU09MVkVSICAgICAgICAgICAgKHdlYmtpdF9kb21fbmF0aXZlX3hwYXRoX25zX3Jlc29s
dmVyX2dldF90eXBlKCkpCiAjZGVmaW5lIFdFQktJVF9ET01fTkFUSVZFX1hQQVRIX05TX1JFU09M
VkVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9ET01fVFlQRV9OQVRJVkVfWFBBVEhfTlNfUkVTT0xWRVIsIFdlYktpdERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlcikpCkBAIC0zNiw3ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgV2ViS2l0RE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzIFdlYktp
dERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlckNsYXNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjb3JlKFdlYktpdERPTVhQYXRoTlNS
ZXNvbHZlciopOworUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY29yZShXZWJLaXRE
T01YUGF0aE5TUmVzb2x2ZXIqKTsKIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcioga2l0KFdlYkNv
cmU6OlhQYXRoTlNSZXNvbHZlciopOwogV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBjb3JlKFdl
YktpdERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciopOwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMjU2
MmNlOTdhMDk1MmY0YWZkNjViNTUxNWIwZmUzNDFlMjk5ZjQzOC4uY2I1MTEwNzA2NTgwNmRlNmIw
YWY4NmYxNjQ1MWFhZjY0MzM3NzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhbGxiYWNrRnVuY3Rpb24uaApAQCAtNDYsMTEgKzQ2LDExIEBAIGJvb2wgY2hlY2tGdW5jdGlv
bk9ubHlDYWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgQ2FsbGJhY2tBbGxv
d2VkVmFsCiAKIC8vIENyZWF0ZXMgY2FsbGJhY2sgb2JqZWN0cyBmb3IgY2FsbGJhY2tzIG1hcmtl
ZCBhcyBGdW5jdGlvbk9ubHkgaW4gV2ViSURMLgogdGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2FsbGJh
Y2tUeXBlPgotUGFzc1JlZlB0cjxKU0NhbGxiYWNrVHlwZT4gY3JlYXRlRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRl
ZFZhbHVlcyA9IDApCitSZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0
ZWRWYWx1ZXMgPSAwKQogewogICAgIGlmIChjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKGV4ZWMs
IHZhbHVlLCBhY2NlcHRlZFZhbHVlcykpCiAgICAgICAgIHJldHVybiBKU0NhbGxiYWNrVHlwZTo6
Y3JlYXRlKGFzT2JqZWN0KHZhbHVlKSwgZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IGIxZjFiNzM2ZWEwZmRlMmMxZmViOTM5
ZjE1N2I5NjVmMjcyOGZiZDIuLjJiYWM2MGQ5OTVlNzc5NGNmNWM2YTQ2YzJiNzc2YTA5YzE1MTA4
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTUzLDkgKzUz
LDkgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBS
ZXN1bHQmKSBjb25zdDsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRF
dmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkg
Y29uc3Q7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CiAKICAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9kaWN0aW9uYXJ5LmlzVmFsaWQo
KTsgfQpAQCAtODYsMjQgKzg2LDI0IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50
TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0CitSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKIHsKICAgICBpZiAoIW1fZGljdGlvbmFy
eS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CiAgICAgaWYgKCFt
X2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChldmVu
dExpc3RlbmVyLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmICghZXZlbnRMaXN0ZW5lci5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2Jq
ZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFQqIHRhcmdldCkgY29uc3QKK1JlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRh
KCksIHRhcmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDZmODA2NjE0ZWE0YjBjYjQxNmE1M2YyNzI5MmQ5Y2Vk
OTVjZjY5MjUuLmJlYzc4ZmVmZGVkODY0MGVkYzE5NmRlOGZjY2Y4NGI5NDQ2MTRkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIEpTVmFsdWUgaWRiS2V5VG9KU1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhpbXVtRGVwdGggPSAyMDAwOwogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IFZlY3RvcjxKU0FycmF5Kj4mIHN0YWNrKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0Fy
cmF5Kj4mIHN0YWNrKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmICFzdGQ6OmlzbmFu
KHZhbHVlLnRvTnVtYmVyKGV4ZWMpKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVt
YmVyKHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTEyOSw5ICsxMjksOSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsCiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgp
OwogCiAgICAgICAgICAgICBpZiAoc3RhY2suY29udGFpbnMoYXJyYXkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgaWYgKHN0YWNrLnNpemUoKSA+PSBtYXhpbXVtRGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzdGFj
ay5hcHBlbmQoYXJyYXkpOwogCiAgICAgICAgICAgICBJREJLZXk6OktleUFycmF5IHN1YmtleXM7
CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsCiAgICAgICAgICAg
ICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShzdWJrZXlzKTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQorc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVmVjdG9yPEpTQXJyYXkqPiBzdGFj
azsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywg
dmFsdWUsIHN0YWNrKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhW
YWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBW
ZQogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eT4gaW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCitzdGF0aWMgUmVmUHRyPElEQktleT4gaW50ZXJuYWxDcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgVmVj
dG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVy
cm9yOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaW50ZXJu
YWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0CiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdmFsdWUuanNWYWx1ZSgpOwogICAgIGpzVmFsdWUgPSBnZXROdGhWYWx1
ZU9uS2V5UGF0aChleGVjLCBqc1ZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50
cy5zaXplKCkpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJv
bVZhbHVlKGV4ZWMsIGpzVmFsdWUpOwogfQogCkBAIC0yNTgsNyArMjU4LDcgQEAgYm9vbCBpbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBh
c3NSZWZQdHI8SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCitSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VSVCgha2V5UGF0
aC5pc051bGwoKSk7CkBAIC0yNjksNyArMjY5LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdAog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3Jp
cHRWYWx1ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFycmF5W2ldKTsKICAgICAgICAgICAgIGlm
ICgha2V5KQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KHJlc3VsdCk7CkBAIC0zNDQsNyArMzQ0
LDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1IKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwog
fQogCi1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3Rh
dGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZh
bHVlKQorUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUq
IHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVl
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApp
bmRleCBkMDA4MzIxZWQwODcwMzdmMzllOWY0MjMwZjU2M2NkYTlmNjQ0ZmFiLi5hZWVhYzYwZjY3
NDVkN2M0ZDAyZjVkZDIwNWZkMDI1MTBhYjgxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00NSwxMyArNDUsMTMgQEAgc3Ry
dWN0IElEQktleURhdGE7CiBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCiBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIGJvb2wga2V5SXNEZWZpbmVkKTsKIFdFQkNPUkVfRVhQT1JUIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sIGtleUlzRGVmaW5lZCk7CiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQ
dHI8SURCS2V5Pik7Ci1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01S
ZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOworUmVmUHRyPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+
JiBpbmRleEtleXMpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCmluZGV4IDc1NzUxOTQyOGE0OWU1NTNhZmI1MGQ2MzYyN2IxODFjYzk3YmE3NmYuLjNlMzM4
NzcwNTc3ZmU1YzM4MDIxNjVjY2VjNDkyZGYzODhlYTg4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC00NjUsMTUgKzQ2NSwxNSBAQCBpbmxpbmUgUGFz
c1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CiB9CiAKLWlubGluZSBQYXNz
UmVmUHRyPEpTQzo6SW50OEFycmF5PiB0b0ludDhBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQ4QWRhcHRvcj4odmFsdWUpOyB9
Ci1pbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkludDE2QXJyYXk+IHRvSW50MTZBcnJheShKU0M6OkpT
VmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpJbnQxNkFk
YXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0lu
dDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRW
aWV3PEpTQzo6SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQYXNzUmVmUHRyPEpTQzo6
VWludDhBcnJheT4gdG9VaW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlND
Ojp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVpbnQ4QWRhcHRvcj4odmFsdWUpOyB9Ci1pbmxpbmUg
UGFzc1JlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiB0b1VpbnQ4Q2xhbXBlZEFycmF5KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OlVp
bnQ4Q2xhbXBlZEFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpVaW50
MTZBcnJheT4gdG9VaW50MTZBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6
dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KLWlubGluZSBQ
YXNzUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZh
bHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6VWludDMyQWRhcHRvcj4o
dmFsdWUpOyB9Ci1pbmxpbmUgUGFzc1JlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9hdDMy
QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3
PEpTQzo6RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQotaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpG
bG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4g
SlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KK2lu
bGluZSBSZWZQdHI8SlNDOjpJbnQ4QXJyYXk+IHRvSW50OEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkludDhBZGFwdG9yPih2YWx1
ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpJbnQxNkFycmF5PiB0b0ludDE2QXJyYXkoSlNDOjpK
U1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6SW50MTZB
ZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiB0b0ludDMy
QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3
PEpTQzo6SW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50OEFy
cmF5PiB0b1VpbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0
aXZlVHlwZWRWaWV3PEpTQzo6VWludDhBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4gdG9VaW50OENsYW1wZWRBcnJheShKU0M6OkpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50OENsYW1wZWRB
ZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50MTZBcnJheT4gdG9VaW50
MTZBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZp
ZXc8SlNDOjpVaW50MTZBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpVaW50
MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6
dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpVaW50MzJBZGFwdG9yPih2YWx1ZSk7IH0KK2lubGluZSBS
ZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZsb2F0MzJBZGFwdG9yPih2
YWx1ZSk7IH0KK2lubGluZSBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6
OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IE5hdGl2ZVZhbHVlVHJhaXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcAppbmRleCBkZDgzNThkNDgzNmVlMWQxMjg4ODY1
MjhmMjEzZWZhM2NkMWY4MTk4Li5mZDQwMWIyOTA1ZjY5MWY2ZGZmZmRiNWQ4NWRkNDI1MzRhZGYy
ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSlNET01T
dHJpbmdMaXN0Ojp0b1dyYXBwZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNET01TdHJp
bmdMaXN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gJmpzQ2FzdDxKU0RPTVN0cmluZ0xpc3Qq
Pihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTQXJy
YXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0
cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHN0cmluZ0xpc3QtPmFwcGVu
ZChhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
IAotICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RyaW5nTGlz
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBlY2Ji
MzNlZWY4NzhjNWU1ZjFlMDNjOWY4Yjc2NjAzZTJjYjIyMDUwLi5iODg2NTAxZjdlMmUwZDlkNWE2
MTY4MjU3NDY3ZTI4N2JhZTI2MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNDAsNzggKzQwLDc4
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiByZWFkQWNjZWxlcmF0
aW9uQXJndW1lbnQoSlNWYWx1ZSB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0
cjxEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IHJlYWRBY2NlbGVyYXRpb25Bcmd1bWVu
dChKU1ZhbHVlIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxk
IGFuIG9iamVjdC4KICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7
CiAKICAgICBKU1ZhbHVlIHhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgIngiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92
aWRlWCA9ICF4VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBkb3VibGUgeCA9IHhWYWx1
ZS50b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgeVZhbHVl
ID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAieSIpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVZID0gIXlWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSB5ID0geVZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgSlNWYWx1ZSB6VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ6IikpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGJvb2wgY2FuUHJvdmlkZVogPSAhelZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91
YmxlIHogPSB6VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIWNhblByb3ZpZGVYICYmICFjYW5Qcm92aWRlWSAmJiAhY2FuUHJvdmlkZVopCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBEZXZpY2VN
b3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShjYW5Qcm92aWRlWCwgeCwgY2FuUHJvdmlk
ZVksIHksIGNhblByb3ZpZGVaLCB6KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90
aW9uRGF0YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWx1ZSB2
YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpS
b3RhdGlvblJhdGU+IHJlYWRSb3RhdGlvblJhdGVBcmd1bWVudChKU1ZhbHVlIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEdpdmVuIHRo
ZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICBKU09i
amVjdCogb2JqZWN0ID0gdmFsdWUudG9PYmplY3QoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGFscGhh
VmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJh
bHBoYSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9ICFh
bHBoYVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIGFscGhhID0gYWxwaGFW
YWx1ZS50b051bWJlcihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTVmFsdWUgYmV0
YVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
YmV0YSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIGNhblByb3ZpZGVCZXRhID0gIWJl
dGFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBiZXRhID0gYmV0YVZhbHVl
LnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNWYWx1ZSBnYW1tYVZh
bHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiZ2Ft
bWEiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSAhZ2Ft
bWFWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBnYW1tYSA9IGdhbW1hVmFs
dWUudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWNhblByb3Zp
ZGVBbHBoYSAmJiAhY2FuUHJvdmlkZUJldGEgJiYgIWNhblByb3ZpZGVHYW1tYSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNh
blByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oCmluZGV4IGRmZTEzYzJmYWI1NTA2
MzIyNGI0NWZlZGU2MTJmMGE5YWFlNjg1ZTIuLjU1Nzc3OGQ0NmNjYzA3NDg5YTJlMzgwNGVkYjY0
ZjcyOTg5MGY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJy
b3JIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHByaXZhdGU6CiAKIC8vIENyZWF0ZXMgYSBKUyBFdmVu
dExpc3RlbmVyIGZvciAib25lcnJvciIgZXZlbnQgaGFuZGxlciBpbiB3b3JrZXIgY29udGV4dC4g
SXQgaGFzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCiAvLyB1bmxpa2Ugb3RoZXIgZXZl
bnQgbGlzdGVuZXJzIGl0IGFjY2VwdHMgdGhyZWUgcGFyYW1ldGVycy4KLWlubGluZSBQYXNzUmVm
UHRyPEpTRXJyb3JIYW5kbGVyPiBjcmVhdGVKU0Vycm9ySGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQoraW5s
aW5lIFJlZlB0cjxKU0Vycm9ySGFuZGxlcj4gY3JlYXRlSlNFcnJvckhhbmRsZXIoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBl
cikKIHsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBKU0Vycm9ySGFuZGxlcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBlciwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAKaW5kZXggZDFhMmRhYTFhNWIxNDU1ZGQxN2RjNTQ2OGM1ZjQ4NDMzOTYzYzlhMC4u
MTI3MDI0Nzc0YzE5YTAzM2U4ZGVkMDg3MDI4YWRlOGFlMDZlM2RiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgc3RhdGljIHZvaWQgc2V0TWF4aW11bUFnZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlv
bnMsIGNvbnN0IGRvdWJsZSYgbWF4aW11bUFnZSkKIH0KIAogCi1zdGF0aWMgUGFzc1JlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCitzdGF0aWMgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRp
b25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBDcmVh
dGUgZGVmYXVsdCBvcHRpb25zLgogICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMg
PSBQb3NpdGlvbk9wdGlvbnM6OmNyZWF0ZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdQogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmlu
ZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgLy8gVXNlIGRlZmF1bHQgb3B0aW9ucy4KLSAgICAg
ICAgcmV0dXJuIG9wdGlvbnMucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gb3B0aW9uczsKICAg
ICB9CiAKICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVs
ZCBhbiBvYmplY3QuCkBAIC04NywxMyArODcsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRp
b25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUK
ICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBvYmplY3QpOwogCiAgICAgaWYgKCFk
aWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJlbmFibGVIaWdoQWNjdXJhY3kiLCBvcHRpb25zLmdl
dCgpLCBzZXRFbmFibGVIaWdoQWNjdXJhY3kpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KCJ0aW1l
b3V0Iiwgb3B0aW9ucy5nZXQoKSwgc2V0VGltZW91dCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWRpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHko
Im1heGltdW1BZ2UiLCBvcHRpb25zLmdldCgpLCBzZXRNYXhpbXVtQWdlKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG9wdGlvbnMucmVs
ZWFzZSgpOworICAgIHJldHVybiBvcHRpb25zOwogfQogCiBKU1ZhbHVlIEpTR2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCBmNDEwZTI4YzFmMmIxNDZlOTYzMzhiNjEx
ODBhOTEzMTU3Nzg1N2Q0Li42ZDRjODFkMmRiNWU4NWY1YzdkZmMxYzEzZDI2Mzk0Y2Q2ZjQwZDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTY3
LDcgKzY3LDYgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IDYy
ZDFiMWNjNDAzYTMxMTJiYWJmY2U5YmJmYTc5ODI4YWViMjlhY2IuLjJiZDVhMjcwZDM3MWI5N2Uw
OGI5OWNkNjZiNTU0NDRlMWFhMzQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtMzUsMTQgKzM1LDE0IEBAIHZvaWQgSlNO
b2RlRmlsdGVyOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCgmaW1wbCgpKTsKIH0KIAotUGFzc1JlZlB0
cjxOb2RlRmlsdGVyPiBKU05vZGVGaWx0ZXI6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQorUmVmUHRyPE5vZGVGaWx0ZXI+IEpTTm9kZUZpbHRlcjo6dG9XcmFwcGVk
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVy
aXRzKEpTTm9kZUZpbHRlcjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxK
U05vZGVGaWx0ZXIqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCk7CiAKICAgICBSZWZQdHI8Tm9k
ZUZpbHRlcj4gcmVzdWx0ID0gTm9kZUZpbHRlcjo6Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5zZXRD
b25kaXRpb24oSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpjcmVhdGUodm0sIHJlc3VsdC5nZXQoKSwg
dmFsdWUpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGRlZDEzNWYwYTM2ZjZkNDUxZWJhYzE1
YWQwYTI5YzUzY2Y2ZTgzMmMuLjRiM2IwOTcyYmU3N2YzYzc2NTk1ZjE0MGUyNmE3NDhmZjhlYTQ1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmMKICAgICByZXR1
cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsK
IH0KIAotUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0
ZVdvcmxkKCkKK1JlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdv
cmxkKCkKIHsKICAgICByZXR1cm4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6
OmNvbW1vblZNKCkpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIEJpbmRpbmdzOjpSb290T2JqZWN0
KiBTY3JpcHRDb250cm9sbGVyOjpiaW5kaW5nUm9vdE9iamVjdCgpCiAgICAgcmV0dXJuIG1fYmlu
ZGluZ1Jvb3RPYmplY3QuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8QmluZGluZ3M6OlJvb3RPYmpl
Y3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxl
KQorUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVS
b290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSkKIHsKICAgICBSb290T2JqZWN0TWFwOjppdGVy
YXRvciBpdCA9IG1fcm9vdE9iamVjdHMuZmluZChuYXRpdmVIYW5kbGUpOwogICAgIGlmIChpdCAh
PSBtX3Jvb3RPYmplY3RzLmVuZCgpKQpAQCAtMzg0LDcgKzM4NCw3IEBAIFBhc3NSZWZQdHI8Qmlu
ZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9p
ZCogbmF0aXZlCiAgICAgUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0ID0g
QmluZGluZ3M6OlJvb3RPYmplY3Q6OmNyZWF0ZShuYXRpdmVIYW5kbGUsIGdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKSk7CiAKICAgICBtX3Jvb3RPYmplY3RzLnNldChuYXRpdmVIYW5kbGUsIHJv
b3RPYmplY3QpOwotICAgIHJldHVybiByb290T2JqZWN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
cm9vdE9iamVjdDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRD
b250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4q
Pj4mIHJlc3VsdCkKQEAgLTQzMiw3ICs0MzIsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxl
cjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxlbWVudAog
I2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1QYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6
Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdl
dChXaWRnZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0
Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQp
CiB7CiAgICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCmluZGV4IGJhNjk5YWVjZTlmYzM3MWQ4ZGVjM2U5ZjRiMTE5MTUwNGE1M2VhOTUuLjA3YzUz
YjdjOGVkZmI0ZTI4ZjVjYTEzYWEyYzRlMDU1OTRlZjUxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcmlwdENvbnRyb2xsZXIoRnJhbWUmKTsKICAgICB+U2NyaXB0Q29u
dHJvbGxlcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3Jh
cHBlcldvcmxkPiBjcmVhdGVXb3JsZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVXb3JsZCgpOwogCiAgICAgSlNET01XaW5kb3dTaGVsbCog
Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBkZXN0cm95V2lu
ZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJik7CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogCi0gICAgUGFzc1Jl
ZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lk
Z2V0KFdpZGdldCopOworICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gIGNyZWF0
ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCopOwogICAgIEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqIGJpbmRpbmdSb290T2JqZWN0KCk7CiAgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9i
amVjdCogY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gY3JlYXRlUm9vdE9iamVjdCh2
b2lkKiBuYXRpdmVIYW5kbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OkJpbmRp
bmdzOjpSb290T2JqZWN0PiBjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CiAK
ICAgICB2b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpF
eGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBlOWVhNjMwZTFiYTFmODI3
YzU2NGE0NDM0MWJiYjRlNTNmYmM5MTE1Li5mMjM0NDAwOTAxMjM0OGM4MjhlZWJmN2MxNTMxODU2
ZGUzMjhhMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTYwLDExICs2MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOjpC
aW5kaW5nczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEpTQzo6QmluZGlu
Z3M6Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldp
ZGdldChXaWRnZXQqIHdpZGdldCkKK1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRn
ZXQpCiB7CiAgICAgTlNWaWV3KiB3aWRnZXRWaWV3ID0gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgp
OwogICAgIGlmICghd2lkZ2V0VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QgPSBjcmVhdGVS
b290T2JqZWN0KHdpZGdldFZpZXcpOwogCkBAIC03NCwyNSArNzQsMjUgQEAgUGFzc1JlZlB0cjxK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5z
dGFuY2VGb3JXaWQKICAgICBpZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihvYmplY3RGb3JXZWJTY3JpcHQpXSkgewogICAgICAgICBpZCBvYmplY3RGb3JXZWJTY3Jp
cHQgPSBbd2lkZ2V0VmlldyBvYmplY3RGb3JXZWJTY3JpcHRdOwogICAgICAgICBpZiAoIW9iamVj
dEZvcldlYlNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpPYmpjSW5zdGFuY2U6OmNy
ZWF0ZShvYmplY3RGb3JXZWJTY3JpcHQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKICAgICB9CiAK
ICAgICBpZiAoW3dpZGdldFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihjcmVhdGVQ
bHVnaW5TY3JpcHRhYmxlT2JqZWN0KV0pIHsKICNpZiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCiAg
ICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlw
dGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCBy
b290T2JqZWN0LnJlbGVhc2UoKSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVnaW5TY3JpcHRhYmxl
T2JqZWN0IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxsZXIgaXMgZXhwZWN0
ZWQgdG8gcmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsK
LSAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFdlYlNjcmlwdE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0T2Jq
ZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGRlMGM1MmIxMjgxOTliYjU1OWEzMjE5NzJlNTQ4MjdhZjAzYmY5
ZmMuLjYyZWExYzFiZGNlZDYzMDY1ODk4YThiNDFiMGI2ZDIxYjg1N2FiODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMjY5NSw3ICsyNjk1LDcgQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29u
dGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlW
YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMob3JpZ2luQ29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKQEAgLTI3
MDUsMTAgKzI3MDUsMTAgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmkKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgQVNTRVJU
KHNlcmlhbGl6ZWRWYWx1ZSk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAyMTYxNWExMmNlYzJhN2Q3ZGE1NTNkZTk0MDk1
MDA1Mzg5MGY3NzQ3Li44MWQ2MDBmNTZmNTI2Mjg3MzE5ZDNjMmI2Yjg4YjY4ZTNlZGE5MTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODQsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CiAKICAgICAvLyBBUEkgaW1wbGVtZW50YXRp
b24gaGVscGVycy4gVGhlc2UgZG9uJ3QgZXhwb3NlIHNwZWNpYWwgYmVoYXZpb3IgZm9yIEFycmF5
QnVmZmVycyBvciBNZXNzYWdlUG9ydHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVS
ZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCmluZGV4IGNjNzYyYTgzZjZhOTk0ODQ5MDQ3ODQ0ODhkZmRhMzFjZDIxNzU3YWYuLjg2ZDcw
ZmEwZDNkM2VlNzkzMWVhYTJkN2Q1MzUwYWM1YmZiMjEwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0yMzEsOCArMjMx
LDggQEAgdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogICAgIFBvc2l0aW9uIHBhcmFn
cmFwaEVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKTsgICAgCiAgICAgCiAgICAgaWYgKHBhcmFncmFwaFN0YXJ0LmlzTm90
TnVsbCgpICYmIHBhcmFncmFwaEVuZC5pc05vdE51bGwoKSkgewotICAgICAgICBQYXNzUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm5vZGUtPm93bmVyRG9jdW1lbnQoKSwgcGFy
YWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7Ci0gICAgICAgIHJlc3VsdCA9IGtpdChyYW5nZS5n
ZXQoKSk7CisgICAgICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpub2RlLT5v
d25lckRvY3VtZW50KCksIHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpOworICAgICAgICBy
ZXN1bHQgPSBraXQocmFuZ2UucHRyKCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCmluZGV4IGNjMDc3YjMxMDI0M2U4YzA0YTY4NDdmNzEzMTgwYTBkNWIwZWU0
OTYuLjNiZTE1NjM2YTVhOGRmYTNiNTcxY2NhODQxYmQyZDMwNWFlZGU2MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9u
LmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIK
IAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBAcHJvdG9jb2wgRE9NTm9kZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZTY0Y2IxYzRlOTA3OTA2NDhj
NGU5NDgyZjg3NTJkZThhMTRlODgwNy4uMzg1ZGJjNDQ2ZDU2NzdiODA5ZTFkMjc5ZjhmYjVlNjY1
YmEwNjNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTkwMCw5ICs5MDAsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAjIEpTVmFsdWUgdG8gaW1wbGVtZW50YXRpb24gdHlwZQogICAgIGlmICghJGhhc1BhcmVudCB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0In0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOb2RlRmlsdGVyIikgewot
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjxO
b2RlRmlsdGVyPiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIFJlZlB0cjxOb2RlRmlsdGVy
PiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3QiKSB7Ci0gICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRv
V3JhcHBlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIFJlZlB0cjxET01TdHJpbmdMaXN0PiB0
b1dyYXBwZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkaW1w
bFR5cGUqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>