<?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>156981</bug_id>
          
          <creation_ts>2016-04-25 08:50:34 -0700</creation_ts>
          <short_desc>Inline RenderStyle into RenderElement</short_desc>
          <delta_ts>2016-04-25 13:00:05 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1186943</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 08:50:34 -0700</bug_when>
    <thetext>We can save memory and reduce indirection of style access by inlining RenderStyle to RenderElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186948</commentid>
    <comment_count>1</comment_count>
      <attachid>277252</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 09:05:29 -0700</bug_when>
    <thetext>Created attachment 277252
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186972</commentid>
    <comment_count>2</comment_count>
      <attachid>277252</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-04-25 10:24:46 -0700</bug_when>
    <thetext>Comment on attachment 277252
patch

r=me once it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186973</commentid>
    <comment_count>3</comment_count>
      <attachid>277257</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 10:25:57 -0700</bug_when>
    <thetext>Created attachment 277257
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186986</commentid>
    <comment_count>4</comment_count>
      <attachid>277261</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 10:58:23 -0700</bug_when>
    <thetext>Created attachment 277261
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186991</commentid>
    <comment_count>5</comment_count>
      <attachid>277262</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 11:21:03 -0700</bug_when>
    <thetext>Created attachment 277262
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187001</commentid>
    <comment_count>6</comment_count>
      <attachid>277264</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 11:45:30 -0700</bug_when>
    <thetext>Created attachment 277264
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187024</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 12:49:29 -0700</bug_when>
    <thetext>https://trac.webkit.org/r200041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187031</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-25 13:00:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/25913417&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277252</attachid>
            <date>2016-04-25 09:05:29 -0700</date>
            <delta_ts>2016-04-25 10:25:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inline-renderstyle-6.patch</filename>
            <type>text/plain</type>
            <size>399006</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyOCBAQAorMjAxNi0wNC0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIFJlbmRlclN0eWxl
IHRvIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1Njk4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIGNhbiBzYXZlIG1lbW9yeSBhbmQgcmVkdWNlIGluZGlyZWN0aW9uIG9mIHN0
eWxlIGFjY2VzcyBieSBpbmxpbmluZyBSZW5kZXJTdHlsZSB0byBSZW5kZXJFbGVtZW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBSZW5kZXJTdHlsZSBtb3ZlYWJsZSBhbmQgc3dp
dGNoZXMgZnJvbSBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHRvIFJlbmRlclN0eWxlJiYK
KyAgICAgICAgaW4gbWFueSBwbGFjZXMgd2hlcmUgb3duZXJzaGlwIGlzIHBhc3NlZC4KKworICAg
ICAgICAqIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUmVwbGFjZW1lbnQ6OnNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5SZXBsYWNlbWVudDo6d2lsbENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WW91
VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpz
dHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVG
b3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHls
ZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJv
cGVydGllc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHlUb1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvcHlOb25BdHRy
aWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAg
ICAgICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxCUkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxCdXR0b25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxl
bWVudDo6SFRNTERldGFpbHNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmZvcm0pOgorICAg
ICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJh
bWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVs
ZW1lbnQ6OmFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVHJ1bmNhdGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNv
bnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRMb2FkQXNOZXRzY2Fw
ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1t
YXJ5RWxlbWVudDo6SFRNTFN1bW1hcnlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MV0JS
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MV0JSRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlw
ZTo6c3VwcG9ydHNWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlw
ZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IaWRkZW5JbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0ltYWdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpmb3JtRm9yU3VibWlzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2xpZGVyVGh1bWJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SdWJ5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSdWJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1YnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUnVi
eUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1J1YnlUZXh0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSdWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
dWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9S
dWJ5VGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6Om1heFJlc3VsdHNBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2Vy
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29u
dHJvbC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6
c2V0VGltZURpc3BsYXlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NJbm5lckVs
ZW1lbnQ6OlByb2dyZXNzSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNz
SW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXJUaHVtYjo6
UmVuZGVyU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50
OjpzZXRQb3NpdGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJD
b250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJDb250
YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlQ29udHJv
bHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xz
OjpSZW5kZXJJbWFnZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6
VlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VlRUQ3VlLmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1l
bmNsb3NlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3Nl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
TWVuY2xvc2VFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBt
YXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJl
bmRlcmVyKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9u
cyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0
aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6Z2V0
QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudDo6UmVuZGVyQXR0YWNobWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJl
bmRlckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xvbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
TWFyZ2luSW5mbzo6TWFyZ2luSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OlJlbmRlckJsb2NrRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmNyZWF0ZU11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpza2lwQm9keUJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
dXR0b246OlJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJDb21iaW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5k
ZXJlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcik6CisgICAgICAgIChXZWJD
b3JlOjpmaXJzdExpbmVTdHlsZUZvckNhY2hlZFVuY2FjaGVkVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50Ojppbml0aWFsaXplU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6cHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNJbml0aWFsaXpl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlSW50ZXJuYWwpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6flJlbmRlckVtYmVkZGVkT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6UmVu
ZGVyRmllbGRzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1Ro
cmVhZFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGcmFtZTo6UmVuZGVyRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFz
ZTo6Y2hpbGRWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVuUGxh
Y2Vob2xkZXI6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxs
U2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxT
Y3JlZW46OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdWxsU2Ny
ZWVuU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxh
Y2Vob2xkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFjZUZvckRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52YXMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OlJl
bmRlcklGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5s
aW5lOjpSZW5kZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU3R5bGVPZkFub255
bW91c0Jsb2NrQ29udGludWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRkQ2hp
bGRJZ25vcmluZ0NvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmNsb25lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmpl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojppc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpSZW5kZXJM
aXN0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJr
ZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RN
YXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1l
ZGlhOjpSZW5kZXJNZWRpYSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xp
ZGVyQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0ZWRPcHRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QpOgorICAgICAgICAoUmVuZGVyTWVu
dUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZDo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZDo6cHJvY2Vzc1Bvc3NpYmxlU3Bhbm5lckRlc2NlbmRhbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OmNyZWF0ZUFub255bW91
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6On5SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1
dGVDaGlsZHJlblN0eWxlSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6OnNldE9iamVjdFN0eWxlSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVzdG9yZVJlZ2lvbk9i
amVjdHNPcmlnaW5hbFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBk
YXRlV3JpdGluZ01vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUXVvdGU6OlJlbmRlclF1b3RlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OmFic29sdXRlUXVhZHNGb3JCb3hJblJlZ2lvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxp
Y2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0lubGluZTo6
UmVuZGVyUnVieUFzSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0Jsb2Nr
OjpSZW5kZXJSdWJ5QXNCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnkuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlSdW46OmNyZWF0ZVJ1YnlCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6
OlJlbmRlclNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlz
aWJpbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbGlkZXI6OlJlbmRlclNsaWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxl
Q2FwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OlJlbmRl
clRhYmxlQ29sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlTG9naWNhbEhlaWdodEZvckNl
bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNl
Y3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRD
dWU6OlJlbmRlclZUVEN1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRl
by5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cldpZGdldDo6UmVuZGVyV2lkZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEF1dG9TaXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6Y3JlYXRlQW5vbnltb3VzTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
RnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1hdGg6
OlJlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2U6OlJlbmRlck1h
dGhNTE1lbmNsb3NlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1l
bmNsb3NlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0
aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVw
ZGF0ZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
OjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um9vdDo6cmVzdHJ1Y3R1cmVXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb290Ojp1cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290
V3JhcHBlcjo6Y3JlYXRlQW5vbnltb3VzV3JhcHBlcik6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpSZW5k
ZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzUHJlc2NyaXB0RGVsaW1pdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlwdHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjplbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRlZmF1
bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9u
ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5
bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0U3R5bGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjpn
cmFwaGljc0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZH
Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjppc09iamVjdEJvdW5kaW5n
Qm94VmFsaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdFbGxpcHNlOjpSZW5kZXJTVkdFbGxpcHNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVudFN0b3ApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lu
bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Z3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpS
ZW5kZXJTVkdQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdmdFeHRl
bnNpb25zRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
cjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFwZTo6UmVuZGVyU1ZHU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpncmFwaGljc0VsZW1l
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBh
dGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAg
KiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
cmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1v
dmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBk
YXRlcjo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OnVwZGF0ZUJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBzdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQpOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50Lmg6CisgICAgICAgICogc3R5
bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNo
YXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2hhcmlu
Z1Jlc29sdmVyOjpmaW5kU2libGluZyk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmVuc3VyZVBsYWNlaG9sZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50Ojppc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRmls
dGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R3JhcGhpY3NFbGVtZW50OjpnZXRCQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNz
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5n
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
RWxlbWVudDo6Z2V0QkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
d2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdT
d2l0Y2hFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3Rocyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNw
YW5FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNwYW5FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0
YXJnZXRDbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisKIDIwMTYtMDQt
MjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAg
ICBEcm9wIFtVc2VQb2ludGVyc0V2ZW5Gb3JOb25OdWxsYWJsZU9iamVjdEFyZ3VtZW50c10gZnJv
bSBUZXh0VHJhY2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5S
ZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9QbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRP
YmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0
ZVJlbmRlcmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSA9IDA7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgPSAwOwogfTsKIAogdHlwZWRlZiBSZWY8UGx1Z2luUmVwbGFjZW1lbnQ+ICgqQ3Jl
YXRlUGx1Z2luUmVwbGFjZW1lbnQpKEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBKU0M6OkpTT2JqZWN0KiBz
Y3JpcHRPYmplY3QoKSBmaW5hbCB7IHJldHVybiBtX3NjcmlwdE9iamVjdDsgfQogCiAgICAgYm9v
bCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSBmaW5hbCB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBs
dWdJbkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBib29sIGVuc3VyZVJlcGxhY2VtZW50
U2NyaXB0SW5qZWN0ZWQoKTsKICAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Ojp+UXVpY2tUaW1lUGwKICAgICBtX21lZGlhRWxlbWVudCA9IG51bGxwdHI7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9u
UG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBv
c2l0aW9uKQogewogICAgIEFTU0VSVF9VTlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0g
JnBsdWdpbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OllvdVR1YmVQbHVnaW5SCiAgICAgICAgIG1fYXR0cmlidXRlcy5hZGQocGFyYW1O
YW1lc1tpXSwgcGFyYW1WYWx1ZXNbaV0pOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
WW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJ
bkVsZW1lbnQmIHBsdWdpbiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIEFTU0VSVF9VTlVT
RUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3
VVJMKTsKIAogICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwgeyByZXR1cm4gbV9l
bWJlZFNoYWRvd0VsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAg
SFRNTFBsdWdJbkVsZW1lbnQqIG1fcGFyZW50RWxlbWVudDsKICAgICBSZWZQdHI8WW91VHViZUVt
YmVkU2hhZG93RWxlbWVudD4gbV9lbWJlZFNoYWRvd0VsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCwxMSArMzg4LDEx
IEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW0KICAgICBTdGF0ZSYg
c3RhdGUgPSBtX3N0YXRlOwogCiAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCkpIHsKLSAgICAg
ICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKTsKKyAgICAgICAgc3RhdGUu
c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+aW5oZXJpdEZyb20oc3RhdGUucGFyZW50U3R5bGUoKSwgaXNBdFNoYWRvd0JvdW5kYXJ5KGVs
ZW1lbnQpID8gUmVuZGVyU3R5bGU6OkF0U2hhZG93Qm91bmRhcnkgOiBSZW5kZXJTdHlsZTo6Tm90
QXRTaGFkb3dCb3VuZGFyeSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGUuc2V0U3R5bGUo
ZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKLSAgICAgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUo
UmVuZGVyU3R5bGU6OmNsb25lKHN0YXRlLnN0eWxlKCkpKTsKKyAgICAgICAgc3RhdGUuc2V0UGFy
ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpzdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQog
CiAgICAgYXV0byYgc3R5bGUgPSAqc3RhdGUuc3R5bGUoKTsKQEAgLTQ1Myw4ICs0NTMsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2CiAgICAgU3RhdGUmIHN0YXRl
ID0gbV9zdGF0ZTsKIAogICAgIC8vIENyZWF0ZSB0aGUgc3R5bGUKLSAgICBzdGF0ZS5zZXRTdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmUoZWxlbWVudFN0eWxlKSk7Ci0gICAgc3RhdGUuc2V0UGFyZW50
U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKGVsZW1lbnRTdHlsZSkpOworICAgIHN0YXRlLnNldFN0
eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqZWxlbWVudFN0eWxlKSk7CisgICAgc3RhdGUuc2V0
UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCplbGVtZW50U3R5bGUpKTsKIAogICAg
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlOwpA
QCAtNTY1LDExICs1NjUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJl
c29sdgogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICBpZiAobV9zdGF0ZS5wYXJl
bnRTdHlsZSgpKSB7Ci0gICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUo
KSk7CisgICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKSk7CiAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXRGcm9tKG1fc3RhdGUucGFyZW50U3R5bGUoKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGUuc2V0U3R5bGUoZGVmYXVsdFN0eWxlRm9yRWxl
bWVudCgpKTsKLSAgICAgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25l
KHN0YXRlLnN0eWxlKCkpKTsKKyAgICAgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5
bGU6OmNsb25lUHRyKCpzdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQogCiAgICAgLy8gU2luY2Ugd2Ug
ZG9uJ3QgdXNlIHBzZXVkby1lbGVtZW50cyBpbiBhbnkgb2Ygb3VyIHF1aXJrL3ByaW50IHVzZXIg
YWdlbnQgcnVsZXMsIGRvbid0IHdhc3RlIHRpbWUgd2Fsa2luZwpAQCAtNjE0LDExICs2MTQsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdgogCiAgICAgYXV0byog
ZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAo
IWRvY3VtZW50RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjcmVhdGUoKTsK
KyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKIAogICAgIG1fc3RhdGUg
PSBTdGF0ZSgqZG9jdW1lbnRFbGVtZW50LCBtX2RvY3VtZW50LnJlbmRlclN0eWxlKCkpOwogCi0g
ICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpOworICAgIG1fc3RhdGUu
c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKICAgICBtX3N0YXRlLnN0eWxlKCkt
PmluaGVyaXRGcm9tKG1fc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKIAogICAgIFBhZ2VSdWxl
Q29sbGVjdG9yIGNvbGxlY3RvcihtX3N0YXRlLCBtX3J1bGVTZXRzKTsKQEAgLTY1NCw3ICs2NTQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2CiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVu
dCgpCiB7Ci0gICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpOworICAg
IG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKICAgICAvLyBNYWtl
IHN1cmUgb3VyIGZvbnRzIGFyZSBpbml0aWFsaXplZCBpZiB3ZSBkb24ndCBpbmhlcml0IHRoZW0g
ZnJvbSBvdXIgcGFyZW50IHN0eWxlLgogICAgIGluaXRpYWxpemVGb250U3R5bGUoZG9jdW1lbnRT
ZXR0aW5ncygpKTsKICAgICBpZiAoZG9jdW1lbnRTZXR0aW5ncygpKQpAQCAtMTIxMyw4ICsxMjEz
LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aQogICAgIGNhY2hl
SXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0IHdlIGRv
bid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5IGJlIGZ1
cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNoZSBpcyBy
ZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQg
YXMtaXMuCi0gICAgY2FjaGVJdGVtLnJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHN0
eWxlKTsKLSAgICBjYWNoZUl0ZW0ucGFyZW50UmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUocGFyZW50U3R5bGUpOworICAgIGNhY2hlSXRlbS5yZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqc3R5bGUpOworICAgIGNhY2hlSXRlbS5wYXJlbnRSZW5kZXJTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqcGFyZW50U3R5bGUpOwogICAgIG1fbWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZS5hZGQoaGFzaCwgV1RGTW92ZShjYWNoZUl0ZW0pKTsKIH0KIApAQCAtMTM5Myw3ICsx
MzkzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aQogdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAg
bV9zdGF0ZSA9IFN0YXRlKCk7Ci0gICAgbV9zdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmUoc3R5bGUuZ2V0KCkpKTsKKyAgICBtX3N0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqc3R5bGUpKTsKICAgICBtX3N0YXRlLnNldFN0eWxlKFdURk1vdmUo
c3R5bGUpKTsKICAgICBhcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoaWQsIHZhbHVlKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3NiwxMCArMTg3
NiwxMCBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlCiAgICAgICAg
ICAgICAvLyBmb250IHNlbGVjdG9yLCBzbyBzZXQgYSBmb250IHNlbGVjdG9yIGlmIG5lZWRlZC4K
ICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLT5mb250RmFsbGJhY2tQcmVmZXJzUGljdG9n
cmFwaHMoKSkKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+Zm9udENhc2NhZGUo
KS51cGRhdGUoJmZvbnRTZWxlY3RvcigpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRT
dHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZm9udFNlbGVjdG9yKCkpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvIGRvY3VtZW50Q2hhbmdlID0gU3R5bGU6OmRldGVybWluZUNo
YW5nZSgqZG9jdW1lbnRTdHlsZSwgbV9yZW5kZXJWaWV3LT5zdHlsZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gZG9jdW1lbnRDaGFuZ2UgPSBTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKGRvY3VtZW50U3R5
bGUsIG1fcmVuZGVyVmlldy0+c3R5bGUoKSk7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnRDaGFu
Z2UgIT0gU3R5bGU6Ok5vQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJlbmRlclZpZXcoKS0+c2V0
U3R5bGUoV1RGTW92ZShkb2N1bWVudFN0eWxlKSk7CiAgICAgICAgIH0KQEAgLTU4MzUsNyArNTgz
NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW4KICAgICBib29s
IHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyID0gaXM8UmVuZGVyQm94PihyZW5kZXJlcik7CiAgICAg
aWYgKHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyKSB7CiAgICAgICAgIG1fc2F2ZWRQbGFjZWhvbGRl
ckZyYW1lUmVjdCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5mcmFtZVJlY3QoKTsK
LSAgICAgICAgbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUoJnJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVy
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXItPnN0eWxlKCkpOwogICAgIH0K
IAogICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50ICE9IGRvY3VtZW50RWxlbWVudCgpKQpAQCAt
NTkxNSw3ICs1OTE1LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJl
bgogICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxhY2Vob2xkZXIoV1RGTW92ZShtX3NhdmVkUGxh
Y2Vob2xkZXJSZW5kZXJTdHlsZSksIG1fc2F2ZWRQbGFjZWhvbGRlckZyYW1lUmVjdCk7CiAgICAg
ZWxzZSBpZiAocmVuZGVyZXIgJiYgbV9mdWxsU2NyZWVuUmVuZGVyZXIgJiYgbV9mdWxsU2NyZWVu
UmVuZGVyZXItPnBsYWNlaG9sZGVyKCkpIHsKICAgICAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9s
ZGVyID0gbV9mdWxsU2NyZWVuUmVuZGVyZXItPnBsYWNlaG9sZGVyKCk7Ci0gICAgICAgIHJlbmRl
cmVyLT5jcmVhdGVQbGFjZWhvbGRlcihSZW5kZXJTdHlsZTo6Y2xvbmUoJnBsYWNlaG9sZGVyLT5z
dHlsZSgpKSwgcGxhY2Vob2xkZXItPmZyYW1lUmVjdCgpKTsKKyAgICAgICAgcmVuZGVyZXItPmNy
ZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0eWxlOjpjbG9uZVB0cihwbGFjZWhvbGRlci0+c3R5bGUo
KSksIHBsYWNlaG9sZGVyLT5mcmFtZVJlY3QoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZnVsbFNj
cmVlblJlbmRlcmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDkzLDcgKzE0OTMsNyBAQCBib29sIEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
CiAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSAhPSBOT05FICYmIHN0eWxlLmRpc3BsYXkoKSAh
PSBDT05URU5UUzsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24g
MTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQzLDcgKzI0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSB7IH0KIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJik7CiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBP
cHRpb25hbDxFbGVtZW50U3R5bGU+IFBzZXVkb0VsZW1lbnQ6OnJlCiAgICAgYXV0byogc3R5bGUg
PSBtX2hvc3RFbGVtZW50LT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVk
b0lkLCAmcGFyZW50U3R5bGUpOwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBOdWxs
b3B0OwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKSk7
CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSk7
CiB9CiAKIHZvaWQgUHNldWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKQEAgLTEyMiw3
ICsxMjIsNyBAQCB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlCiAgICAg
ICAgIC8vIFdlIG9ubHkgbWFuYWdlIHRoZSBzdHlsZSBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50
IHdoaWNoIG11c3QgYmUgaW1hZ2VzIG9yIHRleHQuCiAgICAgICAgIGlmICghaXM8UmVuZGVySW1h
Z2U+KCpjaGlsZCkgJiYgIWlzPFJlbmRlclF1b3RlPigqY2hpbGQpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlZFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShyZW5k
ZXJlci5zdHlsZSgpKTsKKyAgICAgICAgYXV0byBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOwog
ICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnNldFN0eWxlKFdURk1vdmUo
Y3JlYXRlZFN0eWxlKSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
QnV0dG9uSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VCdXR0b25JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1
Miw3IEBAIGJvb2wgQmFzZUJ1dHRvbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBCYXNlQnV0dG9uSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJCdXR0b24+KGVsZW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9v
bCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJy
aWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgRmlsZUlucHV0VHlw
ZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmUKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpbGVVcGxv
YWRDb250cm9sPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRT
dHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3Ro
ZXJUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRmlsZUxpc3QqIGZpbGVzKCkgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxB
cHBsZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKCFj
YW5FbWJlZEphdmEoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRM
b2FkaW5nUGx1Z2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1
Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW4K
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBdHRhY2htZW50
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0YWNobWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhU
TUxBdHRhY2htZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAg
ICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkU2VsZWN0
T25Nb3VzZURvd24oKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5Db250
YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDkgKzcwLDkgQEAgdm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZQog
ICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
QlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoc3R5bGUtPmhh
c0NvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGluZUJyZWFrPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBIVE1M
QnV0dG9uRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdAogICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0
ciwgdHlwZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJCdXR0b24+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1dHRvbnMgZG9uJ3QgbmVlZCBpdC4KICAgICBib29s
IGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQ2Fu
dmFzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24p
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
IGluc2VydGlvblBvc2l0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJh
bWUoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAg
cHJpdmF0ZToKICAgICBIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgSFRNTERldGFp
bHNFbGVtZW50OjpIVE1MRGV0YWlsc0VsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRl
dGFpbHNUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTERldGFp
bHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
OTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODY4LDcgKzg2OCw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHls
ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZUZvcmJp
ZHNJbnNlcnRIVE1MKCkgY29uc3Q7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7
IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDoKICAgICBy
ZXR1cm4gZmllbGRzZXQ7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRT
ZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNF
bnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBz
dXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjb21wdXRlV2lsbFZhbGlkYXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRpc2FibGVkQXR0
cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGJv
b2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKICAgICByZXR1cm4gaXNVUkxB
bGxvd2VkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyRnJhbWU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
ICAgIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw5
ICsxNTcsOSBAQCBib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkCiAgICAg
cmV0dXJuICFzdHlsZS5pc1BsYWNlaG9sZGVyU3R5bGUoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewotICAgIGlmIChzdHlsZS0+aGFzQ29udGVudCgpKQorICAgIGlmIChzdHlsZS5oYXND
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKICAgICAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RnJhbWVTZXQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJy
aWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
ICAgICAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS5kaXNw
bGF5KCkgIT0gTk9ORTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlcklGcmFtZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RE9NVG9rZW5MaXN0PiBtX3NhbmRib3g7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsOSArMjU2
LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW1hZ2VFbGVtZW50OjphbAogICAgIHJldHVy
biBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAg
ICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUuaGFzQ29udGVudCgpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2U+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSwgbnVsbHB0ciwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8pOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBdHRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdl
Q2FuZGlkYXRlKGNvbnN0IEltYWdlQ2FuZGlkYXRlJik7CiAKICAgICBib29sIGNhblN0YXJ0U2Vs
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5jcmVhdGVJbnB1dFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpKTsKIH0K
QEAgLTE4NzUsMjMgKzE4NzUsMjMgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRUcnVu
Y2F0ZVRleAogICAgIHJldHVybiBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gdGhpcyAm
JiBzdHlsZS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxpcHNpczsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CitSZW5kZXJTdHlsZSBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGUoKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oJnN0eWxlKTsKLSAgICBhZGp1
c3RJbm5lclRleHRTdHlsZShzdHlsZSwgKnRleHRCbG9ja1N0eWxlKTsKKyAgICB0ZXh0QmxvY2tT
dHlsZS5pbmhlcml0RnJvbSgmc3R5bGUpOworICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0eWxl
LCB0ZXh0QmxvY2tTdHlsZSk7CiAKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0V2hpdGVTcGFjZShQ
UkUpOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRPdmVyZmxvd1dyYXAoTm9ybWFsT3ZlcmZsb3dX
cmFwKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0T3ZlcmZsb3dYKE9ISURERU4pOwotICAgIHRl
eHRCbG9ja1N0eWxlLT5zZXRPdmVyZmxvd1koT0hJRERFTik7Ci0gICAgdGV4dEJsb2NrU3R5bGUt
PnNldFRleHRPdmVyZmxvdyhzaG91bGRUcnVuY2F0ZVRleHQoc3R5bGUpID8gVGV4dE92ZXJmbG93
RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3dDbGlwKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRXaGl0
ZVNwYWNlKFBSRSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dXcmFwKE5vcm1hbE92
ZXJmbG93V3JhcCk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dYKE9ISURERU4pOwor
ICAgIHRleHRCbG9ja1N0eWxlLnNldE92ZXJmbG93WShPSElEREVOKTsKKyAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRUZXh0T3ZlcmZsb3coc2hvdWxkVHJ1bmNhdGVUZXh0KHN0eWxlKSA/IFRleHRPdmVy
Zmxvd0VsbGlwc2lzIDogVGV4dE92ZXJmbG93Q2xpcCk7CiAKICAgICAvLyBEbyBub3QgYWxsb3cg
bGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFuIG91ciBkZWZhdWx0LgotICAgIGlmICh0ZXh0
QmxvY2tTdHlsZS0+Zm9udE1ldHJpY3MoKS5saW5lU3BhY2luZygpID4gc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpCi0gICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKKyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9u
dE1ldHJpY3MoKS5saW5lU3BhY2luZygpID4gc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpCisg
ICAgICAgIHRleHRCbG9ja1N0eWxlLnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxM
aW5lSGVpZ2h0KCkpOwogCi0gICAgdGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwor
ICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoQkxPQ0spOwogCiAgICAgcmV0dXJuIHRleHRC
bG9ja1N0eWxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIEhUTUxF
bGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAgICAgVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgZmluYWw7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlbmRlclN0eWxlIGNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBIVE1MRWxl
bWVudCogaW5uZXJCbG9ja0VsZW1lbnQoKSBjb25zdDsKICAgICBIVE1MRWxlbWVudCogaW5uZXJT
cGluQnV0dG9uRWxlbWVudCgpIGNvbnN0OwpAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBmaW5h
bDsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
YWNoUmVuZGVyZXJzKCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNywxMSArMjM3LDExIEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgICAgICBib29sIG1lZGlhUXVlcnlNYXRj
aGVzID0gdHJ1ZTsKICAgICAgICAgaWYgKCFtX21lZGlhLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgICAgICAg
ICAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CiAgICAgICAgICAgICBpZiAo
ZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICAgICAgZG9jdW1l
bnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAg
ICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVB
bGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOwotICAgICAgICAgICAgTWVkaWFRdWVy
eUV2YWx1YXRvciBldmFsdWF0b3IoZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlw
ZSgpLCBkb2N1bWVudCgpLmZyYW1lKCksIGRvY3VtZW50U3R5bGUuZ2V0KCkpOworICAgICAgICAg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IoZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3
KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLmZyYW1lKCksIGRvY3VtZW50U3R5bGUgPyAmKmRv
Y3VtZW50U3R5bGUgOiBudWxscHRyKTsKICAgICAgICAgICAgIG1lZGlhUXVlcnlNYXRjaGVzID0g
ZXZhbHVhdG9yLmV2YWwobWVkaWEuZ2V0KCkpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzM2LDcgKzczNiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgK
ICAgICByZXR1cm4gY29udHJvbHMoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChz
dHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
TWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTWVkaWE+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0
ODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0
ZVJlcXVlc3RzKCk7CiAjZW5kaWYKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAg
ICAgYm9vbCBtZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhQ29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvcjsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw5ICs1Nyw5IEBAIFJlZjxIVE1MTWV0ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50
OjoKICAgICByZXR1cm4gbWV0ZXI7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
TWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoIWRv
Y3VtZW50KCkucGFnZSgpLT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIoc3R5bGUtPmFwcGVhcmFuY2Uo
KSkpCisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHN0
eWxlLmFwcGVhcmFuY2UoKSkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVG
b3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJNZXRlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk0LDcgKzI5NCw3IEBAIE5QT2JqZWN0KiBIVE1MUGx1Z0luRWxlbWVudDo6Z2V0TlBPYmpl
Y3QKIAogI2VuZGlmIC8qIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAqLwogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQ
bHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBpZiAo
bV9wbHVnaW5SZXBsYWNlbWVudCAmJiBtX3BsdWdpblJlcGxhY2VtZW50LT53aWxsQ3JlYXRlUmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnQtPmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcigqdGhpcywgV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
KTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsK
IAogICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVzZSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQgaW5zdGVhZCBvZiBjYWxsaW5nIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGRpcmVjdGx5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBcwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBv
c2l0aW9uKQogewogICAgIEFTU0VSVCghZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290KikgZmluYWw7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHdpbGxSZWNhbGNT
dHlsZShTdHlsZTo6Q2hhbmdlKSBmaW5hbDsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygp
IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw5ICs1Niw5IEBAIFJlZjxIVE1MUHJv
Z3Jlc3NFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGUKICAgICByZXR1cm4gcHJvZ3Jlc3M7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUHJvZ3Jlc3NF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoIXN0eWxlLT5oYXNBcHBlYXJhbmNlKCkp
CisgICAgaWYgKCFzdHlsZS5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJF
bGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJQcm9ncmVzcz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCShyZXZpc2lvbiAx
OTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkQXBw
ZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydExhYmVs
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlbmRlclByb2dy
ZXNzKiByZW5kZXJQcm9ncmVzcygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICsz
MzksNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RBbGwoKSBjCiAgICAgcmV0
dXJuICF1c2VzTWVudUxpc3QoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxT
ZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICBpZiAodXNlc01lbnVMaXN0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBmaW5hbDsKIAogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBIVE1MU3VtbWFyeUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxl
bWVudChjCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc3VtbWFyeVRhZykpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN1bW1hcnlFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MU3VtbWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBI
VE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaQogICAgIHVwZGF0ZVZhbGlkaXR5KCk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBA
IC01MjMsMTcgKzUyMywxNyBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OndpbGxSZXNwb25k
VG9NCiAgICAgcmV0dXJuICFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CitSZW5kZXJTdHlsZSBIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGUoKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oJnN0eWxlKTsKLSAgICBhZGp1
c3RJbm5lclRleHRTdHlsZShzdHlsZSwgKnRleHRCbG9ja1N0eWxlKTsKLSAgICB0ZXh0QmxvY2tT
dHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgdGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZyb20o
JnN0eWxlKTsKKyAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUp
OworICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoQkxPQ0spOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIC8vIFdlJ3JlIGFkZGluZyB0aHJlZSBleHRyYSBwaXhlbHMgb2YgcGFkZGluZyB0
byBsaW5lIHRleHRhcmVhcyB1cCB3aXRoIHRleHQgZmllbGRzLiAgCi0gICAgdGV4dEJsb2NrU3R5
bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhlZCkpOwotICAgIHRleHRCbG9ja1N0eWxl
LT5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKDMsIEZpeGVkKSk7CisgICAgdGV4dEJsb2NrU3R5bGUu
c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDMsIEZpeGVkKSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0
UGFkZGluZ1JpZ2h0KExlbmd0aCgzLCBGaXhlZCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdGV4
dEJsb2NrU3R5bGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAogICAgIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJTdHlsZSBjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpOwogCkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBi
b29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzZXQoKSBvdmVycmlkZTsKICAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25z
dCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVu
dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZp
cmVTZWxlY3RFdmVudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0Q2hhbmdlV2FzVXNl
ckVkaXQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEhUTUxWaWRl
b0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKTsgCiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
VmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVmlkZW8+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxh
eU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAogICAgIFVSTCBwb3N0ZXJJbWFn
ZVVSTCgpIGNvbnN0OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBib29s
IHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVsZW1lbnQoY29uc3Qg
UXVhCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUod2JyVGFnKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5lQnJlYWs+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1M
V0JSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBib29sIEhpZGRlbklucHV0
VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSGlk
ZGVuSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHJpdmF0ZToKICAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25z
dCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
SW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2
ZW50cykgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZh
dGVFdgogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFn
ZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oZWxlbWVudCgpLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRm9ybURh
dGFBcHBlbmRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzVmFs
aWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVu
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgUGFzc1Jl
ZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IElucHV0VHlwZTo6ZgogICAgIHJldHVybiBlbGVtZW50KCku
Zm9ybSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJ
bnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PihSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IoZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxlKSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAg
cHVibGljOgogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zLgogCiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4NSw3ICsyODUsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRo
dW1iCiAgICAgcmV0dXJuICZ0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXI+KGVsZW1lbnQoKSwg
V1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
aAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBo
YW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2
b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcg
c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvUnVieUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL1J1YnlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDExIEBA
IFJlZjxSdWJ5RWxlbWVudD4gUnVieUVsZW1lbnQ6OmNyZWF0ZShjb24KICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSdWJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gUnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
IGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKLSAgICBpZiAoc3R5bGUtPmRpc3Bs
YXkoKSA9PSBJTkxJTkUpCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5QXNJbmxpbmU+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7Ci0gICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUt
PmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0spCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBC
TE9DSyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKQogICAgICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieUFzQmxvY2s+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShz
dHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
UnVieUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVt
ZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgUnVieUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5
OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAgUmVmPFJ1YnlUZXh0RWxlbWVudD4gUnVieVRleHRF
bGVtZW50OjpjcgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJ1YnlUZXh0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieVRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2Vy
dGlvblBvc2l0aW9uKQogewogICAgIC8vIFJlbmRlclJ1YnlUZXh0IHJlcXVpcmVzIGl0cyBwYXJl
bnQgdG8gYmUgUmVuZGVyUnVieVJ1bi4KLSAgICBpZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9u
LnBhcmVudCgpKSAmJiBzdHlsZS0+ZGlzcGxheSgpID09IEJMT0NLKQorICAgIGlmIChpc1J1Ynko
aW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCkpICYmIHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSykK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlUZXh0PigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJ1YnlUZXh0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9TZWFy
Y2hJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1NlYXJjaElucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBTZWFyY2hJbnB1dFR5cGU6Om1heFJlc3VsdHNBdHRyaWJ1dAogICAgICAgICB1cGRhdGVSZXN1
bHRCdXR0b25Qc2V1ZG9UeXBlKCptX3Jlc3VsdHNCdXR0b24sIGVsZW1lbnQoKS5tYXhSZXN1bHRz
KCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVh
dGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNlYXJjaEZpZWxkPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBtYXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBuZWVkc0NvbnRh
aW5lcigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcg
QEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcAogICAgICAgICB8fCBJ
bnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZT4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KikgZmluYWw7CiAgICAgdm9pZCBmb3J3YXJkRXZl
bnQoRXZlbnQqKSBmaW5hbDsKICAgICBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQq
KSBmaW5hbDsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVycmlk
ZTsKICAgICBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIG92ZXJyaWRlOwogICAgIEhUTUxFbGVt
ZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxNiw3ICsyMjE2LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoYwogCiAgICAgLy8gTWFw
IHRoZSA8Y2FudmFzPiBmb250IGludG8gdGhlIHRleHQgc3R5bGUuIElmIHRoZSBmb250IHVzZXMg
a2V5d29yZHMgbGlrZSBsYXJnZXIvc21hbGxlciwgdGhlc2Ugd2lsbCB3b3JrCiAgICAgLy8gcmVs
YXRpdmUgdG8gdGhlIGNhbnZhcy4KLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52YXMoKS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1
bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgRGV0YWlsc01hcmtlckNvbnRyb2w6OkRl
dGFpbHNNYXJrZXJDb250cgogICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtZGV0
YWlscy1tYXJrZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtl
ckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJEZXRhaWxzTWFya2VyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2Vy
Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2woRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW4KICAgICB9CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFJlZjxNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGUKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTEwODIsNyArMTA4Miw3
IEBAIFJlZjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW4KICAgICByZXR1cm4g
ZWxlbWVudDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEy
OCw3ICsxMjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00
NTYsNyArNDU2LDcgQEAgcHJpdmF0ZToKIAogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gY3JlYXRl
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWV0ZXJTaGFkb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBi
b29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkCiAgICAgcmV0dXJuIHJlbmRl
ciAmJiAhcmVuZGVyLT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVh
cmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWV0
ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBNZXRlcklubmVyRWxlbWVudChE
b2N1bWVudCYpOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogfTsKIAogaW5saW5lIFJlZjxNZXRlcklubmVyRWxlbWVudD4gTWV0ZXJJbm5lckVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgUHJvZ3Jlc3NJbm5lckVs
ZW1lbnQ6OlByb2dyZXNzSW5uZXJFbGVtZQogewogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUHJvZ3Jlc3M+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQcm9ncmVzc0lubmVyRWxl
bWVudChEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSBzdGF0aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVhcmFu
Y2UKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyU2xpZGVy
VGh1bWI6OlJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNsaWRlclRodW1iOjpSZW5k
ZXJTbGlkZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBSZW5kZXJTbGlkZXJUaHVtYjo6aXNTbGlkZXJU
aHVtYigpIAogLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82MjUzNQogY2xhc3MgUmVuZGVyU2xpZGVy
Q29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJTbGlkZXJDb250YWluZXIoU2xpZGVyQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBSZW5kZXJTbGlkZXJDb250
YWluZXIoU2xpZGVyQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
ICAgICB7CiAgICAgfQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50
OjpzZXRQb3NpdGlvbkZyb20KICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyVGh1
bWJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU2xpZGVyVGh1bWI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC02MjMsNyArNjIz
LDcgQEAgUmVmPFNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IFNsaWRlckNvbnRhaQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNsaWRlckNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkocmV2
aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIFJlZjxFbGVtZW50PiBj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50Jikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKQEAg
LTExOSw3ICsxMTksNyBAQCBpbmxpbmUgUmVmPFNsaWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1
CiAKIGNsYXNzIFJlbmRlclNsaWRlclRodW1iIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxv
dyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2xpZGVyVGh1bWIoU2xp
ZGVyVGh1bWJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdm9pZCB1cGRhdGVBcHBlYXJh
bmNlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKIHByaXZhdGU6CkBAIC0xMzQsNyArMTM0
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAgICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoUmVuZGVy
U3R5bGUmLCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
c2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIFJlZjxU
ZXh0Q29udHJvbElubmVyQ29udGFpbmVyPiBUZXh0Q29udHIKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKGRvY3VtZW50KSk7CiB9CiAgICAgCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJ
bm5lckNvbnRhaW5lcjo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gVGV4dENv
bnRyb2wKIAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkKIHsKLSAgICBhdXRvIGlubmVyQ29udGFpbmVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpbm5lckNvbnRhaW5lclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZVB0cigpOwogICAgIGlubmVyQ29udGFpbmVyU3R5bGUtPmluaGVyaXRGcm9tKHNoYWRvd0hvc3RT
dHlsZSk7CiAKICAgICBpbm5lckNvbnRhaW5lclN0eWxlLT5zZXRGbGV4R3JvdygxKTsKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsCiAg
ICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogfQpAQCAtMTM2LDcgKzEzNiw4IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayog
VGV4dENvbnRyb2wKIAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShSZW5kZXJTdHlsZSYsIFJlbmRlclN0eWxlKiBz
aGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShkb3duY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5
bGUoKnNoYWRvd0hvc3RTdHlsZSkpOworICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUo
KnNoYWRvd0hvc3RTdHlsZSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dENv
bnRyb2xJbm5lckNvbnRhaW5lcj4gY3JlYXRlKERvY3VtZW50Jik7CiBwcm90ZWN0ZWQ6CiAgICAg
VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFRleHRDb250cm9s
SW5uZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dChEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKICAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOwogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckltYWdl
Q29udHJvbHNCdXR0b24gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHNC
dXR0b24oKTsKIAogcHJpdmF0ZToKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OlJlbmRlcklt
YWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFn
ZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRl
ZmEKICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6
CiAgICAgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKIAogICAgIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNJbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xzIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
RmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckltYWdlQ29udHJvbHMoSFRN
TEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRy
b2xzKCk7CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBy
ZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCi1SZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5kZXJJbWFnZUNvbnRy
b2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyCiB7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckltYWdlQ29udHJvbHM+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYy5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5
LDcgKzIyOSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3gKICAg
ICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZUVEN1ZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVlRUQ3VlQm94KERvY3VtZW50
JiwgVlRUQ3VlJik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CiAKICAgICBWVFRDdWUmIG1fY3VlOwogICAgIGludCBtX2ZvbnRTaXplRnJvbUNhcHRpb25V
c2VyUHJlZnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
OjpjaGlsZAogICAgIE1hdGhNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKGhhc1Rh
Z05hbWUoYW5ub3RhdGlvbl94bWxUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKIH07CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxNYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgUmVmPE1hdGhNTE1hdGhFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudAogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1hdGhNTE1hdGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRo
TUxNYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAgICAgCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPE1hdGhNTE1lbmNsb3Nl
RWxlbWVudD4gTWF0aE1MTWVuY2xvcwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdGhNTE1l
bmNsb3NlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWF0aE1MTWVuY2xvc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogeyAgICAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWVu
Y2xvc2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhNTE1lbmNs
b3NlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKICAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxNYXRoTUxTZWxlY3RF
bGVtZW50PiBNYXRoTUxTZWxlY3RFbGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxT
ZWxlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNl
bGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGMKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewog
ICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCiAgICAgICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKQEAgLTg4LDcgKzg4LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFRleHRF
bGVtZQogCiAgICAgLy8gRklYTUU6IHdoeSBkbyB3ZSBoYXZlIHRvIHNldCB0aGUgYWxpZ25tZW50
IGhlcmUgPyBJdCBzZWVtcyBuZWVkZWQgdG8gbWFrZSB0aGUKICAgICAvLyBzdHlsZS1jaGFuZ2Vk
Lmh0bXQgdGVzdCB0byBwYXNzLCBzaW5jZSBtYXRobWwgcmVuZGVycyBleHBlY3QgU3RyZXRjaCBh
cyBkZWZhdWx0LgotICAgIHN0eWxlLT5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9u
U3RyZXRjaCk7CisgICAgc3R5bGUuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvblN0
cmV0Y2gpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFRva2VuPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFRleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFRleHRFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5OSwxMCArMzc5OSwxMCBAQCB2b2lkIEZyYW1l
Vmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAgbV9zY3JvbGxDb3JuZXIgPSBudWxs
cHRyOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIW1fc2Nyb2xsQ29ybmVyKSB7Ci0gICAgICAg
ICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+
KHJlbmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKGNvcm5lclN0eWxlKSk7CisgICAgICAgICAg
ICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJl
bmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKCpjb3JuZXJTdHlsZSkpOwogICAgICAgICAgICAg
bV9zY3JvbGxDb3JuZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3ZlKGNvcm5lclN0eWxlKSk7Cisg
ICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92ZSgqY29ybmVyU3R5bGUp
KTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihjb3JuZXJSZWN0KTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1
LDcgKzQyNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ28KICAg
ICBjb25zdCBDb21wb3NpdGVBbmltYXRpb24mIHJlbmRlcmVyQW5pbWF0aW9ucyA9ICptX2NvbXBv
c2l0ZUFuaW1hdGlvbnMuZ2V0KCZyZW5kZXJlcik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBhbmltYXRpbmdTdHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy5nZXRBbmltYXRlZFN0
eWxlKCk7CiAgICAgaWYgKCFhbmltYXRpbmdTdHlsZSkKLSAgICAgICAgYW5pbWF0aW5nU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBhbmltYXRp
bmdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAK
ICAgICByZXR1cm4gYW5pbWF0aW5nU3R5bGU7CiB9CkBAIC02MzcsNyArNjM3LDcgQEAgYm9vbCBB
bmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpbwogc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlci5pc0NTU0FuaW1h
dGluZygpKQotICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5kZXJlci5zdHls
ZSgpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHls
ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhLT5nZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIocmVu
ZGVyZXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJh
bnNpdGlvCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgcHJvcGVydHksIHNvIHRo
YXQgcmVzdGFydGVkIHRyYW5zaXRpb25zIHVzZSB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YW5pbWF0
aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQocHJvcCkgJiYgaW1wbEFuaW0tPmlzQWNjZWxlcmF0
ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kaWZpZWRDdXJyZW50
U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ3VycmVudFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1cnJlbnRTdHlsZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGlmaWVkQ3VycmVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
UHRyKCpjdXJyZW50U3R5bGUpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbEFu
aW0tPmJsZW5kUHJvcGVydHlWYWx1ZUluU3R5bGUocHJvcCwgbW9kaWZpZWRDdXJyZW50U3R5bGUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAkocmV2aXNpb24g
MTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5pbWF0aW9uKEFuaW1hdGlvbiYgdHJh
bnNpdGlvbiwgQ1NTUHJvcGVydHlJRCBhbmltYXRpbmdQcm9wZXJ0eSwgUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0sIFJlbmRlclN0eWxlKiBmcm9t
U3R5bGUpCiAgICAgOiBBbmltYXRpb25CYXNlKHRyYW5zaXRpb24sIHJlbmRlcmVyLCBjb21wQW5p
bSkKLSAgICAsIG1fZnJvbVN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShmcm9tU3R5bGUpKQorICAg
ICwgbV9mcm9tU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpmcm9tU3R5bGUpKQogICAgICwg
bV90cmFuc2l0aW9uUHJvcGVydHkodHJhbnNpdGlvbi5wcm9wZXJ0eSgpKQogICAgICwgbV9hbmlt
YXRpbmdQcm9wZXJ0eShhbmltYXRpbmdQcm9wZXJ0eSkKIHsKQEAgLTc2LDcgKzc2LDcgQEAgYm9v
bCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdAogICAgIC8vIFJ1biBhIGN5Y2xl
IG9mIGFuaW1hdGlvbi4KICAgICAvLyBXZSBrbm93IHdlIHdpbGwgbmVlZCBhIG5ldyByZW5kZXIg
c3R5bGUsIHNvIG1ha2Ugb25lIGlmIG5lZWRlZAogICAgIGlmICghYW5pbWF0ZWRTdHlsZSkKLSAg
ICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0YXJnZXRTdHlsZSk7Cisg
ICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnRhcmdldFN0eWxl
KTsKIAogICAgIGJvb2wgbmVlZHNBbmltID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJv
cGVydGllcyh0aGlzLCBtX2FuaW1hdGluZ1Byb3BlcnR5LCBhbmltYXRlZFN0eWxlLmdldCgpLCBt
X2Zyb21TdHlsZS5nZXQoKSwgbV90b1N0eWxlLmdldCgpLCBwcm9ncmVzcygpKTsKICAgICAvLyBG
SVhNRTogd2UgYWxzbyBuZWVkIHRvIGRldGVjdCBjYXNlcyB3aGVyZSB3ZSBoYXZlIHRvIHNvZnR3
YXJlIGFuaW1hdGUgZm9yIG90aGVyIHJlYXNvbnMsCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgSW1w
bGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQKIHZvaWQgSW1wbGljaXRBbmltYXRpb246
OmdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRT
dHlsZSkKIHsKICAgICBpZiAoIWFuaW1hdGVkU3R5bGUpCi0gICAgICAgIGFuaW1hdGVkU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmUobV90b1N0eWxlLmdldCgpKTsKKyAgICAgICAgYW5pbWF0ZWRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbV90b1N0eWxlKTsKIAogICAgIENTU1Byb3Bl
cnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXModGhpcywgbV9hbmltYXRpbmdQcm9wZXJ0eSwg
YW5pbWF0ZWRTdHlsZS5nZXQoKSwgbV9mcm9tU3R5bGUuZ2V0KCksIG1fdG9TdHlsZS5nZXQoKSwg
cHJvZ3Jlc3MoKSk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlv
bjo6b25BbmltYXRpb25FbmQoZAogICAgIC8vIChjb21wYXJpbmcgdGhlIG9sZCB1bmFuaW1hdGVk
IHN0eWxlIHdpdGggdGhlIG5ldyBmaW5hbCBzdHlsZSBvZiB0aGUgdHJhbnNpdGlvbikuCiAgICAg
UmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBtX2NvbXBvc2l0ZUFuaW1h
dGlvbi0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkobV9hbmltYXRpbmdQcm9wZXJ0eSk7CiAgICAg
aWYgKGtleWZyYW1lQW5pbSkKLSAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRVbmFuaW1hdGVkU3R5
bGUoUmVuZGVyU3R5bGU6OmNsb25lKG1fdG9TdHlsZS5nZXQoKSkpOworICAgICAgICBrZXlmcmFt
ZUFuaW0tPnNldFVuYW5pbWF0ZWRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm1fdG9TdHls
ZSkpOwogICAgIAogICAgIHNlbmRUcmFuc2l0aW9uRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRp
b25lbmRFdmVudCwgZWxhcHNlZFRpbWUpOwogICAgIGVuZEFuaW1hdGlvbigpOwpAQCAtMjEwLDcg
KzIxMCw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnJlc2V0KFJlbmRlclN0eWwKICAgICBB
U1NFUlQodG8pOwogICAgIEFTU0VSVChtX2Zyb21TdHlsZSk7CiAKLSAgICBtX3RvU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmUodG8pOworICAgIG1fdG9TdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqdG8pOwogCiAgICAgLy8gUmVzdGFydCB0aGUgdHJhbnNpdGlvbgogICAgIGlmIChtX2Zy
b21TdHlsZSAmJiBtX3RvU3R5bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogS2V5ZnJhbWVB
bmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0
ZUFuaW1hdGlvbiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKICAgICA6IEFuaW1hdGlv
bkJhc2UoYW5pbWF0aW9uLCByZW5kZXJlciwgY29tcG9zaXRlQW5pbWF0aW9uKQogICAgICwgbV9r
ZXlmcmFtZXMoYW5pbWF0aW9uLm5hbWUoKSkKLSAgICAsIG1fdW5hbmltYXRlZFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZSh1bmFuaW1hdGVkU3R5bGUpKQorICAgICwgbV91bmFuaW1hdGVkU3R5bGUo
UmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1bmFuaW1hdGVkU3R5bGUpKQogICAgICwgbV9pbmRleChp
bmRleCkKIHsKICAgICAvLyBHZXQgdGhlIGtleWZyYW1lIFJlbmRlclN0eWxlcwpAQCAtMTM4LDcg
KzEzOCw3IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQKICAgICAv
LyBJZiBzbywgd2UgbmVlZCB0byBzZW5kIGJhY2sgdGhlIHRhcmdldFN0eWxlLgogICAgIGlmIChw
b3N0QWN0aXZlKCkpIHsKICAgICAgICAgaWYgKCFhbmltYXRlZFN0eWxlKQotICAgICAgICAgICAg
YW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0YXJnZXRTdHlsZSk7CisgICAgICAg
ICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp0YXJnZXRTdHlsZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0CiAgICAgLy8gUnVuIGEgY3ljbGUg
b2YgYW5pbWF0aW9uLgogICAgIC8vIFdlIGtub3cgd2Ugd2lsbCBuZWVkIGEgbmV3IHJlbmRlciBz
dHlsZSwgc28gbWFrZSBvbmUgaWYgbmVlZGVkLgogICAgIGlmICghYW5pbWF0ZWRTdHlsZSkKLSAg
ICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0YXJnZXRTdHlsZSk7Cisg
ICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnRhcmdldFN0eWxl
KTsKIAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGJlIG1vcmUgZWZmaWNpZW50IGFib3V0IGRl
dGVybWluaW5nIHdoaWNoIGtleWZyYW1lcyB3ZSBhcmUgYW5pbWF0aW5nIGJldHdlZW4uCiAgICAg
Ly8gV2Ugc2hvdWxkIGNhY2hlIHRoZSBsYXN0IHBhaXIgb3Igc29tZXRoaW5nLgpAQCAtMTk1LDcg
KzE5NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFhbmltYXRlZFN0eWxlKQotICAgICAgICBhbmltYXRlZFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZtX29iamVjdC0+c3R5bGUoKSk7CisgICAgICAgIGFu
aW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIobV9vYmplY3QtPnN0eWxlKCkpOwog
CiAgICAgZm9yIChhdXRvIHByb3BlcnR5SUQgOiBtX2tleWZyYW1lcy5wcm9wZXJ0aWVzKCkpIHsK
ICAgICAgICAgLy8gR2V0IHRoZSBmcm9tL3RvIHN0eWxlcyBhbmQgcHJvZ3Jlc3MgYmV0d2VlbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFj
aG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyQXR0YWNobWVudDo6
UmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJBdHRhY2htZW50OjpSZW5kZXJBdHRh
Y2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBMYXlvdXRT
aXplKCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNo
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRh
Y2htZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJBdHRhY2htZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
SFRNTEF0dGFjaG1lbnRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJBdHRhY2htZW50IGZpbmFsIDog
cHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJBdHRhY2htZW50KEhU
TUxBdHRhY2htZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQmIGF0dGFjaG1lbnRFbGVtZW50KCkgY29uc3Q7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgxLDEyICsxODEsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aGFkVmVydGljYWxMYXlvdXRPdmVyZmxvdzsKIH07CiAKLVJlbmRlckJsb2NrOjpSZW5kZXJCbG9j
ayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBC
YXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlw
ZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlw
ZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewogfQogCi1SZW5kZXJCbG9jazo6UmVuZGVyQmxv
Y2soRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2so
RG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJh
c2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBi
YXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewogfQpAQCAtMzA2LDcgKzMwNiw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGkKICAgICAgICAgZm9yIChS
ZW5kZXJCbG9jayogY3VyckNvbnQgPSBibG9ja0VsZW1lbnRDb250aW51YXRpb24oKTsgY3VyckNv
bnQ7IGN1cnJDb250ID0gY3VyckNvbnQtPmJsb2NrRWxlbWVudENvbnRpbnVhdGlvbigpKSB7CiAg
ICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbmV4dENvbnQgPSBjdXJyQ29udC0+Y29u
dGludWF0aW9uKCk7CiAgICAgICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKDApOwot
ICAgICAgICAgICAgY3VyckNvbnQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSgmbmV3U3R5
bGUpKTsKKyAgICAgICAgICAgIGN1cnJDb250LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUo
bmV3U3R5bGUpKTsKICAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24obmV4dENv
bnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzkxLDcgKzM5MSw3IEBAIFJlbmRlclB0cjxSZW5k
ZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNsb24KICAgICAgICAgY2xvbmVCbG9jay0+c2V0Q2hpbGRy
ZW5JbmxpbmUoY2hpbGRyZW5JbmxpbmUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVuZGVy
VHJlZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uKCpwYXJlbnQoKSk7Ci0gICAgICAgIGNsb25l
QmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFJlbmRlckJsb2NrPihlbGVtZW50KCktPmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0eWxlKCkpLCBpbnNlcnRpb25Q
b3NpdGlvbikpOworICAgICAgICBjbG9uZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxSZW5k
ZXJCbG9jaz4oZWxlbWVudCgpLT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGU6OmNs
b25lKHN0eWxlKCkpLCBpbnNlcnRpb25Qb3NpdGlvbikpOwogICAgICAgICBjbG9uZUJsb2NrLT5p
bml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBUaGlzIHRha2VzIGNhcmUgb2Ygc2V0dGlu
ZyB0aGUgcmlnaHQgdmFsdWUgb2YgY2hpbGRyZW5JbmxpbmUgaW4gY2FzZQpAQCAtNzE3LDcgKzcx
Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxkKFJlbmRlck9iamUKICAgICAgICAg
ICAgIEFTU0VSVCghaW5saW5lQ2hpbGRyZW5CbG9jay5jb250aW51YXRpb24oKSk7CiAgICAgICAg
ICAgICAvLyBDYWNoZSB0aGlzIHZhbHVlIGFzIGl0IG1pZ2h0IGdldCBjaGFuZ2VkIGluIHNldFN0
eWxlKCkgY2FsbC4KICAgICAgICAgICAgIGJvb2wgaW5saW5lQ2hpbGRyZW5CbG9ja0hhc0xheWVy
ID0gaW5saW5lQ2hpbGRyZW5CbG9jay5oYXNMYXllcigpOwotICAgICAgICAgICAgaW5saW5lQ2hp
bGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgICAgIGlubGluZUNoaWxkcmVuQmxv
Y2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
c3R5bGUoKSwgQkxPQ0spKTsKICAgICAgICAgICAgIHJlbW92ZUNoaWxkSW50ZXJuYWwoaW5saW5l
Q2hpbGRyZW5CbG9jaywgaW5saW5lQ2hpbGRyZW5CbG9ja0hhc0xheWVyID8gTm90aWZ5Q2hpbGRy
ZW4gOiBEb250Tm90aWZ5Q2hpbGRyZW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBO
b3cganVzdCBwdXQgdGhlIGlubGluZUNoaWxkcmVuQmxvY2sgaW5zaWRlIHRoZSBibG9ja0NoaWxk
cmVuQmxvY2suCkBAIC0zMDY4LDkgKzMwNjgsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVG
aXJzdExldHRlclN0eWxlCiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVl
ZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlw
ZS4KICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5ld0ZpcnN0TGV0dGVyOwogICAgICAg
ICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElORSkKLSAgICAgICAgICAgIG5ld0Zp
cnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUoJnBzZXVkb1N0eWxlKSk7CisgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5k
ZXJJbmxpbmUoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IFJlbmRlckJsb2Nr
Rmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnBzZXVkb1N0eWxlKSk7CisgICAg
ICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAgICAgICAgIG5ld0ZpcnN0TGV0dGVy
LT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBNb3ZlIHRoZSBmaXJzdCBsZXR0ZXIg
aW50byB0aGUgbmV3IHJlbmRlcmVyLgpAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZQogICAgICAgICBmaXJzdExldHRlciA9IG5ld0Zp
cnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RM
ZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXItPnNl
dFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5bGUpKTsKKyAgICAgICAgZmlyc3RM
ZXR0ZXItPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogfQogCiB2
b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJlbmRlckVsZW1lbnQq
IGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlclRleHQqIGN1cnJlbnRUZXh0Q2hpbGQpCkBAIC0zMTA1
LDkgKzMxMDUsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlCiAg
ICAgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlID0gc3R5bGVGb3JGaXJzdExldHRlcihmaXJzdExl
dHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7CiAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGZpcnN0TGV0dGVyID0gbnVsbHB0cjsKICAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgp
ID09IElOTElORSkKLSAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3Vt
ZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5bGUpKTsKKyAgICAgICAgZmlyc3RM
ZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZShw
c2V1ZG9TdHlsZSkpOwogICAgIGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVy
QmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5bGUpKTsK
KyAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJl
bmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAgIGZpcnN0TGV0dGVyLT5pbml0aWFs
aXplU3R5bGUoKTsKICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0
ZXIsIGN1cnJlbnRUZXh0Q2hpbGQpOwogCkBAIC0zNzQzLDkgKzM3NDMsOSBAQCBSZW5kZXJCbG9j
ayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
dG8gY29udmVydCBhbGwgb3VyIGlubGluZSBkaXNwbGF5cyB0byBibG9jay10eXBlIGluIHRoZSBh
bm9ueW1vdXMgbG9naWMgPwogICAgIFJlbmRlckJsb2NrKiBuZXdCb3g7CiAgICAgaWYgKGRpc3Bs
YXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYKQotICAgICAgICBuZXdCb3ggPSBu
ZXcgUmVuZGVyRmxleGlibGVCb3gocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBGTEVYKSk7Cisg
ICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJGbGV4aWJsZUJveChwYXJlbnQtPmRvY3VtZW50KCks
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5
bGUoKSwgRkxFWCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3Qm94ID0gbmV3IFJlbmRlckJsb2Nr
RmxvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCksIEJMT0NLKSk7CisgICAgICAgIG5ld0JveCA9
IG5ldyBSZW5kZXJCbG9ja0Zsb3cocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIEJMT0NLKSk7CiAK
ICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCb3g7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMaW5lTGF5b3V0U3Rh
dGU7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCbG9jayhFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQmxvY2soRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJCbG9jayhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CisgICAg
UmVuZGVyQmxvY2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDcgKzk0LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpNYXJnaW5JbmZvOjpNYXJnaW5J
bmZvKAogICAgIG1fbmVnYXRpdmVNYXJnaW4gPSAobV9jYW5Db2xsYXBzZU1hcmdpbkJlZm9yZVdp
dGhDaGlsZHJlbiAmJiAhYmxvY2subXVzdERpc2NhcmRNYXJnaW5CZWZvcmUoKSkgPyBibG9jay5t
YXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpIDogTGF5b3V0VW5pdCgpOwogfQogCi1SZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQogI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQpA
QCAtMTA0LDcgKzEwNCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KEVsZW1l
bnQKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZG9jdW1l
bnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQogI2lmIEVOQUJMRShJT1Nf
VEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQpAQCAt
MTIwLDcgKzEyMCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6flJlbmRlckJsb2NrRmxvdygpCiAKIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKQogewotICAg
IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5ldyBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKSk7CisgICAgUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmV3IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZChkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShzdHlsZSgpLCBCTE9DSykpOwogICAgIGZsb3dUaHJlYWQtPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gRG8gdGhpcyB0byBhdm9pZCB3cmFwcGlu
ZyBpbmxpbmUgY2hpbGRyZW4gdGhhdCBhcmUganVzdCBnb2luZyB0byBtb3ZlIGludG8gdGhlIGZs
b3cgdGhyZWFkLgogICAgIGRlbGV0ZUxpbmVzKCk7CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5CiB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKQogewogICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkICYmIChjaGlsZC0+aXNJbkZsb3dSZW5kZXJGbG93
VGhyZWFkKCkgfHwgY2hpbGQtPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSk7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgIGNoaWxkLT5zZXRTdHlsZShSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spKTsKKyAg
ICAgICAgY2hpbGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQCBlbnVtIExpbmVDb3Vu
dCB7CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKLSAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOworICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlckJsb2NrRmxvdygpOwogICAgICAgICAKICAgICB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9
IDApIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIGJvb2wgc2tpcEJv
ZHlCYWNrZ3JvdW5kKGNvbnN0IFJlbgogICAgICAgICAmJiAoZG9jdW1lbnRFbGVtZW50UmVuZGVy
ZXIgPT0gYm9keUVsZW1lbnRSZW5kZXJlci0+cGFyZW50KCkpOwogfQogCi1SZW5kZXJCb3g6OlJl
bmRlckJveChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3g6OlJlbmRlckJveChF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VU
eXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKC0x
KQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCkBAIC0xMjcsNyArMTI3LDcg
QEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgcwogICAgIHNldElzQm94
KCk7CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdz
KQorUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2Rl
bE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKC0xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MzAsOCArNjMwLDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlckJv
eCogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgotICAgIFJlbmRlckJveChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
QmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQm94KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94KEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3goRG9jdW1lbnQmLCBS
ZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3Vz
cGVuZEFuaW1hdAogICAgIGxheWVyKCktPmJhY2tpbmcoKS0+c3VzcGVuZEFuaW1hdGlvbnModGlt
ZSk7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVt
ZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlw
ZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9k
ZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVG
bGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckJveE1vZGVsT2JqZWN0Rmxh
ZykKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFz
ZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJv
eE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFz
ZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChk
b2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9i
amVjdEZsYWcpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw4
ICsyMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlv
bigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOwotICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KERv
Y3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKICAgICB2b2lkIHdpbGxC
ZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5k
ZXJCdXR0b246OlJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQnV0dG9uOjpSZW5kZXJC
dXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9idXR0b25UZXh0KDApCiAgICAgLCBtX2lubmVyKDApCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogLy8gdG8gZGF0ZSBhcyB0aGUgYnV0dG9u
IGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGli
bGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyQnV0dG9uKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJC
dXR0b24oKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGZvcm1Db250cm9sRWxlbWVu
dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKFMKICAgICAvLyBjbG9iYmVy
aW5nIHdpZHRoIHZhcmlhbnRzIGFuZCBzaHJpbmstdG8tZml0IGNoYW5nZXMsIHNpbmNlIHdlIHdv
bid0IHJlY29tYmluZSB3aGVuCiAgICAgLy8gdGhlIGZvbnQgZG9lc24ndCBjaGFuZ2UuCiAgICAg
aWYgKCFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+Zm9udENhc2NhZGUoKSAhPSBzdHlsZSgpLmZvbnRD
YXNjYWRlKCkpCi0gICAgICAgIG1fY29tYmluZUZvbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9u
ZSgmc3R5bGUoKSk7CisgICAgICAgIG1fY29tYmluZUZvbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZVB0cihzdHlsZSgpKTsKIAogICAgIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYs
IG9sZFN0eWxlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX29yZGluYWxJdGVyYXRpb247CiB9OwogCi1SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQog
ewogICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gQWxsIG9mIG91ciBjaGlsZHJlbiBt
dXN0IGJlIGJsb2NrLWxldmVsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgRmxleEJveEl0ZXJhdG9yOwog
CiBjbGFzcyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3goKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0
YWlsc01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJEZXRhaWxz
TWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRGV0YWlsc01hcmtl
cjo6UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRldGFpbHNNYXJrZXIuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckRldGFpbHNNYXJrZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJEZXRhaWxz
TWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYsIFJlbmRl
clN0eWxlJiYpOwogICAgIERldGFpbHNNYXJrZXJDb250cm9sJiBlbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc01hcmtlckNvbnRyb2wmPihub2RlRm9yTm9uQW5vbnlt
b3VzKCkpOyB9CiAKICAgICBlbnVtIE9yaWVudGF0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIEhhc2hNYXA8Y29u
c3QgUmVuZGVyT2JqZWN0KiwgQ29udAogICAgIHJldHVybiBtYXA7CiB9CiAKLWlubGluZSBSZW5k
ZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VU
eXBlRmxhZ3MpCitpbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJO
b2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFn
cyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0KGVsZW1lbnRPckRvY3VtZW50KQog
ICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX2FuY2VzdG9yTGlu
ZUJveERpcnR5KGZhbHNlKQpAQCAtMTA0LDEyICsxMDQsMTIgQEAgaW5saW5lIFJlbmRlckVsZW1l
bnQ6OlJlbmRlckVsZW1lbnQoQ29udAogewogfQogCi1SZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1l
bnQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBi
YXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJO
b2RlJj4oZWxlbWVudCksIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewogfQogCi1S
ZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQor
UmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckVs
ZW1lbnQoc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSY+KGRvY3VtZW50KSwgV1RGTW92ZShzdHls
ZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9CkBAIC0xMTcsMjQgKzExNywyNCBAQCBSZW5kZXJFbGVt
ZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkCiBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxl
bWVudCgpCiB7CiAgICAgaWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSkgewotICAgICAgICBmb3Ig
KGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsg
YmdMYXllcjsgYmdMYXllciA9IGJnTGF5ZXItPm5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0
IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dyb3VuZExheWVycygpOyBiZ0xheWVy
OyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoU3R5bGVJbWFn
ZSogYmFja2dyb3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBi
YWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBtX3N0eWxlLT5tYXNrTGF5ZXJzKCk7
IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgZm9y
IChjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fc3R5bGUubWFza0xheWVycygpOyBtYXNr
TGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAo
U3R5bGVJbWFnZSogbWFza0ltYWdlID0gbWFza0xheWVyLT5pbWFnZSgpKQogICAgICAgICAgICAg
ICAgIG1hc2tJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlID0gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFn
ZSgpKQorICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxlLmJvcmRl
ckltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIGJvcmRlckltYWdlLT5yZW1vdmVDbGllbnQo
dGhpcyk7CiAKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUt
Pm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94
SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBtYXNr
Qm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQot
ICAgICAgICBpZiAoYXV0byBzaGFwZVZhbHVlID0gbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gc2hhcGVWYWx1ZSA9IG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQog
ICAgICAgICAgICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAg
fQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgUmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQoKQog
ICAgICAgICB2aWV3KCkudW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soKnRo
aXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRl
Rm9yKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgLy8gTWluaW1hbCBzdXBw
b3J0IGZvciBjb250ZW50IHByb3BlcnRpZXMgcmVwbGFjaW5nIGFuIGVudGlyZSBlbGVtZW50Lgog
ICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5IG9uZSBwaWVjZSBvZiBjb250ZW50
IGFuZCBpdCdzIGEgVVJMLgogICAgIC8vIE90aGVyd2lzZSBhY3RzIGFzIGlmIHdlIGRpZG4ndCBz
dXBwb3J0IHRoaXMgZmVhdHVyZS4KLSAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEg
PSBzdHlsZS0+Y29udGVudERhdGEoKTsKKyAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERh
dGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOwogICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVu
dERhdGEtPm5leHQoKSAmJiBpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpICYmICFl
bGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBk
b3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCk7CiAgICAgICAg
IGF1dG8gaW1hZ2UgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oZWxlbWVudCwgV1RGTW92
ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KCZzdHlsZUltYWdlKSk7CkBAIC0xNTks
NyArMTU5LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OgogICAg
ICAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiAgICAgfQogCi0gICAgc3dpdGNoIChzdHlsZS0+
ZGlzcGxheSgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5kaXNwbGF5KCkpIHsKICAgICBjYXNlIE5P
TkU6CiAgICAgY2FzZSBDT05URU5UUzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMTcs
NyArMjE3LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gZmlycwogICAg
IGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgcmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlckJ1dHRvbigpKSB7CiAgICAgICAgIGlmIChS
ZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sgPSByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmZp
cnN0TGluZUJsb2NrKCkpIHsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKGZpcnN0TGluZUJsb2NrLT5nZXRD
YWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5FLCBzdHlsZSkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1
ZG9TdHlsZShGSVJTVF9MSU5FLCBzdHlsZSkpOwogICAgICAgICAgICAgcmV0dXJuIGZpcnN0TGlu
ZUJsb2NrLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChGSVJTVF9M
SU5FKSwgc3R5bGUsIGZpcnN0TGluZUJsb2NrID09ICZyZW5kZXJlciA/IHN0eWxlIDogbnVsbHB0
cik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFyZW5kZXJlckZvckZpcnN0TGluZVN0eWxl
LmlzQW5vbnltb3VzKCkgJiYgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlcklubGlu
ZSgpKSB7CkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gZmlycwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkKSB7CiAgICAgICAgICAg
ICAgICAgLy8gQSBmaXJzdC1saW5lIHN0eWxlIGlzIGluIGVmZmVjdC4gQ2FjaGUgYSBmaXJzdC1s
aW5lIHN0eWxlIGZvciBvdXJzZWx2ZXMuCiAgICAgICAgICAgICAgICAgcmVuZGVyZXJGb3JGaXJz
dExpbmVTdHlsZS5zdHlsZSgpLnNldEhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkVfSU5IRVJJVEVE
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyRm9y
Rmlyc3RMaW5lU3R5bGUuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTElORV9JTkhFUklURUQs
ICZwYXJlbnRTdHlsZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKnJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklS
U1RfTElORV9JTkhFUklURUQsICZwYXJlbnRTdHlsZSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuZ2V0VW5jYWNoZWRQc2V1ZG9T
dHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoRklSU1RfTElORV9JTkhFUklURUQpLCAmcGFyZW50U3R5
bGUsIHN0eWxlKTsKICAgICAgICAgfQpAQCAtMzc5LDE0ICszNzksMTQgQEAgdm9pZCBSZW5kZXJF
bGVtZW50Ojppbml0aWFsaXplU3R5bGUoKQogCiAgICAgbV9oYXNJbml0aWFsaXplZFN0eWxlID0g
dHJ1ZTsKIAotICAgIHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS0+YmFja2dyb3Vu
ZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUtPm1hc2tM
YXllcnMoKSk7CisgICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLmJhY2tncm91
bmRMYXllcnMoKSk7CisgICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLm1hc2tM
YXllcnMoKSk7CiAKLSAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLT5ib3JkZXJJbWFn
ZSgpLmltYWdlKCkpOwotICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUtPm1hc2tCb3hJ
bWFnZSgpLmltYWdlKCkpOworICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUuYm9yZGVy
SW1hZ2UoKS5pbWFnZSgpKTsKKyAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLm1hc2tC
b3hJbWFnZSgpLmltYWdlKCkpOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgdXBkYXRl
U2hhcGVJbWFnZShudWxscHRyLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7CisgICAgdXBkYXRl
U2hhcGVJbWFnZShudWxscHRyLCBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKTsKICNlbmRpZgogCiAg
ICAgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlTmV3U3R5bGUsIG51bGxwdHIpOwpAQCAt
Mzk4LDcgKzM5OCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlKCkKICAg
ICAvLyBoYXZlIHRoZWlyIHBhcmVudCBzZXQgYmVmb3JlIGdldHRpbmcgYSBjYWxsIHRvIGluaXRp
YWxpemVTdHlsZSgpIDp8CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHls
ZURpZmZlcmVuY2UpCit2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKFJlbmRlclN0eWxlJiYg
c3R5bGUsIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaWZmZXJlbmNlKQogewogICAgIC8v
IEZJWE1FOiBTaG91bGQgY2hhbmdlIFJlbmRlclZpZXcgc28gaXQgY2FuIHVzZSBpbml0aWFsaXpl
U3R5bGUgdG9vLgogICAgIC8vIElmIHdlIGRvIHRoYXQsIHdlIGNhbiBhc3NlcnQgbV9oYXNJbml0
aWFsaXplZFN0eWxlIHVuY29uZGl0aW9uYWxseSwKQEAgLTQwOCwzNCArNDA4LDM0IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoc3RkOjp1bmlxdWUKICAgICBTdHlsZURpZmZlcmVuY2Ug
ZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUVxdWFsOwogICAgIHVuc2lnbmVkIGNvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzID0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Tm9uZTsKICAgICBpZiAobV9o
YXNJbml0aWFsaXplZFN0eWxlKQotICAgICAgICBkaWZmID0gbV9zdHlsZS0+ZGlmZigqc3R5bGUs
IGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGlmZiA9IG1fc3R5bGUuZGlm
ZihzdHlsZSwgY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpOwogCiAgICAgZGlmZiA9IHN0ZDo6
bWF4KGRpZmYsIG1pbmltYWxTdHlsZURpZmZlcmVuY2UpOwogCiAgICAgZGlmZiA9IGFkanVzdFN0
eWxlRGlmZmVyZW5jZShkaWZmLCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAKLSAgICBz
dHlsZVdpbGxDaGFuZ2UoZGlmZiwgKnN0eWxlKTsKKyAgICBzdHlsZVdpbGxDaGFuZ2UoZGlmZiwg
c3R5bGUpOwogCiAgICAgYXV0byBvbGRTdHlsZSA9IFdURk1vdmUobV9zdHlsZSk7CiAgICAgbV9z
dHlsZSA9IFdURk1vdmUoc3R5bGUpOwogCi0gICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS0+
YmFja2dyb3VuZExheWVycygpLCBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAgIHVw
ZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUtPm1hc2tMYXllcnMoKSwgbV9zdHlsZS0+bWFza0xheWVy
cygpKTsKKyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlLmJhY2tncm91bmRMYXllcnMoKSwg
bV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkpOworICAgIHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5
bGUubWFza0xheWVycygpLCBtX3N0eWxlLm1hc2tMYXllcnMoKSk7CiAKLSAgICB1cGRhdGVJbWFn
ZShvbGRTdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpLCBtX3N0eWxlLT5ib3JkZXJJbWFnZSgp
LmltYWdlKCkpOwotICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFn
ZSgpLCBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKTsKKyAgICB1cGRhdGVJbWFnZShv
bGRTdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFn
ZSgpKTsKKyAgICB1cGRhdGVJbWFnZShvbGRTdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpLCBt
X3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMp
Ci0gICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZS0+c2hhcGVPdXRzaWRlKCksIG1fc3R5bGUt
PnNoYXBlT3V0c2lkZSgpKTsKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlLnNoYXBlT3V0
c2lkZSgpLCBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKTsKICNlbmRpZgogCiAgICAgYm9vbCBkb2Vz
Tm90TmVlZExheW91dCA9ICFwYXJlbnQoKTsKIAotICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9s
ZFN0eWxlLmdldCgpKTsKKyAgICBzdHlsZURpZENoYW5nZShkaWZmLCAmb2xkU3R5bGUpOwogCiAg
ICAgLy8gVGV4dCByZW5kZXJlcnMgdXNlIHRoZWlyIHBhcmVudCBzdHlsZS4gTm90aWZ5IHRoZW0g
YWJvdXQgdGhlIGNoYW5nZS4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8
UmVuZGVyVGV4dD4oKnRoaXMpKQotICAgICAgICBjaGlsZC5zdHlsZURpZENoYW5nZShkaWZmLCBv
bGRTdHlsZS5nZXQoKSk7CisgICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hhbmdlKGRpZmYsICZvbGRT
dHlsZSk7CiAKICAgICAvLyBGSVhNRTogfHRoaXN8IG1pZ2h0IGJlIGRlc3Ryb3llZCBoZXJlLiBU
aGlzIGNhbiBjdXJyZW50bHkgaGFwcGVuIGZvciBhIFJlbmRlclRleHRGcmFnbWVudCB3aGVuCiAg
ICAgLy8gaXRzIGZpcnN0LWxldHRlciBibG9jayBnZXRzIGFuIHVwZGF0ZSBpbiBSZW5kZXJUZXh0
RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlLiBGb3IgUmVuZGVyVGV4dEZyYWdtZW50KHMpLApAQCAt
NDUyLDkgKzQ1Miw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoc3RkOjp1bmlxdWUK
ICAgICAgICAgaWYgKHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKICAgICAg
ICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAgICBlbHNl
IGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXRQb3NpdGlvbmVkTW92ZW1l
bnRPbmx5KQotICAgICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xk
U3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlv
dXQoJm9sZFN0eWxlKTsKICAgICAgICAgZWxzZSBpZiAodXBkYXRlZERpZmYgPT0gU3R5bGVEaWZm
ZXJlbmNlU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVudCkgewotICAgICAgICAg
ICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUuZ2V0KCkpOworICAg
ICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoJm9sZFN0eWxlKTsKICAg
ICAgICAgICAgIHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKICAgICAgICAg
fSBlbHNlIGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0
KQogICAgICAgICAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwpAQCAt
Nzg2LDE4ICs3ODYsMTggQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5v
bgogICAgICAgICBpZiAoaXM8UmVuZGVyRmxvd1RocmVhZD4oZWxlbWVudENoaWxkKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0
eWxlKCkuZGlzcGxheSgpKTsKKyAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIGVsZW1lbnRDaGlsZC5zdHls
ZSgpLmRpc3BsYXkoKSk7CiAgICAgICAgIGlmIChzdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkg
ewogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMo
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9t
KCZzdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS5pbmhlcml0Q29sdW1uUHJvcGVy
dGllc0Zyb20oJnN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgp
LmNvbHVtblNwYW4oKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q29sdW1uU3BhbihD
b2x1bW5TcGFuQWxsKTsKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENv
bHVtblNwYW5BbGwpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHBvc2l0
aW9uIHN0eWxlIG9mIGFub255bW91cyBibG9jayBjb250aW51YXRpb25zIGFzIHRoZXkgY2FuIGhh
dmUgcmVsYXRpdmUgb3Igc3RpY2t5IHBvc2l0aW9uIHdoZW4KICAgICAgICAgLy8gdGhleSBjb250
YWluIGJsb2NrIGRlc2NlbmRhbnRzIG9mIHJlbGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbmVkIGlu
bGluZXMuCiAgICAgICAgIGlmIChlbGVtZW50Q2hpbGQuaXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYg
ZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGVsZW1lbnRDaGlsZCkuaXNBbm9ueW1vdXNCbG9ja0NvbnRp
bnVhdGlvbigpKQotICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKGVsZW1lbnRDaGls
ZC5zdHlsZSgpLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgbmV3U3R5bGUuc2V0UG9zaXRpb24o
ZWxlbWVudENoaWxkLnN0eWxlKCkucG9zaXRpb24oKSk7CiAKICAgICAgICAgZWxlbWVudENoaWxk
LnNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKICAgICB9CkBAIC04MTQsOSArODE0LDkgQEAg
dm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgIGlmIChvbGRTdHls
ZSkgewogICAgICAgICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9yIG91ciB2aXNp
YmlsaXR5IGNoYW5nZXMsCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5n
IGNvbnRleHQncyB6LW9yZGVyIGxpc3QuCi0gICAgICAgIGJvb2wgdmlzaWJpbGl0eUNoYW5nZWQg
PSBtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUudmlzaWJpbGl0eSgpCi0gICAgICAg
ICAgICB8fCBtX3N0eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS56SW5kZXgoKQotICAgICAgICAg
ICAgfHwgbV9zdHlsZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0eWxlLmhhc0F1dG9aSW5kZXgo
KTsKKyAgICAgICAgYm9vbCB2aXNpYmlsaXR5Q2hhbmdlZCA9IG1fc3R5bGUudmlzaWJpbGl0eSgp
ICE9IG5ld1N0eWxlLnZpc2liaWxpdHkoKQorICAgICAgICAgICAgfHwgbV9zdHlsZS56SW5kZXgo
KSAhPSBuZXdTdHlsZS56SW5kZXgoKQorICAgICAgICAgICAgfHwgbV9zdHlsZS5oYXNBdXRvWklu
ZGV4KCkgIT0gbmV3U3R5bGUuaGFzQXV0b1pJbmRleCgpOwogI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAgICAgZG9j
dW1lbnQoKS5zZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CkBAIC04MzEsNyArODMxLDcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICB9CiAK
ICAgICAgICAgLy8gS2VlcCBsYXllciBoaWVyYXJjaHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRh
dGUgaWYgdmlzaWJpbGl0eSBjaGFuZ2VzLgotICAgICAgICBpZiAobV9zdHlsZS0+dmlzaWJpbGl0
eSgpICE9IG5ld1N0eWxlLnZpc2liaWxpdHkoKSkgeworICAgICAgICBpZiAobV9zdHlsZS52aXNp
YmlsaXR5KCkgIT0gbmV3U3R5bGUudmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGxheWVyID0gZW5jbG9zaW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIGlm
IChuZXdTdHlsZS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKICAgICAgICAgICAgICAgICAgICAg
bGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7CkBAIC04NDMsMTYgKzg0MywxNyBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkg
PCBtX3N0eWxlLT5vdXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoZGlmZikpKQorICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXpl
KCkgPCBtX3N0eWxlLm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVy
ZW5jZShkaWZmKSkpCiAgICAgICAgICAgICByZXBhaW50KCk7Ci0gICAgICAgIGlmIChpc0Zsb2F0
aW5nKCkgJiYgKG1fc3R5bGUtPmZsb2F0aW5nKCkgIT0gbmV3U3R5bGUuZmxvYXRpbmcoKSkpCisg
ICAgICAgIGlmIChpc0Zsb2F0aW5nKCkgJiYgbV9zdHlsZS5mbG9hdGluZygpICE9IG5ld1N0eWxl
LmZsb2F0aW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIGZsb2F0IHN0eWxl
cywgd2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCiAgICAgICAgICAgICAv
LyBmcm9tIHRoZSBmbG9hdGluZyBvYmplY3RzIGxpc3QuCiAgICAgICAgICAgICBkb3duY2FzdDxS
ZW5kZXJCb3g+KCp0aGlzKS5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2Nr
TGlzdHMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKG1f
c3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUucG9zaXRpb24oKSkpCisgICAgICAgIH0gZWxz
ZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbV9zdHlsZS5wb3NpdGlvbigpICE9IG5l
d1N0eWxlLnBvc2l0aW9uKCkpIHsKICAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIHBvc2l0
aW9uaW5nIHN0eWxlcywgd2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCiAg
ICAgICAgICAgICAvLyBmcm9tIHRoZSBwb3NpdGlvbmVkIG9iamVjdHMgbGlzdC4KICAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVk
Q2hpbGRGcm9tQmxvY2tMaXN0cygpOworICAgICAgICB9CiAKICAgICAgICAgc19hZmZlY3RzUGFy
ZW50QmxvY2sgPSBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkKICAgICAgICAgICAg
ICYmICghbmV3U3R5bGUuaXNGbG9hdGluZygpICYmICFuZXdTdHlsZS5oYXNPdXRPZkZsb3dQb3Np
dGlvbigpKQpAQCAtODc3LDcgKzg3OCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxs
Q2hhbmdlKFN0eWwKICAgICB9CiAKICAgICBib29sIG5ld1N0eWxlVXNlc0ZpeGVkQmFja2dyb3Vu
ZHMgPSBuZXdTdHlsZS5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwotICAgIGJvb2wgb2xkU3R5
bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcyA9IG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdl
KCk7CisgICAgYm9vbCBvbGRTdHlsZVVzZXNGaXhlZEJhY2tncm91bmRzID0gbV9zdHlsZS5oYXNG
aXhlZEJhY2tncm91bmRJbWFnZSgpOwogICAgIGlmIChuZXdTdHlsZVVzZXNGaXhlZEJhY2tncm91
bmRzIHx8IG9sZFN0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMpIHsKICAgICAgICAgYm9vbCByZXBh
aW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsID0gIWZyYW1lKCkuc2V0dGluZ3MoKS5maXhlZEJh
Y2tncm91bmRzUGFpbnRSZWxhdGl2ZVRvRG9jdW1lbnQoKTsKIApAQCAtODg5LDcgKzg5MCw3IEBA
IHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgICAgICAg
ICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsICYmIG5ld1N0eWxlLmhhc0VudGlyZWx5Rml4ZWRCYWNr
Z3JvdW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld1N0eWxlU2xvd1Njcm9sbCA9IGZhbHNl
OwogCi0gICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAmJiBtX3N0eWxlLT5o
YXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQorICAgICAgICAgICAgICAgIGlmIChvbGRTdHls
ZVNsb3dTY3JvbGwgJiYgbV9zdHlsZS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAg
ICAgICAgICAgICAgICAgICBvbGRTdHlsZVNsb3dTY3JvbGwgPSBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtOTg0LDE0ICs5ODUsMTQgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpz
dHlsZURpZENoYW5nZShTdHlsZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGRpZmYg
PT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxp
ZmllZExheW91dCkgewotICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdl
ZCgqdGhpcywgb2xkU3R5bGUsIG1fc3R5bGUuZ2V0KCkpOworICAgICAgICBSZW5kZXJDb3VudGVy
OjpyZW5kZXJlclN0eWxlQ2hhbmdlZCgqdGhpcywgb2xkU3R5bGUsICZtX3N0eWxlKTsKIAogICAg
ICAgICAvLyBJZiB0aGUgb2JqZWN0IGFscmVhZHkgbmVlZHMgbGF5b3V0LCB0aGVuIHNldE5lZWRz
TGF5b3V0IHdvbid0IGRvCiAgICAgICAgIC8vIGFueSB3b3JrLiBCdXQgaWYgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaGFzIGNoYW5nZWQsIHRoZW4gd2UgbWF5IG5lZWQKICAgICAgICAgLy8gdG8gbWFy
ayB0aGUgbmV3IGNvbnRhaW5pbmcgYmxvY2tzIGZvciBsYXlvdXQuIFRoZSBjaGFuZ2UgdGhhdCBj
YW4KICAgICAgICAgLy8gZGlyZWN0bHkgYWZmZWN0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRo
aXMgb2JqZWN0IGlzIGEgY2hhbmdlIHRvCiAgICAgICAgIC8vIHRoZSBwb3NpdGlvbiBzdHlsZS4K
LSAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkgJiYgb2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbV9z
dHlsZS0+cG9zaXRpb24oKSkKKyAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkgJiYgb2xkU3R5bGUt
PnBvc2l0aW9uKCkgIT0gbV9zdHlsZS5wb3NpdGlvbigpKQogICAgICAgICAgICAgbWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKIAogICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZl
cmVuY2VMYXlvdXQpCkBAIC0xMDU5LDcgKzEwNjAsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Ondp
bGxCZVJlbW92ZWRGcm9tVHJlCiAgICAgICAgIHJlbW92ZUxheWVycyhsYXllcik7CiAgICAgfQog
Ci0gICAgaWYgKG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgJiYgIWZyYW1lKCku
c2V0dGluZ3MoKS5maXhlZEJhY2tncm91bmRzUGFpbnRSZWxhdGl2ZVRvRG9jdW1lbnQoKSkKKyAg
ICBpZiAobV9zdHlsZS5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpICYmICFmcmFtZSgpLnNldHRp
bmdzKCkuZml4ZWRCYWNrZ3JvdW5kc1BhaW50UmVsYXRpdmVUb0RvY3VtZW50KCkpCiAgICAgICAg
IHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVTbG93UmVwYWludE9iamVjdCh0aGlzKTsKIAogICAg
IGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBw
dWJsaWMgUmVuZGVyT2JqZWMKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7
CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUZvcihFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgc3RhdGljIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVGb3IoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAg
Ym9vbCBoYXNJbml0aWFsaXplZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbml0aWFsaXpl
ZFN0eWxlOyB9CiAKLSAgICBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PFJlbmRlclN0eWxlJj4oKm1fc3R5bGUpOyB9CisgICAgUmVuZGVyU3R5bGUmIHN0eWxl
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJTdHlsZSY+KG1fc3R5bGUpOyB9CiAg
ICAgUmVuZGVyU3R5bGUmIGZpcnN0TGluZVN0eWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIGluaXRp
YWxpemVTdHlsZSgpOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyB3
aXRoIG1pbmltYWxTdHlsZURpZmZlcmVuY2UgPiBTdHlsZURpZmZlcmVuY2VFcXVhbCBpbmRpY2F0
ZXMgdGhhdAogICAgIC8vIG91dC1vZi1iYW5kIHN0YXRlIChlLmcuIGFuaW1hdGlvbnMpIHJlcXVp
cmVzIHRoYXQgc3R5bGVEaWRDaGFuZ2UgcHJvY2Vzc2luZwogICAgIC8vIGNvbnRpbnVlIGV2ZW4g
aWYgdGhlIHN0eWxlIGlzbid0IGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IHN0eWxlLgotICAg
IHZvaWQgc2V0U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgU3R5bGVEaWZmZXJl
bmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2UgPSBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CisgICAg
dm9pZCBzZXRTdHlsZShSZW5kZXJTdHlsZSYmLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxl
RGlmZmVyZW5jZSA9IFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIAogICAgIC8vIFRoZSBwc2V1ZG8g
ZWxlbWVudCBzdHlsZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVkLiAgVXNlIHRoZSBjYWNoZWQg
bWV0aG9kIGlmIHRoZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJlc3BlY3QKICAgICAvLyBhbnkg
cHNldWRvIGNsYXNzZXMgKGFuZCB0aGVyZWZvcmUgaGFzIG5vIGNvbmNlcHQgb2YgY2hhbmdpbmcg
c3RhdGUpLgpAQCAtMTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFVwZGF0ZXMgb25s
eSB0aGUgbG9jYWwgc3R5bGUgcHRyIG9mIHRoZSBvYmplY3QuIERvZXMgbm90IHVwZGF0ZSB0aGUg
c3RhdGUgb2YgdGhlIG9iamVjdCwKICAgICAvLyBhbmQgc28gb25seSBzaG91bGQgYmUgY2FsbGVk
IHdoZW4gdGhlIHN0eWxlIGlzIGtub3duIG5vdCB0byBoYXZlIGNoYW5nZWQgKG9yIGZyb20gc2V0
U3R5bGUpLgotICAgIHZvaWQgc2V0U3R5bGVJbnRlcm5hbChzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKSB7IG1fc3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsgfQorICAgIHZvaWQgc2V0
U3R5bGVJbnRlcm5hbChSZW5kZXJTdHlsZSYmIHN0eWxlKSB7IG1fc3R5bGUgPSBXVEZNb3ZlKHN0
eWxlKTsgfQogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFuZCBuZXcg
Ym91bmRzIGFyZSBkaWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91bmRzIGFu
ZCBuZXdPdXRsaW5lQm94IGlmIHRoZXkgYXJlIGtub3duLgogICAgIGJvb2wgcmVwYWludEFmdGVy
TGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRP
dXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSBudWxscHRyLCBjb25z
dCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gbnVsbHB0cik7CkBAIC0yMjMsOCArMjIz
LDggQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHR5cGVkZWYgdW5zaWduZWQgQmFzZVR5cGVGbGFn
czsKIAotICAgIFJlbmRlckVsZW1lbnQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIEJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckVsZW1lbnQoRG9jdW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJFbGVt
ZW50KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJF
bGVtZW50KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKICAgICBi
b29sIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJlZSgpIGNvbnN0OwogCkBAIC0yNzIsNyAr
MjcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlT3V0bGluZUF1dG9BbmNlc3Rvcihi
b29sIGhhc091dGxpbmVBdXRvKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJFbGVtZW50
KENvbnRhaW5lck5vZGUmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZs
YWdzKTsKKyAgICBSZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmLCBSZW5kZXJTdHlsZSYmLCBC
YXNlVHlwZUZsYWdzKTsKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lk
IG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIGdlbmVyYXRpbmdOb2Rl
KCkgY29uc3QgPSBkZWxldGU7CkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKICAgICBSZW5k
ZXJPYmplY3QqIG1fZmlyc3RDaGlsZDsKICAgICBSZW5kZXJPYmplY3QqIG1fbGFzdENoaWxkOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOworICAgIFJlbmRlclN0
eWxlIG1fc3R5bGU7CiAKICAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGhhY2suCiAgICAg
Ly8gU3RvcmUgc3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAg
c3RhdGljIGNvbnN0IENvbG9yJiB1bmF2YWlsYWJsZVBsdWdpbkJvcgogICAgIHJldHVybiBzdGFu
ZGFyZDsKIH0KIAotUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1M
RnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJXaWRnZXQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2lzUGx1Z2luVW5h
dmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVz
c2VkKGZhbHNlKQpAQCAtMTExLDcgKzExMSw3IEBAIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp+UmVu
ZGVyRW1iZWRkZWRPYmoKICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlRW1iZWRkZWRPYmpl
Y3RUb1VwZGF0ZSgqdGhpcyk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbWJlZGRlZE9iamVjdD4g
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYg
YXBwbGV0LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0
KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAg
YXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckVtYmVkZGVkT2JqZWN0PihhcHBs
ZXQsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZW5kZXJlci0+c2V0SW5saW5lKHRydWUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgY2xhc3MgVGV4
dFJ1bjsKIC8vIEZvciBleGFtcGxlLCA8ZW1iZWQgc3JjPSJmb28uaHRtbCI+IGRvZXMgbm90IGlu
dm9rZSBhIHBsdWctaW4uCiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdCA6IHB1YmxpYyBSZW5k
ZXJXaWRnZXQgewogcHVibGljOgotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93
bmVyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckVt
YmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRy
PFJlbmRlckVtYmVkZGVkT2JqZWN0PiBjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJl
bmRlckVtYmVkZGVkT2JqZWN0PiBjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKIAogICAgIGVudW0gUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gewog
ICAgICAgICBQbHVnaW5NaXNzaW5nLApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
UmVuZGVyRmllbGRzZXQ6OlJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGaWVsZHNldDo6
UmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MRmllbGRTZXRF
bGVtZW50OwogCiBjbGFzcyBSZW5kZXJGaWVsZHNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGaWVsZHNldChIVE1M
RmllbGRTZXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBlbnVtIEZpbmRMZWdlbmRP
cHRpb24geyBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93LCBJbmNsdWRlRmxvYXRpbmdPck91dE9m
RmxvdyB9OwogICAgIFJlbmRlckJveCogZmluZExlZ2VuZChGaW5kTGVnZW5kT3B0aW9uID0gSWdu
b3JlRmxvYXRpbmdPck91dE9mRmxvdykgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgaW50IGRlZmF1bHRX
aWR0aE51bUNoYXJzID0gMzg7CiAjZW5kaWYKIGNvbnN0IGludCBidXR0b25TaGFkb3dIZWlnaHQg
PSAyOwogCi1SZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wo
SFRNTElucHV0RWxlbWVudCYgaW5wdXQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRN
TElucHV0RWxlbWVudCYgaW5wdXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coaW5wdXQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jYW5SZWNlaXZlRHJvcHBl
ZEZpbGVzKGlucHV0LmNhblJlY2VpdmVEcm9wcGVkRmlsZXMoKSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
KEhUTUxJbnB1dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAgICAgdmlydHVhbCB+UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woKTsKIAogICAgIFN0cmluZyBi
dXR0b25WYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHN0cnVjdCBSZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uIHsKIH07CiAKIAotUmVuZGVy
RmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxl
eGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJh
dG9yKCp0aGlzKQogICAgICwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUoLTEp
CkBAIC03NCw3ICs3NCw3IEBAIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChF
bGUKICAgICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4g
bXVzdCBiZSBibG9jay1sZXZlbC4KIH0KIAotUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhp
YmxlQm94KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwg
V1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0b3IoKnRoaXMpCiAgICAgLCBt
X251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
ckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJG
bGV4aWJsZUJveChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAg
UmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAg
UmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJGbGV4aWJsZUJveCgpOwogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1Ro
cmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3ByZXZpb3VzUmVnaW9uQ291bnQoMCkKICAgICAsIG1f
YXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zQ291bnQoMCkKQEAgLTY5LDE4ICs2OSwxOCBAQCBSZW5k
ZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtCiAgICAgc2V0Rmxvd1RocmVhZFN0
YXRlKEluc2lkZU91dE9mRmxvd1RocmVhZCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSkKK1JlbmRlclN0eWxlIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7CiAgICAgYXV0byBuZXdTdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20ocGFy
ZW50U3R5bGUpOwotICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBuZXdTdHls
ZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7Ci0gICAgbmV3U3R5bGUtPnNldFpJbmRl
eCgwKTsKLSAgICBuZXdTdHlsZS0+c2V0TGVmdChMZW5ndGgoMCwgRml4ZWQpKTsKLSAgICBuZXdT
dHlsZS0+c2V0VG9wKExlbmd0aCgwLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRXaWR0aChM
ZW5ndGgoMTAwLCBQZXJjZW50KSk7Ci0gICAgbmV3U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAw
LCBQZXJjZW50KSk7Ci0gICAgbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIp
OworICAgIG5ld1N0eWxlLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKKyAgICBuZXdTdHlsZS5z
ZXREaXNwbGF5KEJMT0NLKTsKKyAgICBuZXdTdHlsZS5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0
aW9uKTsKKyAgICBuZXdTdHlsZS5zZXRaSW5kZXgoMCk7CisgICAgbmV3U3R5bGUuc2V0TGVmdChM
ZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS5zZXRUb3AoTGVuZ3RoKDAsIEZpeGVkKSk7
CisgICAgbmV3U3R5bGUuc2V0V2lkdGgoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIG5ld1N0
eWxlLnNldEhlaWdodChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUuZm9udENh
c2NhZGUoKS51cGRhdGUobnVsbHB0cik7CiAgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgJKHJldmlzaW9u
IDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3
aGVuIGEgZGVzY2VuZGFudCBib3gncyBsYXlvdXQgaXMgZmluaXNoZWQgYW5kIGl0IGhhcyBiZWVu
IHBvc2l0aW9uZWQgd2l0aGluIGl0cyBjb250YWluZXIuCiAgICAgdmlydHVhbCB2b2lkIGZsb3dU
aHJlYWREZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSB7IH0KIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVGbG93VGhy
ZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOwogCkBAIC0yNDAsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzTGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5k
ZXJGbG93VGhyZWFkKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgUmVu
ZGVyRmxvd1RocmVhZCogbG9jYXRlRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRmxvd1RocmVhZCo+KHRoaXMpOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkocmV2aXNpb24g
MTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiBmcmFtZSwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1M
RnJhbWVFbGVtZW50JiBmcmFtZSwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZy
YW1lQmFzZShmcmFtZSwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgY2xhc3MgSFRNTEZyYW1lRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRnJhbWUgZmluYWwgOiBw
dWJsaWMgUmVuZGVyRnJhbWVCYXNlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZShIVE1MRnJh
bWVFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJh
bWUoSFRNTEZyYW1lRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgSFRNTEZyYW1lRWxl
bWVudCYgZnJhbWVFbGVtZW50KCkgY29uc3Q7CiAgICAgRnJhbWVFZGdlSW5mbyBlZGdlSW5mbygp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UoSFRNTEZy
YW1lRWxlbWVudEJhc2UmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFz
ZSYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVCYXNlLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBjbGFzcyBSZW5kZXJWaWV3OwogLy8gQmFzZSBjbGFzcyBmb3IgUmVuZGVyRnJhbWUgYW5k
IFJlbmRlcklGcmFtZQogY2xhc3MgUmVuZGVyRnJhbWVCYXNlIDogcHVibGljIFJlbmRlcldpZGdl
dCB7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNl
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWVCYXNlKEhU
TUxGcmFtZUVsZW1lbnRCYXNlJiwgUmVuZGVyU3R5bGUmJik7CiAKIHB1YmxpYzoKICAgICBGcmFt
ZVZpZXcqIGNoaWxkVmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oUmVu
ZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFt
ZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVT
ZXRFbGVtZW50JiBmcmFtZVNldCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJv
eChmcmFtZVNldCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2lzUmVzaXppbmcoZmFsc2Up
CiAgICAgLCBtX2lzQ2hpbGRSZXNpemluZyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJGcmFtZVNldCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZVNldChI
VE1MRnJhbWVTZXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
RnJhbWVTZXQoKTsKIAogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQmIGZyYW1lU2V0RWxlbWVudCgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyIGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVl
blBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3JlZW4mIG93bmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcihSZW5kZXJG
dWxsU2NyZWVuJiBvd25lciwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJC
bG9ja0Zsb3cob3duZXIuZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpCiAgICAgICAgICwgbV9v
d25lcihvd25lcikgCiAgICAgewpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlckZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlcjo6d2lsbEJlCiAgICAgUmVuZGVyQmxvY2tGbG93Ojp3aWxsQmVEZXN0cm95
ZWQoKTsKIH0KIAotUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYg
ZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGdWxs
U2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1fcGxhY2Vob2xkZXIoMCkKIHsKQEAgLTc4LDI4ICs3OCwyOCBAQCB2b2lkIFJl
bmRlckZ1bGxTY3JlZW46OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyRmxleGlibGVCb3g6
OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQorc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZ1
bGxTY3JlZW5TdHlsZSgpCiB7Ci0gICAgYXV0byBmdWxsc2NyZWVuU3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCk7CisgICAgYXV0byBmdWxsc2NyZWVuU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCk7CiAKICAgICAvLyBDcmVhdGUgYSBzdGFja2luZyBjb250ZXh0Ogot
ICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0WkluZGV4KElOVF9NQVgpOworICAgIGZ1bGxzY3JlZW5T
dHlsZS5zZXRaSW5kZXgoSU5UX01BWCk7CiAKLSAgICBmdWxsc2NyZWVuU3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbih7IH0pOwotICAgIGZ1bGxzY3JlZW5TdHlsZS0+Zm9udENhc2NhZGUoKS51cGRh
dGUobnVsbHB0cik7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldEZvbnREZXNjcmlwdGlvbih7IH0p
OworICAgIGZ1bGxzY3JlZW5TdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRyKTsKIAot
ICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0RGlzcGxheShGTEVYKTsKLSAgICBmdWxsc2NyZWVuU3R5
bGUtPnNldEp1c3RpZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uQ2VudGVyKTsKLSAg
ICBmdWxsc2NyZWVuU3R5bGUtPnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50
ZXIpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0RmxleERpcmVjdGlvbihGbG93Q29sdW1uKTsK
KyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RGlzcGxheShGTEVYKTsKKyAgICBmdWxsc2NyZWVuU3R5
bGUuc2V0SnVzdGlmeUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb25DZW50ZXIpOworICAg
IGZ1bGxzY3JlZW5TdHlsZS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQ2VudGVy
KTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RmxleERpcmVjdGlvbihGbG93Q29sdW1uKTsKICAg
ICAKLSAgICBmdWxsc2NyZWVuU3R5bGUtPnNldFBvc2l0aW9uKEZpeGVkUG9zaXRpb24pOwotICAg
IGZ1bGxzY3JlZW5TdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7Ci0gICAg
ZnVsbHNjcmVlblN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7Ci0gICAg
ZnVsbHNjcmVlblN0eWxlLT5zZXRMZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOwotICAg
IGZ1bGxzY3JlZW5TdHlsZS0+c2V0VG9wKExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOworICAg
IGZ1bGxzY3JlZW5TdHlsZS5zZXRQb3NpdGlvbihGaXhlZFBvc2l0aW9uKTsKKyAgICBmdWxsc2Ny
ZWVuU3R5bGUuc2V0V2lkdGgoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7CisgICAgZnVsbHNjcmVl
blN0eWxlLnNldEhlaWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBmdWxsc2NyZWVu
U3R5bGUuc2V0TGVmdChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICBmdWxsc2NyZWVu
U3R5bGUuc2V0VG9wKExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgIAotICAgIGZ1bGxz
Y3JlZW5TdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFjayk7CisgICAgZnVsbHNj
cmVlblN0eWxlLnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgcmV0dXJu
IGZ1bGxzY3JlZW5TdHlsZTsKIH0KQEAgLTE5MywxMSArMTkzLDExIEBAIHZvaWQgUmVuZGVyRnVs
bFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5n
dGgoZnJhbWVSZWN0LmhlaWdodCgpLCBGaXhlZCkpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXIp
IHsKLSAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U3R5bGUoV1RGTW92ZShzdHlsZSkpOworICAg
ICAgICBtX3BsYWNlaG9sZGVyLT5zZXRTdHlsZShXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wbGFjZWhvbGRlciA9IG5ldyBSZW5kZXJGdWxsU2NyZWVu
UGxhY2Vob2xkZXIoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKKyAgICBtX3BsYWNlaG9sZGVyID0g
bmV3IFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigqdGhpcywgV1RGTW92ZSgqc3R5bGUpKTsK
ICAgICBtX3BsYWNlaG9sZGVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBpZiAocGFyZW50KCkp
IHsKICAgICAgICAgcGFyZW50KCktPmFkZENoaWxkKG1fcGxhY2Vob2xkZXIsIHRoaXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCShyZXZpc2lv
biAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyRnVsbFNjcmVlbiI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZQogICAgICAgICBmcmVl
U3BhY2VGb3JSb3dzID0gZnJlZVNwYWNlOwogfQogCi1SZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1f
b3JkZXJJdGVyYXRvcigqdGhpcykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBlbnVtIEdyaWRBeGlz
UG9zaXRpb24ge0dyaWRBeGlzU3RhcnQsIEdyCiAKIGNsYXNzIFJlbmRlckdyaWQgZmluYWwgOiBw
dWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckdyaWQoKTsKIAogICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENh
bnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5k
ZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySFRNTENhbnZhczo6
UmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBl
bGVtZW50LnNpemUoKSkKIHsKICAgICAvLyBBY3R1YWwgc2l6ZSBpcyBub3Qga25vd24geWV0LCBy
ZXBvcnQgdGhlIGRlZmF1bHQgaW50cmluc2ljIHNpemUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckhU
TUxDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJl
bmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAKICAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCgpIGNvbnN0
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAkocmV2
aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAotUmVuZGVySUZyYW1lOjpSZW5kZXJJ
RnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFzZShl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySUZyYW1lLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBSZW5kZXJWaWV3OwogCiBjbGFzcyBSZW5kZXJJRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyRnJhbWVCYXNlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJRnJhbWUoSFRN
TElGcmFtZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIEhUTUxJRnJhbWVFbGVtZW50
JiBpZnJhbWVFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cygKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxl
SW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKK1JlbmRlckltYWdlOjpS
ZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUlt
YWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAg
OiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAg
ICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dChm
YWxzZSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVu
dCYgZWxlbWVuCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBkb3duY2FzdDxIVE1MSW1h
Z2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwogfQogCi1SZW5kZXJJbWFn
ZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQorUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFn
ZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkg
OiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRz
VG9TZXRTaXplRm9yQWx0VGV4dChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBlbnVtIElt
YWdlU2l6ZUNoYW5nZVR5cGUgewogCiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5kZXJS
ZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2UoRWxlbWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgPSAx
LjBmKTsKLSAgICBSZW5kZXJJbWFnZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIFN0eWxlSW1hZ2UqID0gbnVsbHB0cik7CisgICAgUmVuZGVySW1hZ2UoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYsIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgPSAxLjBm
KTsKKyAgICBSZW5kZXJJbWFnZShEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFN0eWxlSW1hZ2Uq
ID0gbnVsbHB0cik7CiAgICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKIAogICAgIFJlbmRlcklt
YWdlUmVzb3VyY2UmIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94TW9k
ZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlcklubGluZUZsYWcpCiB7CiAg
ICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiB9CiAKLVJlbmRlcklubGluZTo6UmVuZGVySW5s
aW5lKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlcklubGluZTo6UmVuZGVySW5saW5lKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEZN
b3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGlsZHJlbklubGluZSh0
cnVlKTsKQEAgLTE1OCw4ICsxNTgsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZU9mQW5vbnlt
b3VzQmxvY2tDCiAgICAgICAgIFJlbmRlcklubGluZSogY29udGludWF0aW9uID0gYmxvY2suaW5s
aW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwogICAgICAgICBpZiAob2xkU3R5bGUtPmhhc0luRmxv
d1Bvc2l0aW9uKCkgJiYgaW5GbG93UG9zaXRpb25lZElubGluZUFuY2VzdG9yKGNvbnRpbnVhdGlv
bikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJmJsb2NrLnN0eWxlKCks
IEJMT0NLKTsKLSAgICAgICAgYmxvY2tTdHlsZS0+c2V0UG9zaXRpb24obmV3U3R5bGUtPnBvc2l0
aW9uKCkpOworICAgICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShibG9jay5zdHlsZSgpLCBCTE9DSyk7CisgICAgICAgIGJs
b2NrU3R5bGUuc2V0UG9zaXRpb24obmV3U3R5bGUtPnBvc2l0aW9uKCkpOwogICAgICAgICBibG9j
ay5zZXRTdHlsZShXVEZNb3ZlKGJsb2NrU3R5bGUpKTsKICAgICB9CiB9CkBAIC0xOTMsNyArMTkz
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogICAgICAgICBm
b3IgKFJlbmRlcklubGluZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJy
Q29udCA9IGN1cnJDb250LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKICAgICAgICAg
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51YXRp
b24oKTsKICAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24obnVsbHB0cik7Ci0g
ICAgICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKCZuZXdTdHls
ZSkpOworICAgICAgICAgICAgY3VyckNvbnQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShu
ZXdTdHlsZSkpOwogICAgICAgICAgICAgY3VyckNvbnQtPnNldENvbnRpbnVhdGlvbihuZXh0Q29u
dCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gSWYgYW4gaW5saW5lJ3MgaW4tZmxvdyBwb3NpdGlv
bmluZyBoYXMgY2hhbmdlZCBhbmQgaXQgaXMgcGFydCBvZiBhbiBhY3RpdmUgY29udGludWF0aW9u
IGFzIGEgZGVzY2VuZGFudCBvZiBhbiBhbm9ueW1vdXMgY29udGFpbmluZyBibG9jaywKQEAgLTMz
MSwxMiArMzMxLDEyIEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkK
ICAgICAgICAgLy8gaW5saW5lIGludG8gY29udGludWF0aW9ucy4gIFRoaXMgaW52b2x2ZXMgY3Jl
YXRpbmcgYW4gYW5vbnltb3VzIGJsb2NrIGJveCB0byBob2xkCiAgICAgICAgIC8vIHxuZXdDaGls
ZHwuICBXZSB0aGVuIG1ha2UgdGhhdCBibG9jayBib3ggYSBjb250aW51YXRpb24gb2YgdGhpcyBp
bmxpbmUuICBXZSB0YWtlIGFsbCBvZgogICAgICAgICAvLyB0aGUgY2hpbGRyZW4gYWZ0ZXIgfGJl
Zm9yZUNoaWxkfCBhbmQgcHV0IHRoZW0gaW4gYSBjbG9uZSBvZiB0aGlzIG9iamVjdC4KLSAgICAg
ICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KCZzdHlsZSgpLCBCTE9DSyk7CisgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSyk7CiAg
ICAgICAgIAogICAgICAgICAvLyBJZiBpbnNpZGUgYW4gaW5saW5lIGFmZmVjdGVkIGJ5IGluLWZs
b3cgcG9zaXRpb25pbmcgdGhlIGJsb2NrIG5lZWRzIHRvIGJlIGFmZmVjdGVkIGJ5IGl0IHRvby4K
ICAgICAgICAgLy8gR2l2aW5nIHRoZSBibG9jayBhIGxheWVyIGxpa2UgdGhpcyBhbGxvd3MgaXQg
dG8gY29sbGVjdCB0aGUgeC95IG9mZnNldHMgZnJvbSBpbmxpbmUgcGFyZW50cyBsYXRlci4KICAg
ICAgICAgaWYgKGF1dG8gcG9zaXRpb25lZEFuY2VzdG9yID0gaW5GbG93UG9zaXRpb25lZElubGlu
ZUFuY2VzdG9yKHRoaXMpKQotICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKHBvc2l0
aW9uZWRBbmNlc3Rvci0+c3R5bGUoKS5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgIG5ld1N0eWxl
LnNldFBvc2l0aW9uKHBvc2l0aW9uZWRBbmNlc3Rvci0+c3R5bGUoKS5wb3NpdGlvbigpKTsKIAog
ICAgICAgICBSZW5kZXJCbG9jayogbmV3Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVu
dCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxl
KCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3Jp
bmdDb250aQogIAogICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBubyBzdWl0YWJsZSBleGlz
dGluZyBhbm9ueW1vdXMgaW5saW5lLWJsb2NrLiBDcmVhdGUgYSBuZXcgb25lLgotICAgICAgICAg
ICAgUmVuZGVyQmxvY2tGbG93KiBhbm9ueW1vdXNJbmxpbmVCbG9jayA9IG5ldyBSZW5kZXJCbG9j
a0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoJnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAgICAgICAgICAgUmVuZGVyQmxvY2tG
bG93KiBhbm9ueW1vdXNJbmxpbmVCbG9jayA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwg
SU5MSU5FX0JMT0NLKSk7CiAgICAgICAgICAgICBhbm9ueW1vdXNJbmxpbmVCbG9jay0+aW5pdGlh
bGl6ZVN0eWxlKCk7CiAgICAgCiAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRk
Q2hpbGQoYW5vbnltb3VzSW5saW5lQmxvY2ssIGJlZm9yZUNoaWxkKTsKQEAgLTQxMyw3ICs0MTMs
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAKIFJlbmRlclB0
cjxSZW5kZXJJbmxpbmU+IFJlbmRlcklubGluZTo6Y2xvbmUoKSBjb25zdAogewotICAgIFJlbmRl
clB0cjxSZW5kZXJJbmxpbmU+IGNsb25lSW5saW5lID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5s
aW5lPigqZWxlbWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0eWxlKCkpKTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVySW5saW5lPiBjbG9uZUlubGluZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklu
bGluZT4oKmVsZW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKCkpKTsKICAgICBjbG9u
ZUlubGluZS0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgY2xvbmVJbmxpbmUtPnNldEZsb3dUaHJl
YWRTdGF0ZShmbG93VGhyZWFkU3RhdGUoKSk7CiAgICAgY2xvbmVJbmxpbmUtPnNldEhhc091dGxp
bmVBdXRvQW5jZXN0b3IoaGFzT3V0bGluZUF1dG9BbmNlc3RvcigpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OCArMzQsOCBAQCBjbGFzcyBSZW5kZXJSZWdpb247CiAKIGNsYXNzIFJlbmRlcklubGluZSA6IHB1
YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW5saW5lKEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJJbmxpbmUo
RG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJbmxp
bmUoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlcklubGluZShEb2N1bWVudCYs
IFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0No
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjc5NywxMSArNjc5NywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxD
b3JuZXJTdHlsCiAgICAgfQogCiAgICAgaWYgKCFtX3Njcm9sbENvcm5lcikgewotICAgICAgICBt
X3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRl
cmVyKCkuZG9jdW1lbnQoKSwgV1RGTW92ZShjb3JuZXIpKTsKKyAgICAgICAgbV9zY3JvbGxDb3Ju
ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlcigpLmRvY3Vt
ZW50KCksIFdURk1vdmUoKmNvcm5lcikpOwogICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0UGFy
ZW50KCZyZW5kZXJlcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPmluaXRpYWxpemVTdHls
ZSgpOwogICAgIH0gZWxzZQotICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92
ZShjb3JuZXIpKTsKKyAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUoKmNv
cm5lcikpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZXNpemVyU3R5bGUoKQpAQCAt
NjgxNSwxMSArNjgxNSwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZXNpemVyU3R5bGUo
KQogICAgIH0KIAogICAgIGlmICghbV9yZXNpemVyKSB7Ci0gICAgICAgIG1fcmVzaXplciA9IGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwg
V1RGTW92ZShyZXNpemVyKSk7CisgICAgICAgIG1fcmVzaXplciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgV1RGTW92ZSgqcmVzaXpl
cikpOwogICAgICAgICBtX3Jlc2l6ZXItPnNldFBhcmVudCgmcmVuZGVyZXIoKSk7CiAgICAgICAg
IG1fcmVzaXplci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcmVz
aXplci0+c2V0U3R5bGUoV1RGTW92ZShyZXNpemVyKSk7CisgICAgICAgIG1fcmVzaXplci0+c2V0
U3R5bGUoV1RGTW92ZSgqcmVzaXplcikpOwogfQogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6
OnJlZmxlY3Rpb25MYXllcigpIGNvbnN0CkBAIC02ODQ0LDEwICs2ODQ0LDEwIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnJlbW92ZVJlZmxlY3Rpb24oKQogICAgIG1fcmVmbGVjdGlvbiA9IG51bGxwdHI7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVJl
ZmxlY3Rpb25TdHlsZSgpCitSZW5kZXJTdHlsZSBSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlv
blN0eWxlKCkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwot
ICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbSgmcmVuZGVyZXIoKS5zdHlsZSgpKTsKKyAgICBuZXdT
dHlsZS5pbmhlcml0RnJvbSgmcmVuZGVyZXIoKS5zdHlsZSgpKTsKICAgICAKICAgICAvLyBNYXAg
aW4gb3VyIHRyYW5zZm9ybS4KICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9ybTsKQEAg
LTY4NzMsMTAgKzY4NzMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJM
YXllcgogICAgICAgICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3Qo
KS0+b2Zmc2V0KCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbmV3U3R5bGUtPnNldFRyYW5z
Zm9ybSh0cmFuc2Zvcm0pOworICAgIG5ld1N0eWxlLnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwog
CiAgICAgLy8gTWFwIGluIG91ciBtYXNrLgotICAgIG5ld1N0eWxlLT5zZXRNYXNrQm94SW1hZ2Uo
cmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+bWFzaygpKTsKKyAgICBuZXdTdHlsZS5z
ZXRNYXNrQm94SW1hZ2UocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+bWFzaygpKTsK
IAogICAgIHJldHVybiBuZXdTdHlsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDcgKzkyNCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjcmVhdGVSZWZsZWN0aW9uKCk7CiAgICAgdm9pZCByZW1vdmVSZWZsZWN0
aW9uKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVJlZmxlY3Rp
b25TdHlsZSgpOworICAgIFJlbmRlclN0eWxlIGNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpOwogICAg
IGJvb2wgcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWludGlu
Z0luc2lkZVJlZmxlY3Rpb247IH0KICAgICB2b2lkIHNldFBhaW50aW5nSW5zaWRlUmVmbGVjdGlv
bihib29sIGIpIHsgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24gPSBiOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIGJv
b2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c19oYWRMYXllciAKIGJvb2wgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdDo6c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKIGJvb2wgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOwogCi1SZW5kZXJMYXllck1v
ZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFn
cykKK1JlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZs
YWdzKQogICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5
cGVGbGFncyB8IFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnKQogewogfQogCi1SZW5kZXJMYXll
ck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlw
ZUZsYWdzKQorUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFz
ZVR5cGVGbGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
LCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckxheWVyTW9kZWxP
YmplY3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxh
Z3MpOwotICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7
CiAKICAgICB2b2lkIGNyZWF0ZUxheWVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVMaW5lQm94ZXMoY29uc3QgUmVuZGVyCiAg
ICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLmVuc3VyZUxp
bmVCb3hlcygpOwogfQogCi1SZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayhIVE1MRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSksIDApCiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIobnVsbHB0cikKICAgICAsIG1f
Y2FjaGVkTGluZUhlaWdodChpbnZhbGlkTGluZUhlaWdodCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQCBjbGFzcyBQb3NpdGlvbjsKIAogY2xhc3MgUmVuZGVyTGluZUJyZWFrIGZp
bmFsIDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJM
aW5lQnJlYWsoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJMaW5lQnJlYWsoKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtl
ZXAgcmVuZGVyIHRyZWUgZHVtcCBiYXNlZCB0ZXN0IHJlc3VsdHMgdW5jaGFuZ2VkLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gMTk5
OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGNvbnN0IGludCBkZWZhdWx0U2l6ZSA9IDQ7CiAv
LyB3aWRnZXQsIGJ1dCBJJ20gbm90IHN1cmUgdGhpcyBpcyByaWdodCBmb3IgdGhlIG5ldyBjb250
cm9sLgogY29uc3QgaW50IGJhc2VsaW5lQWRqdXN0bWVudCA9IDc7CiAKLVJlbmRlckxpc3RCb3g6
OlJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KEhUTUxT
ZWxlY3RFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9vcHRpb25zQ2hhbmdl
ZCh0cnVlKQogICAgICwgbV9zY3JvbGxUb1JldmVhbFNlbGVjdGlvbkFmdGVyTGF5b3V0KGZhbHNl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCShyZXZpc2lv
biAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJMaXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVi
bGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0Qm94KEhUTUxTZWxl
Y3RFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlz
dEJveChIVE1MU2VsZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJl
bmRlckxpc3RCb3goKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJMaXN0SXRlbTo6
UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0SXRlbShFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9tYXJrZXIobnVsbHB0cikKICAgICAsIG1faGFzRXhw
bGljaXRWYWx1ZShmYWxzZSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6
c3R5bGVEaWRDaGFuZ2UoU3R5bAogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CiAgICAgLy8gVGhlIG1hcmtlciBhbHdheXMgaW5oZXJpdHMgZnJvbSB0aGUgbGlzdCBp
dGVtLCByZWdhcmRsZXNzIG9mIHdoZXJlIGl0IG1pZ2h0IGVuZAogICAgIC8vIHVwIChlLmcuLCBp
biBzb21lIGRlZXBseSBuZXN0ZWQgbGluZSBib3gpLiBTZWUgQ1NTMyBzcGVjLgotICAgIG5ld1N0
eWxlLT5pbmhlcml0RnJvbSgmc3R5bGUoKSk7CisgICAgbmV3U3R5bGUuaW5oZXJpdEZyb20oJnN0
eWxlKCkpOwogICAgIGlmICghbV9tYXJrZXIpIHsKICAgICAgICAgbV9tYXJrZXIgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJMaXN0TWFya2VyPigqdGhpcywgV1RGTW92ZShuZXdTdHlsZSkpLmxlYWtQ
dHIoKTsKICAgICAgICAgbV9tYXJrZXItPmluaXRpYWxpemVTdHlsZSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHJldmlzaW9uIDE5OTk3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJrZXI7CiAKIGNsYXNzIFJlbmRl
ckxpc3RJdGVtIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlckxpc3RJdGVtKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJMaXN0SXRlbSgpOwogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHJldmlzaW9u
IDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTExNyw3ICsxMTE3LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJU
ZXh0KEVMaXN0U3R5bGVUeXBlIHR5cAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLVJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxp
c3RJdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlzdE1h
cmtlcjo6UmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlzdEl0ZW0sIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3gobGlzdEl0ZW0uZG9jdW1lbnQoKSwgV1RGTW92
ZShzdHlsZSksIDApCiAgICAgLCBtX2xpc3RJdGVtKGxpc3RJdGVtKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxl
VHlwZSwgaW4KIC8vIFRoZSBSZW5kZXJMaXN0TWFya2VyIGFsd2F5cyBoYXMgdG8gYmUgYSBjaGls
ZCBvZiBhIFJlbmRlckxpc3RJdGVtLgogY2xhc3MgUmVuZGVyTGlzdE1hcmtlciBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlz
dEl0ZW0mLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0TWFy
a2VyKFJlbmRlckxpc3RJdGVtJiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
TGlzdE1hcmtlcigpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWE6OlJl
bmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJJbWFnZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRI
YXNTaGFkb3dDb250cm9scyh0cnVlKTsKIH0KIAotUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVk
aWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
SW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogewogICAgIHNldEludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNZWRp
YSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWEoSFRNTE1l
ZGlhRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1l
ZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKTsKKyAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpOwogICAgIHZpcnR1
YWwgflJlbmRlck1lZGlhKCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVt
ZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAt
NTksNyArNTksNyBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpsCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJN
ZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtODEsNyAr
ODEsNyBAQCB2b2lkIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyCiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKLVJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJl
bmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
RmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lciBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXIoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpAQCAtNjEs
NyArNjEsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2
aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgc2l6ZV90IHNlbGVj
dGVkT3B0aW9uQ291bnQoY29uc3QgCiB9CiAjZW5kaWYKIAotUmVuZGVyTWVudUxpc3Q6OlJlbmRl
ck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEhUTUxTZWxl
Y3RFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxl
eGlibGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQobnVs
bHB0cikKICAgICAsIG1faW5uZXJCbG9jayhudWxscHRyKQpAQCAtMjY2LDcgKzI2Niw3IEBAIHZv
aWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKGkKICAgICAgICAgaWYgKGlzPEhU
TUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgICAgIHRleHQgPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKTsKICAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudC0+Y29tcHV0ZWRTdHls
ZSgpOwotICAgICAgICAgICAgbV9vcHRpb25TdHlsZSA9IHN0eWxlID8gUmVuZGVyU3R5bGU6OmNs
b25lKHN0eWxlKSA6IG51bGxwdHI7CisgICAgICAgICAgICBtX29wdGlvblN0eWxlID0gc3R5bGUg
PyBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSA6IG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJUZXh0Owog
Y2xhc3MgUmVuZGVyTWVudUxpc3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gsIHBy
aXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIAogcHVibGljOgotICAgIFJlbmRlck1lbnVMaXN0KEhU
TUxTZWxlY3RFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJNZW51TGlzdCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVs
ZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVy
LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1ldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlck1ldGVyOjpSZW5k
ZXJNZXRlcihIVE1MRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck1ldGVyOjpSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MTWV0ZXJF
bGVtZW50OwogCiBjbGFzcyBSZW5kZXJNZXRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewogcHVibGljOgotICAgIFJlbmRlck1ldGVyKEhUTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNZXRlcigpOwogCiAgICAgSFRNTE1ldGVyRWxl
bWVudCogbWV0ZXJFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBib29sIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Z1NoaWZ0aW5n
U3Bhbm5lciA9IGZhbHNlOwogCi1SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAg
ICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCkBA
IC0zMzgsNyArMzM4LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YQogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGNvbHVtbiBzZXQgd2hlbiB0aGVyZSdzIG5v
IHNldCBhbHJlYWR5IGNyZWF0ZWQuIFdlIGFsc28gYWx3YXlzIGluc2VydAogICAgIC8vIGFub3Ro
ZXIgY29sdW1uIHNldCBhZnRlciBhIHNwYW5uZXIuIEV2ZW4gaWYgaXQgdHVybnMgb3V0IHRoYXQg
dGhlcmUgYXJlIG5vIHJlbmRlcmVycwogICAgIC8vIGZvbGxvd2luZyB0aGUgc3Bhbm5lciwgdGhl
cmUgbWF5IGJlIGJvdHRvbSBtYXJnaW5zIHRoZXJlLCB3aGljaCB0YWtlIHVwIHNwYWNlLgotICAg
IFJlbmRlck11bHRpQ29sdW1uU2V0KiBuZXdTZXQgPSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TZXQo
KnRoaXMsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZtdWx0
aWNvbENvbnRhaW5lci0+c3R5bGUoKSwgQkxPQ0spKTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNl
dCogbmV3U2V0ID0gbmV3IFJlbmRlck11bHRpQ29sdW1uU2V0KCp0aGlzLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShtdWx0aWNvbENvbnRhaW5lci0+c3R5bGUo
KSwgQkxPQ0spKTsKICAgICBuZXdTZXQtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIG11bHRpY29s
Q29udGFpbmVyLT5SZW5kZXJCbG9jazo6YWRkQ2hpbGQobmV3U2V0LCBpbnNlcnRCZWZvcmVNdWx0
aWNvbENoaWxkKTsKICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGUKIAogY2xhc3MgUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQgewogcHVibGlj
OgotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQo
KTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0
KFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVu
ZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlclJlZ2lvblNldChmbG93VGhyZWFkLmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCBmbG93
VGhyZWFkKQogICAgICwgbV9jb21wdXRlZENvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbXB1dGVk
Q29sdW1uV2lkdGgoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNldC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBjb21lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhl
IHNwYW4uCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJS
ZWdpb25TZXQgewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dU
aHJlYWQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNv
bHVtblNldChSZW5kZXJGbG93VGhyZWFkJiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJC
bG9ja0Zsb3cqIG11bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSk7IH0KICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCo+KGZsb3dUaHJlYWQoKSk7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqIFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkKiBmbG93VGhyZWFkLCBSZW5kZXJCb3gqIHNwYW5uZXIsIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBC
TE9DSykpOwotICAgIG5ld1N0eWxlLT5zZXRDbGVhcihDQk9USCk7IC8vIFdlIGRvbid0IHdhbnQg
ZmxvYXRzIGluIHRoZSByb3cgcHJlY2VkaW5nIHRoZSBzcGFubmVyIHRvIGNvbnRpbnVlIG9uIHRo
ZSBvdGhlciBzaWRlLgorICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgqcGFyZW50U3R5bGUsIEJMT0NLKTsKKyAgICBuZXdTdHls
ZS5zZXRDbGVhcihDQk9USCk7IC8vIFdlIGRvbid0IHdhbnQgZmxvYXRzIGluIHRoZSByb3cgcHJl
Y2VkaW5nIHRoZSBzcGFubmVyIHRvIGNvbnRpbnVlIG9uIHRoZSBvdGhlciBzaWRlLgogICAgIGF1
dG8gcGxhY2Vob2xkZXIgPSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
Zmxvd1RocmVhZCwgc3Bhbm5lciwgV1RGTW92ZShuZXdTdHlsZSkpOwogICAgIHBsYWNlaG9sZGVy
LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiB9CiAKLVJlbmRl
ck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRl
ckJveCogc3Bhbm5lciwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRl
ckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmbG93
VGhyZWFkLT5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyQm94TW9kZWxPYmplY3RG
bGFnKQogICAgICwgbV9zcGFubmVyKHNwYW5uZXIpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1Ro
cmVhZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9mbG93VGhyZWFkOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94KiBzcGFu
bmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJC
b3gqIHNwYW5uZXIsIFJlbmRlclN0eWxlJiYpOwogICAgIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyUmVnaW9uKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgbnVsbHB0
cikKICAgICAsIG1faGFzQ3VzdG9tUmVnaW9uU3R5bGUoZmFsc2UpCiAgICAgLCBtX2hhc0F1dG9M
b2dpY2FsSGVpZ2h0KGZhbHNlKQpAQCAtNTcsMTMgKzU3LDEzIEBAIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50Ojp+UmVuZGVyTmFtZWRGbG8KIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNy
ZWF0ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIHN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVu
dFN0eWxlLCBCTE9DSyk7CisgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBCTE9DSyk7CiAKLSAgICBzdHlsZS0+
c2V0Rmxvd1RocmVhZChwYXJlbnRTdHlsZS5mbG93VGhyZWFkKCkpOwotICAgIHN0eWxlLT5zZXRS
ZWdpb25UaHJlYWQocGFyZW50U3R5bGUucmVnaW9uVGhyZWFkKCkpOwotICAgIHN0eWxlLT5zZXRS
ZWdpb25GcmFnbWVudChwYXJlbnRTdHlsZS5yZWdpb25GcmFnbWVudCgpKTsKKyAgICBzdHlsZS5z
ZXRGbG93VGhyZWFkKHBhcmVudFN0eWxlLmZsb3dUaHJlYWQoKSk7CisgICAgc3R5bGUuc2V0UmVn
aW9uVGhyZWFkKHBhcmVudFN0eWxlLnJlZ2lvblRocmVhZCgpKTsKKyAgICBzdHlsZS5zZXRSZWdp
b25GcmFnbWVudChwYXJlbnRTdHlsZS5yZWdpb25GcmFnbWVudCgpKTsKIAogICAgIHJldHVybiBz
dHlsZTsKIH0KQEAgLTM2NiwxMyArMzY2LDEzIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OmNvbXB1dGVDaGkKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjaGls
ZFN0eWxlSW5SZWdpb247CiAgICAgICAgIGJvb2wgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSBm
YWxzZTsKICAgICAgICAgaWYgKGl0ICE9IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuZW5kKCkp
IHsKLSAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZShp
dC0+dmFsdWUuc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0g
UmVuZGVyU3R5bGU6OmNsb25lUHRyKCppdC0+dmFsdWUuc3R5bGUpOwogICAgICAgICAgICAgb2Jq
ZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKGNoaWxkLmlzQW5vbnltb3VzKCkgfHwgY2hpbGQuaXNJbkZsb3dSZW5kZXJGbG93VGhy
ZWFkKCkpCi0gICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnJlbmRlcmVyLnN0eWxlKCksIGNoaWxk
LnN0eWxlKCkuZGlzcGxheSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24g
PSAgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkocmVuZGVyZXIuc3R5bGUoKSwgY2hpbGQuc3R5bGUoKS5kaXNw
bGF5KCkpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkKSkKLSAg
ICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJl
bmRlcmVyLnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJl
bmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lv
bihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIHJlbmRlcmVyLnN0eWxlKCkpOwogICAg
ICAgICB9CkBAIC0zODgsOSArMzg4LDkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
c2V0T2JqZWN0UwogewogICAgIEFTU0VSVChvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2soKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFs
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJm9iamVjdC0+c3R5bGUoKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gUmVuZGVyU3R5bGU6
OmNsb25lUHRyKG9iamVjdC0+c3R5bGUoKSk7CiAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpv
YmplY3QpKQotICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KS5zZXRTdHls
ZUludGVybmFsKFdURk1vdmUoc3R5bGVJblJlZ2lvbikpOworICAgICAgICBkb3duY2FzdDxSZW5k
ZXJFbGVtZW50Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoKnN0eWxlSW5SZWdp
b24pKTsKIAogICAgIGlmIChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKm9iamVjdCkgJiYgIW9i
amVjdC0+aGFzQm94RGVjb3JhdGlvbnMoKSkgewogICAgICAgICBib29sIGhhc0JveERlY29yYXRp
b25zID0gaXM8UmVuZGVyVGFibGVDZWxsPigqb2JqZWN0KQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZv
aWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk8KICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9i
amVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7CiAgICAgICAgIGlmIChpdCAhPSBtX3JlbmRl
ck9iamVjdFJlZ2lvblN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBvYmplY3RTdHlsZUluUmVn
aW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKGl0LT52YWx1ZS5zdHlsZS5nZXQoKSk7CisgICAgICAg
ICAgICBvYmplY3RTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCppdC0+dmFs
dWUuc3R5bGUpOwogICAgICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5jYWNoZWQpOwogICAgICAg
ICAgICAgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAg
LTQ2Myw4ICs0NjMsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVn
CiAgICAgUmVuZGVyT2JqZWN0UmVnaW9uU3R5bGVNYXAgdGVtcDsKICAgICBmb3IgKGF1dG8mIG9i
amVjdFBhaXIgOiBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlKSB7CiAgICAgICAgIFJlbmRlck9i
amVjdCogb2JqZWN0ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihvYmplY3RQYWlyLmtleSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmUoJm9iamVjdC0+c3R5bGUoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZShvYmplY3RQYWlyLnZhbHVlLnN0eWxlLmdldCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBvYmplY3RSZWdpb25TdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0
cihvYmplY3QtPnN0eWxlKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm9iamVjdFBhaXIu
dmFsdWUuc3R5bGUpOwogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSA9IG9i
amVjdFBhaXIudmFsdWUuY2FjaGVkOwogICAgICAgICBpZiAoIXNob3VsZENhY2hlUmVnaW9uU3R5
bGUpIHsKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpy
ZXN0b3JlUmVnCiAgICAgICAgICAgICB0ZW1wLnNldChvYmplY3QsIFdURk1vdmUoc3R5bGVJbmZv
KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQot
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRl
cm5hbChXVEZNb3ZlKG9iamVjdE9yaWdpbmFsU3R5bGUpKTsKKyAgICAgICAgICAgIGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZSgqb2JqZWN0
T3JpZ2luYWxTdHlsZSkpOwogICAgIH0KIAogICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUu
c3dhcCh0ZW1wKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksMTAgKzQ5LDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb24gewogcHVibGljOgotICAgIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJl
bmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRGbG93KQorUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBSZWY8V2ViS2l0TmFtZWRGbG93PiYmIG5hbWVkRmxv
dykKICAgICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9oYXNSZWdpb25zV2l0aFN0eWxpbmcoZmFsc2UpCiAgICAgLCBtX2Rpc3BhdGNoUmVnaW9u
T3ZlcnNldENoYW5nZUV2ZW50KGZhbHNlKQpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFJlbmRlck5h
bWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRo
ZSBmaXJzdCByZWdpb24gZGVmaW5lcyB0aGUgcHJpbmNpcGFsIHdyaXRpbmcgbW9kZSBmb3IgdGhl
IGVudGlyZSBmbG93LgotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0
eWxlKCkpOwotICAgIG5ld1N0eWxlLT5zZXRXcml0aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHls
ZSgpLndyaXRpbmdNb2RlKCkpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUoc3R5bGUoKSk7CisgICAgbmV3U3R5bGUuc2V0V3JpdGluZ01vZGUoZmlyc3RGcmFnbWVudC0+
c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCB0eXBlZGVmIExpc3RIYXNoU2V0PEVsZW1lbnQqPiBOYW1lZEZsb3dDCiAKIGNsYXNzIFJlbmRl
ck5hbWVkRmxvd1RocmVhZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbG93VGhyZWFkLCBwdWJsaWMg
U2VsZWN0aW9uU3VidHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRlck5hbWVkRmxvd1RocmVh
ZChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlZjxXZWJLaXROYW1l
ZEZsb3c+JiYpOworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0
eWxlJiYsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVk
Rmxvd1RocmVhZCgpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3Mu
Y3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHJv
Z3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV9wb3NpdGlvbihIVE1MUHJvZ3Jlc3NFbGVtZW50OjpJbnZhbGlkUG9zaXRpb24pCiAg
ICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBAIGNsYXNzIEhUTUxQcm9ncmVzc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclByb2dyZXNzIGZp
bmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUHJvZ3Jl
c3MoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJl
bmRlclByb2dyZXNzKCk7CiAKICAgICBkb3VibGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJR
dW90ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdURjo6VW5pY29kZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJRdW90ZTo6UmVu
ZGVyUXVvdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBRdW90ZVR5cGUgcXVvdGUpCitSZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBRdW90ZVR5cGUgcXVvdGUpCiAgICAg
OiBSZW5kZXJJbmxpbmUoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV90eXBlKHF1
b3RlKQogICAgICwgbV90ZXh0KGVtcHR5U3RyaW5nKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclF1b3RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJRdW90ZSBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclF1b3RlKERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUXVvdGVUeXBlKTsKKyAgICBSZW5kZXJRdW90ZShEb2N1
bWVudCYsIFJlbmRlclN0eWxlJiYsIFF1b3RlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyUXVv
dGUoKTsKIAogICAgIHZvaWQgYXR0YWNoUXVvdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVn
aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCiAgICAgLCBtX3BhcmVudE5hbWVk
Rmxvd1RocmVhZChudWxscHRyKQpAQCAtNTYsNyArNTYsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRl
clJlZ2lvbihFbGVtZW50JiBlbGVtCiB7CiB9CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9u
KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
UmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9u
KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFt
ZWRGbG93VGhyZWFkKG51bGxwdHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw4ICsxMjcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHNGb3JCb3hJblJlZ2lvbihWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqLCBjb25zdCBSZW5kZXJCb3gqLCBmbG9hdCwgZmxvYXQpIHsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVnaW9uKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhyZWFkKik7Ci0gICAgUmVuZGVyUmVnaW9uKERvY3VtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyRmxvd1RocmVhZCopOworICAg
IFJlbmRlclJlZ2lvbihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyRmxvd1RocmVhZCop
OworICAgIFJlbmRlclJlZ2lvbihEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJlbmRlckZsb3dU
aHJlYWQqKTsKIAogICAgIHZvaWQgZW5zdXJlT3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94
KiwgUmVmUHRyPFJlbmRlck92ZXJmbG93PiYsIGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZWdp
b25TZXQ6OlJlbmRlclJlZ2lvblNldChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCitSZW5k
ZXJSZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNldChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJS
ZWdpb24oZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAmZmxvd1RocmVhZCkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHBhbmRUb0Vu
Y29tcGFzc0Zsb3dUaHJlYWRDb250ZW50c0lmTmVlZGVkKCk7CiAKIHByb3RlY3RlZDoKLSAgICBS
ZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBS
ZW5kZXJGbG93VGhyZWFkJik7CisgICAgUmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiwgUmVuZGVy
U3R5bGUmJiwgUmVuZGVyRmxvd1RocmVhZCYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFs
bEZsb3dUaHJlYWQoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjEgKzQ2LDIx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBjRGVmYXVsdFdpZHRoID0gMzAwOwog
Y29uc3QgaW50IGNEZWZhdWx0SGVpZ2h0ID0gMTUwOwogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVy
UmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpLCBSZW5kZXJSZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoY0RlZmF1bHRX
aWR0aCwgY0RlZmF1bHRIZWlnaHQpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9CiAKLVJl
bmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXpl
KQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBS
ZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAg
ICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewogICAgIHNldFJlcGxhY2VkKHRy
dWUpOwogfQogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRTaXpl
JiBpbnRyaW5zaWNTaXplKQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKERvY3VtZW50
JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmlu
c2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRl
clJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHJldmlzaW9u
IDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlcGxh
Y2VkTG9naWNhbEhlaWdodCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVwbGFj
ZWQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclJl
cGxhY2VkKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlv
dXRTaXplJiBpbnRyaW5zaWNTaXplKTsKLSAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1Np
emUpOworICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBS
ZW5kZXJSZXBsYWNlZChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgTGF5b3V0U2l6ZSYg
aW50cmluc2ljU2l6ZSk7CisgICAgUmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmLCBSZW5kZXJTdHls
ZSYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKIAogICAgIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUmVw
bGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewogICAg
IC8vIFRoaXMgaXMgYSBoYWNrLiBSZXBsaWNhcyBhcmUgc3ludGhldGljLCBhbmQgZG9uJ3QgcGlj
ayB1cCB0aGUgYXR0cmlidXRlcyBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxpY2EuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxpY2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJlcGxpY2EgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJlcGxpY2EoKTsKIAogICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGlj
YSI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2Nr
KiBydWJ5QWZ0ZXJCbG9jCiAKIHN0YXRpYyBSZW5kZXJCbG9jayogY3JlYXRlQW5vbnltb3VzUnVi
eUlubGluZUJsb2NrKFJlbmRlck9iamVjdCYgcnVieSkKIHsKLSAgICBSZW5kZXJCbG9jayogbmV3
QmxvY2sgPSBuZXcgUmVuZGVyQmxvY2tGbG93KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnJ1Ynkuc3R5bGUoKSwgSU5MSU5FX0JM
T0NLKSk7CisgICAgUmVuZGVyQmxvY2sqIG5ld0Jsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhy
dWJ5LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHJ1Ynkuc3R5bGUoKSwgSU5MSU5FX0JMT0NLKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxp
emVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGF0aWMgaW5saW5lIFJlbmRlclJ1YnlSdW4mIGZpbmRSdWJ5UnVuCiAKIC8vPT09IHJ1YnkgYXMg
aW5saW5lIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxp
bmUoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiB7CiB9CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJSdWJ5QXNJbmxp
bmU6OnJlbW92ZUNoaWxkKFJlbgogCiAvLz09PSBydWJ5IGFzIGJsb2NrIG9iamVjdCA9PT0KIAot
UmVuZGVyUnVieUFzQmxvY2s6OlJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5QXNCbG9jazo6UmVu
ZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFz
ICdkaXNwbGF5OmlubGluZScKIGNsYXNzIFJlbmRlclJ1YnlBc0lubGluZSBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzSW5saW5l
KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNJbmxp
bmUoKTsKIAogICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogLy8gPHJ1Ynk+IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpibG9jaycgb3IgJ2Rpc3BsYXk6aW5s
aW5lLWJsb2NrJwogY2xhc3MgUmVuZGVyUnVieUFzQmxvY2sgZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzQmxvY2soRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0Jsb2NrKCk7CiAK
ICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZUZvck5vbkFub255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieUJhc2UuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1
YnlCYXNlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV9pbml0aWFsT2Zmc2V0KDApCiAgICAgLCBtX2lzQWZ0ZXJF
eHBhbnNpb24odHJ1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5k
ZXJSdWJ5UnVuOwogCiBjbGFzcyBSZW5kZXJSdWJ5QmFzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
bG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QmFzZSgpOwogICAgIAogICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UnVieUJhc2UgKGFub255bW91cykiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlSdW4uY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1SZW5kZXJS
dWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oRG9jdW1l
bnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93
KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbGFzdENoYXJhY3RlcigwKQogICAg
ICwgbV9zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoMCkKQEAgLTIwMyw4ICsyMDMsOCBAQCB2b2lkIFJl
bmRlclJ1YnlSdW46OnJlbW92ZUNoaWxkKFJlbmRlck9iCiAKIFJlbmRlclJ1YnlCYXNlKiBSZW5k
ZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSgpIGNvbnN0CiB7Ci0gICAgYXV0byBuZXdTdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBC
TE9DSyk7Ci0gICAgbmV3U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOyAvLyBGSVhNRTogdXNl
IFdFQktJVF9DRU5URVI/CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKTsKKyAgICBuZXdTdHlsZS5z
ZXRUZXh0QWxpZ24oQ0VOVEVSKTsgLy8gRklYTUU6IHVzZSBXRUJLSVRfQ0VOVEVSPwogICAgIGF1
dG8gcmVuZGVyZXIgPSBuZXcgUmVuZGVyUnVieUJhc2UoZG9jdW1lbnQoKSwgV1RGTW92ZShuZXdT
dHlsZSkpOwogICAgIHJlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcmVu
ZGVyZXI7CkBAIC0yMTMsNyArMjEzLDcgQEAgUmVuZGVyUnVieUJhc2UqIFJlbmRlclJ1YnlSdW46
OmNyZWF0ZVJ1YgogUmVuZGVyUnVieVJ1biogUmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVi
eVJ1bihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudFJ1YnkpCiB7CiAgICAgQVNTRVJUKGlzUnVi
eShwYXJlbnRSdWJ5KSk7Ci0gICAgYXV0byByZW5kZXJlciA9IG5ldyBSZW5kZXJSdWJ5UnVuKHBh
cmVudFJ1YnktPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KCZwYXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gbmV3IFJlbmRlclJ1YnlSdW4ocGFyZW50UnVieS0+ZG9jdW1lbnQoKSwgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UnVieS0+c3R5
bGUoKSwgSU5MSU5FX0JMT0NLKSk7CiAgICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5UnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBSZW5kZXJSdWJ5VGV4dDsKIAogY2xhc3MgUmVuZGVyUnVieVJ1biBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVJ1bigpOwogCiAgICAg
Ym9vbCBoYXNSdWJ5VGV4dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVRleHQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1
YnlUZXh0KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJ1YnlUZXh0IGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVRleHQoRWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5VGV4dCgpOwogCiAgICAgRWxlbWVu
dCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDkgKzI0NSw5IEBA
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXIKICAgICB9CiAKICAgICBp
ZiAoYXV0byYgcGFydFJlbmRlcmVyU2xvdCA9IG1fcGFydHMuYWRkKHBhcnRUeXBlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWUpCi0gICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPnNldFN0eWxlKFdU
Rk1vdmUocGFydFN0eWxlKSk7CisgICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPnNldFN0eWxlKFdU
Rk1vdmUoKnBhcnRTdHlsZSkpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0UmVuZGVyZXJTbG90
ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ob3duaW5nUmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXJ0U3R5bGUpLCB0aGlzLCBwYXJ0VHlwZSk7CisgICAgICAg
IHBhcnRSZW5kZXJlclNsb3QgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0Pihv
d25pbmdSZW5kZXJlcigpLT5kb2N1bWVudCgpLCBXVEZNb3ZlKCpwYXJ0U3R5bGUpLCB0aGlzLCBw
YXJ0VHlwZSk7CiAgICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNjcm9sbGJhclBhcnQ6OlJlbmRl
clNjcm9sbGJhclBhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQorUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSksIDApCiAgICAgLCBtX3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgLCBtX3BhcnQo
cGFydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBSZW5kZXJTY3JvbGxiYXI7CiAKIGNsYXNzIFJlbmRlclNjcm9sbGJhclBhcnQgZmluYWwgOiBw
dWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNjcm9sbGJhclBhcnQoRG9j
dW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJTY3JvbGxiYXIqID0g
bnVsbHB0ciwgU2Nyb2xsYmFyUGFydCA9IE5vUGFydCk7CisgICAgUmVuZGVyU2Nyb2xsYmFyUGFy
dChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJlbmRlclNjcm9sbGJhciogPSBudWxscHRyLCBT
Y3JvbGxiYXJQYXJ0ID0gTm9QYXJ0KTsKICAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxi
YXJQYXJ0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJl
bmRlclNlYXJjaEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU2VhcmNoRmll
bGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQogICAg
ICwgbV9zZWFyY2hQb3B1cCgwKQpAQCAtMTc4LDggKzE3OCw4IEBAIHZvaWQgUmVuZGVyU2VhcmNo
RmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHQKICAgICBpZiAoY3VyU3R5bGUudmlzaWJpbGl0eSgpID09
IGJ1dHRvblZpc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FuY2VsQnV0
dG9uU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJmN1clN0eWxlKTsKLSAgICBjYW5jZWxCdXR0
b25TdHlsZS0+c2V0VmlzaWJpbGl0eShidXR0b25WaXNpYmlsaXR5KTsKKyAgICBhdXRvIGNhbmNl
bEJ1dHRvblN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1clN0eWxlKTsKKyAgICBjYW5jZWxC
dXR0b25TdHlsZS5zZXRWaXNpYmlsaXR5KGJ1dHRvblZpc2liaWxpdHkpOwogICAgIGNhbmNlbEJ1
dHRvblJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKGNhbmNlbEJ1dHRvblN0eWxlKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MSW5wdXRF
bGVtZW50OwogCiBjbGFzcyBSZW5kZXJTZWFyY2hGaWVsZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUsIHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNlYXJjaEZpZWxkKCk7CiAKICAg
ICB2b2lkIHVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBSZW5k
ZXJTbGlkZXI6OmRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotUmVuZGVyU2xpZGVyOjpSZW5k
ZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclNsaWRlcjo6UmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJv
eChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBXZSBhc3N1bWUgUmVuZGVyU2xp
ZGVyIHdvcmtzIG9ubHkgd2l0aCA8aW5wdXQgdHlwZT1yYW5nZT4uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgUmVuZGVyU2xpZGVyIGZpbmFsIDogcHVibGljIFJlbmRlcgogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoOwogCi0gICAgUmVuZGVy
U2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlclNsaWRlcigpOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVk
ZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zbmFwc2hvdFJlc291
cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1faXNQ
b3RlbnRpYWxNb3VzZUFjdGl2YXRpb24oZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkocmV2aXNpb24gMTk5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDsKIAogY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyRW1iZWRkZWRPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oKTsKIAog
ICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAx
OTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJs
ZTo6UmVuZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFk
KG51bGxwdHIpCiAgICAgLCBtX2Zvb3QobnVsbHB0cikKQEAgLTcyLDcgKzcyLDcgQEAgUmVuZGVy
VGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbgogICAgIG1fY29sdW1uUG9zLmZpbGwo
MCwgMSk7CiB9CiAKLVJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1bWVudCYgZG9jdW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZTo6UmVuZGVy
VGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFkKG51bGxw
dHIpCiAgICAgLCBtX2Zvb3QobnVsbHB0cikKQEAgLTE1NDksNyArMTU0OSw3IEBAIGJvb2wgUmVu
ZGVyVGFibGU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFQKIAogUmVuZGVyVGFibGUqIFJlbmRlclRh
YmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBwYXJlbnQpCiB7Ci0gICAgYXV0byB0YWJsZSA9IG5ldyBSZW5kZXJUYWJsZShwYXJlbnQtPmRv
Y3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZw
YXJlbnQtPnN0eWxlKCksIHBhcmVudC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FID8gSU5M
SU5FX1RBQkxFIDogVEFCTEUpKTsKKyAgICBhdXRvIHRhYmxlID0gbmV3IFJlbmRlclRhYmxlKHBh
cmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkocGFyZW50LT5zdHlsZSgpLCBwYXJlbnQtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElO
RSA/IElOTElORV9UQUJMRSA6IFRBQkxFKSk7CiAgICAgdGFibGUtPmluaXRpYWxpemVTdHlsZSgp
OwogICAgIHJldHVybiB0YWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBlbnVtIFNraXBF
bXB0eVNlY3Rpb25zVmFsdWUgeyBEb05vdFNraXBFCiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVi
bGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZShFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZShFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZSgpOwogCiAgICAgLy8gUGVyIENTUyAzIHdyaXRp
bmctbW9kZTogIlRoZSBmaXJzdCBhbmQgc2Vjb25kIHZhbHVlcyBvZiB0aGUgJ2JvcmRlci1zcGFj
aW5nJyBwcm9wZXJ0eSByZXByZXNlbnQgc3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJs
ZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNh
cHRpb24uaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2FwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIGNsYXNz
IFJlbmRlclRhYmxlOwogCiBjbGFzcyBSZW5kZXJUYWJsZUNhcHRpb24gZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2FwdGlv
bihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVDYXB0
aW9uKCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVi
bGkKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZW5kZXJUYWJsZUNlbGwpID09IHNpemVvZihTYW1l
U2l6ZUFzUmVuZGVyVGFibGVDZWxsKSwgUmVuZGVyVGFibGVDZWxsX3Nob3VsZF9zdGF5X3NtYWxs
KTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDb2xsYXBzZWRCb3JkZXJWYWx1ZSkgPT0gMTIsIENv
bGxhcHNlZEJvcmRlclZhbHVlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVuZGVyVGFibGVDZWxs
OjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4KQog
ICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQpAQCAtNzAsNyArNzAsNyBAQCBSZW5kZXJU
YWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50CiAgICAgdXBkYXRlQ29sQW5kUm93U3Bh
bkZsYWdzKCk7CiB9CiAKLVJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRh
YmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFu
Z2VkKGZhbHNlKQpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNj
cm9sbGJhcnNDaGFuZ2VkKAogCiBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6Y3Jl
YXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50
KQogewotICAgIGF1dG8gY2VsbCA9IG5ldyBSZW5kZXJUYWJsZUNlbGwocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50
LT5zdHlsZSgpLCBUQUJMRV9DRUxMKSk7CisgICAgYXV0byBjZWxsID0gbmV3IFJlbmRlclRhYmxl
Q2VsbChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfQ0VMTCkpOwogICAgIGNlbGwtPmlu
aXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBjZWxsOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw4ICszOSw4IEBAIGVudW0gSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgeyBEb05vdEluY2wK
IAogY2xhc3MgUmVuZGVyVGFibGVDZWxsIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOworICAgIFJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIAogICAgIHVuc2lnbmVkIGNvbFNwYW4oKSBjb25zdDsKICAgICB1bnNpZ25lZCByb3dT
cGFuKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJs
ZUNvbDo6UmVuZGVyVGFibGVDb2woRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbChFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7
CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyVGFibGVDb2woRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlclRhYmxlQ29sKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgdm9pZCBjbGVhclByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eUJpdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3co
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRl
eCkKIHsKICAgICBzZXRJbmxpbmUoZmFsc2UpOwogfQogCi1SZW5kZXJUYWJsZVJvdzo6UmVuZGVy
VGFibGVSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERvY3VtZW50JiBkb2N1bWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CkBAIC0yNjIs
NyArMjYyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogCiBS
ZW5kZXJUYWJsZVJvdyogUmVuZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKIHsKLSAgICBhdXRvIG5ld1JvdyA9
IG5ldyBSZW5kZXJUYWJsZVJvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCksIFRBQkxFX1JPVykp
OworICAgIGF1dG8gbmV3Um93ID0gbmV3IFJlbmRlclRhYmxlUm93KHBhcmVudC0+ZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5z
dHlsZSgpLCBUQUJMRV9ST1cpKTsKICAgICBuZXdSb3ctPmluaXRpYWxpemVTdHlsZSgpOwogICAg
IHJldHVybiBuZXdSb3c7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heFJvd0luZGV4ID0gMHg3RgogCiBjbGFzcyBSZW5kZXJUYWJsZVJv
dyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlUm93
KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJs
ZVJvdyhEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clRhYmxlUm93KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJUYWJsZVJvdyhE
b2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgUmVuZGVyVGFibGVSb3cqIG5leHRSb3co
KSBjb25zdDsKICAgICBSZW5kZXJUYWJsZVJvdyogcHJldmlvdXNSb3coKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTMgKzgyLDEzIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0Rm8KICAgICB9CiB9CiAKLVJlbmRlclRhYmxlU2Vj
dGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2Vj
dGlvbihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
Qm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIHNldElubGluZShmYWxzZSk7
CiB9CiAKLVJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiBk
b2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxl
U2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDAp
CiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsOCArNTUsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0
aW9uKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
VGFibGVTZWN0aW9uKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJs
ZVNlY3Rpb24oKTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDE5OTk3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
Ci0gICAgUmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgLy8gVGhpcyBjb252
ZW5pZW5jZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2UgaW5uZXJU
ZXh0RWxlbWVudCBtYXkgb3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CkBAIC05MSw3ICs5MSw3
IEBAIHByaXZhdGU6CiAvLyBhbnltb3JlLgogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRl
clRleHRDb250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICB7IH0KICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRl
eHRBcmVhRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZShIVE1MVGV4dEFyZWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAgY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgot
ICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZShIVE1MVGV4dEFyZWFFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRl
eHRBcmVhRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29u
dHJvbChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJl
dmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBI
VE1MSW5wdXRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgOiBw
dWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUo
KTsKIAogcHJvdGVjdGVkOgpAQCAtOTAsNyArOTAsNyBAQCBpbmxpbmUgSFRNTEVsZW1lbnQqIFJl
bmRlclRleHRDb250cm9sU2luCiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRleHRD
b250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorICAgIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVlRUQ3VlOjpSZW5k
ZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogICAgICwgbV9jdWUoZWxlbWVudC5nZXRDdWUoKSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBWVFRDdWVCb3g7CiAKIGNsYXNzIFJlbmRlclZUVEN1ZSBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclZUVEN1ZShW
VFRDdWVCb3gmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWVFRD
dWUoVlRUQ3VlQm94JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRl
by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclZpZGVvOjpSZW5k
ZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNZWRpYShlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGNhbGN1bGF0ZUludHJp
bnNpY1NpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxlbWVu
dDsKIAogY2xhc3MgUmVuZGVyVmlkZW8gZmluYWwgOiBwdWJsaWMgUmVuZGVyTWVkaWEgewogcHVi
bGljOgotICAgIFJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlkZW8oKTsKIAogICAgIEhUTUxWaWRlb0Vs
ZW1lbnQmIHZpZGVvRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIq
PiBtX3NwYW5uZXJTdGFjazsKIH07CiAKLVJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmll
dzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9m
cmFtZVZpZXcoKmRvY3VtZW50LnZpZXcoKSkKICAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0
KG51bGxwdHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVuZGVyUXVvdGU7CiAKIGNsYXNz
IFJlbmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0
aW9uU3VidHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRlclZpZXcoRG9jdW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlldygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIG1vdmVXaWRnZXRU
b1BhcmVudFNvb24oV2lkZ2UKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlOjpzY2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKIH0KIAotUmVuZGVyV2lk
Z2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQo
SFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3dlYWtQ
dHJGYWN0b3J5KHRoaXMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVyZWYoKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlcldpZGdldChIVE1MRnJhbWVP
d25lckVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJX
aWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKSBmaW5hbDsKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShjb25zdCBS
ZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKQogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmUoJmN1cnJlbnRTdHlsZSk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZVB0cihjdXJyZW50U3R5bGUpOwogICAgIGlmIChjdXJyZW50U3R5bGUubGFzdENo
aWxkU3RhdGUoKSkKICAgICAgICAgbmV3U3R5bGUtPnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAg
aWYgKGN1cnJlbnRTdHlsZS5maXJzdENoaWxkU3RhdGUoKSkKQEAgLTUyLDcgKzUyLDcgQEAgVGV4
dEF1dG9TaXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KERlbAogfQogCiBUZXh0QXV0b1Npemlu
Z0tleTo6VGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQotICAgIDogbV9zdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUpKQorICAgIDogbV9zdHlsZShzdHlsZSA/IFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqc3R5bGUpIDogbnVsbHB0cikKIHsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
ICAgIAotUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmIGNvbnRh
aW5lciwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEJs
b2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChjb250YWluZXIsIFdURk1vdmUoc3R5bGUp
KQogewogfQogCi1SZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKIHsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBSZW5kZXJNYXRoTUxCbG9jazo6aXND
aGlsZEFsbG93ZWQoYwogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MQmxvY2s+IFJlbmRlck1hdGhN
TEJsb2NrOjpjcmVhdGVBbm9ueW1vdXNNYXRoTUxCbG9jaygpCiB7Ci0gICAgUmVuZGVyUHRyPFJl
bmRlck1hdGhNTEJsb2NrPiBuZXdCbG9jayA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEJs
b2NrPihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheSgmc3R5bGUoKSwgRkxFWCkpOworICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxCbG9jaz4g
bmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxCbG9jaz4oZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxF
WCkpOwogICAgIG5ld0Jsb2NrLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3Qmxv
Y2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDggKzQxLDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3I7CiAKIGNsYXNzIFJlbmRlck1h
dGhNTEJsb2NrIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNYXRoTUxCbG9jayhFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0g
ICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7Cisg
ICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGJv
b2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBvdmVycmlkZTsKICAgICAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgUmVuZGVyTWF0aE1MVGFibGUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGFibGUgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyTWF0aE1M
VGFibGUoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBS
ZW5kZXJUYWJsZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0
Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIHN0YXRpYyBjb25zdCBjaGFyKiBn
T3BlbmluZ0JyYWNlQ2hhciA9ICIoIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBnQ2xvc2luZ0JyYWNl
Q2hhciA9ICIpIjsKIAotUmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X2Nsb3NlRmVuY2VSZW5kZXJlcihudWxscHRyKQogewpAQCAtODUsNyArODUsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lCiAKIFJlbmRlclB0cjxSZW5kZXJNYXRo
TUxPcGVyYXRvcj4gUmVuZGVyTWF0aE1MRmVuY2VkOjpjcmVhdGVNYXRoTUxPcGVyYXRvcihjb25z
dCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0g
Zm9ybSwgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnIGZsYWcpCiB7Ci0gICAgUmVuZGVy
UHRyPFJlbmRlck1hdGhNTE9wZXJhdG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlck1hdGhNTE9wZXJhdG9yPihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgRkxFWCksIG9wZXJhdG9yU3RyaW5nLCBmb3Jt
LCBmbGFnKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+IG5ld09wZXJhdG9y
ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KGRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpLCBv
cGVyYXRvclN0cmluZywgZm9ybSwgZmxhZyk7CiAgICAgbmV3T3BlcmF0b3ItPmluaXRpYWxpemVT
dHlsZSgpOwogICAgIHJldHVybiBuZXdPcGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGZW5jZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxGZW5jZWQgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyTWF0aE1MUm93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBjb25zdCBmbG9hdCBnRnJhY3Rpb25CYXJXaWR0aCA9IDAKIHN0YXRpYyBjb25zdCBmbG9h
dCBnTnVtZXJhdG9yR2FwID0gMC4yZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBnRGVub21pbmF0b3JH
YXAgPSAwLjJmOwogCi1SZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24o
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFj
dGlvbihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzKDEpCiAgICAgLCBtX2xpbmVUaGlja25lc3Mo
MCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhN
TEZyYWN0aW9uIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAg
ICAgZmxvYXQgcmVsYXRpdmVMaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
TGluZVRoaWNrbmVzcyA/IG1fbGluZVRoaWNrbmVzcyAvIG1fZGVmYXVsdExpbmVUaGlja25lc3Mg
OiBMYXlvdXRVbml0KDApOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1h
dGgoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJN
YXRoTUxNYXRoIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1lbmNsb3NlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJN
YXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MTWVuY2xvc2U6OlJlbmRlck1hdGhNTE1lbmNsb3NlKEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxS
b3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1lbmNsb3NlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MTWVuY2xvc2UgZmluYWw6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxN
ZW5jbG9zZShFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBp
c1JlbmRlck1hdGhNTE1lbmNsb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBTdHJldGNoeUNoYXJhY3RlciBzdHJldGNoeUMK
ICAgICB7IDB4MjIyYiwgMHgyMzIwLCAweDIzYWUsIDB4MjMyMSwgMHgwICAgIH0gLy8gaW50ZWdy
YWwgc2lnbgogfTsKIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9y
KE1hdGhNTEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFRv
a2VuKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVpZ2h0QWJvdmVC
YXNlbGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDApCkBAIC04Miw3
ICs4Miw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXQKICAgICB1
cGRhdGVUb2tlbkNvbnRlbnQoKTsKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1h
dGhNTE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpGb3JtIGZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzKQorUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzKQogICAgIDogUmVu
ZGVyTWF0aE1MVG9rZW4oZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNo
SGVpZ2h0QWJvdmVCYXNlbGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5l
KDApCkBAIC02MTUsOSArNjE1LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRl
U3R5bGUoKQogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgYmUgYWRkZWQgdG8gdGhl
IHdob2xlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI0ODMxKS4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIG9u
bHkgYmUgYWRkZWQgaW5zaWRlIChwZXJoYXBzIGluZmVycmVkKSBtcm93IChodHRwOi8vd3d3Lncz
Lm9yZy9UUi9NYXRoTUwvY2hhcHRlcjMuaHRtbCNwcmVzbS5vcHNwYWNpbmcpLgogICAgIGNvbnN0
IGF1dG8mIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwot
ICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheSgmc3R5bGUoKSwgRkxFWCk7Ci0gICAgbmV3U3R5bGUtPnNldE1hcmdpblN0YXJ0KExl
bmd0aChtX2xlYWRpbmdTcGFjZSwgRml4ZWQpKTsKLSAgICBuZXdTdHlsZS0+c2V0TWFyZ2luRW5k
KExlbmd0aChtX3RyYWlsaW5nU3BhY2UsIEZpeGVkKSk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgp
OworICAgIG5ld1N0eWxlLnNldE1hcmdpblN0YXJ0KExlbmd0aChtX2xlYWRpbmdTcGFjZSwgRml4
ZWQpKTsKKyAgICBuZXdTdHlsZS5zZXRNYXJnaW5FbmQoTGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwg
Rml4ZWQpKTsKICAgICB3cmFwcGVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAg
d3JhcHBlci0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTE9wZXJhdG9yIDog
cHVibGljIFJlbmRlck1hdGhNTFRva2VuIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcihNYXRoTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAg
UmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnk6OkZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IoTWF0aE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0
cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFn
cyA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFi
b3ZlQmFzZWxpbmUsIExheW91dFVuaXQgZGVwdGhCZWxvd0Jhc2VsaW5lKTsKICAgICB2b2lkIHN0
cmV0Y2hUbyhMYXlvdXRVbml0IHdpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
ci5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBjb25zdCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgPSAwCiAvLyBS
YWRpY2FsIHRoaWNrIGxpbmUgdGhpY2tuZXNzIChlbSkKIGNvbnN0IGZsb2F0IGdSYWRpY2FsVGhp
Y2tMaW5lVGhpY2tuZXNzRW1zID0gMC4xZjsKIAotUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
OjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
OjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQsIFdURk1v
dmUoc3R5bGUpLCBTdHJpbmcoJmdSYWRpY2FsQ2hhcmFjdGVyLCAxKSwgTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpQcmVmaXgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0
b3IgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IgewogcHVibGljOgotICAgIFJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYpOwogICAgIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVC
YXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92ZXJyaWRlOwogICAgIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIg
KzU1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEluIG9yZGVyIHRvIGFjY2VwdCBpbnZh
bGlkIG1hcmt1cCBhbmQgdG8gaGFuZGxlIDxtcm9vdD4gYW5kIDxtc3FydD4gY29uc2lzdGVudGx5
LCB3ZSB3aWxsIGFsbG93IGFueSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhlIEJhc2VXcmFwcGVy
IG9mIDxtcm9vdD4gdG9vLgogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRvIGJl
IGVtcHR5IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSA8
bXJvb3Q+IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCi1SZW5kZXJNYXRoTUxS
b290OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb290OjpSZW5kZXJNYXRoTUxSb290KEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MUm9vdDo6
UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb290OjpSZW5kZXJNYXRoTUxSb290KERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJs
b2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnJlc3RydWN0dXJlV3JhcHBlCiAKICAgICBpZiAocmFkaWNh
bC0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgcmFkaWNhbCBvcGVyYXRv
ci4KLSAgICAgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4gcmFkaWNh
bE9wZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yPihk
b2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgRkxFWCkpOworICAgICAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yPiByYWRpY2FsT3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3I+KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpKTsKICAgICAgICAgcmFkaWNhbE9wZXJhdG9yLT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICAgICAgcmFkaWNhbC0+YWRkQ2hpbGQocmFkaWNhbE9wZXJh
dG9yLmxlYWtQdHIoKSk7CiAgICAgfQpAQCAtMjI1LDI2ICsyMjUsMjYgQEAgdm9pZCBSZW5kZXJN
YXRoTUxSb290Ojp1cGRhdGVTdHlsZSgpCiAgICAgLy8gV2Ugc2V0IHRoZSBzdHlsZSBvZiB0aGUg
YW5vbnltb3VzIHdyYXBwZXJzLgogCiAgICAgYXV0byByYWRpY2FsID0gcmFkaWNhbFdyYXBwZXIo
KTsKLSAgICBhdXRvIHJhZGljYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICByYWRpY2FsU3R5bGUtPnNldE1h
cmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVu
ZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYXV0byByYWRpY2FsU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKKyAg
ICByYWRpY2FsU3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdp
bGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KICAgICByYWRpY2Fs
LT5zZXRTdHlsZShXVEZNb3ZlKHJhZGljYWxTdHlsZSkpOwogICAgIHJhZGljYWwtPnNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCiAgICAgYXV0byBiYXNlID0gYmFzZVdyYXBw
ZXIoKTsKLSAgICBhdXRvIGJhc2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICBiYXNlU3R5bGUtPnNldE1hcmdp
blRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVy
TWF0aE1MUm9vdDo6bGF5b3V0KCkuCi0gICAgYmFzZVN0eWxlLT5zZXRBbGlnbkl0ZW1zUG9zaXRp
b24oSXRlbVBvc2l0aW9uQmFzZWxpbmUpOworICAgIGF1dG8gYmFzZVN0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CisgICAg
YmFzZVN0eWxlLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJl
IHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYmFzZVN0eWxlLnNl
dEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CiAgICAgYmFzZS0+c2V0
U3R5bGUoV1RGTW92ZShiYXNlU3R5bGUpKTsKICAgICBiYXNlLT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKIAogICAgIGlmICghaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkp
IHsKICAgICAgICAgLy8gRm9yIG1yb290LCB3ZSBhbHNvIHNldCB0aGUgc3R5bGUgb2YgdGhlIGlu
ZGV4IHdyYXBwZXIuCiAgICAgICAgIGF1dG8gaW5kZXggPSBpbmRleFdyYXBwZXIoKTsKLSAgICAg
ICAgYXV0byBpbmRleFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkoJnN0eWxlKCksIEZMRVgpOwotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5U
b3AoTGVuZ3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1h
dGhNTFJvb3Q6OmxheW91dCgpLgotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5TdGFydChM
ZW5ndGgoa2VybkJlZm9yZURlZ3JlZSwgRml4ZWQpKTsKLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0
TWFyZ2luRW5kKExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7Ci0gICAgICAgIGluZGV4
U3R5bGUtPnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CisgICAg
ICAgIGF1dG8gaW5kZXhTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOworICAgICAgICBpbmRleFN0eWxlLnNldE1hcmdpblRv
cChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0
aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2luU3RhcnQoTGVu
Z3RoKGtlcm5CZWZvcmVEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFy
Z2luRW5kKExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5
bGUuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKICAgICAgICAg
aW5kZXgtPnNldFN0eWxlKFdURk1vdmUoaW5kZXhTdHlsZSkpOwogICAgICAgICBpbmRleC0+c2V0
TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQpAQCAtMzQyLDcgKzM0Miw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKIAogUmVuZGVyUHRy
PFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRl
QW5vbnltb3VzV3JhcHBlcihSZW5kZXJNYXRoTUxSb290KiByZW5kZXJPYmplY3QpCiB7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBuZXdCbG9jayA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPihyZW5kZXJPYmplY3QtPmRvY3VtZW50KCksIFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZyZW5kZXJPYmplY3Qt
PnN0eWxlKCksIEZMRVgpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+
IG5ld0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+KHJlbmRl
ck9iamVjdC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocmVuZGVyT2JqZWN0LT5zdHlsZSgpLCBGTEVYKSk7CiAgICAgbmV3QmxvY2stPmlu
aXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBSZW5kZXJN
YXRoTUxSb290IDogcHVibGljIFJlbmRlck1hCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb290KERvY3VtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUm9vdChF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYs
IFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0No
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgb3ZlcnJpZGU7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFw
cGVyIGZpbmFsIDogcHUKIGZyaWVuZCBjbGFzcyBSZW5kZXJNYXRoTUxSb290OwogCiBwdWJsaWM6
Ci0gICAgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVy
KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5k
ZXJNYXRoTUxSb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKSB7IH0KIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
Ci1SZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJN
YXRoTUxSb3coRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCi1SZW5kZXJN
YXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJv
dyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJN
YXRoTUxCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgUmVuZGVyTWF0
aE1MUm9vdDsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJs
b2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MUm93KERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAKICAgICB2b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgc3RhdGljIGJvb2wgaXNQcmVzY3JpcHREZWxpbWl0ZXIoY29uc3QgUgogICAgIHJl
dHVybiByZW5kZXJPYmplY3Qubm9kZSgpICYmIHJlbmRlck9iamVjdC5ub2RlKCktPmhhc1RhZ05h
bWUoTWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKTsKIH0KIAotUmVuZGVyTWF0aE1MU2NyaXB0
czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2Ny
aXB0cyhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
TWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgLy8gRGV0ZXJtaW5l
IHdoYXQga2luZCBvZiBzdWIvc3VwIGV4cHJlc3Npb24gd2UgaGF2ZSBieSBlbGVtZW50IG5hbWUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBSZW5kZXIgYSBiYXNlIHdpdGggc2Ny
aXB0cy4KIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0
aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVs
bGlzaGVkT3BlcmF0b3IoKSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Bh
Y2UuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CiAKLVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1h
dGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV93aWR0aCgwKQogICAgICwgbV9oZWlnaHQoMCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3Bh
Y2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0
aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJv
b3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDE5ICszNCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1S
ZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb290KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKQogewogfQogCi1SZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVh
cmVSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1M
Um9vdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJN
YXRoTUxTcXVhcmVSb290PiBSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpjcmVhdGVBbm9ueW1vdXNX
aXRoUGFyZW50UmVuZGVyZXIoUmVuZGVyTWF0aE1MTWVuY2xvc2UmIHBhcmVudCkKIHsKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyTWF0aE1MU3F1YXJlUm9vdD4gc3F1YXJlUm9vdCA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q+KHBhcmVudC5kb2N1bWVudCgpLCBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LnN0eWxlKCksIEZMRVgp
KTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MU3F1YXJlUm9vdD4gc3F1YXJlUm9vdCA9IGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q+KHBhcmVudC5kb2N1bWVudCgpLCBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUo
KSwgRkxFWCkpOwogICAgIHNxdWFyZVJvb3QtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVy
biBzcXVhcmVSb290OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcXVhcmVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDE5OTk3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9v
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1l
bmNsb3NlOwogLy8gUmVuZGVyIHNxcnQoYmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBj
bGFzcyBSZW5kZXJNYXRoTUxTcXVhcmVSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJv
b3QgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9j
dW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxT
cXVhcmVSb290KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxTcXVh
cmVSb290KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgc3RhdGljIFJlbmRlclB0cjxS
ZW5kZXJNYXRoTUxTcXVhcmVSb290PiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIo
UmVuZGVyTWF0aE1MTWVuY2xvc2UmKTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVy
TWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0
aE1MVG9rZW4oRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWlu
c0VsZW1lbnQoZmFsc2UpCiB7CiB9CiAKLVJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxU
b2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CkBA
IC04MiwxNyArODIsMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUoKQog
ICAgIGNvbnN0IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKIAogICAgIGNvbnN0IGF1
dG8mIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwotICAg
IGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheSgmc3R5bGUoKSwgRkxFWCk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOwogCiAgICAgaWYg
KHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykpIHsKICAgICAgICAg
Ly8gVGhpcyB0cmllcyB0byBlbXVsYXRlIHRoZSBkZWZhdWx0IG1hdGh2YXJpYW50IHZhbHVlIG9u
IDxtaT4gdXNpbmcgdGhlIENTUyBmb250LXN0eWxlIHByb3BlcnR5LgogICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgcmV2aXNlZCB3aGVuIG1hdGh2YXJpYW50IGlzIGltcGxlbWVudGVk
IChodHRwOi8vd2tidWcvODU3MzUpIGFuZCB3aGVuIGZvbnRzIHdpdGggTWF0aGVtYXRpY2FsIEFs
cGhhbnVtZXJpYyBTeW1ib2xzIGNoYXJhY3RlcnMgYXJlIG1vcmUgcG9wdWxhci4KLSAgICAgICAg
YXV0byBmb250RGVzY3JpcHRpb24gPSBuZXdTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yID0gbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCku
Zm9udFNlbGVjdG9yKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gbmV3U3R5bGUu
Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yID0g
bmV3U3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKICAgICAgICAgaWYgKCFtX2Nv
bnRhaW5zRWxlbWVudCAmJiBlbGVtZW50KCkudGV4dENvbnRlbnQoKS5zdHJpcFdoaXRlU3BhY2Uo
KS5zaW1wbGlmeVdoaXRlU3BhY2UoKS5sZW5ndGgoKSA9PSAxICYmICF0b2tlbkVsZW1lbnQuaGFz
QXR0cmlidXRlKG1hdGh2YXJpYW50QXR0cikpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0SXRhbGljKEZvbnRJdGFsaWNPbik7Ci0gICAgICAgIGlmIChuZXdTdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBuZXdTdHlsZS0+Zm9udENh
c2NhZGUoKS51cGRhdGUoZm9udFNlbGVjdG9yKTsKKyAgICAgICAgaWYgKG5ld1N0eWxlLnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgbmV3U3R5bGUuZm9u
dENhc2NhZGUoKS51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAgICB9CiAKICAgICB3cmFwcGVyLT5z
ZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCShyZXZpc2lvbiAxOTk5NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgUmVuZGVyTWF0aE1MVG9rZW4gOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewog
cHVibGljOgotICAgIFJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFJlbmRlclN0
eWxlJiYpOwogCiAgICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIE1hdGhNTE5hbWVzOwogICAgIAotUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRo
TUxVbmRlck92ZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBr
aW5kIG9mIHVuZGVyL292ZXIgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhN
TFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIAogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0
b3IoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw0NiAr
ODYsNTEgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJTdHlsZSB7CiAKIENPTVBJTEVfQVNTRVJU
KHNpemVvZihSZW5kZXJTdHlsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJTdHlsZSksIFJl
bmRlclN0eWxlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotaW5saW5lIFJlbmRlclN0eWxlJiBkZWZh
dWx0U3R5bGUoKQorUmVuZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewot
ICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgc3R5bGUgPSAqUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1
bHRTdHlsZSgpLnJlbGVhc2UoKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIHN0eWxlID0gKm5l
dyBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGUpOwogICAgIHJldHVybiBzdHlsZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlKCkKK1Jl
bmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBjbG9uZSgmZGVm
YXVsdFN0eWxlKCkpOworICAgIHJldHVybiBjbG9uZShkZWZhdWx0U3R5bGUoKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHls
ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIo
KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KG5ldyBSZW5kZXJT
dHlsZSh0cnVlKSk7CisgICAgcmV0dXJuIGNsb25lUHRyKGRlZmF1bHRTdHlsZSgpKTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5
IGRpc3BsYXkpCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7
Ci0gICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKLSAgICBuZXdTdHlsZS0+
aW5oZXJpdFVuaWNvZGVCaWRpRnJvbShwYXJlbnRTdHlsZSk7Ci0gICAgbmV3U3R5bGUtPnNldERp
c3BsYXkoZGlzcGxheSk7Ci0gICAgcmV0dXJuIG5ld1N0eWxlOworICAgIHJldHVybiBSZW5kZXJT
dHlsZShzdHlsZSwgQ2xvbmUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJl
bmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCitzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4obmV3IFJl
bmRlclN0eWxlKCpvdGhlcikpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0
eWxlPihzdHlsZSwgQ2xvbmUpOworfQorCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IEVEaXNwbGF5IGRpc3BsYXkpCit7CisgICAgYXV0byBuZXdTdHlsZSA9IGNyZWF0ZSgpOworICAg
IG5ld1N0eWxlLmluaGVyaXRGcm9tKCZwYXJlbnRTdHlsZSk7CisgICAgbmV3U3R5bGUuaW5oZXJp
dFVuaWNvZGVCaWRpRnJvbSgmcGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLnNldERpc3BsYXko
ZGlzcGxheSk7CisgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcHNldWRvU3R5bGUpCiB7CiAgICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09
IEJFRk9SRSB8fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBBRlRFUik7CiAKLSAgICBhdXRv
IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5pbmhlcml0RnJvbSgm
cHNldWRvU3R5bGUpOworICAgIGF1dG8gc3R5bGUgPSBjcmVhdGUoKTsKKyAgICBzdHlsZS5pbmhl
cml0RnJvbSgmcHNldWRvU3R5bGUpOwogICAgIHJldHVybiBzdHlsZTsKIH0KIAotQUxXQVlTX0lO
TElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoYm9vbCkKK1JlbmRlclN0eWxlOjpSZW5kZXJT
dHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcpCiAgICAgOiBtX2JveChTdHlsZUJveERhdGE6OmNy
ZWF0ZSgpKQogICAgICwgdmlzdWFsKFN0eWxlVmlzdWFsRGF0YTo6Y3JlYXRlKCkpCiAgICAgLCBt
X2JhY2tncm91bmQoU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKCkpCkBAIC0xNjIsMTcgKzE2
NywxNyBAQCBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShiCiAgICAgc3Rh
dGljX2Fzc2VydCgoc2l6ZW9mKE5vbkluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIk5vbkluaGVyaXRl
ZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsKIH0KIAotQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6
UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG8pCi0gICAgOiBtX2JveChvLm1fYm94KQot
ICAgICwgdmlzdWFsKG8udmlzdWFsKQotICAgICwgbV9iYWNrZ3JvdW5kKG8ubV9iYWNrZ3JvdW5k
KQotICAgICwgc3Vycm91bmQoby5zdXJyb3VuZCkKLSAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRh
KG8ucmFyZU5vbkluaGVyaXRlZERhdGEpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShvLnJhcmVJ
bmhlcml0ZWREYXRhKQotICAgICwgaW5oZXJpdGVkKG8uaW5oZXJpdGVkKQotICAgICwgbV9zdmdT
dHlsZShvLm1fc3ZnU3R5bGUpCi0gICAgLCBpbmhlcml0ZWRfZmxhZ3Moby5pbmhlcml0ZWRfZmxh
Z3MpCi0gICAgLCBub25pbmhlcml0ZWRfZmxhZ3Moby5ub25pbmhlcml0ZWRfZmxhZ3MpCitSZW5k
ZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykK
KyAgICA6IG1fYm94KG90aGVyLm1fYm94KQorICAgICwgdmlzdWFsKG90aGVyLnZpc3VhbCkKKyAg
ICAsIG1fYmFja2dyb3VuZChvdGhlci5tX2JhY2tncm91bmQpCisgICAgLCBzdXJyb3VuZChvdGhl
ci5zdXJyb3VuZCkKKyAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhKQorICAgICwgcmFyZUluaGVyaXRlZERhdGEob3RoZXIucmFyZUluaGVyaXRlZERh
dGEpCisgICAgLCBpbmhlcml0ZWQob3RoZXIuaW5oZXJpdGVkKQorICAgICwgbV9zdmdTdHlsZShv
dGhlci5tX3N2Z1N0eWxlKQorICAgICwgaW5oZXJpdGVkX2ZsYWdzKG90aGVyLmluaGVyaXRlZF9m
bGFncykKKyAgICAsIG5vbmluaGVyaXRlZF9mbGFncyhvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mp
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1
ZGUgIlN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlRmls
dGVyRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlRmxleGlibGVCb3hEYXRhLmgiCisjaW5jbHVkZSAi
U3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2lu
Y2x1ZGUgIlN0eWxlTXVsdGlDb2xEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oIgpAQCAtNDc5LDIwICs0ODAsMjkgQEAgcHJvdGVjdGVkOgogCiAvLyAhRU5EIFNZTkMh
CiBwcml2YXRlOgotICAgIC8vIHVzZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHN0eWxlLgotICAg
IEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUoYm9vbCk7Ci0gICAgQUxXQVlTX0lOTElORSBSZW5k
ZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIGVudW0gQ3JlYXRlRGVmYXVsdFN0eWxl
VGFnIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CisgICAgUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVs
dFN0eWxlVGFnKTsKKworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0eWxlKCk7CiAK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGUo
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0
U3R5bGUoKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwg
RURpc3BsYXkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNsb25l
KGNvbnN0IFJlbmRlclN0eWxlKik7CisgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBk
ZWZhdWx0OworICAgIFJlbmRlclN0eWxlJiBvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZh
dWx0OworCisgICAgLy8gVGhpcyBpcyBub3QgYSB0cnVlIGNvcHkgY29uc3RydWN0b3IuIEl0IGRv
ZXNuJ3QgY29weSBwc2V1ZG8gc3R5bGUgY2FjaGVzIGZvciBleGFtcGxlLgorICAgIGVudW0gQ2xv
bmVUYWcgeyBDbG9uZSB9OworICAgIFJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgQ2xv
bmVUYWcpOwogCiAgICAgflJlbmRlclN0eWxlKCk7CiAKLSAgICAvLyBDcmVhdGUgYSBSZW5kZXJT
dHlsZSBmb3IgZ2VuZXJhdGVkIGNvbnRlbnQgYnkgaW5oZXJpdGluZyBmcm9tIGEgcHNldWRvIHN0
eWxlLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxl
SW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUp
OworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVQdHIoKTsKKworICAgIHN0YXRpYyBSZW5kZXJTdHls
ZSBjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJik7CisKKyAgICBzdGF0aWMg
UmVuZGVyU3R5bGUgY3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3Jl
YXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1
ZG9TdHlsZSk7CiAKICAgICBDb250ZW50UG9zaXRpb24gcmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBv
c2l0aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZp
b3IpIGNvbnN0OwogICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIHJlc29sdmVkSnVzdGlmeUNv
bnRlbnREaXN0cmlidXRpb24oY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFs
VmFsdWVCZWhhdmlvcikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdCbG9jazo6
UmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKFNW
R0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgU1ZHR3JhcGhpY3NF
bGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFw
aGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJvdGVjdGVkOgotICAg
IFJlbmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdDb250YWluZXI6OlJl
bmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIo
U1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNW
R01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9vYmplY3RCb3Vu
ZGluZ0JveFZhbGlkKGZhbHNlKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNW
R0NvbnRhaW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
U1ZHQ29udGFpbmVyIjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdFbGxp
cHNlOjpSZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNW
R0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X3VzZVBhdGhGYWxsYmFjayhmYWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNW
R0VsbGlwc2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJl
bmRlclNWR0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0Jsb2Nr
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0
cnVlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OwogCiBjbGFz
cyBSZW5kZXJTVkdGb3JlaWduT2JqZWN0IGZpbmFsIDogcHVibGljIFJlbmRlclNWR0Jsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR0ZvcmVpZ25PYmplY3QoKTsKIAogICAgIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50JiBmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdHcmFkaWVudFN0b3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotUmVuZGVy
U1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdHcmFk
aWVudFN0b3A6OlJlbmRlclNWR0dyYWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSksIDApCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50OwogLy8g
VGhpcyBjbGFzcyBleGlzdHMgbW9zdGx5IHNvIHdlIGNhbiBoZWFyIGFib3V0IGdyYWRpZW50IHN0
b3Agc3R5bGUgY2hhbmdlcwogY2xhc3MgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIGZpbmFsIDogcHVi
bGljIFJlbmRlckVsZW1lbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcChT
VkdTdG9wRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNWR0dyYWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR0dyYWRpZW50U3RvcCgpOwogCiAgICAgU1ZHU3RvcEVsZW1lbnQmIGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdTdG9wRWxlbWVudD4oUmVuZGVyT2Jq
ZWN0Ojpub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogLy8gPGRlZnM+LCA8bGluZWFyR3JhZGll
bnQ+LCA8cmFkaWFsR3JhZGllbnQ+IGFyZSBhbGwgZ29vZCBleGFtcGxlcwogY2xhc3MgUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShT
VkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVl
KQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0ltYWdlRWxlbWVudDsKIAogY2xhc3Mg
UmVuZGVyU1ZHSW1hZ2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVi
bGljOgotICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR0ltYWdlKCk7CiAKICAgICBTVkdJ
bWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkocmV2aXNpb24gMTk5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKLVJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0lu
bGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKIHsKICAgICBzZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkocmV2aXNpb24gMTk5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlbmRlclNWR0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJl
bmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255
bW91cygpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJT
VkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR01vZGVsT2JqZWN0
OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkK
ICAgICAsIG1faGFzU1ZHU2hhZG93KGZhbHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkocmV2aXNpb24gMTk5
OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBTVkdFbGVt
ZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QoU1ZHRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Bh
dGg6OlJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCShyZXZpc2lvbiAxOTk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlbmRlclNWR1BhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUGF0aChTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdQYXRoKCk7CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
UmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdS
ZWN0IGZpbmFsIDogcHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJT
VkdSZWN0KFNWR1JlY3RFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR1JlY3QoKTsKIAogICAgIFNWR1JlY3RFbGVtZW50JiByZWN0RWxlbWVu
dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZH
Q2xpcFBhdGhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIo
U1ZHQ2xpcFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENs
aQogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKCk7CiAKICAg
ICBTVkdDbGlwUGF0aEVsZW1lbnQmIGNsaXBQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFNWR0NsaXBQYXRoRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHN0YXRpYyBpbmxpbmUgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zJiBzdmcKICAgICByZXR1cm4gZWxlbWVudC5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKTsKIH0KIAotUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAs
IG1faWQoZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpKQogICAgICwgbV9yZWdpc3RlcmVkKGZhbHNl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNsaWVudFJl
bmRlckxheWVyKFJlbmRlckxheWVyKik7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiAgICAgZW51bSBJbnZhbGlkYXRpb25Nb2RlIHsKICAgICAgICAgTGF5b3V0QW5kQm91
bmRhcmllc0ludmFsaWRhdGlvbiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAxOTk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
KFNWR0ZpbHRlckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjIsNyArNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
clNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICBTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRmlsdGVyRWxlbWVudD4oUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZp
bHRlclByaW1pdGl2ZUVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXQKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVu
dEVsZW1lbnQmIG5vZGUsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRp
ZW50RWxlbWVudCYgbm9kZSwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyKG5vZGUsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zaG91bGRDb2xs
ZWN0R3JhZGllbnRBdHRyaWJ1dGVzKHRydWUpCiAjaWYgVVNFKENHKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5k
ZXJPYmplY3QmKSBmaW5hbCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNW
R0dyYWRpZW50RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBlbGVtZW50KCkg
Y29uc3QgPSBkZWxldGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCgpOwogCiAgICAgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291
cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6UmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIoU1ZHTWFya2VyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoKTsKIAogICAgIFNWR01hcmtlckVsZW1lbnQmIG1hcmtl
ckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdNYXJrZXJFbGVtZW50PihSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRl
clNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRlclNW
R1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IE1hc2tlckRhdGEgewogCiBjbGFzcyBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0Vs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlcihTVkdNYXNrRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclNWR1Jlc291cmNlTWFza2VyKCk7CiAKICAgICBTVkdNYXNrRWxlbWVudCYgbWFza0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdNYXNrRWxlbWVudD4oUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6UmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdFBhdHRlcm5BdHRyaWJ1dGVzKHRy
dWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVi
bGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bihTVkdQYXR0ZXJuRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIFNWR1BhdHRlcm5FbGVt
ZW50JiBwYXR0ZXJuRWxlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxDbGllbnRz
RnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUmFkaWFsR3JhZGllbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50IGZpbmFsIDogcHVibGlj
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCk7CiAKICAgICBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3Jh
ZGllbnRFbGVtZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSb290OjpSZW5kZXJT
VkdSb290KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkK
ICAgICAsIG1faXNMYXlvdXRTaXplQ2hhbmdlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJT
VkdSb290IGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJTVkdSb290KCk7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVt
ZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTVkdTaGFwZSYgbV9yZW5kZXJlcjsKIH07
CiAKLVJlbmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdTaGFw
ZTo6UmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxzZSkgLy8gRGVmYXVsdCBp
cyBmYWxzZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkgZnJvbSB0aGUgYmVnaW5uaW5nLgog
ICAgICwgbV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERlZmF1bHQgaXMgdHJ1ZSwgc28gd2Ug
Z3JhYiBhIFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFwaGljc0VsZW1lbnQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCShyZXZpc2lv
biAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU1ZHR3JhcGhpY3NFbGVt
ZW50OwogCiBjbGFzcyBSZW5kZXJTVkdTaGFwZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhp
Y3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHU2hhcGUo
KTsKIAogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdNb2RlbE9iamVjdDo6
ZWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVFNwYW4uaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTVkdUU3BhbiBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJTVkdJbmxpbmUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFu
KFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBS
ZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAko
cmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdU
ZXh0OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAg
ICAgLCBtX25lZWRzUmVvcmRlcmluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNQb3NpdGlvbmluZ1Zh
bHVlc1VwZGF0ZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBSZW5kZXJTVkdJbmxpbmVUZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdUZXh0IGZpbmFs
IDogcHVibGljIFJlbmRlclNWR0Jsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0KFNW
R1RleHRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U1ZHVGV4dChTVkdUZXh0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJl
bmRlclNWR1RleHQoKTsKIAogICAgIFNWR1RleHRFbGVtZW50JiB0ZXh0RWxlbWVudCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0UGF0aC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNW
R1RleHRQYXRoKFNWR1RleHRQYXRoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aChT
VkdUZXh0UGF0aEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHRQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZW5kZXJTVkdUZXh0UGF0aCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdJ
bmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclNWR1RleHRQYXRoKFNWR1RleHRQYXRoRWxlbWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHRQYXRo
KFNWR1RleHRQYXRoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgU1ZHVGV4dFBhdGhF
bGVtZW50JiB0ZXh0UGF0aEVsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiAgICAgLCBtX2RpZFRy
YW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
ci5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiBj
bGFzcyBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRl
clNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
KCkgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdDb250YWlu
ZXI6OmVsZW1lbnQoKSk7IH0KIAogICAgIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lcjo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQog
ICAgICwgbV9pc0xheW91dFNpemVDaGFuZ2VkKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIu
aAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0Nv
bnRhaW5lciBpbnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNz
IFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRh
aW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFNWR1NW
R0VsZW1lbnQmIHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTEsNyArMjUxLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgog
ICAgIGlmIChzaG91bGRDcmVhdGVOZXdSZW5kZXJlcikgewogICAgICAgICBpZiAoZWxlbWVudC5o
YXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkKICAgICAgICAgICAgIGVsZW1lbnQud2ls
bEF0dGFjaFJlbmRlcmVycygpOwotICAgICAgICBjcmVhdGVSZW5kZXJlcihlbGVtZW50LCBXVEZN
b3ZlKHVwZGF0ZS5zdHlsZSkpOworICAgICAgICBjcmVhdGVSZW5kZXJlcihlbGVtZW50LCBXVEZN
b3ZlKCp1cGRhdGUuc3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5VGV4
dFNpYmxpbmdzQWZ0ZXJBdHRhY2hJZk5lZWRlZChlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTI2MSwxOSArMjYxLDE5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0
ZUVsZW1lbnRSZW4KICAgICBhdXRvJiByZW5kZXJlciA9ICplbGVtZW50LnJlbmRlcmVyKCk7CiAK
ICAgICBpZiAodXBkYXRlLmlzU3ludGhldGljKSB7Ci0gICAgICAgIHJlbmRlcmVyLnNldFN0eWxl
KFdURk1vdmUodXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcik7
CisgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1vdmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxl
RGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6Ok5vQ2hhbmdlKSB7CiAgICAgICAgIGlmIChw
c2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKCZyZW5kZXJlciwgdXBkYXRlLnN0eWxlLmdldCgpKSB8
fCAocGFyZW50KCkuc3R5bGVDaGFuZ2UgPT0gU3R5bGU6OkZvcmNlICYmIHJlbmRlcmVyLnJlcXVp
cmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpKSkgewotICAgICAgICAgICAgcmVuZGVy
ZXIuc2V0U3R5bGUoV1RGTW92ZSh1cGRhdGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VFcXVhbCk7
CisgICAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKCp1cGRhdGUuc3R5bGUpLCBT
dHlsZURpZmZlcmVuY2VFcXVhbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1vdmUodXBk
YXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOworICAgIHJlbmRlcmVyLnNldFN0eWxl
KFdURk1vdmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0KIAogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKQEAgLTI4OSwxNyArMjg5LDE3IEBAIHN0YXRpYyBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIG1vdmVUb0Zsb3cKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlclRyZWVV
cGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVy
ZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBpZiAoIXNo
b3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRG
bG93UmVuZGVyZXIgPSBudWxscHRyOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBwYXJl
bnRGbG93UmVuZGVyZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgKnN0eWxl
KTsKKyAgICBwYXJlbnRGbG93UmVuZGVyZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxl
bWVudCwgc3R5bGUpOwogI2VuZGlmCiAKLSAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXJJc05lZWRl
ZCgqc3R5bGUpKQorICAgIGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uKCkuY29tcHV0ZU5leHRTaWJs
aW5nKGVsZW1lbnQpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKEUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1h
dGVkU3R5bGU7CiAgICAgbmV3UmVuZGVyZXItPmFuaW1hdGlvbigpLnVwZGF0ZUFuaW1hdGlvbnMo
Km5ld1JlbmRlcmVyLCBpbml0aWFsU3R5bGUsIGFuaW1hdGVkU3R5bGUpOwogICAgIGlmIChhbmlt
YXRlZFN0eWxlKQotICAgICAgICBuZXdSZW5kZXJlci0+c2V0U3R5bGVJbnRlcm5hbChXVEZNb3Zl
KGFuaW1hdGVkU3R5bGUpKTsKKyAgICAgICAgbmV3UmVuZGVyZXItPnNldFN0eWxlSW50ZXJuYWwo
V1RGTW92ZSgqYW5pbWF0ZWRTdHlsZSkpOwogCiAgICAgbmV3UmVuZGVyZXItPmluaXRpYWxpemVT
dHlsZSgpOwogCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBk
YXRlQmVmb3JlT3JBZgogCiAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGUgZWxlbWVudFVwZGF0ZTsK
IAotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VycmVudC5yZW5kZXJl
cigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCwgJmN1cnJlbnQucmVuZGVyZXIoKS0+
c3R5bGUoKSkpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmN1
cnJlbnQucmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQsICZjdXJyZW50
LnJlbmRlcmVyKCktPnN0eWxlKCkpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gYW5pbWF0ZWRTdHlsZTsKICAgICBpZiAocmVuZGVyZXIgJiYgbV9kb2N1bWVudC5mcmFtZSgp
LT5hbmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCpyZW5kZXJlciwgKm5ld1N0eWxlLCBhbmlt
YXRlZFN0eWxlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIu
aAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KTsKICAgICB2b2lkIHVwZGF0
ZVRleHRSZW5kZXJlcihUZXh0Jik7CiAgICAgdm9pZCB1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxl
bWVudCYsIFN0eWxlOjpFbGVtZW50VXBkYXRlJik7Ci0gICAgdm9pZCBjcmVhdGVSZW5kZXJlcihF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgdm9pZCBjcmVhdGVS
ZW5kZXJlcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlV2hp
dGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKE5vZGUmKTsKICAgICB2
b2lkIHVwZGF0ZUJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBQc2V1ZG9JZCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSk7CiAKQEAg
LTU1LDE5ICs1NSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JE
CiAKICAgICBhdXRvIGRvY3VtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAKLSAg
ICBkb2N1bWVudFN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBkb2N1bWVudFN0eWxlLT5z
ZXRSVExPcmRlcmluZyhkb2N1bWVudC52aXN1YWxseU9yZGVyZWQoKSA/IFZpc3VhbE9yZGVyIDog
TG9naWNhbE9yZGVyKTsKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRab29tKCFkb2N1bWVudC5wcmlu
dGluZygpID8gcmVuZGVyVmlldy5mcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKLSAgICBk
b2N1bWVudFN0eWxlLT5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFtZSgpLmZy
YW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkb2N1bWVudEZv
bnREZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGRv
Y3VtZW50U3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRSVExP
cmRlcmluZyhkb2N1bWVudC52aXN1YWxseU9yZGVyZWQoKSA/IFZpc3VhbE9yZGVyIDogTG9naWNh
bE9yZGVyKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFpvb20oIWRvY3VtZW50LnByaW50aW5nKCkg
PyByZW5kZXJWaWV3LmZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSA6IDEpOworICAgIGRvY3VtZW50
U3R5bGUuc2V0UGFnZVNjYWxlVHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxl
RmFjdG9yKCkpOworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZG9jdW1lbnRGb250RGVzY3Jp
cHRpb24gPSBkb2N1bWVudFN0eWxlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGRvY3VtZW50Rm9u
dERlc2NyaXB0aW9uLnNldExvY2FsZShkb2N1bWVudC5jb250ZW50TGFuZ3VhZ2UoKSk7Ci0gICAg
ZG9jdW1lbnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZG9jdW1lbnRGb250RGVz
Y3JpcHRpb24pKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3Zl
KGRvY3VtZW50Rm9udERlc2NyaXB0aW9uKSk7CiAKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkg
LXdlYmtpdC11c2VyLW1vZGlmeSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KLSAg
ICBkb2N1bWVudFN0eWxlLT5zZXRVc2VyTW9kaWZ5KGRvY3VtZW50LmluRGVzaWduTW9kZSgpID8g
UkVBRF9XUklURSA6IFJFQURfT05MWSk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRVc2VyTW9kaWZ5
KGRvY3VtZW50LmluRGVzaWduTW9kZSgpID8gUkVBRF9XUklURSA6IFJFQURfT05MWSk7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGlmIChkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSkKLSAgICAgICAg
ZG9jdW1lbnRTdHlsZS0+c2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3RtZW50KE5vVGV4
dFNpemVBZGp1c3RtZW50KSk7CisgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0VGV4dFNpemVBZGp1
c3QoVGV4dFNpemVBZGp1c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CiAjZW5kaWYKIAog
ICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKQEAg
LTc5LDI0ICs3OSwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JE
CiAgICAgICAgIGF1dG8qIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpOwogICAgICAg
ICBSZW5kZXJPYmplY3QqIGJvZHlSZW5kZXJlciA9IGJvZHkgPyBib2R5LT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKICAgICAgICAgaWYgKGJvZHlSZW5kZXJlciAmJiAhZG9jRWxlbWVudFJlbmRlcmVy
LT5zdHlsZSgpLmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgZG9j
dW1lbnRTdHlsZS0+c2V0V3JpdGluZ01vZGUoYm9keVJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdN
b2RlKCkpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRXcml0aW5nTW9kZShib2R5UmVu
ZGVyZXItPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUtPnNldFdyaXRpbmdNb2RlKGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUo
KS53cml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0V3JpdGluZ01v
ZGUoZG9jRWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwogICAgICAgICBp
ZiAoYm9keVJlbmRlcmVyICYmICFkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGlj
aXRseVNldERpcmVjdGlvbigpKQotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0
aW9uKGJvZHlSZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSk7CisgICAgICAgICAgICBkb2N1
bWVudFN0eWxlLnNldERpcmVjdGlvbihib2R5UmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXREaXJlY3Rpb24o
ZG9jRWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50U3R5bGUuc2V0RGlyZWN0aW9uKGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5kaXJl
Y3Rpb24oKSk7CiAgICAgfQogCiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbiA9IHJl
bmRlclZpZXcuZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpOwogICAgIGlmIChwYWdpbmF0aW9uLm1v
ZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpIHsKLSAgICAgICAgZG9jdW1lbnRTdHlsZS0+
c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKHBhZ2luYXRpb24ubW9kZSk7Ci0gICAg
ICAgIGRvY3VtZW50U3R5bGUtPnNldENvbHVtbkdhcChwYWdpbmF0aW9uLmdhcCk7CisgICAgICAg
IGRvY3VtZW50U3R5bGUuc2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKHBhZ2luYXRp
b24ubW9kZSk7CisgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0Q29sdW1uR2FwKHBhZ2luYXRpb24u
Z2FwKTsKICAgICAgICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpCi0g
ICAgICAgICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKCpk
b2N1bWVudFN0eWxlKTsKKyAgICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jl
c3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LmZy
YW1lKCkucGFnZSgpLT5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKCkpIHsKLSAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUtPnNldExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1n
cmlkIik7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRMaW5lU25hcChMaW5lU25hcENv
bnRhaW4pOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1k
ZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCIpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRM
aW5lU25hcChMaW5lU25hcENvbnRhaW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEsMTcg
KzExMSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JECiAgICAg
aW50IHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1
bWVudCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7CiAgICAg
Ym9vbCB1c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7Ci0gICAgZm9u
dERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmll
ZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21S
dWxlcywgZG9jdW1lbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQpKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXpl
LCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzLCAmZG9j
dW1lbnRTdHlsZSwgZG9jdW1lbnQpKTsKIAogICAgIEZvbnRPcmllbnRhdGlvbiBmb250T3JpZW50
YXRpb247CiAgICAgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uOwotICAg
IHN0ZDo6dGllKGZvbnRPcmllbnRhdGlvbiwgZ2x5cGhPcmllbnRhdGlvbikgPSBkb2N1bWVudFN0
eWxlLT5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIHN0ZDo6dGllKGZvbnRPcmllbnRh
dGlvbiwgZ2x5cGhPcmllbnRhdGlvbikgPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVu
dGF0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRh
dGlvbik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5
cGhPcmllbnRhdGlvbik7CiAKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pOwogCi0gICAgZG9jdW1lbnRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRh
dGUoJmNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihkb2N1bWVudCkuZm9udFNlbGVjdG9yKCkpOworICAg
IGRvY3VtZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmNvbnN0X2Nhc3Q8RG9jdW1lbnQm
Pihkb2N1bWVudCkuZm9udFNlbGVjdG9yKCkpOwogCiAgICAgcmV0dXJuIGRvY3VtZW50U3R5bGU7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZUZvckRvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
UmVuZGVyU3R5bGU7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7CitSZW5kZXJTdHls
ZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogfQogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkocmV2aXNpb24g
MTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBTaGFyaW5nUmVzbwogCiAgICAgbV9lbGVtZW50c1NoYXJpbmdTdHlsZS5hZGQoJmVs
ZW1lbnQsIHNoYXJlRWxlbWVudCk7CiAKLSAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKHVw
ZGF0ZS5lbGVtZW50U3R5bGUoKnNoYXJlRWxlbWVudCkpOworICAgIHJldHVybiBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKnVwZGF0ZS5lbGVtZW50U3R5bGUoKnNoYXJlRWxlbWVudCkpOwogfQogCiBT
dHlsZWRFbGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OmZpbmRTaWJsaW5nKGNvbnN0IENvbnRleHQm
IGNvbnRleHQsIE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5OTk3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVQbGFjZWhvbGRlclN0eWxl
KERvY3VtCiB7CiAgICAgaWYgKHBsYWNlaG9sZGVyU3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAg
ICBwbGFjZWhvbGRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpLnJlbGVhc2UoKTsKKyAg
ICBwbGFjZWhvbGRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpLnJlbGVhc2UoKTsK
ICAgICBwbGFjZWhvbGRlclN0eWxlLT5zZXREaXNwbGF5KE5PTkUpOwogICAgIHBsYWNlaG9sZGVy
U3R5bGUtPnNldElzUGxhY2Vob2xkZXJTdHlsZSgpOwogICAgIHBsYWNlaG9sZGVyU3R5bGUtPmZv
bnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CkBAIC0xMjMsNyAr
MTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZQogewogICAg
IGlmICghbV9kb2N1bWVudC5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiAhZWxlbWVudC5yZW5k
ZXJlcigpKSB7CiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJT
dHlsZSgpOwotICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKHBsYWNlaG9sZGVyU3R5
bGUpOworICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpwbGFjZWhvbGRlclN0
eWxlKTsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHlsZVJlc29sdmVDYWxs
YmFja3MoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVy
OjpyZXNvbHZlRWxlbWUKICAgICAgICAgdXBkYXRlLmlzU3ludGhldGljID0gdHJ1ZTsKIAogICAg
IGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
IG1fZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodXBkYXRlLnN0eWxl
LmdldCgpKTsKKyAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLnNl
dE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQo
KSk7CiAKICAgICAgICAgLy8gSWYgInJlbSIgdW5pdHMgYXJlIHVzZWQgYW55d2hlcmUgaW4gdGhl
IGRvY3VtZW50LCBhbmQgaWYgdGhlIGRvY3VtZW50IGVsZW1lbnQncyBmb250IHNpemUgY2hhbmdl
cywgdGhlbiBmb3JjZSBmb250IHVwZGF0aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNWR0FFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUo
KSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWEKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR1RTcGFuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHQWx0R2x5cGhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAg
ICB9CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDaXJj
bGVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KEN4LCBjeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHQ2xpcFBh
dGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdD
bGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVu
dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRGVmc0VsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5D
b250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRGVmc0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRz
Rm9jdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0RlZnNFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
bGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBTVkdHcmFwaGljc0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODMsNyArMTgzLDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
YwogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7
CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAx
OTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICAgICAgZmlsdGVyRWZmZWN0LT5z
ZXRIYXNIZWlnaHQodHJ1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0Zp
bHRlckVmZmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3
IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRm9yZWlnbk9iamVjdD4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgU1ZHR0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY28KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICAvLyBTVkcgMS4xIHRlc3RzdWl0ZSBleHBsaWNpdGVseSB1c2VzIGNvbnN0cnVj
dHMgbGlrZSA8ZyBkaXNwbGF5PSJub25lIj48bGluZWFyR3JhZGllbnQ+CiAgICAgLy8gV2Ugc3Rp
bGwgaGF2ZSB0byBjcmVhdGUgcmVuZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdyYWRpZW50
PiBlbGVtZW50LCB0aG91Z2ggdGhlCiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVuIC0gd2Ug
b25seSB3YW50IHRoZSByZXNvdXJjZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBjYW4gYmUK
ICAgICAvLyByZWZlcmVuY2VkIGZyb20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0eWxlLT5k
aXNwbGF5KCkgPT0gTk9ORSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBGbG9h
dFJlY3QgU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRCQm94KFN0CiAgICAgcmV0dXJuIFNWR1RyYW5z
Zm9ybWFibGU6OmdldEJCb3godGhpcywgc3R5bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dyYXBoaWNzRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgLy8gQnkgZGVmYXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVj
dGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2luZwogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vICJiYXNlIGNsYXNzIiBtZXRob2RzIGZvciBhbGwgdGhl
IGVsZW1lbnRzIHdoaWNoIHJlbmRlciBhcyBwYXRocwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQ
YXRoKFBhdGgmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNW
R0ltYWdlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgog
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAx
OTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6
c2V0T3JpZW50VG9BbmdsZSgKICAgICBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50QW5nbGUsIGFu
Z2xlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01h
cmtlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcg
QEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbgogICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdN
YXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyAr
NDA0LDcgQEAgRmxvYXRSZWN0IFNWR1BhdGhFbGVtZW50OjpnZXRCQm94KFN0eWxlVQogICAgIHJl
dHVybiByZW5kZXJlci0+cGF0aCgpLmJvdW5kaW5nUmVjdCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0aC1i
YXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1BhdGg+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVk
SW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lk
IFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiAgICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUGF0dGVybj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lv
biAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBTVkdHcmFw
aGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVjdD4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShy
ZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQogICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgYm9vbCBT
VkdTVkdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbgogICAgIHJldHVybiBTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIGlmIChp
c091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR1Jvb3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50
KSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVt
b3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcg
QEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIFNWR0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHR3JhZGllbnRTdG9wPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJl
dmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzR3Jh
ZGllbnRTdG9wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0b3BFbGVtZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGUKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTd2l0Y2hFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkocmV2aXNp
b24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAogICAgIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N3aXRjaEVsZW1lbnQpCiAg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw3IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICByZXR1
cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE5OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFNWR1RSZWZF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24g
MTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBSZWY8U1ZHVFNwYW5FbGVtZW50PiBTVkdU
U3BhbkVsZW1lbnQ6OmNyCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVFNwYW5FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdU
U3BhbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RTcGFuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24gMTk5OTc0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHVFNwYW5FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgICAgICAgICAgCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTk5NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6YW5pbWF0ZWQK
ICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVGV4
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHVGV4dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAxOTk5NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1RleHRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3
ICsxMjMsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1Rl
eHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVGV4dFBhdGg+KCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZp
c2lvbiAxOTk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAkocmV2aXNpb24gMTk5OTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgU1ZHRWxlbWVudCogU1ZHVXNl
RWxlbWVudDo6dGFyZ2V0Q2xvbmUoKQogICAgIHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihy
b290LT5maXJzdENoaWxkKCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVXNl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE5
OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIHRv
Q2xpcFBhdGgoUGF0aCYpIG92ZXJyaWRlOwogICAgIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVz
b3VyY2VzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVy
cmlkZTsK
</data>
<flag name="review"
          id="301477"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277257</attachid>
            <date>2016-04-25 10:25:57 -0700</date>
            <delta_ts>2016-04-25 10:58:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inline-renderstyle-7.patch</filename>
            <type>text/plain</type>
            <size>395791</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyOCBAQAorMjAxNi0wNC0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIFJlbmRlclN0eWxl
IHRvIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1Njk4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlIGNhbiBzYXZlIG1lbW9yeSBhbmQgcmVkdWNlIGluZGlyZWN0aW9uIG9mIHN0
eWxlIGFjY2VzcyBieSBpbmxpbmluZyBSZW5kZXJTdHlsZSB0byBSZW5kZXJFbGVtZW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBSZW5kZXJTdHlsZSBtb3ZlYWJsZSBhbmQgc3dp
dGNoZXMgZnJvbSBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHRvIFJlbmRlclN0eWxlJiYK
KyAgICAgICAgaW4gbWFueSBwbGFjZXMgd2hlcmUgb3duZXJzaGlwIGlzIHBhc3NlZC4KKworICAg
ICAgICAqIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUmVwbGFjZW1lbnQ6OnNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5SZXBsYWNlbWVudDo6d2lsbENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WW91
VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpz
dHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVG
b3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHls
ZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJv
cGVydGllc0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHlUb1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvcHlOb25BdHRy
aWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAg
ICAgICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxCUkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxCdXR0b25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxl
bWVudDo6SFRNTERldGFpbHNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmZvcm0pOgorICAg
ICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJh
bWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVs
ZW1lbnQ6OmFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVHJ1bmNhdGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNv
bnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRMb2FkQXNOZXRzY2Fw
ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1t
YXJ5RWxlbWVudDo6SFRNTFN1bW1hcnlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MV0JS
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MV0JSRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlw
ZTo6c3VwcG9ydHNWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlw
ZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IaWRkZW5JbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0ltYWdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpmb3JtRm9yU3VibWlzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5w
dXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2xpZGVyVGh1bWJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SdWJ5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSdWJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1YnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUnVi
eUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1J1YnlUZXh0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSdWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
dWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9S
dWJ5VGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6Om1heFJlc3VsdHNBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEZvbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2Vy
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29u
dHJvbC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6
c2V0VGltZURpc3BsYXlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NJbm5lckVs
ZW1lbnQ6OlByb2dyZXNzSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNz
SW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXJUaHVtYjo6
UmVuZGVyU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50
OjpzZXRQb3NpdGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJD
b250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJDb250
YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlQ29udHJv
bHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xz
OjpSZW5kZXJJbWFnZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6
VlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VlRUQ3VlLmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1l
bmNsb3NlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3Nl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
TWVuY2xvc2VFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBt
YXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJl
bmRlcmVyKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9u
cyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0
aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6Z2V0
QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudDo6UmVuZGVyQXR0YWNobWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJl
bmRlckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xvbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
TWFyZ2luSW5mbzo6TWFyZ2luSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OlJlbmRlckJsb2NrRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmNyZWF0ZU11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpza2lwQm9keUJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
dXR0b246OlJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJDb21iaW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNSZW5k
ZXJlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcik6CisgICAgICAgIChXZWJD
b3JlOjpmaXJzdExpbmVTdHlsZUZvckNhY2hlZFVuY2FjaGVkVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50Ojppbml0aWFsaXplU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6cHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpoYXNJbml0aWFsaXpl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlSW50ZXJuYWwpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6flJlbmRlckVtYmVkZGVkT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6UmVu
ZGVyRmllbGRzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1Ro
cmVhZFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGcmFtZTo6UmVuZGVyRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFz
ZTo6Y2hpbGRWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVuUGxh
Y2Vob2xkZXI6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxs
U2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxT
Y3JlZW46OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdWxsU2Ny
ZWVuU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxh
Y2Vob2xkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFjZUZvckRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52YXMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OlJl
bmRlcklGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5s
aW5lOjpSZW5kZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU3R5bGVPZkFub255
bW91c0Jsb2NrQ29udGludWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRkQ2hp
bGRJZ25vcmluZ0NvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmNsb25lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmpl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojppc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpSZW5kZXJM
aXN0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJr
ZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RN
YXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1l
ZGlhOjpSZW5kZXJNZWRpYSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xp
ZGVyQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0ZWRPcHRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QpOgorICAgICAgICAoUmVuZGVyTWVu
dUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZDo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZDo6cHJvY2Vzc1Bvc3NpYmxlU3Bhbm5lckRlc2NlbmRhbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OmNyZWF0ZUFub255bW91
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6On5SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1
dGVDaGlsZHJlblN0eWxlSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6OnNldE9iamVjdFN0eWxlSW5SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVzdG9yZVJlZ2lvbk9i
amVjdHNPcmlnaW5hbFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBk
YXRlV3JpdGluZ01vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUXVvdGU6OlJlbmRlclF1b3RlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OmFic29sdXRlUXVhZHNGb3JCb3hJblJlZ2lvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxp
Y2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0lubGluZTo6
UmVuZGVyUnVieUFzSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0Jsb2Nr
OjpSZW5kZXJSdWJ5QXNCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnkuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlSdW46OmNyZWF0ZVJ1YnlCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6
OlJlbmRlclNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlz
aWJpbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbGlkZXI6OlJlbmRlclNsaWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxl
Q2FwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OlJlbmRl
clRhYmxlQ29sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlTG9naWNhbEhlaWdodEZvckNl
bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNl
Y3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRD
dWU6OlJlbmRlclZUVEN1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRl
by5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cldpZGdldDo6UmVuZGVyV2lkZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEF1dG9TaXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6Y3JlYXRlQW5vbnltb3VzTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
RnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1hdGg6
OlJlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2U6OlJlbmRlck1h
dGhNTE1lbmNsb3NlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1l
bmNsb3NlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0
aE1MT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVw
ZGF0ZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
OjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um9vdDo6cmVzdHJ1Y3R1cmVXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb290Ojp1cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290
V3JhcHBlcjo6Y3JlYXRlQW5vbnltb3VzV3JhcHBlcik6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpSZW5k
ZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzUHJlc2NyaXB0RGVsaW1pdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlwdHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjplbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRlZmF1
bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9u
ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5
bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0U3R5bGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjpn
cmFwaGljc0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZH
Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjppc09iamVjdEJvdW5kaW5n
Qm94VmFsaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdFbGxpcHNlOjpSZW5kZXJTVkdFbGxpcHNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVudFN0b3ApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lu
bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Z3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpS
ZW5kZXJTVkdQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdmdFeHRl
bnNpb25zRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
cjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJh
ZGlhbEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFwZTo6UmVuZGVyU1ZHU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpncmFwaGljc0VsZW1l
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBh
dGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAg
KiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
cmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1v
dmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBk
YXRlcjo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OnVwZGF0ZUJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBzdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQpOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50Lmg6CisgICAgICAgICogc3R5
bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNo
YXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2hhcmlu
Z1Jlc29sdmVyOjpmaW5kU2libGluZyk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmVuc3VyZVBsYWNlaG9sZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50Ojppc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRmls
dGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R3JhcGhpY3NFbGVtZW50OjpnZXRCQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNz
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5n
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
RWxlbWVudDo6Z2V0QkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
d2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdT
d2l0Y2hFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3Rocyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNw
YW5FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNwYW5FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0
YXJnZXRDbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisKIDIwMTYtMDQt
MjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjE1Njg0Nik6IENyYXNoZXMgd2l0aCBndWFyZCBtYWxsb2MKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFj
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSB7IHJldHVybiBudWxscHRyOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOwogfTsKIAogdHlwZWRlZiBS
ZWY8UGx1Z2luUmVwbGFjZW1lbnQ+ICgqQ3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQpKEhUTUxQbHVn
SW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBmaW5hbCB7IHJldHVybiBt
X3NjcmlwdE9iamVjdDsgfQogCiAgICAgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSBmaW5hbCB7
IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICBib29sIGVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKTsKICAgICBET01XcmFw
cGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0J
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3
IEBAIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp+UXVpY2tUaW1lUGwKICAgICBtX21lZGlh
RWxlbWVudCA9IG51bGxwdHI7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVt
ZW50JiBwbHVnaW4sIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OllvdVR1YmVQbHVnaW5SCiAgICAg
ICAgIG1fYXR0cmlidXRlcy5hZGQocGFyYW1OYW1lc1tpXSwgcGFyYW1WYWx1ZXNbaV0pOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRp
b25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBv
c2l0aW9uKQogewogICAgIEFTU0VSVF9VTlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0g
JnBsdWdpbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyB5
b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJMKTsKIAogICAgIGJvb2wgd2lsbENyZWF0ZVJl
bmRlcmVyKCkgZmluYWwgeyByZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQ7IH0KLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIG1fcGFyZW50RWxl
bWVudDsKICAgICBSZWZQdHI8WW91VHViZUVtYmVkU2hhZG93RWxlbWVudD4gbV9lbWJlZFNoYWRv
d0VsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4OCwxMSArMzg4LDExIEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVy
OjpzdHlsZUZvckVsZW0KICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgaWYgKHN0
YXRlLnBhcmVudFN0eWxlKCkpIHsKLSAgICAgICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6
OmNyZWF0ZSgpKTsKKyAgICAgICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0
cigpKTsKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+aW5oZXJpdEZyb20oc3RhdGUucGFyZW50U3R5
bGUoKSwgaXNBdFNoYWRvd0JvdW5kYXJ5KGVsZW1lbnQpID8gUmVuZGVyU3R5bGU6OkF0U2hhZG93
Qm91bmRhcnkgOiBSZW5kZXJTdHlsZTo6Tm90QXRTaGFkb3dCb3VuZGFyeSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc3RhdGUuc2V0U3R5bGUoZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKLSAg
ICAgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHN0YXRlLnN0eWxl
KCkpKTsKKyAgICAgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCpzdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQogCiAgICAgYXV0byYgc3R5bGUgPSAqc3RhdGUuc3R5
bGUoKTsKQEAgLTQ1Myw4ICs0NTMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAogICAgIC8vIENyZWF0ZSB0
aGUgc3R5bGUKLSAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoZWxlbWVudFN0
eWxlKSk7Ci0gICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKGVsZW1l
bnRTdHlsZSkpOworICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqZWxl
bWVudFN0eWxlKSk7CisgICAgc3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25l
UHRyKCplbGVtZW50U3R5bGUpKTsKIAogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAg
IFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlOwpAQCAtNTY1LDExICs1NjUsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdgogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3Rh
dGU7CiAKICAgICBpZiAobV9zdGF0ZS5wYXJlbnRTdHlsZSgpKSB7Ci0gICAgICAgIHN0YXRlLnNl
dFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CisgICAgICAgIHN0YXRlLnNldFN0eWxlKFJl
bmRlclN0eWxlOjpjcmVhdGVQdHIoKSk7CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXRG
cm9tKG1fc3RhdGUucGFyZW50U3R5bGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGUu
c2V0U3R5bGUoZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKLSAgICAgICAgc3RhdGUuc2V0UGFy
ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHN0YXRlLnN0eWxlKCkpKTsKKyAgICAgICAgc3Rh
dGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpzdGF0ZS5zdHlsZSgpKSk7
CiAgICAgfQogCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgdXNlIHBzZXVkby1lbGVtZW50cyBpbiBh
bnkgb2Ygb3VyIHF1aXJrL3ByaW50IHVzZXIgYWdlbnQgcnVsZXMsIGRvbid0IHdhc3RlIHRpbWUg
d2Fsa2luZwpAQCAtNjE0LDExICs2MTQsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBTdHlsZVJlc29sdgogCiAgICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpj
cmVhdGVQdHIoKTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZSgqZG9jdW1lbnRFbGVtZW50LCBtX2Rv
Y3VtZW50LnJlbmRlclN0eWxlKCkpOwogCi0gICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHls
ZTo6Y3JlYXRlKCkpOworICAgIG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZVB0
cigpKTsKICAgICBtX3N0YXRlLnN0eWxlKCktPmluaGVyaXRGcm9tKG1fc3RhdGUucm9vdEVsZW1l
bnRTdHlsZSgpKTsKIAogICAgIFBhZ2VSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihtX3N0YXRlLCBt
X3J1bGVTZXRzKTsKQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IFN0eWxlUmVzb2x2CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpCiB7Ci0gICAgbV9zdGF0ZS5zZXRTdHlsZShS
ZW5kZXJTdHlsZTo6Y3JlYXRlKCkpOworICAgIG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6
OmNyZWF0ZVB0cigpKTsKICAgICAvLyBNYWtlIHN1cmUgb3VyIGZvbnRzIGFyZSBpbml0aWFsaXpl
ZCBpZiB3ZSBkb24ndCBpbmhlcml0IHRoZW0gZnJvbSBvdXIgcGFyZW50IHN0eWxlLgogICAgIGlu
aXRpYWxpemVGb250U3R5bGUoZG9jdW1lbnRTZXR0aW5ncygpKTsKICAgICBpZiAoZG9jdW1lbnRT
ZXR0aW5ncygpKQpAQCAtMTIxMyw4ICsxMjEzLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRU
b01hdGNoZWRQcm9wZXJ0aQogICAgIGNhY2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5n
ZXM7CiAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJT
dHlsZSBpbnN0YW5jZS4gSXQgbWF5IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJl
bmRlclN0eWxlIGluIHRoZSBjYWNoZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1
YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQgYXMtaXMuCi0gICAgY2FjaGVJdGVtLnJlbmRlclN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKTsKLSAgICBjYWNoZUl0ZW0ucGFyZW50UmVu
ZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50U3R5bGUpOworICAgIGNhY2hlSXRl
bS5yZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqc3R5bGUpOworICAgIGNhY2hl
SXRlbS5wYXJlbnRSZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqcGFyZW50U3R5
bGUpOwogICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5hZGQoaGFzaCwgV1RGTW92ZShjYWNo
ZUl0ZW0pKTsKIH0KIApAQCAtMTM5Myw3ICsxMzkzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseU1hdGNoZWRQcm9wZXJ0aQogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5VG9T
dHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgbV9zdGF0ZSA9IFN0YXRlKCk7Ci0gICAgbV9zdGF0
ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUuZ2V0KCkpKTsKKyAgICBt
X3N0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqc3R5bGUpKTsKICAg
ICBtX3N0YXRlLnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICBhcHBseVByb3BlcnR5VG9D
dXJyZW50U3R5bGUoaWQsIHZhbHVlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg3NiwxMCArMTg3NiwxMCBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNT
dHlsZShTdHlsZTo6Q2hhbmdlCiAgICAgICAgICAgICAvLyBmb250IHNlbGVjdG9yLCBzbyBzZXQg
YSBmb250IHNlbGVjdG9yIGlmIG5lZWRlZC4KICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0
dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdz
LT5mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJmZvbnRTZWxlY3RvcigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZm9u
dFNlbGVjdG9yKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGRvY3VtZW50
Q2hhbmdlID0gU3R5bGU6OmRldGVybWluZUNoYW5nZSgqZG9jdW1lbnRTdHlsZSwgbV9yZW5kZXJW
aWV3LT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGF1dG8gZG9jdW1lbnRDaGFuZ2UgPSBTdHlsZTo6
ZGV0ZXJtaW5lQ2hhbmdlKGRvY3VtZW50U3R5bGUsIG1fcmVuZGVyVmlldy0+c3R5bGUoKSk7CiAg
ICAgICAgICAgICBpZiAoZG9jdW1lbnRDaGFuZ2UgIT0gU3R5bGU6Ok5vQ2hhbmdlKQogICAgICAg
ICAgICAgICAgIHJlbmRlclZpZXcoKS0+c2V0U3R5bGUoV1RGTW92ZShkb2N1bWVudFN0eWxlKSk7
CiAgICAgICAgIH0KQEAgLTU4MzUsNyArNTgzNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdp
bGxFbnRlckZ1bGxTY3JlZW4KICAgICBib29sIHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyID0gaXM8
UmVuZGVyQm94PihyZW5kZXJlcik7CiAgICAgaWYgKHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyKSB7
CiAgICAgICAgIG1fc2F2ZWRQbGFjZWhvbGRlckZyYW1lUmVjdCA9IGRvd25jYXN0PFJlbmRlckJv
eD4oKnJlbmRlcmVyKS5mcmFtZVJlY3QoKTsKLSAgICAgICAgbV9zYXZlZFBsYWNlaG9sZGVyUmVu
ZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAg
ICAgbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
cmVuZGVyZXItPnN0eWxlKCkpOwogICAgIH0KIAogICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50
ICE9IGRvY3VtZW50RWxlbWVudCgpKQpAQCAtNTkxNSw3ICs1OTE1LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJlbgogICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxh
Y2Vob2xkZXIoV1RGTW92ZShtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZSksIG1fc2F2ZWRQ
bGFjZWhvbGRlckZyYW1lUmVjdCk7CiAgICAgZWxzZSBpZiAocmVuZGVyZXIgJiYgbV9mdWxsU2Ny
ZWVuUmVuZGVyZXIgJiYgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnBsYWNlaG9sZGVyKCkpIHsKICAg
ICAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyID0gbV9mdWxsU2NyZWVuUmVuZGVyZXItPnBs
YWNlaG9sZGVyKCk7Ci0gICAgICAgIHJlbmRlcmVyLT5jcmVhdGVQbGFjZWhvbGRlcihSZW5kZXJT
dHlsZTo6Y2xvbmUoJnBsYWNlaG9sZGVyLT5zdHlsZSgpKSwgcGxhY2Vob2xkZXItPmZyYW1lUmVj
dCgpKTsKKyAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0eWxlOjpj
bG9uZVB0cihwbGFjZWhvbGRlci0+c3R5bGUoKSksIHBsYWNlaG9sZGVyLT5mcmFtZVJlY3QoKSk7
CiAgICAgfQogCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRlcmVyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuCiAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSAh
PSBOT05FICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUzsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBS
ZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNv
bnN0IEVsZW1lbnQmKSB7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFBzZXVkb0Vs
ZW1lbnQ6OnJlCiAgICAgYXV0byogc3R5bGUgPSBtX2hvc3RFbGVtZW50LT5yZW5kZXJlcigpLT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkLCAmcGFyZW50U3R5bGUpOwogICAgIGlmICgh
c3R5bGUpCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIHJldHVybiBFbGVtZW50U3R5bGUo
UmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSk7CiB9CiAKIHZvaWQgUHNldWRvRWxlbWVudDo6ZGlk
QXR0YWNoUmVuZGVyZXJzKCkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFBzZXVkb0VsZW1lbnQ6
OmRpZFJlY2FsY1N0eWxlKFN0eWxlCiAgICAgICAgIC8vIFdlIG9ubHkgbWFuYWdlIHRoZSBzdHls
ZSBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IHdoaWNoIG11c3QgYmUgaW1hZ2VzIG9yIHRleHQu
CiAgICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCpjaGlsZCkgJiYgIWlzPFJlbmRlclF1b3Rl
PigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gY3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5o
ZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShyZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgYXV0byBj
cmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVk
b1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50
PigqY2hpbGQpLnNldFN0eWxlKFdURk1vdmUoY3JlYXRlZFN0eWxlKSk7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgQmFzZUJ1dHRvbklucHV0VHlw
ZTo6YXBwZW5kRm9ybURhdGEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBCYXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCdXR0b24+KGVsZW1lbnQo
KSwgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1E
YXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZy
b21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYs
IGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcg
KzE5NSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmUKICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBGaWxlSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlckZpbGVVcGxvYWRDb250cm9sPihlbGVtZW50KCksIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFsdWVNaXNzaW5n
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyB2YWx1ZU1pc3NpbmdU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2
ZW50Kikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3RoZXJUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
RmlsZUxpc3QqIGZpbGVzKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcg
QEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVybiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKCFjYW5FbWJlZEphdmEoKSkKICAgICAgICAgcmV0dXJu
IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0g
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFJlZjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
QXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0YWNobWVu
dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1l
bnQoKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgc2hvdWxkU2VsZWN0T25Nb3VzZURvd24oKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgdm9pZCBIVE1MQlJFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKLSAgICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUuaGFz
Q29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlu
ZUJyZWFrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQlJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZShjb25zdCBB
dAogICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCdXR0b24+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1dHRv
bnMgZG9uJ3QgbmVlZCBpdC4KICAgICBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwog
ICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQ2FudmFzRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgSFRNTERldGFpbHNFbGVtZW50OjpIVE1MRGV0YWlsc0VsZW1lbnQo
YwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRldGFpbHNUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY4LDcgKzg2OCw3IEBAIGJvb2wg
SFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QKICAgICByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBS
ZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3Q7CiAKICAgICBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTEZpZWxkU2V0RWxlbWVudDoKICAgICByZXR1cm4gZmllbGRzZXQ7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjb21wdXRlV2lsbFZhbGlkYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCgKICAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRnJhbWU+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw5ICsxNTcsOSBAQCBib29sIEhUTUxGcmFtZVNldEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkCiAgICAgcmV0dXJuICFzdHlsZS5pc1BsYWNlaG9sZGVyU3R5
bGUoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIGlmIChzdHlsZS0+aGFzQ29u
dGVudCgpKQorICAgIGlmIChzdHlsZS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICAKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRnJhbWVTZXQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
d2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcg
QEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVybiBp
c1VSTEFsbG93ZWQoKSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORTsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklGcmFtZT4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3NhbmRib3g7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsOSArMjU2LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
SW1hZ2VFbGVtZW50OjphbAogICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkKKyAg
ICBpZiAoc3R5bGUuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6
Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVySW1hZ2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSwgbnVsbHB0ciwgbV9pbWFn
ZURldmljZVBpeGVsUmF0aW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdlQ2FuZGlkYXRlKGNvbnN0IEltYWdlQ2FuZGlkYXRl
Jik7CiAKICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoCiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5jcmVhdGVJbnB1dFJl
bmRlcmVyKFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTE4NzUsMjMgKzE4NzUsMjMgQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpzaG91bGRUcnVuY2F0ZVRleAogICAgIHJldHVybiBkb2N1bWVudCgp
LmZvY3VzZWRFbGVtZW50KCkgIT0gdGhpcyAmJiBzdHlsZS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0
T3ZlcmZsb3dFbGxpcHNpczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0CitSZW5kZXJTdHlsZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0Qmxv
Y2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+aW5o
ZXJpdEZyb20oJnN0eWxlKTsKLSAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgKnRleHRC
bG9ja1N0eWxlKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5pbmhlcml0RnJvbSgmc3R5bGUpOworICAg
IGFkanVzdElubmVyVGV4dFN0eWxlKHN0eWxlLCB0ZXh0QmxvY2tTdHlsZSk7CiAKLSAgICB0ZXh0
QmxvY2tTdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRP
dmVyZmxvd1dyYXAoTm9ybWFsT3ZlcmZsb3dXcmFwKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0
T3ZlcmZsb3dYKE9ISURERU4pOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRPdmVyZmxvd1koT0hJ
RERFTik7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldFRleHRPdmVyZmxvdyhzaG91bGRUcnVuY2F0
ZVRleHQoc3R5bGUpID8gVGV4dE92ZXJmbG93RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3dDbGlwKTsK
KyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgdGV4dEJsb2NrU3R5
bGUuc2V0T3ZlcmZsb3dXcmFwKE5vcm1hbE92ZXJmbG93V3JhcCk7CisgICAgdGV4dEJsb2NrU3R5
bGUuc2V0T3ZlcmZsb3dYKE9ISURERU4pOworICAgIHRleHRCbG9ja1N0eWxlLnNldE92ZXJmbG93
WShPSElEREVOKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0T3ZlcmZsb3coc2hvdWxkVHJ1
bmNhdGVUZXh0KHN0eWxlKSA/IFRleHRPdmVyZmxvd0VsbGlwc2lzIDogVGV4dE92ZXJmbG93Q2xp
cCk7CiAKICAgICAvLyBEbyBub3QgYWxsb3cgbGluZS1oZWlnaHQgdG8gYmUgc21hbGxlciB0aGFu
IG91ciBkZWZhdWx0LgotICAgIGlmICh0ZXh0QmxvY2tTdHlsZS0+Zm9udE1ldHJpY3MoKS5saW5l
U3BhY2luZygpID4gc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpCi0gICAgICAgIHRleHRCbG9j
a1N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsK
KyAgICBpZiAodGV4dEJsb2NrU3R5bGUuZm9udE1ldHJpY3MoKS5saW5lU3BhY2luZygpID4gc3R5
bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpCisgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldExpbmVI
ZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogCi0gICAgdGV4dEJsb2Nr
U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXko
QkxPQ0spOwogCiAgICAgcmV0dXJuIHRleHRCbG9ja1N0eWxlOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyAr
MTQyLDcgQEAgcHVibGljOgogICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29u
c3Q7CiAgICAgCiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRleHRFbGVt
ZW50KCkgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlbmRlclN0eWxlIGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBIVE1MRWxlbWVudCogaW5uZXJCbG9ja0VsZW1lbnQoKSBjb25z
dDsKICAgICBIVE1MRWxlbWVudCogaW5uZXJTcGluQnV0dG9uRWxlbWVudCgpIGNvbnN0OwpAQCAt
MjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBjb25z
dDsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFs
OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVy
cygpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0YWNoUmVuZGVyZXJzKCkgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNywxMSArMjM3LDExIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAog
ICAgICAgICBib29sIG1lZGlhUXVlcnlNYXRjaGVzID0gdHJ1ZTsKICAgICAgICAgaWYgKCFtX21l
ZGlhLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBkb2N1bWVudFN0eWxlOworICAgICAgICAgICAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3Vt
ZW50U3R5bGU7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVl
KCkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9j
dW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVk
aWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVk
aWEpOwotICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IoZG9jdW1lbnQo
KS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLmZyYW1lKCksIGRvY3Vt
ZW50U3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0
b3IoZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLmZy
YW1lKCksIGRvY3VtZW50U3R5bGUgPyAmKmRvY3VtZW50U3R5bGUgOiBudWxscHRyKTsKICAgICAg
ICAgICAgIG1lZGlhUXVlcnlNYXRjaGVzID0gZXZhbHVhdG9yLmV2YWwobWVkaWEuZ2V0KCkpOwog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDcgKzczNiw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKICAgICByZXR1cm4gY29udHJvbHMoKSAmJiBIVE1M
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWE+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBl
bmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAjZW5kaWYKIAotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgYm9vbCBtZWRpYUNvbnRyb2xzRGVwZW5kT25Q
YWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ29udHJvbHNEZXBlbmRPblBh
Z2VTY2FsZUZhY3RvcjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw5IEBAIFJlZjxIVE1MTWV0
ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjoKICAgICByZXR1cm4gbWV0ZXI7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLnN1cHBv
cnRzTWV0ZXIoc3R5bGUtPmFwcGVhcmFuY2UoKSkpCisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2Uo
KS0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHN0eWxlLmFwcGVhcmFuY2UoKSkpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzdXBwb3J0
TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk0LDcgKzI5NCw3IEBAIE5QT2JqZWN0KiBI
VE1MUGx1Z0luRWxlbWVudDo6Z2V0TlBPYmplY3QKIAogI2VuZGlmIC8qIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKSAqLwogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNl
cnRpb25Qb3NpdGlvbikKIHsKICAgICBpZiAobV9wbHVnaW5SZXBsYWNlbWVudCAmJiBtX3BsdWdp
blJlcGxhY2VtZW50LT53aWxsQ3JlYXRlUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIG1fcGx1
Z2luUmVwbGFjZW1lbnQtPmNyZWF0ZUVsZW1lbnRSZW5kZXJlcigqdGhpcywgV1RGTW92ZShzdHls
ZSksIGluc2VydGlvblBvc2l0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKIAogICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVz
ZSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW5zdGVhZCBvZiBjYWxsaW5nIGRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50IGRpcmVjdGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTQsNyArMTk0LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExv
YWRBcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlv
blBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIEFTU0VSVCghZG9jdW1l
bnQoKS5pblBhZ2VDYWNoZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyAr
MTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIGZpbmFs
OwogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgZmluYWw7
CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw5ICs1Niw5IEBAIFJlZjxIVE1MUHJvZ3Jlc3NFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGUK
ICAgICByZXR1cm4gcHJvZ3Jlc3M7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
UHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBp
ZiAoIXN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCisgICAgaWYgKCFzdHlsZS5oYXNBcHBlYXJhbmNl
KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJQcm9ncmVzcz4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBy
b2dyZXNzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBy
b2dyZXNzRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcygpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50
OjpjYW5TZWxlY3RBbGwoKSBjCiAgICAgcmV0dXJuICF1c2VzTWVudUxpc3QoKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBpZiAodXNlc01lbnVMaXN0
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogCiAg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBmaW5h
bDsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgYm9v
bCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBmaW5hbDsKIAogICAgIHZvaWQg
cmVzZXQoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBIVE1MU3Vt
bWFyeUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxlbWVudChjCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
c3VtbWFyeVRhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFN1bW1hcnlF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MU3Vt
bWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhB
dHRyaQogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC01MjMsMTcgKzUyMywxNyBAQCBib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OndpbGxSZXNwb25kVG9NCiAgICAgcmV0dXJuICFpc0Rpc2FibGVkRm9y
bUNvbnRyb2woKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
IGNvbnN0CitSZW5kZXJTdHlsZSBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0Qmxv
Y2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+aW5o
ZXJpdEZyb20oJnN0eWxlKTsKLSAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgKnRleHRC
bG9ja1N0eWxlKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAg
dGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZyb20oJnN0eWxlKTsKKyAgICBhZGp1c3RJbm5lclRleHRT
dHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUpOworICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3Bs
YXkoQkxPQ0spOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdlJ3JlIGFkZGluZyB0aHJl
ZSBleHRyYSBwaXhlbHMgb2YgcGFkZGluZyB0byBsaW5lIHRleHRhcmVhcyB1cCB3aXRoIHRleHQg
ZmllbGRzLiAgCi0gICAgdGV4dEJsb2NrU3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBG
aXhlZCkpOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKDMsIEZp
eGVkKSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDMsIEZpeGVk
KSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCgzLCBGaXhlZCkp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gdGV4dEJsb2NrU3R5bGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIAogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJU
ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3ll
ZCgpOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlz
dCYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKICAgICBib29s
IGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSBjcmVhdGVJbm5l
clRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgc2Vs
ZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMsNyArNzMsNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAg
ICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgCiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVmlkZW8+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxh
eU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlk
ZW87IH0KIAogICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkKICAgICBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9k
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdC
UkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxX
QlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBIVE1MV0JSRWxl
bWVudDo6SFRNTFdCUkVsZW1lbnQoY29uc3QgUXVhCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUod2Jy
VGFnKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdC
UkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJMaW5lQnJlYWs+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MV0JSRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxXQlJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MV0JSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBib29sIEhpZGRlbklucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSGlkZGVuSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICBGb3JtQ29udHJv
bFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJv
bUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBJbWFn
ZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdgogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJJbWFnZT4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUlucHV0VHlwZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzRm9ybURhdGFBcHBlbmRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopIG92ZXJyaWRlOwogICAgIHZvaWQgYWx0QXR0
cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzksNyArNDc5LDcgQEAgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IElucHV0VHlw
ZTo6ZgogICAgIHJldHVybiBlbGVtZW50KCkuZm9ybSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PihSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoZWxlbWVudCgp
LCBXVEZNb3ZlKHN0eWxlKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIC8vIE1pc2NlbGxhbmVvdXMg
ZnVuY3Rpb25zLgogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoKTsKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB2
b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCBIVE1MRWxlbWVu
dCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRodW1iCiAgICAgcmV0dXJuICZ0eXBlZFNsaWRlclRo
dW1iRWxlbWVudCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTbGlkZXI+KGVsZW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlu
cHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUm
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAg
ICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25z
dCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDExIEBAIFJlZjxSdWJ5RWxlbWVudD4gUnVieUVsZW1lbnQ6
OmNyZWF0ZShjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSdWJ5RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlv
bikKIHsKLSAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCisgICAgaWYgKHN0eWxl
LmRpc3BsYXkoKSA9PSBJTkxJTkUpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJSdWJ5QXNJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgaWYgKHN0eWxlLT5k
aXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0spCisg
ICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5M
SU5FX0JMT0NLKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieUFzQmxv
Y2s+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUnVieUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5
VGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRl
eHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9S
dWJ5VGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAgUmVm
PFJ1YnlUZXh0RWxlbWVudD4gUnVieVRleHRFbGVtZW50OjpjcgogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJ1YnlUZXh0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gUnVieVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5VGV4
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIC8vIFJlbmRl
clJ1YnlUZXh0IHJlcXVpcmVzIGl0cyBwYXJlbnQgdG8gYmUgUmVuZGVyUnVieVJ1bi4KLSAgICBp
ZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAmJiBzdHlsZS0+ZGlzcGxheSgp
ID09IEJMT0NLKQorICAgIGlmIChpc1J1YnkoaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCkpICYm
IHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSykKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclJ1YnlUZXh0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1M
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Q
b3NpdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJ1YnlUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6Om1heFJlc3VsdHNB
dHRyaWJ1dAogICAgICAgICB1cGRhdGVSZXN1bHRCdXR0b25Qc2V1ZG9UeXBlKCptX3Jlc3VsdHNC
dXR0b24sIGVsZW1lbnQoKS5tYXhSZXN1bHRzKCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5w
dXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNlYXJjaEZpZWxkPihlbGVtZW50KCksIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXhSZXN1bHRzQXR0
cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYpIG92ZXJyaWRlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNo
b3VsZFN1Ym1pdEltcAogICAgICAgICB8fCBJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0
bHkoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVJ
bnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZT4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Kikg
ZmluYWw7CiAgICAgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKSBmaW5hbDsKICAgICBib29sIHNo
b3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKSBmaW5hbDsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFVzZUlucHV0TWV0
aG9kKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0
ZSgpIG92ZXJyaWRlOwogICAgIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEZvbnQoYwogCiAgICAgLy8gTWFwIHRoZSA8Y2FudmFzPiBmb250IGludG8gdGhlIHRl
eHQgc3R5bGUuIElmIHRoZSBmb250IHVzZXMga2V5d29yZHMgbGlrZSBsYXJnZXIvc21hbGxlciwg
dGhlc2Ugd2lsbCB3b3JrCiAgICAgLy8gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KLSAgICBhdXRv
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gbmV3U3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52
YXMoKS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcg
QEAgRGV0YWlsc01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cgogICAgIHNldFBzZXVk
byhBdG9taWNTdHJpbmcoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBEZXRh
aWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJEZXRhaWxzTWFya2VyPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
ZXRhaWxzTWFya2VyQ29udHJvbC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2wo
RG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW4KICAgICB9CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAt
MzI3LDcgKzMyNyw3IEBAIFJlZjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGUK
ICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KQEAgLTEwODIsNyArMTA4Miw3IEBAIFJlZjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW4KICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNv
bnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NTYsNyArNDU2LDcgQEAgcHJpdmF0ZToKIAogICAg
IGV4cGxpY2l0IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQm
KTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2Vk
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkCiAgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVyLT50aGVtZSgpLnN1cHBvcnRz
TWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0
ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWV0ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0
ZToKICAgICBNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYpOwogCiAgICAgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogaW5saW5lIFJlZjxNZXRl
cklubmVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDcgKzYwLDcgQEAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OlByb2dyZXNzSW5uZXJFbGVtZQogewog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFByb2dyZXNz
SW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyUHJvZ3Jlc3M+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBQcm9ncmVzc0lubmVyRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSBzdGF0
aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVhcmFuY2UKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVuZGVyU2xpZGVyVGh1bWI6OlJlbmRlclNsaWRlclRodW1iKFNsaWRl
clRodW1iRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBS
ZW5kZXJTbGlkZXJUaHVtYjo6aXNTbGlkZXJUaHVtYigpIAogLy8gaHR0cDovL3dlYmtpdC5vcmcv
Yi82MjUzNQogY2xhc3MgUmVuZGVyU2xpZGVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRl
ckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTbGlkZXJDb250YWluZXIoU2xpZGVy
Q29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKKyAgICBSZW5kZXJTbGlkZXJDb250YWluZXIoU2xpZGVyQ29udGFpbmVyRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJv
eChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpAQCAtMjE5LDcgKzIxOSw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb20KICAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyVGh1bWI+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkBAIC02MjMsNyArNjIzLDcgQEAgUmVmPFNsaWRlckNvbnRhaW5lckVsZW1l
bnQ+IFNsaWRlckNvbnRhaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNsaWRlckNvbnRhaW5l
ckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXJDb250YWluZXI+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9j
dW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKIAogICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSBjb25zdCBvdmVycmlkZTsKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgUmVmPFNs
aWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1CiAKIGNsYXNzIFJlbmRlclNsaWRlclRodW1iIGZp
bmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2xpZGVy
VGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdm9pZCB1cGRhdGVBcHBlYXJhbmNlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CiAKIHByaXZhdGU6CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiByZXNvbHZlQ3VzdG9tU3R5bGUoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSopIG92ZXJyaWRl
OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIFJlZjxUZXh0Q29udHJvbElubmVyQ29udGFpbmVyPiBUZXh0
Q29udHIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
KGRvY3VtZW50KSk7CiB9CiAgICAgCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRy
b2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWlu
ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIFJlZjxUZXh0
Q29udHJvbElubmVyRWxlbWVudD4gVGV4dENvbnRyb2wKIAogT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKFJlbmRlclN0eWxl
JiwgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICBhdXRvIGlubmVyQ29udGFp
bmVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpbm5lckNvbnRhaW5l
clN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogICAgIGlubmVyQ29udGFpbmVyU3R5
bGUtPmluaGVyaXRGcm9tKHNoYWRvd0hvc3RTdHlsZSk7CiAKICAgICBpbm5lckNvbnRhaW5lclN0
eWxlLT5zZXRGbGV4R3JvdygxKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsCiAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xJbm5l
ckJsb2NrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtMTM2LDcgKzEzNiw4IEBAIFJl
bmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2wKIAogT3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShS
ZW5kZXJTdHlsZSYsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgcmV0dXJu
IEVsZW1lbnRTdHlsZShkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRv
d0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSkpOworICAgIGF1
dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hv
c3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7CisgICAgcmV0dXJu
IEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxl
KSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gY3JlYXRlKERv
Y3VtZW50Jik7CiBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihEb2N1
bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIH07CiAKIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxEaXZFbGVtZW50IHsKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBPcHRpb25hbDxFbGVtZW50
U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNNb3VzZUZvY3Vz
YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24gZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9u
KEhUTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
SW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oKTsKIAogcHJpdmF0ZToKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9w
YWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVJlbmRlcklt
YWdlQ29udHJvbHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbWFn
ZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRlZmEKICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFn
ZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRy
b2xzQnV0dG9uPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1l
bnRNYWMoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgaXNJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFj
L0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xz
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1h
Z2VDb250cm9scyhIVE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzKCk7CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0
OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFn
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1SZW5kZXJJbWFn
ZUNvbnRyb2xzOjpSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW1hZ2VDb250cm9sczo6UmVu
ZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0K
QEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6On5JbWFnZUNv
bnRyCiB7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHM+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKIAotICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3gKICAgICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93
UHNldWRvSWQ7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJv
eDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZUVEN1
ZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgVlRUQ3VlQm94KERvY3VtZW50JiwgVlRUQ3VlJik7CiAKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBWVFRDdWUmIG1fY3VlOwogICAg
IGludCBtX2ZvbnRTaXplRnJvbUNhcHRpb25Vc2VyUHJlZnM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjaGlsZAogICAgIE1hdGhNTEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoYW5ub3RhdGlvbl94bWxUYWcpKQogICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw3ICs0Myw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAgICAgCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgUmVmPE1hdGhNTE1hdGhFbGVtZW50PiBNYXRo
TUxNYXRoRWxlbWVudAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdGhNTE1hdGhFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgTWF0aE1MTWF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIH07CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWVuY2xvc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAgUmVmPE1hdGhNTE1lbmNsb3NlRWxlbWVudD4gTWF0aE1MTWVuY2xvcwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1hdGhNTE1lbmNsb3NlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWVuY2xvc2VFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBN
YXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogeyAgICAKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWVuY2xvc2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVu
Y2xvc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIE1hdGhNTE1lbmNsb3NlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CiAgICAgdm9pZCBjbGVhck5vdGF0aW9ucygpIHsgbV9ub3RhdGlvbkZsYWdzID0gMDsgfQog
ICAgIHZvaWQgYWRkTm90YXRpb24oTWVuY2xvc2VOb3RhdGlvbkZsYWcgbm90YXRpb25GbGFnKSB7
IG1fbm90YXRpb25GbGFncyB8PSBub3RhdGlvbkZsYWc7IH0KICAgICB1bnNpZ25lZCBzaG9ydCBt
X25vdGF0aW9uRmxhZ3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNl
bGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgUmVmPE1hdGhNTFNlbGVjdEVsZW1lbnQ+IE1hdGhNTFNlbGVjdEVsZQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1hdGhNTFNlbGVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFNlbGVj
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhNTFNlbGVj
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBNYXRoTUxUZXh0RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFn
KSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwpAQCAtODgsNyArODgsNyBAQCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWF0aE1MVGV4dEVsZW1lCiAKICAgICAvLyBGSVhNRTogd2h5IGRvIHdlIGhhdmUg
dG8gc2V0IHRoZSBhbGlnbm1lbnQgaGVyZSA/IEl0IHNlZW1zIG5lZWRlZCB0byBtYWtlIHRoZQog
ICAgIC8vIHN0eWxlLWNoYW5nZWQuaHRtdCB0ZXN0IHRvIHBhc3MsIHNpbmNlIG1hdGhtbCByZW5k
ZXJzIGV4cGVjdCBTdHJldGNoIGFzIGRlZmF1bHQuCi0gICAgc3R5bGUtPnNldEFsaWduSXRlbXNQ
b3NpdGlvbihJdGVtUG9zaXRpb25TdHJldGNoKTsKKyAgICBzdHlsZS5zZXRBbGlnbkl0ZW1zUG9z
aXRpb24oSXRlbVBvc2l0aW9uU3RyZXRjaCk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTWF0aE1MVG9rZW4+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzk5LDEwICsz
Nzk5LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgICAgICBt
X3Njcm9sbENvcm5lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghbV9zY3Jv
bGxDb3JuZXIpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXItPmRvY3VtZW50KCksIFdURk1vdmUoY29ybmVy
U3R5bGUpKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyID0gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXItPmRvY3VtZW50KCksIFdURk1vdmUoKmNvcm5lclN0
eWxlKSk7CiAgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1v
dmUoY29ybmVyU3R5bGUpKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShX
VEZNb3ZlKCpjb3JuZXJTdHlsZSkpOwogICAgICAgICBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKGNv
cm5lclJlY3QpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjUsNyArNDI1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBBbmltYXRpb25DbwogICAgIGNvbnN0IENvbXBvc2l0ZUFuaW1hdGlvbiYgcmVuZGVyZXJB
bmltYXRpb25zID0gKm1fY29tcG9zaXRlQW5pbWF0aW9ucy5nZXQoJnJlbmRlcmVyKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGluZ1N0eWxlID0gcmVuZGVyZXJBbmlt
YXRpb25zLmdldEFuaW1hdGVkU3R5bGUoKTsKICAgICBpZiAoIWFuaW1hdGluZ1N0eWxlKQotICAg
ICAgICBhbmltYXRpbmdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmcmVuZGVyZXIuc3R5bGUo
KSk7CisgICAgICAgIGFuaW1hdGluZ1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJlbmRl
cmVyLnN0eWxlKCkpOwogICAgIAogICAgIHJldHVybiBhbmltYXRpbmdTdHlsZTsKIH0KQEAgLTYz
Nyw3ICs2MzcsNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvCiBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1h
dGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKICAgICBpZiAo
IXJlbmRlcmVyLmlzQ1NTQW5pbWF0aW5nKCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6
Y2xvbmUoJnJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgIHJldHVybiBtX2RhdGEtPmdldEFuaW1hdGVk
U3R5bGVGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ29tcG9zaXRl
QW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9m
IHRoZSBwcm9wZXJ0eSwgc28gdGhhdCByZXN0YXJ0ZWQgdHJhbnNpdGlvbnMgdXNlIHRoZSBjb3Jy
ZWN0IHN0YXJ0aW5nIHBvaW50LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENTU1Byb3Bl
cnR5QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9wKSAmJiBp
bXBsQW5pbS0+aXNBY2NlbGVyYXRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFtb2RpZmllZEN1cnJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZWRDdXJyZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VycmVudFN0eWxl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRDdXJyZW50U3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmN1cnJlbnRTdHlsZSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbXBsQW5pbS0+YmxlbmRQcm9wZXJ0eVZhbHVlSW5TdHlsZShwcm9wLCBt
b2RpZmllZEN1cnJlbnRTdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmlt
YXRpb24uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbXBsaWNpdEFuaW1hdGlvbjo6SW1wbGljaXRBbmlt
YXRpb24oQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGluZ1Byb3Bl
cnR5LCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5p
bSwgUmVuZGVyU3R5bGUqIGZyb21TdHlsZSkKICAgICA6IEFuaW1hdGlvbkJhc2UodHJhbnNpdGlv
biwgcmVuZGVyZXIsIGNvbXBBbmltKQotICAgICwgbV9mcm9tU3R5bGUoUmVuZGVyU3R5bGU6OmNs
b25lKGZyb21TdHlsZSkpCisgICAgLCBtX2Zyb21TdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
KmZyb21TdHlsZSkpCiAgICAgLCBtX3RyYW5zaXRpb25Qcm9wZXJ0eSh0cmFuc2l0aW9uLnByb3Bl
cnR5KCkpCiAgICAgLCBtX2FuaW1hdGluZ1Byb3BlcnR5KGFuaW1hdGluZ1Byb3BlcnR5KQogewpA
QCAtNzYsNyArNzYsNyBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0
CiAgICAgLy8gUnVuIGEgY3ljbGUgb2YgYW5pbWF0aW9uLgogICAgIC8vIFdlIGtub3cgd2Ugd2ls
bCBuZWVkIGEgbmV3IHJlbmRlciBzdHlsZSwgc28gbWFrZSBvbmUgaWYgbmVlZGVkCiAgICAgaWYg
KCFhbmltYXRlZFN0eWxlKQotICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKHRhcmdldFN0eWxlKTsKKyAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZVB0cigqdGFyZ2V0U3R5bGUpOwogCiAgICAgYm9vbCBuZWVkc0FuaW0gPSBDU1NQcm9wZXJ0
eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIG1fYW5pbWF0aW5nUHJvcGVydHksIGFu
aW1hdGVkU3R5bGUuZ2V0KCksIG1fZnJvbVN0eWxlLmdldCgpLCBtX3RvU3R5bGUuZ2V0KCksIHBy
b2dyZXNzKCkpOwogICAgIC8vIEZJWE1FOiB3ZSBhbHNvIG5lZWQgdG8gZGV0ZWN0IGNhc2VzIHdo
ZXJlIHdlIGhhdmUgdG8gc29mdHdhcmUgYW5pbWF0ZSBmb3Igb3RoZXIgcmVhc29ucywKQEAgLTk4
LDcgKzk4LDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdAogdm9p
ZCBJbXBsaWNpdEFuaW1hdGlvbjo6Z2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKQogewogICAgIGlmICghYW5pbWF0ZWRTdHlsZSkKLSAg
ICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShtX3RvU3R5bGUuZ2V0KCkp
OworICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCptX3RvU3R5
bGUpOwogCiAgICAgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0aGlzLCBt
X2FuaW1hdGluZ1Byb3BlcnR5LCBhbmltYXRlZFN0eWxlLmdldCgpLCBtX2Zyb21TdHlsZS5nZXQo
KSwgbV90b1N0eWxlLmdldCgpLCBwcm9ncmVzcygpKTsKIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZChkCiAgICAgLy8gKGNvbXBhcmlu
ZyB0aGUgb2xkIHVuYW5pbWF0ZWQgc3R5bGUgd2l0aCB0aGUgbmV3IGZpbmFsIHN0eWxlIG9mIHRo
ZSB0cmFuc2l0aW9uKS4KICAgICBSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+IGtleWZyYW1lQW5p
bSA9IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5nZXRBbmltYXRpb25Gb3JQcm9wZXJ0eShtX2FuaW1h
dGluZ1Byb3BlcnR5KTsKICAgICBpZiAoa2V5ZnJhbWVBbmltKQotICAgICAgICBrZXlmcmFtZUFu
aW0tPnNldFVuYW5pbWF0ZWRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUobV90b1N0eWxlLmdldCgp
KSk7CisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VW5hbmltYXRlZFN0eWxlKFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqbV90b1N0eWxlKSk7CiAgICAgCiAgICAgc2VuZFRyYW5zaXRpb25FdmVudChl
dmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2ZW50LCBlbGFwc2VkVGltZSk7CiAgICAgZW5kQW5p
bWF0aW9uKCk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cmVz
ZXQoUmVuZGVyU3R5bAogICAgIEFTU0VSVCh0byk7CiAgICAgQVNTRVJUKG1fZnJvbVN0eWxlKTsK
IAotICAgIG1fdG9TdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0byk7CisgICAgbV90b1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp0byk7CiAKICAgICAvLyBSZXN0YXJ0IHRoZSB0cmFu
c2l0aW9uCiAgICAgaWYgKG1fZnJvbVN0eWxlICYmIG1fdG9TdHlsZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1l
QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBLZXlmcmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24oQW5pbWF0aW9u
JiBhbmltYXRpb24sIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0
eWxlKQogICAgIDogQW5pbWF0aW9uQmFzZShhbmltYXRpb24sIHJlbmRlcmVyLCBjb21wb3NpdGVB
bmltYXRpb24pCiAgICAgLCBtX2tleWZyYW1lcyhhbmltYXRpb24ubmFtZSgpKQotICAgICwgbV91
bmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHVuYW5pbWF0ZWRTdHlsZSkpCisgICAg
LCBtX3VuYW5pbWF0ZWRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVuYW5pbWF0ZWRTdHls
ZSkpCiAgICAgLCBtX2luZGV4KGluZGV4KQogewogICAgIC8vIEdldCB0aGUga2V5ZnJhbWUgUmVu
ZGVyU3R5bGVzCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6YW5p
bWF0ZShDb21wb3NpdAogICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIHNlbmQgYmFjayB0aGUgdGFy
Z2V0U3R5bGUuCiAgICAgaWYgKHBvc3RBY3RpdmUoKSkgewogICAgICAgICBpZiAoIWFuaW1hdGVk
U3R5bGUpCi0gICAgICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHRh
cmdldFN0eWxlKTsKKyAgICAgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKnRhcmdldFN0eWxlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTYxLDcgKzE2MSw3IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQK
ICAgICAvLyBSdW4gYSBjeWNsZSBvZiBhbmltYXRpb24uCiAgICAgLy8gV2Uga25vdyB3ZSB3aWxs
IG5lZWQgYSBuZXcgcmVuZGVyIHN0eWxlLCBzbyBtYWtlIG9uZSBpZiBuZWVkZWQuCiAgICAgaWYg
KCFhbmltYXRlZFN0eWxlKQotICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKHRhcmdldFN0eWxlKTsKKyAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZVB0cigqdGFyZ2V0U3R5bGUpOwogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gYmUgbW9y
ZSBlZmZpY2llbnQgYWJvdXQgZGV0ZXJtaW5pbmcgd2hpY2gga2V5ZnJhbWVzIHdlIGFyZSBhbmlt
YXRpbmcgYmV0d2Vlbi4KICAgICAvLyBXZSBzaG91bGQgY2FjaGUgdGhlIGxhc3QgcGFpciBvciBz
b21ldGhpbmcuCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6Z2V0
QW5pbWF0ZWRTdHlsZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWFuaW1hdGVkU3R5bGUp
Ci0gICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJm1fb2JqZWN0LT5z
dHlsZSgpKTsKKyAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0ciht
X29iamVjdC0+c3R5bGUoKSk7CiAKICAgICBmb3IgKGF1dG8gcHJvcGVydHlJRCA6IG1fa2V5ZnJh
bWVzLnByb3BlcnRpZXMoKSkgewogICAgICAgICAvLyBHZXQgdGhlIGZyb20vdG8gc3R5bGVzIGFu
ZCBwcm9ncmVzcyBiZXR3ZWVuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckF0dGFjaG1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1SZW5kZXJBdHRhY2htZW50OjpSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckF0
dGFjaG1lbnQ6OlJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RG
TW92ZShzdHlsZSksIExheW91dFNpemUoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
ckF0dGFjaG1lbnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAg
IFJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudCYgYXR0YWNo
bWVudEVsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYWRWZXJ0aWNhbExheW91dE92ZXJmbG93OwogfTsKIAotUmVu
ZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckJs
b2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBC
YXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RG
TW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCbG9ja0ZsYWcpCiB7CiB9CiAKLVJl
bmRlckJsb2NrOjpSZW5kZXJCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRl
ckJsb2NrOjpSZW5kZXJCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveChkb2N1bWVu
dCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCbG9ja0ZsYWcpCiB7CiB9
CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaQogICAgICAgICBmb3IgKFJlbmRlckJsb2NrKiBjdXJyQ29udCA9IGJsb2NrRWxlbWVudENv
bnRpbnVhdGlvbigpOyBjdXJyQ29udDsgY3VyckNvbnQgPSBjdXJyQ29udC0+YmxvY2tFbGVtZW50
Q29udGludWF0aW9uKCkpIHsKICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0
Q29udCA9IGN1cnJDb250LT5jb250aW51YXRpb24oKTsKICAgICAgICAgICAgIGN1cnJDb250LT5z
ZXRDb250aW51YXRpb24oMCk7Ci0gICAgICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUoUmVuZGVy
U3R5bGU6OmNsb25lKCZuZXdTdHlsZSkpOworICAgICAgICAgICAgY3VyckNvbnQtPnNldFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZShuZXdTdHlsZSkpOwogICAgICAgICAgICAgY3VyckNvbnQtPnNl
dENvbnRpbnVhdGlvbihuZXh0Q29udCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTEsNyArMzkx
LDcgQEAgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y2xvbgogICAgICAgICBj
bG9uZUJsb2NrLT5zZXRDaGlsZHJlbklubGluZShjaGlsZHJlbklubGluZSgpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb24oKnBhcmVu
dCgpKTsKLSAgICAgICAgY2xvbmVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8UmVuZGVyQmxv
Y2s+KGVsZW1lbnQoKS0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlOjpjbG9uZSgm
c3R5bGUoKSksIGluc2VydGlvblBvc2l0aW9uKSk7CisgICAgICAgIGNsb25lQmxvY2sgPSBzdGF0
aWNfcG9pbnRlcl9jYXN0PFJlbmRlckJsb2NrPihlbGVtZW50KCktPmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUoKSksIGluc2VydGlvblBvc2l0aW9uKSk7CiAg
ICAgICAgIGNsb25lQmxvY2stPmluaXRpYWxpemVTdHlsZSgpOwogCiAgICAgICAgIC8vIFRoaXMg
dGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSByaWdodCB2YWx1ZSBvZiBjaGlsZHJlbklubGluZSBp
biBjYXNlCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQo
UmVuZGVyT2JqZQogICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVDaGlsZHJlbkJsb2NrLmNvbnRp
bnVhdGlvbigpKTsKICAgICAgICAgICAgIC8vIENhY2hlIHRoaXMgdmFsdWUgYXMgaXQgbWlnaHQg
Z2V0IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgogICAgICAgICAgICAgYm9vbCBpbmxpbmVD
aGlsZHJlbkJsb2NrSGFzTGF5ZXIgPSBpbmxpbmVDaGlsZHJlbkJsb2NrLmhhc0xheWVyKCk7Ci0g
ICAgICAgICAgICBpbmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBCTE9DSykpOworICAgICAgICAg
ICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwogICAgICAgICAgICAgcmVtb3Zl
Q2hpbGRJbnRlcm5hbChpbmxpbmVDaGlsZHJlbkJsb2NrLCBpbmxpbmVDaGlsZHJlbkJsb2NrSGFz
TGF5ZXIgPyBOb3RpZnlDaGlsZHJlbiA6IERvbnROb3RpZnlDaGlsZHJlbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIE5vdyBqdXN0IHB1dCB0aGUgaW5saW5lQ2hpbGRyZW5CbG9jayBp
bnNpZGUgdGhlIGJsb2NrQ2hpbGRyZW5CbG9jay4KQEAgLTMwNjgsOSArMzA2OCw5IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUKICAgICAgICAgLy8gVGhlIGZpcnN0
LWxldHRlciByZW5kZXJlciBuZWVkcyB0byBiZSByZXBsYWNlZC4gQ3JlYXRlIGEgbmV3IHJlbmRl
cmVyIG9mIHRoZSByaWdodCB0eXBlLgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbmV3
Rmlyc3RMZXR0ZXI7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5F
KQotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50
KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5bGUpKTsKKyAgICAgICAgICAgIG5ld0Zp
cnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUocHNldWRvU3R5bGUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0
ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgm
cHNldWRvU3R5bGUpKTsKKyAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IFJlbmRlckJs
b2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpKTsKICAg
ICAgICAgbmV3Rmlyc3RMZXR0ZXItPmluaXRpYWxpemVTdHlsZSgpOwogCiAgICAgICAgIC8vIE1v
dmUgdGhlIGZpcnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCkBAIC0zMDk2LDcgKzMw
OTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlCiAgICAgICAg
IGZpcnN0TGV0dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CiAgICAgICAgIGZpcnN0TGV0dGVyQ29udGFp
bmVyLT5hZGRDaGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOwogICAgIH0gZWxzZQotICAg
ICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKCZwc2V1ZG9TdHls
ZSkpOworICAgICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHBz
ZXVkb1N0eWxlKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVu
ZGVyZXIoUmVuZGVyRWxlbWVudCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyVGV4dCogY3VycmVu
dFRleHRDaGlsZCkKQEAgLTMxMDUsOSArMzEwNSw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0
ZUZpcnN0TGV0dGVyUmVuZGUKICAgICBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUgPSBzdHlsZUZv
ckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogZmlyc3RMZXR0ZXIgPSBudWxscHRyOwogICAgIGlmIChw
c2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAgICAgICBmaXJzdExldHRlciA9IG5l
dyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKCZwc2V1ZG9TdHls
ZSkpOworICAgICAgICBmaXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAgICAgZWxzZQotICAgICAgICBmaXJz
dExldHRlciA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNs
b25lKCZwc2V1ZG9TdHlsZSkpOworICAgICAgICBmaXJzdExldHRlciA9IG5ldyBSZW5kZXJCbG9j
a0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAgICAg
Zmlyc3RMZXR0ZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGZpcnN0TGV0dGVyQ29udGFpbmVy
LT5hZGRDaGlsZChmaXJzdExldHRlciwgY3VycmVudFRleHRDaGlsZCk7CiAKQEAgLTM3NDMsOSAr
Mzc0Myw5IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3UKICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb252ZXJ0IGFsbCBvdXIgaW5saW5lIGRpc3BsYXlzIHRv
IGJsb2NrLXR5cGUgaW4gdGhlIGFub255bW91cyBsb2dpYyA/CiAgICAgUmVuZGVyQmxvY2sqIG5l
d0JveDsKICAgICBpZiAoZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgp
Ci0gICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJGbGV4aWJsZUJveChwYXJlbnQtPmRvY3VtZW50
KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQt
PnN0eWxlKCksIEZMRVgpKTsKKyAgICAgICAgbmV3Qm94ID0gbmV3IFJlbmRlckZsZXhpYmxlQm94
KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBGTEVYKSk7CiAgICAgZWxzZQotICAgICAgICBuZXdC
b3ggPSBuZXcgUmVuZGVyQmxvY2tGbG93KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5bGUoKSwgQkxPQ0sp
KTsKKyAgICAgICAgbmV3Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhwYXJlbnQtPmRvY3VtZW50
KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+
c3R5bGUoKSwgQkxPQ0spKTsKIAogICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAg
cmV0dXJuIG5ld0JveDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgZnJpZW5k
IGNsYXNzIExpbmVMYXlvdXRTdGF0ZTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJsb2NrKEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKLSAg
ICBSZW5kZXJCbG9jayhEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJh
c2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJsb2NrKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBC
YXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYs
IEJhc2VUeXBlRmxhZ3MpOwogICAgIHZpcnR1YWwgflJlbmRlckJsb2NrKCk7CiAKIHB1YmxpYzoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6
Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oCiAgICAgbV9uZWdhdGl2ZU1hcmdpbiA9IChtX2NhbkNv
bGxhcHNlTWFyZ2luQmVmb3JlV2l0aENoaWxkcmVuICYmICFibG9jay5tdXN0RGlzY2FyZE1hcmdp
bkJlZm9yZSgpKSA/IGJsb2NrLm1heE5lZ2F0aXZlTWFyZ2luQmVmb3JlKCkgOiBMYXlvdXRVbml0
KCk7CiB9CiAKLVJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJCbG9ja0Zsb3c6
OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlckJsb2NrRmxv
d0ZsYWcpCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3dpZHRoRm9y
VGV4dEF1dG9zaXppbmcoLTEpCkBAIC0xMDQsNyArMTA0LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3coRWxlbWVudAogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwogfQog
Ci1SZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJCbG9ja0Zsb3c6OlJlbmRl
ckJsb2NrRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlckJsb2NrRmxvd0Zs
YWcpCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3dpZHRoRm9yVGV4
dEF1dG9zaXppbmcoLTEpCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVuZGVyQmxvY2tGbG93Ojp+UmVu
ZGVyQmxvY2tGbG93KCkKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZU11bHRpQ29sdW1u
Rmxvd1RocmVhZCgpCiB7Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhy
ZWFkID0gbmV3IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChkb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spKTsK
KyAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBuZXcgUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkKGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiAgICAgZmxvd1RocmVhZC0+
aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBEbyB0
aGlzIHRvIGF2b2lkIHdyYXBwaW5nIGlubGluZSBjaGlsZHJlbiB0aGF0IGFyZSBqdXN0IGdvaW5n
IHRvIG1vdmUgaW50byB0aGUgZmxvdyB0aHJlYWQuCiAgICAgZGVsZXRlTGluZXMoKTsKQEAgLTIw
MzcsNyArMjAzNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShTdHkK
IHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJlbigpCiB7
CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQgJiYgKGNoaWxk
LT5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSB8fCBjaGlsZC0+aXNSZW5kZXJNdWx0aUNvbHVt
blNldCgpKTsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkKLSAgICAgICAgY2hpbGQt
PnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZz
dHlsZSgpLCBCTE9DSykpOworICAgICAgICBjaGlsZC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spKTsKIH0KIAogdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1
NSw4IEBAIGVudW0gTGluZUNvdW50IHsKIAogY2xhc3MgUmVuZGVyQmxvY2tGbG93IDogcHVibGlj
IFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckJsb2NrRmxvdyhF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyQmxvY2tGbG93KERvY3VtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2tGbG93KCk7CiAgICAgICAg
IAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBA
QCBzdGF0aWMgYm9vbCBza2lwQm9keUJhY2tncm91bmQoY29uc3QgUmVuCiAgICAgICAgICYmIChk
b2N1bWVudEVsZW1lbnRSZW5kZXJlciA9PSBib2R5RWxlbWVudFJlbmRlcmVyLT5wYXJlbnQoKSk7
CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1Jl
bmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUs
IEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogICAgICwgbV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgt
MSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVt
ZW50LCBzCiAgICAgc2V0SXNCb3goKTsKIH0KIAotUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlw
ZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3g6OlJlbmRlckJveChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykK
ICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFz
ZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwg
bV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzMCw4ICs2MzAsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUmVuZGVyQm94KiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigp
IGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQm94KEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKLSAgICBSZW5kZXJCb3goRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJCb3goRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJl
bmRlckJveChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwogCiAgICAg
dm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYg
bmV3U3R5bGUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMTIgKzE2MSwxMiBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0CiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5z
dXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRl
ckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckJveE1vZGVs
T2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVu
ZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQogCi1SZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVu
ZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3hN
b2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFn
cyB8IFJlbmRlckJveE1vZGVsT2JqZWN0RmxhZykKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM4LDggKzIzOCw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGludWF0aW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFz
ZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdz
KTsKIAogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLVJlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQoMCkKICAgICAsIG1faW5uZXIoMCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CiAvLyB0
byBkYXRlIGFzIHRoZSBidXR0b24gY2hhbmdlcy4KIGNsYXNzIFJlbmRlckJ1dHRvbiBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyQnV0dG9uKEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlckJ1dHRvbigpOwogCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCYgZm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6c3R5bGVEaWRDaGFu
Z2UoUwogICAgIC8vIGNsb2JiZXJpbmcgd2lkdGggdmFyaWFudHMgYW5kIHNocmluay10by1maXQg
Y2hhbmdlcywgc2luY2Ugd2Ugd29uJ3QgcmVjb21iaW5lIHdoZW4KICAgICAvLyB0aGUgZm9udCBk
b2Vzbid0IGNoYW5nZS4KICAgICBpZiAoIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT5mb250Q2FzY2Fk
ZSgpICE9IHN0eWxlKCkuZm9udENhc2NhZGUoKSkKLSAgICAgICAgbV9jb21iaW5lRm9udFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lKCZzdHlsZSgpKTsKKyAgICAgICAgbV9jb21iaW5lRm9udFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHN0eWxlKCkpOwogCiAgICAgUmVuZGVyVGV4dDo6
c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fb3JkaW5hbEl0ZXJhdGlvbjsKIH07CiAKLVJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwg
V1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBB
bGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2stbGV2ZWwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBjbGFz
cyBGbGV4Qm94SXRlcmF0b3I7CiAKIGNsYXNzIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCgpOwogCiAgICAgRWxlbWVu
dCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGV0YWlsc01hcmtlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLVJlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01h
cmtlckNvbnRyb2wmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJD
b250cm9sJiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tG
bG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVyRGV0YWlsc01hcmtlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGlj
OgotICAgIFJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01hcmtlckNvbnRyb2wmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNN
YXJrZXJDb250cm9sJiwgUmVuZGVyU3R5bGUmJik7CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2wm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzTWFya2VyQ29udHJv
bCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogICAgIGVudW0gT3JpZW50YXRpb24geyBV
cCwgRG93biwgTGVmdCwgUmlnaHQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBA
QCBzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBDb250CiAgICAgcmV0dXJuIG1h
cDsKIH0KIAotaW5saW5lIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9k
ZSYgZWxlbWVudE9yRG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK2lubGluZSBSZW5kZXJFbGVtZW50OjpSZW5k
ZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJPYmplY3Qo
ZWxlbWVudE9yRG9jdW1lbnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5cGVGbGFncykK
ICAgICAsIG1fYW5jZXN0b3JMaW5lQm94RGlydHkoZmFsc2UpCkBAIC0xMDQsMTIgKzEwNCwxMiBA
QCBpbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250CiB7CiB9CiAKLVJlbmRl
ckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVy
RWxlbWVudDo6UmVuZGVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KHN0
YXRpY19jYXN0PENvbnRhaW5lck5vZGUmPihlbGVtZW50KSwgV1RGTW92ZShzdHlsZSksIGJhc2VU
eXBlRmxhZ3MpCiB7CiB9CiAKLVJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZs
YWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZs
YWdzKQogICAgIDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZG9j
dW1lbnQpLCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKIHsKIH0KQEAgLTExNywyNCAr
MTE3LDI0IEBAIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGQKIFJlbmRl
ckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KCkKIHsKICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRTdHls
ZSgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gbV9zdHlsZS0+
YmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7
CisgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gbV9zdHlsZS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7IGJnTGF5ZXI7IGJnTGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsKICAgICAg
ICAgICAgIGlmIChTdHlsZUltYWdlKiBiYWNrZ3JvdW5kSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgp
KQogICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1f
c3R5bGUtPm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5l
eHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogbWFza0xheWVyID0gbV9zdHls
ZS5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkp
IHsKICAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrSW1hZ2UgPSBtYXNrTGF5ZXItPmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgbWFza0ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBtX3N0eWxl
LT5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlmIChTdHlsZUltYWdlKiBib3JkZXJJ
bWFnZSA9IG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgYm9yZGVy
SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAotICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFz
a0JveEltYWdlID0gbV9zdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYg
KFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2Uo
KSkKICAgICAgICAgICAgIG1hc2tCb3hJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogCiAjaWYg
RU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAgIGlmIChhdXRvIHNoYXBlVmFsdWUgPSBtX3N0eWxl
LT5zaGFwZU91dHNpZGUoKSkgeworICAgICAgICBpZiAoYXV0byBzaGFwZVZhbHVlID0gbV9zdHls
ZS5zaGFwZU91dHNpZGUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gc2hhcGVJbWFnZSA9IHNo
YXBlVmFsdWUtPmltYWdlKCkpCiAgICAgICAgICAgICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOwogICAgICAgICB9CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBSZW5kZXJFbGVtZW50
Ojp+UmVuZGVyRWxlbWVudCgpCiAgICAgICAgIHZpZXcoKS51bnJlZ2lzdGVyRm9yVmlzaWJsZUlu
Vmlld3BvcnRDYWxsYmFjaygqdGhpcyk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBS
ZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSZW5kZXJFbGVt
ZW50OjpjcmVhdGVGb3IoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
ICAgICAvLyBNaW5pbWFsIHN1cHBvcnQgZm9yIGNvbnRlbnQgcHJvcGVydGllcyByZXBsYWNpbmcg
YW4gZW50aXJlIGVsZW1lbnQuCiAgICAgLy8gV29ya3Mgb25seSBpZiB3ZSBoYXZlIGV4YWN0bHkg
b25lIHBpZWNlIG9mIGNvbnRlbnQgYW5kIGl0J3MgYSBVUkwuCiAgICAgLy8gT3RoZXJ3aXNlIGFj
dHMgYXMgaWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgotICAgIGNvbnN0IENvbnRl
bnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOworICAgIGNvbnN0IENv
bnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7CiAgICAgaWYgKGNv
bnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGlzPEltYWdlQ29udGVudERhdGE+
KCpjb250ZW50RGF0YSkgJiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAg
YXV0byYgc3R5bGVJbWFnZSA9IGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0
YSkuaW1hZ2UoKTsKICAgICAgICAgYXV0byBpbWFnZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklt
YWdlPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgY29uc3RfY2FzdDxTdHlsZUltYWdlKj4oJnN0
eWxlSW1hZ2UpKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
UmVuZGVyRWxlbWVudDo6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAgICB9CiAK
LSAgICBzd2l0Y2ggKHN0eWxlLT5kaXNwbGF5KCkpIHsKKyAgICBzd2l0Y2ggKHN0eWxlLmRpc3Bs
YXkoKSkgewogICAgIGNhc2UgTk9ORToKICAgICBjYXNlIENPTlRFTlRTOgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTM3NSwxNCArMzc1LDE0IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5p
dGlhbGl6ZVN0eWxlKCkKIAogICAgIG1faGFzSW5pdGlhbGl6ZWRTdHlsZSA9IHRydWU7CiAKLSAg
ICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7
Ci0gICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLT5tYXNrTGF5ZXJzKCkpOwor
ICAgIHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCkp
OworICAgIHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwog
Ci0gICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgp
KTsKLSAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFn
ZSgpKTsKKyAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1h
Z2UoKSk7CisgICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHVwZGF0ZVNoYXBlSW1hZ2Uo
bnVsbHB0ciwgbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkpOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uo
bnVsbHB0ciwgbV9zdHlsZS5zaGFwZU91dHNpZGUoKSk7CiAjZW5kaWYKIAogICAgIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZU5ld1N0eWxlLCBudWxscHRyKTsKQEAgLTM5NCw3ICszOTQs
NyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmluaXRpYWxpemVTdHlsZSgpCiAgICAgLy8gaGF2ZSB0
aGVpciBwYXJlbnQgc2V0IGJlZm9yZSBnZXR0aW5nIGEgY2FsbCB0byBpbml0aWFsaXplU3R5bGUo
KSA6fAogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaWZmZXJlbmNl
KQordm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHls
ZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGlmZmVyZW5jZSkKIHsKICAgICAvLyBGSVhNRTogU2hv
dWxkIGNoYW5nZSBSZW5kZXJWaWV3IHNvIGl0IGNhbiB1c2UgaW5pdGlhbGl6ZVN0eWxlIHRvby4K
ICAgICAvLyBJZiB3ZSBkbyB0aGF0LCB3ZSBjYW4gYXNzZXJ0IG1faGFzSW5pdGlhbGl6ZWRTdHls
ZSB1bmNvbmRpdGlvbmFsbHksCkBAIC00MDQsMzQgKzQwNCwzNCBAQCB2b2lkIFJlbmRlckVsZW1l
bnQ6OnNldFN0eWxlKHN0ZDo6dW5pcXVlCiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYgPSBTdHls
ZURpZmZlcmVuY2VFcXVhbDsKICAgICB1bnNpZ25lZCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cyA9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eU5vbmU7CiAgICAgaWYgKG1faGFzSW5pdGlhbGl6
ZWRTdHlsZSkKLSAgICAgICAgZGlmZiA9IG1fc3R5bGUtPmRpZmYoKnN0eWxlLCBjb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcyk7CisgICAgICAgIGRpZmYgPSBtX3N0eWxlLmRpZmYoc3R5bGUsIGNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKIAogICAgIGRpZmYgPSBzdGQ6Om1heChkaWZmLCBt
aW5pbWFsU3R5bGVEaWZmZXJlbmNlKTsKIAogICAgIGRpZmYgPSBhZGp1c3RTdHlsZURpZmZlcmVu
Y2UoZGlmZiwgY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpOwogCi0gICAgc3R5bGVXaWxsQ2hh
bmdlKGRpZmYsICpzdHlsZSk7CisgICAgc3R5bGVXaWxsQ2hhbmdlKGRpZmYsIHN0eWxlKTsKIAog
ICAgIGF1dG8gb2xkU3R5bGUgPSBXVEZNb3ZlKG1fc3R5bGUpOwogICAgIG1fc3R5bGUgPSBXVEZN
b3ZlKHN0eWxlKTsKIAotICAgIHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUtPmJhY2tncm91bmRM
YXllcnMoKSwgbV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpKTsKLSAgICB1cGRhdGVGaWxsSW1h
Z2VzKG9sZFN0eWxlLT5tYXNrTGF5ZXJzKCksIG1fc3R5bGUtPm1hc2tMYXllcnMoKSk7CisgICAg
dXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCksIG1fc3R5bGUuYmFj
a2dyb3VuZExheWVycygpKTsKKyAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlLm1hc2tMYXll
cnMoKSwgbV9zdHlsZS5tYXNrTGF5ZXJzKCkpOwogCi0gICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUt
PmJvcmRlckltYWdlKCkuaW1hZ2UoKSwgbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpKTsK
LSAgICB1cGRhdGVJbWFnZShvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSwgbV9zdHls
ZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSk7CisgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUuYm9y
ZGVySW1hZ2UoKS5pbWFnZSgpLCBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSk7CisgICAg
dXBkYXRlSW1hZ2Uob2xkU3R5bGUubWFza0JveEltYWdlKCkuaW1hZ2UoKSwgbV9zdHlsZS5tYXNr
Qm94SW1hZ2UoKS5pbWFnZSgpKTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHVwZGF0
ZVNoYXBlSW1hZ2Uob2xkU3R5bGUtPnNoYXBlT3V0c2lkZSgpLCBtX3N0eWxlLT5zaGFwZU91dHNp
ZGUoKSk7CisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZS5zaGFwZU91dHNpZGUoKSwgbV9z
dHlsZS5zaGFwZU91dHNpZGUoKSk7CiAjZW5kaWYKIAogICAgIGJvb2wgZG9lc05vdE5lZWRMYXlv
dXQgPSAhcGFyZW50KCk7CiAKLSAgICBzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZS5nZXQo
KSk7CisgICAgc3R5bGVEaWRDaGFuZ2UoZGlmZiwgJm9sZFN0eWxlKTsKIAogICAgIC8vIFRleHQg
cmVuZGVyZXJzIHVzZSB0aGVpciBwYXJlbnQgc3R5bGUuIE5vdGlmeSB0aGVtIGFib3V0IHRoZSBj
aGFuZ2UuCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+
KCp0aGlzKSkKLSAgICAgICAgY2hpbGQuc3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUuZ2V0
KCkpOworICAgICAgICBjaGlsZC5zdHlsZURpZENoYW5nZShkaWZmLCAmb2xkU3R5bGUpOwogCiAg
ICAgLy8gRklYTUU6IHx0aGlzfCBtaWdodCBiZSBkZXN0cm95ZWQgaGVyZS4gVGhpcyBjYW4gY3Vy
cmVudGx5IGhhcHBlbiBmb3IgYSBSZW5kZXJUZXh0RnJhZ21lbnQgd2hlbgogICAgIC8vIGl0cyBm
aXJzdC1sZXR0ZXIgYmxvY2sgZ2V0cyBhbiB1cGRhdGUgaW4gUmVuZGVyVGV4dEZyYWdtZW50Ojpz
dHlsZURpZENoYW5nZS4gRm9yIFJlbmRlclRleHRGcmFnbWVudChzKSwKQEAgLTQ0OCw5ICs0NDgs
OSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKHN0ZDo6dW5pcXVlCiAgICAgICAgIGlm
ICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQpCiAgICAgICAgICAgICBzZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgZWxzZSBpZiAodXBkYXRl
ZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkKLSAg
ICAgICAgICAgIHNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KG9sZFN0eWxlLmdldCgp
KTsKKyAgICAgICAgICAgIHNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KCZvbGRTdHls
ZSk7CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBs
aWZpZWRMYXlvdXRBbmRQb3NpdGlvbmVkTW92ZW1lbnQpIHsKLSAgICAgICAgICAgIHNldE5lZWRz
UG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KG9sZFN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIHNl
dE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KCZvbGRTdHlsZSk7CiAgICAgICAgICAgICBz
ZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
dXBkYXRlZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dCkKICAgICAgICAg
ICAgIHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKQEAgLTc4MiwxOCArNzgy
LDE4IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cHJvcGFnYXRlU3R5bGVUb0Fub24KICAgICAgICAg
aWYgKGlzPFJlbmRlckZsb3dUaHJlYWQ+KGVsZW1lbnRDaGlsZCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIGVsZW1lbnRDaGlsZC5zdHlsZSgpLmRpc3Bs
YXkoKSk7CisgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBlbGVtZW50Q2hpbGQuc3R5bGUoKS5kaXNwbGF5
KCkpOwogICAgICAgICBpZiAoc3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkpIHsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50Q2hpbGQuc3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkpCi0gICAgICAg
ICAgICAgICAgbmV3U3R5bGUtPmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgmc3R5bGUoKSk7
CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKCZz
dHlsZSgpKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50Q2hpbGQuc3R5bGUoKS5jb2x1bW5TcGFu
KCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENvbHVtblNwYW4oQ29sdW1uU3BhbkFs
bCk7CisgICAgICAgICAgICAgICAgbmV3U3R5bGUuc2V0Q29sdW1uU3BhbihDb2x1bW5TcGFuQWxs
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBwb3NpdGlvbiBzdHlsZSBv
ZiBhbm9ueW1vdXMgYmxvY2sgY29udGludWF0aW9ucyBhcyB0aGV5IGNhbiBoYXZlIHJlbGF0aXZl
IG9yIHN0aWNreSBwb3NpdGlvbiB3aGVuCiAgICAgICAgIC8vIHRoZXkgY29udGFpbiBibG9jayBk
ZXNjZW5kYW50cyBvZiByZWxhdGl2ZSBvciBzdGlja3kgcG9zaXRpb25lZCBpbmxpbmVzLgogICAg
ICAgICBpZiAoZWxlbWVudENoaWxkLmlzSW5GbG93UG9zaXRpb25lZCgpICYmIGRvd25jYXN0PFJl
bmRlckJsb2NrPihlbGVtZW50Q2hpbGQpLmlzQW5vbnltb3VzQmxvY2tDb250aW51YXRpb24oKSkK
LSAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlvbihlbGVtZW50Q2hpbGQuc3R5bGUoKS5w
b3NpdGlvbigpKTsKKyAgICAgICAgICAgIG5ld1N0eWxlLnNldFBvc2l0aW9uKGVsZW1lbnRDaGls
ZC5zdHlsZSgpLnBvc2l0aW9uKCkpOwogCiAgICAgICAgIGVsZW1lbnRDaGlsZC5zZXRTdHlsZShX
VEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgfQpAQCAtODEwLDkgKzgxMCw5IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICBpZiAob2xkU3R5bGUpIHsKICAgICAg
ICAgLy8gSWYgb3VyIHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFu
Z2VzLAogICAgICAgICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250ZXh0J3Mg
ei1vcmRlciBsaXN0LgotICAgICAgICBib29sIHZpc2liaWxpdHlDaGFuZ2VkID0gbV9zdHlsZS0+
dmlzaWJpbGl0eSgpICE9IG5ld1N0eWxlLnZpc2liaWxpdHkoKQotICAgICAgICAgICAgfHwgbV9z
dHlsZS0+ekluZGV4KCkgIT0gbmV3U3R5bGUuekluZGV4KCkKLSAgICAgICAgICAgIHx8IG1fc3R5
bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS5oYXNBdXRvWkluZGV4KCk7CisgICAgICAg
IGJvb2wgdmlzaWJpbGl0eUNoYW5nZWQgPSBtX3N0eWxlLnZpc2liaWxpdHkoKSAhPSBuZXdTdHls
ZS52aXNpYmlsaXR5KCkKKyAgICAgICAgICAgIHx8IG1fc3R5bGUuekluZGV4KCkgIT0gbmV3U3R5
bGUuekluZGV4KCkKKyAgICAgICAgICAgIHx8IG1fc3R5bGUuaGFzQXV0b1pJbmRleCgpICE9IG5l
d1N0eWxlLmhhc0F1dG9aSW5kZXgoKTsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAg
ICAgICAgIGlmICh2aXNpYmlsaXR5Q2hhbmdlZCkKICAgICAgICAgICAgIGRvY3VtZW50KCkuc2V0
QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwpAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgUmVu
ZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgfQogCiAgICAgICAgIC8v
IEtlZXAgbGF5ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2li
aWxpdHkgY2hhbmdlcy4KLSAgICAgICAgaWYgKG1fc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBuZXdT
dHlsZS52aXNpYmlsaXR5KCkpIHsKKyAgICAgICAgaWYgKG1fc3R5bGUudmlzaWJpbGl0eSgpICE9
IG5ld1N0eWxlLnZpc2liaWxpdHkoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBs
YXllciA9IGVuY2xvc2luZ0xheWVyKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmV3U3R5bGUu
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCiAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5zZXRI
YXNWaXNpYmxlQ29udGVudCgpOwpAQCAtODM5LDE2ICs4MzksMTcgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKG1fcGFyZW50ICYmIChuZXdTdHlsZS5vdXRsaW5lU2l6ZSgpIDwgbV9zdHlsZS0+
b3V0bGluZVNpemUoKSB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYpKSkK
KyAgICAgICAgaWYgKG1fcGFyZW50ICYmIChuZXdTdHlsZS5vdXRsaW5lU2l6ZSgpIDwgbV9zdHls
ZS5vdXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoZGlmZikp
KQogICAgICAgICAgICAgcmVwYWludCgpOwotICAgICAgICBpZiAoaXNGbG9hdGluZygpICYmICht
X3N0eWxlLT5mbG9hdGluZygpICE9IG5ld1N0eWxlLmZsb2F0aW5nKCkpKQorICAgICAgICBpZiAo
aXNGbG9hdGluZygpICYmIG1fc3R5bGUuZmxvYXRpbmcoKSAhPSBuZXdTdHlsZS5mbG9hdGluZygp
KSB7CiAgICAgICAgICAgICAvLyBGb3IgY2hhbmdlcyBpbiBmbG9hdCBzdHlsZXMsIHdlIG5lZWQg
dG8gY29uY2VpdmFibHkgcmVtb3ZlIG91cnNlbHZlcwogICAgICAgICAgICAgLy8gZnJvbSB0aGUg
ZmxvYXRpbmcgb2JqZWN0cyBsaXN0LgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94Pigq
dGhpcykucmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChtX3N0eWxlLT5wb3Np
dGlvbigpICE9IG5ld1N0eWxlLnBvc2l0aW9uKCkpKQorICAgICAgICB9IGVsc2UgaWYgKGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIG1fc3R5bGUucG9zaXRpb24oKSAhPSBuZXdTdHlsZS5wb3Np
dGlvbigpKSB7CiAgICAgICAgICAgICAvLyBGb3IgY2hhbmdlcyBpbiBwb3NpdGlvbmluZyBzdHls
ZXMsIHdlIG5lZWQgdG8gY29uY2VpdmFibHkgcmVtb3ZlIG91cnNlbHZlcwogICAgICAgICAgICAg
Ly8gZnJvbSB0aGUgcG9zaXRpb25lZCBvYmplY3RzIGxpc3QuCiAgICAgICAgICAgICBkb3duY2Fz
dDxSZW5kZXJCb3g+KCp0aGlzKS5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJs
b2NrTGlzdHMoKTsKKyAgICAgICAgfQogCiAgICAgICAgIHNfYWZmZWN0c1BhcmVudEJsb2NrID0g
aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpCiAgICAgICAgICAgICAmJiAoIW5ld1N0
eWxlLmlzRmxvYXRpbmcoKSAmJiAhbmV3U3R5bGUuaGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKQEAg
LTg3Myw3ICs4NzQsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHls
CiAgICAgfQogCiAgICAgYm9vbCBuZXdTdHlsZVVzZXNGaXhlZEJhY2tncm91bmRzID0gbmV3U3R5
bGUuaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKLSAgICBib29sIG9sZFN0eWxlVXNlc0ZpeGVk
QmFja2dyb3VuZHMgPSBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAgIGJv
b2wgb2xkU3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcyA9IG1fc3R5bGUuaGFzRml4ZWRCYWNrZ3Jv
dW5kSW1hZ2UoKTsKICAgICBpZiAobmV3U3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcyB8fCBvbGRT
dHlsZVVzZXNGaXhlZEJhY2tncm91bmRzKSB7CiAgICAgICAgIGJvb2wgcmVwYWludEZpeGVkQmFj
a2dyb3VuZHNPblNjcm9sbCA9ICFmcmFtZSgpLnNldHRpbmdzKCkuZml4ZWRCYWNrZ3JvdW5kc1Bh
aW50UmVsYXRpdmVUb0RvY3VtZW50KCk7CiAKQEAgLTg4NSw3ICs4ODYsNyBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgICAgICAgICAgaWYgKG5ld1N0
eWxlU2xvd1Njcm9sbCAmJiBuZXdTdHlsZS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQog
ICAgICAgICAgICAgICAgICAgICBuZXdTdHlsZVNsb3dTY3JvbGwgPSBmYWxzZTsKIAotICAgICAg
ICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgJiYgbV9zdHlsZS0+aGFzRW50aXJlbHlG
aXhlZEJhY2tncm91bmQoKSkKKyAgICAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xs
ICYmIG1fc3R5bGUuaGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSkKICAgICAgICAgICAgICAg
ICAgICAgb2xkU3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTk4MCwxNCArOTgxLDE0IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGUKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChkaWZmID09IFN0eWxlRGlm
ZmVyZW5jZUxheW91dCB8fCBkaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQp
IHsKLSAgICAgICAgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoKnRoaXMsIG9s
ZFN0eWxlLCBtX3N0eWxlLmdldCgpKTsKKyAgICAgICAgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJT
dHlsZUNoYW5nZWQoKnRoaXMsIG9sZFN0eWxlLCAmbV9zdHlsZSk7CiAKICAgICAgICAgLy8gSWYg
dGhlIG9iamVjdCBhbHJlYWR5IG5lZWRzIGxheW91dCwgdGhlbiBzZXROZWVkc0xheW91dCB3b24n
dCBkbwogICAgICAgICAvLyBhbnkgd29yay4gQnV0IGlmIHRoZSBjb250YWluaW5nIGJsb2NrIGhh
cyBjaGFuZ2VkLCB0aGVuIHdlIG1heSBuZWVkCiAgICAgICAgIC8vIHRvIG1hcmsgdGhlIG5ldyBj
b250YWluaW5nIGJsb2NrcyBmb3IgbGF5b3V0LiBUaGUgY2hhbmdlIHRoYXQgY2FuCiAgICAgICAg
IC8vIGRpcmVjdGx5IGFmZmVjdCB0aGUgY29udGFpbmluZyBibG9jayBvZiB0aGlzIG9iamVjdCBp
cyBhIGNoYW5nZSB0bwogICAgICAgICAvLyB0aGUgcG9zaXRpb24gc3R5bGUuCi0gICAgICAgIGlm
IChuZWVkc0xheW91dCgpICYmIG9sZFN0eWxlLT5wb3NpdGlvbigpICE9IG1fc3R5bGUtPnBvc2l0
aW9uKCkpCisgICAgICAgIGlmIChuZWVkc0xheW91dCgpICYmIG9sZFN0eWxlLT5wb3NpdGlvbigp
ICE9IG1fc3R5bGUucG9zaXRpb24oKSkKICAgICAgICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KCk7CiAKICAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0
KQpAQCAtMTA1NSw3ICsxMDU2LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVk
RnJvbVRyZQogICAgICAgICByZW1vdmVMYXllcnMobGF5ZXIpOwogICAgIH0KIAotICAgIGlmICht
X3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpICYmICFmcmFtZSgpLnNldHRpbmdzKCku
Zml4ZWRCYWNrZ3JvdW5kc1BhaW50UmVsYXRpdmVUb0RvY3VtZW50KCkpCisgICAgaWYgKG1fc3R5
bGUuaGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSAmJiAhZnJhbWUoKS5zZXR0aW5ncygpLmZpeGVk
QmFja2dyb3VuZHNQYWludFJlbGF0aXZlVG9Eb2N1bWVudCgpKQogICAgICAgICB2aWV3KCkuZnJh
bWVWaWV3KCkucmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QodGhpcyk7CiAKICAgICBpZiAoaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDExICszNiwxMSBAQCBjbGFzcyBSZW5kZXJFbGVtZW50IDogcHVibGljIFJlbmRl
ck9iamVjCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxlbWVudCgpOwogCi0gICAgc3Rh
dGljIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVGb3IoRWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGJvb2wgaGFzSW5p
dGlhbGl6ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW5pdGlhbGl6ZWRTdHlsZTsgfQog
Ci0gICAgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5k
ZXJTdHlsZSY+KCptX3N0eWxlKTsgfQorICAgIFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUmPihtX3N0eWxlKTsgfQogICAgIFJlbmRlclN0
eWxlJiBmaXJzdExpbmVTdHlsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBpbml0aWFsaXplU3R5bGUo
KTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxpbmcgd2l0aCBtaW5pbWFs
U3R5bGVEaWZmZXJlbmNlID4gU3R5bGVEaWZmZXJlbmNlRXF1YWwgaW5kaWNhdGVzIHRoYXQKICAg
ICAvLyBvdXQtb2YtYmFuZCBzdGF0ZSAoZS5nLiBhbmltYXRpb25zKSByZXF1aXJlcyB0aGF0IHN0
eWxlRGlkQ2hhbmdlIHByb2Nlc3NpbmcKICAgICAvLyBjb250aW51ZSBldmVuIGlmIHRoZSBzdHls
ZSBpc24ndCBkaWZmZXJlbnQgZnJvbSB0aGUgY3VycmVudCBzdHlsZS4KLSAgICB2b2lkIHNldFN0
eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFs
U3R5bGVEaWZmZXJlbmNlID0gU3R5bGVEaWZmZXJlbmNlRXF1YWwpOworICAgIHZvaWQgc2V0U3R5
bGUoUmVuZGVyU3R5bGUmJiwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2Ug
PSBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CiAKICAgICAvLyBUaGUgcHNldWRvIGVsZW1lbnQgc3R5
bGUgY2FuIGJlIGNhY2hlZCBvciB1bmNhY2hlZC4gIFVzZSB0aGUgY2FjaGVkIG1ldGhvZCBpZiB0
aGUgcHNldWRvIGVsZW1lbnQgZG9lc24ndCByZXNwZWN0CiAgICAgLy8gYW55IHBzZXVkbyBjbGFz
c2VzIChhbmQgdGhlcmVmb3JlIGhhcyBubyBjb25jZXB0IG9mIGNoYW5naW5nIHN0YXRlKS4KQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVcGRhdGVzIG9ubHkgdGhlIGxvY2Fs
IHN0eWxlIHB0ciBvZiB0aGUgb2JqZWN0LiBEb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRo
ZSBvYmplY3QsCiAgICAgLy8gYW5kIHNvIG9ubHkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBz
dHlsZSBpcyBrbm93biBub3QgdG8gaGF2ZSBjaGFuZ2VkIChvciBmcm9tIHNldFN0eWxlKS4KLSAg
ICB2b2lkIHNldFN0eWxlSW50ZXJuYWwoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkgeyBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7IH0KKyAgICB2b2lkIHNldFN0eWxlSW50ZXJu
YWwoUmVuZGVyU3R5bGUmJiBzdHlsZSkgeyBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7IH0KIAog
ICAgIC8vIFJlcGFpbnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUg
ZGlmZmVyZW50LiBUaGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGlu
ZUJveCBpZiB0aGV5IGFyZSBrbm93bi4KICAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVl
ZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwg
Y29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0UmVj
dCogbmV3T3V0bGluZUJveFB0ciA9IG51bGxwdHIpOwpAQCAtMjIzLDggKzIyMyw4IEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEJhc2VUeXBlRmxhZ3M7CiAKLSAgICBS
ZW5kZXJFbGVtZW50KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNl
VHlwZUZsYWdzKTsKLSAgICBSZW5kZXJFbGVtZW50KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyRWxlbWVudChFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyRWxlbWVudChEb2N1
bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwogCiAgICAgYm9vbCBsYXllckNy
ZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSBjb25zdDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRs
aW5lQXV0bykgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyRWxlbWVudChDb250YWluZXJO
b2RlJiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAg
UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyk7CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAgICAgdm9pZCBub25Qc2V1ZG9O
b2RlKCkgY29uc3QgPSBkZWxldGU7CiAgICAgdm9pZCBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0ID0g
ZGVsZXRlOwpAQCAtMzMyLDcgKzMzMiw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiBt
X2ZpcnN0Q2hpbGQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2xhc3RDaGlsZDsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKKyAgICBSZW5kZXJTdHlsZSBtX3N0eWxl
OwogCiAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhpcyBoYWNrLgogICAgIC8vIFN0b3JlIHN0
YXRlIGJldHdlZW4gc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBjb25z
dCBDb2xvciYgdW5hdmFpbGFibGVQbHVnaW5Cb3IKICAgICByZXR1cm4gc3RhbmRhcmQ7CiB9CiAK
LVJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9pc1BsdWdpblVuYXZhaWxhYmxlKGZh
bHNlKQogICAgICwgbV91bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZChmYWxzZSkK
QEAgLTExMSw3ICsxMTEsNyBAQCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6flJlbmRlckVtYmVkZGVk
T2JqCiAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUo
KnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+IFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmIGFwcGxldCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbWJlZGRl
ZE9iamVjdD4gUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0
RWxlbWVudCYgYXBwbGV0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIGF1dG8gcmVuZGVy
ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJFbWJlZGRlZE9iamVjdD4oYXBwbGV0LCBXVEZNb3Zl
KHN0eWxlKSk7CiAgICAgcmVuZGVyZXItPnNldElubGluZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBAIGNsYXNzIFRleHRSdW47CiAvLyBG
b3IgZXhhbXBsZSwgPGVtYmVkIHNyYz0iZm9vLmh0bWwiPiBkb2VzIG5vdCBpbnZva2UgYSBwbHVn
LWluLgogY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJFbWJlZGRlZE9iamVj
dChIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJFbWJlZGRlZE9iamVjdCgpOwogCi0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbWJl
ZGRlZE9iamVjdD4gY3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbWJlZGRl
ZE9iamVjdD4gY3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAKICAgICBlbnVtIFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHsKICAgICAgICAgUGx1
Z2luTWlzc2luZywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxk
c2V0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckZpZWxk
c2V0OjpSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRmllbGRzZXQ6OlJlbmRlckZpZWxk
c2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudDsKIAog
Y2xhc3MgUmVuZGVyRmllbGRzZXQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgZW51bSBGaW5kTGVnZW5kT3B0aW9uIHsgSWdu
b3JlRmxvYXRpbmdPck91dE9mRmxvdywgSW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAg
ICBSZW5kZXJCb3gqIGZpbmRMZWdlbmQoRmluZExlZ2VuZE9wdGlvbiA9IElnbm9yZUZsb2F0aW5n
T3JPdXRPZkZsb3cpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIGNvbnN0IGludCBkZWZhdWx0V2lkdGhOdW1DaGFy
cyA9IDM4OwogI2VuZGlmCiBjb25zdCBpbnQgYnV0dG9uU2hhZG93SGVpZ2h0ID0gMjsKIAotUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVs
ZW1lbnQmIGlucHV0LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGlu
cHV0LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhpbnB1
dC5jYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsK
IAogY2xhc3MgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxv
Y2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1
YWwgflJlbmRlckZpbGVVcGxvYWRDb250cm9sKCk7CiAKICAgICBTdHJpbmcgYnV0dG9uVmFsdWUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3Qg
UmVuZGVyRmxleGlibGVCb3g6OlZpb2xhdGlvbiB7CiB9OwogCiAKLVJlbmRlckZsZXhpYmxlQm94
OjpSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhpcykK
ICAgICAsIG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQpAQCAtNzQsNyAr
NzQsNyBAQCBSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxlCiAgICAgc2V0
Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxv
Y2stbGV2ZWwuCiB9CiAKLVJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5
bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogICAgICwgbV9udW1iZXJPZklu
Rmxvd0NoaWxkcmVuT25GaXJzdExpbmUoLTEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDggKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGbGV4aWJsZUJv
eCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmxleGlibGVCb3go
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlckZsZXhp
YmxlQm94KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyRmxleGlibGVCb3goRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlckZsZXhp
YmxlQm94KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyRmxl
eGlibGVCb3goKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
Rmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9wcmV2aW91c1JlZ2lvbkNvdW50KDApCiAgICAgLCBtX2F1dG9Mb2dpY2Fs
SGVpZ2h0UmVnaW9uc0NvdW50KDApCkBAIC02OSwxOCArNjksMTggQEAgUmVuZGVyRmxvd1RocmVh
ZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bQogICAgIHNldEZsb3dUaHJlYWRTdGF0ZShJbnNpZGVP
dXRPZkZsb3dUaHJlYWQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUpCitSZW5kZXJTdHlsZSBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUo
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7Ci0gICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsK
LSAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7Ci0gICAgbmV3U3R5bGUtPnNldFBvc2l0
aW9uKEFic29sdXRlUG9zaXRpb24pOwotICAgIG5ld1N0eWxlLT5zZXRaSW5kZXgoMCk7Ci0gICAg
bmV3U3R5bGUtPnNldExlZnQoTGVuZ3RoKDAsIEZpeGVkKSk7Ci0gICAgbmV3U3R5bGUtPnNldFRv
cChMZW5ndGgoMCwgRml4ZWQpKTsKLSAgICBuZXdTdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKDEwMCwg
UGVyY2VudCkpOwotICAgIG5ld1N0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMCwgUGVyY2VudCkp
OwotICAgIG5ld1N0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRyKTsKKyAgICBuZXdT
dHlsZS5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CisgICAgbmV3U3R5bGUuc2V0RGlzcGxheShC
TE9DSyk7CisgICAgbmV3U3R5bGUuc2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CisgICAg
bmV3U3R5bGUuc2V0WkluZGV4KDApOworICAgIG5ld1N0eWxlLnNldExlZnQoTGVuZ3RoKDAsIEZp
eGVkKSk7CisgICAgbmV3U3R5bGUuc2V0VG9wKExlbmd0aCgwLCBGaXhlZCkpOworICAgIG5ld1N0
eWxlLnNldFdpZHRoKExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBuZXdTdHlsZS5zZXRIZWln
aHQoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIG5ld1N0eWxlLmZvbnRDYXNjYWRlKCkudXBk
YXRlKG51bGxwdHIpOwogICAgIHJldHVybiBuZXdTdHlsZTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiBhIGRlc2Nl
bmRhbnQgYm94J3MgbGF5b3V0IGlzIGZpbmlzaGVkIGFuZCBpdCBoYXMgYmVlbiBwb3NpdGlvbmVk
IHdpdGhpbiBpdHMgY29udGFpbmVyLgogICAgIHZpcnR1YWwgdm9pZCBmbG93VGhyZWFkRGVzY2Vu
ZGFudEJveExhaWRPdXQoUmVuZGVyQm94KikgeyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlRmxvd1RocmVhZFN0eWxlKFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIApAQCAt
MjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyRmxvd1RocmVh
ZChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZs
b3dUaHJlYWQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFJlbmRlckZsb3dUaHJl
YWQqIGxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJlYWQqPih0aGlzKTsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJGcmFtZTo6
UmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCYgZnJhbWUsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGcmFtZTo6UmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVu
dCYgZnJhbWUsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFtZUJhc2UoZnJh
bWUsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhU
TUxGcmFtZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZyYW1lIGZpbmFsIDogcHVibGljIFJlbmRl
ckZyYW1lQmFzZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lKEhUTUxGcmFt
ZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1l
RWxlbWVudCgpIGNvbnN0OwogICAgIEZyYW1lRWRnZUluZm8gZWRnZUluZm8oKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRC
YXNlJiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
RnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJhc2UmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJXaWRnZXQoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
UmVuZGVyVmlldzsKIC8vIEJhc2UgY2xhc3MgZm9yIFJlbmRlckZyYW1lIGFuZCBSZW5kZXJJRnJh
bWUKIGNsYXNzIFJlbmRlckZyYW1lQmFzZSA6IHB1YmxpYyBSZW5kZXJXaWRnZXQgewogcHJvdGVj
dGVkOgotICAgIFJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVt
ZW50QmFzZSYsIFJlbmRlclN0eWxlJiYpOwogCiBwdWJsaWM6CiAgICAgRnJhbWVWaWV3KiBjaGls
ZFZpZXcoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxGcmFtZVZpZXc+KFJlbmRlcldpZGdldDo6
d2lkZ2V0KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZVNldC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQoSFRNTEZy
YW1lU2V0RWxlbWVudCYgZnJhbWVTZXQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYg
ZnJhbWVTZXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZnJhbWVTZXQs
IFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9pc1Jlc2l6aW5nKGZhbHNlKQogICAgICwgbV9p
c0NoaWxkUmVzaXppbmcoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgUmVuZGVyRnJhbWVTZXQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckZyYW1lU2V0KCk7
CiAKICAgICBIVE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldEVsZW1lbnQoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRl
cihSZW5kZXJGdWxsU2NyZWVuJiBvd25lciwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKKyAgICBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIoUmVuZGVyRnVsbFNjcmVlbiYg
b3duZXIsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyQmxvY2tGbG93KG93
bmVyLmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpKQogICAgICAgICAsIG1fb3duZXIob3duZXIp
IAogICAgIHsKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xk
ZXI6OndpbGxCZQogICAgIFJlbmRlckJsb2NrRmxvdzo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAK
LVJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRnVsbFNjcmVlbjo6UmVu
ZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X3BsYWNlaG9sZGVyKDApCiB7CkBAIC03OCwyOCArNzgsMjggQEAgdm9pZCBSZW5kZXJGdWxsU2Ny
ZWVuOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlckZsZXhpYmxlQm94Ojp3aWxsQmVEZXN0
cm95ZWQoKTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRl
RnVsbFNjcmVlblN0eWxlKCkKK3N0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVGdWxsU2NyZWVuU3R5
bGUoKQogewotICAgIGF1dG8gZnVsbHNjcmVlblN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZURl
ZmF1bHRTdHlsZSgpOworICAgIGF1dG8gZnVsbHNjcmVlblN0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwogCiAgICAgLy8gQ3JlYXRlIGEgc3RhY2tpbmcgY29udGV4dDoKLSAgICBmdWxsc2Ny
ZWVuU3R5bGUtPnNldFpJbmRleChJTlRfTUFYKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0Wklu
ZGV4KElOVF9NQVgpOwogCi0gICAgZnVsbHNjcmVlblN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
eyB9KTsKLSAgICBmdWxsc2NyZWVuU3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIp
OworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRGb250RGVzY3JpcHRpb24oeyB9KTsKKyAgICBmdWxs
c2NyZWVuU3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7CiAKLSAgICBmdWxsc2Ny
ZWVuU3R5bGUtPnNldERpc3BsYXkoRkxFWCk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLT5zZXRKdXN0
aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbkNlbnRlcik7Ci0gICAgZnVsbHNjcmVl
blN0eWxlLT5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQ2VudGVyKTsKLSAgICBm
dWxsc2NyZWVuU3R5bGUtPnNldEZsZXhEaXJlY3Rpb24oRmxvd0NvbHVtbik7CisgICAgZnVsbHNj
cmVlblN0eWxlLnNldERpc3BsYXkoRkxFWCk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldEp1c3Rp
ZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uQ2VudGVyKTsKKyAgICBmdWxsc2NyZWVu
U3R5bGUuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkNlbnRlcik7CisgICAgZnVs
bHNjcmVlblN0eWxlLnNldEZsZXhEaXJlY3Rpb24oRmxvd0NvbHVtbik7CiAgICAgCi0gICAgZnVs
bHNjcmVlblN0eWxlLT5zZXRQb3NpdGlvbihGaXhlZFBvc2l0aW9uKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldFdpZHRoKExlbmd0aCgxMDAuMCwgUGVyY2VudCkpOwotICAgIGZ1bGxzY3JlZW5T
dHlsZS0+c2V0SGVpZ2h0KExlbmd0aCgxMDAuMCwgUGVyY2VudCkpOwotICAgIGZ1bGxzY3JlZW5T
dHlsZS0+c2V0TGVmdChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldFRvcChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICBmdWxsc2NyZWVu
U3R5bGUuc2V0UG9zaXRpb24oRml4ZWRQb3NpdGlvbik7CisgICAgZnVsbHNjcmVlblN0eWxlLnNl
dFdpZHRoKExlbmd0aCgxMDAuMCwgUGVyY2VudCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRI
ZWlnaHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldExl
ZnQoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldFRv
cChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKICAgICAKLSAgICBmdWxsc2NyZWVuU3R5bGUt
PnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6YmxhY2spOworICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIHJldHVybiBmdWxsc2NyZWVu
U3R5bGU7CiB9CkBAIC0xOTMsMTEgKzE5MywxMSBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmNy
ZWF0ZVBsYWNlaG9sZGVyCiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVj
dC5oZWlnaHQoKSwgRml4ZWQpKTsKIAogICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7Ci0gICAgICAg
IG1fcGxhY2Vob2xkZXItPnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgbV9wbGFj
ZWhvbGRlci0+c2V0U3R5bGUoV1RGTW92ZSgqc3R5bGUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcGxhY2Vob2xkZXIgPSBuZXcgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVy
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgbV9wbGFjZWhvbGRlciA9IG5ldyBSZW5kZXJG
dWxsU2NyZWVuUGxhY2Vob2xkZXIoKnRoaXMsIFdURk1vdmUoKnN0eWxlKSk7CiAgICAgbV9wbGFj
ZWhvbGRlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgaWYgKHBhcmVudCgpKSB7CiAgICAgICAg
IHBhcmVudCgpLT5hZGRDaGlsZChtX3BsYWNlaG9sZGVyLCB0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
ckZ1bGxTY3JlZW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgot
ICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAK
ICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlckZ1bGxTY3JlZW4iOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWUKICAgICAgICAgZnJlZVNwYWNlRm9yUm93
cyA9IGZyZWVTcGFjZTsKIH0KIAotUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyR3JpZDo6UmVu
ZGVyR3JpZChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0
b3IoKnRoaXMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZW51bSBHcmlkQXhpc1Bvc2l0aW9uIHtH
cmlkQXhpc1N0YXJ0LCBHcgogCiBjbGFzcyBSZW5kZXJHcmlkIGZpbmFsIDogcHVibGljIFJlbmRl
ckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJHcmlkKCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySFRNTENhbnZh
czo6UmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckhUTUxDYW52YXM6OlJlbmRlckhUTUxD
YW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgZWxlbWVudC5zaXpl
KCkpCiB7CiAgICAgLy8gQWN0dWFsIHNpemUgaXMgbm90IGtub3duIHlldCwgcmVwb3J0IHRoZSBk
ZWZhdWx0IGludHJpbnNpYyBzaXplLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckhUTUxDYW52YXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySFRNTENhbnZhcy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJIVE1MQ2FudmFzIGZp
bmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJIVE1MQ2Fu
dmFzKEhUTUxDYW52YXNFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQoKSBjb25zdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKICAgICAKLVJlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lKEhUTUxJ
RnJhbWVFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFtZUJhc2UoZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklG
cmFtZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVy
VmlldzsKIAogY2xhc3MgUmVuZGVySUZyYW1lIGZpbmFsIDogcHVibGljIFJlbmRlckZyYW1lQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBIVE1MSUZyYW1lRWxlbWVudCYgaWZyYW1lRWxl
bWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFJlbmRl
ckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25z
dCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJ
bWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVw
bGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKICAgICAsIG1faW1hZ2VS
ZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlPigpKQogICAgICwgbV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQoZmFsc2UpCkBAIC0x
MzUsNyArMTM1LDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbgog
ICAgICAgICBtX2hhc1NoYWRvd0NvbnRyb2xzID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
ZWxlbWVudCkuaGFzU2hhZG93Q29udHJvbHMoKTsKIH0KIAotUmVuZGVySW1hZ2U6OlJlbmRlcklt
YWdlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIEludFNp
emUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9uZWVkc1RvU2V0U2l6ZUZv
ckFsdFRleHQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgZW51bSBJbWFnZVNpemVDaGFu
Z2VUeXBlIHsKIAogY2xhc3MgUmVuZGVySW1hZ2UgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewog
cHVibGljOgotICAgIFJlbmRlckltYWdlKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4wZik7Ci0gICAg
UmVuZGVySW1hZ2UoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBTdHls
ZUltYWdlKiA9IG51bGxwdHIpOworICAgIFJlbmRlckltYWdlKEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4wZik7CisgICAgUmVu
ZGVySW1hZ2UoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIp
OwogICAgIHZpcnR1YWwgflJlbmRlckltYWdlKCk7CiAKICAgICBSZW5kZXJJbWFnZVJlc291cmNl
JiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MiwxMyArNTIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJJ
bmxpbmU6OlJlbmRlcklubGluZShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxk
cmVuSW5saW5lKHRydWUpOwogfQogCi1SZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShEb2N1bWVu
dCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJ
bmxpbmU6OlJlbmRlcklubGluZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSks
IFJlbmRlcklubGluZUZsYWcpCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CkBAIC0x
NTgsOCArMTU4LDggQEAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVPZkFub255bW91c0Jsb2NrQwog
ICAgICAgICBSZW5kZXJJbmxpbmUqIGNvbnRpbnVhdGlvbiA9IGJsb2NrLmlubGluZUVsZW1lbnRD
b250aW51YXRpb24oKTsKICAgICAgICAgaWYgKG9sZFN0eWxlLT5oYXNJbkZsb3dQb3NpdGlvbigp
ICYmIGluRmxvd1Bvc2l0aW9uZWRJbmxpbmVBbmNlc3Rvcihjb250aW51YXRpb24pKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZibG9jay5zdHlsZSgpLCBCTE9DSyk7Ci0g
ICAgICAgIGJsb2NrU3R5bGUtPnNldFBvc2l0aW9uKG5ld1N0eWxlLT5wb3NpdGlvbigpKTsKKyAg
ICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoYmxvY2suc3R5bGUoKSwgQkxPQ0spOworICAgICAgICBibG9ja1N0eWxlLnNl
dFBvc2l0aW9uKG5ld1N0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgYmxvY2suc2V0U3R5bGUo
V1RGTW92ZShibG9ja1N0eWxlKSk7CiAgICAgfQogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQg
UmVuZGVySW5saW5lOjpzdHlsZURpZENoYW5nZShTdHlsZUQKICAgICAgICAgZm9yIChSZW5kZXJJ
bmxpbmUqIGN1cnJDb250ID0gY29udGludWF0aW9uOyBjdXJyQ29udDsgY3VyckNvbnQgPSBjdXJy
Q29udC0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogbmV4dENvbnQgPSBjdXJyQ29udC0+Y29udGludWF0aW9uKCk7CiAgICAg
ICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG51bGxwdHIpOwotICAgICAgICAgICAg
Y3VyckNvbnQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSgmbmV3U3R5bGUpKTsKKyAgICAg
ICAgICAgIGN1cnJDb250LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUpKTsK
ICAgICAgICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24obmV4dENvbnQpOwogICAgICAg
ICB9CiAgICAgICAgIC8vIElmIGFuIGlubGluZSdzIGluLWZsb3cgcG9zaXRpb25pbmcgaGFzIGNo
YW5nZWQgYW5kIGl0IGlzIHBhcnQgb2YgYW4gYWN0aXZlIGNvbnRpbnVhdGlvbiBhcyBhIGRlc2Nl
bmRhbnQgb2YgYW4gYW5vbnltb3VzIGNvbnRhaW5pbmcgYmxvY2ssCkBAIC0zMzEsMTIgKzMzMSwx
MiBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAgICAgICAgIC8v
IGlubGluZSBpbnRvIGNvbnRpbnVhdGlvbnMuICBUaGlzIGludm9sdmVzIGNyZWF0aW5nIGFuIGFu
b255bW91cyBibG9jayBib3ggdG8gaG9sZAogICAgICAgICAvLyB8bmV3Q2hpbGR8LiAgV2UgdGhl
biBtYWtlIHRoYXQgYmxvY2sgYm94IGEgY29udGludWF0aW9uIG9mIHRoaXMgaW5saW5lLiAgV2Ug
dGFrZSBhbGwgb2YKICAgICAgICAgLy8gdGhlIGNoaWxkcmVuIGFmdGVyIHxiZWZvcmVDaGlsZHwg
YW5kIHB1dCB0aGVtIGluIGEgY2xvbmUgb2YgdGhpcyBvYmplY3QuCi0gICAgICAgIGF1dG8gbmV3
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5
bGUoKSwgQkxPQ0spOworICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spOwogICAgICAgICAKICAg
ICAgICAgLy8gSWYgaW5zaWRlIGFuIGlubGluZSBhZmZlY3RlZCBieSBpbi1mbG93IHBvc2l0aW9u
aW5nIHRoZSBibG9jayBuZWVkcyB0byBiZSBhZmZlY3RlZCBieSBpdCB0b28uCiAgICAgICAgIC8v
IEdpdmluZyB0aGUgYmxvY2sgYSBsYXllciBsaWtlIHRoaXMgYWxsb3dzIGl0IHRvIGNvbGxlY3Qg
dGhlIHgveSBvZmZzZXRzIGZyb20gaW5saW5lIHBhcmVudHMgbGF0ZXIuCiAgICAgICAgIGlmIChh
dXRvIHBvc2l0aW9uZWRBbmNlc3RvciA9IGluRmxvd1Bvc2l0aW9uZWRJbmxpbmVBbmNlc3Rvcih0
aGlzKSkKLSAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlvbihwb3NpdGlvbmVkQW5jZXN0
b3ItPnN0eWxlKCkucG9zaXRpb24oKSk7CisgICAgICAgICAgICBuZXdTdHlsZS5zZXRQb3NpdGlv
bihwb3NpdGlvbmVkQW5jZXN0b3ItPnN0eWxlKCkucG9zaXRpb24oKSk7CiAKICAgICAgICAgUmVu
ZGVyQmxvY2sqIG5ld0JveCA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgV1RGTW92
ZShuZXdTdHlsZSkpOwogICAgICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwpAQCAtMzk3
LDcgKzM5Nyw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKICAK
ICAgICAgICAgaWYgKCFuZXdDaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSB7CiAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgbm8gc3VpdGFibGUgZXhpc3RpbmcgYW5vbnlt
b3VzIGlubGluZS1ibG9jay4gQ3JlYXRlIGEgbmV3IG9uZS4KLSAgICAgICAgICAgIFJlbmRlckJs
b2NrRmxvdyogYW5vbnltb3VzSW5saW5lQmxvY2sgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3Vt
ZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHls
ZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrRmxvdyogYW5vbnlt
b3VzSW5saW5lQmxvY2sgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIElOTElORV9CTE9D
SykpOwogICAgICAgICAgICAgYW5vbnltb3VzSW5saW5lQmxvY2stPmluaXRpYWxpemVTdHlsZSgp
OwogICAgIAogICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmFkZENoaWxkKGFub255
bW91c0lubGluZUJsb2NrLCBiZWZvcmVDaGlsZCk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogCiBSZW5kZXJQdHI8UmVuZGVySW5s
aW5lPiBSZW5kZXJJbmxpbmU6OmNsb25lKCkgY29uc3QKIHsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
SW5saW5lPiBjbG9uZUlubGluZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4oKmVsZW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKCZzdHlsZSgpKSk7CisgICAgUmVuZGVyUHRyPFJlbmRl
cklubGluZT4gY2xvbmVJbmxpbmUgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+KCplbGVt
ZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSgpKSk7CiAgICAgY2xvbmVJbmxpbmUtPmlu
aXRpYWxpemVTdHlsZSgpOwogICAgIGNsb25lSW5saW5lLT5zZXRGbG93VGhyZWFkU3RhdGUoZmxv
d1RocmVhZFN0YXRlKCkpOwogICAgIGNsb25lSW5saW5lLT5zZXRIYXNPdXRsaW5lQXV0b0FuY2Vz
dG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAg
Y2xhc3MgUmVuZGVyUmVnaW9uOwogCiBjbGFzcyBSZW5kZXJJbmxpbmUgOiBwdWJsaWMgUmVuZGVy
Qm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlcklubGluZShFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVySW5saW5lKERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW5saW5lKEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKIAogICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OTcs
MTEgKzY3OTcsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsQ29ybmVyU3R5bAog
ICAgIH0KIAogICAgIGlmICghbV9zY3JvbGxDb3JuZXIpIHsKLSAgICAgICAgbV9zY3JvbGxDb3Ju
ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlcigpLmRvY3Vt
ZW50KCksIFdURk1vdmUoY29ybmVyKSk7CisgICAgICAgIG1fc2Nyb2xsQ29ybmVyID0gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1bWVudCgpLCBXVEZN
b3ZlKCpjb3JuZXIpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFBhcmVudCgmcmVuZGVy
ZXIoKSk7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICB9
IGVsc2UKLSAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUoY29ybmVyKSk7
CisgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3ZlKCpjb3JuZXIpKTsKIH0K
IAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUmVzaXplclN0eWxlKCkKQEAgLTY4MTUsMTEgKzY4
MTUsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUmVzaXplclN0eWxlKCkKICAgICB9CiAK
ICAgICBpZiAoIW1fcmVzaXplcikgewotICAgICAgICBtX3Jlc2l6ZXIgPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlcigpLmRvY3VtZW50KCksIFdURk1vdmUocmVz
aXplcikpOworICAgICAgICBtX3Jlc2l6ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTY3JvbGxi
YXJQYXJ0PihyZW5kZXJlcigpLmRvY3VtZW50KCksIFdURk1vdmUoKnJlc2l6ZXIpKTsKICAgICAg
ICAgbV9yZXNpemVyLT5zZXRQYXJlbnQoJnJlbmRlcmVyKCkpOwogICAgICAgICBtX3Jlc2l6ZXIt
PmluaXRpYWxpemVTdHlsZSgpOwogICAgIH0gZWxzZQotICAgICAgICBtX3Jlc2l6ZXItPnNldFN0
eWxlKFdURk1vdmUocmVzaXplcikpOworICAgICAgICBtX3Jlc2l6ZXItPnNldFN0eWxlKFdURk1v
dmUoKnJlc2l6ZXIpKTsKIH0KIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpyZWZsZWN0aW9u
TGF5ZXIoKSBjb25zdApAQCAtNjg0NCwxMCArNjg0NCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpy
ZW1vdmVSZWZsZWN0aW9uKCkKICAgICBtX3JlZmxlY3Rpb24gPSBudWxscHRyOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckxheWVyOjpjcmVhdGVSZWZsZWN0aW9uU3R5
bGUoKQorUmVuZGVyU3R5bGUgUmVuZGVyTGF5ZXI6OmNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpCiB7
CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICBuZXdTdHls
ZS0+aW5oZXJpdEZyb20oJnJlbmRlcmVyKCkuc3R5bGUoKSk7CisgICAgbmV3U3R5bGUuaW5oZXJp
dEZyb20oJnJlbmRlcmVyKCkuc3R5bGUoKSk7CiAgICAgCiAgICAgLy8gTWFwIGluIG91ciB0cmFu
c2Zvcm0uCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyB0cmFuc2Zvcm07CkBAIC02ODczLDEwICs2
ODczLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5ZXIKICAgICAg
ICAgICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm9mZnNldCgp
LCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG5ld1N0eWxlLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKKyAgICBuZXdTdHlsZS5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIAogICAgIC8vIE1h
cCBpbiBvdXIgbWFzay4KLSAgICBuZXdTdHlsZS0+c2V0TWFza0JveEltYWdlKHJlbmRlcmVyKCku
c3R5bGUoKS5ib3hSZWZsZWN0KCktPm1hc2soKSk7CisgICAgbmV3U3R5bGUuc2V0TWFza0JveElt
YWdlKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hSZWZsZWN0KCktPm1hc2soKSk7CiAKICAgICByZXR1
cm4gbmV3U3R5bGU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw3ICs5MjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlUmVmbGVjdGlvbigpOwogICAgIHZvaWQgcmVtb3ZlUmVmbGVjdGlvbigpOwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKTsK
KyAgICBSZW5kZXJTdHlsZSBjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKTsKICAgICBib29sIHBhaW50
aW5nSW5zaWRlUmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRpbmdJbnNpZGVSZWZs
ZWN0aW9uOyB9CiAgICAgdm9pZCBzZXRQYWludGluZ0luc2lkZVJlZmxlY3Rpb24oYm9vbCBiKSB7
IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gYjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBib29sIFJlbmRlckxh
eWVyTW9kZWxPYmplY3Q6OnNfaGFkTGF5ZXIgCiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7CiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNf
bGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKIAotUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6
IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1Jl
bmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJFbGVtZW50KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVG
bGFncyB8IFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKLSAgICBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwogCiAgICAgdm9p
ZCBjcmVhdGVMYXllcigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcg
QEAgc3RhdGljIHZvaWQgZW5zdXJlTGluZUJveGVzKGNvbnN0IFJlbmRlcgogICAgIGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKS5lbnN1cmVMaW5lQm94ZXMoKTsK
IH0KIAotUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaW5lQnJlYWs6
OlJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIpCiAgICAgLCBtX2NhY2hlZExpbmVI
ZWlnaHQoaW52YWxpZExpbmVIZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgY2xhc3MgUG9zaXRpb247CiAKIGNsYXNzIFJlbmRlckxpbmVCcmVhayBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGluZUJyZWFrKEhU
TUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlu
ZUJyZWFrKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
TGluZUJyZWFrKCk7CiAKICAgICAvLyBGSVhNRTogVGhlIGxpZXMgaGVyZSBrZWVwIHJlbmRlciB0
cmVlIGR1bXAgYmFzZWQgdGVzdCByZXN1bHRzIHVuY2hhbmdlZC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsNyArODMsNyBAQCBjb25zdCBpbnQgZGVmYXVsdFNpemUgPSA0OwogLy8gd2lkZ2V0LCBi
dXQgSSdtIG5vdCBzdXJlIHRoaXMgaXMgcmlnaHQgZm9yIHRoZSBuZXcgY29udHJvbC4KIGNvbnN0
IGludCBiYXNlbGluZUFkanVzdG1lbnQgPSA3OwogCi1SZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0
Qm94KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyTGlzdEJveDo6UmVuZGVyTGlzdEJveChIVE1MU2VsZWN0RWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb3B0aW9uc0NoYW5nZWQodHJ1ZSkKICAg
ICAsIG1fc2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb25BZnRlckxheW91dChmYWxzZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgUmVu
ZGVyTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTY3JvbGxh
YmxlQXJlYSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdEJveChIVE1MU2VsZWN0RWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RCb3goSFRNTFNl
bGVjdEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaXN0Qm94
KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJ
dGVtKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fbWFya2VyKG51bGxwdHIpCiAgICAgLCBtX2hhc0V4cGxpY2l0VmFsdWUo
ZmFsc2UpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnN0eWxlRGlkQ2hh
bmdlKFN0eWwKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAg
IC8vIFRoZSBtYXJrZXIgYWx3YXlzIGluaGVyaXRzIGZyb20gdGhlIGxpc3QgaXRlbSwgcmVnYXJk
bGVzcyBvZiB3aGVyZSBpdCBtaWdodCBlbmQKICAgICAvLyB1cCAoZS5nLiwgaW4gc29tZSBkZWVw
bHkgbmVzdGVkIGxpbmUgYm94KS4gU2VlIENTUzMgc3BlYy4KLSAgICBuZXdTdHlsZS0+aW5oZXJp
dEZyb20oJnN0eWxlKCkpOworICAgIG5ld1N0eWxlLmluaGVyaXRGcm9tKCZzdHlsZSgpKTsKICAg
ICBpZiAoIW1fbWFya2VyKSB7CiAgICAgICAgIG1fbWFya2VyID0gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTGlzdE1hcmtlcj4oKnRoaXMsIFdURk1vdmUobmV3U3R5bGUpKS5sZWFrUHRyKCk7CiAgICAg
ICAgIG1fbWFya2VyLT5pbml0aWFsaXplU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQCBjbGFzcyBSZW5kZXJMaXN0TWFya2VyOwogCiBjbGFzcyBSZW5kZXJMaXN0SXRlbSBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckxpc3RJ
dGVtKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJM
aXN0SXRlbShFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlz
dEl0ZW0oKTsKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMTcsNyArMTExNyw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0
eWxlVHlwZSB0eXAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZW5kZXJM
aXN0TWFya2VyOjpSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RNYXJrZXI6OlJlbmRl
ckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtLCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQm94KGxpc3RJdGVtLmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9saXN0SXRlbShsaXN0SXRlbSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUsIGluCiAv
LyBUaGUgUmVuZGVyTGlzdE1hcmtlciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2YgYSBSZW5k
ZXJMaXN0SXRlbS4KIGNsYXNzIFJlbmRlckxpc3RNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
Qm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJM
aXN0SXRlbSYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxpc3RNYXJrZXIo
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShI
VE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVySW1hZ2UoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgc2V0SGFzU2hhZG93Q29u
dHJvbHModHJ1ZSk7CiB9CiAKLVJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVt
ZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBJ
bnRTaXplJiBpbnRyaW5zaWNTaXplKQorUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRp
YUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IEludFNpemUmIGlu
dHJpbnNpY1NpemUpCiAgICAgOiBSZW5kZXJJbWFnZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICsz
NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWVkaWEgOiBwdWJsaWMg
UmVuZGVySW1hZ2UgewogcHVibGljOgotICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVk
aWFFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgSW50U2l6ZSYg
aW50cmluc2ljU2l6ZSk7CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOworICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmLCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJN
ZWRpYSgpOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
ckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6bAogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJs
ZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTgxLDcgKzgxLDcgQEAgdm9p
ZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcgogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCi1SZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxl
bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVi
bGljOgotICAgIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNv
bnRhaW5lcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBs
YXlvdXQoKSBvdmVycmlkZTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVu
ZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxl
eGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJN
ZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKQEAgLTYxLDcgKzYxLDcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHNpemVfdCBzZWxlY3RlZE9wdGlvbkNv
dW50KGNvbnN0IAogfQogI2VuZGlmCiAKLVJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdChI
VE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdChIVE1MU2VsZWN0RWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9idXR0b25UZXh0KG51bGxwdHIpCiAgICAg
LCBtX2lubmVyQmxvY2sobnVsbHB0cikKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFJlbmRlck1l
bnVMaXN0OjpzZXRUZXh0RnJvbU9wdGlvbihpCiAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxl
bWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiAg
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKLSAgICAg
ICAgICAgIG1fb3B0aW9uU3R5bGUgPSBzdHlsZSA/IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSkg
OiBudWxscHRyOworICAgICAgICAgICAgbV9vcHRpb25TdHlsZSA9IHN0eWxlID8gUmVuZGVyU3R5
bGU6OmNsb25lUHRyKCpzdHlsZSkgOiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRl
ck1lbnVMaXN0IGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94LCBwcml2YXRlIFBvcHVw
TWVudUNsaWVudCB7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNZW51TGlzdChIVE1MU2VsZWN0RWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lbnVMaXN0
KEhUTUxTZWxlY3RFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
TWVudUxpc3QoKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTE1ldGVyRWxlbWVudDsKIAog
Y2xhc3MgUmVuZGVyTWV0ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyTWV0ZXIoKTsKIAogICAgIEhUTUxNZXRlckVsZW1lbnQqIG1ldGVy
RWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogYm9vbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmdTaGlmdGluZ1NwYW5uZXIgPSBm
YWxzZTsKIAotUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZs
b3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZs
b3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2xhc3RT
ZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQpAQCAtMzM4LDcgKzMz
OCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWEKICAgICAvLyBO
ZWVkIHRvIGNyZWF0ZSBhIG5ldyBjb2x1bW4gc2V0IHdoZW4gdGhlcmUncyBubyBzZXQgYWxyZWFk
eSBjcmVhdGVkLiBXZSBhbHNvIGFsd2F5cyBpbnNlcnQKICAgICAvLyBhbm90aGVyIGNvbHVtbiBz
ZXQgYWZ0ZXIgYSBzcGFubmVyLiBFdmVuIGlmIGl0IHR1cm5zIG91dCB0aGF0IHRoZXJlIGFyZSBu
byByZW5kZXJlcnMKICAgICAvLyBmb2xsb3dpbmcgdGhlIHNwYW5uZXIsIHRoZXJlIG1heSBiZSBi
b3R0b20gbWFyZ2lucyB0aGVyZSwgd2hpY2ggdGFrZSB1cCBzcGFjZS4KLSAgICBSZW5kZXJNdWx0
aUNvbHVtblNldCogbmV3U2V0ID0gbmV3IFJlbmRlck11bHRpQ29sdW1uU2V0KCp0aGlzLCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmbXVsdGljb2xDb250YWlu
ZXItPnN0eWxlKCksIEJMT0NLKSk7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQqIG5ld1NldCA9
IG5ldyBSZW5kZXJNdWx0aUNvbHVtblNldCgqdGhpcywgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkobXVsdGljb2xDb250YWluZXItPnN0eWxlKCksIEJMT0NLKSk7
CiAgICAgbmV3U2V0LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBtdWx0aWNvbENvbnRhaW5lci0+
UmVuZGVyQmxvY2s6OmFkZENoaWxkKG5ld1NldCwgaW5zZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCk7
CiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlCiAKIGNsYXNzIFJlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbG93VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB+UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAKICAgICBS
ZW5kZXJCbG9ja0Zsb3cqIG11bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93
VGhyZWFkJiBmbG93VGhyZWFkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJl
YWQmIGZsb3dUaHJlYWQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJSZWdpb25T
ZXQoZmxvd1RocmVhZC5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwgZmxvd1RocmVhZCkKICAg
ICAsIG1fY29tcHV0ZWRDb2x1bW5Db3VudCgxKQogICAgICwgbV9jb21wdXRlZENvbHVtbldpZHRo
KDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gY29tZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzcGFuLgogY2xh
c3MgUmVuZGVyTXVsdGlDb2x1bW5TZXQgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVnaW9uU2V0IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhyZWFkJiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVu
ZGVyRmxvd1RocmVhZCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgUmVuZGVyQmxvY2tGbG93KiBt
dWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2Nr
Rmxvdz4ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBtdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQqPihmbG93VGhyZWFkKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5u
ZXJQbGFjZWhvbGRlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcjo6Y3JlYXRlQW5vbnltb3VzKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxv
d1RocmVhZCwgUmVuZGVyQm94KiBzcGFubmVyLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZShSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRTdHlsZSwgQkxPQ0spKTsKLSAg
ICBuZXdTdHlsZS0+c2V0Q2xlYXIoQ0JPVEgpOyAvLyBXZSBkb24ndCB3YW50IGZsb2F0cyBpbiB0
aGUgcm93IHByZWNlZGluZyB0aGUgc3Bhbm5lciB0byBjb250aW51ZSBvbiB0aGUgb3RoZXIgc2lk
ZS4KKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoKnBhcmVudFN0eWxlLCBCTE9DSyk7CisgICAgbmV3U3R5bGUuc2V0Q2xlYXIo
Q0JPVEgpOyAvLyBXZSBkb24ndCB3YW50IGZsb2F0cyBpbiB0aGUgcm93IHByZWNlZGluZyB0aGUg
c3Bhbm5lciB0byBjb250aW51ZSBvbiB0aGUgb3RoZXIgc2lkZS4KICAgICBhdXRvIHBsYWNlaG9s
ZGVyID0gbmV3IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKGZsb3dUaHJlYWQs
IHNwYW5uZXIsIFdURk1vdmUobmV3U3R5bGUpKTsKICAgICBwbGFjZWhvbGRlci0+aW5pdGlhbGl6
ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHBsYWNlaG9sZGVyOwogfQogCi1SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkLCBSZW5kZXJCb3gqIHNwYW5u
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkLCBSZW5kZXJCb3gqIHNwYW5u
ZXIsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZmxvd1RocmVhZC0+ZG9j
dW1lbnQoKSwgV1RGTW92ZShzdHlsZSksIFJlbmRlckJveE1vZGVsT2JqZWN0RmxhZykKICAgICAs
IG1fc3Bhbm5lcihzcGFubmVyKQogICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVh
ZDsgfQogCiBwcml2YXRlOgotICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
KFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94KiBzcGFubmVy
LCBSZW5kZXJTdHlsZSYmKTsKICAgICBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclJlZ2lvbihkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIG51bGxwdHIpCiAgICAgLCBt
X2hhc0N1c3RvbVJlZ2lvblN0eWxlKGZhbHNlKQogICAgICwgbV9oYXNBdXRvTG9naWNhbEhlaWdo
dChmYWxzZSkKQEAgLTU3LDEzICs1NywxMyBAQCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6flJl
bmRlck5hbWVkRmxvCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQ6OmNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSkKK1JlbmRlclN0eWxlIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7Ci0gICAgYXV0byBzdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnRTdHlsZSwgQkxP
Q0spOworICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShwYXJlbnRTdHlsZSwgQkxPQ0spOwogCi0gICAgc3R5bGUtPnNldEZsb3dUaHJl
YWQocGFyZW50U3R5bGUuZmxvd1RocmVhZCgpKTsKLSAgICBzdHlsZS0+c2V0UmVnaW9uVGhyZWFk
KHBhcmVudFN0eWxlLnJlZ2lvblRocmVhZCgpKTsKLSAgICBzdHlsZS0+c2V0UmVnaW9uRnJhZ21l
bnQocGFyZW50U3R5bGUucmVnaW9uRnJhZ21lbnQoKSk7CisgICAgc3R5bGUuc2V0Rmxvd1RocmVh
ZChwYXJlbnRTdHlsZS5mbG93VGhyZWFkKCkpOworICAgIHN0eWxlLnNldFJlZ2lvblRocmVhZChw
YXJlbnRTdHlsZS5yZWdpb25UaHJlYWQoKSk7CisgICAgc3R5bGUuc2V0UmVnaW9uRnJhZ21lbnQo
cGFyZW50U3R5bGUucmVnaW9uRnJhZ21lbnQoKSk7CiAKICAgICByZXR1cm4gc3R5bGU7CiB9CkBA
IC0zNjYsMTMgKzM2NiwxMyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRl
Q2hpCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2hpbGRTdHlsZUluUmVn
aW9uOwogICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7CiAgICAg
ICAgIGlmIChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLmVuZCgpKSB7Ci0gICAgICAg
ICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmUoaXQtPnZhbHVlLnN0
eWxlLmdldCgpKTsKKyAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqaXQtPnZhbHVlLnN0eWxlKTsKICAgICAgICAgICAgIG9iamVjdFJlZ2lvblN0
eWxlQ2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjaGls
ZC5pc0Fub255bW91cygpIHx8IGNoaWxkLmlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpKQotICAg
ICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZyZW5kZXJlci5zdHlsZSgpLCBjaGlsZC5zdHlsZSgpLmRp
c3BsYXkoKSk7CisgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU3R5bGU+KFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHJlbmRlcmVyLnN0eWxlKCksIGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpCi0gICAgICAgICAgICAg
ICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5kZXJlci5zdHls
ZSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gY29tcHV0ZVN0eWxlSW5SZWdpb24oZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4oY2hpbGQpLCByZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgfQpAQCAt
Mzg4LDkgKzM4OCw5IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldE9iamVjdFMK
IHsKICAgICBBU1NFUlQob2JqZWN0LT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpOwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNsb25lKCZvYmplY3QtPnN0eWxlKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihv
YmplY3QtPnN0eWxlKCkpOwogICAgIGlmIChpczxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KSkKLSAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbChX
VEZNb3ZlKHN0eWxlSW5SZWdpb24pKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
Km9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbChXVEZNb3ZlKCpzdHlsZUluUmVnaW9uKSk7CiAKICAg
ICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpvYmplY3QpICYmICFvYmplY3QtPmhhc0Jv
eERlY29yYXRpb25zKCkpIHsKICAgICAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9ucyA9IGlzPFJl
bmRlclRhYmxlQ2VsbD4oKm9iamVjdCkKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gb2JqZWN0U3R5bGVJblJlZ2lvbjsKICAgICAgICAgYm9vbCBvYmplY3RSZWdpb25T
dHlsZUNhY2hlZCA9IGZhbHNlOwogICAgICAgICBpZiAoaXQgIT0gbV9yZW5kZXJPYmplY3RSZWdp
b25TdHlsZS5lbmQoKSkgewotICAgICAgICAgICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IFJlbmRl
clN0eWxlOjpjbG9uZShpdC0+dmFsdWUuc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgb2JqZWN0
U3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqaXQtPnZhbHVlLnN0eWxlKTsK
ICAgICAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUuY2FjaGVkKTsKICAgICAgICAgICAgIG9iamVj
dFJlZ2lvblN0eWxlQ2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCkBAIC00NjMsOCArNDYz
LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVzdG9yZVJlZwogICAgIFJlbmRl
ck9iamVjdFJlZ2lvblN0eWxlTWFwIHRlbXA7CiAgICAgZm9yIChhdXRvJiBvYmplY3RQYWlyIDog
bV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVj
dCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ob2JqZWN0UGFpci5rZXkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG9iamVjdFJlZ2lvblN0eWxlID0gUmVuZGVyU3R5
bGU6OmNsb25lKCZvYmplY3QtPnN0eWxlKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUob2JqZWN0
UGFpci52YWx1ZS5zdHlsZS5nZXQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIob2JqZWN0LT5z
dHlsZSgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmln
aW5hbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpvYmplY3RQYWlyLnZhbHVlLnN0eWxl
KTsKIAogICAgICAgICBib29sIHNob3VsZENhY2hlUmVnaW9uU3R5bGUgPSBvYmplY3RQYWlyLnZh
bHVlLmNhY2hlZDsKICAgICAgICAgaWYgKCFzaG91bGRDYWNoZVJlZ2lvblN0eWxlKSB7CkBAIC00
ODEsNyArNDgxLDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVzdG9yZVJlZwog
ICAgICAgICAgICAgdGVtcC5zZXQob2JqZWN0LCBXVEZNb3ZlKHN0eWxlSW5mbykpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KSkKLSAgICAgICAgICAg
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwoV1RGTW92
ZShvYmplY3RPcmlnaW5hbFN0eWxlKSk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoKm9iamVjdE9yaWdpbmFsU3R5
bGUpKTsKICAgICB9CiAKICAgICBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLnN3YXAodGVtcCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwx
MCBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVnaW9uIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAg
dmlydHVhbCB+UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSk7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZs
b3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBSZWY8V2ViS2l0TmFtZWRGbG93PiYmIG5hbWVkRmxvdykKK1JlbmRlck5hbWVkRmxv
d1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCiAgICAgOiBS
ZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faGFzUmVn
aW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudChmYWxzZSkKQEAgLTkyLDggKzkyLDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnVwZGF0ZVdyaXRpbgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgZmlyc3QgcmVn
aW9uIGRlZmluZXMgdGhlIHByaW5jaXBhbCB3cml0aW5nIG1vZGUgZm9yIHRoZSBlbnRpcmUgZmxv
dy4KLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZzdHlsZSgpKTsKLSAg
ICBuZXdTdHlsZS0+c2V0V3JpdGluZ01vZGUoZmlyc3RGcmFnbWVudC0+c3R5bGUoKS53cml0aW5n
TW9kZSgpKTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKCkp
OworICAgIG5ld1N0eWxlLnNldFdyaXRpbmdNb2RlKGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkud3Jp
dGluZ01vZGUoKSk7CiAgICAgc2V0U3R5bGUoV1RGTW92ZShuZXdTdHlsZSkpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdHlwZWRlZiBM
aXN0SGFzaFNldDxFbGVtZW50Kj4gTmFtZWRGbG93QwogCiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxvd1RocmVhZCwgcHVibGljIFNlbGVjdGlvblN1
YnRyZWVSb290IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZWY8V2ViS2l0TmFtZWRGbG93PiYmKTsK
KyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZWY8
V2ViS2l0TmFtZWRGbG93PiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dUaHJlYWQo
KTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclByb2dyZXNzOjpSZW5k
ZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fcG9z
aXRpb24oSFRNTFByb2dyZXNzRWxlbWVudDo6SW52YWxpZFBvc2l0aW9uKQogICAgICwgbV9hbmlt
YXRpb25TdGFydFRpbWUoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
cm9ncmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
cm9ncmVzcy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUHJvZ3Jlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBjbGFzcyBI
VE1MUHJvZ3Jlc3NFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJQcm9ncmVzcyBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclByb2dyZXNzKEhUTUxFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUHJvZ3Jlc3Mo
SFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJQcm9ncmVz
cygpOwogCiAgICAgZG91YmxlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUXVvdGU6OlJlbmRlclF1b3RlKERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgUXVv
dGVUeXBlIHF1b3RlKQorUmVuZGVyUXVvdGU6OlJlbmRlclF1b3RlKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUXVvdGVUeXBlIHF1b3RlKQogICAgIDogUmVuZGVySW5s
aW5lKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdHlwZShxdW90ZSkKICAgICAs
IG1fdGV4dChlbXB0eVN0cmluZygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclF1b3RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clF1b3RlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJRdW90ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyUXVvdGUgZmluYWwgOiBwdWJsaWMgUmVuZGVySW5saW5l
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJRdW90ZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIFF1b3RlVHlwZSk7CisgICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBSZW5k
ZXJTdHlsZSYmLCBRdW90ZVR5cGUpOwogICAgIHZpcnR1YWwgflJlbmRlclF1b3RlKCk7CiAKICAg
ICB2b2lkIGF0dGFjaFF1b3RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVh
ZCkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAs
IG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQo
bnVsbHB0cikKQEAgLTU2LDcgKzU2LDcgQEAgUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxl
bWVudCYgZWxlbQogewogfQogCi1SZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCiAgICAgLCBtX3BhcmVudE5hbWVkRmxvd1RocmVh
ZChudWxscHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOCArMTI3LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yQm94SW5SZWdpb24oVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiwgY29uc3QgUmVuZGVyQm94KiwgZmxvYXQsIGZsb2F0KSB7IH0KIAogcHJvdGVjdGVkOgot
ICAgIFJlbmRlclJlZ2lvbihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
UmVuZGVyRmxvd1RocmVhZCopOwotICAgIFJlbmRlclJlZ2lvbihEb2N1bWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBSZW5kZXJSZWdp
b24oRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBSZW5k
ZXJSZWdpb24oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJGbG93VGhyZWFkKik7CiAK
ICAgICB2b2lkIGVuc3VyZU92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlZlB0cjxS
ZW5kZXJPdmVyZmxvdz4mLCBib29sKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvblNldC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUmVnaW9uU2V0OjpSZW5k
ZXJSZWdpb25TZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkJiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uU2V0
OjpSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBSZW5kZXJGbG93VGhyZWFkJiBmbG93VGhyZWFkKQogICAgIDogUmVuZGVyUmVnaW9uKGRvY3Vt
ZW50LCBXVEZNb3ZlKHN0eWxlKSwgJmZsb3dUaHJlYWQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZXhwYW5kVG9FbmNvbXBhc3NGbG93
VGhyZWFkQ29udGVudHNJZk5lZWRlZCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVnaW9u
U2V0KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyRmxvd1Ro
cmVhZCYpOworICAgIFJlbmRlclJlZ2lvblNldChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJl
bmRlckZsb3dUaHJlYWQmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxGbG93VGhyZWFk
KCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDIxICs0NiwyMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjb25zdCBpbnQgY0RlZmF1bHRXaWR0aCA9IDMwMDsKIGNvbnN0IGludCBj
RGVmYXVsdEhlaWdodCA9IDE1MDsKIAotUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVy
UmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGNEZWZhdWx0V2lkdGgsIGNEZWZh
dWx0SGVpZ2h0KQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwogfQogCi1SZW5kZXJSZXBsYWNl
ZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlclJl
cGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVyQm94KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJSZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJp
bnNpY1NpemUoaW50cmluc2ljU2l6ZSkKIHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAot
UmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2lj
U2l6ZSkKK1JlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAg
ICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJSZXBsYWNlZEZs
YWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJSZXBsYWNlZChFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50
cmluc2ljU2l6ZSk7Ci0gICAgUmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKKyAgICBS
ZW5kZXJSZXBsYWNlZChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyUmVwbGFj
ZWQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1Np
emUpOworICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3Qg
TGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGlj
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJlcGxpY2E6OlJlbmRl
clJlcGxpY2EoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICAvLyBUaGlzIGlz
IGEgaGFjay4gUmVwbGljYXMgYXJlIHN5bnRoZXRpYywgYW5kIGRvbid0IHBpY2sgdXAgdGhlIGF0
dHJpYnV0ZXMgb2YgdGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJSZXBsaWNhIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNhKCk7CiAKICAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogcnVieUFmdGVy
QmxvYwogCiBzdGF0aWMgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c1J1YnlJbmxpbmVCbG9j
ayhSZW5kZXJPYmplY3QmIHJ1YnkpCiB7Ci0gICAgUmVuZGVyQmxvY2sqIG5ld0Jsb2NrID0gbmV3
IFJlbmRlckJsb2NrRmxvdyhydWJ5LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZydWJ5LnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAg
IFJlbmRlckJsb2NrKiBuZXdCbG9jayA9IG5ldyBSZW5kZXJCbG9ja0Zsb3cocnVieS5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShydWJ5LnN0
eWxlKCksIElOTElORV9CTE9DSykpOwogICAgIG5ld0Jsb2NrLT5pbml0aWFsaXplU3R5bGUoKTsK
ICAgICByZXR1cm4gbmV3QmxvY2s7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIGlubGlu
ZSBSZW5kZXJSdWJ5UnVuJiBmaW5kUnVieVJ1bgogCiAvLz09PSBydWJ5IGFzIGlubGluZSBvYmpl
Y3QgPT09CiAKLVJlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5
QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVySW5saW5lKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUmVuZGVyUnVieUFzSW5saW5lOjpyZW1vdmVD
aGlsZChSZW4KIAogLy89PT0gcnVieSBhcyBibG9jayBvYmplY3QgPT09CiAKLVJlbmRlclJ1YnlB
c0Jsb2NrOjpSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVieUFzQmxvY2s6OlJlbmRlclJ1YnlBc0Js
b2NrKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gPHJ1Ynk+IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpp
bmxpbmUnCiBjbGFzcyBSZW5kZXJSdWJ5QXNJbmxpbmUgZmluYWwgOiBwdWJsaWMgUmVuZGVySW5s
aW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFzSW5saW5lKCk7CiAKICAg
ICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKSBvdmVycmlkZTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIC8vIDxydWJ5
PiB3aGVuIHVzZWQgYXMgJ2Rpc3BsYXk6YmxvY2snIG9yICdkaXNwbGF5OmlubGluZS1ibG9jaycK
IGNsYXNzIFJlbmRlclJ1YnlBc0Jsb2NrIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNCbG9jaygpOwogCiAgICAgRWxlbWVu
dCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlCYXNlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZShEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1faW5pdGlhbE9mZnNldCgwKQogICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKHRy
dWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUmVuZGVyUnVieVJ1bjsK
IAogY2xhc3MgUmVuZGVyUnVieUJhc2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKICAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChh
bm9ueW1vdXMpIjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
UnVuLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotUmVuZGVyUnVieVJ1bjo6UmVu
ZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2xhc3RDaGFyYWN0ZXIoMCkKICAgICAsIG1fc2Vjb25k
VG9MYXN0Q2hhcmFjdGVyKDApCkBAIC0yMDMsOCArMjAzLDggQEAgdm9pZCBSZW5kZXJSdWJ5UnVu
OjpyZW1vdmVDaGlsZChSZW5kZXJPYgogCiBSZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6
Y3JlYXRlUnVieUJhc2UoKSBjb25zdAogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spOwotICAg
IG5ld1N0eWxlLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsgLy8gRklYTUU6IHVzZSBXRUJLSVRfQ0VO
VEVSPworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSyk7CisgICAgbmV3U3R5bGUuc2V0VGV4dEFsaWdu
KENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NFTlRFUj8KICAgICBhdXRvIHJlbmRlcmVy
ID0gbmV3IFJlbmRlclJ1YnlCYXNlKGRvY3VtZW50KCksIFdURk1vdmUobmV3U3R5bGUpKTsKICAg
ICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwpAQCAt
MjEzLDcgKzIxMyw3IEBAIFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWIK
IFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29uc3Qg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSdWJ5KQogewogICAgIEFTU0VSVChpc1J1YnkocGFyZW50UnVi
eSkpOwotICAgIGF1dG8gcmVuZGVyZXIgPSBuZXcgUmVuZGVyUnVieVJ1bihwYXJlbnRSdWJ5LT5k
b2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
cGFyZW50UnVieS0+c3R5bGUoKSwgSU5MSU5FX0JMT0NLKSk7CisgICAgYXV0byByZW5kZXJlciA9
IG5ldyBSZW5kZXJSdWJ5UnVuKHBhcmVudFJ1YnktPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJ1YnktPnN0eWxlKCksIElOTElO
RV9CTE9DSykpOwogICAgIHJlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4g
cmVuZGVyZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5UnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVuZGVyUnVi
eVRleHQ7CiAKIGNsYXNzIFJlbmRlclJ1YnlSdW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tG
bG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVJ1bihEb2N1bWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlSdW4oKTsKIAogICAgIGJvb2wgaGFzUnVi
eVRleHQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlUZXh0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChFbGVt
ZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJSdWJ5VGV4dCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewog
cHVibGljOgotICAgIFJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5VGV4dChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVRleHQoKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw5ICsyNDUsOSBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFyCiAgICAgfQogCiAgICAgaWYgKGF1dG8mIHBh
cnRSZW5kZXJlclNsb3QgPSBtX3BhcnRzLmFkZChwYXJ0VHlwZSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlKQotICAgICAgICBwYXJ0UmVuZGVyZXJTbG90LT5zZXRTdHlsZShXVEZNb3ZlKHBhcnRT
dHlsZSkpOworICAgICAgICBwYXJ0UmVuZGVyZXJTbG90LT5zZXRTdHlsZShXVEZNb3ZlKCpwYXJ0
U3R5bGUpKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydFJlbmRlcmVyU2xvdCA9IGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KG93bmluZ1JlbmRlcmVyKCktPmRvY3VtZW50KCks
IFdURk1vdmUocGFydFN0eWxlKSwgdGhpcywgcGFydFR5cGUpOworICAgICAgICBwYXJ0UmVuZGVy
ZXJTbG90ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ob3duaW5nUmVuZGVy
ZXIoKS0+ZG9jdW1lbnQoKSwgV1RGTW92ZSgqcGFydFN0eWxlKSwgdGhpcywgcGFydFR5cGUpOwog
ICAgICAgICBwYXJ0UmVuZGVyZXJTbG90LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQ
YXJ0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK1JlbmRl
clNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0KQogICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9wYXJ0KHBhcnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyU2Ny
b2xsYmFyOwogCiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0IGZpbmFsIDogcHVibGljIFJlbmRl
ckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyU2Nyb2xsYmFyKiA9IG51bGxwdHIsIFNj
cm9sbGJhclBhcnQgPSBOb1BhcnQpOworICAgIFJlbmRlclNjcm9sbGJhclBhcnQoRG9jdW1lbnQm
LCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJTY3JvbGxiYXIqID0gbnVsbHB0ciwgU2Nyb2xsYmFyUGFy
dCA9IE5vUGFydCk7CiAgICAgCiAgICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyUGFydCgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJTZWFyY2hG
aWVsZDo6UmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNlYXJjaEZpZWxkOjpSZW5kZXJT
ZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9zZWFyY2hQb3B1cElzVmlzaWJsZShmYWxzZSkKICAgICAsIG1fc2VhcmNo
UG9wdXAoMCkKQEAgLTE3OCw4ICsxNzgsOCBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjp1cGRh
dGVDYW5jZWxCdXR0CiAgICAgaWYgKGN1clN0eWxlLnZpc2liaWxpdHkoKSA9PSBidXR0b25WaXNp
YmlsaXR5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhbmNlbEJ1dHRvblN0eWxlID0g
UmVuZGVyU3R5bGU6OmNsb25lKCZjdXJTdHlsZSk7Ci0gICAgY2FuY2VsQnV0dG9uU3R5bGUtPnNl
dFZpc2liaWxpdHkoYnV0dG9uVmlzaWJpbGl0eSk7CisgICAgYXV0byBjYW5jZWxCdXR0b25TdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJTdHlsZSk7CisgICAgY2FuY2VsQnV0dG9uU3R5bGUu
c2V0VmlzaWJpbGl0eShidXR0b25WaXNpYmlsaXR5KTsKICAgICBjYW5jZWxCdXR0b25SZW5kZXJl
ci0+c2V0U3R5bGUoV1RGTW92ZShjYW5jZWxCdXR0b25TdHlsZSkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIAog
Y2xhc3MgUmVuZGVyU2VhcmNoRmllbGQgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLCBwcml2YXRlIFBvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
U2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTZWFyY2hGaWVsZCgpOwogCiAgICAgdm9pZCB1cGRh
dGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgUmVuZGVyU2xpZGVyOjpk
ZWZhdWx0VHJhY2tMZW5ndGggPSAxMjk7CiAKLVJlbmRlclNsaWRlcjo6UmVuZGVyU2xpZGVyKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTbGlkZXI6OlJlbmRlclNsaWRlcihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiB7CiAgICAgLy8gV2UgYXNzdW1lIFJlbmRlclNsaWRlciB3b3JrcyBv
bmx5IHdpdGggPGlucHV0IHR5cGU9cmFuZ2U+LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNs
YXNzIFJlbmRlclNsaWRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXIKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgaW50IGRlZmF1bHRUcmFja0xlbmd0aDsKIAotICAgIFJlbmRlclNsaWRlcihIVE1M
SW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJTbGlkZXIoKTsKIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJFbWJlZGRlZE9iamVjdChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2lzUG90ZW50aWFsTW91
c2VBY3RpdmF0aW9uKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ7CiAKIGNs
YXNzIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIGZpbmFsIDogcHVibGljIFJlbmRlckVtYmVkZGVk
T2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVkUGx1Z0luKCk7CiAKICAgICBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGU6OlJlbmRlclRh
YmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faGVhZChudWxscHRyKQog
ICAgICwgbV9mb290KG51bGxwdHIpCkBAIC03Miw3ICs3Miw3IEBAIFJlbmRlclRhYmxlOjpSZW5k
ZXJUYWJsZShFbGVtZW50JiBlbGVtZW4KICAgICBtX2NvbHVtblBvcy5maWxsKDAsIDEpOwogfQog
Ci1SZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRv
Y3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faGVhZChudWxscHRyKQogICAgICwg
bV9mb290KG51bGxwdHIpCkBAIC0xNTQ5LDcgKzE1NDksNyBAQCBib29sIFJlbmRlclRhYmxlOjpu
b2RlQXRQb2ludChjb25zdCBIaXRUCiAKIFJlbmRlclRhYmxlKiBSZW5kZXJUYWJsZTo6Y3JlYXRl
QW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KQog
ewotICAgIGF1dG8gdGFibGUgPSBuZXcgUmVuZGVyVGFibGUocGFyZW50LT5kb2N1bWVudCgpLCBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LT5zdHls
ZSgpLCBwYXJlbnQtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORSA/IElOTElORV9UQUJMRSA6
IFRBQkxFKSk7CisgICAgYXV0byB0YWJsZSA9IG5ldyBSZW5kZXJUYWJsZShwYXJlbnQtPmRvY3Vt
ZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVu
dC0+c3R5bGUoKSwgcGFyZW50LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUgPyBJTkxJTkVf
VEFCTEUgOiBUQUJMRSkpOwogICAgIHRhYmxlLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1
cm4gdGFibGU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgZW51bSBTa2lwRW1wdHlTZWN0aW9u
c1ZhbHVlIHsgRG9Ob3RTa2lwRQogCiBjbGFzcyBSZW5kZXJUYWJsZSA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGUoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGUoRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOworICAgIFJlbmRlclRhYmxlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmly
dHVhbCB+UmVuZGVyVGFibGUoKTsKIAogICAgIC8vIFBlciBDU1MgMyB3cml0aW5nLW1vZGU6ICJU
aGUgZmlyc3QgYW5kIHNlY29uZCB2YWx1ZXMgb2YgdGhlICdib3JkZXItc3BhY2luZycgcHJvcGVy
dHkgcmVwcmVzZW50IHNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVDYXB0aW9uOjpS
ZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNh
cHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBjbGFzcyBSZW5kZXJUYWJs
ZTsKIAogY2xhc3MgUmVuZGVyVGFibGVDYXB0aW9uIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
RmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRhYmxlQ2FwdGlvbigpOwogCiAg
ICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5v
ZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCA6IHB1YmxpCiBDT01QSUxF
X0FTU0VSVChzaXplb2YoUmVuZGVyVGFibGVDZWxsKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRl
clRhYmxlQ2VsbCksIFJlbmRlclRhYmxlQ2VsbF9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxF
X0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9yZGVyVmFsdWUpID09IDEyLCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFi
bGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogICAgICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1fY2Vs
bFdpZHRoQ2hhbmdlZChmYWxzZSkKQEAgLTcwLDcgKzcwLDcgQEAgUmVuZGVyVGFibGVDZWxsOjpS
ZW5kZXJUYWJsZUNlbGwoRWxlbWVudAogICAgIHVwZGF0ZUNvbEFuZFJvd1NwYW5GbGFncygpOwog
fQogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYgZG9jdW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZUNlbGw6OlJl
bmRlclRhYmxlQ2VsbChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9j
b2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1fY2VsbFdpZHRoQ2hhbmdlZChmYWxzZSkK
QEAgLTEzNDQsNyArMTM0NCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzY3JvbGxiYXJzQ2hh
bmdlZCgKIAogUmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91
c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKIHsKLSAgICBh
dXRvIGNlbGwgPSBuZXcgUmVuZGVyVGFibGVDZWxsKHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5bGUoKSwg
VEFCTEVfQ0VMTCkpOworICAgIGF1dG8gY2VsbCA9IG5ldyBSZW5kZXJUYWJsZUNlbGwocGFyZW50
LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShwYXJlbnQtPnN0eWxlKCksIFRBQkxFX0NFTEwpKTsKICAgICBjZWxsLT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gY2VsbDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzks
OCBAQCBlbnVtIEluY2x1ZGVCb3JkZXJDb2xvck9yTm90IHsgRG9Ob3RJbmNsCiAKIGNsYXNzIFJl
bmRlclRhYmxlQ2VsbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgot
ICAgIFJlbmRlclRhYmxlQ2VsbChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7Ci0gICAgUmVuZGVyVGFibGVDZWxsKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
KyAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICAKICAg
ICB1bnNpZ25lZCBjb2xTcGFuKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcm93U3BhbigpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVDb2w6OlJlbmRl
clRhYmxlQ29sKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJUYWJsZUNvbDo6UmVuZGVyVGFibGVDb2woRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgMCkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyVGFibGVDZWxsOwogCiBjbGFzcyBS
ZW5kZXJUYWJsZUNvbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJl
bmRlclRhYmxlQ29sKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJUYWJsZUNvbChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgRWxlbWVudCYg
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KIAogICAgIHZvaWQgY2xlYXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHlC
aXRzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlUm93
OjpSZW5kZXJUYWJsZVJvdyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RG
TW92ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CiAgICAg
c2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9yb3dJbmRleCh1bnNldFJvd0luZGV4KQogewpAQCAtMjYyLDcgKzI2Miw3IEBA
IHZvaWQgUmVuZGVyVGFibGVSb3c6OmltYWdlQ2hhbmdlZChXcmFwcGUKIAogUmVuZGVyVGFibGVS
b3cqIFJlbmRlclRhYmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7Ci0gICAgYXV0byBuZXdSb3cgPSBuZXcgUmVuZGVy
VGFibGVSb3cocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBUQUJMRV9ST1cpKTsKKyAgICBhdXRv
IG5ld1JvdyA9IG5ldyBSZW5kZXJUYWJsZVJvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFC
TEVfUk9XKSk7CiAgICAgbmV3Um93LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3
Um93OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhSb3dJbmRleCA9IDB4N0YKIAogY2xhc3MgUmVuZGVyVGFibGVSb3cgZmluYWwgOiBw
dWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZVJvdyhFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVSb3coRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZVJvdyhF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyVGFibGVSb3coRG9jdW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBuZXh0Um93KCkgY29uc3Q7CiAg
ICAgUmVuZGVyVGFibGVSb3cqIHByZXZpb3VzUm93KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4MiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBk
YXRlTG9naWNhbEhlaWdodEZvCiAgICAgfQogfQogCi1SZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRl
clRhYmxlU2VjdGlvbihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICBzZXRJbmxpbmUoZmFsc2UpOwogfQogCi1SZW5k
ZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVNlY3Rpb246OlJl
bmRlclRhYmxlU2VjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIHNl
dElubGluZShmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDgg
QEAgcHVibGljOgogCiBjbGFzcyBSZW5kZXJUYWJsZVNlY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlU2VjdGlvbihEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlU2VjdGlv
bihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3Vt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9uKCk7
CiAKICAgICBSZW5kZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxv
dyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFJlbmRl
clRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIC8vIFRoaXMgY29udmVuaWVuY2UgZnVu
Y3Rpb24gc2hvdWxkIG5vdCBiZSBtYWRlIHB1YmxpYyBiZWNhdXNlIGlubmVyVGV4dEVsZW1lbnQg
bWF5IG91dGxpdmUgdGhlIHJlbmRlciB0cmVlLgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRl
OgogLy8gYW55bW9yZS4KIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIGV4cGxpY2l0IFJl
bmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBleHBsaWNpdCBSZW5kZXJUZXh0Q29udHJv
bElubmVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
eyB9CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcigpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRB
cmVhRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclRl
eHRDb250cm9sKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNz
IEhUTUxUZXh0QXJlYUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
IGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRB
cmVhRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lKCk7CiAKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50JiB0ZXh0QXJlYUVsZW1l
bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTElucHV0RWxl
bWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIDogcHVibGljIFJlbmRl
clRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUo
SFRNTElucHV0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAKIHByb3Rl
Y3RlZDoKQEAgLTkwLDcgKzkwLDcgQEAgaW5saW5lIEhUTUxFbGVtZW50KiBSZW5kZXJUZXh0Q29u
dHJvbFNpbgogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbElubmVy
QmxvY2soRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKKyAgICBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZU
VEN1ZUJveCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
ICAgICAsIG1fY3VlKGVsZW1lbnQuZ2V0Q3VlKCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgVlRUQ3VlQm94OwogCiBjbGFzcyBSZW5kZXJWVFRDdWUgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWVFRDdWUoVlRUQ3VlQm94Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJv
eCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8oSFRN
TFZpZGVvRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclZpZGVvOjpSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWVkaWEoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiAKIGNsYXNz
IFJlbmRlclZpZGVvIGZpbmFsIDogcHVibGljIFJlbmRlck1lZGlhIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlclZpZGVvKCk7CiAKICAgICBIVE1MVmlkZW9FbGVtZW50JiB2aWRl
b0VsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKj4gbV9zcGFubmVy
U3RhY2s7CiB9OwogCi1SZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclZpZXc6OlJlbmRlclZp
ZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3KCpk
b2N1bWVudC52aWV3KCkpCiAgICAgLCBtX3NlbGVjdGlvblVuc3BsaXRTdGFydChudWxscHRyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbmRlclF1b3RlOwogCiBjbGFzcyBSZW5kZXJWaWV3
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNlbGVjdGlvblN1YnRyZWVS
b290IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWaWV3KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclZpZXcoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29u
KFdpZGdlCiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6c2NoZWR1
bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7CiB9CiAKLVJlbmRlcldpZGdldDo6UmVuZGVy
V2lkZ2V0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KEhUTUxGcmFtZU93
bmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclJl
cGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0
aGlzKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVm
KCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyV2lkZ2V0KEhUTUxG
cmFtZU93bmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7
CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b1NpemluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUoY29uc3QgUmVuZGVyU3R5bGUm
IGN1cnJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
KCZjdXJyZW50U3R5bGUpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoY3VycmVudFN0eWxlKTsKICAgICBpZiAoY3VycmVudFN0eWxlLmxhc3RDaGlsZFN0YXRlKCkp
CiAgICAgICAgIG5ld1N0eWxlLT5zZXRMYXN0Q2hpbGRTdGF0ZSgpOwogICAgIGlmIChjdXJyZW50
U3R5bGUuZmlyc3RDaGlsZFN0YXRlKCkpCkBAIC01Miw3ICs1Miw3IEBAIFRleHRBdXRvU2l6aW5n
S2V5OjpUZXh0QXV0b1NpemluZ0tleShEZWwKIH0KIAogVGV4dEF1dG9TaXppbmdLZXk6OlRleHRB
dXRvU2l6aW5nS2V5KFJlbmRlclN0eWxlKiBzdHlsZSkKLSAgICA6IG1fc3R5bGUoUmVuZGVyU3R5
bGU6OmNsb25lKHN0eWxlKSkKKyAgICA6IG1fc3R5bGUoc3R5bGUgPyBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKnN0eWxlKSA6IG51bGxwdHIpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKLVJlbmRl
ck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVy
TWF0aE1MQmxvY2soRWxlbWVudCYgY29udGFpbmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyRmxleGlibGVCb3goY29udGFpbmVyLCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAot
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEJsb2NrOjpS
ZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9
CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgUmVuZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxvd2Vk
KGMKIAogUmVuZGVyUHRyPFJlbmRlck1hdGhNTEJsb2NrPiBSZW5kZXJNYXRoTUxCbG9jazo6Y3Jl
YXRlQW5vbnltb3VzTWF0aE1MQmxvY2soKQogewotICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxC
bG9jaz4gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxCbG9jaz4oZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxl
KCksIEZMRVgpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MQmxvY2s+IG5ld0Jsb2NrID0g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KGRvY3VtZW50KCksIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpKTsKICAgICBu
ZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBA
IGNsYXNzIFJlbmRlck1hdGhNTE9wZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6
IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MQmxv
Y2soRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1h
dGhNTEJsb2NrKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlck1h
dGhNTEJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBib29sIGlzQ2hpbGRB
bGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbmRlck1h
dGhNTFRhYmxlIGZpbmFsIDogcHVibGljIFJlbmRlclRhYmxlIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBSZW5kZXJNYXRoTUxUYWJsZShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyVGFibGUo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiBzdGF0aWMgY29uc3QgY2hhciogZ09wZW5pbmdCcmFj
ZUNoYXIgPSAiKCI7CiBzdGF0aWMgY29uc3QgY2hhciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSI7
CiAKLVJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jbG9zZUZlbmNl
UmVuZGVyZXIobnVsbHB0cikKIHsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxG
ZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZQogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+
IFJlbmRlck1hdGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IoY29uc3QgU3RyaW5nJiBv
cGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmbGFnKQogewotICAgIFJlbmRlclB0cjxSZW5kZXJN
YXRoTUxPcGVyYXRvcj4gbmV3T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxP
cGVyYXRvcj4oZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkoJnN0eWxlKCksIEZMRVgpLCBvcGVyYXRvclN0cmluZywgZm9ybSwgZmxhZyk7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTE9wZXJhdG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0ZVJl
bmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKSwgb3BlcmF0b3JTdHJp
bmcsIGZvcm0sIGZsYWcpOwogICAgIG5ld09wZXJhdG9yLT5pbml0aWFsaXplU3R5bGUoKTsKICAg
ICByZXR1cm4gbmV3T3BlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJv
dyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRo
TUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91
cygpKTsgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3Qg
ZmxvYXQgZ0ZyYWN0aW9uQmFyV2lkdGggPSAwCiBzdGF0aWMgY29uc3QgZmxvYXQgZ051bWVyYXRv
ckdhcCA9IDAuMmY7CiBzdGF0aWMgY29uc3QgZmxvYXQgZ0Rlbm9taW5hdG9yR2FwID0gMC4yZjsK
IAotUmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9k
ZWZhdWx0TGluZVRoaWNrbmVzcygxKQogICAgICwgbV9saW5lVGhpY2tuZXNzKDApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlvbiBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0
aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogICAgIGZsb2F0IHJl
bGF0aXZlTGluZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdExpbmVUaGlja25l
c3MgPyBtX2xpbmVUaGlja25lc3MgLyBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIDogTGF5b3V0VW5p
dCgwKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1h
dGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRo
TUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1h
dGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1hdGguaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MTWF0aCBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJlbmRlck1hdGhN
TE1hdGgoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ck1hdGhNTE1hdGgoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNZW5jbG9zZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIC8vIEZvciBu
b3csIHdlIHVzZSBhIEJlemllciBjdXJ2ZSBhbmQgdGhpcyBzb21ld2hhdCBhcmJpdHJhcnkgdmFs
dWUuCiBjb25zdCB1bnNpZ25lZCBzaG9ydCBsb25nRGl2TGVmdFNwYWNlID0gMTA7CiAKLVJlbmRl
ck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MTWVuY2xvc2U6
OlJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX2FzY2VudCgwKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
IGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlIGZpbmFsOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IFN0cmV0Y2h5Q2hhcmFjdGVyIHN0cmV0Y2h5QwogICAg
IHsgMHgyMjJiLCAweDIzMjAsIDB4MjNhZSwgMHgyMzIxLCAweDAgICAgfSAvLyBpbnRlZ3JhbCBz
aWduCiB9OwogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0
aE1MRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MVG9rZW4o
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJhc2Vs
aW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkKQEAgLTgyLDcgKzgy
LDcgQEAgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdAogICAgIHVwZGF0
ZVRva2VuQ29udGVudCgpOwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1M
T3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OkZvcm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCitSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnk6OkZvcm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiAgICAgOiBSZW5kZXJN
YXRoTUxUb2tlbihkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWln
aHRBYm92ZUJhc2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkK
QEAgLTYzMSw5ICs2MzEsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHls
ZSgpCiAgICAgLy8gRklYTUU6IFRoZSBzcGFjaW5nIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgd2hv
bGUgZW1iZWxsaXNoZWQgb3BlcmF0b3IgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQ4MzEpLgogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgb25seSBi
ZSBhZGRlZCBpbnNpZGUgKHBlcmhhcHMgaW5mZXJyZWQpIG1yb3cgKGh0dHA6Ly93d3cudzMub3Jn
L1RSL01hdGhNTC9jaGFwdGVyMy5odG1sI3ByZXNtLm9wc3BhY2luZykuCiAgICAgY29uc3QgYXV0
byYgd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQoKSk7Ci0gICAg
YXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICBuZXdTdHlsZS0+c2V0TWFyZ2luU3RhcnQoTGVuZ3Ro
KG1fbGVhZGluZ1NwYWNlLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5FbmQoTGVu
Z3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7Cisg
ICAgbmV3U3R5bGUuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKG1fbGVhZGluZ1NwYWNlLCBGaXhlZCkp
OworICAgIG5ld1N0eWxlLnNldE1hcmdpbkVuZChMZW5ndGgobV90cmFpbGluZ1NwYWNlLCBGaXhl
ZCkpOwogICAgIHdyYXBwZXItPnNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKICAgICB3cmFw
cGVyLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBwdWJs
aWMgUmVuZGVyTWF0aE1MVG9rZW4gewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9y
KE1hdGhNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5k
ZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6
Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRv
cihNYXRoTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5n
LCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzID0g
MCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVC
YXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOwogICAgIHZvaWQgc3RyZXRj
aFRvKExheW91dFVuaXQgd2lkdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIGNvbnN0IGZsb2F0IGdSYWRpY2FsTGluZVRoaWNrbmVzc0VtcyA9IDAKIC8vIFJhZGlj
YWwgdGhpY2sgbGluZSB0aGlja25lc3MgKGVtKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xp
bmVUaGlja25lc3NFbXMgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxPcGVyYXRvcihkb2N1bWVudCwgV1RGTW92ZShz
dHlsZSksIFN0cmluZygmZ1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OlByZWZpeCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvciBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2Vs
aW5lLCBMYXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEluIG9yZGVyIHRvIGFjY2VwdCBpbnZhbGlkIG1h
cmt1cCBhbmQgdG8gaGFuZGxlIDxtcm9vdD4gYW5kIDxtc3FydD4gY29uc2lzdGVudGx5LCB3ZSB3
aWxsIGFsbG93IGFueSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhlIEJhc2VXcmFwcGVyIG9mIDxt
cm9vdD4gdG9vLgogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRvIGJlIGVtcHR5
IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSA8bXJvb3Q+
IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCi1SZW5kZXJNYXRoTUxSb290OjpS
ZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb290OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTFJvb3Q6OnJlc3RydWN0dXJlV3JhcHBlCiAKICAgICBpZiAocmFkaWNhbC0+aXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgcmFkaWNhbCBvcGVyYXRvci4KLSAg
ICAgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4gcmFkaWNhbE9wZXJh
dG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yPihkb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUo
KSwgRkxFWCkpOworICAgICAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
PiByYWRpY2FsT3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3I+KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlKCksIEZMRVgpKTsKICAgICAgICAgcmFkaWNhbE9wZXJhdG9yLT5pbml0aWFs
aXplU3R5bGUoKTsKICAgICAgICAgcmFkaWNhbC0+YWRkQ2hpbGQocmFkaWNhbE9wZXJhdG9yLmxl
YWtQdHIoKSk7CiAgICAgfQpAQCAtMjIwLDI2ICsyMjAsMjYgQEAgdm9pZCBSZW5kZXJNYXRoTUxS
b290Ojp1cGRhdGVTdHlsZSgpCiAgICAgLy8gV2Ugc2V0IHRoZSBzdHlsZSBvZiB0aGUgYW5vbnlt
b3VzIHdyYXBwZXJzLgogCiAgICAgYXV0byByYWRpY2FsID0gcmFkaWNhbFdyYXBwZXIoKTsKLSAg
ICBhdXRvIHJhZGljYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICByYWRpY2FsU3R5bGUtPnNldE1hcmdpblRv
cChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0
aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYXV0byByYWRpY2FsU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKKyAgICByYWRp
Y2FsU3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUg
dXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KICAgICByYWRpY2FsLT5zZXRT
dHlsZShXVEZNb3ZlKHJhZGljYWxTdHlsZSkpOwogICAgIHJhZGljYWwtPnNldE5lZWRzTGF5b3V0
QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCiAgICAgYXV0byBiYXNlID0gYmFzZVdyYXBwZXIoKTsK
LSAgICBhdXRvIGJhc2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICBiYXNlU3R5bGUtPnNldE1hcmdpblRvcChM
ZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1M
Um9vdDo6bGF5b3V0KCkuCi0gICAgYmFzZVN0eWxlLT5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRl
bVBvc2l0aW9uQmFzZWxpbmUpOworICAgIGF1dG8gYmFzZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CisgICAgYmFzZVN0
eWxlLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0
ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYmFzZVN0eWxlLnNldEFsaWdu
SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CiAgICAgYmFzZS0+c2V0U3R5bGUo
V1RGTW92ZShiYXNlU3R5bGUpKTsKICAgICBiYXNlLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0
aHNSZWNhbGMoKTsKIAogICAgIGlmICghaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkpIHsKICAg
ICAgICAgLy8gRm9yIG1yb290LCB3ZSBhbHNvIHNldCB0aGUgc3R5bGUgb2YgdGhlIGluZGV4IHdy
YXBwZXIuCiAgICAgICAgIGF1dG8gaW5kZXggPSBpbmRleFdyYXBwZXIoKTsKLSAgICAgICAgYXV0
byBpbmRleFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoJnN0eWxlKCksIEZMRVgpOwotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5Ub3AoTGVu
Z3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1hdGhNTFJv
b3Q6OmxheW91dCgpLgotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgo
a2VybkJlZm9yZURlZ3JlZSwgRml4ZWQpKTsKLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0TWFyZ2lu
RW5kKExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7Ci0gICAgICAgIGluZGV4U3R5bGUt
PnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CisgICAgICAgIGF1
dG8gaW5kZXhTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHN0eWxlKCksIEZMRVgpOworICAgICAgICBpbmRleFN0eWxlLnNldE1hcmdpblRvcChMZW5n
dGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9v
dDo6bGF5b3V0KCkuCisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKGtl
cm5CZWZvcmVEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2luRW5k
KExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5bGUuc2V0
QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKICAgICAgICAgaW5kZXgt
PnNldFN0eWxlKFdURk1vdmUoaW5kZXhTdHlsZSkpOwogICAgICAgICBpbmRleC0+c2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKIAogUmVuZGVyUHRyPFJlbmRl
ck1hdGhNTFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRlQW5vbnlt
b3VzV3JhcHBlcihSZW5kZXJNYXRoTUxSb290KiByZW5kZXJPYmplY3QpCiB7Ci0gICAgUmVuZGVy
UHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBuZXdCbG9jayA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlck1hdGhNTFJvb3RXcmFwcGVyPihyZW5kZXJPYmplY3QtPmRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZyZW5kZXJPYmplY3QtPnN0eWxl
KCksIEZMRVgpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IG5ld0Js
b2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+KHJlbmRlck9iamVj
dC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkocmVuZGVyT2JqZWN0LT5zdHlsZSgpLCBGTEVYKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxp
emVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxS
b290IDogcHVibGljIFJlbmRlck1hCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBw
ZXI7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKIAogICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92
ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlciBm
aW5hbCA6IHB1CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogcHVibGljOgotICAg
IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBSZW5kZXJNYXRoTUxSb290V3JhcHBlcihEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyTWF0
aE1MUm93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkgeyB9CiAKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVu
ZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1M
Um93KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJN
YXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1M
Um93OjpSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1M
QmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJv
b3Q7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogCiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIHN0YXRpYyBib29sIGlzUHJlc2NyaXB0RGVsaW1pdGVyKGNvbnN0IFIKICAgICByZXR1cm4g
cmVuZGVyT2JqZWN0Lm5vZGUoKSAmJiByZW5kZXJPYmplY3Qubm9kZSgpLT5oYXNUYWdOYW1lKE1h
dGhNTE5hbWVzOjptcHJlc2NyaXB0c1RhZyk7CiB9CiAKLVJlbmRlck1hdGhNTFNjcmlwdHM6OlJl
bmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlwdHMo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhN
TEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIC8vIERldGVybWluZSB3aGF0
IGtpbmQgb2Ygc3ViL3N1cCBleHByZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNjcmlwdHMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gUmVuZGVyIGEgYmFzZSB3aXRoIHNjcmlwdHMu
CiBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJs
b2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hl
ZE9wZXJhdG9yKCkgZmluYWw7CiAgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1S
ZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxT
cGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fd2lkdGgoMCkKICAgICAsIG1faGVpZ2h0KDApCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU3BhY2UgZmluYWwgOiBwdWJs
aWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNwYWNlKE1h
dGhNTFRleHRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBN
YXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRl
eHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw4ICszOCw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlOwogLy8gUmVuZGVyIHNxcnQo
YmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBjbGFzcyBSZW5kZXJNYXRoTUxTcXVhcmVS
b290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvb3QgewogcHVibGljOgotICAgIFJlbmRl
ck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4p
OwotICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MU3F1YXJlUm9vdD4gY3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKFJlbmRlck1hdGhNTE1lbmNsb3NlJik7CisgICAgUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgCiBwcml2
YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRo
TUxUb2tlbihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY29udGFpbnNFbGVtZW50KGZhbHNlKQogewogfQog
Ci1SZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46
OlJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAg
ICAsIG1fY29udGFpbnNFbGVtZW50KGZhbHNlKQogewpAQCAtODIsMTcgKzgyLDE3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVN0eWxlKCkKICAgICBjb25zdCBhdXRvJiB0b2tlbkVs
ZW1lbnQgPSBlbGVtZW50KCk7CiAKICAgICBjb25zdCBhdXRvJiB3cmFwcGVyID0gZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEZMRVgpOwor
ICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShzdHlsZSgpLCBGTEVYKTsKIAogICAgIGlmICh0b2tlbkVsZW1lbnQuaGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bWlUYWcpKSB7CiAgICAgICAgIC8vIFRoaXMgdHJpZXMgdG8gZW11bGF0
ZSB0aGUgZGVmYXVsdCBtYXRodmFyaWFudCB2YWx1ZSBvbiA8bWk+IHVzaW5nIHRoZSBDU1MgZm9u
dC1zdHlsZSBwcm9wZXJ0eS4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJldmlz
ZWQgd2hlbiBtYXRodmFyaWFudCBpcyBpbXBsZW1lbnRlZCAoaHR0cDovL3drYnVnLzg1NzM1KSBh
bmQgd2hlbiBmb250cyB3aXRoIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scyBjaGFy
YWN0ZXJzIGFyZSBtb3JlIHBvcHVsYXIuCi0gICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0g
bmV3U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBGb250U2VsZWN0b3IqIGZvbnRT
ZWxlY3RvciA9IG5ld1N0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOworICAgICAg
ICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IG5ld1N0eWxlLmZvbnREZXNjcmlwdGlvbigpOworICAg
ICAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9IG5ld1N0eWxlLmZvbnRDYXNjYWRlKCku
Zm9udFNlbGVjdG9yKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc0VsZW1lbnQgJiYgZWxlbWVu
dCgpLnRleHRDb250ZW50KCkuc3RyaXBXaGl0ZVNwYWNlKCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCku
bGVuZ3RoKCkgPT0gMSAmJiAhdG9rZW5FbGVtZW50Lmhhc0F0dHJpYnV0ZShtYXRodmFyaWFudEF0
dHIpKQogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhGb250SXRhbGljT24p
OwotICAgICAgICBpZiAobmV3U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRp
b24pKQotICAgICAgICAgICAgbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKGZvbnRTZWxl
Y3Rvcik7CisgICAgICAgIGlmIChuZXdTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKKyAgICAgICAgICAgIG5ld1N0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKGZvbnRT
ZWxlY3Rvcik7CiAgICAgfQogCiAgICAgd3JhcHBlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdTdHls
ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFRv
a2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRo
TUxUb2tlbihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVu
ZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVu
ZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIE1hdGhNTFRl
eHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1l
bnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAK
LVJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiB1bmRlci9vdmVyIGV4cHJl
c3Npb24gd2UgaGF2ZSBieSBlbGVtZW50IG5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxVbmRlck92ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIgZmluYWwgOiBwdWJs
aWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFVuZGVyT3Zl
cihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICAKICAgICBSZW5kZXJN
YXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNDYgKzg2LDUxIEBAIHN0cnVjdCBTYW1lU2l6
ZUFzUmVuZGVyU3R5bGUgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyU3R5bGUpID09
IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5bGUpLCBSZW5kZXJTdHlsZV9zaG91bGRfc3RheV9z
bWFsbCk7CiAKLWlubGluZSBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0eWxlKCkKK1JlbmRlclN0eWxl
JiBSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyU3R5bGUm
IHN0eWxlID0gKlJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKS5yZWxlYXNlKCk7Cisg
ICAgc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZSA9ICpuZXcgUmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdFN0eWxlKTsKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gY2xvbmUoJmRlZmF1bHRTdHlsZSgpKTsKKyAgICByZXR1
cm4gY2xvbmUoZGVmYXVsdFN0eWxlKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQorc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkKIHsKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPihuZXcgUmVuZGVyU3R5bGUodHJ1ZSkpOworICAgIHJldHVy
biBjbG9uZVB0cihkZWZhdWx0U3R5bGUoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSBkaXNwbGF5KQorUmVuZGVyU3R5bGUg
UmVuZGVyU3R5bGU6OmNsb25lKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRv
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIG5ld1N0eWxlLT5pbmhlcml0
RnJvbShwYXJlbnRTdHlsZSk7Ci0gICAgbmV3U3R5bGUtPmluaGVyaXRVbmljb2RlQmlkaUZyb20o
cGFyZW50U3R5bGUpOwotICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KGRpc3BsYXkpOwotICAgIHJl
dHVybiBuZXdTdHlsZTsKKyAgICByZXR1cm4gUmVuZGVyU3R5bGUoc3R5bGUsIENsb25lKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3Qg
UmVuZGVyU3R5bGUqIG90aGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KG5ldyBSZW5kZXJTdHlsZSgqb3RoZXIpKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKK30K
KworUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlzcGxheSBkaXNwbGF5KQorewor
ICAgIGF1dG8gbmV3U3R5bGUgPSBjcmVhdGUoKTsKKyAgICBuZXdTdHlsZS5pbmhlcml0RnJvbSgm
cGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLmluaGVyaXRVbmljb2RlQmlkaUZyb20oJnBhcmVu
dFN0eWxlKTsKKyAgICBuZXdTdHlsZS5zZXREaXNwbGF5KGRpc3BsYXkpOworICAgIHJldHVybiBu
ZXdTdHlsZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6
Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
c2V1ZG9TdHlsZSkKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKQogewogICAg
IEFTU0VSVChwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgcHNldWRvU3R5bGUu
c3R5bGVUeXBlKCkgPT0gQUZURVIpOwogCi0gICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKLSAgICBzdHlsZS0+aW5oZXJpdEZyb20oJnBzZXVkb1N0eWxlKTsKKyAgICBhdXRv
IHN0eWxlID0gY3JlYXRlKCk7CisgICAgc3R5bGUuaW5oZXJpdEZyb20oJnBzZXVkb1N0eWxlKTsK
ICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLUFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKGJvb2wpCitSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxl
VGFnKQogICAgIDogbV9ib3goU3R5bGVCb3hEYXRhOjpjcmVhdGUoKSkKICAgICAsIHZpc3VhbChT
dHlsZVZpc3VhbERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZ3JvdW5kKFN0eWxlQmFja2dy
b3VuZERhdGE6OmNyZWF0ZSgpKQpAQCAtMTYyLDE3ICsxNjcsMTcgQEAgQUxXQVlTX0lOTElORSBS
ZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoYgogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25J
bmhlcml0ZWRGbGFncykgPD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7
CiB9CiAKLUFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBvKQotICAgIDogbV9ib3goby5tX2JveCkKLSAgICAsIHZpc3VhbChvLnZpc3VhbCkK
LSAgICAsIG1fYmFja2dyb3VuZChvLm1fYmFja2dyb3VuZCkKLSAgICAsIHN1cnJvdW5kKG8uc3Vy
cm91bmQpCi0gICAgLCByYXJlTm9uSW5oZXJpdGVkRGF0YShvLnJhcmVOb25Jbmhlcml0ZWREYXRh
KQotICAgICwgcmFyZUluaGVyaXRlZERhdGEoby5yYXJlSW5oZXJpdGVkRGF0YSkKLSAgICAsIGlu
aGVyaXRlZChvLmluaGVyaXRlZCkKLSAgICAsIG1fc3ZnU3R5bGUoby5tX3N2Z1N0eWxlKQotICAg
ICwgaW5oZXJpdGVkX2ZsYWdzKG8uaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgbm9uaW5oZXJpdGVk
X2ZsYWdzKG8ubm9uaW5oZXJpdGVkX2ZsYWdzKQorUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCisgICAgOiBtX2JveChvdGhlci5tX2Jv
eCkKKyAgICAsIHZpc3VhbChvdGhlci52aXN1YWwpCisgICAgLCBtX2JhY2tncm91bmQob3RoZXIu
bV9iYWNrZ3JvdW5kKQorICAgICwgc3Vycm91bmQob3RoZXIuc3Vycm91bmQpCisgICAgLCByYXJl
Tm9uSW5oZXJpdGVkRGF0YShvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YSkKKyAgICAsIHJhcmVJ
bmhlcml0ZWREYXRhKG90aGVyLnJhcmVJbmhlcml0ZWREYXRhKQorICAgICwgaW5oZXJpdGVkKG90
aGVyLmluaGVyaXRlZCkKKyAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKKyAgICAs
IGluaGVyaXRlZF9mbGFncyhvdGhlci5pbmhlcml0ZWRfZmxhZ3MpCisgICAgLCBub25pbmhlcml0
ZWRfZmxhZ3Mob3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEuaCIKICNpbmNsdWRlICJTdHlsZUZpbHRlckRhdGEuaCIKICNpbmNsdWRlICJT
dHlsZUZsZXhpYmxlQm94RGF0YS5oIgorI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgog
I2luY2x1ZGUgIlN0eWxlTWFycXVlZURhdGEuaCIKICNpbmNsdWRlICJTdHlsZU11bHRpQ29sRGF0
YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCIKQEAgLTQ3OSwyMCArNDgw
LDI5IEBAIHByb3RlY3RlZDoKIAogLy8gIUVORCBTWU5DIQogcHJpdmF0ZToKLSAgICAvLyB1c2Vk
IHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KLSAgICBBTFdBWVNfSU5MSU5FIFJlbmRlclN0
eWxlKGJvb2wpOwotICAgIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmKTsKKyAgICBlbnVtIENyZWF0ZURlZmF1bHRTdHlsZVRhZyB7IENyZWF0ZURlZmF1bHRTdHls
ZSB9OworICAgIFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZVRhZyk7CisKKyAgICBzdGF0
aWMgUmVuZGVyU3R5bGUmIGRlZmF1bHRTdHlsZSgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZShjb25zdCBSZW5kZXJTdHlsZSopOwor
ICAgIFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKyAgICBSZW5kZXJTdHls
ZSYgb3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKworICAgIC8vIFRoaXMgaXMg
bm90IGEgdHJ1ZSBjb3B5IGNvbnN0cnVjdG9yLiBJdCBkb2Vzbid0IGNvcHkgcHNldWRvIHN0eWxl
IGNhY2hlcyBmb3IgZXhhbXBsZS4KKyAgICBlbnVtIENsb25lVGFnIHsgQ2xvbmUgfTsKKyAgICBS
ZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIENsb25lVGFnKTsKIAogICAgIH5SZW5kZXJT
dHlsZSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgUmVuZGVyU3R5bGUgZm9yIGdlbmVyYXRlZCBjb250
ZW50IGJ5IGluaGVyaXRpbmcgZnJvbSBhIHBzZXVkbyBzdHlsZS4KLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5
bGUgY3JlYXRlKCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3Jl
YXRlUHRyKCk7CisKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY2xvbmUoY29uc3QgUmVuZGVyU3R5
bGUmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZVB0cihj
b25zdCBSZW5kZXJTdHlsZSYpOworCisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlz
cGxheSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Q
c2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOwogCiAgICAgQ29udGVu
dFBvc2l0aW9uIHJlc29sdmVkSnVzdGlmeUNvbnRlbnRQb3NpdGlvbihjb25zdCBTdHlsZUNvbnRl
bnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yKSBjb25zdDsKICAgICBDb250ZW50
RGlzdHJpYnV0aW9uVHlwZSByZXNvbHZlZEp1c3RpZnlDb250ZW50RGlzdHJpYnV0aW9uKGNvbnN0
IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKFNWR0dyYXBo
aWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgcHVibGljOgogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdCbG9jayhTVkdHcmFw
aGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJT
VkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAg
ICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNPYmpl
Y3RCb3VuZGluZ0JveFZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveFZh
bGlkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0NvbnRhaW5lcihT
VkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJTVkdFbGxpcHNlOjpSZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1NoYXBl
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2Up
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Vs
bGlwc2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdFbGxpcHNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdFbGxpcHNlIGZpbmFsIDogcHVibGlj
IFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBo
aWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVh
bCB+UmVuZGVyU1ZHRWxsaXBzZSgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRlclNW
R0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFz
cyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0KCk7CiAKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgZm9yZWlnbk9iamVjdEVs
ZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHR3JhZGllbnRTdG9wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1
c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVJlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVy
U1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFk
aWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRp
ZW50U3RvcC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIGNsYXNzIFNWR0dyYWRpZW50RWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgZXhpc3RzIG1vc3Rs
eSBzbyB3ZSBjYW4gaGVhciBhYm91dCBncmFkaWVudCBzdG9wIHN0eWxlIGNoYW5nZXMKIGNsYXNz
IFJlbmRlclNWR0dyYWRpZW50U3RvcCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3Rv
cEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdHcmFkaWVu
dFN0b3AoKTsKIAogICAgIFNWR1N0b3BFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHU3RvcEVsZW1lbnQ+KFJlbmRlck9iamVjdDo6bm9kZUZvck5vbkFub255bW91
cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgU1ZH
RWxlbWVudDsKIC8vIDxkZWZzPiwgPGxpbmVhckdyYWRpZW50PiwgPHJhZGlhbEdyYWRpZW50PiBh
cmUgYWxsIGdvb2QgZXhhbXBsZXMKIGNsYXNzIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciA6IHB1
YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAog
cHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHSW1hZ2U6OlJl
bmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zv
cm1VcGRhdGUodHJ1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBTVkdJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0ltYWdlIGZpbmFsIDog
cHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbWFn
ZShTVkdJbWFnZUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdJbWFnZSgpOwogCiAgICAgU1ZHSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1l
bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdJbmxpbmU6OlJl
bmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lubGluZShT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgc2V0QWx3YXlzQ3Jl
YXRlTGluZUJveGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJbmxpbmUgOiBwdWJs
aWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhp
Y3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZH
SW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgU1ZHR3Jh
cGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxT
VkdHcmFwaGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNW
R01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3Qo
U1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVs
ZW1lbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hhc1NWR1NoYWRvdyhm
YWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgU1ZHRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAog
cHJvdGVjdGVkOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UGF0aC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdQYXRoOjpSZW5kZXJTVkdQYXRoKFNWR0dy
YXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR1BhdGg6OlJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdQYXRoIGZpbmFsIDog
cHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdQYXRoKFNWR0dy
YXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVh
bCB+UmVuZGVyU1ZHUGF0aCgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZH
UmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1JlY3Q6OlJlbmRlclNWR1JlY3QoU1ZH
UmVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdTaGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdXNlUGF0aEZhbGxiYWNr
KGZhbHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVjdCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1JlY3QoU1ZHUmVj
dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZWN0KCk7
CiAKICAgICBTVkdSZWN0RWxlbWVudCYgcmVjdEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVk
ZWYgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDbGkKIAogY2xhc3MgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcigpOwogCiAgICAgU1ZHQ2xpcFBhdGhFbGVtZW50JiBj
bGlwUGF0aEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdDbGlwUGF0aEVsZW1l
bnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBzdGF0aWMgaW5saW5lIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYgc3ZnCiAgICAgcmV0dXJuIGVs
ZW1lbnQuZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CiB9CiAKLVJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdFbGVtZW50JiBl
bGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2lkKGVsZW1lbnQuZ2V0SWRBdHRy
aWJ1dGUoKSkKICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciop
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGVudW0gSW52YWxp
ZGF0aW9uTW9kZSB7CiAgICAgICAgIExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb24sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYgZWxl
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUZpbHRlcigpOwog
CiAgICAgU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFNWR0ZpbHRlckVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjplbGVt
ZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyYgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0CiAKIGNsYXNzIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVF
bGVtZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OlJl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50JiBub2RlLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihub2RlLCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyh0
cnVlKQogI2lmIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JikgZmluYWwgeyByZXR1
cm4gRmxvYXRSZWN0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQoKTsKIAogICAgIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgbGlu
ZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQo
KSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVt
ZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJj
ZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBj
bGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTWFya2VyIGZpbmFs
IDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2VyRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlTWFya2Vy
KCk7CiAKICAgICBTVkdNYXJrZXJFbGVtZW50JiBtYXJrZXJFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8U1ZHTWFya2VyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6
OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcihTVkdN
YXNrRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclNWR1Jlc291cmNlTWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcihTVkdNYXNr
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIHN0cnVjdCBNYXNrZXJEYXRhIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAg
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cigpOwogCiAgICAgU1ZHTWFza0VsZW1lbnQmIG1hc2tFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHTWFza0VsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjplbGVt
ZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQ
YXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKFNW
R1BhdHRlcm5FbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0cmlidXRlcyh0cnVlKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuIGZpbmFsIDogcHVibGlj
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICBTVkdQYXR0ZXJuRWxlbWVudCYgcGF0dGVybkVsZW1lbnQoKSBj
b25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJ
bnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBAIGNsYXNzIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudCgpOwogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiByYWRpYWxHcmFkaWVu
dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBl
bGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUm9v
dDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQoZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNo
YW5nZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgU1ZHU1ZHRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHUm9vdCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUm9vdChTVkdT
VkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUm9vdCgp
OwogCiAgICAgU1ZHU1ZHRWxlbWVudCYgc3ZnU1ZHRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgUmVuZGVyU1ZHU2hhcGUmIG1fcmVuZGVyZXI7CiB9OwogCi1SZW5kZXJTVkdTaGFwZTo6UmVu
ZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1NoYXBlKFNWR0dy
YXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0Jv
dW5kYXJpZXNVcGRhdGUoZmFsc2UpIC8vIERlZmF1bHQgaXMgZmFsc2UsIHRoZSBjYWNoZWQgcmVj
dHMgYXJlIGVtcHR5IGZyb20gdGhlIGJlZ2lubmluZy4KICAgICAsIG1fbmVlZHNTaGFwZVVwZGF0
ZSh0cnVlKSAvLyBEZWZhdWx0IGlzIHRydWUsIHNvIHdlIGdyYWIgYSBQYXRoIG9iamVjdCBvbmNl
IGZyb20gU1ZHR3JhcGhpY3NFbGVtZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZH
U2hhcGUgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRl
clNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1NoYXBlKCk7CiAKICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBo
aWNzRWxlbWVudD4oUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVuZGVyU1ZHVFNwYW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJTVkdUU3BhbihTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4
cGxpY2l0IFJlbmRlclNWR1RTcGFuKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyU1ZHSW5saW5lKGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdU
ZXh0OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdU
ZXh0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNW
R0Jsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1Jlb3JkZXJpbmco
ZmFsc2UpCiAgICAgLCBtX25lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoZmFsc2UpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyU1ZHSW5saW5l
VGV4dDsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdUZXh0KCk7CiAKICAgICBT
VkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHSW5saW5lKGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZH
VGV4dFBhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKIAogICAgIFNWR1RleHRQYXRoRWxlbWVudCYgdGV4dFBhdGhFbGVtZW50
KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZH
R3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSh0cnVlKQogICAgICwgbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoZmFs
c2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50OwogY2xhc3MgUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGlj
OgotICAgIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBT
VkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PFNW
R0dyYXBoaWNzRWxlbWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAg
ICBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkKICAgICAsIG1faXNMYXlvdXRTaXplQ2hh
bmdlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyB0aHVzIHdlIGluaGVyaXQgZnJvbSBSZW5kZXJTVkdDb250YWluZXIgaW5zdGVhZCBvZiBSZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyCiBjbGFzcyBSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAgIFJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVtZW50
KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVu
ZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW4KICAgICBpZiAoc2hvdWxkQ3JlYXRlTmV3
UmVuZGVyZXIpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCkpCiAgICAgICAgICAgICBlbGVtZW50LndpbGxBdHRhY2hSZW5kZXJlcnMoKTsKLSAg
ICAgICAgY3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgV1RGTW92ZSh1cGRhdGUuc3R5bGUpKTsKKyAg
ICAgICAgY3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgV1RGTW92ZSgqdXBkYXRlLnN0eWxlKSk7CiAg
ICAgICAgIGludmFsaWRhdGVXaGl0ZXNwYWNlT25seVRleHRTaWJsaW5nc0FmdGVyQXR0YWNoSWZO
ZWVkZWQoZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjEsMTkgKzI2MSwx
OSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAgICAgYXV0byYg
cmVuZGVyZXIgPSAqZWxlbWVudC5yZW5kZXJlcigpOwogCiAgICAgaWYgKHVwZGF0ZS5pc1N5bnRo
ZXRpYykgewotICAgICAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKHVwZGF0ZS5zdHlsZSks
IFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpOworICAgICAgICByZW5kZXJlci5zZXRT
dHlsZShXVEZNb3ZlKCp1cGRhdGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxh
eWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1cGRhdGUuY2hhbmdlID09
IFN0eWxlOjpOb0NoYW5nZSkgewogICAgICAgICBpZiAocHNldWRvU3R5bGVDYWNoZUlzSW52YWxp
ZCgmcmVuZGVyZXIsIHVwZGF0ZS5zdHlsZS5nZXQoKSkgfHwgKHBhcmVudCgpLnN0eWxlQ2hhbmdl
ID09IFN0eWxlOjpGb3JjZSAmJiByZW5kZXJlci5yZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJv
cGFnYXRpb24oKSkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1vdmUodXBk
YXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOworICAgICAgICAgICAgcmVuZGVyZXIu
c2V0U3R5bGUoV1RGTW92ZSgqdXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKHVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVy
ZW5jZUVxdWFsKTsKKyAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKCp1cGRhdGUuc3R5bGUp
LCBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCkBA
IC0yODksMTcgKzI4OSwxNyBAQCBzdGF0aWMgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBtb3ZlVG9G
bG93CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIo
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3Zv
aWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5kZXJlcihlbGVt
ZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogcGFyZW50Rmxvd1JlbmRlcmVyID0gbnVsbHB0cjsK
ICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgcGFyZW50Rmxvd1JlbmRlcmVyID0gbW92ZVRv
Rmxvd1RocmVhZElmTmVlZGVkKGVsZW1lbnQsICpzdHlsZSk7CisgICAgcGFyZW50Rmxvd1JlbmRl
cmVyID0gbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKGVsZW1lbnQsIHN0eWxlKTsKICNlbmRpZgog
Ci0gICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNOZWVkZWQoKnN0eWxlKSkKKyAgICBpZiAoIWVs
ZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJl
bmRlclRyZWVQb3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50KTsKQEAgLTMyNiw3
ICszMjYsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlOwogICAgIG5ld1JlbmRl
cmVyLT5hbmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCpuZXdSZW5kZXJlciwgaW5pdGlhbFN0
eWxlLCBhbmltYXRlZFN0eWxlKTsKICAgICBpZiAoYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgbmV3
UmVuZGVyZXItPnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZShhbmltYXRlZFN0eWxlKSk7CisgICAg
ICAgIG5ld1JlbmRlcmVyLT5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoKmFuaW1hdGVkU3R5bGUp
KTsKIAogICAgIG5ld1JlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKIApAQCAtNDgyLDcgKzQ4
Miw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZU9yQWYKIAogICAgIFN0
eWxlOjpFbGVtZW50VXBkYXRlIGVsZW1lbnRVcGRhdGU7CiAKLSAgICBhdXRvIG5ld1N0eWxlID0g
UmVuZGVyU3R5bGU6OmNsb25lKGN1cnJlbnQucmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5
bGUocHNldWRvSWQsICZjdXJyZW50LnJlbmRlcmVyKCktPnN0eWxlKCkpKTsKKyAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpjdXJyZW50LnJlbmRlcmVyKCktPmdldENh
Y2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkLCAmY3VycmVudC5yZW5kZXJlcigpLT5zdHlsZSgpKSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGU7CiAgICAg
aWYgKHJlbmRlcmVyICYmIG1fZG9jdW1lbnQuZnJhbWUoKS0+YW5pbWF0aW9uKCkudXBkYXRlQW5p
bWF0aW9ucygqcmVuZGVyZXIsICpuZXdTdHlsZSwgYW5pbWF0ZWRTdHlsZSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJlbmRlclRyZWUoQ29u
dGFpbmVyTm9kZSYgcm9vdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYpOwog
ICAgIHZvaWQgdXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmLCBTdHlsZTo6RWxlbWVudFVw
ZGF0ZSYpOwotICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwogICAgIHZvaWQgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5VGV4dFNpYmxpbmdz
QWZ0ZXJBdHRhY2hJZk5lZWRlZChOb2RlJik7CiAgICAgdm9pZCB1cGRhdGVCZWZvcmVPckFmdGVy
UHNldWRvRWxlbWVudChFbGVtZW50JiwgUHNldWRvSWQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgU3R5bGUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVG
b3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZW5kZXJTdHlsZSByZXNvbHZl
Rm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1
bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpOwogCkBAIC01NSwxOSArNTUsMTkgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogCiAgICAgYXV0byBkb2N1bWVudFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlz
cGxheShCTE9DSyk7Ci0gICAgZG9jdW1lbnRTdHlsZS0+c2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQu
dmlzdWFsbHlPcmRlcmVkKCkgPyBWaXN1YWxPcmRlciA6IExvZ2ljYWxPcmRlcik7Ci0gICAgZG9j
dW1lbnRTdHlsZS0+c2V0Wm9vbSghZG9jdW1lbnQucHJpbnRpbmcoKSA/IHJlbmRlclZpZXcuZnJh
bWUoKS5wYWdlWm9vbUZhY3RvcigpIDogMSk7Ci0gICAgZG9jdW1lbnRTdHlsZS0+c2V0UGFnZVNj
YWxlVHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwotICAg
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZG9jdW1lbnRGb250RGVzY3JpcHRpb24gPSBkb2N1bWVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldERpc3BsYXko
QkxPQ0spOworICAgIGRvY3VtZW50U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQudmlzdWFs
bHlPcmRlcmVkKCkgPyBWaXN1YWxPcmRlciA6IExvZ2ljYWxPcmRlcik7CisgICAgZG9jdW1lbnRT
dHlsZS5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygpID8gcmVuZGVyVmlldy5mcmFtZSgpLnBh
Z2Vab29tRmFjdG9yKCkgOiAxKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFBhZ2VTY2FsZVRyYW5z
Zm9ybShyZW5kZXJWaWV3LmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGRvY3VtZW50Rm9udERlc2NyaXB0aW9uID0gZG9jdW1lbnRTdHlsZS5m
b250RGVzY3JpcHRpb24oKTsKICAgICBkb2N1bWVudEZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUo
ZG9jdW1lbnQuY29udGVudExhbmd1YWdlKCkpOwotICAgIGRvY3VtZW50U3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihXVEZNb3ZlKGRvY3VtZW50Rm9udERlc2NyaXB0aW9uKSk7CisgICAgZG9jdW1l
bnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkb2N1bWVudEZvbnREZXNjcmlwdGlv
bikpOwogCiAgICAgLy8gVGhpcyBvdmVycmlkZXMgYW55IC13ZWJraXQtdXNlci1tb2RpZnkgaW5o
ZXJpdGVkIGZyb20gdGhlIHBhcmVudCBpZnJhbWUuCi0gICAgZG9jdW1lbnRTdHlsZS0+c2V0VXNl
ck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSA/IFJFQURfV1JJVEUgOiBSRUFEX09OTFkp
OworICAgIGRvY3VtZW50U3R5bGUuc2V0VXNlck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUo
KSA/IFJFQURfV1JJVEUgOiBSRUFEX09OTFkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAo
ZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkpCi0gICAgICAgIGRvY3VtZW50U3R5bGUtPnNldFRleHRT
aXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudChOb1RleHRTaXplQWRqdXN0bWVudCkpOworICAg
ICAgICBkb2N1bWVudFN0eWxlLnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudChO
b1RleHRTaXplQWRqdXN0bWVudCkpOwogI2VuZGlmCiAKICAgICBFbGVtZW50KiBkb2NFbGVtZW50
ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CkBAIC03OSwyNCArNzksMjQgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogICAgICAgICBhdXRvKiBib2R5ID0g
ZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKTsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBib2R5UmVu
ZGVyZXIgPSBib2R5ID8gYm9keS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChi
b2R5UmVuZGVyZXIgJiYgIWRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5
U2V0V3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldFdyaXRpbmdN
b2RlKGJvZHlSZW5kZXJlci0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50U3R5bGUuc2V0V3JpdGluZ01vZGUoYm9keVJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdN
b2RlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRXcml0
aW5nTW9kZShkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CisgICAg
ICAgICAgICBkb2N1bWVudFN0eWxlLnNldFdyaXRpbmdNb2RlKGRvY0VsZW1lbnRSZW5kZXJlci0+
c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICAgICAgaWYgKGJvZHlSZW5kZXJlciAmJiAhZG9j
RWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSkKLSAg
ICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldERpcmVjdGlvbihib2R5UmVuZGVyZXItPnN0eWxl
KCkuZGlyZWN0aW9uKCkpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXREaXJlY3Rpb24o
Ym9keVJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0aW9uKGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5
bGUoKS5kaXJlY3Rpb24oKSk7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldERpcmVjdGlv
bihkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkpOwogICAgIH0KIAogICAg
IGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24gPSByZW5kZXJWaWV3LmZyYW1lVmlldygpLnBh
Z2luYXRpb24oKTsKICAgICBpZiAocGFnaW5hdGlvbi5tb2RlICE9IFBhZ2luYXRpb246OlVucGFn
aW5hdGVkKSB7Ci0gICAgICAgIGRvY3VtZW50U3R5bGUtPnNldENvbHVtblN0eWxlc0Zyb21QYWdp
bmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOwotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRD
b2x1bW5HYXAocGFnaW5hdGlvbi5nYXApOworICAgICAgICBkb2N1bWVudFN0eWxlLnNldENvbHVt
blN0eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOworICAgICAgICBkb2N1
bWVudFN0eWxlLnNldENvbHVtbkdhcChwYWdpbmF0aW9uLmdhcCk7CiAgICAgICAgIGlmIChyZW5k
ZXJWaWV3Lm11bHRpQ29sdW1uRmxvd1RocmVhZCgpKQotICAgICAgICAgICAgcmVuZGVyVmlldy51
cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZSgqZG9jdW1lbnRTdHlsZSk7CisgICAgICAg
ICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKGRvY3VtZW50
U3R5bGUpOwogICAgICAgICBpZiAocmVuZGVyVmlldy5mcmFtZSgpLnBhZ2UoKS0+cGFnaW5hdGlv
bkxpbmVHcmlkRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRMaW5l
R3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCIpOwotICAgICAgICAgICAgZG9j
dW1lbnRTdHlsZS0+c2V0TGluZVNuYXAoTGluZVNuYXBDb250YWluKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQi
KTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXBDb250YWlu
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTExLDE3ICsxMTEsMTcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogICAgIGludCBzaXplID0gZm9udFNpemVGb3JL
ZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgZG9jdW1lbnQpOwogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwogICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzID0g
ZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRl
ZFNpemUoY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlw
dGlvbi5pc0Fic29sdXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsIGRvY3VtZW50U3R5bGUuZ2V0
KCksIGRvY3VtZW50KSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21w
dXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3VtZW50U3R5bGUsIGRvY3VtZW50KSk7
CiAKICAgICBGb250T3JpZW50YXRpb24gZm9udE9yaWVudGF0aW9uOwogICAgIE5vbkNKS0dseXBo
T3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsKLSAgICBzdGQ6OnRpZShmb250T3JpZW50YXRp
b24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1lbnRTdHlsZS0+Zm9udEFuZEdseXBoT3JpZW50
YXRpb24oKTsKKyAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24p
ID0gZG9jdW1lbnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOwogICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPcmllbnRhdGlvbihmb250T3JpZW50YXRpb24pOwogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXROb25DSktHbHlwaE9yaWVudGF0aW9uKGdseXBoT3JpZW50YXRpb24pOwogCi0gICAg
ZG9jdW1lbnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAg
ZG9jdW1lbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKIAotICAg
IGRvY3VtZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZjb25zdF9jYXN0PERvY3VtZW50
Jj4oZG9jdW1lbnQpLmZvbnRTZWxlY3RvcigpKTsKKyAgICBkb2N1bWVudFN0eWxlLmZvbnRDYXNj
YWRlKCkudXBkYXRlKCZjb25zdF9jYXN0PERvY3VtZW50Jj4oZG9jdW1lbnQpLmZvbnRTZWxlY3Rv
cigpKTsKIAogICAgIHJldHVybiBkb2N1bWVudFN0eWxlOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBuYW1lc3Bh
Y2UgU3R5bGUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1
bWVudChjb25zdCBEb2N1bWVudCYpOworUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNv
bnN0IERvY3VtZW50Jik7CiAKIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU2hhcmluZ1Jlc28KIAog
ICAgIG1fZWxlbWVudHNTaGFyaW5nU3R5bGUuYWRkKCZlbGVtZW50LCBzaGFyZUVsZW1lbnQpOwog
Ci0gICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSh1cGRhdGUuZWxlbWVudFN0eWxlKCpzaGFy
ZUVsZW1lbnQpKTsKKyAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUuZWxl
bWVudFN0eWxlKCpzaGFyZUVsZW1lbnQpKTsKIH0KIAogU3R5bGVkRWxlbWVudCogU2hhcmluZ1Jl
c29sdmVyOjpmaW5kU2libGluZyhjb25zdCBDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCB1
bnNpZ25lZCYgY291bnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAg
c3RhdGljIHZvaWQgZW5zdXJlUGxhY2Vob2xkZXJTdHlsZShEb2N1bQogewogICAgIGlmIChwbGFj
ZWhvbGRlclN0eWxlKQogICAgICAgICByZXR1cm47Ci0gICAgcGxhY2Vob2xkZXJTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGUoKS5yZWxlYXNlKCk7CisgICAgcGxhY2Vob2xkZXJTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVQdHIoKS5yZWxlYXNlKCk7CiAgICAgcGxhY2Vob2xkZXJTdHlsZS0+
c2V0RGlzcGxheShOT05FKTsKICAgICBwbGFjZWhvbGRlclN0eWxlLT5zZXRJc1BsYWNlaG9sZGVy
U3R5bGUoKTsKICAgICBwbGFjZWhvbGRlclN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZG9j
dW1lbnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmUKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQuaGF2ZVN0
eWxlc2hlZXRzTG9hZGVkKCkgJiYgIWVsZW1lbnQucmVuZGVyZXIoKSkgewogICAgICAgICBtX2Rv
Y3VtZW50LnNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKTsKLSAgICAgICAgcmV0dXJu
IFJlbmRlclN0eWxlOjpjbG9uZShwbGFjZWhvbGRlclN0eWxlKTsKKyAgICAgICAgcmV0dXJuIFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqcGxhY2Vob2xkZXJTdHlsZSk7CiAgICAgfQogCiAgICAgaWYg
KGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpIHsKQEAgLTIwNSw3ICsy
MDUsNyBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lCiAgICAgICAg
IHVwZGF0ZS5pc1N5bnRoZXRpYyA9IHRydWU7CiAKICAgICBpZiAoJmVsZW1lbnQgPT0gbV9kb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQoKSkgewotICAgICAgICBtX2RvY3VtZW50RWxlbWVudFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lKHVwZGF0ZS5zdHlsZS5nZXQoKSk7CisgICAgICAgIG1fZG9j
dW1lbnRFbGVtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS5zdHlsZSk7
CiAgICAgICAgIHNjb3BlKCkuc3R5bGVSZXNvbHZlci5zZXRPdmVycmlkZURvY3VtZW50RWxlbWVu
dFN0eWxlKG1fZG9jdW1lbnRFbGVtZW50U3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIElmICJy
ZW0iIHVuaXRzIGFyZSB1c2VkIGFueXdoZXJlIGluIHRoZSBkb2N1bWVudCwgYW5kIGlmIHRoZSBk
b2N1bWVudCBlbGVtZW50J3MgZm9udCBzaXplIGNoYW5nZXMsIHRoZW4gZm9yY2UgZm9udCB1cGRh
dGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
bwogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NW
R0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRD
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBib29sIFNWR0FsdEdseXBoRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUU3Bhbj4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0FsdEdseXBoRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNWR0Np
cmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
IAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50
KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Ns
aXBQYXRoRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlw
UGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAg
IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdEZWZzRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOX09WRVJSSURF
KEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CiAKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEN4LCBjeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGMKICAgICAgICAgb2JqZWN0LT5zZXRO
ZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlCiAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzSGVpZ2h0KHRydWUpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50OjpzdmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDEzICs4MywxMyBAQCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgLy8gU1ZHIDEuMSB0
ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9u
ZSI+PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY3JlYXRlIHJlbmRl
cmVycyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwgdGhvdWdoIHRoZQog
ICAgIC8vIHN1YnRyZWUgbWF5IGJlIGhpZGRlbiAtIHdlIG9ubHkgd2FudCB0aGUgcmVzb3VyY2Ug
cmVuZGVyZXJzIHRvIGV4aXN0IHNvIHRoZXkgY2FuIGJlCiAgICAgLy8gcmVmZXJlbmNlZCBmcm9t
IHNvbWV3aGVyZSBlbHNlLgotICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUpCisgICAg
aWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdH
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgRmxvYXRSZWN0IFNWR0dyYXBoaWNzRWxlbWVu
dDo6Z2V0QkJveChTdAogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRCQm94KHRoaXMs
IHN0eWxlVXBkYXRlU3RyYXRlZ3kpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
R3JhcGhpY3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIC8v
IEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2VkIGRy
YXdpbmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyAiYmFzZSBjbGFzcyIgbWV0aG9kcyBmb3IgYWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIg
YXMgcGF0aHMKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7Ci0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbWFnZT4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQXR0YWNo
UmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3
ICsyMTEsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUoCiAgICAg
c2V0T3JpZW50KFNWR01hcmtlck9yaWVudEFuZ2xlLCBhbmdsZSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVy
cmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb24KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
b3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIEZsb2F0UmVjdCBTVkdQ
YXRoRWxlbWVudDo6Z2V0QkJveChTdHlsZVUKICAgICByZXR1cm4gcmVuZGVyZXItPnBhdGgoKS5i
b3VuZGluZ1JlY3QoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgLy8gQnkgZGVmYXVsdCwgYW55
IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2luZwogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
X09WRVJSSURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVybkVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFNWR1JlY3RFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1Jl
Y3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1JlY3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb24KICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChz
dHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50
KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSb290PigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR0dyYWRpZW50U3RvcD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0dyYWRpZW50U3RvcCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdG9wRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29sIFNWR1N3aXRj
aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBib29sIFNWR1N5bWJvbEVs
ZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1l
czo6dmlld0JveEF0dHIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3ltYm9s
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZAogICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
YXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFJlZkVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R1RSZWZFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgUmVmPFNWR1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcgogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUU3BhbkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdU
U3Bhbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUU3BhbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR1RTcGFuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKICAgICAgICAgICAgIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkCiAgICAgcmV0dXJuIG1hdHJpeDsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RleHQ+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVs
ZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAg
ICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJy
aWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBTVkdUZXh0
UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRQYXRo
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1RleHRQYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjks
NyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYzLDcgKzI2Myw3IEBAIFNWR0VsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnRhcmdldENsb25lKCkK
ICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocm9vdC0+Zmlyc3RDaGlsZCgpKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHdpbGxSZWNhbGNTdHls
ZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKSBvdmVycmlk
ZTsKICAgICBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277261</attachid>
            <date>2016-04-25 10:58:23 -0700</date>
            <delta_ts>2016-04-25 11:21:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inline-renderstyle-8.patch</filename>
            <type>text/plain</type>
            <size>396891</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyOCBAQAorMjAxNi0wNC0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIFJlbmRlclN0eWxl
IHRvIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1Njk4MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisK
KyAgICAgICAgV2UgY2FuIHNhdmUgbWVtb3J5IGFuZCByZWR1Y2UgaW5kaXJlY3Rpb24gb2Ygc3R5
bGUgYWNjZXNzIGJ5IGlubGluaW5nIFJlbmRlclN0eWxlIHRvIFJlbmRlckVsZW1lbnQuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIG1ha2VzIFJlbmRlclN0eWxlIG1vdmVhYmxlIGFuZCBzd2l0
Y2hlcyBmcm9tIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gdG8gUmVuZGVyU3R5bGUmJgor
ICAgICAgICBpbiBtYW55IHBsYWNlcyB3aGVyZSBvd25lcnNoaXAgaXMgcGFzc2VkLgorCisgICAg
ICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5SZXBsYWNlbWVudDo6c2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblJlcGxhY2VtZW50Ojp3aWxsQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp+UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0
eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZv
cktleWZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVRvU3R5bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZSk6CisgICAg
ICAgICogaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VCdXR0b25JbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEFw
cGxldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxC
dXR0b25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVt
ZW50OjpIVE1MRGV0YWlsc0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFp
bHNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Zm9ybSk6CisgICAg
ICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGaWVsZFNldEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFt
ZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6YWx0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRUcnVuY2F0ZVRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBl
UGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNhblNlbGVjdEFs
bCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1h
cnlFbGVtZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1
bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TFN1bW1hcnlFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBodG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxXQlJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxXQlJFbGVtZW50OjpIVE1MV0JSRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MV0JSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxXQlJFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IaWRkZW5JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBl
OjpzdXBwb3J0c1ZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SGlkZGVuSW5wdXRUeXBl
OjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5o
OgorICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SW1hZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGU6OmZvcm1Gb3JTdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUaHVtYkVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1J1YnlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1YnlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9SdWJ5
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvUnVieVRleHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJ1YnlUZXh0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
YnlUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1J1
YnlUZXh0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6bWF4UmVzdWx0c0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRl
cmVyKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0Rm9udCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJD
b250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250
cm9sLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50Ojpz
ZXRUaW1lRGlzcGxheXNIaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxl
bWVudDo6UHJvZ3Jlc3NJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NJ
bm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlclRodW1iOjpS
ZW5kZXJTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyQ29u
dGFpbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckNvbnRh
aW5lcjo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9s
c0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlQ29udHJvbHM6
OlJlbmRlckltYWdlQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjOjp+SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
Lmg6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpW
VFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC90cmFjay9W
VFRDdWUuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWVu
Y2xvc2VFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWVuY2xvc2VF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxN
ZW5jbG9zZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25z
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6SW1wbGljaXRBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1wbGljaXRBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1wbGljaXRBbmltYXRpb246Om9uQW5pbWF0aW9uRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkltcGxpY2l0QW5pbWF0aW9uOjpyZXNldCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRp
b246OktleWZyYW1lQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0
aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpnZXRB
bmltYXRlZFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50OjpSZW5kZXJBdHRhY2htZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6UmVu
ZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbG9uZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpN
YXJnaW5JbmZvOjpNYXJnaW5JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxv
dzo6UmVuZGVyQmxvY2tGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
Y3JlYXRlTXVsdGlDb2x1bW5GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNraXBCb2R5QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OlJlbmRlckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJ1
dHRvbjo6UmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckNvbWJpbmVUZXh0OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc1JlbmRl
cmVyTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpcnN0TGluZVN0eWxlRm9yQ2FjaGVkVW5jYWNoZWRUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmluaXRpYWxpemVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc0luaXRpYWxpemVk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2V0U3R5bGVJbnRlcm5hbCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVu
YXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVtYmVkZGVkT2JqZWN0Ojp+UmVuZGVyRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0OjpSZW5k
ZXJGaWVsZHNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhy
ZWFkU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lOjpSZW5kZXJGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNl
OjpjaGlsZFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW5QbGFj
ZWhvbGRlcjo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxT
Y3JlZW46OlJlbmRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNj
cmVlbjo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bGxTY3Jl
ZW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFj
ZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZVNwYWNlRm9yRGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OlJlbmRlckdyaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySFRNTENhbnZhczo6UmVuZGVySFRNTENhbnZhcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6UmVu
ZGVySUZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxp
bmU6OlJlbmRlcklubGluZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTdHlsZU9mQW5vbnlt
b3VzQmxvY2tDb250aW51YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6
c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGls
ZElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6
Y2xvbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmlzU2Nyb2xsYWJsZU9yUnViYmVy
YmFuZGFibGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6UmVuZGVyTGlzdEJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OlJlbmRlckxp
c3RJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlzdE1hcmtl
clRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1h
cmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVk
aWE6OlJlbmRlck1lZGlhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RlZE9wdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6CisgICAgICAgIChSZW5kZXJNZW51
TGlzdDo6c2V0VGV4dEZyb21PcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJNZXRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkOjpwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6Y3JlYXRlQW5vbnltb3Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
OjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6flJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0
ZUNoaWxkcmVuU3R5bGVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6c2V0T2JqZWN0U3R5bGVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2Jq
ZWN0c09yaWdpbmFsU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZs
b3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjp1cGRh
dGVXcml0aW5nTW9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVh
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJQcm9ncmVzcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJRdW90ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJRdW90ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6YWJzb2x1dGVRdWFkc0ZvckJveEluUmVnaW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
Z2lvblNldDo6UmVuZGVyUmVnaW9uU2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVn
aW9uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGlj
YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUnVieS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBbm9ueW1vdXNS
dWJ5SW5saW5lQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieUFzSW5saW5lOjpS
ZW5kZXJSdWJ5QXNJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieUFzQmxvY2s6
OlJlbmRlclJ1YnlBc0Jsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6
UmVuZGVyU2Nyb2xsYmFyUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNp
YmlsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNsaWRlcjo6UmVuZGVyU2xpZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFibGVD
YXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6UmVuZGVy
VGFibGVDb2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVMb2dpY2FsSGVpZ2h0Rm9yQ2Vs
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2Vj
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1
ZTo6UmVuZGVyVlRUQ3VlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZGVvOjpSZW5kZXJWaWRlbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVv
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
V2lkZ2V0OjpSZW5kZXJXaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ0tleTo6VGV4dEF1dG9TaXppbmdLZXkpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEJsb2NrOjpjcmVhdGVBbm9ueW1vdXNNYXRoTUxCbG9jayk6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWF0aDo6
UmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0
aE1MTWVuY2xvc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRo
TUxPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBk
YXRlU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um9vdDo6UmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxS
b290OjpyZXN0cnVjdHVyZVdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OnVwZGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3RX
cmFwcGVyOjpjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb3c6OlJlbmRl
ck1hdGhNTFJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNQcmVzY3JpcHREZWxpbWl0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
U3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxTcXVhcmVSb290OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MVG9rZW46OmVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVs
dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25l
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVTdHls
ZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRTdHlsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6Omdy
YXBoaWNzRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdD
b250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmlzT2JqZWN0Qm91bmRpbmdC
b3hWYWxpZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlwc2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdHcmFkaWVudFN0b3A6OlJlbmRlclNWR0dyYWRpZW50U3RvcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5s
aW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpncmFwaGljc0VsZW1lbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1BhdGg6OlJl
bmRlclNWR1BhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1JlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN2Z0V4dGVu
c2lvbnNGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcik6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxp
bmVhckdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2Vy
OjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1No
YXBlOjpSZW5kZXJTVkdTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmdyYXBoaWNzRWxlbWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0
aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAq
IHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6bW92
ZVRvRmxvd1RocmVhZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRh
dGVyOjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6dXBkYXRlQmVmb3JlT3JBZnRlclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1Jl
bmRlclRyZWVVcGRhdGVyLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaDoKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2hh
cmluZ1Jlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTaGFyaW5n
UmVzb2x2ZXI6OmZpbmRTaWJsaW5nKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZW5zdXJlUGxhY2Vob2xkZXJTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdD
aXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0RlZnNFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
OgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OmdldEJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9Bbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhF
bGVtZW50OjpnZXRCQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHU3dpdGNoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3
aXRjaEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1N3
aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUU3Bh
bkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUU3BhbkVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRh
cmdldENsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAxNi0wNC0y
NSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMTU2ODQ2KTogQ3Jhc2hlcyB3aXRoIGd1YXJkIG1hbGxvYwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihIVE1MUGx1Z0luRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSA9IDA7CiB9OwogCiB0eXBlZGVmIFJl
ZjxQbHVnaW5SZXBsYWNlbWVudD4gKCpDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCkoSFRNTFBsdWdJ
bkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2
YXRlOgogICAgIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIG1f
c2NyaXB0T2JqZWN0OyB9CiAKICAgICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIGZpbmFsIHsg
cmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAog
ICAgIGJvb2wgZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpOwogICAgIERPTVdyYXBw
ZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcg
QEAgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQbAogICAgIG1fbWVkaWFF
bGVtZW50ID0gbnVsbHB0cjsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhU
TUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChw
bHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6WW91VHViZVBsdWdpblIKICAgICAg
ICAgbV9hdHRyaWJ1dGVzLmFkZChwYXJhbU5hbWVzW2ldLCBwYXJhbVZhbHVlc1tpXSk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlv
blBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9z
aXRpb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAm
cGx1Z2luKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHlv
dVR1YmVVUkwoY29uc3QgU3RyaW5nJiByYXdVUkwpOwogCiAgICAgYm9vbCB3aWxsQ3JlYXRlUmVu
ZGVyZXIoKSBmaW5hbCB7IHJldHVybiBtX2VtYmVkU2hhZG93RWxlbWVudDsgfQotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBmaW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9wYXJlbnRFbGVt
ZW50OwogICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVkU2hhZG93
RWxlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg4LDExICszODgsMTEgQEAgRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbQogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICBpZiAoc3Rh
dGUucGFyZW50U3R5bGUoKSkgewotICAgICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6
Y3JlYXRlKCkpOworICAgICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlUHRy
KCkpOwogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbShzdGF0ZS5wYXJlbnRTdHls
ZSgpLCBpc0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkgPyBSZW5kZXJTdHlsZTo6QXRTaGFkb3dC
b3VuZGFyeSA6IFJlbmRlclN0eWxlOjpOb3RBdFNoYWRvd0JvdW5kYXJ5KTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzdGF0ZS5zZXRTdHlsZShkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkpOwotICAg
ICAgICBzdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoc3RhdGUuc3R5bGUo
KSkpOworICAgICAgICBzdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
KnN0YXRlLnN0eWxlKCkpKTsKICAgICB9CiAKICAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHls
ZSgpOwpAQCAtNDUzLDggKzQ1Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5
bGVSZXNvbHYKICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgLy8gQ3JlYXRlIHRo
ZSBzdHlsZQotICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShlbGVtZW50U3R5
bGUpKTsKLSAgICBzdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoZWxlbWVu
dFN0eWxlKSk7CisgICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCplbGVt
ZW50U3R5bGUpKTsKKyAgICBzdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoKmVsZW1lbnRTdHlsZSkpOwogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGU7CkBAIC01NjUsMTEgKzU2NSwxMSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0
ZTsKIAogICAgIGlmIChtX3N0YXRlLnBhcmVudFN0eWxlKCkpIHsKLSAgICAgICAgc3RhdGUuc2V0
U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKTsKKyAgICAgICAgc3RhdGUuc2V0U3R5bGUoUmVu
ZGVyU3R5bGU6OmNyZWF0ZVB0cigpKTsKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+aW5oZXJpdEZy
b20obV9zdGF0ZS5wYXJlbnRTdHlsZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0ZS5z
ZXRTdHlsZShkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkpOwotICAgICAgICBzdGF0ZS5zZXRQYXJl
bnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoc3RhdGUuc3R5bGUoKSkpOworICAgICAgICBzdGF0
ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0YXRlLnN0eWxlKCkpKTsK
ICAgICB9CiAKICAgICAvLyBTaW5jZSB3ZSBkb24ndCB1c2UgcHNldWRvLWVsZW1lbnRzIGluIGFu
eSBvZiBvdXIgcXVpcmsvcHJpbnQgdXNlciBhZ2VudCBydWxlcywgZG9uJ3Qgd2FzdGUgdGltZSB3
YWxraW5nCkBAIC02MTQsMTEgKzYxNCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IFN0eWxlUmVzb2x2CiAKICAgICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQotICAgICAgICByZXR1
cm4gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNy
ZWF0ZVB0cigpOwogCiAgICAgbV9zdGF0ZSA9IFN0YXRlKCpkb2N1bWVudEVsZW1lbnQsIG1fZG9j
dW1lbnQucmVuZGVyU3R5bGUoKSk7CiAKLSAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxl
OjpjcmVhdGUoKSk7CisgICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlUHRy
KCkpOwogICAgIG1fc3RhdGUuc3R5bGUoKS0+aW5oZXJpdEZyb20obV9zdGF0ZS5yb290RWxlbWVu
dFN0eWxlKCkpOwogCiAgICAgUGFnZVJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKG1fc3RhdGUsIG1f
cnVsZVNldHMpOwpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gU3R5bGVSZXNvbHYKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29s
dmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkKIHsKLSAgICBtX3N0YXRlLnNldFN0eWxlKFJl
bmRlclN0eWxlOjpjcmVhdGUoKSk7CisgICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6
Y3JlYXRlUHRyKCkpOwogICAgIC8vIE1ha2Ugc3VyZSBvdXIgZm9udHMgYXJlIGluaXRpYWxpemVk
IGlmIHdlIGRvbid0IGluaGVyaXQgdGhlbSBmcm9tIG91ciBwYXJlbnQgc3R5bGUuCiAgICAgaW5p
dGlhbGl6ZUZvbnRTdHlsZShkb2N1bWVudFNldHRpbmdzKCkpOwogICAgIGlmIChkb2N1bWVudFNl
dHRpbmdzKCkpCkBAIC0xMjEzLDggKzEyMTMsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFRv
TWF0Y2hlZFByb3BlcnRpCiAgICAgY2FjaGVJdGVtLnJhbmdlcyA9IG1hdGNoUmVzdWx0LnJhbmdl
czsKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgdGhlIG9yaWdpbmFsIFJlbmRlclN0
eWxlIGluc3RhbmNlLiBJdCBtYXkgYmUgZnVydGhlciBtb2RpZmllZC4KICAgICAvLyBUaGUgUmVu
ZGVyU3R5bGUgaW4gdGhlIGNhY2hlIGlzIHJlYWxseSBqdXN0IGEgaG9sZGVyIGZvciB0aGUgc3Vi
c3RydWN0dXJlcyBhbmQgbmV2ZXIgdXNlZCBhcy1pcy4KLSAgICBjYWNoZUl0ZW0ucmVuZGVyU3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUpOwotICAgIGNhY2hlSXRlbS5wYXJlbnRSZW5k
ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRTdHlsZSk7CisgICAgY2FjaGVJdGVt
LnJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpzdHlsZSk7CisgICAgY2FjaGVJ
dGVtLnBhcmVudFJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpwYXJlbnRTdHls
ZSk7CiAgICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLmFkZChoYXNoLCBXVEZNb3ZlKGNhY2hl
SXRlbSkpOwogfQogCkBAIC0xMzkzLDcgKzEzOTMsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5TWF0Y2hlZFByb3BlcnRpCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb1N0
eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0YXRlID0gU3RhdGUoKTsKLSAgICBtX3N0YXRl
LnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZS5nZXQoKSkpOworICAgIG1f
c3RhdGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpzdHlsZSkpOwogICAg
IG1fc3RhdGUuc2V0U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgIGFwcGx5UHJvcGVydHlUb0N1
cnJlbnRTdHlsZShpZCwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODc2LDEwICsxODc2LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UKICAgICAgICAgICAgIC8vIGZvbnQgc2VsZWN0b3IsIHNvIHNldCBh
IGZvbnQgc2VsZWN0b3IgaWYgbmVlZGVkLgogICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0
aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3Mt
PmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocygpKQotICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudFN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZm9udFNlbGVjdG9yKCkpOworICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZmb250
U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gZG9jdW1lbnRD
aGFuZ2UgPSBTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKCpkb2N1bWVudFN0eWxlLCBtX3JlbmRlclZp
ZXctPnN0eWxlKCkpOworICAgICAgICAgICAgYXV0byBkb2N1bWVudENoYW5nZSA9IFN0eWxlOjpk
ZXRlcm1pbmVDaGFuZ2UoZG9jdW1lbnRTdHlsZSwgbV9yZW5kZXJWaWV3LT5zdHlsZSgpKTsKICAg
ICAgICAgICAgIGlmIChkb2N1bWVudENoYW5nZSAhPSBTdHlsZTo6Tm9DaGFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmVuZGVyVmlldygpLT5zZXRTdHlsZShXVEZNb3ZlKGRvY3VtZW50U3R5bGUpKTsK
ICAgICAgICAgfQpAQCAtNTgzNSw3ICs1ODM1LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0V2ls
bEVudGVyRnVsbFNjcmVlbgogICAgIGJvb2wgc2hvdWxkQ3JlYXRlUGxhY2Vob2xkZXIgPSBpczxS
ZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICBpZiAoc2hvdWxkQ3JlYXRlUGxhY2Vob2xkZXIpIHsK
ICAgICAgICAgbV9zYXZlZFBsYWNlaG9sZGVyRnJhbWVSZWN0ID0gZG93bmNhc3Q8UmVuZGVyQm94
PigqcmVuZGVyZXIpLmZyYW1lUmVjdCgpOwotICAgICAgICBtX3NhdmVkUGxhY2Vob2xkZXJSZW5k
ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAg
ICBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihy
ZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQg
IT0gZG9jdW1lbnRFbGVtZW50KCkpCkBAIC01OTE1LDcgKzU5MTUsNyBAQCB2b2lkIERvY3VtZW50
OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXIoUmVuCiAgICAgICAgIHJlbmRlcmVyLT5jcmVhdGVQbGFj
ZWhvbGRlcihXVEZNb3ZlKG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlKSwgbV9zYXZlZFBs
YWNlaG9sZGVyRnJhbWVSZWN0KTsKICAgICBlbHNlIGlmIChyZW5kZXJlciAmJiBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKSkgewogICAg
ICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIgPSBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxh
Y2Vob2xkZXIoKTsKLSAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0
eWxlOjpjbG9uZSgmcGxhY2Vob2xkZXItPnN0eWxlKCkpLCBwbGFjZWhvbGRlci0+ZnJhbWVSZWN0
KCkpOworICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxhY2Vob2xkZXIoUmVuZGVyU3R5bGU6OmNs
b25lUHRyKHBsYWNlaG9sZGVyLT5zdHlsZSgpKSwgcGxhY2Vob2xkZXItPmZyYW1lUmVjdCgpKTsK
ICAgICB9CiAKICAgICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTMsNyArMTQ5Myw3IEBAIGJvb2wgRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW4KICAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9
IE5PTkUgJiYgc3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIFJl
bmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29u
c3QgRWxlbWVudCYpIHsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCogc2hhZG93Um9vdCgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gUHNldWRvRWxl
bWVudDo6cmUKICAgICBhdXRvKiBzdHlsZSA9IG1faG9zdEVsZW1lbnQtPnJlbmRlcmVyKCktPmdl
dENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRvSWQsICZwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFz
dHlsZSkKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShS
ZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUpKTsKKyAgICByZXR1cm4gRWxlbWVudFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqc3R5bGUpKTsKIH0KIAogdm9pZCBQc2V1ZG9FbGVtZW50OjpkaWRB
dHRhY2hSZW5kZXJlcnMoKQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgUHNldWRvRWxlbWVudDo6
ZGlkUmVjYWxjU3R5bGUoU3R5bGUKICAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxl
IGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4K
ICAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmNoaWxkKSAmJiAhaXM8UmVuZGVyUXVvdGU+
KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhl
cml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBhdXRvIGNy
ZWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRv
U3R5bGUocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpjaGlsZCkuc2V0U3R5bGUoV1RGTW92ZShjcmVhdGVkU3R5bGUpKTsKICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBl
OjphcHBlbmRGb3JtRGF0YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBC
YXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4oZWxlbWVudCgp
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0
b25JbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0
b25JbnB1dFR5cGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQnV0dG9uSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRy
b2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJv
bUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwg
Ym9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgb3ZlcnJpZGU7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZQogICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
RmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KGVsZW1lbnQoKSwgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWx1ZU1pc3Npbmco
Y29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlTWlzc2luZ1Rl
eHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQqKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBv
dmVycmlkZTsKICAgICBib29sIGNhblNldFN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjYW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
aWxlTGlzdCogZmlsZXMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBA
QCBib29sIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkCiAgICAgcmV0dXJuIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQogICAgICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICAKICAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBS
ZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPEhUTUxBdHRhY2ht
ZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxB
dHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxBdHRhY2htZW50RWxlbWVu
dCgpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBzaG91bGRTZWxlY3RPbk1vdXNlRG93bigpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsOSBAQCB2b2lkIEhUTUxCUkVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewotICAgIGlmIChzdHlsZS0+aGFzQ29udGVudCgpKQorICAgIGlmIChzdHlsZS5oYXND
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5l
QnJlYWs+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
UkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0
CiAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAg
IC8vIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgYWx3YXlzIGNyZWF0ZXMgb25lLCBidXQgYnV0dG9u
cyBkb24ndCBuZWVkIGl0LgogICAgIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
Q2FudmFzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsNyArODcsNyBAQCBIVE1MRGV0YWlsc0VsZW1lbnQ6OkhUTUxEZXRhaWxzRWxlbWVudChj
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFp
bHNFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBIVE1MRGV0YWlsc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNyArODY4LDcgQEAgYm9vbCBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdAogICAgIHJldHVybiBTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIFJl
bmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGllRm9yYmlkc0luc2VydEhUTUwoKSBjb25zdDsKIAogICAgIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEhUTUxG
b3JtRWxlbWVudCogZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MRmllbGRTZXRFbGVtZW50OgogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGaWVsZHNldD4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGcmFtZT4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
QXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDkgKzE1Nyw5IEBAIGJvb2wgSFRNTEZyYW1lU2V0RWxl
bWVudDo6cmVuZGVyZXJJc05lZWQKICAgICByZXR1cm4gIXN0eWxlLmlzUGxhY2Vob2xkZXJTdHls
ZSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250
ZW50KCkpCisgICAgaWYgKHN0eWxlLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRl
ckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIAogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGcmFtZVNldD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
aWxsQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkCiAgICAgcmV0dXJuIGlz
VVJMQWxsb3dlZCgpICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySUZyYW1lPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYp
IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Ub2tlbkxpc3Q+IG1fc2FuZGJveDsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1Niw5ICsyNTYsOSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJ
bWFnZUVsZW1lbnQ6OmFsCiAgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIGlmIChzdHlsZS0+aGFzQ29udGVudCgpKQorICAg
IGlmIChzdHlsZS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50Ojpj
cmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJJbWFnZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpLCBudWxscHRyLCBtX2ltYWdl
RGV2aWNlUGl4ZWxSYXRpbyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dEJlc3RGaXRVUkxBbmREUFJGcm9tSW1hZ2VDYW5kaWRhdGUoY29uc3QgSW1hZ2VDYW5kaWRhdGUm
KTsKIAogICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCgKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJlbmRlcmVySXNOZWVkZWQoKSAmJiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmNyZWF0ZUlucHV0UmVu
ZGVyZXIoV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtMTg3NSwyMyArMTg3NSwyMyBAQCBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnNob3VsZFRydW5jYXRlVGV4CiAgICAgcmV0dXJuIGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKSAhPSB0aGlzICYmIHN0eWxlLnRleHRPdmVyZmxvdygpID09IFRleHRP
dmVyZmxvd0VsbGlwc2lzOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IEhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkgY29uc3QKK1JlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIHRleHRCbG9j
a1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhl
cml0RnJvbSgmc3R5bGUpOwotICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0eWxlLCAqdGV4dEJs
b2NrU3R5bGUpOworICAgIHRleHRCbG9ja1N0eWxlLmluaGVyaXRGcm9tKCZzdHlsZSk7CisgICAg
YWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0eWxlKTsKIAotICAgIHRleHRC
bG9ja1N0eWxlLT5zZXRXaGl0ZVNwYWNlKFBSRSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldE92
ZXJmbG93V3JhcChOb3JtYWxPdmVyZmxvd1dyYXApOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRP
dmVyZmxvd1goT0hJRERFTik7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldE92ZXJmbG93WShPSElE
REVOKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0VGV4dE92ZXJmbG93KHNob3VsZFRydW5jYXRl
VGV4dChzdHlsZSkgPyBUZXh0T3ZlcmZsb3dFbGxpcHNpcyA6IFRleHRPdmVyZmxvd0NsaXApOwor
ICAgIHRleHRCbG9ja1N0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICB0ZXh0QmxvY2tTdHls
ZS5zZXRPdmVyZmxvd1dyYXAoTm9ybWFsT3ZlcmZsb3dXcmFwKTsKKyAgICB0ZXh0QmxvY2tTdHls
ZS5zZXRPdmVyZmxvd1goT0hJRERFTik7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dZ
KE9ISURERU4pOworICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRPdmVyZmxvdyhzaG91bGRUcnVu
Y2F0ZVRleHQoc3R5bGUpID8gVGV4dE92ZXJmbG93RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3dDbGlw
KTsKIAogICAgIC8vIERvIG5vdCBhbGxvdyBsaW5lLWhlaWdodCB0byBiZSBzbWFsbGVyIHRoYW4g
b3VyIGRlZmF1bHQuCi0gICAgaWYgKHRleHRCbG9ja1N0eWxlLT5mb250TWV0cmljcygpLmxpbmVT
cGFjaW5nKCkgPiBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKLSAgICAgICAgdGV4dEJsb2Nr
U3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwor
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkgPiBzdHls
ZS5jb21wdXRlZExpbmVIZWlnaHQoKSkKKyAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0TGluZUhl
aWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAKLSAgICB0ZXh0QmxvY2tT
dHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlzcGxheShC
TE9DSyk7CiAKICAgICByZXR1cm4gdGV4dEJsb2NrU3R5bGU7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsx
NDIsNyBAQCBwdWJsaWM6CiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25z
dDsKICAgICAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0
ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEhUTUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0
OwogICAgIEhUTUxFbGVtZW50KiBpbm5lclNwaW5CdXR0b25FbGVtZW50KCkgY29uc3Q7CkBAIC0y
MDEsNyArMjAxLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGlvbigpIGNvbnN0
OwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWw7
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQg
d2lsbEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJz
KCkgZmluYWw7CiAgICAgdm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM3LDExICsyMzcsMTEgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAg
ICAgICAgIGJvb2wgbWVkaWFRdWVyeU1hdGNoZXMgPSB0cnVlOwogICAgICAgICBpZiAoIW1fbWVk
aWEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IGRvY3VtZW50U3R5bGU7CisgICAgICAgICAgICBPcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1l
bnRTdHlsZTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUo
KSkKICAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1
bWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRp
YSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRp
YSk7Ci0gICAgICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvcihkb2N1bWVudCgp
LmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCksIGRvY3VtZW50KCkuZnJhbWUoKSwgZG9jdW1l
bnRTdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRv
cihkb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCksIGRvY3VtZW50KCkuZnJh
bWUoKSwgZG9jdW1lbnRTdHlsZSA/ICYqZG9jdW1lbnRTdHlsZSA6IG51bGxwdHIpOwogICAgICAg
ICAgICAgbWVkaWFRdWVyeU1hdGNoZXMgPSBldmFsdWF0b3IuZXZhbChtZWRpYS5nZXQoKSk7CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNyArNzM2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAogICAgIHJldHVybiBjb250cm9scygpICYmIEhUTUxF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRpYT4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgyLDcgKzQ4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVu
ZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICNlbmRpZgogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxF
KE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBib29sIG1lZGlhQ29udHJvbHNEZXBlbmRPblBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sc0RlcGVuZE9uUGFn
ZVNjYWxlRmFjdG9yOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDkgQEAgUmVmPEhUTUxNZXRl
ckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OgogICAgIHJldHVybiBtZXRlcjsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewotICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCkuc3VwcG9y
dHNNZXRlcihzdHlsZS0+YXBwZWFyYW5jZSgpKSkKKyAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgp
LT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIoc3R5bGUuYXBwZWFyYW5jZSgpKSkKICAgICAgICAgcmV0
dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1ldGVyPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHN1cHBvcnRM
YWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDcgQEAgTlBPYmplY3QqIEhU
TUxQbHVnSW5FbGVtZW50OjpnZXROUE9iamVjdAogCiAjZW5kaWYgLyogRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpICovCiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2Vy
dGlvblBvc2l0aW9uKQogewogICAgIGlmIChtX3BsdWdpblJlcGxhY2VtZW50ICYmIG1fcGx1Z2lu
UmVwbGFjZW1lbnQtPndpbGxDcmVhdGVSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gbV9wbHVn
aW5SZXBsYWNlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBib29sIHJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jv
b3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwogCiAgICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNl
IGd1YXJkZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlzcGF0
Y2hCZWZvcmVMb2FkRXZlbnQgZGlyZWN0bHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NCw3ICsxOTQsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9h
ZEFzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9u
UG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKCFkb2N1bWVu
dCgpLmluUGFnZUNhY2hlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsx
MTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgZmluYWw7
CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBmaW5hbDsK
IAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAg
ICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIGZpbmFsOwogICAg
IHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDkgKzU2LDkgQEAgUmVmPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZQog
ICAgIHJldHVybiBwcm9ncmVzczsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQ
cm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIGlm
ICghc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKKyAgICBpZiAoIXN0eWxlLmhhc0FwcGVhcmFuY2Uo
KSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclByb2dyZXNzPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzKCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6
OmNhblNlbGVjdEFsbCgpIGMKICAgICByZXR1cm4gIXVzZXNNZW51TGlzdCgpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICh1c2VzTWVudUxpc3Qo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAKICAg
ICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFs
OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICBib29s
IGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZXNldCgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIEhUTUxTdW1t
YXJ5RWxlbWVudDo6SFRNTFN1bW1hcnlFbGVtZW50KGMKICAgICBBU1NFUlQoaGFzVGFnTmFtZShz
dW1tYXJ5VGFnKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU3VtbWFyeUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxTdW1t
YXJ5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0
dHJpCiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZT4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTUyMywxNyArNTIzLDE3IEBAIGJvb2wgSFRNTFRl
eHRBcmVhRWxlbWVudDo6d2lsbFJlc3BvbmRUb00KICAgICByZXR1cm4gIWlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKK1JlbmRlclN0eWxlIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIHRleHRCbG9j
a1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhl
cml0RnJvbSgmc3R5bGUpOwotICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0eWxlLCAqdGV4dEJs
b2NrU3R5bGUpOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICB0
ZXh0QmxvY2tTdHlsZS5pbmhlcml0RnJvbSgmc3R5bGUpOworICAgIGFkanVzdElubmVyVGV4dFN0
eWxlKHN0eWxlLCB0ZXh0QmxvY2tTdHlsZSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlzcGxh
eShCTE9DSyk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gV2UncmUgYWRkaW5nIHRocmVl
IGV4dHJhIHBpeGVscyBvZiBwYWRkaW5nIHRvIGxpbmUgdGV4dGFyZWFzIHVwIHdpdGggdGV4dCBm
aWVsZHMuICAKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDMsIEZp
eGVkKSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldFBhZGRpbmdSaWdodChMZW5ndGgoMywgRml4
ZWQpKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRQYWRkaW5nTGVmdChMZW5ndGgoMywgRml4ZWQp
KTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKDMsIEZpeGVkKSk7
CiAjZW5kaWYKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgCiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlbmRlclN0eWxlIGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVk
KCk7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0
JiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlIGNyZWF0ZUlubmVy
VGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgPSAwOwogCiAgICAgdm9pZCBzZWxl
Y3Rpb25DaGFuZ2VkKGJvb2wgc2hvdWxkRmlyZVNlbGVjdEV2ZW50KTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw3ICs3Myw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKICAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyAKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWaWRlbz4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5
TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRl
bzsgfQogCiAgICAgVVJMIHBvc3RlckltYWdlVVJMKCkgY29uc3Q7Ci0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIGJvb2wgd2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2Rl
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JS
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdC
UkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIEhUTUxXQlJFbGVt
ZW50OjpIVE1MV0JSRWxlbWVudChjb25zdCBRdWEKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh3YnJU
YWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxXQlJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MV0JS
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckxpbmVCcmVhaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxXQlJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFdCUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIGJvb2wgSGlkZGVuSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIaWRkZW5JbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIEZvcm1Db250cm9s
U3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKSBvdmVycmlkZTsK
ICAgICBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
S2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoKSBvdmVycmlkZTsKICAgICBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9t
QXR0cmlidXRlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRU
eXBlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlu
cHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEltYWdl
SW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUlucHV0VHlwZTo6Y3Jl
YXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckltYWdlPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhbHRBdHRy
aWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzcmNBdHRyaWJ1dGVDaGFuZ2VkKCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3OSw3ICs0NzksNyBAQCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSW5wdXRUeXBl
OjpmCiAgICAgcmV0dXJuIGVsZW1lbnQoKS5mb3JtKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+KFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihlbGVtZW50KCks
IFdURk1vdmUoc3R5bGUpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWlzY2VsbGFuZW91cyBm
dW5jdGlvbnMuCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZCgpOwotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIEhUTUxFbGVtZW50
KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVGh1bWIKICAgICByZXR1cm4gJnR5cGVkU2xpZGVyVGh1
bWJFbGVtZW50KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNsaWRlcj4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQq
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJk
RXZlbnQqKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5w
dXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAg
ICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxMSArNDMsMTEgQEAgUmVmPFJ1YnlFbGVtZW50PiBSdWJ5RWxlbWVudDo6
Y3JlYXRlKGNvbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJ1YnlFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gUnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9u
KQogewotICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKKyAgICBpZiAoc3R5bGUu
ZGlzcGxheSgpID09IElOTElORSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clJ1YnlBc0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBpZiAoc3R5bGUtPmRp
c3BsYXkoKSA9PSBCTE9DSyB8fCBzdHlsZS0+ZGlzcGxheSgpID09IElOTElORV9CTE9DSykKKyAg
ICBpZiAoc3R5bGUuZGlzcGxheSgpID09IEJMT0NLIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJ
TkVfQkxPQ0spCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5QXNCbG9j
az4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSdWJ5RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlU
ZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1J1
YnlUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQCBSZWY8
UnVieVRleHRFbGVtZW50PiBSdWJ5VGV4dEVsZW1lbnQ6OmNyCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUnVieVRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBSdWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgLy8gUmVuZGVy
UnVieVRleHQgcmVxdWlyZXMgaXRzIHBhcmVudCB0byBiZSBSZW5kZXJSdWJ5UnVuLgotICAgIGlm
IChpc1J1YnkoaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCkpICYmIHN0eWxlLT5kaXNwbGF5KCkg
PT0gQkxPQ0spCisgICAgaWYgKGlzUnVieShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYg
c3R5bGUuZGlzcGxheSgpID09IEJMT0NLKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyUnVieVRleHQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgcmV0dXJuIEhUTUxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBv
c2l0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
UnVieVRleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6bWF4UmVzdWx0c0F0
dHJpYnV0CiAgICAgICAgIHVwZGF0ZVJlc3VsdEJ1dHRvblBzZXVkb1R5cGUoKm1fcmVzdWx0c0J1
dHRvbiwgZWxlbWVudCgpLm1heFJlc3VsdHMoKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTZWFyY2hJbnB1
dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2VhcmNoRmllbGQ+KGVsZW1lbnQoKSwgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
dm9pZCBhZGRTZWFyY2hSZXN1bHQoKSBvdmVycmlkZTsKICAgICB2b2lkIG1heFJlc3VsdHNBdHRy
aWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hv
dWxkU3VibWl0SW1wCiAgICAgICAgIHx8IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRs
eShldmVudCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUlu
cHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lPihlbGVtZW50KCksIFdURk1vdmUoc3R5
bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqKSBm
aW5hbDsKICAgICB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIGZpbmFsOwogICAgIGJvb2wgc2hv
dWxkU3VibWl0SW1wbGljaXRseShFdmVudCopIGZpbmFsOwotICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRo
b2QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRl
KCkgb3ZlcnJpZGU7CiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0
IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjE2LDcgKzIyMTYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0Rm9udChjCiAKICAgICAvLyBNYXAgdGhlIDxjYW52YXM+IGZvbnQgaW50byB0aGUgdGV4
dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3b3JkcyBsaWtlIGxhcmdlci9zbWFsbGVyLCB0
aGVzZSB3aWxsIHdvcmsKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgY2FudmFzLgotICAgIGF1dG8g
bmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNhbnZh
cygpLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29u
dHJvbC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBEZXRhaWxzTWFya2VyQ29udHJvbDo6RGV0YWlsc01hcmtlckNvbnRyCiAgICAgc2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IERldGFp
bHNNYXJrZXJDb250cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckRldGFpbHNNYXJrZXI+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEZXRhaWxzTWFya2VyQ29udHJvbChE
b2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92
ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbgogICAgIH0KIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0z
MjcsNyArMzI3LDcgQEAgUmVmPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZQog
ICAgIHJldHVybiBlbGVtZW50OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogfQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgUmVmPE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbgogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ1Niw3ICs0NTYsNyBAQCBwcml2YXRlOgogCiAgICAg
ZXhwbGljaXQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYp
OwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPEltYWdlPiBjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5nZWQo
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgTWV0ZXJJbm5lckVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQKICAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkuc3VwcG9ydHNN
ZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZXRl
cklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRl
OgogICAgIE1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKICAgICBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgUmVmPE1ldGVy
SW5uZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NT
aGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCBQcm9ncmVzc0lubmVyRWxlbWVudDo6UHJvZ3Jlc3NJbm5lckVsZW1lCiB7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUHJvZ3Jlc3NJ
bm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJQcm9ncmVzcz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFByb2dyZXNzSW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgaW5saW5lIHN0YXRp
YyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1SZW5kZXJTbGlkZXJUaHVtYjo6UmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVy
VGh1bWJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU2xpZGVyVGh1bWI6OlJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFJl
bmRlclNsaWRlclRodW1iOjppc1NsaWRlclRodW1iKCkgCiAvLyBodHRwOi8vd2Via2l0Lm9yZy9i
LzYyNTM1CiBjbGFzcyBSZW5kZXJTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
RmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihTbGlkZXJD
b250YWluZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihTbGlkZXJDb250YWluZXJFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckZsZXhpYmxlQm94
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbQogICAgICAgICByZW5k
ZXJlcigpLT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXJUaHVtYj4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KQEAgLTYyMyw3ICs2MjMsNyBAQCBSZWY8U2xpZGVyQ29udGFpbmVyRWxlbWVu
dD4gU2xpZGVyQ29udGFpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2xpZGVyQ29udGFpbmVy
RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlckNvbnRhaW5lcj4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1
bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKICAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSBSZWY8U2xp
ZGVyVGh1bWJFbGVtZW50PiBTbGlkZXJUaHUKIAogY2xhc3MgUmVuZGVyU2xpZGVyVGh1bWIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTbGlkZXJU
aHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTbGlkZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2UoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsK
IAogcHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
U2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShSZW5kZXJTdHlsZSYsIFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDcgQEAgUmVmPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IFRleHRD
b250cgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDb250cm9sSW5uZXJDb250YWluZXIo
ZG9jdW1lbnQpKTsKIH0KICAgICAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJv
bElubmVyQ29udGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTc3LDcgKzc3LDcgQEAgUmVmPFRleHRD
b250cm9sSW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbAogCiBPcHRpb25hbDxFbGVtZW50U3R5bGU+
IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoUmVuZGVyU3R5bGUm
LCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIGF1dG8gaW5uZXJDb250YWlu
ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGlubmVyQ29udGFpbmVy
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAgaW5uZXJDb250YWluZXJTdHls
ZS0+aW5oZXJpdEZyb20oc2hhZG93SG9zdFN0eWxlKTsKIAogICAgIGlubmVyQ29udGFpbmVyU3R5
bGUtPnNldEZsZXhHcm93KDEpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50OjpkZWZhdWwKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVy
QmxvY2s+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMzYsNyArMTM2LDggQEAgUmVu
ZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbAogCiBPcHRpb25hbDxFbGVtZW50
U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKFJl
bmRlclN0eWxlJiwgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICByZXR1cm4g
RWxlbWVudFN0eWxlKGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93
SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKSk7CisgICAgYXV0
byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9z
dCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKKyAgICByZXR1cm4g
RWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUp
KSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxUZXh0Q29udHJvbElubmVyQ29udGFpbmVyPiBjcmVhdGUoRG9j
dW1lbnQmKTsKIHByb3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKERvY3Vt
ZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogfTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TERpdkVsZW1lbnQgewpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPEVsZW1lbnRT
dHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1l
bnRNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbiBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24o
SFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmly
dHVhbCB+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbigpOwogCiBwcml2YXRlOgpAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3Bh
Z2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUmVuZGVySW1h
Z2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckltYWdl
Q29udHJvbHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVmYQogICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJv
bHNCdXR0b24+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYyhEb2N1bWVudCYpOwogCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
b3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMv
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlQ29udHJvbHMg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFn
ZUNvbnRyb2xzKEhUTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHMoKTsKIAogcHJpdmF0ZToKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVJlbmRlckltYWdl
Q29udHJvbHM6OlJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5k
ZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpA
QCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6fkltYWdlQ29u
dHIKIHsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9scz4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhEb2N1bWVudCYpOwogCi0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBWVFRDdWVCb3g6OnZ0dEN1ZUJveAogICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQ
c2V1ZG9JZDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVlRUQ3Vl
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBWVFRDdWVCb3goRG9jdW1lbnQmLCBWVFRDdWUmKTsKIAotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIFZUVEN1ZSYgbV9jdWU7CiAgICAg
aW50IG1fZm9udFNpemVGcm9tQ2FwdGlvblVzZXJQcmVmczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNoaWxkCiAgICAgTWF0aE1MRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKIHsKICAgICBpZiAoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3htbFRhZykpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKICAgICAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBSZWY8TWF0aE1MTWF0aEVsZW1lbnQ+IE1hdGhN
TE1hdGhFbGVtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWF0aE1MTWF0aEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhN
TE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1hdGg+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
ZW5jbG9zZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCBSZWY8TWF0aE1MTWVuY2xvc2VFbGVtZW50PiBNYXRoTUxNZW5jbG9zCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWF0aE1MTWVuY2xvc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1h
dGhNTE1lbmNsb3NlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7ICAgIAogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNZW5jbG9zZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyTm90YXRpb25zKCkgeyBtX25vdGF0aW9uRmxhZ3MgPSAwOyB9CiAg
ICAgdm9pZCBhZGROb3RhdGlvbihNZW5jbG9zZU5vdGF0aW9uRmxhZyBub3RhdGlvbkZsYWcpIHsg
bV9ub3RhdGlvbkZsYWdzIHw9IG5vdGF0aW9uRmxhZzsgfQogICAgIHVuc2lnbmVkIHNob3J0IG1f
bm90YXRpb25GbGFnczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Vs
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBSZWY8TWF0aE1MU2VsZWN0RWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWF0aE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MU2VsZWN0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ck1hdGhNTFJvdz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWF0aE1MU2VsZWN0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIE1hdGhNTFRleHRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MVGV4dEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNl
cnRpb25Qb3NpdGlvbikKIHsKICAgICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcp
KQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkBAIC04OCw3ICs4OCw3IEBAIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBNYXRoTUxUZXh0RWxlbWUKIAogICAgIC8vIEZJWE1FOiB3aHkgZG8gd2UgaGF2ZSB0
byBzZXQgdGhlIGFsaWdubWVudCBoZXJlID8gSXQgc2VlbXMgbmVlZGVkIHRvIG1ha2UgdGhlCiAg
ICAgLy8gc3R5bGUtY2hhbmdlZC5odG10IHRlc3QgdG8gcGFzcywgc2luY2UgbWF0aG1sIHJlbmRl
cnMgZXhwZWN0IFN0cmV0Y2ggYXMgZGVmYXVsdC4KLSAgICBzdHlsZS0+c2V0QWxpZ25JdGVtc1Bv
c2l0aW9uKEl0ZW1Qb3NpdGlvblN0cmV0Y2gpOworICAgIHN0eWxlLnNldEFsaWduSXRlbXNQb3Np
dGlvbihJdGVtUG9zaXRpb25TdHJldGNoKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJNYXRoTUxUb2tlbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1hdGhNTFRleHRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OTksMTAgKzM3
OTksMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAgIG1f
c2Nyb2xsQ29ybmVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFtX3Njcm9s
bENvcm5lcikgewotICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXIgPSBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlci0+ZG9jdW1lbnQoKSwgV1RGTW92ZShjb3JuZXJT
dHlsZSkpOworICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlci0+ZG9jdW1lbnQoKSwgV1RGTW92ZSgqY29ybmVyU3R5
bGUpKTsKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92
ZShjb3JuZXJTdHlsZSkpOworICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdU
Rk1vdmUoKmNvcm5lclN0eWxlKSk7CiAgICAgICAgIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoY29y
bmVyUmVjdCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IEFuaW1hdGlvbkNvCiAgICAgY29uc3QgQ29tcG9zaXRlQW5pbWF0aW9uJiByZW5kZXJlckFu
aW1hdGlvbnMgPSAqbV9jb21wb3NpdGVBbmltYXRpb25zLmdldCgmcmVuZGVyZXIpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5pbWF0aW5nU3R5bGUgPSByZW5kZXJlckFuaW1h
dGlvbnMuZ2V0QW5pbWF0ZWRTdHlsZSgpOwogICAgIGlmICghYW5pbWF0aW5nU3R5bGUpCi0gICAg
ICAgIGFuaW1hdGluZ1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5kZXJlci5zdHlsZSgp
KTsKKyAgICAgICAgYW5pbWF0aW5nU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVy
ZXIuc3R5bGUoKSk7CiAgICAgCiAgICAgcmV0dXJuIGFuaW1hdGluZ1N0eWxlOwogfQpAQCAtNjM3
LDcgKzYzNyw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW8KIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6Z2V0QW5pbWF0
ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewogICAgIGlmICgh
cmVuZGVyZXIuaXNDU1NBbmltYXRpbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpj
bG9uZSgmcmVuZGVyZXIuc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YS0+Z2V0QW5pbWF0ZWRT
dHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDb21wb3NpdGVB
bmltYXRpb246OnVwZGF0ZVRyYW5zaXRpbwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Yg
dGhlIHByb3BlcnR5LCBzbyB0aGF0IHJlc3RhcnRlZCB0cmFuc2l0aW9ucyB1c2UgdGhlIGNvcnJl
Y3Qgc3RhcnRpbmcgcG9pbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ1NTUHJvcGVy
dHlBbmltYXRpb246OmFuaW1hdGlvbk9mUHJvcGVydHlJc0FjY2VsZXJhdGVkKHByb3ApICYmIGlt
cGxBbmltLT5pc0FjY2VsZXJhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1vZGlmaWVkQ3VycmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllZEN1cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50U3R5bGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZEN1cnJlbnRTdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqY3VycmVudFN0eWxlKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGltcGxBbmltLT5ibGVuZFByb3BlcnR5VmFsdWVJblN0eWxlKHByb3AsIG1v
ZGlmaWVkQ3VycmVudFN0eWxlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1h
dGlvbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1h
dGlvbihBbmltYXRpb24mIHRyYW5zaXRpb24sIENTU1Byb3BlcnR5SUQgYW5pbWF0aW5nUHJvcGVy
dHksIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmlt
LCBSZW5kZXJTdHlsZSogZnJvbVN0eWxlKQogICAgIDogQW5pbWF0aW9uQmFzZSh0cmFuc2l0aW9u
LCByZW5kZXJlciwgY29tcEFuaW0pCi0gICAgLCBtX2Zyb21TdHlsZShSZW5kZXJTdHlsZTo6Y2xv
bmUoZnJvbVN0eWxlKSkKKyAgICAsIG1fZnJvbVN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
ZnJvbVN0eWxlKSkKICAgICAsIG1fdHJhbnNpdGlvblByb3BlcnR5KHRyYW5zaXRpb24ucHJvcGVy
dHkoKSkKICAgICAsIG1fYW5pbWF0aW5nUHJvcGVydHkoYW5pbWF0aW5nUHJvcGVydHkpCiB7CkBA
IC03Niw3ICs3Niw3IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQK
ICAgICAvLyBSdW4gYSBjeWNsZSBvZiBhbmltYXRpb24uCiAgICAgLy8gV2Uga25vdyB3ZSB3aWxs
IG5lZWQgYSBuZXcgcmVuZGVyIHN0eWxlLCBzbyBtYWtlIG9uZSBpZiBuZWVkZWQKICAgICBpZiAo
IWFuaW1hdGVkU3R5bGUpCi0gICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUodGFyZ2V0U3R5bGUpOworICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCp0YXJnZXRTdHlsZSk7CiAKICAgICBib29sIG5lZWRzQW5pbSA9IENTU1Byb3BlcnR5
QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXModGhpcywgbV9hbmltYXRpbmdQcm9wZXJ0eSwgYW5p
bWF0ZWRTdHlsZS5nZXQoKSwgbV9mcm9tU3R5bGUuZ2V0KCksIG1fdG9TdHlsZS5nZXQoKSwgcHJv
Z3Jlc3MoKSk7CiAgICAgLy8gRklYTUU6IHdlIGFsc28gbmVlZCB0byBkZXRlY3QgY2FzZXMgd2hl
cmUgd2UgaGF2ZSB0byBzb2Z0d2FyZSBhbmltYXRlIGZvciBvdGhlciByZWFzb25zLApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0CiB2b2lk
IEltcGxpY2l0QW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpCiB7CiAgICAgaWYgKCFhbmltYXRlZFN0eWxlKQotICAg
ICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG1fdG9TdHlsZS5nZXQoKSk7
CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm1fdG9TdHls
ZSk7CiAKICAgICBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIG1f
YW5pbWF0aW5nUHJvcGVydHksIGFuaW1hdGVkU3R5bGUuZ2V0KCksIG1fZnJvbVN0eWxlLmdldCgp
LCBtX3RvU3R5bGUuZ2V0KCksIHByb2dyZXNzKCkpOwogfQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgSW1wbGljaXRBbmltYXRpb246Om9uQW5pbWF0aW9uRW5kKGQKICAgICAvLyAoY29tcGFyaW5n
IHRoZSBvbGQgdW5hbmltYXRlZCBzdHlsZSB3aXRoIHRoZSBuZXcgZmluYWwgc3R5bGUgb2YgdGhl
IHRyYW5zaXRpb24pLgogICAgIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gbV9jb21wb3NpdGVBbmltYXRpb24tPmdldEFuaW1hdGlvbkZvclByb3BlcnR5KG1fYW5pbWF0
aW5nUHJvcGVydHkpOwogICAgIGlmIChrZXlmcmFtZUFuaW0pCi0gICAgICAgIGtleWZyYW1lQW5p
bS0+c2V0VW5hbmltYXRlZFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShtX3RvU3R5bGUuZ2V0KCkp
KTsKKyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRVbmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6
OmNsb25lUHRyKCptX3RvU3R5bGUpKTsKICAgICAKICAgICBzZW5kVHJhbnNpdGlvbkV2ZW50KGV2
ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQsIGVsYXBzZWRUaW1lKTsKICAgICBlbmRBbmlt
YXRpb24oKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNl
dChSZW5kZXJTdHlsCiAgICAgQVNTRVJUKHRvKTsKICAgICBBU1NFUlQobV9mcm9tU3R5bGUpOwog
Ci0gICAgbV90b1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHRvKTsKKyAgICBtX3RvU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnRvKTsKIAogICAgIC8vIFJlc3RhcnQgdGhlIHRyYW5z
aXRpb24KICAgICBpZiAobV9mcm9tU3R5bGUgJiYgbV90b1N0eWxlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihBbmltYXRpb24m
IGFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGludCBpbmRleCwgQ29tcG9zaXRl
QW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRpb24sIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5
bGUpCiAgICAgOiBBbmltYXRpb25CYXNlKGFuaW1hdGlvbiwgcmVuZGVyZXIsIGNvbXBvc2l0ZUFu
aW1hdGlvbikKICAgICAsIG1fa2V5ZnJhbWVzKGFuaW1hdGlvbi5uYW1lKCkpCi0gICAgLCBtX3Vu
YW5pbWF0ZWRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUodW5hbmltYXRlZFN0eWxlKSkKKyAgICAs
IG1fdW5hbmltYXRlZFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdW5hbmltYXRlZFN0eWxl
KSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiB7CiAgICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5k
ZXJTdHlsZXMKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjphbmlt
YXRlKENvbXBvc2l0CiAgICAgLy8gSWYgc28sIHdlIG5lZWQgdG8gc2VuZCBiYWNrIHRoZSB0YXJn
ZXRTdHlsZS4KICAgICBpZiAocG9zdEFjdGl2ZSgpKSB7CiAgICAgICAgIGlmICghYW5pbWF0ZWRT
dHlsZSkKLSAgICAgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodGFy
Z2V0U3R5bGUpOworICAgICAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqdGFyZ2V0U3R5bGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0x
NjEsNyArMTYxLDcgQEAgYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdAog
ICAgIC8vIFJ1biBhIGN5Y2xlIG9mIGFuaW1hdGlvbi4KICAgICAvLyBXZSBrbm93IHdlIHdpbGwg
bmVlZCBhIG5ldyByZW5kZXIgc3R5bGUsIHNvIG1ha2Ugb25lIGlmIG5lZWRlZC4KICAgICBpZiAo
IWFuaW1hdGVkU3R5bGUpCi0gICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUodGFyZ2V0U3R5bGUpOworICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCp0YXJnZXRTdHlsZSk7CiAKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBiZSBtb3Jl
IGVmZmljaWVudCBhYm91dCBkZXRlcm1pbmluZyB3aGljaCBrZXlmcmFtZXMgd2UgYXJlIGFuaW1h
dGluZyBiZXR3ZWVuLgogICAgIC8vIFdlIHNob3VsZCBjYWNoZSB0aGUgbGFzdCBwYWlyIG9yIHNv
bWV0aGluZy4KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpnZXRB
bmltYXRlZFN0eWxlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghYW5pbWF0ZWRTdHlsZSkK
LSAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmbV9vYmplY3QtPnN0
eWxlKCkpOworICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKG1f
b2JqZWN0LT5zdHlsZSgpKTsKIAogICAgIGZvciAoYXV0byBwcm9wZXJ0eUlEIDogbV9rZXlmcmFt
ZXMucHJvcGVydGllcygpKSB7CiAgICAgICAgIC8vIEdldCB0aGUgZnJvbS90byBzdHlsZXMgYW5k
IHByb2dyZXNzIGJldHdlZW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJB
dHRhY2htZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVJlbmRlckF0dGFjaG1lbnQ6OlJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQXR0
YWNobWVudDo6UmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSwgTGF5b3V0U2l6ZSgpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKIAogY2xhc3MgUmVuZGVy
QXR0YWNobWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBhdHRhY2ht
ZW50RWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSwxMiArMTgxLDEyIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhZFZlcnRpY2FsTGF5b3V0T3ZlcmZsb3c7CiB9OwogCi1SZW5k
ZXJCbG9jazo6UmVuZGVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQmxv
Y2s6OlJlbmRlckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJh
c2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckJsb2NrRmxhZykKIHsKIH0KIAotUmVu
ZGVyQmxvY2s6OlJlbmRlckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVy
QmxvY2s6OlJlbmRlckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckJsb2NrRmxhZykKIHsKIH0K
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShTdHls
ZURpCiAgICAgICAgIGZvciAoUmVuZGVyQmxvY2sqIGN1cnJDb250ID0gYmxvY2tFbGVtZW50Q29u
dGludWF0aW9uKCk7IGN1cnJDb250OyBjdXJyQ29udCA9IGN1cnJDb250LT5ibG9ja0VsZW1lbnRD
b250aW51YXRpb24oKSkgewogICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5leHRD
b250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOwogICAgICAgICAgICAgY3VyckNvbnQtPnNl
dENvbnRpbnVhdGlvbigwKTsKLSAgICAgICAgICAgIGN1cnJDb250LT5zZXRTdHlsZShSZW5kZXJT
dHlsZTo6Y2xvbmUoJm5ld1N0eWxlKSk7CisgICAgICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUo
UmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKSk7CiAgICAgICAgICAgICBjdXJyQ29udC0+c2V0
Q29udGludWF0aW9uKG5leHRDb250KTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5MSw3ICszOTEs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjbG9uCiAgICAgICAgIGNs
b25lQmxvY2stPnNldENoaWxkcmVuSW5saW5lKGNoaWxkcmVuSW5saW5lKCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFJlbmRlclRyZWVQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbigqcGFyZW50
KCkpOwotICAgICAgICBjbG9uZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxSZW5kZXJCbG9j
az4oZWxlbWVudCgpLT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGU6OmNsb25lKCZz
dHlsZSgpKSwgaW5zZXJ0aW9uUG9zaXRpb24pKTsKKyAgICAgICAgY2xvbmVCbG9jayA9IHN0YXRp
Y19wb2ludGVyX2Nhc3Q8UmVuZGVyQmxvY2s+KGVsZW1lbnQoKS0+Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSgpKSwgaW5zZXJ0aW9uUG9zaXRpb24pKTsKICAg
ICAgICAgY2xvbmVCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAKICAgICAgICAgLy8gVGhpcyB0
YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHJpZ2h0IHZhbHVlIG9mIGNoaWxkcmVuSW5saW5lIGlu
IGNhc2UKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVDaGlsZChS
ZW5kZXJPYmplCiAgICAgICAgICAgICBBU1NFUlQoIWlubGluZUNoaWxkcmVuQmxvY2suY29udGlu
dWF0aW9uKCkpOwogICAgICAgICAgICAgLy8gQ2FjaGUgdGhpcyB2YWx1ZSBhcyBpdCBtaWdodCBn
ZXQgY2hhbmdlZCBpbiBzZXRTdHlsZSgpIGNhbGwuCiAgICAgICAgICAgICBib29sIGlubGluZUNo
aWxkcmVuQmxvY2tIYXNMYXllciA9IGlubGluZUNoaWxkcmVuQmxvY2suaGFzTGF5ZXIoKTsKLSAg
ICAgICAgICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKSk7CisgICAgICAgICAg
ICBpbmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiAgICAgICAgICAgICByZW1vdmVD
aGlsZEludGVybmFsKGlubGluZUNoaWxkcmVuQmxvY2ssIGlubGluZUNoaWxkcmVuQmxvY2tIYXNM
YXllciA/IE5vdGlmeUNoaWxkcmVuIDogRG9udE5vdGlmeUNoaWxkcmVuKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJsb2NrIGlu
c2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgpAQCAtMzA2OCw5ICszMDY4LDkgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZQogICAgICAgICAvLyBUaGUgZmlyc3Qt
bGV0dGVyIHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVy
ZXIgb2YgdGhlIHJpZ2h0IHR5cGUuCiAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXdG
aXJzdExldHRlcjsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUp
Ci0gICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNsb25lKCZwc2V1ZG9TdHlsZSkpOworICAgICAgICAgICAgbmV3Rmly
c3RMZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9u
ZShwc2V1ZG9TdHlsZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdGaXJzdExldHRl
ciA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKCZw
c2V1ZG9TdHlsZSkpOworICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxv
Y2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAg
ICAgICBuZXdGaXJzdExldHRlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAKICAgICAgICAgLy8gTW92
ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJlci4KQEAgLTMwOTYsNyArMzA5
Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUKICAgICAgICAg
Zmlyc3RMZXR0ZXIgPSBuZXdGaXJzdExldHRlcjsKICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWlu
ZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoJnBzZXVkb1N0eWxl
KSk7CisgICAgICAgIGZpcnN0TGV0dGVyLT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUocHNl
dWRvU3R5bGUpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5k
ZXJlcihSZW5kZXJFbGVtZW50KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJUZXh0KiBjdXJyZW50
VGV4dENoaWxkKQpAQCAtMzEwNSw5ICszMTA1LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRl
Rmlyc3RMZXR0ZXJSZW5kZQogICAgIFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSA9IHN0eWxlRm9y
Rmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIpOwogICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBmaXJzdExldHRlciA9IG51bGxwdHI7CiAgICAgaWYgKHBz
ZXVkb1N0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUpCi0gICAgICAgIGZpcnN0TGV0dGVyID0gbmV3
IFJlbmRlcklubGluZShkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnBzZXVkb1N0eWxl
KSk7CisgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVudCgpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpKTsKICAgICBlbHNlCi0gICAgICAgIGZpcnN0
TGV0dGVyID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUoJnBzZXVkb1N0eWxlKSk7CisgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IFJlbmRlckJsb2Nr
Rmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpKTsKICAgICBm
aXJzdExldHRlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgZmlyc3RMZXR0ZXJDb250YWluZXIt
PmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50VGV4dENoaWxkKTsKIApAQCAtMzc0Myw5ICsz
NzQzLDkgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdQogICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnZlcnQgYWxsIG91ciBpbmxpbmUgZGlzcGxheXMgdG8g
YmxvY2stdHlwZSBpbiB0aGUgYW5vbnltb3VzIGxvZ2ljID8KICAgICBSZW5kZXJCbG9jayogbmV3
Qm94OwogICAgIGlmIChkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWCkK
LSAgICAgICAgbmV3Qm94ID0gbmV3IFJlbmRlckZsZXhpYmxlQm94KHBhcmVudC0+ZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+
c3R5bGUoKSwgRkxFWCkpOworICAgICAgICBuZXdCb3ggPSBuZXcgUmVuZGVyRmxleGlibGVCb3go
cGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShwYXJlbnQtPnN0eWxlKCksIEZMRVgpKTsKICAgICBlbHNlCi0gICAgICAgIG5ld0Jv
eCA9IG5ldyBSZW5kZXJCbG9ja0Zsb3cocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBCTE9DSykp
OworICAgICAgICBuZXdCb3ggPSBuZXcgUmVuZGVyQmxvY2tGbG93KHBhcmVudC0+ZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5z
dHlsZSgpLCBCTE9DSykpOwogCiAgICAgbmV3Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBy
ZXR1cm4gbmV3Qm94OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBmcmllbmQg
Y2xhc3MgTGluZUxheW91dFN0YXRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQmxvY2soRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOwotICAg
IFJlbmRlckJsb2NrKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFz
ZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQmxvY2soRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJh
c2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwg
QmFzZVR5cGVGbGFncyk7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2soKTsKIAogcHVibGljOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6
TWFyZ2luSW5mbzo6TWFyZ2luSW5mbygKICAgICBtX25lZ2F0aXZlTWFyZ2luID0gKG1fY2FuQ29s
bGFwc2VNYXJnaW5CZWZvcmVXaXRoQ2hpbGRyZW4gJiYgIWJsb2NrLm11c3REaXNjYXJkTWFyZ2lu
QmVmb3JlKCkpID8gYmxvY2subWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKSA6IExheW91dFVuaXQo
KTsKIH0KIAotUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckJsb2NrRmxvdzo6
UmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyQmxvY2tGbG93
RmxhZykKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKICAgICAsIG1fd2lkdGhGb3JU
ZXh0QXV0b3NpemluZygtMSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6OlJl
bmRlckJsb2NrRmxvdyhFbGVtZW50CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiB9CiAK
LVJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiBkb2N1bWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckJsb2NrRmxvdzo6UmVuZGVy
QmxvY2tGbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyQmxvY2tGbG93Rmxh
ZykKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKICAgICAsIG1fd2lkdGhGb3JUZXh0
QXV0b3NpemluZygtMSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6On5SZW5k
ZXJCbG9ja0Zsb3coKQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlTXVsdGlDb2x1bW5G
bG93VGhyZWFkKCkKIHsKLSAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKGRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBCTE9DSykpOwor
ICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5ldyBSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spKTsKICAgICBmbG93VGhyZWFkLT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7IC8vIERvIHRo
aXMgdG8gYXZvaWQgd3JhcHBpbmcgaW5saW5lIGNoaWxkcmVuIHRoYXQgYXJlIGp1c3QgZ29pbmcg
dG8gbW92ZSBpbnRvIHRoZSBmbG93IHRocmVhZC4KICAgICBkZWxldGVMaW5lcygpOwpAQCAtMjAz
Nyw3ICsyMDM3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eQog
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCkKIHsK
ICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZCAmJiAoY2hpbGQt
PmlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpIHx8IGNoaWxkLT5pc1JlbmRlck11bHRpQ29sdW1u
U2V0KCkpOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQotICAgICAgICBjaGlsZC0+
c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0
eWxlKCksIEJMT0NLKSk7CisgICAgICAgIGNoaWxkLT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwogfQogCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1
LDggQEAgZW51bSBMaW5lQ291bnQgewogCiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3cgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckJsb2NrRmxvdyhFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyQmxvY2tGbG93KERvY3VtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyQmxvY2tGbG93KEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9ja0Zsb3coKTsKICAgICAgICAg
CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQg
cGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBA
IHN0YXRpYyBib29sIHNraXBCb2R5QmFja2dyb3VuZChjb25zdCBSZW4KICAgICAgICAgJiYgKGRv
Y3VtZW50RWxlbWVudFJlbmRlcmVyID09IGJvZHlFbGVtZW50UmVuZGVyZXItPnBhcmVudCgpKTsK
IH0KIAotUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVu
ZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwg
QmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3Qo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX21pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0x
KQpAQCAtMTI3LDcgKzEyNyw3IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVsZW1l
bnQsIHMKICAgICBzZXRJc0JveCgpOwogfQogCi1SZW5kZXJCb3g6OlJlbmRlckJveChEb2N1bWVu
dCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBl
RmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQog
ICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzKQogICAgICwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDggKzYzMCw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBSZW5kZXJCb3gqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCb3goRWxlbWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckJveChEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJl
bmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVu
ZGVyQm94KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKICAgICB2
b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMiArMTYxLDEyIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXQKICAgICBsYXllcigpLT5iYWNraW5nKCktPnN1
c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCi1SZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVy
Qm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94TW9kZWxP
YmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckxheWVy
TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5k
ZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5k
ZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckJveE1v
ZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdz
IHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzgsOCArMjM4LDggQEAgcHVibGljOgogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNl
VHlwZUZsYWdzKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3Mp
OwogCiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotUmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9s
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dCgwKQogICAgICwgbV9pbm5lcigwKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIC8vIHRv
IGRhdGUgYXMgdGhlIGJ1dHRvbiBjaGFuZ2VzLgogY2xhc3MgUmVuZGVyQnV0dG9uIGZpbmFsIDog
cHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCdXR0b24oSFRN
TEZvcm1Db250cm9sRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyQnV0dG9uKCk7CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
JiBmb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0OjpzdHlsZURpZENoYW5n
ZShTCiAgICAgLy8gY2xvYmJlcmluZyB3aWR0aCB2YXJpYW50cyBhbmQgc2hyaW5rLXRvLWZpdCBj
aGFuZ2VzLCBzaW5jZSB3ZSB3b24ndCByZWNvbWJpbmUgd2hlbgogICAgIC8vIHRoZSBmb250IGRv
ZXNuJ3QgY2hhbmdlLgogICAgIGlmICghb2xkU3R5bGUgfHwgb2xkU3R5bGUtPmZvbnRDYXNjYWRl
KCkgIT0gc3R5bGUoKS5mb250Q2FzY2FkZSgpKQotICAgICAgICBtX2NvbWJpbmVGb250U3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0eWxlKCkpOworICAgICAgICBtX2NvbWJpbmVGb250U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoc3R5bGUoKSk7CiAKICAgICBSZW5kZXJUZXh0Ojpz
dHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9vcmRpbmFsSXRlcmF0aW9uOwogfTsKIAotUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFs
bCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBiZSBibG9jay1sZXZlbApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNz
IEZsZXhCb3hJdGVyYXRvcjsKIAogY2xhc3MgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IGZp
bmFsIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3goRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KCk7CiAKICAgICBFbGVtZW50
JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFp
bHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFy
a2VyQ29udHJvbCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01hcmtlckNv
bnRyb2wmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zs
b3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJEZXRhaWxzTWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01h
cmtlckNvbnRyb2wmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBEZXRhaWxzTWFya2VyQ29udHJvbCYg
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNNYXJrZXJDb250cm9s
Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7IFVw
LCBEb3duLCBMZWZ0LCBSaWdodCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBA
IHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIENvbnQKICAgICByZXR1cm4gbWFw
OwogfQogCi1pbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2Rl
JiBlbGVtZW50T3JEb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
QmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQoraW5saW5lIFJlbmRlckVsZW1lbnQ6OlJlbmRl
ckVsZW1lbnQoQ29udGFpbmVyTm9kZSYgZWxlbWVudE9yRG9jdW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlck9iamVjdChl
bGVtZW50T3JEb2N1bWVudCkKICAgICAsIG1fYmFzZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzKQog
ICAgICwgbV9hbmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSkKQEAgLTEwNCwxMiArMTA0LDEyIEBA
IGlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnQKIHsKIH0KIAotUmVuZGVy
RWxlbWVudDo6UmVuZGVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJF
bGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoc3Rh
dGljX2Nhc3Q8Q29udGFpbmVyTm9kZSY+KGVsZW1lbnQpLCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5
cGVGbGFncykKIHsKIH0KIAotUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYg
ZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxh
Z3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxh
Z3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KHN0YXRpY19jYXN0PENvbnRhaW5lck5vZGUmPihkb2N1
bWVudCksIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewogfQpAQCAtMTE3LDI0ICsx
MTcsMjQgQEAgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYgZAogUmVuZGVy
RWxlbWVudDo6flJlbmRlckVsZW1lbnQoKQogewogICAgIGlmIChoYXNJbml0aWFsaXplZFN0eWxl
KCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIgPSBtX3N0eWxlLT5i
YWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXI7IGJnTGF5ZXIgPSBiZ0xheWVyLT5uZXh0KCkpIHsK
KyAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIgPSBtX3N0eWxlLmJhY2tncm91
bmRMYXllcnMoKTsgYmdMYXllcjsgYmdMYXllciA9IGJnTGF5ZXItPm5leHQoKSkgewogICAgICAg
ICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJhY2tncm91bmRJbWFnZSA9IGJnTGF5ZXItPmltYWdlKCkp
CiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogbWFza0xheWVyID0gbV9z
dHlsZS0+bWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4
dCgpKSB7CisgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBtX3N0eWxl
Lm1hc2tMYXllcnMoKTsgbWFza0xheWVyOyBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5leHQoKSkg
ewogICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tJbWFnZSA9IG1hc2tMYXllci0+aW1h
Z2UoKSkKICAgICAgICAgICAgICAgICBtYXNrSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IG1fc3R5bGUt
PmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKKyAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJvcmRlcklt
YWdlID0gbV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBib3JkZXJJ
bWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogCi0gICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNr
Qm94SW1hZ2UgPSBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAo
U3R5bGVJbWFnZSogbWFza0JveEltYWdlID0gbV9zdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
KQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAKICNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKLSAgICAgICAgaWYgKGF1dG8gc2hhcGVWYWx1ZSA9IG1fc3R5bGUt
PnNoYXBlT3V0c2lkZSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNoYXBlVmFsdWUgPSBtX3N0eWxl
LnNoYXBlT3V0c2lkZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBzaGFwZUltYWdlID0gc2hh
cGVWYWx1ZS0+aW1hZ2UoKSkKICAgICAgICAgICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGll
bnQodGhpcyk7CiAgICAgICAgIH0KQEAgLTE0NiwxMiArMTQ2LDEyIEBAIFJlbmRlckVsZW1lbnQ6
On5SZW5kZXJFbGVtZW50KCkKICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJGb3JWaXNpYmxlSW5W
aWV3cG9ydENhbGxiYWNrKCp0aGlzKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJl
bmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1l
bnQ6OmNyZWF0ZUZvcihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewog
ICAgIC8vIE1pbmltYWwgc3VwcG9ydCBmb3IgY29udGVudCBwcm9wZXJ0aWVzIHJlcGxhY2luZyBh
biBlbnRpcmUgZWxlbWVudC4KICAgICAvLyBXb3JrcyBvbmx5IGlmIHdlIGhhdmUgZXhhY3RseSBv
bmUgcGllY2Ugb2YgY29udGVudCBhbmQgaXQncyBhIFVSTC4KICAgICAvLyBPdGhlcndpc2UgYWN0
cyBhcyBpZiB3ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCi0gICAgY29uc3QgQ29udGVu
dERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7CisgICAgY29uc3QgQ29u
dGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEoKTsKICAgICBpZiAoY29u
dGVudERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgaXM8SW1hZ2VDb250ZW50RGF0YT4o
KmNvbnRlbnREYXRhKSAmJiAhZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICBh
dXRvJiBzdHlsZUltYWdlID0gZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRh
KS5pbWFnZSgpOwogICAgICAgICBhdXRvIGltYWdlID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1h
Z2U+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBjb25zdF9jYXN0PFN0eWxlSW1hZ2UqPigmc3R5
bGVJbWFnZSkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBS
ZW5kZXJFbGVtZW50OjoKICAgICAgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoc3R5bGUtPmRpc3BsYXkoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuZGlzcGxh
eSgpKSB7CiAgICAgY2FzZSBOT05FOgogICAgIGNhc2UgQ09OVEVOVFM6CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzc1LDE0ICszNzUsMTQgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojppbml0
aWFsaXplU3R5bGUoKQogCiAgICAgbV9oYXNJbml0aWFsaXplZFN0eWxlID0gdHJ1ZTsKIAotICAg
IHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS0+YmFja2dyb3VuZExheWVycygpKTsK
LSAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUtPm1hc2tMYXllcnMoKSk7Cisg
ICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLmJhY2tncm91bmRMYXllcnMoKSk7
CisgICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLm1hc2tMYXllcnMoKSk7CiAK
LSAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkp
OwotICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdl
KCkpOworICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFn
ZSgpKTsKKyAgICB1cGRhdGVJbWFnZShudWxscHRyLCBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmlt
YWdlKCkpOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgdXBkYXRlU2hhcGVJbWFnZShu
dWxscHRyLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7CisgICAgdXBkYXRlU2hhcGVJbWFnZShu
dWxscHRyLCBtX3N0eWxlLnNoYXBlT3V0c2lkZSgpKTsKICNlbmRpZgogCiAgICAgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlTmV3U3R5bGUsIG51bGxwdHIpOwpAQCAtMzk0LDcgKzM5NCw3
IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlKCkKICAgICAvLyBoYXZlIHRo
ZWlyIHBhcmVudCBzZXQgYmVmb3JlIGdldHRpbmcgYSBjYWxsIHRvIGluaXRpYWxpemVTdHlsZSgp
IDp8CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2Up
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxl
RGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaWZmZXJlbmNlKQogewogICAgIC8vIEZJWE1FOiBTaG91
bGQgY2hhbmdlIFJlbmRlclZpZXcgc28gaXQgY2FuIHVzZSBpbml0aWFsaXplU3R5bGUgdG9vLgog
ICAgIC8vIElmIHdlIGRvIHRoYXQsIHdlIGNhbiBhc3NlcnQgbV9oYXNJbml0aWFsaXplZFN0eWxl
IHVuY29uZGl0aW9uYWxseSwKQEAgLTQwNCwzNCArNDA0LDM0IEBAIHZvaWQgUmVuZGVyRWxlbWVu
dDo6c2V0U3R5bGUoc3RkOjp1bmlxdWUKICAgICBTdHlsZURpZmZlcmVuY2UgZGlmZiA9IFN0eWxl
RGlmZmVyZW5jZUVxdWFsOwogICAgIHVuc2lnbmVkIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
ID0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Tm9uZTsKICAgICBpZiAobV9oYXNJbml0aWFsaXpl
ZFN0eWxlKQotICAgICAgICBkaWZmID0gbV9zdHlsZS0+ZGlmZigqc3R5bGUsIGNvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGlmZiA9IG1fc3R5bGUuZGlmZihzdHlsZSwgY29u
dGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpOwogCiAgICAgZGlmZiA9IHN0ZDo6bWF4KGRpZmYsIG1p
bmltYWxTdHlsZURpZmZlcmVuY2UpOwogCiAgICAgZGlmZiA9IGFkanVzdFN0eWxlRGlmZmVyZW5j
ZShkaWZmLCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAKLSAgICBzdHlsZVdpbGxDaGFu
Z2UoZGlmZiwgKnN0eWxlKTsKKyAgICBzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgc3R5bGUpOwogCiAg
ICAgYXV0byBvbGRTdHlsZSA9IFdURk1vdmUobV9zdHlsZSk7CiAgICAgbV9zdHlsZSA9IFdURk1v
dmUoc3R5bGUpOwogCi0gICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS0+YmFja2dyb3VuZExh
eWVycygpLCBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAgIHVwZGF0ZUZpbGxJbWFn
ZXMob2xkU3R5bGUtPm1hc2tMYXllcnMoKSwgbV9zdHlsZS0+bWFza0xheWVycygpKTsKKyAgICB1
cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlLmJhY2tncm91bmRMYXllcnMoKSwgbV9zdHlsZS5iYWNr
Z3JvdW5kTGF5ZXJzKCkpOworICAgIHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUubWFza0xheWVy
cygpLCBtX3N0eWxlLm1hc2tMYXllcnMoKSk7CiAKLSAgICB1cGRhdGVJbWFnZShvbGRTdHlsZS0+
Ym9yZGVySW1hZ2UoKS5pbWFnZSgpLCBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkpOwot
ICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpLCBtX3N0eWxl
LT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKTsKKyAgICB1cGRhdGVJbWFnZShvbGRTdHlsZS5ib3Jk
ZXJJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUuYm9yZGVySW1hZ2UoKS5pbWFnZSgpKTsKKyAgICB1
cGRhdGVJbWFnZShvbGRTdHlsZS5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpLCBtX3N0eWxlLm1hc2tC
b3hJbWFnZSgpLmltYWdlKCkpOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgdXBkYXRl
U2hhcGVJbWFnZShvbGRTdHlsZS0+c2hhcGVPdXRzaWRlKCksIG1fc3R5bGUtPnNoYXBlT3V0c2lk
ZSgpKTsKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlLnNoYXBlT3V0c2lkZSgpLCBtX3N0
eWxlLnNoYXBlT3V0c2lkZSgpKTsKICNlbmRpZgogCiAgICAgYm9vbCBkb2VzTm90TmVlZExheW91
dCA9ICFwYXJlbnQoKTsKIAotICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlLmdldCgp
KTsKKyAgICBzdHlsZURpZENoYW5nZShkaWZmLCAmb2xkU3R5bGUpOwogCiAgICAgLy8gVGV4dCBy
ZW5kZXJlcnMgdXNlIHRoZWlyIHBhcmVudCBzdHlsZS4gTm90aWZ5IHRoZW0gYWJvdXQgdGhlIGNo
YW5nZS4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4o
KnRoaXMpKQotICAgICAgICBjaGlsZC5zdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZS5nZXQo
KSk7CisgICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hhbmdlKGRpZmYsICZvbGRTdHlsZSk7CiAKICAg
ICAvLyBGSVhNRTogfHRoaXN8IG1pZ2h0IGJlIGRlc3Ryb3llZCBoZXJlLiBUaGlzIGNhbiBjdXJy
ZW50bHkgaGFwcGVuIGZvciBhIFJlbmRlclRleHRGcmFnbWVudCB3aGVuCiAgICAgLy8gaXRzIGZp
cnN0LWxldHRlciBibG9jayBnZXRzIGFuIHVwZGF0ZSBpbiBSZW5kZXJUZXh0RnJhZ21lbnQ6OnN0
eWxlRGlkQ2hhbmdlLiBGb3IgUmVuZGVyVGV4dEZyYWdtZW50KHMpLApAQCAtNDQ4LDkgKzQ0OCw5
IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoc3RkOjp1bmlxdWUKICAgICAgICAgaWYg
KHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKICAgICAgICAgICAgIHNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAgICBlbHNlIGlmICh1cGRhdGVk
RGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXRQb3NpdGlvbmVkTW92ZW1lbnRPbmx5KQotICAg
ICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUuZ2V0KCkp
OworICAgICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoJm9sZFN0eWxl
KTsKICAgICAgICAgZWxzZSBpZiAodXBkYXRlZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxp
ZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVudCkgewotICAgICAgICAgICAgc2V0TmVlZHNQ
b3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgc2V0
TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoJm9sZFN0eWxlKTsKICAgICAgICAgICAgIHNl
dE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKICAgICAgICAgfSBlbHNlIGlmICh1
cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0KQogICAgICAgICAg
ICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwpAQCAtNzgyLDE4ICs3ODIs
MTggQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbgogICAgICAgICBp
ZiAoaXM8UmVuZGVyRmxvd1RocmVhZD4oZWxlbWVudENoaWxkKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlzcGxh
eSgpKTsKKyAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIGVsZW1lbnRDaGlsZC5zdHlsZSgpLmRpc3BsYXko
KSk7CiAgICAgICAgIGlmIChzdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkgewogICAgICAgICAg
ICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLnNwZWNpZmllc0NvbHVtbnMoKSkKLSAgICAgICAg
ICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKCZzdHlsZSgpKTsK
KyAgICAgICAgICAgICAgICBuZXdTdHlsZS5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oJnN0
eWxlKCkpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5zdHlsZSgpLmNvbHVtblNwYW4o
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q29sdW1uU3BhbihDb2x1bW5TcGFuQWxs
KTsKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5BbGwp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHBvc2l0aW9uIHN0eWxlIG9m
IGFub255bW91cyBibG9jayBjb250aW51YXRpb25zIGFzIHRoZXkgY2FuIGhhdmUgcmVsYXRpdmUg
b3Igc3RpY2t5IHBvc2l0aW9uIHdoZW4KICAgICAgICAgLy8gdGhleSBjb250YWluIGJsb2NrIGRl
c2NlbmRhbnRzIG9mIHJlbGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbmVkIGlubGluZXMuCiAgICAg
ICAgIGlmIChlbGVtZW50Q2hpbGQuaXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgZG93bmNhc3Q8UmVu
ZGVyQmxvY2s+KGVsZW1lbnRDaGlsZCkuaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKQot
ICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKGVsZW1lbnRDaGlsZC5zdHlsZSgpLnBv
c2l0aW9uKCkpOworICAgICAgICAgICAgbmV3U3R5bGUuc2V0UG9zaXRpb24oZWxlbWVudENoaWxk
LnN0eWxlKCkucG9zaXRpb24oKSk7CiAKICAgICAgICAgZWxlbWVudENoaWxkLnNldFN0eWxlKFdU
Rk1vdmUobmV3U3R5bGUpKTsKICAgICB9CkBAIC04MTAsOSArODEwLDkgQEAgdm9pZCBSZW5kZXJF
bGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgIGlmIChvbGRTdHlsZSkgewogICAgICAg
ICAvLyBJZiBvdXIgei1pbmRleCBjaGFuZ2VzIHZhbHVlIG9yIG91ciB2aXNpYmlsaXR5IGNoYW5n
ZXMsCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6
LW9yZGVyIGxpc3QuCi0gICAgICAgIGJvb2wgdmlzaWJpbGl0eUNoYW5nZWQgPSBtX3N0eWxlLT52
aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUudmlzaWJpbGl0eSgpCi0gICAgICAgICAgICB8fCBtX3N0
eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS56SW5kZXgoKQotICAgICAgICAgICAgfHwgbV9zdHls
ZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0eWxlLmhhc0F1dG9aSW5kZXgoKTsKKyAgICAgICAg
Ym9vbCB2aXNpYmlsaXR5Q2hhbmdlZCA9IG1fc3R5bGUudmlzaWJpbGl0eSgpICE9IG5ld1N0eWxl
LnZpc2liaWxpdHkoKQorICAgICAgICAgICAgfHwgbV9zdHlsZS56SW5kZXgoKSAhPSBuZXdTdHls
ZS56SW5kZXgoKQorICAgICAgICAgICAgfHwgbV9zdHlsZS5oYXNBdXRvWkluZGV4KCkgIT0gbmV3
U3R5bGUuaGFzQXV0b1pJbmRleCgpOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5zZXRB
bm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CkBAIC04MjcsNyArODI3LDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICB9CiAKICAgICAgICAgLy8g
S2VlcCBsYXllciBoaWVyYXJjaHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlzaWJp
bGl0eSBjaGFuZ2VzLgotICAgICAgICBpZiAobV9zdHlsZS0+dmlzaWJpbGl0eSgpICE9IG5ld1N0
eWxlLnZpc2liaWxpdHkoKSkgeworICAgICAgICBpZiAobV9zdHlsZS52aXNpYmlsaXR5KCkgIT0g
bmV3U3R5bGUudmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxh
eWVyID0gZW5jbG9zaW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZS52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPnNldEhh
c1Zpc2libGVDb250ZW50KCk7CkBAIC04MzksMTYgKzgzOSwxNyBAQCB2b2lkIFJlbmRlckVsZW1l
bnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLT5v
dXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoZGlmZikpKQor
ICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxl
Lm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkp
CiAgICAgICAgICAgICByZXBhaW50KCk7Ci0gICAgICAgIGlmIChpc0Zsb2F0aW5nKCkgJiYgKG1f
c3R5bGUtPmZsb2F0aW5nKCkgIT0gbmV3U3R5bGUuZmxvYXRpbmcoKSkpCisgICAgICAgIGlmIChp
c0Zsb2F0aW5nKCkgJiYgbV9zdHlsZS5mbG9hdGluZygpICE9IG5ld1N0eWxlLmZsb2F0aW5nKCkp
IHsKICAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIGZsb2F0IHN0eWxlcywgd2UgbmVlZCB0
byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBmcm9tIHRoZSBm
bG9hdGluZyBvYmplY3RzIGxpc3QuCiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3g+KCp0
aGlzKS5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2NrTGlzdHMoKTsKLSAg
ICAgICAgZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKG1fc3R5bGUtPnBvc2l0
aW9uKCkgIT0gbmV3U3R5bGUucG9zaXRpb24oKSkpCisgICAgICAgIH0gZWxzZSBpZiAoaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgbV9zdHlsZS5wb3NpdGlvbigpICE9IG5ld1N0eWxlLnBvc2l0
aW9uKCkpIHsKICAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIHBvc2l0aW9uaW5nIHN0eWxl
cywgd2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCiAgICAgICAgICAgICAv
LyBmcm9tIHRoZSBwb3NpdGlvbmVkIG9iamVjdHMgbGlzdC4KICAgICAgICAgICAgIGRvd25jYXN0
PFJlbmRlckJveD4oKnRoaXMpLnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxv
Y2tMaXN0cygpOworICAgICAgICB9CiAKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBp
c0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkKICAgICAgICAgICAgICYmICghbmV3U3R5
bGUuaXNGbG9hdGluZygpICYmICFuZXdTdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQpAQCAt
ODczLDcgKzg3NCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwK
ICAgICB9CiAKICAgICBib29sIG5ld1N0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMgPSBuZXdTdHls
ZS5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwotICAgIGJvb2wgb2xkU3R5bGVVc2VzRml4ZWRC
YWNrZ3JvdW5kcyA9IG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgYm9v
bCBvbGRTdHlsZVVzZXNGaXhlZEJhY2tncm91bmRzID0gbV9zdHlsZS5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpOwogICAgIGlmIChuZXdTdHlsZVVzZXNGaXhlZEJhY2tncm91bmRzIHx8IG9sZFN0
eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMpIHsKICAgICAgICAgYm9vbCByZXBhaW50Rml4ZWRCYWNr
Z3JvdW5kc09uU2Nyb2xsID0gIWZyYW1lKCkuc2V0dGluZ3MoKS5maXhlZEJhY2tncm91bmRzUGFp
bnRSZWxhdGl2ZVRvRG9jdW1lbnQoKTsKIApAQCAtODg1LDcgKzg4Niw3IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgICAgICAgICBpZiAobmV3U3R5
bGVTbG93U2Nyb2xsICYmIG5ld1N0eWxlLmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCiAg
ICAgICAgICAgICAgICAgICAgIG5ld1N0eWxlU2xvd1Njcm9sbCA9IGZhbHNlOwogCi0gICAgICAg
ICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAmJiBtX3N0eWxlLT5oYXNFbnRpcmVseUZp
eGVkQmFja2dyb3VuZCgpKQorICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwg
JiYgbV9zdHlsZS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICAgICAgICAg
ICAgICBvbGRTdHlsZVNsb3dTY3JvbGwgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtOTgwLDE0ICs5ODEsMTQgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5n
ZShTdHlsZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZm
ZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dCkg
ewotICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZCgqdGhpcywgb2xk
U3R5bGUsIG1fc3R5bGUuZ2V0KCkpOworICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0
eWxlQ2hhbmdlZCgqdGhpcywgb2xkU3R5bGUsICZtX3N0eWxlKTsKIAogICAgICAgICAvLyBJZiB0
aGUgb2JqZWN0IGFscmVhZHkgbmVlZHMgbGF5b3V0LCB0aGVuIHNldE5lZWRzTGF5b3V0IHdvbid0
IGRvCiAgICAgICAgIC8vIGFueSB3b3JrLiBCdXQgaWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaGFz
IGNoYW5nZWQsIHRoZW4gd2UgbWF5IG5lZWQKICAgICAgICAgLy8gdG8gbWFyayB0aGUgbmV3IGNv
bnRhaW5pbmcgYmxvY2tzIGZvciBsYXlvdXQuIFRoZSBjaGFuZ2UgdGhhdCBjYW4KICAgICAgICAg
Ly8gZGlyZWN0bHkgYWZmZWN0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoaXMgb2JqZWN0IGlz
IGEgY2hhbmdlIHRvCiAgICAgICAgIC8vIHRoZSBwb3NpdGlvbiBzdHlsZS4KLSAgICAgICAgaWYg
KG5lZWRzTGF5b3V0KCkgJiYgb2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbV9zdHlsZS0+cG9zaXRp
b24oKSkKKyAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkgJiYgb2xkU3R5bGUtPnBvc2l0aW9uKCkg
IT0gbV9zdHlsZS5wb3NpdGlvbigpKQogICAgICAgICAgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NG
b3JMYXlvdXQoKTsKIAogICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQp
CkBAIC0xMDU1LDcgKzEwNTYsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRG
cm9tVHJlCiAgICAgICAgIHJlbW92ZUxheWVycyhsYXllcik7CiAgICAgfQogCi0gICAgaWYgKG1f
c3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgJiYgIWZyYW1lKCkuc2V0dGluZ3MoKS5m
aXhlZEJhY2tncm91bmRzUGFpbnRSZWxhdGl2ZVRvRG9jdW1lbnQoKSkKKyAgICBpZiAobV9zdHls
ZS5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpICYmICFmcmFtZSgpLnNldHRpbmdzKCkuZml4ZWRC
YWNrZ3JvdW5kc1BhaW50UmVsYXRpdmVUb0RvY3VtZW50KCkpCiAgICAgICAgIHZpZXcoKS5mcmFt
ZVZpZXcoKS5yZW1vdmVTbG93UmVwYWludE9iamVjdCh0aGlzKTsKIAogICAgIGlmIChpc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTEgKzM2LDExIEBAIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVy
T2JqZWMKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7CiAKLSAgICBzdGF0
aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUZvcihFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVGb3IoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgYm9vbCBoYXNJbml0
aWFsaXplZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbml0aWFsaXplZFN0eWxlOyB9CiAK
LSAgICBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRl
clN0eWxlJj4oKm1fc3R5bGUpOyB9CisgICAgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJTdHlsZSY+KG1fc3R5bGUpOyB9CiAgICAgUmVuZGVyU3R5
bGUmIGZpcnN0TGluZVN0eWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIGluaXRpYWxpemVTdHlsZSgp
OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyB3aXRoIG1pbmltYWxT
dHlsZURpZmZlcmVuY2UgPiBTdHlsZURpZmZlcmVuY2VFcXVhbCBpbmRpY2F0ZXMgdGhhdAogICAg
IC8vIG91dC1vZi1iYW5kIHN0YXRlIChlLmcuIGFuaW1hdGlvbnMpIHJlcXVpcmVzIHRoYXQgc3R5
bGVEaWRDaGFuZ2UgcHJvY2Vzc2luZwogICAgIC8vIGNvbnRpbnVlIGV2ZW4gaWYgdGhlIHN0eWxl
IGlzbid0IGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IHN0eWxlLgotICAgIHZvaWQgc2V0U3R5
bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxT
dHlsZURpZmZlcmVuY2UgPSBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CisgICAgdm9pZCBzZXRTdHls
ZShSZW5kZXJTdHlsZSYmLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGlmZmVyZW5jZSA9
IFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIAogICAgIC8vIFRoZSBwc2V1ZG8gZWxlbWVudCBzdHls
ZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVkLiAgVXNlIHRoZSBjYWNoZWQgbWV0aG9kIGlmIHRo
ZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJlc3BlY3QKICAgICAvLyBhbnkgcHNldWRvIGNsYXNz
ZXMgKGFuZCB0aGVyZWZvcmUgaGFzIG5vIGNvbmNlcHQgb2YgY2hhbmdpbmcgc3RhdGUpLgpAQCAt
MTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFVwZGF0ZXMgb25seSB0aGUgbG9jYWwg
c3R5bGUgcHRyIG9mIHRoZSBvYmplY3QuIERvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhl
IG9iamVjdCwKICAgICAvLyBhbmQgc28gb25seSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0
eWxlIGlzIGtub3duIG5vdCB0byBoYXZlIGNoYW5nZWQgKG9yIGZyb20gc2V0U3R5bGUpLgotICAg
IHZvaWQgc2V0U3R5bGVJbnRlcm5hbChzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KSB7IG1fc3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsgfQorICAgIHZvaWQgc2V0U3R5bGVJbnRlcm5h
bChSZW5kZXJTdHlsZSYmIHN0eWxlKSB7IG1fc3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsgfQogCiAg
ICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFuZCBuZXcgYm91bmRzIGFyZSBk
aWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91bmRzIGFuZCBuZXdPdXRsaW5l
Qm94IGlmIHRoZXkgYXJlIGtub3duLgogICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVk
ZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRPdXRsaW5lQm94LCBj
b25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSBudWxscHRyLCBjb25zdCBMYXlvdXRSZWN0
KiBuZXdPdXRsaW5lQm94UHRyID0gbnVsbHB0cik7CkBAIC0yMjMsOCArMjIzLDggQEAgcHJvdGVj
dGVkOgogICAgIAogICAgIHR5cGVkZWYgdW5zaWduZWQgQmFzZVR5cGVGbGFnczsKIAotICAgIFJl
bmRlckVsZW1lbnQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VU
eXBlRmxhZ3MpOwotICAgIFJlbmRlckVsZW1lbnQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJFbGVtZW50KEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJFbGVtZW50KERvY3Vt
ZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKICAgICBib29sIGxheWVyQ3Jl
YXRpb25BbGxvd2VkRm9yU3VidHJlZSgpIGNvbnN0OwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgdXBkYXRlT3V0bGluZUF1dG9BbmNlc3Rvcihib29sIGhhc091dGxp
bmVBdXRvKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJFbGVtZW50KENvbnRhaW5lck5v
ZGUmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdz
KTsKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIG5vblBzZXVkb05v
ZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgPSBk
ZWxldGU7CkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1f
Zmlyc3RDaGlsZDsKICAgICBSZW5kZXJPYmplY3QqIG1fbGFzdENoaWxkOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOworICAgIFJlbmRlclN0eWxlIG1fc3R5bGU7
CiAKICAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGhhY2suCiAgICAgLy8gU3RvcmUgc3Rh
dGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0
IENvbG9yJiB1bmF2YWlsYWJsZVBsdWdpbkJvcgogICAgIHJldHVybiBzdGFuZGFyZDsKIH0KIAot
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVPd25lckVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJXaWRnZXQo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2lzUGx1Z2luVW5hdmFpbGFibGUoZmFs
c2UpCiAgICAgLCBtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkKGZhbHNlKQpA
QCAtMTExLDcgKzExMSw3IEBAIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp+UmVuZGVyRW1iZWRkZWRP
YmoKICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZSgq
dGhpcyk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbWJlZGRlZE9iamVjdD4gUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYgYXBwbGV0LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVk
T2JqZWN0PiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRF
bGVtZW50JiBhcHBsZXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXJl
ciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckVtYmVkZGVkT2JqZWN0PihhcHBsZXQsIFdURk1vdmUo
c3R5bGUpKTsKICAgICByZW5kZXJlci0+c2V0SW5saW5lKHRydWUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgY2xhc3MgVGV4dFJ1bjsKIC8vIEZv
ciBleGFtcGxlLCA8ZW1iZWQgc3JjPSJmb28uaHRtbCI+IGRvZXMgbm90IGludm9rZSBhIHBsdWct
aW4uCiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdCA6IHB1YmxpYyBSZW5kZXJXaWRnZXQgewog
cHVibGljOgotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0
KEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJl
bmRlckVtYmVkZGVkT2JqZWN0KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVtYmVk
ZGVkT2JqZWN0PiBjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVk
T2JqZWN0PiBjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKIAogICAgIGVudW0gUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gewogICAgICAgICBQbHVn
aW5NaXNzaW5nLApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyRmllbGRz
ZXQ6OlJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRz
ZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MRmllbGRTZXRFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJGaWVsZHNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVi
bGljOgotICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBlbnVtIEZpbmRMZWdlbmRPcHRpb24geyBJZ25v
cmVGbG9hdGluZ09yT3V0T2ZGbG93LCBJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdyB9OwogICAg
IFJlbmRlckJveCogZmluZExlZ2VuZChGaW5kTGVnZW5kT3B0aW9uID0gSWdub3JlRmxvYXRpbmdP
ck91dE9mRmxvdykgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgaW50IGRlZmF1bHRXaWR0aE51bUNoYXJz
ID0gMzg7CiAjZW5kaWYKIGNvbnN0IGludCBidXR0b25TaGFkb3dIZWlnaHQgPSAyOwogCi1SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxl
bWVudCYgaW5wdXQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVu
dCYgaW5wdXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coaW5w
dXQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jYW5SZWNlaXZlRHJvcHBlZEZpbGVzKGlucHV0
LmNhblJlY2VpdmVEcm9wcGVkRmlsZXMoKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVh
bCB+UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woKTsKIAogICAgIFN0cmluZyBidXR0b25WYWx1ZSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBS
ZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uIHsKIH07CiAKIAotUmVuZGVyRmxleGlibGVCb3g6
OlJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQog
ICAgICwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUoLTEpCkBAIC03NCw3ICs3
NCw3IEBAIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChFbGUKICAgICBzZXRD
aGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBiZSBibG9j
ay1sZXZlbC4KIH0KIAotUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0b3IoKnRoaXMpCiAgICAgLCBtX251bWJlck9mSW5G
bG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
OCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGbGV4aWJsZUJveChF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyRmxleGli
bGVCb3goRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJGbGV4aWJsZUJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyRmxleGli
bGVCb3goRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGbGV4
aWJsZUJveCgpOwogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bWVu
dCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJG
bG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX3ByZXZpb3VzUmVnaW9uQ291bnQoMCkKICAgICAsIG1fYXV0b0xvZ2ljYWxI
ZWlnaHRSZWdpb25zQ291bnQoMCkKQEAgLTY5LDE4ICs2OSwxOCBAQCBSZW5kZXJGbG93VGhyZWFk
OjpSZW5kZXJGbG93VGhyZWFkKERvY3VtCiAgICAgc2V0Rmxvd1RocmVhZFN0YXRlKEluc2lkZU91
dE9mRmxvd1RocmVhZCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
Rmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSkKK1JlbmRlclN0eWxlIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZShS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0
eWxlOjpjcmVhdGUoKTsKLSAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwot
ICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBuZXdTdHlsZS0+c2V0UG9zaXRp
b24oQWJzb2x1dGVQb3NpdGlvbik7Ci0gICAgbmV3U3R5bGUtPnNldFpJbmRleCgwKTsKLSAgICBu
ZXdTdHlsZS0+c2V0TGVmdChMZW5ndGgoMCwgRml4ZWQpKTsKLSAgICBuZXdTdHlsZS0+c2V0VG9w
KExlbmd0aCgwLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLCBQ
ZXJjZW50KSk7Ci0gICAgbmV3U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLCBQZXJjZW50KSk7
Ci0gICAgbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIpOworICAgIG5ld1N0
eWxlLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKKyAgICBuZXdTdHlsZS5zZXREaXNwbGF5KEJM
T0NLKTsKKyAgICBuZXdTdHlsZS5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKKyAgICBu
ZXdTdHlsZS5zZXRaSW5kZXgoMCk7CisgICAgbmV3U3R5bGUuc2V0TGVmdChMZW5ndGgoMCwgRml4
ZWQpKTsKKyAgICBuZXdTdHlsZS5zZXRUb3AoTGVuZ3RoKDAsIEZpeGVkKSk7CisgICAgbmV3U3R5
bGUuc2V0V2lkdGgoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOworICAgIG5ld1N0eWxlLnNldEhlaWdo
dChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUuZm9udENhc2NhZGUoKS51cGRh
dGUobnVsbHB0cik7CiAgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgZGVzY2Vu
ZGFudCBib3gncyBsYXlvdXQgaXMgZmluaXNoZWQgYW5kIGl0IGhhcyBiZWVuIHBvc2l0aW9uZWQg
d2l0aGluIGl0cyBjb250YWluZXIuCiAgICAgdmlydHVhbCB2b2lkIGZsb3dUaHJlYWREZXNjZW5k
YW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSB7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCkBAIC0y
NDAsNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJGbG93VGhyZWFk
KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRmxv
d1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgUmVuZGVyRmxvd1RocmVh
ZCogbG9jYXRlRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRmxvd1RocmVhZCo+KHRoaXMpOyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lOjpS
ZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiBmcmFtZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50
JiBmcmFtZSwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFzZShmcmFt
ZSwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRN
TEZyYW1lRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVuZGVy
RnJhbWVCYXNlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1l
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgSFRNTEZyYW1lRWxlbWVudCYgZnJhbWVF
bGVtZW50KCkgY29uc3Q7CiAgICAgRnJhbWVFZGdlSW5mbyBlZGdlSW5mbygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJh
c2UmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJG
cmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVCYXNlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBS
ZW5kZXJWaWV3OwogLy8gQmFzZSBjbGFzcyBmb3IgUmVuZGVyRnJhbWUgYW5kIFJlbmRlcklGcmFt
ZQogY2xhc3MgUmVuZGVyRnJhbWVCYXNlIDogcHVibGljIFJlbmRlcldpZGdldCB7CiBwcm90ZWN0
ZWQ6Ci0gICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNlJiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1l
bnRCYXNlJiwgUmVuZGVyU3R5bGUmJik7CiAKIHB1YmxpYzoKICAgICBGcmFtZVZpZXcqIGNoaWxk
VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oUmVuZGVyV2lkZ2V0Ojp3
aWRnZXQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJh
bWVTZXRFbGVtZW50JiBmcmFtZVNldCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiBm
cmFtZVNldCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmcmFtZVNldCwg
V1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2lzUmVzaXppbmcoZmFsc2UpCiAgICAgLCBtX2lz
Q2hpbGRSZXNpemluZyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBSZW5kZXJGcmFtZVNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewog
cHVibGljOgotICAgIFJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyRnJhbWVTZXQoKTsK
IAogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQmIGZyYW1lU2V0RWxlbWVudCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3Jl
ZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyIGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVy
KFJlbmRlckZ1bGxTY3JlZW4mIG93bmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorICAgIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcihSZW5kZXJGdWxsU2NyZWVuJiBv
d25lciwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJCbG9ja0Zsb3cob3du
ZXIuZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpCiAgICAgICAgICwgbV9vd25lcihvd25lcikg
CiAgICAgewpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRl
cjo6d2lsbEJlCiAgICAgUmVuZGVyQmxvY2tGbG93Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAot
UmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9jdW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGdWxsU2NyZWVuOjpSZW5k
ZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1f
cGxhY2Vob2xkZXIoMCkKIHsKQEAgLTc4LDI4ICs3OCwyOCBAQCB2b2lkIFJlbmRlckZ1bGxTY3Jl
ZW46OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyRmxleGlibGVCb3g6OndpbGxCZURlc3Ry
b3llZCgpOwogfQogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVG
dWxsU2NyZWVuU3R5bGUoKQorc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZ1bGxTY3JlZW5TdHls
ZSgpCiB7Ci0gICAgYXV0byBmdWxsc2NyZWVuU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlRGVm
YXVsdFN0eWxlKCk7CisgICAgYXV0byBmdWxsc2NyZWVuU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CiAKICAgICAvLyBDcmVhdGUgYSBzdGFja2luZyBjb250ZXh0OgotICAgIGZ1bGxzY3Jl
ZW5TdHlsZS0+c2V0WkluZGV4KElOVF9NQVgpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRaSW5k
ZXgoSU5UX01BWCk7CiAKLSAgICBmdWxsc2NyZWVuU3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbih7
IH0pOwotICAgIGZ1bGxzY3JlZW5TdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7
CisgICAgZnVsbHNjcmVlblN0eWxlLnNldEZvbnREZXNjcmlwdGlvbih7IH0pOworICAgIGZ1bGxz
Y3JlZW5TdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRyKTsKIAotICAgIGZ1bGxzY3Jl
ZW5TdHlsZS0+c2V0RGlzcGxheShGTEVYKTsKLSAgICBmdWxsc2NyZWVuU3R5bGUtPnNldEp1c3Rp
ZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uQ2VudGVyKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50ZXIpOwotICAgIGZ1
bGxzY3JlZW5TdHlsZS0+c2V0RmxleERpcmVjdGlvbihGbG93Q29sdW1uKTsKKyAgICBmdWxsc2Ny
ZWVuU3R5bGUuc2V0RGlzcGxheShGTEVYKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0SnVzdGlm
eUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb25DZW50ZXIpOworICAgIGZ1bGxzY3JlZW5T
dHlsZS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQ2VudGVyKTsKKyAgICBmdWxs
c2NyZWVuU3R5bGUuc2V0RmxleERpcmVjdGlvbihGbG93Q29sdW1uKTsKICAgICAKLSAgICBmdWxs
c2NyZWVuU3R5bGUtPnNldFBvc2l0aW9uKEZpeGVkUG9zaXRpb24pOwotICAgIGZ1bGxzY3JlZW5T
dHlsZS0+c2V0V2lkdGgoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7Ci0gICAgZnVsbHNjcmVlblN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7Ci0gICAgZnVsbHNjcmVlblN0
eWxlLT5zZXRMZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOwotICAgIGZ1bGxzY3JlZW5T
dHlsZS0+c2V0VG9wKExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOworICAgIGZ1bGxzY3JlZW5T
dHlsZS5zZXRQb3NpdGlvbihGaXhlZFBvc2l0aW9uKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0
V2lkdGgoTGVuZ3RoKDEwMC4wLCBQZXJjZW50KSk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldEhl
aWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0TGVm
dChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0VG9w
KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgIAotICAgIGZ1bGxzY3JlZW5TdHlsZS0+
c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFjayk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNl
dEJhY2tncm91bmRDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5T
dHlsZTsKIH0KQEAgLTE5MywxMSArMTkzLDExIEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6Y3Jl
YXRlUGxhY2Vob2xkZXIKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoZnJhbWVSZWN0
LmhlaWdodCgpLCBGaXhlZCkpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAg
bV9wbGFjZWhvbGRlci0+c2V0U3R5bGUoV1RGTW92ZShzdHlsZSkpOworICAgICAgICBtX3BsYWNl
aG9sZGVyLT5zZXRTdHlsZShXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9wbGFjZWhvbGRlciA9IG5ldyBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIo
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKKyAgICBtX3BsYWNlaG9sZGVyID0gbmV3IFJlbmRlckZ1
bGxTY3JlZW5QbGFjZWhvbGRlcigqdGhpcywgV1RGTW92ZSgqc3R5bGUpKTsKICAgICBtX3BsYWNl
aG9sZGVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBpZiAocGFyZW50KCkpIHsKICAgICAgICAg
cGFyZW50KCktPmFkZENoaWxkKG1fcGxhY2Vob2xkZXIsIHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVy
RnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyRnVsbFNjcmVlbiI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZQogICAgICAgICBmcmVlU3BhY2VGb3JSb3dz
ID0gZnJlZVNwYWNlOwogfQogCi1SZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJHcmlkOjpSZW5k
ZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRv
cigqdGhpcykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBlbnVtIEdyaWRBeGlzUG9zaXRpb24ge0dy
aWRBeGlzU3RhcnQsIEdyCiAKIGNsYXNzIFJlbmRlckdyaWQgZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlckdyaWQoKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRN
TENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJIVE1MQ2FudmFz
OjpSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySFRNTENhbnZhczo6UmVuZGVySFRNTENh
bnZhcyhIVE1MQ2FudmFzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBlbGVtZW50LnNpemUo
KSkKIHsKICAgICAvLyBBY3R1YWwgc2l6ZSBpcyBub3Qga25vd24geWV0LCByZXBvcnQgdGhlIGRl
ZmF1bHQgaW50cmluc2ljIHNpemUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySFRNTENhbnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckhUTUxDYW52YXMgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRlckhUTUxDYW52
YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAK
ICAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogICAgIAotUmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUoSFRNTElG
cmFtZUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFzZShlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJW
aWV3OwogCiBjbGFzcyBSZW5kZXJJRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNl
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIEhUTUxJRnJhbWVFbGVtZW50JiBpZnJhbWVFbGVt
ZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cygKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0
IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBs
YWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJl
c291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVz
b3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dChmYWxzZSkKQEAgLTEz
NSw3ICsxMzUsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVuCiAg
ICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwogfQogCi1SZW5kZXJJbWFnZTo6UmVuZGVySW1h
Z2UoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQorUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFn
ZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6
ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9y
QWx0VGV4dChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBlbnVtIEltYWdlU2l6ZUNoYW5n
ZVR5cGUgewogCiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVySW1hZ2UoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgPSAxLjBmKTsKLSAgICBS
ZW5kZXJJbWFnZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFN0eWxl
SW1hZ2UqID0gbnVsbHB0cik7CisgICAgUmVuZGVySW1hZ2UoRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYsIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgPSAxLjBmKTsKKyAgICBSZW5k
ZXJJbWFnZShEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFN0eWxlSW1hZ2UqID0gbnVsbHB0cik7
CiAgICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKIAogICAgIFJlbmRlckltYWdlUmVzb3VyY2Um
IGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDEzICs1MiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlcklu
bGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxl
bWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlcklubGluZUZsYWcpCiB7CiAgICAgc2V0Q2hpbGRy
ZW5JbmxpbmUodHJ1ZSk7CiB9CiAKLVJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcklu
bGluZTo6UmVuZGVySW5saW5lKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
UmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKQEAgLTE1
OCw4ICsxNTgsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZU9mQW5vbnltb3VzQmxvY2tDCiAg
ICAgICAgIFJlbmRlcklubGluZSogY29udGludWF0aW9uID0gYmxvY2suaW5saW5lRWxlbWVudENv
bnRpbnVhdGlvbigpOwogICAgICAgICBpZiAob2xkU3R5bGUtPmhhc0luRmxvd1Bvc2l0aW9uKCkg
JiYgaW5GbG93UG9zaXRpb25lZElubGluZUFuY2VzdG9yKGNvbnRpbnVhdGlvbikpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJmJsb2NrLnN0eWxlKCksIEJMT0NLKTsKLSAg
ICAgICAgYmxvY2tTdHlsZS0+c2V0UG9zaXRpb24obmV3U3R5bGUtPnBvc2l0aW9uKCkpOworICAg
ICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShibG9jay5zdHlsZSgpLCBCTE9DSyk7CisgICAgICAgIGJsb2NrU3R5bGUuc2V0
UG9zaXRpb24obmV3U3R5bGUtPnBvc2l0aW9uKCkpOwogICAgICAgICBibG9jay5zZXRTdHlsZShX
VEZNb3ZlKGJsb2NrU3R5bGUpKTsKICAgICB9CiB9CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogICAgICAgICBmb3IgKFJlbmRlcklu
bGluZSogY3VyckNvbnQgPSBjb250aW51YXRpb247IGN1cnJDb250OyBjdXJyQ29udCA9IGN1cnJD
b250LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpIHsKICAgICAgICAgICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBuZXh0Q29udCA9IGN1cnJDb250LT5jb250aW51YXRpb24oKTsKICAgICAg
ICAgICAgIGN1cnJDb250LT5zZXRDb250aW51YXRpb24obnVsbHB0cik7Ci0gICAgICAgICAgICBj
dXJyQ29udC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKCZuZXdTdHlsZSkpOworICAgICAg
ICAgICAgY3VyckNvbnQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShuZXdTdHlsZSkpOwog
ICAgICAgICAgICAgY3VyckNvbnQtPnNldENvbnRpbnVhdGlvbihuZXh0Q29udCk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gSWYgYW4gaW5saW5lJ3MgaW4tZmxvdyBwb3NpdGlvbmluZyBoYXMgY2hh
bmdlZCBhbmQgaXQgaXMgcGFydCBvZiBhbiBhY3RpdmUgY29udGludWF0aW9uIGFzIGEgZGVzY2Vu
ZGFudCBvZiBhbiBhbm9ueW1vdXMgY29udGFpbmluZyBibG9jaywKQEAgLTMzMSwxMiArMzMxLDEy
IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKICAgICAgICAgLy8g
aW5saW5lIGludG8gY29udGludWF0aW9ucy4gIFRoaXMgaW52b2x2ZXMgY3JlYXRpbmcgYW4gYW5v
bnltb3VzIGJsb2NrIGJveCB0byBob2xkCiAgICAgICAgIC8vIHxuZXdDaGlsZHwuICBXZSB0aGVu
IG1ha2UgdGhhdCBibG9jayBib3ggYSBjb250aW51YXRpb24gb2YgdGhpcyBpbmxpbmUuICBXZSB0
YWtlIGFsbCBvZgogICAgICAgICAvLyB0aGUgY2hpbGRyZW4gYWZ0ZXIgfGJlZm9yZUNoaWxkfCBh
bmQgcHV0IHRoZW0gaW4gYSBjbG9uZSBvZiB0aGlzIG9iamVjdC4KLSAgICAgICAgYXV0byBuZXdT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHls
ZSgpLCBCTE9DSyk7CisgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSyk7CiAgICAgICAgIAogICAg
ICAgICAvLyBJZiBpbnNpZGUgYW4gaW5saW5lIGFmZmVjdGVkIGJ5IGluLWZsb3cgcG9zaXRpb25p
bmcgdGhlIGJsb2NrIG5lZWRzIHRvIGJlIGFmZmVjdGVkIGJ5IGl0IHRvby4KICAgICAgICAgLy8g
R2l2aW5nIHRoZSBibG9jayBhIGxheWVyIGxpa2UgdGhpcyBhbGxvd3MgaXQgdG8gY29sbGVjdCB0
aGUgeC95IG9mZnNldHMgZnJvbSBpbmxpbmUgcGFyZW50cyBsYXRlci4KICAgICAgICAgaWYgKGF1
dG8gcG9zaXRpb25lZEFuY2VzdG9yID0gaW5GbG93UG9zaXRpb25lZElubGluZUFuY2VzdG9yKHRo
aXMpKQotICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKHBvc2l0aW9uZWRBbmNlc3Rv
ci0+c3R5bGUoKS5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgIG5ld1N0eWxlLnNldFBvc2l0aW9u
KHBvc2l0aW9uZWRBbmNlc3Rvci0+c3R5bGUoKS5wb3NpdGlvbigpKTsKIAogICAgICAgICBSZW5k
ZXJCbG9jayogbmV3Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBXVEZNb3Zl
KG5ld1N0eWxlKSk7CiAgICAgICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxlKCk7CkBAIC0zOTcs
NyArMzk3LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogIAog
ICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
IHsKICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBubyBzdWl0YWJsZSBleGlzdGluZyBhbm9ueW1v
dXMgaW5saW5lLWJsb2NrLiBDcmVhdGUgYSBuZXcgb25lLgotICAgICAgICAgICAgUmVuZGVyQmxv
Y2tGbG93KiBhbm9ueW1vdXNJbmxpbmVCbG9jayA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxl
KCksIElOTElORV9CTE9DSykpOworICAgICAgICAgICAgUmVuZGVyQmxvY2tGbG93KiBhbm9ueW1v
dXNJbmxpbmVCbG9jayA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgSU5MSU5FX0JMT0NL
KSk7CiAgICAgICAgICAgICBhbm9ueW1vdXNJbmxpbmVCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7
CiAgICAgCiAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRkQ2hpbGQoYW5vbnlt
b3VzSW5saW5lQmxvY2ssIGJlZm9yZUNoaWxkKTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAKIFJlbmRlclB0cjxSZW5kZXJJbmxp
bmU+IFJlbmRlcklubGluZTo6Y2xvbmUoKSBjb25zdAogewotICAgIFJlbmRlclB0cjxSZW5kZXJJ
bmxpbmU+IGNsb25lSW5saW5lID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPigqZWxlbWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0eWxlKCkpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
SW5saW5lPiBjbG9uZUlubGluZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4oKmVsZW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKCkpKTsKICAgICBjbG9uZUlubGluZS0+aW5p
dGlhbGl6ZVN0eWxlKCk7CiAgICAgY2xvbmVJbmxpbmUtPnNldEZsb3dUaHJlYWRTdGF0ZShmbG93
VGhyZWFkU3RhdGUoKSk7CiAgICAgY2xvbmVJbmxpbmUtPnNldEhhc091dGxpbmVBdXRvQW5jZXN0
b3IoaGFzT3V0bGluZUF1dG9BbmNlc3RvcigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBj
bGFzcyBSZW5kZXJSZWdpb247CiAKIGNsYXNzIFJlbmRlcklubGluZSA6IHB1YmxpYyBSZW5kZXJC
b3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW5saW5lKEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJbmxpbmUoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlcklubGluZShEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc5Nywx
MSArNjc5NywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsCiAg
ICAgfQogCiAgICAgaWYgKCFtX3Njcm9sbENvcm5lcikgewotICAgICAgICBtX3Njcm9sbENvcm5l
ciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1l
bnQoKSwgV1RGTW92ZShjb3JuZXIpKTsKKyAgICAgICAgbV9zY3JvbGxDb3JuZXIgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0PihyZW5kZXJlcigpLmRvY3VtZW50KCksIFdURk1v
dmUoKmNvcm5lcikpOwogICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0UGFyZW50KCZyZW5kZXJl
cigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIH0g
ZWxzZQotICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92ZShjb3JuZXIpKTsK
KyAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxlKFdURk1vdmUoKmNvcm5lcikpOwogfQog
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZXNpemVyU3R5bGUoKQpAQCAtNjgxNSwxMSArNjgx
NSwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZXNpemVyU3R5bGUoKQogICAgIH0KIAog
ICAgIGlmICghbV9yZXNpemVyKSB7Ci0gICAgICAgIG1fcmVzaXplciA9IGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgV1RGTW92ZShyZXNp
emVyKSk7CisgICAgICAgIG1fcmVzaXplciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJh
clBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgV1RGTW92ZSgqcmVzaXplcikpOwogICAgICAg
ICBtX3Jlc2l6ZXItPnNldFBhcmVudCgmcmVuZGVyZXIoKSk7CiAgICAgICAgIG1fcmVzaXplci0+
aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcmVzaXplci0+c2V0U3R5
bGUoV1RGTW92ZShyZXNpemVyKSk7CisgICAgICAgIG1fcmVzaXplci0+c2V0U3R5bGUoV1RGTW92
ZSgqcmVzaXplcikpOwogfQogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnJlZmxlY3Rpb25M
YXllcigpIGNvbnN0CkBAIC02ODQ0LDEwICs2ODQ0LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJl
bW92ZVJlZmxlY3Rpb24oKQogICAgIG1fcmVmbGVjdGlvbiA9IG51bGxwdHI7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVJlZmxlY3Rpb25TdHls
ZSgpCitSZW5kZXJTdHlsZSBSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlvblN0eWxlKCkKIHsK
ICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIG5ld1N0eWxl
LT5pbmhlcml0RnJvbSgmcmVuZGVyZXIoKS5zdHlsZSgpKTsKKyAgICBuZXdTdHlsZS5pbmhlcml0
RnJvbSgmcmVuZGVyZXIoKS5zdHlsZSgpKTsKICAgICAKICAgICAvLyBNYXAgaW4gb3VyIHRyYW5z
Zm9ybS4KICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9ybTsKQEAgLTY4NzMsMTAgKzY4
NzMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJMYXllcgogICAgICAg
ICAgICAgdHJhbnNmb3JtLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+b2Zmc2V0KCks
IExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbmV3U3R5bGUtPnNldFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOworICAgIG5ld1N0eWxlLnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogCiAgICAgLy8gTWFw
IGluIG91ciBtYXNrLgotICAgIG5ld1N0eWxlLT5zZXRNYXNrQm94SW1hZ2UocmVuZGVyZXIoKS5z
dHlsZSgpLmJveFJlZmxlY3QoKS0+bWFzaygpKTsKKyAgICBuZXdTdHlsZS5zZXRNYXNrQm94SW1h
Z2UocmVuZGVyZXIoKS5zdHlsZSgpLmJveFJlZmxlY3QoKS0+bWFzaygpKTsKIAogICAgIHJldHVy
biBuZXdTdHlsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDcgKzkyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjcmVhdGVSZWZsZWN0aW9uKCk7CiAgICAgdm9pZCByZW1vdmVSZWZsZWN0aW9uKCk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpOwor
ICAgIFJlbmRlclN0eWxlIGNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpOwogICAgIGJvb2wgcGFpbnRp
bmdJbnNpZGVSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWludGluZ0luc2lkZVJlZmxl
Y3Rpb247IH0KICAgICB2b2lkIHNldFBhaW50aW5nSW5zaWRlUmVmbGVjdGlvbihib29sIGIpIHsg
bV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24gPSBiOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIGJvb2wgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6c19oYWRMYXllciAKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c19s
YXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOwogCi1SZW5kZXJMYXllck1vZGVsT2JqZWN0OjpS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRlckxh
eWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDog
UmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJl
bmRlckxheWVyTW9kZWxPYmplY3RGbGFnKQogewogfQogCi1SZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykK
ICAgICA6IFJlbmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZs
YWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOwotICAgIFJl
bmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKICAgICB2b2lk
IGNyZWF0ZUxheWVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QCBzdGF0aWMgdm9pZCBlbnN1cmVMaW5lQm94ZXMoY29uc3QgUmVuZGVyCiAgICAgZG93bmNhc3Q8
UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLmVuc3VyZUxpbmVCb3hlcygpOwog
fQogCi1SZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckxpbmVCcmVhazo6
UmVuZGVyTGluZUJyZWFrKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDAp
CiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIobnVsbHB0cikKICAgICAsIG1fY2FjaGVkTGluZUhl
aWdodChpbnZhbGlkTGluZUhlaWdodCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QCBjbGFzcyBQb3NpdGlvbjsKIAogY2xhc3MgUmVuZGVyTGluZUJyZWFrIGZpbmFsIDogcHVibGlj
IFJlbmRlckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaW5lQnJlYWsoSFRN
TEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaW5l
QnJlYWsoSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJM
aW5lQnJlYWsoKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtlZXAgcmVuZGVyIHRy
ZWUgZHVtcCBiYXNlZCB0ZXN0IHJlc3VsdHMgdW5jaGFuZ2VkLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw3ICs4Myw3IEBAIGNvbnN0IGludCBkZWZhdWx0U2l6ZSA9IDQ7CiAvLyB3aWRnZXQsIGJ1
dCBJJ20gbm90IHN1cmUgdGhpcyBpcyByaWdodCBmb3IgdGhlIG5ldyBjb250cm9sLgogY29uc3Qg
aW50IGJhc2VsaW5lQWRqdXN0bWVudCA9IDc7CiAKLVJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RC
b3goSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9vcHRpb25zQ2hhbmdlZCh0cnVlKQogICAg
ICwgbV9zY3JvbGxUb1JldmVhbFNlbGVjdGlvbkFmdGVyTGF5b3V0KGZhbHNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogCiBjbGFzcyBSZW5k
ZXJMaXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNjcm9sbGFi
bGVBcmVhIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlzdEJveChIVE1MU2Vs
ZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxpc3RCb3go
KTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0
ZW0oRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0SXRlbShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9tYXJrZXIobnVsbHB0cikKICAgICAsIG1faGFzRXhwbGljaXRWYWx1ZShm
YWxzZSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6c3R5bGVEaWRDaGFu
Z2UoU3R5bAogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAg
Ly8gVGhlIG1hcmtlciBhbHdheXMgaW5oZXJpdHMgZnJvbSB0aGUgbGlzdCBpdGVtLCByZWdhcmRs
ZXNzIG9mIHdoZXJlIGl0IG1pZ2h0IGVuZAogICAgIC8vIHVwIChlLmcuLCBpbiBzb21lIGRlZXBs
eSBuZXN0ZWQgbGluZSBib3gpLiBTZWUgQ1NTMyBzcGVjLgotICAgIG5ld1N0eWxlLT5pbmhlcml0
RnJvbSgmc3R5bGUoKSk7CisgICAgbmV3U3R5bGUuaW5oZXJpdEZyb20oJnN0eWxlKCkpOwogICAg
IGlmICghbV9tYXJrZXIpIHsKICAgICAgICAgbV9tYXJrZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJMaXN0TWFya2VyPigqdGhpcywgV1RGTW92ZShuZXdTdHlsZSkpLmxlYWtQdHIoKTsKICAgICAg
ICAgbV9tYXJrZXItPmluaXRpYWxpemVTdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJrZXI7CiAKIGNsYXNzIFJlbmRlckxpc3RJdGVtIGZp
bmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdEl0
ZW0oRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxp
c3RJdGVtKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaXN0
SXRlbSgpOwogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxF
bGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTExNyw3ICsxMTE3LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5
bGVUeXBlIHR5cAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlbmRlckxp
c3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVy
TGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlzdEl0ZW0sIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCb3gobGlzdEl0ZW0uZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSksIDAp
CiAgICAgLCBtX2xpc3RJdGVtKGxpc3RJdGVtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSwgaW4KIC8v
IFRoZSBSZW5kZXJMaXN0TWFya2VyIGFsd2F5cyBoYXMgdG8gYmUgYSBjaGlsZCBvZiBhIFJlbmRl
ckxpc3RJdGVtLgogY2xhc3MgUmVuZGVyTGlzdE1hcmtlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
b3ggewogcHVibGljOgotICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxp
c3RJdGVtJiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdE1hcmtlcigp
OwogCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJJbWFnZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRIYXNTaGFkb3dDb250
cm9scyh0cnVlKTsKIH0KIAotUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IElu
dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlh
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgaW50
cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogICAgIHNldEludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNZWRpYSA6IHB1YmxpYyBS
ZW5kZXJJbWFnZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1lZGlhKEhUTUxNZWRp
YUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBJbnRTaXplJiBp
bnRyaW5zaWNTaXplKTsKKyAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpOwogICAgIHZpcnR1YWwgflJlbmRlck1l
ZGlhKCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtNTksNyArNTksNyBA
QCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpsCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxl
Qm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtODEsNyArODEsNyBAQCB2b2lk
IFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyCiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAKLVJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29u
dGFpbmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5k
ZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4
aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXIoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50IGZpbmFsIDog
cHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgc2l6ZV90IHNlbGVjdGVkT3B0aW9uQ291
bnQoY29uc3QgCiB9CiAjZW5kaWYKIAotUmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEhU
TUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQobnVsbHB0cikKICAgICAs
IG1faW5uZXJCbG9jayhudWxscHRyKQpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVuZGVyTWVu
dUxpc3Q6OnNldFRleHRGcm9tT3B0aW9uKGkKICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAg
ICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpOwotICAgICAg
ICAgICAgbV9vcHRpb25TdHlsZSA9IHN0eWxlID8gUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKSA6
IG51bGxwdHI7CisgICAgICAgICAgICBtX29wdGlvblN0eWxlID0gc3R5bGUgPyBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKnN0eWxlKSA6IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgUmVuZGVy
TWVudUxpc3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gsIHByaXZhdGUgUG9wdXBN
ZW51Q2xpZW50IHsKIAogcHVibGljOgotICAgIFJlbmRlck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWVudUxpc3Qo
SFRNTFNlbGVjdEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJN
ZW51TGlzdCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVsZW1lbnQoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcihIVE1M
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlck1ldGVyOjpSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MTWV0ZXJFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJNZXRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGlj
OgotICAgIFJlbmRlck1ldGVyKEhUTUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJNZXRlcigpOwogCiAgICAgSFRNTE1ldGVyRWxlbWVudCogbWV0ZXJF
bGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBib29sIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Z1NoaWZ0aW5nU3Bhbm5lciA9IGZh
bHNlOwogCi1SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbGFzdFNl
dFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCkBAIC0zMzgsNyArMzM4
LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYQogICAgIC8vIE5l
ZWQgdG8gY3JlYXRlIGEgbmV3IGNvbHVtbiBzZXQgd2hlbiB0aGVyZSdzIG5vIHNldCBhbHJlYWR5
IGNyZWF0ZWQuIFdlIGFsc28gYWx3YXlzIGluc2VydAogICAgIC8vIGFub3RoZXIgY29sdW1uIHNl
dCBhZnRlciBhIHNwYW5uZXIuIEV2ZW4gaWYgaXQgdHVybnMgb3V0IHRoYXQgdGhlcmUgYXJlIG5v
IHJlbmRlcmVycwogICAgIC8vIGZvbGxvd2luZyB0aGUgc3Bhbm5lciwgdGhlcmUgbWF5IGJlIGJv
dHRvbSBtYXJnaW5zIHRoZXJlLCB3aGljaCB0YWtlIHVwIHNwYWNlLgotICAgIFJlbmRlck11bHRp
Q29sdW1uU2V0KiBuZXdTZXQgPSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TZXQoKnRoaXMsIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZtdWx0aWNvbENvbnRhaW5l
ci0+c3R5bGUoKSwgQkxPQ0spKTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNldCogbmV3U2V0ID0g
bmV3IFJlbmRlck11bHRpQ29sdW1uU2V0KCp0aGlzLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShtdWx0aWNvbENvbnRhaW5lci0+c3R5bGUoKSwgQkxPQ0spKTsK
ICAgICBuZXdTZXQtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIG11bHRpY29sQ29udGFpbmVyLT5S
ZW5kZXJCbG9jazo6YWRkQ2hpbGQobmV3U2V0LCBpbnNlcnRCZWZvcmVNdWx0aWNvbENoaWxkKTsK
ICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFJlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGUKIAogY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhy
ZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQgewogcHVibGljOgotICAgIFJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRl
clN0eWxlJiYpOwogICAgIH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAogICAgIFJl
bmRlckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dU
aHJlYWQmIGZsb3dUaHJlYWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVh
ZCYgZmxvd1RocmVhZCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclJlZ2lvblNl
dChmbG93VGhyZWFkLmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCBmbG93VGhyZWFkKQogICAg
ICwgbV9jb21wdXRlZENvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbXB1dGVkQ29sdW1uV2lkdGgo
MCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNldC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBjb21lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNwYW4uCiBjbGFz
cyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb25TZXQgewog
cHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNldChSZW5k
ZXJGbG93VGhyZWFkJiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJCbG9ja0Zsb3cqIG11
bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PihwYXJlbnQoKSk7IH0KICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIG11bHRp
Q29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZCo+KGZsb3dUaHJlYWQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyOjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93
VGhyZWFkLCBSZW5kZXJCb3gqIHNwYW5uZXIsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBCTE9DSykpOwotICAg
IG5ld1N0eWxlLT5zZXRDbGVhcihDQk9USCk7IC8vIFdlIGRvbid0IHdhbnQgZmxvYXRzIGluIHRo
ZSByb3cgcHJlY2VkaW5nIHRoZSBzcGFubmVyIHRvIGNvbnRpbnVlIG9uIHRoZSBvdGhlciBzaWRl
LgorICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheSgqcGFyZW50U3R5bGUsIEJMT0NLKTsKKyAgICBuZXdTdHlsZS5zZXRDbGVhcihD
Qk9USCk7IC8vIFdlIGRvbid0IHdhbnQgZmxvYXRzIGluIHRoZSByb3cgcHJlY2VkaW5nIHRoZSBz
cGFubmVyIHRvIGNvbnRpbnVlIG9uIHRoZSBvdGhlciBzaWRlLgogICAgIGF1dG8gcGxhY2Vob2xk
ZXIgPSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoZmxvd1RocmVhZCwg
c3Bhbm5lciwgV1RGTW92ZShuZXdTdHlsZSkpOwogICAgIHBsYWNlaG9sZGVyLT5pbml0aWFsaXpl
U3R5bGUoKTsKICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiB9CiAKLVJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRlckJveCogc3Bhbm5l
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRlckJveCogc3Bhbm5l
ciwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmbG93VGhyZWFkLT5kb2N1
bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogICAgICwg
bV9zcGFubmVyKHNwYW5uZXIpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFk
OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94KiBzcGFubmVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gqIHNwYW5uZXIs
IFJlbmRlclN0eWxlJiYpOwogICAgIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyUmVnaW9uKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgbnVsbHB0cikKICAgICAsIG1f
aGFzQ3VzdG9tUmVnaW9uU3R5bGUoZmFsc2UpCiAgICAgLCBtX2hhc0F1dG9Mb2dpY2FsSGVpZ2h0
KGZhbHNlKQpAQCAtNTcsMTMgKzU3LDEzIEBAIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojp+UmVu
ZGVyTmFtZWRGbG8KIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNyZWF0ZVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIHN0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudFN0eWxlLCBCTE9D
Syk7CisgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudFN0eWxlLCBCTE9DSyk7CiAKLSAgICBzdHlsZS0+c2V0Rmxvd1RocmVh
ZChwYXJlbnRTdHlsZS5mbG93VGhyZWFkKCkpOwotICAgIHN0eWxlLT5zZXRSZWdpb25UaHJlYWQo
cGFyZW50U3R5bGUucmVnaW9uVGhyZWFkKCkpOwotICAgIHN0eWxlLT5zZXRSZWdpb25GcmFnbWVu
dChwYXJlbnRTdHlsZS5yZWdpb25GcmFnbWVudCgpKTsKKyAgICBzdHlsZS5zZXRGbG93VGhyZWFk
KHBhcmVudFN0eWxlLmZsb3dUaHJlYWQoKSk7CisgICAgc3R5bGUuc2V0UmVnaW9uVGhyZWFkKHBh
cmVudFN0eWxlLnJlZ2lvblRocmVhZCgpKTsKKyAgICBzdHlsZS5zZXRSZWdpb25GcmFnbWVudChw
YXJlbnRTdHlsZS5yZWdpb25GcmFnbWVudCgpKTsKIAogICAgIHJldHVybiBzdHlsZTsKIH0KQEAg
LTM2NiwxMyArMzY2LDEzIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVD
aGkKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjaGlsZFN0eWxlSW5SZWdp
b247CiAgICAgICAgIGJvb2wgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSBmYWxzZTsKICAgICAg
ICAgaWYgKGl0ICE9IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAg
ICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZShpdC0+dmFsdWUuc3R5
bGUuZ2V0KCkpOworICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6
OmNsb25lUHRyKCppdC0+dmFsdWUuc3R5bGUpOwogICAgICAgICAgICAgb2JqZWN0UmVnaW9uU3R5
bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNoaWxk
LmlzQW5vbnltb3VzKCkgfHwgY2hpbGQuaXNJbkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpCi0gICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoJnJlbmRlcmVyLnN0eWxlKCksIGNoaWxkLnN0eWxlKCkuZGlz
cGxheSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSAgc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTdHlsZT4oUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocmVuZGVyZXIuc3R5bGUoKSwgY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkpKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkKSkKLSAgICAgICAgICAgICAg
ICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJlbmRlcmVyLnN0eWxl
KCkpOworICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpj
bG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbihkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihjaGlsZCksIHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICB9CkBAIC0z
ODgsOSArMzg4LDkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0T2JqZWN0Uwog
ewogICAgIEFTU0VSVChvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y2xvbmUoJm9iamVjdC0+c3R5bGUoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKG9i
amVjdC0+c3R5bGUoKSk7CiAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQotICAg
ICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdU
Rk1vdmUoc3R5bGVJblJlZ2lvbikpOworICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
b2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoKnN0eWxlSW5SZWdpb24pKTsKIAogICAg
IGlmIChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKm9iamVjdCkgJiYgIW9iamVjdC0+aGFzQm94
RGVjb3JhdGlvbnMoKSkgewogICAgICAgICBib29sIGhhc0JveERlY29yYXRpb25zID0gaXM8UmVu
ZGVyVGFibGVDZWxsPigqb2JqZWN0KQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk8KICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0
eWxlQ2FjaGVkID0gZmFsc2U7CiAgICAgICAgIGlmIChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lv
blN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBvYmplY3RTdHlsZUluUmVnaW9uID0gUmVuZGVy
U3R5bGU6OmNsb25lKGl0LT52YWx1ZS5zdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBvYmplY3RT
dHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCppdC0+dmFsdWUuc3R5bGUpOwog
ICAgICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5jYWNoZWQpOwogICAgICAgICAgICAgb2JqZWN0
UmVnaW9uU3R5bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAgLTQ2Myw4ICs0NjMs
OCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnCiAgICAgUmVuZGVy
T2JqZWN0UmVnaW9uU3R5bGVNYXAgdGVtcDsKICAgICBmb3IgKGF1dG8mIG9iamVjdFBhaXIgOiBt
X3JlbmRlck9iamVjdFJlZ2lvblN0eWxlKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0
ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihvYmplY3RQYWlyLmtleSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y2xvbmUoJm9iamVjdC0+c3R5bGUoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShvYmplY3RQ
YWlyLnZhbHVlLnN0eWxlLmdldCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBvYmplY3RSZWdpb25TdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihvYmplY3QtPnN0
eWxlKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdp
bmFsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm9iamVjdFBhaXIudmFsdWUuc3R5bGUp
OwogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSA9IG9iamVjdFBhaXIudmFs
dWUuY2FjaGVkOwogICAgICAgICBpZiAoIXNob3VsZENhY2hlUmVnaW9uU3R5bGUpIHsKQEAgLTQ4
MSw3ICs0ODEsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnCiAg
ICAgICAgICAgICB0ZW1wLnNldChvYmplY3QsIFdURk1vdmUoc3R5bGVJbmZvKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQotICAgICAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbChXVEZNb3Zl
KG9iamVjdE9yaWdpbmFsU3R5bGUpKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZSgqb2JqZWN0T3JpZ2luYWxTdHls
ZSkpOwogICAgIH0KIAogICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuc3dhcCh0ZW1wKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEw
IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb24gewogcHVibGljOgotICAgIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlKTsKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxv
d1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRGbG93KQorUmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBSZWY8V2ViS2l0TmFtZWRGbG93PiYmIG5hbWVkRmxvdykKICAgICA6IFJl
bmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9oYXNSZWdp
b25zV2l0aFN0eWxpbmcoZmFsc2UpCiAgICAgLCBtX2Rpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5n
ZUV2ZW50KGZhbHNlKQpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6dXBkYXRlV3JpdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBmaXJzdCByZWdp
b24gZGVmaW5lcyB0aGUgcHJpbmNpcGFsIHdyaXRpbmcgbW9kZSBmb3IgdGhlIGVudGlyZSBmbG93
LgotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnN0eWxlKCkpOwotICAg
IG5ld1N0eWxlLT5zZXRXcml0aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHlsZSgpLndyaXRpbmdN
b2RlKCkpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUoKSk7
CisgICAgbmV3U3R5bGUuc2V0V3JpdGluZ01vZGUoZmlyc3RGcmFnbWVudC0+c3R5bGUoKS53cml0
aW5nTW9kZSgpKTsKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIExp
c3RIYXNoU2V0PEVsZW1lbnQqPiBOYW1lZEZsb3dDCiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbG93VGhyZWFkLCBwdWJsaWMgU2VsZWN0aW9uU3Vi
dHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYpOwor
ICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJlZjxX
ZWJLaXROYW1lZEZsb3c+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1RocmVhZCgp
OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHJvZ3Jlc3M6OlJlbmRl
clByb2dyZXNzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9wb3Np
dGlvbihIVE1MUHJvZ3Jlc3NFbGVtZW50OjpJbnZhbGlkUG9zaXRpb24pCiAgICAgLCBtX2FuaW1h
dGlvblN0YXJ0VGltZSgwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBy
b2dyZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBy
b2dyZXNzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIEhU
TUxQcm9ncmVzc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclByb2dyZXNzIGZpbmFsIDogcHVibGlj
IFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJQcm9ncmVzcyhI
VE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclByb2dyZXNz
KCk7CiAKICAgICBkb3VibGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29k
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBRdW90
ZVR5cGUgcXVvdGUpCitSZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBRdW90ZVR5cGUgcXVvdGUpCiAgICAgOiBSZW5kZXJJbmxp
bmUoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV90eXBlKHF1b3RlKQogICAgICwg
bV90ZXh0KGVtcHR5U3RyaW5nKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUXVvdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UXVvdGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclF1b3RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJRdW90ZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJJbmxpbmUg
ewogcHVibGljOgotICAgIFJlbmRlclF1b3RlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgUXVvdGVUeXBlKTsKKyAgICBSZW5kZXJRdW90ZShEb2N1bWVudCYsIFJlbmRl
clN0eWxlJiYsIFF1b3RlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyUXVvdGUoKTsKIAogICAg
IHZvaWQgYXR0YWNoUXVvdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
KQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCiAgICAgLCBtX3BhcmVudE5hbWVkRmxvd1RocmVhZChu
dWxscHRyKQpAQCAtNTYsNyArNTYsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVt
ZW50JiBlbGVtCiB7CiB9CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKERvY3VtZW50JiBk
b2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKERvY3VtZW50JiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVh
ZCkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFk
KG51bGxwdHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw4ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHNGb3JCb3hJblJlZ2lvbihWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqLCBjb25zdCBSZW5kZXJCb3gqLCBmbG9hdCwgZmxvYXQpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgUmVuZGVyUmVnaW9uKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBS
ZW5kZXJGbG93VGhyZWFkKik7Ci0gICAgUmVuZGVyUmVnaW9uKERvY3VtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgUmVuZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRlclJlZ2lv
bihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRl
clJlZ2lvbihEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJlbmRlckZsb3dUaHJlYWQqKTsKIAog
ICAgIHZvaWQgZW5zdXJlT3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVmUHRyPFJl
bmRlck92ZXJmbG93PiYsIGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZWdpb25TZXQ6OlJlbmRl
clJlZ2lvblNldChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb25TZXQ6
OlJlbmRlclJlZ2lvblNldChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUs
IFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJSZWdpb24oZG9jdW1l
bnQsIFdURk1vdmUoc3R5bGUpLCAmZmxvd1RocmVhZCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHBhbmRUb0VuY29tcGFzc0Zsb3dU
aHJlYWRDb250ZW50c0lmTmVlZGVkKCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJSZWdpb25T
ZXQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhy
ZWFkJik7CisgICAgUmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVu
ZGVyRmxvd1RocmVhZCYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbEZsb3dUaHJlYWQo
KSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjEgKzQ2LDIxIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNvbnN0IGludCBjRGVmYXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50IGNE
ZWZhdWx0SGVpZ2h0ID0gMTUwOwogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJS
ZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoY0RlZmF1bHRXaWR0aCwgY0RlZmF1
bHRIZWlnaHQpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9CiAKLVJlbmRlclJlcGxhY2Vk
OjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQorUmVuZGVyUmVw
bGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBSZW5kZXJCb3goZWxl
bWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmlu
c2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwogfQogCi1S
ZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKERvY3VtZW50JiBkb2N1bWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAg
ICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxh
ZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlcGxhY2VkTG9naWNhbEhl
aWdodCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclJlcGxhY2VkKEVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRTaXplJiBpbnRy
aW5zaWNTaXplKTsKLSAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOworICAgIFJl
bmRlclJlcGxhY2VkKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJSZXBsYWNl
ZChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6
ZSk7CisgICAgUmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBM
YXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUmVwbGljYTo6UmVuZGVy
UmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIC8vIFRoaXMgaXMg
YSBoYWNrLiBSZXBsaWNhcyBhcmUgc3ludGhldGljLCBhbmQgZG9uJ3QgcGljayB1cCB0aGUgYXR0
cmlidXRlcyBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxpY2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlclJlcGxpY2EgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclJlcGxpY2EoKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2NrKiBydWJ5QWZ0ZXJC
bG9jCiAKIHN0YXRpYyBSZW5kZXJCbG9jayogY3JlYXRlQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KFJlbmRlck9iamVjdCYgcnVieSkKIHsKLSAgICBSZW5kZXJCbG9jayogbmV3QmxvY2sgPSBuZXcg
UmVuZGVyQmxvY2tGbG93KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoJnJ1Ynkuc3R5bGUoKSwgSU5MSU5FX0JMT0NLKSk7CisgICAg
UmVuZGVyQmxvY2sqIG5ld0Jsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhydWJ5LmRvY3VtZW50
KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHJ1Ynkuc3R5
bGUoKSwgSU5MSU5FX0JMT0NLKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgIHJldHVybiBuZXdCbG9jazsKIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgaW5saW5l
IFJlbmRlclJ1YnlSdW4mIGZpbmRSdWJ5UnVuCiAKIC8vPT09IHJ1YnkgYXMgaW5saW5lIG9iamVj
dCA9PT0KIAotUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYg
ZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlB
c0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNo
aWxkKFJlbgogCiAvLz09PSBydWJ5IGFzIGJsb2NrIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFz
QmxvY2s6OlJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxv
Y2soRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJs
b2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5Omlu
bGluZScKIGNsYXNzIFJlbmRlclJ1YnlBc0lubGluZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJJbmxp
bmUgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNJbmxpbmUoKTsKIAogICAg
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogLy8gPHJ1Ynk+
IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpibG9jaycgb3IgJ2Rpc3BsYXk6aW5saW5lLWJsb2NrJwog
Y2xhc3MgUmVuZGVyUnVieUFzQmxvY2sgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0Jsb2NrKCk7CiAKICAgICBFbGVtZW50
JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogICAgICwgbV9pbml0aWFsT2Zmc2V0KDApCiAgICAgLCBtX2lzQWZ0ZXJFeHBhbnNpb24odHJ1
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJSdWJ5UnVuOwog
CiBjbGFzcyBSZW5kZXJSdWJ5QmFzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewog
cHVibGljOgotICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QmFzZSgpOwogICAgIAogICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFu
b255bW91cykiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVJ1bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1SZW5kZXJSdWJ5UnVuOjpSZW5k
ZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbGFzdENoYXJhY3RlcigwKQogICAgICwgbV9zZWNvbmRU
b0xhc3RDaGFyYWN0ZXIoMCkKQEAgLTIwMyw4ICsyMDMsOCBAQCB2b2lkIFJlbmRlclJ1YnlSdW46
OnJlbW92ZUNoaWxkKFJlbmRlck9iCiAKIFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5UnVuOjpj
cmVhdGVSdWJ5QmFzZSgpIGNvbnN0CiB7Ci0gICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBCTE9DSyk7Ci0gICAg
bmV3U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOyAvLyBGSVhNRTogdXNlIFdFQktJVF9DRU5U
RVI/CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKTsKKyAgICBuZXdTdHlsZS5zZXRUZXh0QWxpZ24o
Q0VOVEVSKTsgLy8gRklYTUU6IHVzZSBXRUJLSVRfQ0VOVEVSPwogICAgIGF1dG8gcmVuZGVyZXIg
PSBuZXcgUmVuZGVyUnVieUJhc2UoZG9jdW1lbnQoKSwgV1RGTW92ZShuZXdTdHlsZSkpOwogICAg
IHJlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcmVuZGVyZXI7CkBAIC0y
MTMsNyArMjEzLDcgQEAgUmVuZGVyUnVieUJhc2UqIFJlbmRlclJ1YnlSdW46OmNyZWF0ZVJ1Ygog
UmVuZGVyUnVieVJ1biogUmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bihjb25zdCBS
ZW5kZXJPYmplY3QqIHBhcmVudFJ1YnkpCiB7CiAgICAgQVNTRVJUKGlzUnVieShwYXJlbnRSdWJ5
KSk7Ci0gICAgYXV0byByZW5kZXJlciA9IG5ldyBSZW5kZXJSdWJ5UnVuKHBhcmVudFJ1YnktPmRv
Y3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZw
YXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRvIHJlbmRlcmVyID0g
bmV3IFJlbmRlclJ1YnlSdW4ocGFyZW50UnVieS0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UnVieS0+c3R5bGUoKSwgSU5MSU5F
X0JMT0NLKSk7CiAgICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBy
ZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4u
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJSdWJ5
VGV4dDsKIAogY2xhc3MgUmVuZGVyUnVieVJ1biBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVJ1bigpOwogCiAgICAgYm9vbCBoYXNSdWJ5
VGV4dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVRleHQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0KEVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJS
dWJ5VGV4dDo6UmVuZGVyUnVieVRleHQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlclJ1YnlUZXh0IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyUnVieVRleHQoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5VGV4dCgpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3Bw
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDkgKzI0NSw5IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXIKICAgICB9CiAKICAgICBpZiAoYXV0byYgcGFy
dFJlbmRlcmVyU2xvdCA9IG1fcGFydHMuYWRkKHBhcnRUeXBlLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWUpCi0gICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPnNldFN0eWxlKFdURk1vdmUocGFydFN0
eWxlKSk7CisgICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPnNldFN0eWxlKFdURk1vdmUoKnBhcnRT
dHlsZSkpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0UmVuZGVyZXJTbG90ID0gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ob3duaW5nUmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShwYXJ0U3R5bGUpLCB0aGlzLCBwYXJ0VHlwZSk7CisgICAgICAgIHBhcnRSZW5kZXJl
clNsb3QgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0Pihvd25pbmdSZW5kZXJl
cigpLT5kb2N1bWVudCgpLCBXVEZNb3ZlKCpwYXJ0U3R5bGUpLCB0aGlzLCBwYXJ0VHlwZSk7CiAg
ICAgICAgIHBhcnRSZW5kZXJlclNsb3QtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBh
cnQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQorUmVuZGVy
U2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDAp
CiAgICAgLCBtX3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgLCBtX3BhcnQocGFydCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJTY3Jv
bGxiYXI7CiAKIGNsYXNzIFJlbmRlclNjcm9sbGJhclBhcnQgZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNjcm9sbGJhclBhcnQoRG9jdW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJTY3JvbGxiYXIqID0gbnVsbHB0ciwgU2Ny
b2xsYmFyUGFydCA9IE5vUGFydCk7CisgICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYs
IFJlbmRlclN0eWxlJiYsIFJlbmRlclNjcm9sbGJhciogPSBudWxscHRyLCBTY3JvbGxiYXJQYXJ0
ID0gTm9QYXJ0KTsKICAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclNlYXJjaEZp
ZWxkOjpSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNl
YXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9zZWFyY2hQ
b3B1cCgwKQpAQCAtMTc4LDggKzE3OCw4IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OnVwZGF0
ZUNhbmNlbEJ1dHQKICAgICBpZiAoY3VyU3R5bGUudmlzaWJpbGl0eSgpID09IGJ1dHRvblZpc2li
aWxpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FuY2VsQnV0dG9uU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmUoJmN1clN0eWxlKTsKLSAgICBjYW5jZWxCdXR0b25TdHlsZS0+c2V0
VmlzaWJpbGl0eShidXR0b25WaXNpYmlsaXR5KTsKKyAgICBhdXRvIGNhbmNlbEJ1dHRvblN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1clN0eWxlKTsKKyAgICBjYW5jZWxCdXR0b25TdHlsZS5z
ZXRWaXNpYmlsaXR5KGJ1dHRvblZpc2liaWxpdHkpOwogICAgIGNhbmNlbEJ1dHRvblJlbmRlcmVy
LT5zZXRTdHlsZShXVEZNb3ZlKGNhbmNlbEJ1dHRvblN0eWxlKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJTZWFyY2hGaWVsZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUsIHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJT
ZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNlYXJjaEZpZWxkKCk7CiAKICAgICB2b2lkIHVwZGF0
ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBSZW5kZXJTbGlkZXI6OmRl
ZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNsaWRlcjo6UmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBXZSBhc3N1bWUgUmVuZGVyU2xpZGVyIHdvcmtzIG9u
bHkgd2l0aCA8aW5wdXQgdHlwZT1yYW5nZT4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgUmVuZGVyU2xpZGVyIGZpbmFsIDogcHVibGljIFJlbmRlcgogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoOwogCi0gICAgUmVuZGVyU2xpZGVyKEhUTUxJ
bnB1dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJT
bGlkZXIoSFRNTElucHV0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJl
bmRlclNsaWRlcigpOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1faXNQb3RlbnRpYWxNb3Vz
ZUFjdGl2YXRpb24oZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIAogY2xh
c3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRW1iZWRkZWRP
YmplY3QgewogcHVibGljOgotICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAgICAgdmlydHVhbCB+UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oKTsKIAogICAgIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZTo6UmVuZGVyVGFi
bGUoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJs
b2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFkKG51bGxwdHIpCiAg
ICAgLCBtX2Zvb3QobnVsbHB0cikKQEAgLTcyLDcgKzcyLDcgQEAgUmVuZGVyVGFibGU6OlJlbmRl
clRhYmxlKEVsZW1lbnQmIGVsZW1lbgogICAgIG1fY29sdW1uUG9zLmZpbGwoMCwgMSk7CiB9CiAK
LVJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZG9j
dW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFkKG51bGxwdHIpCiAgICAgLCBt
X2Zvb3QobnVsbHB0cikKQEAgLTE1NDksNyArMTU0OSw3IEBAIGJvb2wgUmVuZGVyVGFibGU6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFQKIAogUmVuZGVyVGFibGUqIFJlbmRlclRhYmxlOjpjcmVhdGVB
bm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7
Ci0gICAgYXV0byB0YWJsZSA9IG5ldyBSZW5kZXJUYWJsZShwYXJlbnQtPmRvY3VtZW50KCksIFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxl
KCksIHBhcmVudC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FID8gSU5MSU5FX1RBQkxFIDog
VEFCTEUpKTsKKyAgICBhdXRvIHRhYmxlID0gbmV3IFJlbmRlclRhYmxlKHBhcmVudC0+ZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50
LT5zdHlsZSgpLCBwYXJlbnQtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORSA/IElOTElORV9U
QUJMRSA6IFRBQkxFKSk7CiAgICAgdGFibGUtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVy
biB0YWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBlbnVtIFNraXBFbXB0eVNlY3Rpb25z
VmFsdWUgeyBEb05vdFNraXBFCiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVibGljIFJlbmRlckJs
b2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZShFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZShFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CisgICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJUYWJsZSgpOwogCiAgICAgLy8gUGVyIENTUyAzIHdyaXRpbmctbW9kZTogIlRo
ZSBmaXJzdCBhbmQgc2Vjb25kIHZhbHVlcyBvZiB0aGUgJ2JvcmRlci1zcGFjaW5nJyBwcm9wZXJ0
eSByZXByZXNlbnQgc3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZUNhcHRpb246OlJl
bmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Fw
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIGNsYXNzIFJlbmRlclRhYmxl
OwogCiBjbGFzcyBSZW5kZXJUYWJsZUNhcHRpb24gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tG
bG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVDYXB0aW9uKCk7CiAKICAg
ICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVibGkKIENPTVBJTEVf
QVNTRVJUKHNpemVvZihSZW5kZXJUYWJsZUNlbGwpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVy
VGFibGVDZWxsKSwgUmVuZGVyVGFibGVDZWxsX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVf
QVNTRVJUKHNpemVvZihDb2xsYXBzZWRCb3JkZXJWYWx1ZSkgPT0gMTIsIENvbGxhcHNlZEJvcmRl
clZhbHVlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJs
ZUNlbGwoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiAgICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4KQogICAgICwgbV9jZWxs
V2lkdGhDaGFuZ2VkKGZhbHNlKQpAQCAtNzAsNyArNzAsNyBAQCBSZW5kZXJUYWJsZUNlbGw6OlJl
bmRlclRhYmxlQ2VsbChFbGVtZW50CiAgICAgdXBkYXRlQ29sQW5kUm93U3BhbkZsYWdzKCk7CiB9
CiAKLVJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2VsbDo6UmVu
ZGVyVGFibGVDZWxsKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2Nv
bHVtbih1bnNldENvbHVtbkluZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQpA
QCAtMTM0NCw3ICsxMzQ0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNjcm9sbGJhcnNDaGFu
Z2VkKAogCiBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3Vz
V2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KQogewotICAgIGF1
dG8gY2VsbCA9IG5ldyBSZW5kZXJUYWJsZUNlbGwocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBU
QUJMRV9DRUxMKSk7CisgICAgYXV0byBjZWxsID0gbmV3IFJlbmRlclRhYmxlQ2VsbChwYXJlbnQt
PmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfQ0VMTCkpOwogICAgIGNlbGwtPmluaXRpYWxpemVTdHls
ZSgpOwogICAgIHJldHVybiBjZWxsOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4
IEBAIGVudW0gSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgeyBEb05vdEluY2wKIAogY2xhc3MgUmVu
ZGVyVGFibGVDZWxsIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KTsKLSAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwor
ICAgIFJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIAogICAg
IHVuc2lnbmVkIGNvbFNwYW4oKSBjb25zdDsKICAgICB1bnNpZ25lZCByb3dTcGFuKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZUNvbDo6UmVuZGVy
VGFibGVDb2woRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbChFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpLCAwKQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKIGNsYXNzIFJl
bmRlclRhYmxlQ29sIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyVGFibGVDb2woRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclRhYmxlQ29sKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBFbGVtZW50JiBl
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255
bW91cygpKTsgfQogCiAgICAgdm9pZCBjbGVhclByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eUJp
dHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVSb3c6
OlJlbmRlclRhYmxlUm93KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsKICAgICBz
ZXRJbmxpbmUoZmFsc2UpOwogfQogCi1SZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDAp
CiAgICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogCiBSZW5kZXJUYWJsZVJv
dyogUmVuZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIHBhcmVudCkKIHsKLSAgICBhdXRvIG5ld1JvdyA9IG5ldyBSZW5kZXJU
YWJsZVJvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCksIFRBQkxFX1JPVykpOworICAgIGF1dG8g
bmV3Um93ID0gbmV3IFJlbmRlclRhYmxlUm93KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBUQUJM
RV9ST1cpKTsKICAgICBuZXdSb3ctPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdS
b3c7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1heFJvd0luZGV4ID0gMHg3RgogCiBjbGFzcyBSZW5kZXJUYWJsZVJvdyBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlUm93KEVsZW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZVJvdyhEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlUm93KEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJUYWJsZVJvdyhEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYpOwogCiAgICAgUmVuZGVyVGFibGVSb3cqIG5leHRSb3coKSBjb25zdDsKICAg
ICBSZW5kZXJUYWJsZVJvdyogcHJldmlvdXNSb3coKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsMTMgKzgyLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRh
dGVMb2dpY2FsSGVpZ2h0Rm8KICAgICB9CiB9CiAKLVJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVy
VGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIHNldElubGluZShmYWxzZSk7CiB9CiAKLVJlbmRl
clRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVu
ZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0
SW5saW5lKGZhbHNlKTsKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVl
IFJlbmRlclRhYmxlU2VjdGlvbjoKIAogUmVuZGVyVGFibGVTZWN0aW9uKiBSZW5kZXJUYWJsZVNl
Y3Rpb246OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHBhcmVudCkKIHsKLSAgICBhdXRvIHNlY3Rpb24gPSBuZXcgUmVuZGVyVGFibGVTZWN0aW9u
KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkoJnBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XX0dST1VQKSk7CisgICAgYXV0byBz
ZWN0aW9uID0gbmV3IFJlbmRlclRhYmxlU2VjdGlvbihwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwg
VEFCTEVfUk9XX0dST1VQKSk7CiAgICAgc2VjdGlvbi0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAg
cmV0dXJuIHNlY3Rpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1
LDggQEAgcHVibGljOgogCiBjbGFzcyBSZW5kZXJUYWJsZVNlY3Rpb24gZmluYWwgOiBwdWJsaWMg
UmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlU2VjdGlvbihEb2N1
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlU2Vj
dGlvbihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKERv
Y3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9u
KCk7CiAKICAgICBSZW5kZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2Nr
RmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFJl
bmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIC8vIFRoaXMgY29udmVuaWVuY2Ug
ZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtYWRlIHB1YmxpYyBiZWNhdXNlIGlubmVyVGV4dEVsZW1l
bnQgbWF5IG91dGxpdmUgdGhlIHJlbmRlciB0cmVlLgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwpAQCAtOTEsNyArOTEsNyBAQCBwcml2
YXRlOgogLy8gYW55bW9yZS4KIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIGV4cGxpY2l0
IFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBleHBsaWNpdCBSZW5kZXJUZXh0Q29u
dHJvbElubmVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAg
ICAgeyB9CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcigpIHsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRl
eHRBcmVhRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clRleHRDb250cm9sKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGNs
YXNzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lIGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRl
eHRBcmVhRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lKCk7CiAKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50JiB0ZXh0QXJlYUVs
ZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIDogcHVibGljIFJl
bmRlclRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUoSFRNTElucHV0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAKIHBy
b3RlY3RlZDoKQEAgLTkwLDcgKzkwLDcgQEAgaW5saW5lIEhUTUxFbGVtZW50KiBSZW5kZXJUZXh0
Q29udHJvbFNpbgogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sgZmluYWwgOiBw
dWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbElu
bmVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKKyAgICBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3Vl
KFZUVEN1ZUJveCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1fY3VlKGVsZW1lbnQuZ2V0Q3VlKCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgVlRUQ3VlQm94OwogCiBjbGFzcyBSZW5kZXJWVFRDdWUgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWVFRDdWUoVlRUQ3VlQm94
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVlRUQ3VlKFZUVEN1
ZUJveCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8o
SFRNTFZpZGVvRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclZpZGVvOjpSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWVkaWEoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShjYWxjdWxhdGVJbnRyaW5zaWNTaXpl
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiAKIGNs
YXNzIFJlbmRlclZpZGVvIGZpbmFsIDogcHVibGljIFJlbmRlck1lZGlhIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclZpZGVvKCk7CiAKICAgICBIVE1MVmlkZW9FbGVtZW50JiB2
aWRlb0VsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKj4gbV9zcGFu
bmVyU3RhY2s7CiB9OwogCi1SZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclZpZXc6OlJlbmRl
clZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3
KCpkb2N1bWVudC52aWV3KCkpCiAgICAgLCBtX3NlbGVjdGlvblVuc3BsaXRTdGFydChudWxscHRy
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbmRlclF1b3RlOwogCiBjbGFzcyBSZW5kZXJW
aWV3IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNlbGVjdGlvblN1YnRy
ZWVSb290IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWaWV3KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclZpZXcoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRT
b29uKFdpZGdlCiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6c2No
ZWR1bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7CiB9CiAKLVJlbmRlcldpZGdldDo6UmVu
ZGVyV2lkZ2V0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KEhUTUxGcmFt
ZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV93ZWFrUHRyRmFjdG9y
eSh0aGlzKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
cmVmKCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyV2lkZ2V0KEhU
TUxGcmFtZU93bmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmlu
YWw7CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUoY29uc3QgUmVuZGVyU3R5
bGUmIGN1cnJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKCZjdXJyZW50U3R5bGUpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoY3VycmVudFN0eWxlKTsKICAgICBpZiAoY3VycmVudFN0eWxlLmxhc3RDaGlsZFN0YXRl
KCkpCiAgICAgICAgIG5ld1N0eWxlLT5zZXRMYXN0Q2hpbGRTdGF0ZSgpOwogICAgIGlmIChjdXJy
ZW50U3R5bGUuZmlyc3RDaGlsZFN0YXRlKCkpCkBAIC01Miw3ICs1Miw3IEBAIFRleHRBdXRvU2l6
aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleShEZWwKIH0KIAogVGV4dEF1dG9TaXppbmdLZXk6OlRl
eHRBdXRvU2l6aW5nS2V5KFJlbmRlclN0eWxlKiBzdHlsZSkKLSAgICA6IG1fc3R5bGUoUmVuZGVy
U3R5bGU6OmNsb25lKHN0eWxlKSkKKyAgICA6IG1fc3R5bGUoc3R5bGUgPyBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnN0eWxlKSA6IG51bGxwdHIpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKLVJl
bmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxCbG9jazo6UmVu
ZGVyTWF0aE1MQmxvY2soRWxlbWVudCYgY29udGFpbmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyRmxleGlibGVCb3goY29udGFpbmVyLCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0K
IAotUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEJsb2Nr
OjpSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgUmVuZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxv
d2VkKGMKIAogUmVuZGVyUHRyPFJlbmRlck1hdGhNTEJsb2NrPiBSZW5kZXJNYXRoTUxCbG9jazo6
Y3JlYXRlQW5vbnltb3VzTWF0aE1MQmxvY2soKQogewotICAgIFJlbmRlclB0cjxSZW5kZXJNYXRo
TUxCbG9jaz4gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxCbG9jaz4oZG9j
dW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0
eWxlKCksIEZMRVgpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MQmxvY2s+IG5ld0Jsb2Nr
ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KGRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpKTsKICAg
ICBuZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4
IEBAIGNsYXNzIFJlbmRlck1hdGhNTE9wZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJNYXRoTUxCbG9j
ayA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1M
QmxvY2soRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRl
ck1hdGhNTEJsb2NrKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRl
ck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBib29sIGlzQ2hp
bGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbmRl
ck1hdGhNTFRhYmxlIGZpbmFsIDogcHVibGljIFJlbmRlclRhYmxlIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBSZW5kZXJNYXRoTUxUYWJsZShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyVGFi
bGUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB1
c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiBzdGF0aWMgY29uc3QgY2hhciogZ09wZW5pbmdC
cmFjZUNoYXIgPSAiKCI7CiBzdGF0aWMgY29uc3QgY2hhciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAi
KSI7CiAKLVJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jbG9zZUZl
bmNlUmVuZGVyZXIobnVsbHB0cikKIHsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZQogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MT3BlcmF0
b3I+IFJlbmRlck1hdGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IoY29uc3QgU3RyaW5n
JiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmbGFnKQogewotICAgIFJlbmRlclB0cjxSZW5k
ZXJNYXRoTUxPcGVyYXRvcj4gbmV3T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRo
TUxPcGVyYXRvcj4oZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoJnN0eWxlKCksIEZMRVgpLCBvcGVyYXRvclN0cmluZywgZm9ybSwgZmxhZyk7
CisgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTE9wZXJhdG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKSwgb3BlcmF0b3JT
dHJpbmcsIGZvcm0sIGZsYWcpOwogICAgIG5ld09wZXJhdG9yLT5pbml0aWFsaXplU3R5bGUoKTsK
ICAgICByZXR1cm4gbmV3T3BlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhN
TFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJN
YXRoTUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255
bW91cygpKTsgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29u
c3QgZmxvYXQgZ0ZyYWN0aW9uQmFyV2lkdGggPSAwCiBzdGF0aWMgY29uc3QgZmxvYXQgZ051bWVy
YXRvckdhcCA9IDAuMmY7CiBzdGF0aWMgY29uc3QgZmxvYXQgZ0Rlbm9taW5hdG9yR2FwID0gMC4y
ZjsKIAotUmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9kZWZhdWx0TGluZVRoaWNrbmVzcygxKQogICAgICwgbV9saW5lVGhpY2tuZXNzKDApCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlv
biBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
TWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogICAgIGZsb2F0
IHJlbGF0aXZlTGluZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdExpbmVUaGlj
a25lc3MgPyBtX2xpbmVUaGlja25lc3MgLyBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzIDogTGF5b3V0
VW5pdCgwKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKEVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJN
YXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MTWF0
aCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJlbmRlck1h
dGhNTE1hdGgoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlck1hdGhNTE1hdGgoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAg
IGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIC8vIEZv
ciBub3csIHdlIHVzZSBhIEJlemllciBjdXJ2ZSBhbmQgdGhpcyBzb21ld2hhdCBhcmJpdHJhcnkg
dmFsdWUuCiBjb25zdCB1bnNpZ25lZCBzaG9ydCBsb25nRGl2TGVmdFNwYWNlID0gMTA7CiAKLVJl
bmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MTWVuY2xv
c2U6OlJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAg
ICAgLCBtX2FzY2VudCgwKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlIGZpbmFsOiBwdWJsaWMgUmVuZGVyTWF0aE1M
Um93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IFN0cmV0Y2h5Q2hhcmFjdGVyIHN0cmV0Y2h5Qwog
ICAgIHsgMHgyMjJiLCAweDIzMjAsIDB4MjNhZSwgMHgyMzIxLCAweDAgICAgfSAvLyBpbnRlZ3Jh
bCBzaWduCiB9OwogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3Io
TWF0aE1MRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MVG9r
ZW4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJh
c2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkKQEAgLTgyLDcg
KzgyLDcgQEAgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdAogICAgIHVw
ZGF0ZVRva2VuQ29udGVudCgpOwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0
aE1MT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnk6OkZvcm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCitSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OkZvcm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiAgICAgOiBSZW5k
ZXJNYXRoTUxUb2tlbihkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hI
ZWlnaHRBYm92ZUJhc2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUo
MCkKQEAgLTYzMSw5ICs2MzEsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVT
dHlsZSgpCiAgICAgLy8gRklYTUU6IFRoZSBzcGFjaW5nIHNob3VsZCBiZSBhZGRlZCB0byB0aGUg
d2hvbGUgZW1iZWxsaXNoZWQgb3BlcmF0b3IgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQ4MzEpLgogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgb25s
eSBiZSBhZGRlZCBpbnNpZGUgKHBlcmhhcHMgaW5mZXJyZWQpIG1yb3cgKGh0dHA6Ly93d3cudzMu
b3JnL1RSL01hdGhNTC9jaGFwdGVyMy5odG1sI3ByZXNtLm9wc3BhY2luZykuCiAgICAgY29uc3Qg
YXV0byYgd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQoKSk7Ci0g
ICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICBuZXdTdHlsZS0+c2V0TWFyZ2luU3RhcnQoTGVu
Z3RoKG1fbGVhZGluZ1NwYWNlLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5FbmQo
TGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7
CisgICAgbmV3U3R5bGUuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKG1fbGVhZGluZ1NwYWNlLCBGaXhl
ZCkpOworICAgIG5ld1N0eWxlLnNldE1hcmdpbkVuZChMZW5ndGgobV90cmFpbGluZ1NwYWNlLCBG
aXhlZCkpOwogICAgIHdyYXBwZXItPnNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKICAgICB3
cmFwcGVyLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBw
dWJsaWMgUmVuZGVyTWF0aE1MVG9rZW4gewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJh
dG9yKE1hdGhNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBS
ZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcihNYXRoTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3Ry
aW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdz
ID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJv
dmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOwogICAgIHZvaWQgc3Ry
ZXRjaFRvKExheW91dFVuaXQgd2lkdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIGNvbnN0IGZsb2F0IGdSYWRpY2FsTGluZVRoaWNrbmVzc0VtcyA9IDAKIC8vIFJh
ZGljYWwgdGhpY2sgbGluZSB0aGlja25lc3MgKGVtKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlj
a0xpbmVUaGlja25lc3NFbXMgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxPcGVyYXRvcihkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSksIFN0cmluZygmZ1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnk6OlByZWZpeCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJh
c2VsaW5lLCBMYXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIHZvaWQgY29t
cHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEluIG9yZGVyIHRvIGFjY2VwdCBpbnZhbGlk
IG1hcmt1cCBhbmQgdG8gaGFuZGxlIDxtcm9vdD4gYW5kIDxtc3FydD4gY29uc2lzdGVudGx5LCB3
ZSB3aWxsIGFsbG93IGFueSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhlIEJhc2VXcmFwcGVyIG9m
IDxtcm9vdD4gdG9vLgogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRvIGJlIGVt
cHR5IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSA8bXJv
b3Q+IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCi1SZW5kZXJNYXRoTUxSb290
OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb290OjpSZW5kZXJNYXRoTUxSb290KEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9j
ayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lk
IFJlbmRlck1hdGhNTFJvb3Q6OnJlc3RydWN0dXJlV3JhcHBlCiAKICAgICBpZiAocmFkaWNhbC0+
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgcmFkaWNhbCBvcGVyYXRvci4K
LSAgICAgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4gcmFkaWNhbE9w
ZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yPihkb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5
bGUoKSwgRkxFWCkpOworICAgICAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJh
dG9yPiByYWRpY2FsT3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSYWRpY2Fs
T3BlcmF0b3I+KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpKTsKICAgICAgICAgcmFkaWNhbE9wZXJhdG9yLT5pbml0
aWFsaXplU3R5bGUoKTsKICAgICAgICAgcmFkaWNhbC0+YWRkQ2hpbGQocmFkaWNhbE9wZXJhdG9y
LmxlYWtQdHIoKSk7CiAgICAgfQpAQCAtMjIwLDI2ICsyMjAsMjYgQEAgdm9pZCBSZW5kZXJNYXRo
TUxSb290Ojp1cGRhdGVTdHlsZSgpCiAgICAgLy8gV2Ugc2V0IHRoZSBzdHlsZSBvZiB0aGUgYW5v
bnltb3VzIHdyYXBwZXJzLgogCiAgICAgYXV0byByYWRpY2FsID0gcmFkaWNhbFdyYXBwZXIoKTsK
LSAgICBhdXRvIHJhZGljYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICByYWRpY2FsU3R5bGUtPnNldE1hcmdp
blRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVy
TWF0aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYXV0byByYWRpY2FsU3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKKyAgICBy
YWRpY2FsU3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwg
YmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KICAgICByYWRpY2FsLT5z
ZXRTdHlsZShXVEZNb3ZlKHJhZGljYWxTdHlsZSkpOwogICAgIHJhZGljYWwtPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCiAgICAgYXV0byBiYXNlID0gYmFzZVdyYXBwZXIo
KTsKLSAgICBhdXRvIGJhc2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKLSAgICBiYXNlU3R5bGUtPnNldE1hcmdpblRv
cChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0
aE1MUm9vdDo6bGF5b3V0KCkuCi0gICAgYmFzZVN0eWxlLT5zZXRBbGlnbkl0ZW1zUG9zaXRpb24o
SXRlbVBvc2l0aW9uQmFzZWxpbmUpOworICAgIGF1dG8gYmFzZVN0eWxlID0gUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CisgICAgYmFz
ZVN0eWxlLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVw
ZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCisgICAgYmFzZVN0eWxlLnNldEFs
aWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CiAgICAgYmFzZS0+c2V0U3R5
bGUoV1RGTW92ZShiYXNlU3R5bGUpKTsKICAgICBiYXNlLT5zZXROZWVkc0xheW91dEFuZFByZWZX
aWR0aHNSZWNhbGMoKTsKIAogICAgIGlmICghaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkpIHsK
ICAgICAgICAgLy8gRm9yIG1yb290LCB3ZSBhbHNvIHNldCB0aGUgc3R5bGUgb2YgdGhlIGluZGV4
IHdyYXBwZXIuCiAgICAgICAgIGF1dG8gaW5kZXggPSBpbmRleFdyYXBwZXIoKTsKLSAgICAgICAg
YXV0byBpbmRleFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoJnN0eWxlKCksIEZMRVgpOwotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5Ub3Ao
TGVuZ3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1hdGhN
TFJvb3Q6OmxheW91dCgpLgotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5n
dGgoa2VybkJlZm9yZURlZ3JlZSwgRml4ZWQpKTsKLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0TWFy
Z2luRW5kKExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7Ci0gICAgICAgIGluZGV4U3R5
bGUtPnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CisgICAgICAg
IGF1dG8gaW5kZXhTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlKCksIEZMRVgpOworICAgICAgICBpbmRleFN0eWxlLnNldE1hcmdpblRvcChM
ZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1M
Um9vdDo6bGF5b3V0KCkuCisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2luU3RhcnQoTGVuZ3Ro
KGtlcm5CZWZvcmVEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2lu
RW5kKExlbmd0aChrZXJuQWZ0ZXJEZWdyZWUsIEZpeGVkKSk7CisgICAgICAgIGluZGV4U3R5bGUu
c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKICAgICAgICAgaW5k
ZXgtPnNldFN0eWxlKFdURk1vdmUoaW5kZXhTdHlsZSkpOwogICAgICAgICBpbmRleC0+c2V0TmVl
ZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQpAQCAtMzM3LDcgKzMzNyw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKIAogUmVuZGVyUHRyPFJl
bmRlck1hdGhNTFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRlQW5v
bnltb3VzV3JhcHBlcihSZW5kZXJNYXRoTUxSb290KiByZW5kZXJPYmplY3QpCiB7Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBuZXdCbG9jayA9IGNyZWF0ZVJlbmRlcmVy
PFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPihyZW5kZXJPYmplY3QtPmRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZyZW5kZXJPYmplY3QtPnN0
eWxlKCksIEZMRVgpKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IG5l
d0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+KHJlbmRlck9i
amVjdC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkocmVuZGVyT2JqZWN0LT5zdHlsZSgpLCBGTEVYKSk7CiAgICAgbmV3QmxvY2stPmluaXRp
YWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJNYXRo
TUxSb290IDogcHVibGljIFJlbmRlck1hCiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdy
YXBwZXI7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKIAogICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBl
ciBmaW5hbCA6IHB1CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogcHVibGljOgot
ICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBSZW5kZXJNYXRoTUxSb290V3JhcHBlcihE
b2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVy
TWF0aE1MUm93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkgeyB9CiAKIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAot
UmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0
aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3co
RG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0
aE1MQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGNsYXNzIFJlbmRlck1hdGhN
TFJvb3Q7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0
Myw3IEBAIHN0YXRpYyBib29sIGlzUHJlc2NyaXB0RGVsaW1pdGVyKGNvbnN0IFIKICAgICByZXR1
cm4gcmVuZGVyT2JqZWN0Lm5vZGUoKSAmJiByZW5kZXJPYmplY3Qubm9kZSgpLT5oYXNUYWdOYW1l
KE1hdGhNTE5hbWVzOjptcHJlc2NyaXB0c1RhZyk7CiB9CiAKLVJlbmRlck1hdGhNTFNjcmlwdHM6
OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlw
dHMoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1h
dGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIC8vIERldGVybWluZSB3
aGF0IGtpbmQgb2Ygc3ViL3N1cCBleHByZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gUmVuZGVyIGEgYmFzZSB3aXRoIHNjcmlw
dHMuCiBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhN
TEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxp
c2hlZE9wZXJhdG9yKCkgZmluYWw7CiAgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
Ci1SZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRo
TUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fd2lkdGgoMCkKICAgICAsIG1faGVpZ2h0KDApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU3BhY2UgZmluYWwgOiBw
dWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNwYWNl
KE1hdGhNTFRleHRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhN
TFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNxdWFyZVJvb3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlbmRl
ck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvb3QoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNxdWFyZVJvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MTWVuY2xvc2U7
CiAvLyBSZW5kZXIgc3FydChiYXNlKSwgdXNpbmcgcmFkaWNhbCBub3RhdGlvbi4KIGNsYXNzIFJl
bmRlck1hdGhNTFNxdWFyZVJvb3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm9vdCB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7Ci0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxTcXVh
cmVSb290PiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoUmVuZGVyTWF0aE1MTWVu
Y2xvc2UmKTsKKyAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNxdWFyZVJvb3Qo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1M
VG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9r
ZW4oRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1h
dGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1l
bnQoZmFsc2UpCiB7CiB9CiAKLVJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CkBAIC04Miwx
NyArODIsMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUoKQogICAgIGNv
bnN0IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKIAogICAgIGNvbnN0IGF1dG8mIHdy
YXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwotICAgIGF1dG8g
bmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgRkxFWCk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOwogCiAgICAgaWYgKHRva2Vu
RWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykpIHsKICAgICAgICAgLy8gVGhp
cyB0cmllcyB0byBlbXVsYXRlIHRoZSBkZWZhdWx0IG1hdGh2YXJpYW50IHZhbHVlIG9uIDxtaT4g
dXNpbmcgdGhlIENTUyBmb250LXN0eWxlIHByb3BlcnR5LgogICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcmV2aXNlZCB3aGVuIG1hdGh2YXJpYW50IGlzIGltcGxlbWVudGVkIChodHRw
Oi8vd2tidWcvODU3MzUpIGFuZCB3aGVuIGZvbnRzIHdpdGggTWF0aGVtYXRpY2FsIEFscGhhbnVt
ZXJpYyBTeW1ib2xzIGNoYXJhY3RlcnMgYXJlIG1vcmUgcG9wdWxhci4KLSAgICAgICAgYXV0byBm
b250RGVzY3JpcHRpb24gPSBuZXdTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIEZv
bnRTZWxlY3RvciogZm9udFNlbGVjdG9yID0gbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udFNl
bGVjdG9yKCk7CisgICAgICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gbmV3U3R5bGUuZm9udERl
c2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yID0gbmV3U3R5
bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5z
RWxlbWVudCAmJiBlbGVtZW50KCkudGV4dENvbnRlbnQoKS5zdHJpcFdoaXRlU3BhY2UoKS5zaW1w
bGlmeVdoaXRlU3BhY2UoKS5sZW5ndGgoKSA9PSAxICYmICF0b2tlbkVsZW1lbnQuaGFzQXR0cmli
dXRlKG1hdGh2YXJpYW50QXR0cikpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRh
bGljKEZvbnRJdGFsaWNPbik7Ci0gICAgICAgIGlmIChuZXdTdHlsZS0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBuZXdTdHlsZS0+Zm9udENhc2NhZGUo
KS51cGRhdGUoZm9udFNlbGVjdG9yKTsKKyAgICAgICAgaWYgKG5ld1N0eWxlLnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgbmV3U3R5bGUuZm9udENhc2Nh
ZGUoKS51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAgICB9CiAKICAgICB3cmFwcGVyLT5zZXRTdHls
ZShXVEZNb3ZlKG5ld1N0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xh
c3MgUmVuZGVyTWF0aE1MVG9rZW4gOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGlj
OgotICAgIFJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogCiAgICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1h
dGhNTE5hbWVzOwogICAgIAotUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRl
ck92ZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9m
IHVuZGVyL292ZXIgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVu
ZGVyT3Zlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFVuZGVy
T3ZlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIAogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw0NiArODYsNTEg
QEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJTdHlsZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihSZW5kZXJTdHlsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJTdHlsZSksIFJlbmRlclN0
eWxlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotaW5saW5lIFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5
bGUoKQorUmVuZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewotICAgIHN0
YXRpYyBSZW5kZXJTdHlsZSYgc3R5bGUgPSAqUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHls
ZSgpLnJlbGVhc2UoKTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIHN0eWxlID0gKm5ldyBSZW5k
ZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGUpOwogICAgIHJldHVybiBzdHlsZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlKCkKK1JlbmRlclN0
eWxlIFJlbmRlclN0eWxlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBjbG9uZSgmZGVmYXVsdFN0
eWxlKCkpOworICAgIHJldHVybiBjbG9uZShkZWZhdWx0U3R5bGUoKSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSgpCitz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKQogewot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KG5ldyBSZW5kZXJTdHlsZSh0
cnVlKSk7CisgICAgcmV0dXJuIGNsb25lUHRyKGRlZmF1bHRTdHlsZSgpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5IGRpc3Bs
YXkpCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAg
bmV3U3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKLSAgICBuZXdTdHlsZS0+aW5oZXJp
dFVuaWNvZGVCaWRpRnJvbShwYXJlbnRTdHlsZSk7Ci0gICAgbmV3U3R5bGUtPnNldERpc3BsYXko
ZGlzcGxheSk7Ci0gICAgcmV0dXJuIG5ld1N0eWxlOworICAgIHJldHVybiBSZW5kZXJTdHlsZShz
dHlsZSwgQ2xvbmUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0
eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4obmV3IFJlbmRlclN0
eWxlKCpvdGhlcikpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihz
dHlsZSwgQ2xvbmUpOworfQorCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIEVEaXNw
bGF5IGRpc3BsYXkpCit7CisgICAgYXV0byBuZXdTdHlsZSA9IGNyZWF0ZSgpOworICAgIG5ld1N0
eWxlLmluaGVyaXRGcm9tKCZwYXJlbnRTdHlsZSk7CisgICAgbmV3U3R5bGUuaW5oZXJpdFVuaWNv
ZGVCaWRpRnJvbSgmcGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLnNldERpc3BsYXkoZGlzcGxh
eSk7CisgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNy
ZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNl
dWRvU3R5bGUpCiB7CiAgICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEJFRk9S
RSB8fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBBRlRFUik7CiAKLSAgICBhdXRvIHN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5pbmhlcml0RnJvbSgmcHNldWRv
U3R5bGUpOworICAgIGF1dG8gc3R5bGUgPSBjcmVhdGUoKTsKKyAgICBzdHlsZS5pbmhlcml0RnJv
bSgmcHNldWRvU3R5bGUpOwogICAgIHJldHVybiBzdHlsZTsKIH0KIAotQUxXQVlTX0lOTElORSBS
ZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoYm9vbCkKK1JlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShD
cmVhdGVEZWZhdWx0U3R5bGVUYWcpCiAgICAgOiBtX2JveChTdHlsZUJveERhdGE6OmNyZWF0ZSgp
KQogICAgICwgdmlzdWFsKFN0eWxlVmlzdWFsRGF0YTo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tn
cm91bmQoU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKCkpCkBAIC0xNjIsMTcgKzE2NywxNyBA
QCBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShiCiAgICAgc3RhdGljX2Fz
c2VydCgoc2l6ZW9mKE5vbkluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIk5vbkluaGVyaXRlZEZsYWdz
IGRvZXMgbm90IGdyb3ciKTsKIH0KIAotQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVy
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG8pCi0gICAgOiBtX2JveChvLm1fYm94KQotICAgICwg
dmlzdWFsKG8udmlzdWFsKQotICAgICwgbV9iYWNrZ3JvdW5kKG8ubV9iYWNrZ3JvdW5kKQotICAg
ICwgc3Vycm91bmQoby5zdXJyb3VuZCkKLSAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKG8ucmFy
ZU5vbkluaGVyaXRlZERhdGEpCi0gICAgLCByYXJlSW5oZXJpdGVkRGF0YShvLnJhcmVJbmhlcml0
ZWREYXRhKQotICAgICwgaW5oZXJpdGVkKG8uaW5oZXJpdGVkKQotICAgICwgbV9zdmdTdHlsZShv
Lm1fc3ZnU3R5bGUpCi0gICAgLCBpbmhlcml0ZWRfZmxhZ3Moby5pbmhlcml0ZWRfZmxhZ3MpCi0g
ICAgLCBub25pbmhlcml0ZWRfZmxhZ3Moby5ub25pbmhlcml0ZWRfZmxhZ3MpCitSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKKyAgICA6
IG1fYm94KG90aGVyLm1fYm94KQorICAgICwgdmlzdWFsKG90aGVyLnZpc3VhbCkKKyAgICAsIG1f
YmFja2dyb3VuZChvdGhlci5tX2JhY2tncm91bmQpCisgICAgLCBzdXJyb3VuZChvdGhlci5zdXJy
b3VuZCkKKyAgICAsIHJhcmVOb25Jbmhlcml0ZWREYXRhKG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhKQorICAgICwgcmFyZUluaGVyaXRlZERhdGEob3RoZXIucmFyZUluaGVyaXRlZERhdGEpCisg
ICAgLCBpbmhlcml0ZWQob3RoZXIuaW5oZXJpdGVkKQorICAgICwgbV9zdmdTdHlsZShvdGhlci5t
X3N2Z1N0eWxlKQorICAgICwgaW5oZXJpdGVkX2ZsYWdzKG90aGVyLmluaGVyaXRlZF9mbGFncykK
KyAgICAsIG5vbmluaGVyaXRlZF9mbGFncyhvdGhlci5ub25pbmhlcml0ZWRfZmxhZ3MpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlN0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlRmlsdGVyRGF0
YS5oIgogI2luY2x1ZGUgIlN0eWxlRmxleGlibGVCb3hEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVJ
bmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1ZGUg
IlN0eWxlTXVsdGlDb2xEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5o
IgpAQCAtNDc5LDIwICs0ODAsMjkgQEAgcHJvdGVjdGVkOgogCiAvLyAhRU5EIFNZTkMhCiBwcml2
YXRlOgotICAgIC8vIHVzZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHN0eWxlLgotICAgIEFMV0FZ
U19JTkxJTkUgUmVuZGVyU3R5bGUoYm9vbCk7Ci0gICAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIGVudW0gQ3JlYXRlRGVmYXVsdFN0eWxlVGFnIHsg
Q3JlYXRlRGVmYXVsdFN0eWxlIH07CisgICAgUmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxl
VGFnKTsKKworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0eWxlKCk7CiAKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGUoKTsKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUo
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRURpc3Bs
YXkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNsb25lKGNvbnN0
IFJlbmRlclN0eWxlKik7CisgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0
OworICAgIFJlbmRlclN0eWxlJiBvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0Owor
CisgICAgLy8gVGhpcyBpcyBub3QgYSB0cnVlIGNvcHkgY29uc3RydWN0b3IuIEl0IGRvZXNuJ3Qg
Y29weSBwc2V1ZG8gc3R5bGUgY2FjaGVzIGZvciBleGFtcGxlLgorICAgIGVudW0gQ2xvbmVUYWcg
eyBDbG9uZSB9OworICAgIFJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgQ2xvbmVUYWcp
OwogCiAgICAgflJlbmRlclN0eWxlKCk7CiAKLSAgICAvLyBDcmVhdGUgYSBSZW5kZXJTdHlsZSBm
b3IgZ2VuZXJhdGVkIGNvbnRlbnQgYnkgaW5oZXJpdGluZyBmcm9tIGEgcHNldWRvIHN0eWxlLgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlSW5oZXJp
dGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOworICAg
IHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBjcmVhdGVQdHIoKTsKKworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjbG9u
ZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IGNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJik7CisKKyAgICBzdGF0aWMgUmVuZGVy
U3R5bGUgY3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlU3R5
bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHls
ZSk7CiAKICAgICBDb250ZW50UG9zaXRpb24gcmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9u
KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3IpIGNv
bnN0OwogICAgIENvbnRlbnREaXN0cmlidXRpb25UeXBlIHJlc29sdmVkSnVzdGlmeUNvbnRlbnRE
aXN0cmlidXRpb24oY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVC
ZWhhdmlvcikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdCbG9jazo6UmVuZGVy
U1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKFNWR0dyYXBo
aWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJs
b2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50
JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRl
clNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNW
R0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVs
T2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9vYmplY3RCb3VuZGluZ0Jv
eFZhbGlkKGZhbHNlKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX29i
amVjdEJvdW5kaW5nQm94VmFsaWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR0NvbnRh
aW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29u
dGFpbmVyIjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0VsbGlwc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdFbGxpcHNlOjpS
ZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlw
c2UoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3VzZVBh
dGhGYWxsYmFjayhmYWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRWxsaXBzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR0VsbGlw
c2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNW
R0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0Jsb2NrKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBAIGNsYXNzIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OwogCiBjbGFzcyBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0IGZpbmFsIDogcHVibGljIFJlbmRlclNWR0Jsb2NrIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclNWR0ZvcmVpZ25PYmplY3QoKTsKIAogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
JiBmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFk
aWVudFN0b3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdHcmFkaWVudFN0
b3A6OlJlbmRlclNWR0dyYWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSksIDApCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0dyYWRpZW50U3RvcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50OwogLy8gVGhpcyBj
bGFzcyBleGlzdHMgbW9zdGx5IHNvIHdlIGNhbiBoZWFyIGFib3V0IGdyYWRpZW50IHN0b3Agc3R5
bGUgY2hhbmdlcwogY2xhc3MgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIGZpbmFsIDogcHVibGljIFJl
bmRlckVsZW1lbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcChTVkdTdG9w
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0dy
YWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclNWR0dyYWRpZW50U3RvcCgpOwogCiAgICAgU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdTdG9wRWxlbWVudD4oUmVuZGVyT2JqZWN0Ojpu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRl
bkNvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250
YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogLy8gPGRlZnM+LCA8bGluZWFyR3JhZGllbnQ+LCA8
cmFkaWFsR3JhZGllbnQ+IGFyZSBhbGwgZ29vZCBleGFtcGxlcwogY2xhc3MgUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFn
ZUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAg
ICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0ltYWdlRWxlbWVudDsKIAogY2xhc3MgUmVuZGVy
U1ZHSW1hZ2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgot
ICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR0ltYWdlKCk7CiAKICAgICBTVkdJbWFnZUVs
ZW1lbnQmIGltYWdlRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJl
bmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0lubGluZTo6
UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsK
ICAgICBzZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clNWR0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclNW
R0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdNb2Rl
bE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5k
ZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAs
IG1faGFzU1ZHU2hhZG93KGZhbHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBTVkdFbGVtZW50JiBl
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZH
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR01v
ZGVsT2JqZWN0KFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1BhdGg6OlJl
bmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChTVkdHcmFw
aGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdTaGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clNWR1BhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJl
bmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyU1ZHUGF0aChTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdQYXRoKCk7CiAKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVjdDo6
UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1JlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdSZWN0IGZp
bmFsIDogcHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZWN0
KFNWR1JlY3RFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclNWR1JlY3QoKTsKIAogICAgIFNWR1JlY3RFbGVtZW50JiByZWN0RWxlbWVudCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBh
dGhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xp
cFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENsaQogCiBj
bGFzcyBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihT
VkdDbGlwUGF0aEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKCk7CiAKICAgICBTVkdD
bGlwUGF0aEVsZW1lbnQmIGNsaXBQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFNWR0NsaXBQYXRoRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIHN0YXRpYyBpbmxpbmUgU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBz
dmcKICAgICByZXR1cm4gZWxlbWVudC5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsK
IH0KIAotUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR0hpZGRlbkNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faWQo
ZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpKQogICAgICwgbV9yZWdpc3RlcmVkKGZhbHNlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNsaWVudFJlbmRlckxh
eWVyKFJlbmRlckxheWVyKik7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiAgICAgZW51bSBJbnZhbGlkYXRpb25Nb2RlIHsKICAgICAgICAgTGF5b3V0QW5kQm91bmRhcmll
c0ludmFsaWRhdGlvbiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdG
aWx0ZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNWR0Zp
bHRlckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZH
RmlsdGVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jl
c291cmNlRmlsdGVyKCk7CiAKICAgICBTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRmlsdGVyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZpbHRlclBy
aW1pdGl2ZUVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXQKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgZmluYWwgOiBw
dWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMm
IGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1l
bnQmIG5vZGUsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxl
bWVudCYgbm9kZSwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKG5vZGUsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zaG91bGRDb2xsZWN0R3Jh
ZGllbnRBdHRyaWJ1dGVzKHRydWUpCiAjaWYgVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmpl
Y3QmKSBmaW5hbCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRp
ZW50RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3Qg
PSBkZWxldGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6
OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudChT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGll
bnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVh
bCB+UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCgpOwogCiAgICAgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6
OmdyYWRpZW50RWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKFNWR01hcmtlckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXIoU1ZHTWFya2VyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
cmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewog
cHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
cihTVkdNYXJrZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIoKTsKIAogICAgIFNWR01hcmtlckVsZW1lbnQmIG1hcmtlckVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdNYXJrZXJFbGVtZW50PihSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRlclNWR1Jl
c291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRlclNWR1Jlc291
cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IE1hc2tlckRhdGEgewogCiBjbGFzcyBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcihTVkdNYXNrRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
clNWR1Jlc291cmNlTWFza2VyKCk7CiAKICAgICBTVkdNYXNrRWxlbWVudCYgbWFza0VsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdNYXNrRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdFBhdHRlcm5BdHRyaWJ1dGVzKHRydWUpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4gZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQ
YXR0ZXJuRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIFNWR1BhdHRlcm5FbGVtZW50JiBw
YXR0ZXJuRWxlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNh
Y2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50IGZpbmFsIDogcHVibGljIFJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJT
VkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCk7CiAKICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3JhZGllbnRF
bGVtZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290
KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAgICAs
IG1faXNMYXlvdXRTaXplQ2hhbmdlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdSb290
IGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdS
b290KFNWR1NWR0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJTVkdSb290KCk7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVtZW50KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTVkdTaGFwZSYgbV9yZW5kZXJlcjsKIH07CiAKLVJl
bmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdTaGFwZTo6UmVu
ZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxzZSkgLy8gRGVmYXVsdCBpcyBmYWxz
ZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkgZnJvbSB0aGUgYmVnaW5uaW5nLgogICAgICwg
bV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERlZmF1bHQgaXMgdHJ1ZSwgc28gd2UgZ3JhYiBh
IFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFwaGljc0VsZW1lbnQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJTVkdTaGFwZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHU2hhcGUoKTsKIAog
ICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVu
dCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VFNwYW4uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUU3Bhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTVkdUU3BhbiBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJTVkdJbmxpbmUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFuKFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJT
VkdJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1lbnQmIGVsZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdUZXh0OjpS
ZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBt
X25lZWRzUmVvcmRlcmluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1Vw
ZGF0ZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBSZW5kZXJTVkdJbmxpbmVUZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdUZXh0IGZpbmFsIDogcHVi
bGljIFJlbmRlclNWR0Jsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0KFNWR1RleHRF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVGV4
dChTVkdUZXh0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNW
R1RleHQoKTsKIAogICAgIFNWR1RleHRFbGVtZW50JiB0ZXh0RWxlbWVudCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0
aC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKFNWR1RleHRQYXRoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0
UGF0aEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJTVkdUZXh0UGF0aCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdJbmxpbmUg
ewogcHVibGljOgotICAgIFJlbmRlclNWR1RleHRQYXRoKFNWR1RleHRQYXRoRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHRQYXRoKFNWR1Rl
eHRQYXRoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgU1ZHVGV4dFBhdGhFbGVtZW50
JiB0ZXh0UGF0aEVsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZH
R3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiAgICAgLCBtX2RpZFRyYW5zZm9y
bVRvUm9vdFVwZGF0ZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiBjbGFzcyBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0Nv
bnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihT
VkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgeyBy
ZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdDb250YWluZXI6OmVs
ZW1lbnQoKSk7IH0KIAogICAgIGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQogICAgICwg
bV9pc0xheW91dFNpemVDaGFuZ2VkKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0NvbnRhaW5l
ciBpbnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNzIFJlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFNWR1NWR0VsZW1l
bnQmIHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVVcGRhdGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyAr
MjUxLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAgIGlm
IChzaG91bGRDcmVhdGVOZXdSZW5kZXJlcikgewogICAgICAgICBpZiAoZWxlbWVudC5oYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkKICAgICAgICAgICAgIGVsZW1lbnQud2lsbEF0dGFj
aFJlbmRlcmVycygpOwotICAgICAgICBjcmVhdGVSZW5kZXJlcihlbGVtZW50LCBXVEZNb3ZlKHVw
ZGF0ZS5zdHlsZSkpOworICAgICAgICBjcmVhdGVSZW5kZXJlcihlbGVtZW50LCBXVEZNb3ZlKCp1
cGRhdGUuc3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5VGV4dFNpYmxp
bmdzQWZ0ZXJBdHRhY2hJZk5lZWRlZChlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTI2MSwxOSArMjYxLDE5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1l
bnRSZW4KICAgICBhdXRvJiByZW5kZXJlciA9ICplbGVtZW50LnJlbmRlcmVyKCk7CiAKICAgICBp
ZiAodXBkYXRlLmlzU3ludGhldGljKSB7Ci0gICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1v
dmUodXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3NpdGVMYXllcik7CisgICAg
ICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1vdmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVy
ZW5jZVJlY29tcG9zaXRlTGF5ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6Ok5vQ2hhbmdlKSB7CiAgICAgICAgIGlmIChwc2V1ZG9T
dHlsZUNhY2hlSXNJbnZhbGlkKCZyZW5kZXJlciwgdXBkYXRlLnN0eWxlLmdldCgpKSB8fCAocGFy
ZW50KCkuc3R5bGVDaGFuZ2UgPT0gU3R5bGU6OkZvcmNlICYmIHJlbmRlcmVyLnJlcXVpcmVzRm9y
Y2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpKSkgewotICAgICAgICAgICAgcmVuZGVyZXIuc2V0
U3R5bGUoV1RGTW92ZSh1cGRhdGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CisgICAg
ICAgICAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKCp1cGRhdGUuc3R5bGUpLCBTdHlsZURp
ZmZlcmVuY2VFcXVhbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1vdmUodXBkYXRlLnN0
eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOworICAgIHJlbmRlcmVyLnNldFN0eWxlKFdURk1v
dmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0KIAogI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKQEAgLTI4OSwxNyArMjg5LDE3IEBAIHN0YXRpYyBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG1vdmVUb0Zsb3cKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVy
OjpjcmVhdGVSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBpZiAoIXNob3VsZENy
ZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93UmVu
ZGVyZXIgPSBudWxscHRyOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBwYXJlbnRGbG93
UmVuZGVyZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgKnN0eWxlKTsKKyAg
ICBwYXJlbnRGbG93UmVuZGVyZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwg
c3R5bGUpOwogI2VuZGlmCiAKLSAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXJJc05lZWRlZCgqc3R5
bGUpKQorICAgIGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uKCkuY29tcHV0ZU5leHRTaWJsaW5nKGVs
ZW1lbnQpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0
ZVJlbmRlcmVyKEUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGU7CiAgICAgbmV3UmVuZGVyZXItPmFuaW1hdGlvbigpLnVwZGF0ZUFuaW1hdGlvbnMoKm5ld1Jl
bmRlcmVyLCBpbml0aWFsU3R5bGUsIGFuaW1hdGVkU3R5bGUpOwogICAgIGlmIChhbmltYXRlZFN0
eWxlKQotICAgICAgICBuZXdSZW5kZXJlci0+c2V0U3R5bGVJbnRlcm5hbChXVEZNb3ZlKGFuaW1h
dGVkU3R5bGUpKTsKKyAgICAgICAgbmV3UmVuZGVyZXItPnNldFN0eWxlSW50ZXJuYWwoV1RGTW92
ZSgqYW5pbWF0ZWRTdHlsZSkpOwogCiAgICAgbmV3UmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgp
OwogCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVm
b3JlT3JBZgogCiAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGUgZWxlbWVudFVwZGF0ZTsKIAotICAg
IGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VycmVudC5yZW5kZXJlcigpLT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCwgJmN1cnJlbnQucmVuZGVyZXIoKS0+c3R5bGUo
KSkpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmN1cnJlbnQu
cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQsICZjdXJyZW50LnJlbmRl
cmVyKCktPnN0eWxlKCkpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5p
bWF0ZWRTdHlsZTsKICAgICBpZiAocmVuZGVyZXIgJiYgbV9kb2N1bWVudC5mcmFtZSgpLT5hbmlt
YXRpb24oKS51cGRhdGVBbmltYXRpb25zKCpyZW5kZXJlciwgKm5ld1N0eWxlLCBhbmltYXRlZFN0
eWxlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KTsKICAgICB2b2lkIHVwZGF0ZVRleHRS
ZW5kZXJlcihUZXh0Jik7CiAgICAgdm9pZCB1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYs
IFN0eWxlOjpFbGVtZW50VXBkYXRlJik7Ci0gICAgdm9pZCBjcmVhdGVSZW5kZXJlcihFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJl
cihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlV2hpdGVzcGFj
ZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKE5vZGUmKTsKICAgICB2b2lkIHVw
ZGF0ZUJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBQc2V1ZG9JZCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
bmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSk7CiAKQEAgLTU1LDE5
ICs1NSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JECiAKICAg
ICBhdXRvIGRvY3VtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAKLSAgICBkb2N1
bWVudFN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRSVExP
cmRlcmluZyhkb2N1bWVudC52aXN1YWxseU9yZGVyZWQoKSA/IFZpc3VhbE9yZGVyIDogTG9naWNh
bE9yZGVyKTsKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygp
ID8gcmVuZGVyVmlldy5mcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKLSAgICBkb2N1bWVu
dFN0eWxlLT5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFtZSgpLmZyYW1lU2Nh
bGVGYWN0b3IoKSk7Ci0gICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkb2N1bWVudEZvbnREZXNj
cmlwdGlvbiA9IGRvY3VtZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGRvY3VtZW50
U3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRSVExPcmRlcmlu
Zyhkb2N1bWVudC52aXN1YWxseU9yZGVyZWQoKSA/IFZpc3VhbE9yZGVyIDogTG9naWNhbE9yZGVy
KTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFpvb20oIWRvY3VtZW50LnByaW50aW5nKCkgPyByZW5k
ZXJWaWV3LmZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSA6IDEpOworICAgIGRvY3VtZW50U3R5bGUu
c2V0UGFnZVNjYWxlVHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9y
KCkpOworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZG9jdW1lbnRGb250RGVzY3JpcHRpb24g
PSBkb2N1bWVudFN0eWxlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGRvY3VtZW50Rm9udERlc2Ny
aXB0aW9uLnNldExvY2FsZShkb2N1bWVudC5jb250ZW50TGFuZ3VhZ2UoKSk7Ci0gICAgZG9jdW1l
bnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZG9jdW1lbnRGb250RGVzY3JpcHRp
b24pKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGRvY3Vt
ZW50Rm9udERlc2NyaXB0aW9uKSk7CiAKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkgLXdlYmtp
dC11c2VyLW1vZGlmeSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KLSAgICBkb2N1
bWVudFN0eWxlLT5zZXRVc2VyTW9kaWZ5KGRvY3VtZW50LmluRGVzaWduTW9kZSgpID8gUkVBRF9X
UklURSA6IFJFQURfT05MWSk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRVc2VyTW9kaWZ5KGRvY3Vt
ZW50LmluRGVzaWduTW9kZSgpID8gUkVBRF9XUklURSA6IFJFQURfT05MWSk7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIGlmIChkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSkKLSAgICAgICAgZG9jdW1l
bnRTdHlsZS0+c2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3RtZW50KE5vVGV4dFNpemVB
ZGp1c3RtZW50KSk7CisgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0VGV4dFNpemVBZGp1c3QoVGV4
dFNpemVBZGp1c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CiAjZW5kaWYKIAogICAgIEVs
ZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKQEAgLTc5LDI0
ICs3OSwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JECiAgICAg
ICAgIGF1dG8qIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpOwogICAgICAgICBSZW5k
ZXJPYmplY3QqIGJvZHlSZW5kZXJlciA9IGJvZHkgPyBib2R5LT5yZW5kZXJlcigpIDogbnVsbHB0
cjsKICAgICAgICAgaWYgKGJvZHlSZW5kZXJlciAmJiAhZG9jRWxlbWVudFJlbmRlcmVyLT5zdHls
ZSgpLmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgZG9jdW1lbnRT
dHlsZS0+c2V0V3JpdGluZ01vZGUoYm9keVJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkp
OworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRXcml0aW5nTW9kZShib2R5UmVuZGVyZXIt
PnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3Vt
ZW50U3R5bGUtPnNldFdyaXRpbmdNb2RlKGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS53cml0
aW5nTW9kZSgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0V3JpdGluZ01vZGUoZG9j
RWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwogICAgICAgICBpZiAoYm9k
eVJlbmRlcmVyICYmICFkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGljaXRseVNl
dERpcmVjdGlvbigpKQotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0aW9uKGJv
ZHlSZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSk7CisgICAgICAgICAgICBkb2N1bWVudFN0
eWxlLnNldERpcmVjdGlvbihib2R5UmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXREaXJlY3Rpb24oZG9jRWxl
bWVudFJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAgIGRvY3VtZW50
U3R5bGUuc2V0RGlyZWN0aW9uKGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24o
KSk7CiAgICAgfQogCiAgICAgY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbiA9IHJlbmRlclZp
ZXcuZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpOwogICAgIGlmIChwYWdpbmF0aW9uLm1vZGUgIT0g
UGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpIHsKLSAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Q29s
dW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKHBhZ2luYXRpb24ubW9kZSk7Ci0gICAgICAgIGRv
Y3VtZW50U3R5bGUtPnNldENvbHVtbkdhcChwYWdpbmF0aW9uLmdhcCk7CisgICAgICAgIGRvY3Vt
ZW50U3R5bGUuc2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKHBhZ2luYXRpb24ubW9k
ZSk7CisgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0Q29sdW1uR2FwKHBhZ2luYXRpb24uZ2FwKTsK
ICAgICAgICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpCi0gICAgICAg
ICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKCpkb2N1bWVu
dFN0eWxlKTsKKyAgICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25G
cm9tU3R5bGUoZG9jdW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LmZyYW1lKCku
cGFnZSgpLT5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGRvY3Vt
ZW50U3R5bGUtPnNldExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIik7
Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRMaW5lU25hcChMaW5lU25hcENvbnRhaW4p
OworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0
LXBhZ2luYXRpb24tZ3JpZCIpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25h
cChMaW5lU25hcENvbnRhaW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEsMTcgKzExMSwx
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JECiAgICAgaW50IHNp
emUgPSBmb250U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCk7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7CiAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3VtZW50KCk7Ci0gICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywg
ZG9jdW1lbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
Q29tcHV0ZWRTaXplKGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250
RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzLCAmZG9jdW1lbnRT
dHlsZSwgZG9jdW1lbnQpKTsKIAogICAgIEZvbnRPcmllbnRhdGlvbiBmb250T3JpZW50YXRpb247
CiAgICAgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uOwotICAgIHN0ZDo6
dGllKGZvbnRPcmllbnRhdGlvbiwgZ2x5cGhPcmllbnRhdGlvbikgPSBkb2N1bWVudFN0eWxlLT5m
b250QW5kR2x5cGhPcmllbnRhdGlvbigpOworICAgIHN0ZDo6dGllKGZvbnRPcmllbnRhdGlvbiwg
Z2x5cGhPcmllbnRhdGlvbikgPSBkb2N1bWVudFN0eWxlLmZvbnRBbmRHbHlwaE9yaWVudGF0aW9u
KCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGZvbnRPcmllbnRhdGlvbik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE5vbkNKS0dseXBoT3JpZW50YXRpb24oZ2x5cGhPcmll
bnRhdGlvbik7CiAKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pOwogCi0gICAgZG9jdW1lbnRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJmNv
bnN0X2Nhc3Q8RG9jdW1lbnQmPihkb2N1bWVudCkuZm9udFNlbGVjdG9yKCkpOworICAgIGRvY3Vt
ZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihkb2N1
bWVudCkuZm9udFNlbGVjdG9yKCkpOwogCiAgICAgcmV0dXJuIGRvY3VtZW50U3R5bGU7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVy
U3R5bGU7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7CitSZW5kZXJTdHlsZSByZXNv
bHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogfQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBTaGFyaW5nUmVzbwogCiAgICAgbV9lbGVtZW50c1NoYXJpbmdTdHlsZS5hZGQoJmVsZW1lbnQs
IHNoYXJlRWxlbWVudCk7CiAKLSAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKHVwZGF0ZS5l
bGVtZW50U3R5bGUoKnNoYXJlRWxlbWVudCkpOworICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKnVwZGF0ZS5lbGVtZW50U3R5bGUoKnNoYXJlRWxlbWVudCkpOwogfQogCiBTdHlsZWRF
bGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OmZpbmRTaWJsaW5nKGNvbnN0IENvbnRleHQmIGNvbnRl
eHQsIE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVQbGFjZWhvbGRlclN0eWxlKERvY3Vt
CiB7CiAgICAgaWYgKHBsYWNlaG9sZGVyU3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBwbGFj
ZWhvbGRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpLnJlbGVhc2UoKTsKKyAgICBwbGFj
ZWhvbGRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpLnJlbGVhc2UoKTsKICAgICBw
bGFjZWhvbGRlclN0eWxlLT5zZXREaXNwbGF5KE5PTkUpOwogICAgIHBsYWNlaG9sZGVyU3R5bGUt
PnNldElzUGxhY2Vob2xkZXJTdHlsZSgpOwogICAgIHBsYWNlaG9sZGVyU3R5bGUtPmZvbnRDYXNj
YWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CkBAIC0xMjMsNyArMTIzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZQogewogICAgIGlmICgh
bV9kb2N1bWVudC5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiAhZWxlbWVudC5yZW5kZXJlcigp
KSB7CiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgp
OwotICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKHBsYWNlaG9sZGVyU3R5bGUpOwor
ICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpwbGFjZWhvbGRlclN0eWxlKTsK
ICAgICB9CiAKICAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3Mo
KSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpyZXNv
bHZlRWxlbWUKICAgICAgICAgdXBkYXRlLmlzU3ludGhldGljID0gdHJ1ZTsKIAogICAgIGlmICgm
ZWxlbWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIG1fZG9j
dW1lbnRFbGVtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodXBkYXRlLnN0eWxlLmdldCgp
KTsKKyAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0
cigqdXBkYXRlLnN0eWxlKTsKICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLnNldE92ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQoKSk7CiAK
ICAgICAgICAgLy8gSWYgInJlbSIgdW5pdHMgYXJlIHVzZWQgYW55d2hlcmUgaW4gdGhlIGRvY3Vt
ZW50LCBhbmQgaWYgdGhlIGRvY3VtZW50IGVsZW1lbnQncyBmb250IHNpemUgY2hhbmdlcywgdGhl
biBmb3JjZSBmb250IHVwZGF0aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBw
YXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJl
bnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIGJv
b2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWEKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEds
eXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNWR1RTcGFuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICB9CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDaXJjbGVFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZH
RWxsaXBzZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0NpcmNsZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBj
eCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlwUGF0
aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRGVmc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVm
c0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rl
ZnNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzRm9jdXMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0RlZnNFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU1ZHRWxs
aXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsK
IAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAog
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxlbWVudCkK
ICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYwogICAg
ICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIYXNI
ZWlnaHQodHJ1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbHRlckVm
ZmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVu
ZGVyZXIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRm9yZWlnbk9iamVjdD4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgU1ZHR0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY28KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICAvLyBTVkcgMS4xIHRlc3RzdWl0ZSBleHBsaWNpdGVseSB1c2VzIGNvbnN0cnVjdHMgbGlr
ZSA8ZyBkaXNwbGF5PSJub25lIj48bGluZWFyR3JhZGllbnQ+CiAgICAgLy8gV2Ugc3RpbGwgaGF2
ZSB0byBjcmVhdGUgcmVuZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdyYWRpZW50PiBlbGVt
ZW50LCB0aG91Z2ggdGhlCiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVuIC0gd2Ugb25seSB3
YW50IHRoZSByZXNvdXJjZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBjYW4gYmUKICAgICAv
LyByZWZlcmVuY2VkIGZyb20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0eWxlLT5kaXNwbGF5
KCkgPT0gTk9ORSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6Omlz
VmFsaWQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBGbG9hdFJlY3Qg
U1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRCQm94KFN0CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFi
bGU6OmdldEJCb3godGhpcywgc3R5bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dyYXBoaWNzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgLy8gQnkgZGVmYXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRv
IGRvIHBhdGgtYmFzZWQgZHJhd2luZwogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdQYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIAogICAgIC8vICJiYXNlIGNsYXNzIiBtZXRob2RzIGZvciBhbGwgdGhlIGVsZW1l
bnRzIHdoaWNoIHJlbmRlciBhcyBwYXRocwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBh
dGgmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNWR0ltYWdlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ltYWdl
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAK
LSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3Jp
ZW50VG9BbmdsZSgKICAgICBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50QW5nbGUsIGFuZ2xlKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcg
KzEzOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9p
ZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbgogICAgICAgICBvYmplY3QtPnNl
dE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcg
QEAgRmxvYXRSZWN0IFNWR1BhdGhFbGVtZW50OjpnZXRCQm94KFN0eWxlVQogICAgIHJldHVybiBy
ZW5kZXJlci0+cGF0aCgpLmJvdW5kaW5nUmVjdCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICAv
LyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0aC1iYXNlZCBk
cmF3aW5nCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1BhdGg+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNM
YXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR1Jlc291cmNlUGF0dGVybj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgU1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVjdD4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQogICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgYm9vbCBTVkdTVkdF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbgogICAgIHJldHVybiBTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIGlmIChpc091dGVy
bW9zdFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1Jvb3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIFNWR0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHR3JhZGllbnRTdG9wPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzR3JhZGllbnRT
dG9wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0b3BFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3
IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdT
d2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N3aXRjaEVsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
IGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICByZXR1cm4gaGFz
QXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJv
bEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9s
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0g
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBSZWY8U1ZHVFNwYW5FbGVtZW50PiBTVkdUU3BhbkVs
ZW1lbnQ6OmNyCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVFNwYW5FbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUU3BhbkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR1RTcGFuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHVFNwYW5FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgICAgICAgICAgCi0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6YW5pbWF0ZWQKICAgICBy
ZXR1cm4gbWF0cml4OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVGV4dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHVGV4dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1RleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMs
NyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRQYXRo
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU1ZHVGV4dFBhdGg+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgU1ZHRWxlbWVudCogU1ZHVXNlRWxlbWVu
dDo6dGFyZ2V0Q2xvbmUoKQogICAgIHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihyb290LT5m
aXJzdENoaWxkKCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVXNlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIGJv
b2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIHRvQ2xpcFBh
dGgoUGF0aCYpIG92ZXJyaWRlOwogICAgIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2Vz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277262</attachid>
            <date>2016-04-25 11:21:03 -0700</date>
            <delta_ts>2016-04-25 11:45:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inline-renderstyle-9.patch</filename>
            <type>text/plain</type>
            <size>400246</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyOCBAQAorMjAxNi0wNC0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIFJlbmRlclN0eWxl
IGludG8gUmVuZGVyRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2OTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
KworICAgICAgICBXZSBjYW4gc2F2ZSBtZW1vcnkgYW5kIHJlZHVjZSBpbmRpcmVjdGlvbiBvZiBz
dHlsZSBhY2Nlc3MgYnkgaW5saW5pbmcgUmVuZGVyU3R5bGUgdG8gUmVuZGVyRWxlbWVudC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFrZXMgUmVuZGVyU3R5bGUgbW92ZWFibGUgYW5kIHN3
aXRjaGVzIGZyb20gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiB0byBSZW5kZXJTdHlsZSYm
CisgICAgICAgIGluIG1hbnkgcGxhY2VzIHdoZXJlIG93bmVyc2hpcCBpcyBwYXNzZWQuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblJlcGxhY2VtZW50OjpzY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luUmVwbGFjZW1lbnQ6OndpbGxDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ollv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5
bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5VG9TdHlsZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlcik6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKToKKyAg
ICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUJ1dHRvbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQlJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQlJFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OkhUTUxEZXRhaWxzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpmb3JtKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjphbHRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFRydW5jYXRlVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFD
b250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5F
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzTmV0c2Nh
cGVQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Y2FuU2VsZWN0
QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3Vt
bWFyeUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFdC
UkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFdCUkVsZW1lbnQ6OkhUTUxXQlJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxXQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFdCUkVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5
cGU6OnN1cHBvcnRzVmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBl
Lmg6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9JbWFnZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Zm9ybUZvclN1Ym1pc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRodW1iRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1J1
YnlFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UnVieVRleHRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UnVieVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
UnVieVRleHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjptYXhSZXN1bHRzQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGb250KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6RGV0YWlsc01hcmtl
ckNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6
OnNldFRpbWVEaXNwbGF5c0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzSW5uZXJF
bGVtZW50OjpQcm9ncmVzc0lubmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c0lubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyVGh1bWI6
OlJlbmRlclNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVu
dDo6c2V0UG9zaXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJD
b250YWluZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyQ29u
dGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
bnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRy
b2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9s
czo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVEN1ZS5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50Lmg6CisgICAgICAgICogbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxN
ZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNZW5jbG9z
ZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRl
eHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1hdGVkU3R5bGVGb3JS
ZW5kZXJlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlv
bnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6Z2V0QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6b25BbmltYXRpb25FbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1wbGljaXRBbmltYXRpb246OnJlc2V0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmlt
YXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246Omdl
dEFuaW1hdGVkU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnQ6OlJlbmRlckF0dGFjaG1lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpS
ZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNsb25lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93OjpSZW5kZXJCbG9ja0Zsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojp1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2tpcEJvZHlCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6UmVuZGVyQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmpl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QnV0dG9uOjpSZW5kZXJCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQ29tYmluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Zmlyc3RMaW5lU3R5bGVGb3JDYWNoZWRVbmNhY2hlZFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzSW5pdGlhbGl6
ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZUludGVybmFsKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6On5SZW5kZXJFbWJlZGRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OlJl
bmRlckZpZWxkc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9s
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhbWU6OlJlbmRlckZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJh
c2U6OmNoaWxkVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlblBs
YWNlaG9sZGVyOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVs
bFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxs
U2NyZWVuOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRGcmVlU3BhY2VGb3JEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6UmVuZGVyR3JpZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpS
ZW5kZXJJRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6UmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0eWxlT2ZBbm9u
eW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZENo
aWxkSWdub3JpbmdDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpjbG9uZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6aXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6UmVuZGVy
TGlzdEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXN0TWFy
a2VyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0
TWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZWRpYTo6UmVuZGVyTWVkaWEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGVkT3B0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjpzZXRUZXh0RnJvbU9wdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQ6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1v
dXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojp+UmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNyZWF0
ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21w
dXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50OjpzZXRPYmplY3RTdHlsZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25P
YmplY3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVw
ZGF0ZVdyaXRpbmdNb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclByb2dyZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVnaW9uOjphYnNvbHV0ZVF1YWRzRm9yQm94SW5SZWdpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
ZWdpb25TZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBs
aWNhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFub255bW91
c1J1YnlJbmxpbmVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNJbmxpbmU6
OlJlbmRlclJ1YnlBc0lubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNCbG9j
azo6UmVuZGVyUnVieUFzQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5UnVuKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0
OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHRvblZp
c2liaWxpdHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlk
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJs
ZUNhcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpSZW5k
ZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxvZ2ljYWxIZWlnaHRGb3JD
ZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVT
ZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRU
Q3VlOjpSZW5kZXJWVFRDdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bW92ZVdpZGdldFRvUGFyZW50U29vbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJXaWRnZXQ6OlJlbmRlcldpZGdldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MQmxvY2s6OmNyZWF0ZUFub255bW91c01hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRmVuY2VkOjpjcmVhdGVNYXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRo
OjpSZW5kZXJNYXRoTUxNYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1hdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJN
YXRoTUxNZW5jbG9zZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1h
dGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cjo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb290OjpSZW5kZXJNYXRoTUxSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OnJlc3RydWN0dXJlV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MUm9vdDo6dXBkYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI6OmNyZWF0ZUFub255bW91c1dyYXBwZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVu
ZGVyTWF0aE1MUm93KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ByZXNjcmlwdERlbGltaXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxUb2tlbjo6ZWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkZWZh
dWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVN0
eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6
Z3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNW
R0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6aXNPYmplY3RCb3VuZGlu
Z0JveFZhbGlkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJ
bmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmdyYXBoaWNzRWxlbWVudCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjplbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6
UmVuZGVyU1ZHUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1JlY3Q6OlJlbmRlclNWR1JlY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ZnRXh0
ZW5zaW9uc0Zyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VMaW5lYXJHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXI6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jvb3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OlJlbmRlclNWR1NoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6Z3JhcGhpY3NFbGVt
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAg
ICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpt
b3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRh
dGVyOjp1cGRhdGVCZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudCk6CisgICAgICAgICogc3R5bGUv
UmVuZGVyVHJlZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oOgorICAgICAgICAqIHN0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
aGFyaW5nUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJp
bmdSZXNvbHZlcjo6ZmluZFNpYmxpbmcpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVQbGFjZWhvbGRlclN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGlj
c0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0Fu
Z2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OmdldEJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVs
ZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
U3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RT
cGFuRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RTcGFuRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9T
VkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
dGFyZ2V0Q2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorCiAyMDE2LTA0
LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIxNTY4NDYpOiBDcmFzaGVzIHdpdGggZ3VhcmQgbWFsbG9jCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
CiAgICAgdmlydHVhbCBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpID0gMDsKIH07CiAKIHR5cGVkZWYg
UmVmPFBsdWdpblJlcGxhY2VtZW50PiAoKkNyZWF0ZVBsdWdpblJlcGxhY2VtZW50KShIVE1MUGx1
Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgZmluYWwgeyByZXR1cm4g
bV9zY3JpcHRPYmplY3Q7IH0KIAogICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwg
eyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwog
CiAgICAgYm9vbCBlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCk7CiAgICAgRE9NV3Jh
cHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAs
NyBAQCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGltZVBsCiAgICAgbV9tZWRp
YUVsZW1lbnQgPSBudWxscHRyOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYgcGx1Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
SFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09ICZwbHVnaW4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpZb3VUdWJlUGx1Z2luUgogICAg
ICAgICBtX2F0dHJpYnV0ZXMuYWRkKHBhcmFtTmFtZXNbaV0sIHBhcmFtVmFsdWVzW2ldKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0
aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Q
b3NpdGlvbikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09
ICZwbHVnaW4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
eW91VHViZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7CiAKICAgICBib29sIHdpbGxDcmVhdGVS
ZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX3BhcmVudEVs
ZW1lbnQ7CiAgICAgUmVmUHRyPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IG1fZW1iZWRTaGFk
b3dFbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsMTEgKzM4OCwxMSBAQCBFbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JFbGVtCiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAogICAgIGlmIChz
dGF0ZS5wYXJlbnRTdHlsZSgpKSB7Ci0gICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxl
OjpjcmVhdGUoKSk7CisgICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQ
dHIoKSk7CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXRGcm9tKHN0YXRlLnBhcmVudFN0
eWxlKCksIGlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSA/IFJlbmRlclN0eWxlOjpBdFNoYWRv
d0JvdW5kYXJ5IDogUmVuZGVyU3R5bGU6Ok5vdEF0U2hhZG93Qm91bmRhcnkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN0YXRlLnNldFN0eWxlKGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKSk7Ci0g
ICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShzdGF0ZS5zdHls
ZSgpKSk7CisgICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0
cigqc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIAogICAgIGF1dG8mIHN0eWxlID0gKnN0YXRlLnN0
eWxlKCk7CkBAIC00NTMsOCArNDUzLDggQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdgogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICAvLyBDcmVhdGUg
dGhlIHN0eWxlCi0gICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKGVsZW1lbnRT
dHlsZSkpOwotICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShlbGVt
ZW50U3R5bGUpKTsKKyAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVs
ZW1lbnRTdHlsZSkpOworICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZWxlbWVudFN0eWxlKSk7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAg
ICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZTsKQEAgLTU2NSwxMSArNTY1LDExIEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHYKICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOwogCiAgICAgaWYgKG1fc3RhdGUucGFyZW50U3R5bGUoKSkgewotICAgICAgICBzdGF0ZS5z
ZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpOworICAgICAgICBzdGF0ZS5zZXRTdHlsZShS
ZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0
RnJvbShtX3N0YXRlLnBhcmVudFN0eWxlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRl
LnNldFN0eWxlKGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKSk7Ci0gICAgICAgIHN0YXRlLnNldFBh
cmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShzdGF0ZS5zdHlsZSgpKSk7CisgICAgICAgIHN0
YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqc3RhdGUuc3R5bGUoKSkp
OwogICAgIH0KIAogICAgIC8vIFNpbmNlIHdlIGRvbid0IHVzZSBwc2V1ZG8tZWxlbWVudHMgaW4g
YW55IG9mIG91ciBxdWlyay9wcmludCB1c2VyIGFnZW50IHJ1bGVzLCBkb24ndCB3YXN0ZSB0aW1l
IHdhbGtpbmcKQEAgLTYxNCwxMSArNjE0LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gU3R5bGVSZXNvbHYKIAogICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6
Y3JlYXRlUHRyKCk7CiAKICAgICBtX3N0YXRlID0gU3RhdGUoKmRvY3VtZW50RWxlbWVudCwgbV9k
b2N1bWVudC5yZW5kZXJTdHlsZSgpKTsKIAotICAgIG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpKTsKKyAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQ
dHIoKSk7CiAgICAgbV9zdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbShtX3N0YXRlLnJvb3RFbGVt
ZW50U3R5bGUoKSk7CiAKICAgICBQYWdlUnVsZUNvbGxlY3RvciBjb2xsZWN0b3IobV9zdGF0ZSwg
bV9ydWxlU2V0cyk7CkBAIC02NTQsNyArNjU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdgogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKQogewotICAgIG1fc3RhdGUuc2V0U3R5bGUo
UmVuZGVyU3R5bGU6OmNyZWF0ZSgpKTsKKyAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxl
OjpjcmVhdGVQdHIoKSk7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBmb250cyBhcmUgaW5pdGlhbGl6
ZWQgaWYgd2UgZG9uJ3QgaW5oZXJpdCB0aGVtIGZyb20gb3VyIHBhcmVudCBzdHlsZS4KICAgICBp
bml0aWFsaXplRm9udFN0eWxlKGRvY3VtZW50U2V0dGluZ3MoKSk7CiAgICAgaWYgKGRvY3VtZW50
U2V0dGluZ3MoKSkKQEAgLTEyMTMsOCArMTIxMyw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
VG9NYXRjaGVkUHJvcGVydGkKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFu
Z2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVy
U3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBS
ZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBz
dWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgotICAgIGNhY2hlSXRlbS5yZW5kZXJT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSk7Ci0gICAgY2FjaGVJdGVtLnBhcmVudFJl
bmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFN0eWxlKTsKKyAgICBjYWNoZUl0
ZW0ucmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKTsKKyAgICBjYWNo
ZUl0ZW0ucGFyZW50UmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnBhcmVudFN0
eWxlKTsKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuYWRkKGhhc2gsIFdURk1vdmUoY2Fj
aGVJdGVtKSk7CiB9CiAKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlNYXRjaGVkUHJvcGVydGkKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRv
U3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3RhdGUgPSBTdGF0ZSgpOwotICAgIG1fc3Rh
dGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlLmdldCgpKSk7CisgICAg
bV9zdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSk7CiAg
ICAgbV9zdGF0ZS5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYXBwbHlQcm9wZXJ0eVRv
Q3VycmVudFN0eWxlKGlkLCB2YWx1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NzYsMTAgKzE4NzYsMTAgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZQogICAgICAgICAgICAgLy8gZm9udCBzZWxlY3Rvciwgc28gc2V0
IGEgZm9udCBzZWxlY3RvciBpZiBuZWVkZWQuCiAgICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNl
dHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKSkgewogICAgICAgICAgICAgICAgIGlmIChzZXR0aW5n
cy0+Zm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZmb250U2VsZWN0b3IoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmZv
bnRTZWxlY3RvcigpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBkb2N1bWVu
dENoYW5nZSA9IFN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UoKmRvY3VtZW50U3R5bGUsIG1fcmVuZGVy
Vmlldy0+c3R5bGUoKSk7CisgICAgICAgICAgICBhdXRvIGRvY3VtZW50Q2hhbmdlID0gU3R5bGU6
OmRldGVybWluZUNoYW5nZShkb2N1bWVudFN0eWxlLCBtX3JlbmRlclZpZXctPnN0eWxlKCkpOwog
ICAgICAgICAgICAgaWYgKGRvY3VtZW50Q2hhbmdlICE9IFN0eWxlOjpOb0NoYW5nZSkKICAgICAg
ICAgICAgICAgICByZW5kZXJWaWV3KCktPnNldFN0eWxlKFdURk1vdmUoZG9jdW1lbnRTdHlsZSkp
OwogICAgICAgICB9CkBAIC01ODM1LDcgKzU4MzUsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRX
aWxsRW50ZXJGdWxsU2NyZWVuCiAgICAgYm9vbCBzaG91bGRDcmVhdGVQbGFjZWhvbGRlciA9IGlz
PFJlbmRlckJveD4ocmVuZGVyZXIpOwogICAgIGlmIChzaG91bGRDcmVhdGVQbGFjZWhvbGRlcikg
ewogICAgICAgICBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJlY3QgPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcikuZnJhbWVSZWN0KCk7Ci0gICAgICAgIG1fc2F2ZWRQbGFjZWhvbGRlclJl
bmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5kZXJlci0+c3R5bGUoKSk7CisgICAg
ICAgIG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRy
KHJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVu
dCAhPSBkb2N1bWVudEVsZW1lbnQoKSkKQEAgLTU5MTUsNyArNTkxNSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlcihSZW4KICAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBs
YWNlaG9sZGVyKFdURk1vdmUobV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGUpLCBtX3NhdmVk
UGxhY2Vob2xkZXJGcmFtZVJlY3QpOwogICAgIGVsc2UgaWYgKHJlbmRlcmVyICYmIG1fZnVsbFNj
cmVlblJlbmRlcmVyICYmIG1fZnVsbFNjcmVlblJlbmRlcmVyLT5wbGFjZWhvbGRlcigpKSB7CiAg
ICAgICAgIFJlbmRlckJsb2NrKiBwbGFjZWhvbGRlciA9IG1fZnVsbFNjcmVlblJlbmRlcmVyLT5w
bGFjZWhvbGRlcigpOwotICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxhY2Vob2xkZXIoUmVuZGVy
U3R5bGU6OmNsb25lKCZwbGFjZWhvbGRlci0+c3R5bGUoKSksIHBsYWNlaG9sZGVyLT5mcmFtZVJl
Y3QoKSk7CisgICAgICAgIHJlbmRlcmVyLT5jcmVhdGVQbGFjZWhvbGRlcihSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIocGxhY2Vob2xkZXItPnN0eWxlKCkpLCBwbGFjZWhvbGRlci0+ZnJhbWVSZWN0KCkp
OwogICAgIH0KIAogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Myw3ICsxNDkzLDcgQEAgYm9vbCBFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbgogICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkg
IT0gTk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gQ09OVEVOVFM7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChj
b25zdCBFbGVtZW50JikgeyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJik7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290KiBzaGFkb3dSb290
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBQc2V1ZG9F
bGVtZW50OjpyZQogICAgIGF1dG8qIHN0eWxlID0gbV9ob3N0RWxlbWVudC0+cmVuZGVyZXIoKS0+
Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCwgJnBhcmVudFN0eWxlKTsKICAgICBpZiAo
IXN0eWxlKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUoUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCpzdHlsZSkpOwogfQogCiB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRp
ZEF0dGFjaFJlbmRlcmVycygpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50
OjpkaWRSZWNhbGNTdHlsZShTdHlsZQogICAgICAgICAvLyBXZSBvbmx5IG1hbmFnZSB0aGUgc3R5
bGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29udGVudCB3aGljaCBtdXN0IGJlIGltYWdlcyBvciB0ZXh0
LgogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90
ZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUlu
aGVyaXRpbmdGcm9tUHNldWRvU3R5bGUocmVuZGVyZXIuc3R5bGUoKSk7CisgICAgICAgIGF1dG8g
Y3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1
ZG9TdHlsZShyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmNoaWxkKS5zZXRTdHlsZShXVEZNb3ZlKGNyZWF0ZWRTdHlsZSkpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBib29sIEJhc2VCdXR0b25JbnB1dFR5
cGU6OmFwcGVuZEZvcm1EYXRhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPihlbGVtZW50
KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1
dHRvbklucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1
dHRvbklucHV0VHlwZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVG
cm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcm
LCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3
ICsxOTUsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlCiAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRmlsZUlucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJGaWxlVXBsb2FkQ29udHJvbD4oZWxlbWVudCgpLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHZhbHVlTWlzc2lu
Zyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWVNaXNzaW5n
VGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChF
dmVudCopIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNhbkNoYW5nZUZyb21Bbm90aGVyVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEZpbGVMaXN0KiBmaWxlcygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIGJvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4g
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIGlmICghY2FuRW1iZWRKYXZhKCkpCiAgICAgICAgIHJldHVy
biBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIAog
ICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAg
IFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBSZWY8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBIVE1MQXR0YWNobWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckF0dGFjaG1l
bnQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEF0dGFjaG1lbnRFbGVt
ZW50KCk7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNob3VsZFNlbGVjdE9uTW91c2VEb3duKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCw5IEBAIHZvaWQgSFRNTEJSRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCisgICAgaWYgKHN0eWxlLmhh
c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxp
bmVCcmVhaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJSRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJSRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3Qg
QXQKICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbHdheXMgY3JlYXRlcyBvbmUsIGJ1dCBidXR0
b25zIGRvbid0IG5lZWQgaXQuCiAgICAgYm9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI0LDcgKzEyNCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMK
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1l
LT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Nyw3ICs4Nyw3IEBAIEhUTUxEZXRhaWxzRWxlbWVudDo6SFRNTERldGFpbHNFbGVtZW50
KGMKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkZXRhaWxzVGFnKSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCBib29s
IEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0CiAgICAgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNvbnN0OwogCiAgICAg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxGaWVsZFNldEVsZW1lbnQ6CiAgICAgcmV0dXJuIGZpZWxkc2V0OwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpZWxkc2V0
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRl
OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoCiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsOSArMTU3LDkgQEAgYm9vbCBIVE1MRnJhbWVTZXRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZAogICAgIHJldHVybiAhc3R5bGUuaXNQbGFjZWhvbGRlclN0
eWxlKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoc3R5bGUtPmhhc0Nv
bnRlbnQoKSkKKyAgICBpZiAoc3R5bGUuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVu
ZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgCiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lU2V0PigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3
IEBAIGJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4g
aXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlzcGxheSgpICE9IE5PTkU7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJRnJhbWU+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVRva2VuTGlzdD4gbV9zYW5kYm94Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDkgKzI1Niw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRN
TEltYWdlRWxlbWVudDo6YWwKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEltYWdl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCisg
ICAgaWYgKHN0eWxlLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6
OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckltYWdlPigqdGhpcywgV1RGTW92ZShzdHlsZSksIG51bGxwdHIsIG1faW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0ZShjb25zdCBJbWFnZUNhbmRpZGF0
ZSYpOwogCiAgICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NjAsNyArNzYwLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmVuZGVyZXJJc05lZWRlZCgpICYm
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Y3JlYXRlSW5wdXRS
ZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0xODc1LDIzICsxODc1LDIzIEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVHJ1bmNhdGVUZXgKICAgICByZXR1cm4gZG9jdW1lbnQo
KS5mb2N1c2VkRWxlbWVudCgpICE9IHRoaXMgJiYgc3R5bGUudGV4dE92ZXJmbG93KCkgPT0gVGV4
dE92ZXJmbG93RWxsaXBzaXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gSFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSBjb25zdAorUmVuZGVyU3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGF1dG8gdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPmlu
aGVyaXRGcm9tKCZzdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsICp0ZXh0
QmxvY2tTdHlsZSk7CisgICAgdGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZyb20oJnN0eWxlKTsKKyAg
ICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUpOwogCi0gICAgdGV4
dEJsb2NrU3R5bGUtPnNldFdoaXRlU3BhY2UoUFJFKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0
T3ZlcmZsb3dXcmFwKE5vcm1hbE92ZXJmbG93V3JhcCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNl
dE92ZXJmbG93WChPSElEREVOKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0T3ZlcmZsb3dZKE9I
SURERU4pOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRUZXh0T3ZlcmZsb3coc2hvdWxkVHJ1bmNh
dGVUZXh0KHN0eWxlKSA/IFRleHRPdmVyZmxvd0VsbGlwc2lzIDogVGV4dE92ZXJmbG93Q2xpcCk7
CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOworICAgIHRleHRCbG9ja1N0
eWxlLnNldE92ZXJmbG93V3JhcChOb3JtYWxPdmVyZmxvd1dyYXApOworICAgIHRleHRCbG9ja1N0
eWxlLnNldE92ZXJmbG93WChPSElEREVOKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxv
d1koT0hJRERFTik7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KHNob3VsZFRy
dW5jYXRlVGV4dChzdHlsZSkgPyBUZXh0T3ZlcmZsb3dFbGxpcHNpcyA6IFRleHRPdmVyZmxvd0Ns
aXApOwogCiAgICAgLy8gRG8gbm90IGFsbG93IGxpbmUtaGVpZ2h0IHRvIGJlIHNtYWxsZXIgdGhh
biBvdXIgZGVmYXVsdC4KLSAgICBpZiAodGV4dEJsb2NrU3R5bGUtPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKQotICAgICAgICB0ZXh0Qmxv
Y2tTdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7
CisgICAgaWYgKHRleHRCbG9ja1N0eWxlLmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKSA+IHN0
eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5l
SGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKIAotICAgIHRleHRCbG9j
a1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5
KEJMT0NLKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNv
bnN0OwogICAgIAogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29u
c3Q7CiAgICAgSFRNTEVsZW1lbnQqIGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKQEAg
LTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0aW9uKCkgY29u
c3Q7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5h
bDsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9p
ZCB3aWxsQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKSBmaW5hbDsKICAgICB2b2lkIGRpZERldGFjaFJlbmRlcmVycygpIGZpbmFsOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsMTEgKzIzNywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAK
ICAgICAgICAgYm9vbCBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRydWU7CiAgICAgICAgIGlmICghbV9t
ZWRpYS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gZG9jdW1lbnRTdHlsZTsKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1
bWVudFN0eWxlOwogICAgICAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJl
ZSgpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUgPSBTdHlsZTo6cmVzb2x2ZUZvckRv
Y3VtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1l
ZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21l
ZGlhKTsKLSAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yKGRvY3VtZW50
KCkuZnJhbWUoKS0+dmlldygpLT5tZWRpYVR5cGUoKSwgZG9jdW1lbnQoKS5mcmFtZSgpLCBkb2N1
bWVudFN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVh
dG9yKGRvY3VtZW50KCkuZnJhbWUoKS0+dmlldygpLT5tZWRpYVR5cGUoKSwgZG9jdW1lbnQoKS5m
cmFtZSgpLCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0cik7CiAgICAg
ICAgICAgICBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IGV2YWx1YXRvci5ldmFsKG1lZGlhLmdldCgpKTsK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNiw3ICs3MzYsNyBAQCBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAgICAgcmV0dXJuIGNvbnRyb2xzKCkgJiYgSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpOwogI2VuZGlmCiAKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGJvb2wgbWVkaWFDb250cm9sc0RlcGVuZE9u
UGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xzRGVwZW5kT25Q
YWdlU2NhbGVGYWN0b3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBSZWY8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6CiAgICAgcmV0dXJuIG1ldGVyOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5zdXBw
b3J0c01ldGVyKHN0eWxlLT5hcHBlYXJhbmNlKCkpKQorICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5hcHBlYXJhbmNlKCkpKQogICAgICAgICBy
ZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWV0ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc3VwcG9y
dExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3ICsyOTQsNyBAQCBOUE9iamVjdCog
SFRNTFBsdWdJbkVsZW1lbnQ6OmdldE5QT2JqZWN0CiAKICNlbmRpZiAvKiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkgKi8KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQgJiYgbV9wbHVn
aW5SZXBsYWNlbWVudC0+d2lsbENyZWF0ZVJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBtX3Bs
dWdpblJlcGxhY2VtZW50LT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoKnRoaXMsIFdURk1vdmUoc3R5
bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CiAKICAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCB1
c2UgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluc3RlYWQgb2YgY2FsbGluZyBkaXNw
YXRjaEJlZm9yZUxvYWRFdmVudCBkaXJlY3RseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRM
b2FkQXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRp
b25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBBU1NFUlQoIWRvY3Vt
ZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBmaW5h
bDsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIGZpbmFs
OwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOSArNTYsOSBAQCBSZWY8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2dyZXNzRWxl
CiAgICAgcmV0dXJuIHByb2dyZXNzOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAg
aWYgKCFzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQorICAgIGlmICghc3R5bGUuaGFzQXBwZWFyYW5j
ZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUHJvZ3Jlc3M+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBvdmVycmlkZTsKICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MoKSBjb25zdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6Y2FuU2VsZWN0QWxsKCkgYwogICAgIHJldHVybiAhdXNlc01lbnVMaXN0KCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKHVzZXNNZW51TGlz
dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBmaW5hbDsKIAog
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3QgZmlu
YWw7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIGJv
b2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgZmluYWw7CiAKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSFRNTFN1
bW1hcnlFbGVtZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1l
KHN1bW1hcnlUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTdW1tYXJ5
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFN1
bW1hcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3Ro
QXR0cmkKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtNTIzLDE3ICs1MjMsMTcgQEAgYm9vbCBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gSFRNTFRleHRB
cmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KSBjb25zdAorUmVuZGVyU3R5bGUgSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGF1dG8gdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPmlu
aGVyaXRGcm9tKCZzdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsICp0ZXh0
QmxvY2tTdHlsZSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAg
IHRleHRCbG9ja1N0eWxlLmluaGVyaXRGcm9tKCZzdHlsZSk7CisgICAgYWRqdXN0SW5uZXJUZXh0
U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0eWxlKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNw
bGF5KEJMT0NLKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBXZSdyZSBhZGRpbmcgdGhy
ZWUgZXh0cmEgcGl4ZWxzIG9mIHBhZGRpbmcgdG8gbGluZSB0ZXh0YXJlYXMgdXAgd2l0aCB0ZXh0
IGZpZWxkcy4gIAotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgoMywg
Rml4ZWQpKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCgzLCBG
aXhlZCkpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhl
ZCkpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgoMywgRml4ZWQp
KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRleHRCbG9ja1N0eWxlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVy
VGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95
ZWQoKTsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVT
dHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5u
ZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCA9IDA7CiAKICAgICB2b2lkIHNl
bGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAog
ICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IAogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZpZGVvPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3Bs
YXlNb2RlKCkgPT0gUG9zdGVyIHx8IGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZp
ZGVvOyB9CiAKICAgICBVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25zdDsKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1v
ZGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxX
QlJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJF
bGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
V0JSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgSFRNTFdCUkVs
ZW1lbnQ6OkhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YQogICAgIEFTU0VSVChoYXNUYWdOYW1lKHdi
clRhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxX
QlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTGluZUJyZWFrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFdCUkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFdCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAgYm9vbCBIaWRkZW5JbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0
VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgRm9ybUNvbnRy
b2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZy
b21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSW1h
Z2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXYKICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVySW1hZ2U+KGVsZW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBvdmVycmlkZTsKICAgICB2b2lkIGFsdEF0
dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQo
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBJbnB1dFR5
cGU6OmYKICAgICByZXR1cm4gZWxlbWVudCgpLmZvcm0oKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IElucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4oUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKGVsZW1lbnQo
KSwgV1RGTW92ZShzdHlsZSkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBNaXNjZWxsYW5lb3Vz
IGZ1bmN0aW9ucy4KIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCk7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgSFRNTEVsZW1l
bnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUaHVtYgogICAgIHJldHVybiAmdHlwZWRTbGlkZXJU
aHVtYkVsZW1lbnQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU2xpZGVyPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVu
dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9h
cmRFdmVudCopIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJ
bnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwog
ICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29u
c3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDExICs0MywxMSBAQCBSZWY8UnVieUVsZW1lbnQ+IFJ1YnlFbGVtZW50
OjpjcmVhdGUoY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUnVieUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRp
b24pCiB7Ci0gICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgIGlmIChzdHls
ZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyUnVieUFzSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgIGlmIChzdHlsZS0+
ZGlzcGxheSgpID09IEJMT0NLIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKQor
ICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUuZGlzcGxheSgpID09IElO
TElORV9CTE9DSykKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlBc0Js
b2NrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJ1YnlFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVi
eVRleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlU
ZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UnVieVRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFJl
ZjxSdWJ5VGV4dEVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3IKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSdWJ5VGV4dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieVRl
eHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICAvLyBSZW5k
ZXJSdWJ5VGV4dCByZXF1aXJlcyBpdHMgcGFyZW50IHRvIGJlIFJlbmRlclJ1YnlSdW4uCi0gICAg
aWYgKGlzUnVieShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5bGUtPmRpc3BsYXko
KSA9PSBCTE9DSykKKyAgICBpZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAm
JiBzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0spCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJSdWJ5VGV4dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9u
UG9zaXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBSdWJ5VGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjptYXhSZXN1bHRz
QXR0cmlidXQKICAgICAgICAgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZSgqbV9yZXN1bHRz
QnV0dG9uLCBlbGVtZW50KCkubWF4UmVzdWx0cygpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNlYXJjaElu
cHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTZWFyY2hGaWVsZD4oZWxlbWVudCgpLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgbWF4UmVzdWx0c0F0
dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRTdWJtaXRJbXAKICAgICAgICAgfHwgSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNp
dGx5KGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU+KGVsZW1lbnQoKSwgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCop
IGZpbmFsOwogICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50KikgZmluYWw7CiAgICAgYm9vbCBz
aG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50KikgZmluYWw7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VJbnB1dE1l
dGhvZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1
dGUoKSBvdmVycmlkZTsKICAgICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50KCkgY29u
c3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGMKIAogICAgIC8vIE1hcCB0aGUgPGNhbnZhcz4gZm9udCBpbnRvIHRoZSB0
ZXh0IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdvcmRzIGxpa2UgbGFyZ2VyL3NtYWxsZXIs
IHRoZXNlIHdpbGwgd29yawogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBjYW52YXMuCi0gICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIG5ld1N0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2Fu
dmFzKCktPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBAIERldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2VyQ29udHIKICAgICBzZXRQc2V1
ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWRldGFpbHMtbWFya2VyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0
YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRGV0YWlsc01hcmtlcj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNN
YXJrZXJDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGV0YWlsc01hcmtlckNvbnRyb2wuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERldGFpbHNNYXJrZXJDb250cm9s
KERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVuCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAg
LTMyNyw3ICszMjcsNyBAQCBSZWY8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkBAIC0xMDgyLDcgKzEwODIsNyBAQCBSZWY8TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVuCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvY3VtZW50
Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8SW1hZ2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2Uo
KSBvdmVycmlkZTsKICAgICB2b2lkIHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdl
ZChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZAogICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS5zdXBwb3J0
c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1l
dGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1ldGVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgTWV0ZXJJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBSZWY8TWV0
ZXJJbm5lckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIFByb2dyZXNzSW5uZXJFbGVtZW50OjpQcm9ncmVzc0lubmVyRWxlbWUKIHsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBQcm9ncmVz
c0lubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclByb2dyZXNzPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgaGFzVmVydGljYWxBcHBlYXJhbmNlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYihTbGlk
ZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTbGlkZXJUaHVtYjo6UmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wg
UmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSAKIC8vIGh0dHA6Ly93ZWJraXQub3Jn
L2IvNjI1MzUKIGNsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRl
ckNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCisgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyRmxleGlibGVC
b3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tCiAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlclRodW1iPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpAQCAtNjIzLDcgKzYyMyw3IEBAIFJlZjxTbGlkZXJDb250YWluZXJFbGVt
ZW50PiBTbGlkZXJDb250YWkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTbGlkZXJDb250YWlu
ZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFpbmVyPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KERv
Y3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMTksNyArMTE5LDcgQEAgaW5saW5lIFJlZjxT
bGlkZXJUaHVtYkVsZW1lbnQ+IFNsaWRlclRodQogCiBjbGFzcyBSZW5kZXJTbGlkZXJUaHVtYiBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclNsaWRl
clRodW1iKFNsaWRlclRodW1iRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4p
OworICAgIFJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUp
OwogCiBwcml2YXRlOgpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUqKSBvdmVycmlk
ZTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gVGV4
dENvbnRyCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cihkb2N1bWVudCkpOwogfQogICAgIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250
cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtNzcsNyArNzcsNyBAQCBSZWY8VGV4
dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sCiAKIE9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShSZW5kZXJTdHls
ZSYsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgYXV0byBpbm5lckNvbnRh
aW5lclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gaW5uZXJDb250YWlu
ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBpbm5lckNvbnRhaW5lclN0
eWxlLT5pbmhlcml0RnJvbShzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgaW5uZXJDb250YWluZXJT
dHlsZS0+c2V0RmxleEdyb3coMSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bAogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5u
ZXJCbG9jaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTEzNiw3ICsxMzYsOCBAQCBS
ZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sCiAKIE9wdGlvbmFsPEVsZW1l
bnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
UmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIHJldHVy
biBFbGVtZW50U3R5bGUoZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFk
b3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpKTsKKyAgICBh
dXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dI
b3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOworICAgIHJldHVy
biBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHls
ZSkpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IGNyZWF0ZShE
b2N1bWVudCYpOwogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9j
dW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiB9OwogCiBjbGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRGl2RWxlbWVudCB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGZpbmFsIDogcHVibGlj
IFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bihIVE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKCk7CiAKIHByaXZhdGU6CkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJv
cGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1SZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW1h
Z2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpkZWZhCiAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250
cm9sc0J1dHRvbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIEltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjKERvY3VtZW50Jik7CiAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIGlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21h
Yy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVySW1hZ2VDb250cm9s
cyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlcklt
YWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVySW1hZ2VDb250cm9scygpOwogCiBwcml2YXRlOgpAQCAtNDksNyAr
NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3Bh
Z2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUmVuZGVySW1h
Z2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckltYWdlQ29udHJvbHM6OlJl
bmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9
CkBAIC0xMDMsNyArMTAzLDcgQEAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VD
b250cgogewogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3VtZW50Jik7CiAKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94CiAgICAgcmV0dXJuIHRyYWNrRGlzcGxheUJveFNoYWRv
d1BzZXVkb0lkOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVC
b3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWVFRD
dWU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFZUVEN1ZUJveChEb2N1bWVudCYsIFZUVEN1ZSYpOwogCi0gICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgVlRUQ3VlJiBtX2N1ZTsKICAg
ICBpbnQgbV9mb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hpbGQKICAgICBNYXRoTUxFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIGlmIChoYXNUYWdOYW1lKGFubm90YXRpb25feG1sVGFnKSkKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvdz4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogICAgIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxNYXRoTUxNYXRoRWxlbWVudD4gTWF0
aE1MTWF0aEVsZW1lbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxNYXRoRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0
aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIE1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIFJlZjxNYXRoTUxNZW5jbG9zZUVsZW1lbnQ+IE1hdGhNTE1lbmNsb3MKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1lbmNsb3NlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
TWF0aE1MTWVuY2xvc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsgICAgCiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1lbmNsb3NlPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1l
bmNsb3NlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOwogICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0K
ICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykg
eyBtX25vdGF0aW9uRmxhZ3MgfD0gbm90YXRpb25GbGFnOyB9CiAgICAgdW5zaWduZWQgc2hvcnQg
bV9ub3RhdGlvbkZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIFJlZjxNYXRoTUxTZWxlY3RFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNYXRoTUxTZWxlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxl
Y3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTZWxl
Y3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWF0aE1MVGV4dEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGlu
c2VydGlvblBvc2l0aW9uKQogewogICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1Rh
ZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTFRleHRFbGVtZQogCiAgICAgLy8gRklYTUU6IHdoeSBkbyB3ZSBoYXZl
IHRvIHNldCB0aGUgYWxpZ25tZW50IGhlcmUgPyBJdCBzZWVtcyBuZWVkZWQgdG8gbWFrZSB0aGUK
ICAgICAvLyBzdHlsZS1jaGFuZ2VkLmh0bXQgdGVzdCB0byBwYXNzLCBzaW5jZSBtYXRobWwgcmVu
ZGVycyBleHBlY3QgU3RyZXRjaCBhcyBkZWZhdWx0LgotICAgIHN0eWxlLT5zZXRBbGlnbkl0ZW1z
UG9zaXRpb24oSXRlbVBvc2l0aW9uU3RyZXRjaCk7CisgICAgc3R5bGUuc2V0QWxpZ25JdGVtc1Bv
c2l0aW9uKEl0ZW1Qb3NpdGlvblN0cmV0Y2gpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlck1hdGhNTFRva2VuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MVGV4dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5OSwxMCAr
Mzc5OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAg
bV9zY3JvbGxDb3JuZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIW1fc2Ny
b2xsQ29ybmVyKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKGNvcm5l
clN0eWxlKSk7CisgICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKCpjb3JuZXJT
dHlsZSkpOwogICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZN
b3ZlKGNvcm5lclN0eWxlKSk7CisgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUo
V1RGTW92ZSgqY29ybmVyU3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihj
b3JuZXJSZWN0KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gQW5pbWF0aW9uQ28KICAgICBjb25zdCBDb21wb3NpdGVBbmltYXRpb24mIHJlbmRlcmVy
QW5pbWF0aW9ucyA9ICptX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZ2V0KCZyZW5kZXJlcik7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRpbmdTdHlsZSA9IHJlbmRlcmVyQW5p
bWF0aW9ucy5nZXRBbmltYXRlZFN0eWxlKCk7CiAgICAgaWYgKCFhbmltYXRpbmdTdHlsZSkKLSAg
ICAgICAgYW5pbWF0aW5nU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJlbmRlcmVyLnN0eWxl
KCkpOworICAgICAgICBhbmltYXRpbmdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5k
ZXJlci5zdHlsZSgpKTsKICAgICAKICAgICByZXR1cm4gYW5pbWF0aW5nU3R5bGU7CiB9CkBAIC02
MzcsNyArNjM3LDcgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpbwog
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmlt
YXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYg
KCFyZW5kZXJlci5pc0NTU0FuaW1hdGluZygpKQotICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6
OmNsb25lKCZyZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpj
bG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICByZXR1cm4gbV9kYXRhLT5nZXRBbmltYXRl
ZFN0eWxlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIENvbXBvc2l0
ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBv
ZiB0aGUgcHJvcGVydHksIHNvIHRoYXQgcmVzdGFydGVkIHRyYW5zaXRpb25zIHVzZSB0aGUgY29y
cmVjdCBzdGFydGluZyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1NQcm9w
ZXJ0eUFuaW1hdGlvbjo6YW5pbWF0aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQocHJvcCkgJiYg
aW1wbEFuaW0tPmlzQWNjZWxlcmF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbW9kaWZpZWRDdXJyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVkQ3VycmVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1cnJlbnRTdHls
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ3VycmVudFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpjdXJyZW50U3R5bGUpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW1wbEFuaW0tPmJsZW5kUHJvcGVydHlWYWx1ZUluU3R5bGUocHJvcCwg
bW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5p
bWF0aW9uLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5p
bWF0aW9uKEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJRCBhbmltYXRpbmdQcm9w
ZXJ0eSwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFu
aW0sIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpCiAgICAgOiBBbmltYXRpb25CYXNlKHRyYW5zaXRp
b24sIHJlbmRlcmVyLCBjb21wQW5pbSkKLSAgICAsIG1fZnJvbVN0eWxlKFJlbmRlclN0eWxlOjpj
bG9uZShmcm9tU3R5bGUpKQorICAgICwgbV9mcm9tU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCpmcm9tU3R5bGUpKQogICAgICwgbV90cmFuc2l0aW9uUHJvcGVydHkodHJhbnNpdGlvbi5wcm9w
ZXJ0eSgpKQogICAgICwgbV9hbmltYXRpbmdQcm9wZXJ0eShhbmltYXRpbmdQcm9wZXJ0eSkKIHsK
QEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3Np
dAogICAgIC8vIFJ1biBhIGN5Y2xlIG9mIGFuaW1hdGlvbi4KICAgICAvLyBXZSBrbm93IHdlIHdp
bGwgbmVlZCBhIG5ldyByZW5kZXIgc3R5bGUsIHNvIG1ha2Ugb25lIGlmIG5lZWRlZAogICAgIGlm
ICghYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZSh0YXJnZXRTdHlsZSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnRhcmdldFN0eWxlKTsKIAogICAgIGJvb2wgbmVlZHNBbmltID0gQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0aGlzLCBtX2FuaW1hdGluZ1Byb3BlcnR5LCBh
bmltYXRlZFN0eWxlLmdldCgpLCBtX2Zyb21TdHlsZS5nZXQoKSwgbV90b1N0eWxlLmdldCgpLCBw
cm9ncmVzcygpKTsKICAgICAvLyBGSVhNRTogd2UgYWxzbyBuZWVkIHRvIGRldGVjdCBjYXNlcyB3
aGVyZSB3ZSBoYXZlIHRvIHNvZnR3YXJlIGFuaW1hdGUgZm9yIG90aGVyIHJlYXNvbnMsCkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQKIHZv
aWQgSW1wbGljaXRBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIHsKICAgICBpZiAoIWFuaW1hdGVkU3R5bGUpCi0g
ICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUobV90b1N0eWxlLmdldCgp
KTsKKyAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbV90b1N0
eWxlKTsKIAogICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXModGhpcywg
bV9hbmltYXRpbmdQcm9wZXJ0eSwgYW5pbWF0ZWRTdHlsZS5nZXQoKSwgbV9mcm9tU3R5bGUuZ2V0
KCksIG1fdG9TdHlsZS5nZXQoKSwgcHJvZ3Jlc3MoKSk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAg
dm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6b25BbmltYXRpb25FbmQoZAogICAgIC8vIChjb21wYXJp
bmcgdGhlIG9sZCB1bmFuaW1hdGVkIHN0eWxlIHdpdGggdGhlIG5ldyBmaW5hbCBzdHlsZSBvZiB0
aGUgdHJhbnNpdGlvbikuCiAgICAgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBrZXlmcmFtZUFu
aW0gPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkobV9hbmlt
YXRpbmdQcm9wZXJ0eSk7CiAgICAgaWYgKGtleWZyYW1lQW5pbSkKLSAgICAgICAga2V5ZnJhbWVB
bmltLT5zZXRVbmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKG1fdG9TdHlsZS5nZXQo
KSkpOworICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFVuYW5pbWF0ZWRTdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKm1fdG9TdHlsZSkpOwogICAgIAogICAgIHNlbmRUcmFuc2l0aW9uRXZlbnQo
ZXZlbnROYW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCwgZWxhcHNlZFRpbWUpOwogICAgIGVuZEFu
aW1hdGlvbigpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnJl
c2V0KFJlbmRlclN0eWwKICAgICBBU1NFUlQodG8pOwogICAgIEFTU0VSVChtX2Zyb21TdHlsZSk7
CiAKLSAgICBtX3RvU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodG8pOworICAgIG1fdG9TdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdG8pOwogCiAgICAgLy8gUmVzdGFydCB0aGUgdHJh
bnNpdGlvbgogICAgIGlmIChtX2Zyb21TdHlsZSAmJiBtX3RvU3R5bGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKEFuaW1hdGlv
biYgYW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3Np
dGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRT
dHlsZSkKICAgICA6IEFuaW1hdGlvbkJhc2UoYW5pbWF0aW9uLCByZW5kZXJlciwgY29tcG9zaXRl
QW5pbWF0aW9uKQogICAgICwgbV9rZXlmcmFtZXMoYW5pbWF0aW9uLm5hbWUoKSkKLSAgICAsIG1f
dW5hbmltYXRlZFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSh1bmFuaW1hdGVkU3R5bGUpKQorICAg
ICwgbV91bmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1bmFuaW1hdGVkU3R5
bGUpKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKICAgICAvLyBHZXQgdGhlIGtleWZyYW1lIFJl
bmRlclN0eWxlcwpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFu
aW1hdGUoQ29tcG9zaXQKICAgICAvLyBJZiBzbywgd2UgbmVlZCB0byBzZW5kIGJhY2sgdGhlIHRh
cmdldFN0eWxlLgogICAgIGlmIChwb3N0QWN0aXZlKCkpIHsKICAgICAgICAgaWYgKCFhbmltYXRl
ZFN0eWxlKQotICAgICAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0
YXJnZXRTdHlsZSk7CisgICAgICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCp0YXJnZXRTdHlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE2MSw3ICsxNjEsNyBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0
CiAgICAgLy8gUnVuIGEgY3ljbGUgb2YgYW5pbWF0aW9uLgogICAgIC8vIFdlIGtub3cgd2Ugd2ls
bCBuZWVkIGEgbmV3IHJlbmRlciBzdHlsZSwgc28gbWFrZSBvbmUgaWYgbmVlZGVkLgogICAgIGlm
ICghYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZSh0YXJnZXRTdHlsZSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnRhcmdldFN0eWxlKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGJlIG1v
cmUgZWZmaWNpZW50IGFib3V0IGRldGVybWluaW5nIHdoaWNoIGtleWZyYW1lcyB3ZSBhcmUgYW5p
bWF0aW5nIGJldHdlZW4uCiAgICAgLy8gV2Ugc2hvdWxkIGNhY2hlIHRoZSBsYXN0IHBhaXIgb3Ig
c29tZXRoaW5nLgpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246Omdl
dEFuaW1hdGVkU3R5bGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFhbmltYXRlZFN0eWxl
KQotICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZtX29iamVjdC0+
c3R5bGUoKSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
bV9vYmplY3QtPnN0eWxlKCkpOwogCiAgICAgZm9yIChhdXRvIHByb3BlcnR5SUQgOiBtX2tleWZy
YW1lcy5wcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgLy8gR2V0IHRoZSBmcm9tL3RvIHN0eWxlcyBh
bmQgcHJvZ3Jlc3MgYmV0d2VlbgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckF0dGFjaG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotUmVuZGVyQXR0YWNobWVudDo6UmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJB
dHRhY2htZW50OjpSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBMYXlvdXRTaXplKCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogCiBjbGFzcyBSZW5k
ZXJBdHRhY2htZW50IGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQmIGF0dGFj
aG1lbnRFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDEyICsxODEsMTIgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFkVmVydGljYWxMYXlvdXRPdmVyZmxvdzsKIH07CiAKLVJl
bmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJC
bG9jazo6UmVuZGVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwg
QmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewogfQogCi1S
ZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5k
ZXJCbG9jazo6UmVuZGVyQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1l
bnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewog
fQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGkKICAgICAgICAgZm9yIChSZW5kZXJCbG9jayogY3VyckNvbnQgPSBibG9ja0VsZW1lbnRD
b250aW51YXRpb24oKTsgY3VyckNvbnQ7IGN1cnJDb250ID0gY3VyckNvbnQtPmJsb2NrRWxlbWVu
dENvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbmV4
dENvbnQgPSBjdXJyQ29udC0+Y29udGludWF0aW9uKCk7CiAgICAgICAgICAgICBjdXJyQ29udC0+
c2V0Q29udGludWF0aW9uKDApOwotICAgICAgICAgICAgY3VyckNvbnQtPnNldFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZSgmbmV3U3R5bGUpKTsKKyAgICAgICAgICAgIGN1cnJDb250LT5zZXRTdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUpKTsKICAgICAgICAgICAgIGN1cnJDb250LT5z
ZXRDb250aW51YXRpb24obmV4dENvbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzkxLDcgKzM5
MSw3IEBAIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNsb24KICAgICAgICAg
Y2xvbmVCbG9jay0+c2V0Q2hpbGRyZW5JbmxpbmUoY2hpbGRyZW5JbmxpbmUoKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgUmVuZGVyVHJlZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uKCpwYXJl
bnQoKSk7Ci0gICAgICAgIGNsb25lQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFJlbmRlckJs
b2NrPihlbGVtZW50KCktPmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZTo6Y2xvbmUo
JnN0eWxlKCkpLCBpbnNlcnRpb25Qb3NpdGlvbikpOworICAgICAgICBjbG9uZUJsb2NrID0gc3Rh
dGljX3BvaW50ZXJfY2FzdDxSZW5kZXJCbG9jaz4oZWxlbWVudCgpLT5jcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKCkpLCBpbnNlcnRpb25Qb3NpdGlvbikpOwog
ICAgICAgICBjbG9uZUJsb2NrLT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBUaGlz
IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgcmlnaHQgdmFsdWUgb2YgY2hpbGRyZW5JbmxpbmUg
aW4gY2FzZQpAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxk
KFJlbmRlck9iamUKICAgICAgICAgICAgIEFTU0VSVCghaW5saW5lQ2hpbGRyZW5CbG9jay5jb250
aW51YXRpb24oKSk7CiAgICAgICAgICAgICAvLyBDYWNoZSB0aGlzIHZhbHVlIGFzIGl0IG1pZ2h0
IGdldCBjaGFuZ2VkIGluIHNldFN0eWxlKCkgY2FsbC4KICAgICAgICAgICAgIGJvb2wgaW5saW5l
Q2hpbGRyZW5CbG9ja0hhc0xheWVyID0gaW5saW5lQ2hpbGRyZW5CbG9jay5oYXNMYXllcigpOwot
ICAgICAgICAgICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAg
ICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spKTsKICAgICAgICAgICAgIHJlbW92
ZUNoaWxkSW50ZXJuYWwoaW5saW5lQ2hpbGRyZW5CbG9jaywgaW5saW5lQ2hpbGRyZW5CbG9ja0hh
c0xheWVyID8gTm90aWZ5Q2hpbGRyZW4gOiBEb250Tm90aWZ5Q2hpbGRyZW4pOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBOb3cganVzdCBwdXQgdGhlIGlubGluZUNoaWxkcmVuQmxvY2sg
aW5zaWRlIHRoZSBibG9ja0NoaWxkcmVuQmxvY2suCkBAIC0zMDY4LDkgKzMwNjgsOSBAQCB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlCiAgICAgICAgIC8vIFRoZSBmaXJz
dC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5k
ZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5l
d0ZpcnN0TGV0dGVyOwogICAgICAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElO
RSkKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnBzZXVkb1N0eWxlKSk7CisgICAgICAgICAgICBuZXdG
aXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHBzZXVkb1N0eWxlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0
dGVyID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
JnBzZXVkb1N0eWxlKSk7CisgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJC
bG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAg
ICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBN
b3ZlIHRoZSBmaXJzdCBsZXR0ZXIgaW50byB0aGUgbmV3IHJlbmRlcmVyLgpAQCAtMzA5Niw3ICsz
MDk2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZQogICAgICAg
ICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRh
aW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5
bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShw
c2V1ZG9TdHlsZSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJl
bmRlcmVyKFJlbmRlckVsZW1lbnQqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlclRleHQqIGN1cnJl
bnRUZXh0Q2hpbGQpCkBAIC0zMTA1LDkgKzMxMDUsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVh
dGVGaXJzdExldHRlclJlbmRlCiAgICAgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlID0gc3R5bGVG
b3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7CiAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGZpcnN0TGV0dGVyID0gbnVsbHB0cjsKICAgICBpZiAo
cHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElORSkKLSAgICAgICAgZmlyc3RMZXR0ZXIgPSBu
ZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5
bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCks
IFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAgIGVsc2UKLSAgICAgICAgZmly
c3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpj
bG9uZSgmcHNldWRvU3R5bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxv
Y2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAg
IGZpcnN0TGV0dGVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBmaXJzdExldHRlckNvbnRhaW5l
ci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIGN1cnJlbnRUZXh0Q2hpbGQpOwogCkBAIC0zNzQzLDkg
KzM3NDMsOSBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91CiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29udmVydCBhbGwgb3VyIGlubGluZSBkaXNwbGF5cyB0
byBibG9jay10eXBlIGluIHRoZSBhbm9ueW1vdXMgbG9naWMgPwogICAgIFJlbmRlckJsb2NrKiBu
ZXdCb3g7CiAgICAgaWYgKGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVY
KQotICAgICAgICBuZXdCb3ggPSBuZXcgUmVuZGVyRmxleGlibGVCb3gocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50
LT5zdHlsZSgpLCBGTEVYKSk7CisgICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJGbGV4aWJsZUJv
eChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgRkxFWCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3
Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCksIEJMT0NL
KSk7CisgICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJCbG9ja0Zsb3cocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQt
PnN0eWxlKCksIEJMT0NLKSk7CiAKICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwogICAg
IHJldHVybiBuZXdCb3g7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIGZyaWVu
ZCBjbGFzcyBMaW5lTGF5b3V0U3RhdGU7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCbG9jayhF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0g
ICAgUmVuZGVyQmxvY2soRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBC
YXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwg
QmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQmxvY2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCiBwdWJsaWM6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgUmVuZGVyQmxvY2tGbG93
OjpNYXJnaW5JbmZvOjpNYXJnaW5JbmZvKAogICAgIG1fbmVnYXRpdmVNYXJnaW4gPSAobV9jYW5D
b2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhDaGlsZHJlbiAmJiAhYmxvY2subXVzdERpc2NhcmRNYXJn
aW5CZWZvcmUoKSkgPyBibG9jay5tYXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpIDogTGF5b3V0VW5p
dCgpOwogfQogCi1SZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93
OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zs
b3dGbGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZv
clRleHRBdXRvc2l6aW5nKC0xKQpAQCAtMTA0LDcgKzEwNCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6
UmVuZGVyQmxvY2tGbG93KEVsZW1lbnQKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0K
IAotUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93OjpSZW5k
ZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dG
bGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZvclRl
eHRBdXRvc2l6aW5nKC0xKQpAQCAtMTIwLDcgKzEyMCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6flJl
bmRlckJsb2NrRmxvdygpCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVNdWx0aUNvbHVt
bkZsb3dUaHJlYWQoKQogewotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKSk7
CisgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmV3IFJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZChkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwogICAgIGZsb3dUaHJlYWQt
PmluaXRpYWxpemVTdHlsZSgpOwogICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gRG8g
dGhpcyB0byBhdm9pZCB3cmFwcGluZyBpbmxpbmUgY2hpbGRyZW4gdGhhdCBhcmUganVzdCBnb2lu
ZyB0byBtb3ZlIGludG8gdGhlIGZsb3cgdGhyZWFkLgogICAgIGRlbGV0ZUxpbmVzKCk7CkBAIC0y
MDM3LDcgKzIwMzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5
CiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKQog
ewogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkICYmIChjaGls
ZC0+aXNJbkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgfHwgY2hpbGQtPmlzUmVuZGVyTXVsdGlDb2x1
bW5TZXQoKSk7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgIGNoaWxk
LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgY2hpbGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiB9CiAKIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCAr
NTUsOCBAQCBlbnVtIExpbmVDb3VudCB7CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdyA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3co
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckJsb2NrRmxvdygpOwogICAgICAg
ICAKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcg
QEAgc3RhdGljIGJvb2wgc2tpcEJvZHlCYWNrZ3JvdW5kKGNvbnN0IFJlbgogICAgICAgICAmJiAo
ZG9jdW1lbnRFbGVtZW50UmVuZGVyZXIgPT0gYm9keUVsZW1lbnRSZW5kZXJlci0+cGFyZW50KCkp
OwogfQogCi1SZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitS
ZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVj
dChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgo
LTEpCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxl
bWVudCwgcwogICAgIHNldElzQm94KCk7CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5
cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJh
c2VUeXBlRmxhZ3MpCiAgICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAs
IG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsOCArNjMwLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlbmRlckJveCogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJveChFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQm94KERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAg
UmVuZGVyQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJCb3goRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAg
IHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdAogICAgIGxheWVyKCktPmJhY2tpbmcoKS0+
c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5k
ZXJCb3hNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJl
bmRlckJveE1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJl
bmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94
TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxh
Z3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzOCw4ICsyMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNvbnRpbnVhdGlvbigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJh
c2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyk7CiAKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1SZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRy
b2xFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9idXR0b25UZXh0KDApCiAgICAgLCBtX2lubmVyKDAp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogLy8g
dG8gZGF0ZSBhcyB0aGUgYnV0dG9uIGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24gZmluYWwg
OiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJCdXR0b24oKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQmIGZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OnN0eWxlRGlkQ2hh
bmdlKFMKICAgICAvLyBjbG9iYmVyaW5nIHdpZHRoIHZhcmlhbnRzIGFuZCBzaHJpbmstdG8tZml0
IGNoYW5nZXMsIHNpbmNlIHdlIHdvbid0IHJlY29tYmluZSB3aGVuCiAgICAgLy8gdGhlIGZvbnQg
ZG9lc24ndCBjaGFuZ2UuCiAgICAgaWYgKCFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+Zm9udENhc2Nh
ZGUoKSAhPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkpCi0gICAgICAgIG1fY29tYmluZUZvbnRTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSk7CisgICAgICAgIG1fY29tYmluZUZvbnRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihzdHlsZSgpKTsKIAogICAgIFJlbmRlclRleHQ6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX29yZGluYWxJdGVyYXRpb247CiB9OwogCi1SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8g
QWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJsb2NrLWxldmVsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xh
c3MgRmxleEJveEl0ZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goKTsKIAogICAgIEVsZW1l
bnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0
YWlsc01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1SZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNN
YXJrZXJDb250cm9sJiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2Vy
Q29udHJvbCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2Nr
RmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlckRldGFpbHNNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxz
TWFya2VyQ29udHJvbCYsIFJlbmRlclN0eWxlJiYpOwogICAgIERldGFpbHNNYXJrZXJDb250cm9s
JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc01hcmtlckNvbnRy
b2wmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKICAgICBlbnVtIE9yaWVudGF0aW9uIHsg
VXAsIERvd24sIExlZnQsIFJpZ2h0IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udAogICAgIHJldHVybiBt
YXA7CiB9CiAKLWlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnRhaW5lck5v
ZGUmIGVsZW1lbnRPckRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitpbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVu
ZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0
KGVsZW1lbnRPckRvY3VtZW50KQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3Mp
CiAgICAgLCBtX2FuY2VzdG9yTGluZUJveERpcnR5KGZhbHNlKQpAQCAtMTA0LDEyICsxMDQsMTIg
QEAgaW5saW5lIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoQ29udAogewogfQogCi1SZW5k
ZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRl
ckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChz
dGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZWxlbWVudCksIFdURk1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzKQogewogfQogCi1SZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVG
bGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVG
bGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSY+KGRv
Y3VtZW50KSwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9CkBAIC0xMTcsMjQg
KzExNywyNCBAQCBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkCiBSZW5k
ZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAgaWYgKGhhc0luaXRpYWxpemVkU3R5
bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUt
PmJhY2tncm91bmRMYXllcnMoKTsgYmdMYXllcjsgYmdMYXllciA9IGJnTGF5ZXItPm5leHQoKSkg
eworICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dy
b3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dyb3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2Uo
KSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBt
X3N0eWxlLT5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fc3R5
bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgp
KSB7CiAgICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0ltYWdlID0gbWFza0xheWVyLT5p
bWFnZSgpKQogICAgICAgICAgICAgICAgIG1hc2tJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlID0gbV9zdHls
ZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVy
SW1hZ2UgPSBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIGJvcmRl
ckltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1h
c2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlm
IChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdl
KCkpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICBpZiAoYXV0byBzaGFwZVZhbHVlID0gbV9zdHls
ZS0+c2hhcGVPdXRzaWRlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2hhcGVWYWx1ZSA9IG1fc3R5
bGUuc2hhcGVPdXRzaWRlKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHNoYXBlSW1hZ2UgPSBz
aGFwZVZhbHVlLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgUmVuZGVyRWxlbWVu
dDo6flJlbmRlckVsZW1lbnQoKQogICAgICAgICB2aWV3KCkudW5yZWdpc3RlckZvclZpc2libGVJ
blZpZXdwb3J0Q2FsbGJhY2soKnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7
CiAgICAgLy8gTWluaW1hbCBzdXBwb3J0IGZvciBjb250ZW50IHByb3BlcnRpZXMgcmVwbGFjaW5n
IGFuIGVudGlyZSBlbGVtZW50LgogICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5
IG9uZSBwaWVjZSBvZiBjb250ZW50IGFuZCBpdCdzIGEgVVJMLgogICAgIC8vIE90aGVyd2lzZSBh
Y3RzIGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KLSAgICBjb25zdCBDb250
ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKKyAgICBjb25zdCBD
b250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOwogICAgIGlmIChj
b250ZW50RGF0YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBpczxJbWFnZUNvbnRlbnREYXRh
PigqY29udGVudERhdGEpICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAg
IGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERh
dGEpLmltYWdlKCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJ
bWFnZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KCZz
dHlsZUltYWdlKSk7CkBAIC0xNTksNyArMTU5LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFJlbmRlckVsZW1lbnQ6OgogICAgICAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiAgICAgfQog
Ci0gICAgc3dpdGNoIChzdHlsZS0+ZGlzcGxheSgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5kaXNw
bGF5KCkpIHsKICAgICBjYXNlIE5PTkU6CiAgICAgY2FzZSBDT05URU5UUzoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0zNzUsMTQgKzM3NSwxNCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omlu
aXRpYWxpemVTdHlsZSgpCiAKICAgICBtX2hhc0luaXRpYWxpemVkU3R5bGUgPSB0cnVlOwogCi0g
ICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkp
OwotICAgIHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS0+bWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUuYmFja2dyb3VuZExheWVycygp
KTsKKyAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
IAotICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KSk7Ci0gICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS0+bWFza0JveEltYWdlKCkuaW1h
Z2UoKSk7CisgICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS5ib3JkZXJJbWFnZSgpLmlt
YWdlKCkpOworICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUubWFza0JveEltYWdlKCku
aW1hZ2UoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB1cGRhdGVTaGFwZUltYWdl
KG51bGxwdHIsIG1fc3R5bGUtPnNoYXBlT3V0c2lkZSgpKTsKKyAgICB1cGRhdGVTaGFwZUltYWdl
KG51bGxwdHIsIG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpOwogI2VuZGlmCiAKICAgICBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2VOZXdTdHlsZSwgbnVsbHB0cik7CkBAIC0zOTQsNyArMzk0
LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojppbml0aWFsaXplU3R5bGUoKQogICAgIC8vIGhhdmUg
dGhlaXIgcGFyZW50IHNldCBiZWZvcmUgZ2V0dGluZyBhIGNhbGwgdG8gaW5pdGlhbGl6ZVN0eWxl
KCkgOnwKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGlmZmVyZW5j
ZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5
bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2UpCiB7CiAgICAgLy8gRklYTUU6IFNo
b3VsZCBjaGFuZ2UgUmVuZGVyVmlldyBzbyBpdCBjYW4gdXNlIGluaXRpYWxpemVTdHlsZSB0b28u
CiAgICAgLy8gSWYgd2UgZG8gdGhhdCwgd2UgY2FuIGFzc2VydCBtX2hhc0luaXRpYWxpemVkU3R5
bGUgdW5jb25kaXRpb25hbGx5LApAQCAtNDA0LDM0ICs0MDQsMzQgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZQogICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmID0gU3R5
bGVEaWZmZXJlbmNlRXF1YWw7CiAgICAgdW5zaWduZWQgY29udGV4dFNlbnNpdGl2ZVByb3BlcnRp
ZXMgPSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlOb25lOwogICAgIGlmIChtX2hhc0luaXRpYWxp
emVkU3R5bGUpCi0gICAgICAgIGRpZmYgPSBtX3N0eWxlLT5kaWZmKCpzdHlsZSwgY29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMpOworICAgICAgICBkaWZmID0gbV9zdHlsZS5kaWZmKHN0eWxlLCBj
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAKICAgICBkaWZmID0gc3RkOjptYXgoZGlmZiwg
bWluaW1hbFN0eWxlRGlmZmVyZW5jZSk7CiAKICAgICBkaWZmID0gYWRqdXN0U3R5bGVEaWZmZXJl
bmNlKGRpZmYsIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKIAotICAgIHN0eWxlV2lsbENo
YW5nZShkaWZmLCAqc3R5bGUpOworICAgIHN0eWxlV2lsbENoYW5nZShkaWZmLCBzdHlsZSk7CiAK
ICAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92ZShtX3N0eWxlKTsKICAgICBtX3N0eWxlID0gV1RG
TW92ZShzdHlsZSk7CiAKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlLT5iYWNrZ3JvdW5k
TGF5ZXJzKCksIG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7Ci0gICAgdXBkYXRlRmlsbElt
YWdlcyhvbGRTdHlsZS0+bWFza0xheWVycygpLCBtX3N0eWxlLT5tYXNrTGF5ZXJzKCkpOworICAg
IHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUuYmFja2dyb3VuZExheWVycygpLCBtX3N0eWxlLmJh
Y2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS5tYXNrTGF5
ZXJzKCksIG1fc3R5bGUubWFza0xheWVycygpKTsKIAotICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxl
LT5ib3JkZXJJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSk7
Ci0gICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCksIG1fc3R5
bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpOworICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlLmJv
cmRlckltYWdlKCkuaW1hZ2UoKSwgbV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpOworICAg
IHVwZGF0ZUltYWdlKG9sZFN0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUubWFz
a0JveEltYWdlKCkuaW1hZ2UoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB1cGRh
dGVTaGFwZUltYWdlKG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSwgbV9zdHlsZS0+c2hhcGVPdXRz
aWRlKCkpOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUuc2hhcGVPdXRzaWRlKCksIG1f
c3R5bGUuc2hhcGVPdXRzaWRlKCkpOwogI2VuZGlmCiAKICAgICBib29sIGRvZXNOb3ROZWVkTGF5
b3V0ID0gIXBhcmVudCgpOwogCi0gICAgc3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUuZ2V0
KCkpOworICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYsICZvbGRTdHlsZSk7CiAKICAgICAvLyBUZXh0
IHJlbmRlcmVycyB1c2UgdGhlaXIgcGFyZW50IHN0eWxlLiBOb3RpZnkgdGhlbSBhYm91dCB0aGUg
Y2hhbmdlLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJUZXh0
PigqdGhpcykpCi0gICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlLmdl
dCgpKTsKKyAgICAgICAgY2hpbGQuc3R5bGVEaWRDaGFuZ2UoZGlmZiwgJm9sZFN0eWxlKTsKIAog
ICAgIC8vIEZJWE1FOiB8dGhpc3wgbWlnaHQgYmUgZGVzdHJveWVkIGhlcmUuIFRoaXMgY2FuIGN1
cnJlbnRseSBoYXBwZW4gZm9yIGEgUmVuZGVyVGV4dEZyYWdtZW50IHdoZW4KICAgICAvLyBpdHMg
Zmlyc3QtbGV0dGVyIGJsb2NrIGdldHMgYW4gdXBkYXRlIGluIFJlbmRlclRleHRGcmFnbWVudDo6
c3R5bGVEaWRDaGFuZ2UuIEZvciBSZW5kZXJUZXh0RnJhZ21lbnQocyksCkBAIC00NDgsOSArNDQ4
LDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZQogICAgICAgICBp
ZiAodXBkYXRlZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQogICAgICAgICAgICAgc2V0
TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0
ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkpCi0g
ICAgICAgICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZS5nZXQo
KSk7CisgICAgICAgICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5
bGUpOwogICAgICAgICBlbHNlIGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50KSB7Ci0gICAgICAgICAgICBzZXROZWVk
c1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBz
ZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5bGUpOwogICAgICAgICAgICAg
c2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwogICAgICAgICB9IGVsc2UgaWYg
KHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpCiAgICAgICAg
ICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7CkBAIC03ODIsMTggKzc4
MiwxOCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9uCiAgICAgICAg
IGlmIChpczxSZW5kZXJGbG93VGhyZWFkPihlbGVtZW50Q2hpbGQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBlbGVtZW50Q2hpbGQuc3R5bGUoKS5kaXNw
bGF5KCkpOworICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlzcGxh
eSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAgICAg
ICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAgICAg
ICAgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oJnN0eWxlKCkp
OworICAgICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgm
c3R5bGUoKSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuY29sdW1uU3Bh
bigpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOworICAgICAgICAgICAgICAgIG5ld1N0eWxlLnNldENvbHVtblNwYW4oQ29sdW1uU3BhbkFs
bCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgcG9zaXRpb24gc3R5bGUg
b2YgYW5vbnltb3VzIGJsb2NrIGNvbnRpbnVhdGlvbnMgYXMgdGhleSBjYW4gaGF2ZSByZWxhdGl2
ZSBvciBzdGlja3kgcG9zaXRpb24gd2hlbgogICAgICAgICAvLyB0aGV5IGNvbnRhaW4gYmxvY2sg
ZGVzY2VuZGFudHMgb2YgcmVsYXRpdmUgb3Igc3RpY2t5IHBvc2l0aW9uZWQgaW5saW5lcy4KICAg
ICAgICAgaWYgKGVsZW1lbnRDaGlsZC5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oZWxlbWVudENoaWxkKS5pc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkp
Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24oZWxlbWVudENoaWxkLnN0eWxlKCku
cG9zaXRpb24oKSk7CisgICAgICAgICAgICBuZXdTdHlsZS5zZXRQb3NpdGlvbihlbGVtZW50Q2hp
bGQuc3R5bGUoKS5wb3NpdGlvbigpKTsKIAogICAgICAgICBlbGVtZW50Q2hpbGQuc2V0U3R5bGUo
V1RGTW92ZShuZXdTdHlsZSkpOwogICAgIH0KQEAgLTgxMCw5ICs4MTAsOSBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgaWYgKG9sZFN0eWxlKSB7CiAgICAg
ICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZpc2liaWxpdHkgY2hh
bmdlcywKICAgICAgICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGV4dCdz
IHotb3JkZXIgbGlzdC4KLSAgICAgICAgYm9vbCB2aXNpYmlsaXR5Q2hhbmdlZCA9IG1fc3R5bGUt
PnZpc2liaWxpdHkoKSAhPSBuZXdTdHlsZS52aXNpYmlsaXR5KCkKLSAgICAgICAgICAgIHx8IG1f
c3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLnpJbmRleCgpCi0gICAgICAgICAgICB8fCBtX3N0
eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUuaGFzQXV0b1pJbmRleCgpOworICAgICAg
ICBib29sIHZpc2liaWxpdHlDaGFuZ2VkID0gbV9zdHlsZS52aXNpYmlsaXR5KCkgIT0gbmV3U3R5
bGUudmlzaWJpbGl0eSgpCisgICAgICAgICAgICB8fCBtX3N0eWxlLnpJbmRleCgpICE9IG5ld1N0
eWxlLnpJbmRleCgpCisgICAgICAgICAgICB8fCBtX3N0eWxlLmhhc0F1dG9aSW5kZXgoKSAhPSBu
ZXdTdHlsZS5oYXNBdXRvWkluZGV4KCk7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQog
ICAgICAgICBpZiAodmlzaWJpbGl0eUNoYW5nZWQpCiAgICAgICAgICAgICBkb2N1bWVudCgpLnNl
dEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0ZSBpZiB2aXNp
YmlsaXR5IGNoYW5nZXMuCi0gICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3
U3R5bGUudmlzaWJpbGl0eSgpKSB7CisgICAgICAgIGlmIChtX3N0eWxlLnZpc2liaWxpdHkoKSAh
PSBuZXdTdHlsZS52aXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciog
bGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxl
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQogICAgICAgICAgICAgICAgICAgICBsYXllci0+c2V0
SGFzVmlzaWJsZUNvbnRlbnQoKTsKQEAgLTgzOSwxNiArODM5LDE3IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5bGUt
Pm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkp
CisgICAgICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5
bGUub3V0bGluZVNpemUoKSB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYp
KSkKICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgaWYgKGlzRmxvYXRpbmcoKSAmJiAo
bV9zdHlsZS0+ZmxvYXRpbmcoKSAhPSBuZXdTdHlsZS5mbG9hdGluZygpKSkKKyAgICAgICAgaWYg
KGlzRmxvYXRpbmcoKSAmJiBtX3N0eWxlLmZsb2F0aW5nKCkgIT0gbmV3U3R5bGUuZmxvYXRpbmco
KSkgewogICAgICAgICAgICAgLy8gRm9yIGNoYW5nZXMgaW4gZmxvYXQgc3R5bGVzLCB3ZSBuZWVk
IHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJzZWx2ZXMKICAgICAgICAgICAgIC8vIGZyb20gdGhl
IGZsb2F0aW5nIG9iamVjdHMgbGlzdC4KICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJveD4o
KnRoaXMpLnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpOwot
ICAgICAgICBlbHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAobV9zdHlsZS0+cG9z
aXRpb24oKSAhPSBuZXdTdHlsZS5wb3NpdGlvbigpKSkKKyAgICAgICAgfSBlbHNlIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBtX3N0eWxlLnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUucG9z
aXRpb24oKSkgewogICAgICAgICAgICAgLy8gRm9yIGNoYW5nZXMgaW4gcG9zaXRpb25pbmcgc3R5
bGVzLCB3ZSBuZWVkIHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJzZWx2ZXMKICAgICAgICAgICAg
IC8vIGZyb20gdGhlIHBvc2l0aW9uZWQgb2JqZWN0cyBsaXN0LgogICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyQm94PigqdGhpcykucmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21C
bG9ja0xpc3RzKCk7CisgICAgICAgIH0KIAogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9
IGlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKQogICAgICAgICAgICAgJiYgKCFuZXdT
dHlsZS5pc0Zsb2F0aW5nKCkgJiYgIW5ld1N0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCkBA
IC04NzMsNyArODc0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5
bAogICAgIH0KIAogICAgIGJvb2wgbmV3U3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcyA9IG5ld1N0
eWxlLmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7Ci0gICAgYm9vbCBvbGRTdHlsZVVzZXNGaXhl
ZEJhY2tncm91bmRzID0gbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICBi
b29sIG9sZFN0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMgPSBtX3N0eWxlLmhhc0ZpeGVkQmFja2dy
b3VuZEltYWdlKCk7CiAgICAgaWYgKG5ld1N0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMgfHwgb2xk
U3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcykgewogICAgICAgICBib29sIHJlcGFpbnRGaXhlZEJh
Y2tncm91bmRzT25TY3JvbGwgPSAhZnJhbWUoKS5zZXR0aW5ncygpLmZpeGVkQmFja2dyb3VuZHNQ
YWludFJlbGF0aXZlVG9Eb2N1bWVudCgpOwogCkBAIC04ODUsNyArODg2LDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICAgICAgICAgIGlmIChuZXdT
dHlsZVNsb3dTY3JvbGwgJiYgbmV3U3R5bGUuaGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSkK
ICAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7CiAKLSAgICAg
ICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICYmIG1fc3R5bGUtPmhhc0VudGlyZWx5
Rml4ZWRCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9s
bCAmJiBtX3N0eWxlLmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCiAgICAgICAgICAgICAg
ICAgICAgIG9sZFN0eWxlU2xvd1Njcm9sbCA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC05ODAsMTQgKzk4MSwxNCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoZGlmZiA9PSBTdHlsZURp
ZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0
KSB7Ci0gICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2VkKCp0aGlzLCBv
bGRTdHlsZSwgbV9zdHlsZS5nZXQoKSk7CisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVy
U3R5bGVDaGFuZ2VkKCp0aGlzLCBvbGRTdHlsZSwgJm1fc3R5bGUpOwogCiAgICAgICAgIC8vIElm
IHRoZSBvYmplY3QgYWxyZWFkeSBuZWVkcyBsYXlvdXQsIHRoZW4gc2V0TmVlZHNMYXlvdXQgd29u
J3QgZG8KICAgICAgICAgLy8gYW55IHdvcmsuIEJ1dCBpZiB0aGUgY29udGFpbmluZyBibG9jayBo
YXMgY2hhbmdlZCwgdGhlbiB3ZSBtYXkgbmVlZAogICAgICAgICAvLyB0byBtYXJrIHRoZSBuZXcg
Y29udGFpbmluZyBibG9ja3MgZm9yIGxheW91dC4gVGhlIGNoYW5nZSB0aGF0IGNhbgogICAgICAg
ICAvLyBkaXJlY3RseSBhZmZlY3QgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgdGhpcyBvYmplY3Qg
aXMgYSBjaGFuZ2UgdG8KICAgICAgICAgLy8gdGhlIHBvc2l0aW9uIHN0eWxlLgotICAgICAgICBp
ZiAobmVlZHNMYXlvdXQoKSAmJiBvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBtX3N0eWxlLT5wb3Np
dGlvbigpKQorICAgICAgICBpZiAobmVlZHNMYXlvdXQoKSAmJiBvbGRTdHlsZS0+cG9zaXRpb24o
KSAhPSBtX3N0eWxlLnBvc2l0aW9uKCkpCiAgICAgICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nr
c0ZvckxheW91dCgpOwogCiAgICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91
dCkKQEAgLTEwNTUsNyArMTA1Niw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlUmVtb3Zl
ZEZyb21UcmUKICAgICAgICAgcmVtb3ZlTGF5ZXJzKGxheWVyKTsKICAgICB9CiAKLSAgICBpZiAo
bV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSAmJiAhZnJhbWUoKS5zZXR0aW5ncygp
LmZpeGVkQmFja2dyb3VuZHNQYWludFJlbGF0aXZlVG9Eb2N1bWVudCgpKQorICAgIGlmIChtX3N0
eWxlLmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgJiYgIWZyYW1lKCkuc2V0dGluZ3MoKS5maXhl
ZEJhY2tncm91bmRzUGFpbnRSZWxhdGl2ZVRvRG9jdW1lbnQoKSkKICAgICAgICAgdmlldygpLmZy
YW1lVmlldygpLnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KHRoaXMpOwogCiAgICAgaWYgKGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwxMSArMzYsMTEgQEAgY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBSZW5k
ZXJPYmplYwogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckVsZW1lbnQoKTsKIAotICAgIHN0
YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBib29sIGhhc0lu
aXRpYWxpemVkU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRpYWxpemVkU3R5bGU7IH0K
IAotICAgIFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVu
ZGVyU3R5bGUmPigqbV9zdHlsZSk7IH0KKyAgICBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlJj4obV9zdHlsZSk7IH0KICAgICBSZW5kZXJT
dHlsZSYgZmlyc3RMaW5lU3R5bGUoKSBjb25zdDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVN0eWxl
KCk7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIHdpdGggbWluaW1h
bFN0eWxlRGlmZmVyZW5jZSA+IFN0eWxlRGlmZmVyZW5jZUVxdWFsIGluZGljYXRlcyB0aGF0CiAg
ICAgLy8gb3V0LW9mLWJhbmQgc3RhdGUgKGUuZy4gYW5pbWF0aW9ucykgcmVxdWlyZXMgdGhhdCBz
dHlsZURpZENoYW5nZSBwcm9jZXNzaW5nCiAgICAgLy8gY29udGludWUgZXZlbiBpZiB0aGUgc3R5
bGUgaXNuJ3QgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgc3R5bGUuCi0gICAgdm9pZCBzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBTdHlsZURpZmZlcmVuY2UgbWluaW1h
bFN0eWxlRGlmZmVyZW5jZSA9IFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKKyAgICB2b2lkIHNldFN0
eWxlKFJlbmRlclN0eWxlJiYsIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaWZmZXJlbmNl
ID0gU3R5bGVEaWZmZXJlbmNlRXF1YWwpOwogCiAgICAgLy8gVGhlIHBzZXVkbyBlbGVtZW50IHN0
eWxlIGNhbiBiZSBjYWNoZWQgb3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hlZCBtZXRob2QgaWYg
dGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgcmVzcGVjdAogICAgIC8vIGFueSBwc2V1ZG8gY2xh
c3NlcyAoYW5kIHRoZXJlZm9yZSBoYXMgbm8gY29uY2VwdCBvZiBjaGFuZ2luZyBzdGF0ZSkuCkBA
IC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXBkYXRlcyBvbmx5IHRoZSBsb2Nh
bCBzdHlsZSBwdHIgb2YgdGhlIG9iamVjdC4gRG9lcyBub3QgdXBkYXRlIHRoZSBzdGF0ZSBvZiB0
aGUgb2JqZWN0LAogICAgIC8vIGFuZCBzbyBvbmx5IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUg
c3R5bGUgaXMga25vd24gbm90IHRvIGhhdmUgY2hhbmdlZCAob3IgZnJvbSBzZXRTdHlsZSkuCi0g
ICAgdm9pZCBzZXRTdHlsZUludGVybmFsKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpIHsgbV9zdHlsZSA9IFdURk1vdmUoc3R5bGUpOyB9CisgICAgdm9pZCBzZXRTdHlsZUludGVy
bmFsKFJlbmRlclN0eWxlJiYgc3R5bGUpIHsgbV9zdHlsZSA9IFdURk1vdmUoc3R5bGUpOyB9CiAK
ICAgICAvLyBSZXBhaW50IG9ubHkgaWYgb3VyIG9sZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJl
IGRpZmZlcmVudC4gVGhlIGNhbGxlciBtYXkgcGFzcyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxp
bmVCb3ggaWYgdGhleSBhcmUga25vd24uCiAgICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5l
ZWRlZChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25z
dCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gs
IGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciA9IG51bGxwdHIsIGNvbnN0IExheW91dFJl
Y3QqIG5ld091dGxpbmVCb3hQdHIgPSBudWxscHRyKTsKQEAgLTIyMyw4ICsyMjMsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNlVHlwZUZsYWdzOwogCi0gICAg
UmVuZGVyRWxlbWVudChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFz
ZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyRWxlbWVudChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoRG9j
dW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIGJvb2wgbGF5ZXJD
cmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3Q7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0
bGluZUF1dG8pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJlbmRlckVsZW1lbnQoQ29udGFpbmVy
Tm9kZSYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAg
IFJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9kZSYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxh
Z3MpOwogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgbm9uUHNldWRv
Tm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgZ2VuZXJhdGluZ05vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCog
bV9maXJzdENoaWxkOwogICAgIFJlbmRlck9iamVjdCogbV9sYXN0Q2hpbGQ7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CisgICAgUmVuZGVyU3R5bGUgbV9zdHls
ZTsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoaXMgaGFjay4KICAgICAvLyBTdG9yZSBz
dGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgY29u
c3QgQ29sb3ImIHVuYXZhaWxhYmxlUGx1Z2luQm9yCiAgICAgcmV0dXJuIHN0YW5kYXJkOwogfQog
Ci1SZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3du
ZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdl
dChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faXNQbHVnaW5VbmF2YWlsYWJsZShm
YWxzZSkKICAgICAsIG1fdW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoZmFsc2Up
CkBAIC0xMTEsNyArMTExLDcgQEAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6On5SZW5kZXJFbWJlZGRl
ZE9iagogICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRl
KCp0aGlzKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxl
dEVsZW1lbnQmIGFwcGxldCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBhdXRvIHJlbmRl
cmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KGFwcGxldCwgV1RGTW92
ZShzdHlsZSkpOwogICAgIHJlbmRlcmVyLT5zZXRJbmxpbmUodHJ1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBjbGFzcyBUZXh0UnVuOwogLy8g
Rm9yIGV4YW1wbGUsIDxlbWJlZCBzcmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1
Zy1pbi4KIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IDogcHVibGljIFJlbmRlcldpZGdldCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRW1iZWRkZWRPYmpl
Y3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyRW1iZWRkZWRPYmplY3QoKTsKIAotICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiAgICAgZW51bSBQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiB7CiAgICAgICAgIFBs
dWdpbk1pc3NpbmcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJGaWVs
ZHNldDo6UmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZpZWxkc2V0OjpSZW5kZXJGaWVs
ZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlckZpZWxkc2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGVudW0gRmluZExlZ2VuZE9wdGlvbiB7IEln
bm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CiAg
ICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKEZpbmRMZWdlbmRPcHRpb24gPSBJZ25vcmVGbG9hdGlu
Z09yT3V0T2ZGbG93KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hh
cnMgPSAzODsKICNlbmRpZgogY29uc3QgaW50IGJ1dHRvblNoYWRvd0hlaWdodCA9IDI7CiAKLVJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhp
bnB1dCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVkRmlsZXMoaW5w
dXQuY2FuUmVjZWl2ZURyb3BwZWRGaWxlcygpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlckZpbGVVcGxvYWRDb250cm9sIGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJGaWxlVXBsb2FkQ29udHJvbCgpOwogCiAgICAgU3RyaW5nIGJ1dHRvblZhbHVl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0
IFJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRpb24gewogfTsKIAogCi1SZW5kZXJGbGV4aWJsZUJv
eDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2so
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0b3IoKnRoaXMp
CiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKQEAgLTc0LDcg
Kzc0LDcgQEAgUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZQogICAgIHNl
dENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gQWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJs
b2NrLWxldmVsLgogfQogCi1SZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhpcykKICAgICAsIG1fbnVtYmVyT2ZJ
bkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRmxleGlibGVC
b3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckZsZXhpYmxlQm94
KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJGbGV4
aWJsZUJveChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlckZsZXhpYmxlQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJGbGV4
aWJsZUJveChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckZs
ZXhpYmxlQm94KCk7CiAKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fcHJldmlvdXNSZWdpb25Db3VudCgwKQogICAgICwgbV9hdXRvTG9naWNh
bEhlaWdodFJlZ2lvbnNDb3VudCgwKQpAQCAtNjksMTggKzY5LDE4IEBAIFJlbmRlckZsb3dUaHJl
YWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW0KICAgICBzZXRGbG93VGhyZWFkU3RhdGUoSW5zaWRl
T3V0T2ZGbG93VGhyZWFkKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxl
KFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOwotICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7
Ci0gICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwotICAgIG5ld1N0eWxlLT5zZXRQb3Np
dGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKLSAgICBuZXdTdHlsZS0+c2V0WkluZGV4KDApOwotICAg
IG5ld1N0eWxlLT5zZXRMZWZ0KExlbmd0aCgwLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRU
b3AoTGVuZ3RoKDAsIEZpeGVkKSk7Ci0gICAgbmV3U3R5bGUtPnNldFdpZHRoKExlbmd0aCgxMDAs
IFBlcmNlbnQpKTsKLSAgICBuZXdTdHlsZS0+c2V0SGVpZ2h0KExlbmd0aCgxMDAsIFBlcmNlbnQp
KTsKLSAgICBuZXdTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7CisgICAgbmV3
U3R5bGUuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLnNldERpc3BsYXko
QkxPQ0spOworICAgIG5ld1N0eWxlLnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOworICAg
IG5ld1N0eWxlLnNldFpJbmRleCgwKTsKKyAgICBuZXdTdHlsZS5zZXRMZWZ0KExlbmd0aCgwLCBG
aXhlZCkpOworICAgIG5ld1N0eWxlLnNldFRvcChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBuZXdT
dHlsZS5zZXRXaWR0aChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUuc2V0SGVp
Z2h0KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBuZXdTdHlsZS5mb250Q2FzY2FkZSgpLnVw
ZGF0ZShudWxscHRyKTsKICAgICByZXR1cm4gbmV3U3R5bGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBkZXNj
ZW5kYW50IGJveCdzIGxheW91dCBpcyBmaW5pc2hlZCBhbmQgaXQgaGFzIGJlZW4gcG9zaXRpb25l
ZCB3aXRoaW4gaXRzIGNvbnRhaW5lci4KICAgICB2aXJ0dWFsIHZvaWQgZmxvd1RocmVhZERlc2Nl
bmRhbnRCb3hMYWlkT3V0KFJlbmRlckJveCopIHsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckZsb3dUaHJl
YWQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJG
bG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJGbG93VGhy
ZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4odGhpcyk7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWU6
OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1l
bnQmIGZyYW1lLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGZy
YW1lLCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBI
VE1MRnJhbWVFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGcmFtZUJhc2UgewogcHVibGljOgotICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZShIVE1MRnJh
bWVFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBIVE1MRnJhbWVFbGVtZW50JiBmcmFt
ZUVsZW1lbnQoKSBjb25zdDsKICAgICBGcmFtZUVkZ2VJbmZvIGVkZ2VJbmZvKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50
QmFzZSYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNlJiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFJlbmRlclZpZXc7CiAvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJGcmFtZSBhbmQgUmVuZGVySUZy
YW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJhc2UmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxl
bWVudEJhc2UmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHVibGljOgogICAgIEZyYW1lVmlldyogY2hp
bGRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihSZW5kZXJXaWRnZXQ6
OndpZGdldCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxG
cmFtZVNldEVsZW1lbnQmIGZyYW1lU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQm
IGZyYW1lU2V0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZyYW1lU2V0
LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faXNSZXNpemluZyhmYWxzZSkKICAgICAsIG1f
aXNDaGlsZFJlc2l6aW5nKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFJlbmRlckZyYW1lU2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNl
dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGcmFtZVNldCgp
OwogCiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudCYgZnJhbWVTZXRFbGVtZW50KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xk
ZXIoUmVuZGVyRnVsbFNjcmVlbiYgb3duZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCisgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3JlZW4m
IG93bmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhv
d25lci5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSkKICAgICAgICAgLCBtX293bmVyKG93bmVy
KSAKICAgICB7CkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9s
ZGVyOjp3aWxsQmUKICAgICBSZW5kZXJCbG9ja0Zsb3c6OndpbGxCZURlc3Ryb3llZCgpOwogfQog
Ci1SZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZ1bGxTY3JlZW46OlJl
bmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyRmxleGlibGVCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9wbGFjZWhvbGRlcigwKQogewpAQCAtNzgsMjggKzc4LDI4IEBAIHZvaWQgUmVuZGVyRnVsbFNj
cmVlbjo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJGbGV4aWJsZUJveDo6d2lsbEJlRGVz
dHJveWVkKCk7CiB9CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0
ZUZ1bGxTY3JlZW5TdHlsZSgpCitzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlRnVsbFNjcmVlblN0
eWxlKCkKIHsKLSAgICBhdXRvIGZ1bGxzY3JlZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVE
ZWZhdWx0U3R5bGUoKTsKKyAgICBhdXRvIGZ1bGxzY3JlZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKIAogICAgIC8vIENyZWF0ZSBhIHN0YWNraW5nIGNvbnRleHQ6Ci0gICAgZnVsbHNj
cmVlblN0eWxlLT5zZXRaSW5kZXgoSU5UX01BWCk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldFpJ
bmRleChJTlRfTUFYKTsKIAotICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KHsgfSk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRy
KTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKHsgfSk7CisgICAgZnVs
bHNjcmVlblN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIpOwogCi0gICAgZnVsbHNj
cmVlblN0eWxlLT5zZXREaXNwbGF5KEZMRVgpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0SnVz
dGlmeUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb25DZW50ZXIpOwotICAgIGZ1bGxzY3Jl
ZW5TdHlsZS0+c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkNlbnRlcik7Ci0gICAg
ZnVsbHNjcmVlblN0eWxlLT5zZXRGbGV4RGlyZWN0aW9uKEZsb3dDb2x1bW4pOworICAgIGZ1bGxz
Y3JlZW5TdHlsZS5zZXREaXNwbGF5KEZMRVgpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRKdXN0
aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbkNlbnRlcik7CisgICAgZnVsbHNjcmVl
blN0eWxlLnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50ZXIpOworICAgIGZ1
bGxzY3JlZW5TdHlsZS5zZXRGbGV4RGlyZWN0aW9uKEZsb3dDb2x1bW4pOwogICAgIAotICAgIGZ1
bGxzY3JlZW5TdHlsZS0+c2V0UG9zaXRpb24oRml4ZWRQb3NpdGlvbik7Ci0gICAgZnVsbHNjcmVl
blN0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldExlZnQoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7Ci0gICAgZnVsbHNjcmVl
blN0eWxlLT5zZXRUb3AoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgZnVsbHNjcmVl
blN0eWxlLnNldFBvc2l0aW9uKEZpeGVkUG9zaXRpb24pOworICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXRXaWR0aChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0
SGVpZ2h0KExlbmd0aCgxMDAuMCwgUGVyY2VudCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRM
ZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRU
b3AoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgCi0gICAgZnVsbHNjcmVlblN0eWxl
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUu
c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICByZXR1cm4gZnVsbHNjcmVl
blN0eWxlOwogfQpAQCAtMTkzLDExICsxOTMsMTEgQEAgdm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpj
cmVhdGVQbGFjZWhvbGRlcgogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChmcmFtZVJl
Y3QuaGVpZ2h0KCksIEZpeGVkKSk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlcikgewotICAgICAg
ICBtX3BsYWNlaG9sZGVyLT5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIG1fcGxh
Y2Vob2xkZXItPnNldFN0eWxlKFdURk1vdmUoKnN0eWxlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3BsYWNlaG9sZGVyID0gbmV3IFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRl
cigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworICAgIG1fcGxhY2Vob2xkZXIgPSBuZXcgUmVuZGVy
RnVsbFNjcmVlblBsYWNlaG9sZGVyKCp0aGlzLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgIG1fcGxh
Y2Vob2xkZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGlmIChwYXJlbnQoKSkgewogICAgICAg
ICBwYXJlbnQoKS0+YWRkQ2hpbGQobV9wbGFjZWhvbGRlciwgdGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJGdWxsU2NyZWVuIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJGdWxsU2NyZWVuIjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRGcmVlCiAgICAgICAgIGZyZWVTcGFjZUZvclJv
d3MgPSBmcmVlU3BhY2U7CiB9CiAKLVJlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxlbWVudCYgZWxl
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckdyaWQ6OlJl
bmRlckdyaWQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJh
dG9yKCp0aGlzKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGVudW0gR3JpZEF4aXNQb3NpdGlvbiB7
R3JpZEF4aXNTdGFydCwgR3IKIAogY2xhc3MgUmVuZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyR3JpZChFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyR3JpZChFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyR3JpZCgpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJI
VE1MQ2FudmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckhUTUxDYW52
YXM6OlJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1M
Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGVsZW1lbnQuc2l6
ZSgpKQogewogICAgIC8vIEFjdHVhbCBzaXplIGlzIG5vdCBrbm93biB5ZXQsIHJlcG9ydCB0aGUg
ZGVmYXVsdCBpbnRyaW5zaWMgc2l6ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVySFRNTENhbnZhcyBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySFRNTENh
bnZhcyhIVE1MQ2FudmFzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
IAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgCi1SZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1M
SUZyYW1lRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRl
clZpZXc7CiAKIGNsYXNzIFJlbmRlcklGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGcmFtZUJh
c2UgewogcHVibGljOgotICAgIFJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgSFRNTElGcmFtZUVsZW1lbnQmIGlmcmFtZUVs
ZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1SZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29u
c3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQorUmVuZGVySW1hZ2U6OlJlbmRlckltYWdl
KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxl
SW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJl
cGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdl
UmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0KGZhbHNlKQpAQCAt
MTM1LDcgKzEzNSw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW4K
ICAgICAgICAgbV9oYXNTaGFkb3dDb250cm9scyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQpLmhhc1NoYWRvd0NvbnRyb2xzKCk7CiB9CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJ
bWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRT
aXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVG
b3JBbHRUZXh0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIGVudW0gSW1hZ2VTaXplQ2hh
bmdlVHlwZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9IDEuMGYpOwotICAg
IFJlbmRlckltYWdlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgU3R5
bGVJbWFnZSogPSBudWxscHRyKTsKKyAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9IDEuMGYpOworICAgIFJl
bmRlckltYWdlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgU3R5bGVJbWFnZSogPSBudWxscHRy
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZSgpOwogCiAgICAgUmVuZGVySW1hZ2VSZXNvdXJj
ZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTMgKzUyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
SW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGls
ZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
SW5saW5lOjpSZW5kZXJJbmxpbmUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
LCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwpAQCAt
MTU4LDggKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlT2ZBbm9ueW1vdXNCbG9ja0MK
ICAgICAgICAgUmVuZGVySW5saW5lKiBjb250aW51YXRpb24gPSBibG9jay5pbmxpbmVFbGVtZW50
Q29udGludWF0aW9uKCk7CiAgICAgICAgIGlmIChvbGRTdHlsZS0+aGFzSW5GbG93UG9zaXRpb24o
KSAmJiBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3IoY29udGludWF0aW9uKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmYmxvY2suc3R5bGUoKSwgQkxPQ0spOwot
ICAgICAgICBibG9ja1N0eWxlLT5zZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7Cisg
ICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGJsb2NrLnN0eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYmxvY2tTdHlsZS5z
ZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAgIGJsb2NrLnNldFN0eWxl
KFdURk1vdmUoYmxvY2tTdHlsZSkpOwogICAgIH0KIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVECiAgICAgICAgIGZvciAoUmVuZGVy
SW5saW5lKiBjdXJyQ29udCA9IGNvbnRpbnVhdGlvbjsgY3VyckNvbnQ7IGN1cnJDb250ID0gY3Vy
ckNvbnQtPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkgewogICAgICAgICAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIG5leHRDb250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOwogICAg
ICAgICAgICAgY3VyckNvbnQtPnNldENvbnRpbnVhdGlvbihudWxscHRyKTsKLSAgICAgICAgICAg
IGN1cnJDb250LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoJm5ld1N0eWxlKSk7CisgICAg
ICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKSk7
CiAgICAgICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG5leHRDb250KTsKICAgICAg
ICAgfQogICAgICAgICAvLyBJZiBhbiBpbmxpbmUncyBpbi1mbG93IHBvc2l0aW9uaW5nIGhhcyBj
aGFuZ2VkIGFuZCBpdCBpcyBwYXJ0IG9mIGFuIGFjdGl2ZSBjb250aW51YXRpb24gYXMgYSBkZXNj
ZW5kYW50IG9mIGFuIGFub255bW91cyBjb250YWluaW5nIGJsb2NrLApAQCAtMzMxLDEyICszMzEs
MTIgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgICAgICAv
LyBpbmxpbmUgaW50byBjb250aW51YXRpb25zLiAgVGhpcyBpbnZvbHZlcyBjcmVhdGluZyBhbiBh
bm9ueW1vdXMgYmxvY2sgYm94IHRvIGhvbGQKICAgICAgICAgLy8gfG5ld0NoaWxkfC4gIFdlIHRo
ZW4gbWFrZSB0aGF0IGJsb2NrIGJveCBhIGNvbnRpbnVhdGlvbiBvZiB0aGlzIGlubGluZS4gIFdl
IHRha2UgYWxsIG9mCiAgICAgICAgIC8vIHRoZSBjaGlsZHJlbiBhZnRlciB8YmVmb3JlQ2hpbGR8
IGFuZCBwdXQgdGhlbSBpbiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0LgotICAgICAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0
eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIGluc2lkZSBhbiBpbmxpbmUgYWZmZWN0ZWQgYnkgaW4tZmxvdyBwb3NpdGlv
bmluZyB0aGUgYmxvY2sgbmVlZHMgdG8gYmUgYWZmZWN0ZWQgYnkgaXQgdG9vLgogICAgICAgICAv
LyBHaXZpbmcgdGhlIGJsb2NrIGEgbGF5ZXIgbGlrZSB0aGlzIGFsbG93cyBpdCB0byBjb2xsZWN0
IHRoZSB4L3kgb2Zmc2V0cyBmcm9tIGlubGluZSBwYXJlbnRzIGxhdGVyLgogICAgICAgICBpZiAo
YXV0byBwb3NpdGlvbmVkQW5jZXN0b3IgPSBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3Io
dGhpcykpCi0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24ocG9zaXRpb25lZEFuY2Vz
dG9yLT5zdHlsZSgpLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgbmV3U3R5bGUuc2V0UG9zaXRp
b24ocG9zaXRpb25lZEFuY2VzdG9yLT5zdHlsZSgpLnBvc2l0aW9uKCkpOwogCiAgICAgICAgIFJl
bmRlckJsb2NrKiBuZXdCb3ggPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFdURk1v
dmUobmV3U3R5bGUpKTsKICAgICAgICAgbmV3Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAg
CiAgICAgICAgIGlmICghbmV3Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkgewogICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHN1aXRhYmxlIGV4aXN0aW5nIGFub255
bW91cyBpbmxpbmUtYmxvY2suIENyZWF0ZSBhIG5ldyBvbmUuCi0gICAgICAgICAgICBSZW5kZXJC
bG9ja0Zsb3cqIGFub255bW91c0lubGluZUJsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5
bGUoKSwgSU5MSU5FX0JMT0NLKSk7CisgICAgICAgICAgICBSZW5kZXJCbG9ja0Zsb3cqIGFub255
bW91c0lubGluZUJsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBJTkxJTkVfQkxP
Q0spKTsKICAgICAgICAgICAgIGFub255bW91c0lubGluZUJsb2NrLT5pbml0aWFsaXplU3R5bGUo
KTsKICAgICAKICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjphZGRDaGlsZChhbm9u
eW1vdXNJbmxpbmVCbG9jaywgYmVmb3JlQ2hpbGQpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKIAogUmVuZGVyUHRyPFJlbmRlcklu
bGluZT4gUmVuZGVySW5saW5lOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
cklubGluZT4gY2xvbmVJbmxpbmUgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+KCplbGVt
ZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSkpOworICAgIFJlbmRlclB0cjxSZW5k
ZXJJbmxpbmU+IGNsb25lSW5saW5lID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPigqZWxl
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUoKSkpOwogICAgIGNsb25lSW5saW5lLT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICBjbG9uZUlubGluZS0+c2V0Rmxvd1RocmVhZFN0YXRlKGZs
b3dUaHJlYWRTdGF0ZSgpKTsKICAgICBjbG9uZUlubGluZS0+c2V0SGFzT3V0bGluZUF1dG9BbmNl
c3RvcihoYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBA
IGNsYXNzIFJlbmRlclJlZ2lvbjsKIAogY2xhc3MgUmVuZGVySW5saW5lIDogcHVibGljIFJlbmRl
ckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbmxpbmUoRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlcklubGluZShEb2N1bWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklubGluZShFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVySW5saW5lKERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAKICAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nzk3
LDExICs2Nzk3LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWwK
ICAgICB9CiAKICAgICBpZiAoIW1fc2Nyb2xsQ29ybmVyKSB7Ci0gICAgICAgIG1fc2Nyb2xsQ29y
bmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1
bWVudCgpLCBXVEZNb3ZlKGNvcm5lcikpOworICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgV1RG
TW92ZSgqY29ybmVyKSk7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRQYXJlbnQoJnJlbmRl
cmVyKCkpOwogICAgICAgICBtX3Njcm9sbENvcm5lci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAg
fSBlbHNlCi0gICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3ZlKGNvcm5lcikp
OworICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92ZSgqY29ybmVyKSk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCkBAIC02ODE1LDExICs2
ODE1LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCiAgICAgfQog
CiAgICAgaWYgKCFtX3Jlc2l6ZXIpIHsKLSAgICAgICAgbV9yZXNpemVyID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1bWVudCgpLCBXVEZNb3ZlKHJl
c2l6ZXIpKTsKKyAgICAgICAgbV9yZXNpemVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xs
YmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1bWVudCgpLCBXVEZNb3ZlKCpyZXNpemVyKSk7CiAgICAg
ICAgIG1fcmVzaXplci0+c2V0UGFyZW50KCZyZW5kZXJlcigpKTsKICAgICAgICAgbV9yZXNpemVy
LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9yZXNpemVyLT5zZXRT
dHlsZShXVEZNb3ZlKHJlc2l6ZXIpKTsKKyAgICAgICAgbV9yZXNpemVyLT5zZXRTdHlsZShXVEZN
b3ZlKCpyZXNpemVyKSk7CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVmbGVjdGlv
bkxheWVyKCkgY29uc3QKQEAgLTY4NDQsMTAgKzY4NDQsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cmVtb3ZlUmVmbGVjdGlvbigpCiAgICAgbV9yZWZsZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlvblN0
eWxlKCkKK1JlbmRlclN0eWxlIFJlbmRlckxheWVyOjpjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKQog
ewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgbmV3U3R5
bGUtPmluaGVyaXRGcm9tKCZyZW5kZXJlcigpLnN0eWxlKCkpOworICAgIG5ld1N0eWxlLmluaGVy
aXRGcm9tKCZyZW5kZXJlcigpLnN0eWxlKCkpOwogICAgIAogICAgIC8vIE1hcCBpbiBvdXIgdHJh
bnNmb3JtLgogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOwpAQCAtNjg3MywxMCAr
Njg3MywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckxheWVyCiAgICAg
ICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQo
KSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBuZXdTdHlsZS0+c2V0VHJhbnNmb3JtKHRyYW5z
Zm9ybSk7CisgICAgbmV3U3R5bGUuc2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAKICAgICAvLyBN
YXAgaW4gb3VyIG1hc2suCi0gICAgbmV3U3R5bGUtPnNldE1hc2tCb3hJbWFnZShyZW5kZXJlcigp
LnN0eWxlKCkuYm94UmVmbGVjdCgpLT5tYXNrKCkpOworICAgIG5ld1N0eWxlLnNldE1hc2tCb3hJ
bWFnZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5tYXNrKCkpOwogCiAgICAgcmV0
dXJuIG5ld1N0eWxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjQsNyArOTI0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZVJlZmxlY3Rpb24oKTsKICAgICB2b2lkIHJlbW92ZVJlZmxlY3Rpb24oKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7
CisgICAgUmVuZGVyU3R5bGUgY3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7CiAgICAgYm9vbCBwYWlu
dGluZ0luc2lkZVJlZmxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhaW50aW5nSW5zaWRlUmVm
bGVjdGlvbjsgfQogICAgIHZvaWQgc2V0UGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKGJvb2wgYikg
eyBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGI7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgYm9vbCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpzX2hhZExheWVyIAogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNlOwogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpz
X2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7CiAKLVJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAg
OiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKLVJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50JiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdz
KQogICAgIDogUmVuZGVyRWxlbWVudChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBl
RmxhZ3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0gICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxP
YmplY3QoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIHZv
aWQgY3JlYXRlTGF5ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIHN0YXRpYyB2b2lkIGVuc3VyZUxpbmVCb3hlcyhjb25zdCBSZW5kZXIKICAgICBkb3duY2Fz
dDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSkuZW5zdXJlTGluZUJveGVzKCk7
CiB9CiAKLVJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGluZUJyZWFr
OjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxscHRyKQogICAgICwgbV9jYWNoZWRMaW5l
SGVpZ2h0KGludmFsaWRMaW5lSGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIGNsYXNzIFBvc2l0aW9uOwogCiBjbGFzcyBSZW5kZXJMaW5lQnJlYWsgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlckxpbmVCcmVhayhI
VE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxp
bmVCcmVhayhIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ckxpbmVCcmVhaygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVzIGhlcmUga2VlcCByZW5kZXIg
dHJlZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgaW50IGRlZmF1bHRTaXplID0gNDsKIC8vIHdpZGdldCwg
YnV0IEknbSBub3Qgc3VyZSB0aGlzIGlzIHJpZ2h0IGZvciB0aGUgbmV3IGNvbnRyb2wuCiBjb25z
dCBpbnQgYmFzZWxpbmVBZGp1c3RtZW50ID0gNzsKIAotUmVuZGVyTGlzdEJveDo6UmVuZGVyTGlz
dEJveChIVE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX29wdGlvbnNDaGFuZ2VkKHRydWUpCiAg
ICAgLCBtX3Njcm9sbFRvUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJMYXlvdXQoZmFsc2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlckxpc3RCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2Nyb2xs
YWJsZUFyZWEgewogcHVibGljOgotICAgIFJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0Qm94KEhUTUxT
ZWxlY3RFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdEJv
eCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVsZW1lbnQoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0
SXRlbShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX21hcmtlcihudWxscHRyKQogICAgICwgbV9oYXNFeHBsaWNpdFZhbHVl
KGZhbHNlKQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpzdHlsZURpZENo
YW5nZShTdHlsCiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAg
ICAvLyBUaGUgbWFya2VyIGFsd2F5cyBpbmhlcml0cyBmcm9tIHRoZSBsaXN0IGl0ZW0sIHJlZ2Fy
ZGxlc3Mgb2Ygd2hlcmUgaXQgbWlnaHQgZW5kCiAgICAgLy8gdXAgKGUuZy4sIGluIHNvbWUgZGVl
cGx5IG5lc3RlZCBsaW5lIGJveCkuIFNlZSBDU1MzIHNwZWMuCi0gICAgbmV3U3R5bGUtPmluaGVy
aXRGcm9tKCZzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS5pbmhlcml0RnJvbSgmc3R5bGUoKSk7CiAg
ICAgaWYgKCFtX21hcmtlcikgewogICAgICAgICBtX21hcmtlciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlckxpc3RNYXJrZXI+KCp0aGlzLCBXVEZNb3ZlKG5ld1N0eWxlKSkubGVha1B0cigpOwogICAg
ICAgICBtX21hcmtlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgUmVuZGVyTGlzdE1hcmtlcjsKIAogY2xhc3MgUmVuZGVyTGlzdEl0ZW0g
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0
SXRlbShFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
TGlzdEl0ZW0oRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxp
c3RJdGVtKCk7CiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RT
dHlsZVR5cGUgdHlwCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotUmVuZGVy
TGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlzdEl0ZW0sIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0TWFya2VyOjpSZW5k
ZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJveChsaXN0SXRlbS5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fbGlzdEl0ZW0obGlzdEl0ZW0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlLCBpbgog
Ly8gVGhlIFJlbmRlckxpc3RNYXJrZXIgYWx3YXlzIGhhcyB0byBiZSBhIGNoaWxkIG9mIGEgUmVu
ZGVyTGlzdEl0ZW0uCiBjbGFzcyBSZW5kZXJMaXN0TWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRl
ckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVy
TGlzdEl0ZW0mLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaXN0TWFya2Vy
KCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEo
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckltYWdlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIHNldEhhc1NoYWRvd0Nv
bnRyb2xzKHRydWUpOwogfQogCi1SZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
SW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVk
aWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBJbnRTaXplJiBp
bnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVySW1hZ2UoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlhIDogcHVibGlj
IFJlbmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWVkaWEoSFRNTE1l
ZGlhRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFNpemUm
IGludHJpbnNpY1NpemUpOworICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJiwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVuZGVy
TWVkaWEoKTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1lZGlh
Vm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29u
dGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmwKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGli
bGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC04MSw3ICs4MSw3IEBAIHZv
aWQgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIKIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKIAotUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVy
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
bGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJl
bmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZs
ZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lcihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBzaXplX3Qgc2VsZWN0ZWRPcHRpb25D
b3VudChjb25zdCAKIH0KICNlbmRpZgogCi1SZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3Qo
SFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dChudWxscHRyKQogICAg
ICwgbV9pbm5lckJsb2NrKG51bGxwdHIpCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6c2V0VGV4dEZyb21PcHRpb24oaQogICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwog
ICAgICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7Ci0gICAg
ICAgICAgICBtX29wdGlvblN0eWxlID0gc3R5bGUgPyBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUp
IDogbnVsbHB0cjsKKyAgICAgICAgICAgIG1fb3B0aW9uU3R5bGUgPSBzdHlsZSA/IFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqc3R5bGUpIDogbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5k
ZXJNZW51TGlzdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCwgcHJpdmF0ZSBQb3B1
cE1lbnVDbGllbnQgewogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNZW51TGlz
dChIVE1MU2VsZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ck1lbnVMaXN0KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxNZXRlckVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlck1ldGVyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlck1ldGVyKCk7CiAKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRl
ckVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGJvb2wgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpnU2hpZnRpbmdTcGFubmVyID0g
ZmFsc2U7CiAKLVJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9sYXN0
U2V0V29ya2VkT24obnVsbHB0cikKICAgICAsIG1fY29sdW1uQ291bnQoMSkKQEAgLTMzOCw3ICsz
MzgsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhCiAgICAgLy8g
TmVlZCB0byBjcmVhdGUgYSBuZXcgY29sdW1uIHNldCB3aGVuIHRoZXJlJ3Mgbm8gc2V0IGFscmVh
ZHkgY3JlYXRlZC4gV2UgYWxzbyBhbHdheXMgaW5zZXJ0CiAgICAgLy8gYW5vdGhlciBjb2x1bW4g
c2V0IGFmdGVyIGEgc3Bhbm5lci4gRXZlbiBpZiBpdCB0dXJucyBvdXQgdGhhdCB0aGVyZSBhcmUg
bm8gcmVuZGVyZXJzCiAgICAgLy8gZm9sbG93aW5nIHRoZSBzcGFubmVyLCB0aGVyZSBtYXkgYmUg
Ym90dG9tIG1hcmdpbnMgdGhlcmUsIHdoaWNoIHRha2UgdXAgc3BhY2UuCi0gICAgUmVuZGVyTXVs
dGlDb2x1bW5TZXQqIG5ld1NldCA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtblNldCgqdGhpcywgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJm11bHRpY29sQ29udGFp
bmVyLT5zdHlsZSgpLCBCTE9DSykpOworICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KiBuZXdTZXQg
PSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TZXQoKnRoaXMsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBCTE9DSykp
OwogICAgIG5ld1NldC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgbXVsdGljb2xDb250YWluZXIt
PlJlbmRlckJsb2NrOjphZGRDaGlsZChuZXdTZXQsIGluc2VydEJlZm9yZU11bHRpY29sQ2hpbGQp
OwogICAgIGludmFsaWRhdGVSZWdpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZQogCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxvd1RocmVhZCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgflJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogCiAgICAg
UmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxv
d1RocmVhZCYgZmxvd1RocmVhZCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhy
ZWFkJiBmbG93VGhyZWFkLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyUmVnaW9u
U2V0KGZsb3dUaHJlYWQuZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSksIGZsb3dUaHJlYWQpCiAg
ICAgLCBtX2NvbXB1dGVkQ29sdW1uQ291bnQoMSkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5XaWR0
aCgwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGNvbWUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc3Bhbi4KIGNs
YXNzIFJlbmRlck11bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJl
bmRlckZsb3dUaHJlYWQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyog
bXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVs
dGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFu
bmVyUGxhY2Vob2xkZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXI6OmNyZWF0ZUFub255bW91cyhSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQsIFJlbmRlckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUoUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50U3R5bGUsIEJMT0NLKSk7Ci0g
ICAgbmV3U3R5bGUtPnNldENsZWFyKENCT1RIKTsgLy8gV2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4g
dGhlIHJvdyBwcmVjZWRpbmcgdGhlIHNwYW5uZXIgdG8gY29udGludWUgb24gdGhlIG90aGVyIHNp
ZGUuCisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KCpwYXJlbnRTdHlsZSwgQkxPQ0spOworICAgIG5ld1N0eWxlLnNldENsZWFy
KENCT1RIKTsgLy8gV2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4gdGhlIHJvdyBwcmVjZWRpbmcgdGhl
IHNwYW5uZXIgdG8gY29udGludWUgb24gdGhlIG90aGVyIHNpZGUuCiAgICAgYXV0byBwbGFjZWhv
bGRlciA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihmbG93VGhyZWFk
LCBzcGFubmVyLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgcGxhY2Vob2xkZXItPmluaXRpYWxp
emVTdHlsZSgpOwogICAgIHJldHVybiBwbGFjZWhvbGRlcjsKIH0KIAotUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
KFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFu
bmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
KFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFu
bmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZsb3dUaHJlYWQtPmRv
Y3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiAgICAg
LCBtX3NwYW5uZXIoc3Bhbm5lcikKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJl
YWQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gqIHNwYW5uZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5l
ciwgUmVuZGVyU3R5bGUmJik7CiAgICAgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJSZWdpb24oZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBudWxscHRyKQogICAgICwg
bV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1faGFzQXV0b0xvZ2ljYWxIZWln
aHQoZmFsc2UpCkBAIC01NywxMyArNTcsMTMgQEAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6On5S
ZW5kZXJOYW1lZEZsbwogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUpCitSZW5kZXJTdHlsZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewotICAgIGF1dG8gc3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50U3R5bGUsIEJM
T0NLKTsKKyAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkocGFyZW50U3R5bGUsIEJMT0NLKTsKIAotICAgIHN0eWxlLT5zZXRGbG93VGhy
ZWFkKHBhcmVudFN0eWxlLmZsb3dUaHJlYWQoKSk7Ci0gICAgc3R5bGUtPnNldFJlZ2lvblRocmVh
ZChwYXJlbnRTdHlsZS5yZWdpb25UaHJlYWQoKSk7Ci0gICAgc3R5bGUtPnNldFJlZ2lvbkZyYWdt
ZW50KHBhcmVudFN0eWxlLnJlZ2lvbkZyYWdtZW50KCkpOworICAgIHN0eWxlLnNldEZsb3dUaHJl
YWQocGFyZW50U3R5bGUuZmxvd1RocmVhZCgpKTsKKyAgICBzdHlsZS5zZXRSZWdpb25UaHJlYWQo
cGFyZW50U3R5bGUucmVnaW9uVGhyZWFkKCkpOworICAgIHN0eWxlLnNldFJlZ2lvbkZyYWdtZW50
KHBhcmVudFN0eWxlLnJlZ2lvbkZyYWdtZW50KCkpOwogCiAgICAgcmV0dXJuIHN0eWxlOwogfQpA
QCAtMzY2LDEzICszNjYsMTMgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0
ZUNoaQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNoaWxkU3R5bGVJblJl
Z2lvbjsKICAgICAgICAgYm9vbCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IGZhbHNlOwogICAg
ICAgICBpZiAoaXQgIT0gbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5lbmQoKSkgewotICAgICAg
ICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKGl0LT52YWx1ZS5z
dHlsZS5nZXQoKSk7CisgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7CiAgICAgICAgICAgICBvYmplY3RSZWdpb25T
dHlsZUNhY2hlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2hp
bGQuaXNBbm9ueW1vdXMoKSB8fCBjaGlsZC5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKLSAg
ICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyZXIuc3R5bGUoKSwgY2hpbGQuc3R5bGUoKS5k
aXNwbGF5KCkpOworICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9ICBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclN0eWxlPihSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShyZW5kZXJlci5zdHlsZSgpLCBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSkpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKQotICAgICAgICAgICAg
ICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZSgmcmVuZGVyZXIuc3R5
bGUoKSk7CisgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6
OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHlsZUluUmVnaW9uKGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSwgcmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgIH0KQEAg
LTM4OCw5ICszODgsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRPYmplY3RT
CiB7CiAgICAgQVNTRVJUKG9iamVjdC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZSgmb2JqZWN0LT5zdHlsZSgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
b2JqZWN0LT5zdHlsZSgpKTsKICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkpCi0g
ICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwo
V1RGTW92ZShzdHlsZUluUmVnaW9uKSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZSgqc3R5bGVJblJlZ2lvbikpOwogCiAg
ICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0Pigqb2JqZWN0KSAmJiAhb2JqZWN0LT5oYXNC
b3hEZWNvcmF0aW9ucygpKSB7CiAgICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMgPSBpczxS
ZW5kZXJUYWJsZUNlbGw+KCpvYmplY3QpCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uTwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IG9iamVjdFN0eWxlSW5SZWdpb247CiAgICAgICAgIGJvb2wgb2JqZWN0UmVnaW9u
U3R5bGVDYWNoZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKGl0ICE9IG1fcmVuZGVyT2JqZWN0UmVn
aW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBSZW5k
ZXJTdHlsZTo6Y2xvbmUoaXQtPnZhbHVlLnN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIG9iamVj
dFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7
CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmNhY2hlZCk7CiAgICAgICAgICAgICBvYmpl
Y3RSZWdpb25TdHlsZUNhY2hlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNDYzLDggKzQ2
Myw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWcKICAgICBSZW5k
ZXJPYmplY3RSZWdpb25TdHlsZU1hcCB0ZW1wOwogICAgIGZvciAoYXV0byYgb2JqZWN0UGFpciA6
IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG9iamVjdFBhaXIua2V5KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RSZWdpb25TdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZSgmb2JqZWN0LT5zdHlsZSgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG9iamVj
dFBhaXIudmFsdWUuc3R5bGUuZ2V0KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IG9iamVjdFJlZ2lvblN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKG9iamVjdC0+
c3R5bGUoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3Jp
Z2luYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqb2JqZWN0UGFpci52YWx1ZS5zdHls
ZSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0eWxlID0gb2JqZWN0UGFpci52
YWx1ZS5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSkgewpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWcK
ICAgICAgICAgICAgIHRlbXAuc2V0KG9iamVjdCwgV1RGTW92ZShzdHlsZUluZm8pKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkpCi0gICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdURk1v
dmUob2JqZWN0T3JpZ2luYWxTdHlsZSkpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbChXVEZNb3ZlKCpvYmplY3RPcmlnaW5hbFN0
eWxlKSk7CiAgICAgfQogCiAgICAgbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5zd2FwKHRlbXAp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDks
MTAgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvbiB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRGbG93KQogICAgIDog
UmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2hhc1Jl
Z2lvbnNXaXRoU3R5bGluZyhmYWxzZSkKICAgICAsIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hh
bmdlRXZlbnQoZmFsc2UpCkBAIC05Miw4ICs5Miw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1cGRhdGVXcml0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGZpcnN0IHJl
Z2lvbiBkZWZpbmVzIHRoZSBwcmluY2lwYWwgd3JpdGluZyBtb2RlIGZvciB0aGUgZW50aXJlIGZs
b3cuCi0gICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSk7Ci0g
ICAgbmV3U3R5bGUtPnNldFdyaXRpbmdNb2RlKGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkud3JpdGlu
Z01vZGUoKSk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSgp
KTsKKyAgICBuZXdTdHlsZS5zZXRXcml0aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHlsZSgpLndy
aXRpbmdNb2RlKCkpOwogICAgIHNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0MKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93
VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25T
dWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJik7
CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVm
PFdlYktpdE5hbWVkRmxvdz4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93VGhyZWFk
KCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQcm9ncmVzczo6UmVu
ZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3Bv
c2l0aW9uKEhUTUxQcm9ncmVzc0VsZW1lbnQ6OkludmFsaWRQb3NpdGlvbikKICAgICAsIG1fYW5p
bWF0aW9uU3RhcnRUaW1lKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclByb2dyZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3Mg
SFRNTFByb2dyZXNzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyUHJvZ3Jlc3MgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJQcm9ncmVzcyhIVE1MRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclByb2dyZXNz
KEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUHJvZ3Jl
c3MoKTsKIAogICAgIGRvdWJsZSBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZShE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFF1
b3RlVHlwZSBxdW90ZSkKK1JlbmRlclF1b3RlOjpSZW5kZXJRdW90ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFF1b3RlVHlwZSBxdW90ZSkKICAgICA6IFJlbmRlcklu
bGluZShkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3R5cGUocXVvdGUpCiAgICAg
LCBtX3RleHQoZW1wdHlTdHJpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJRdW90ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJRdW90ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUXVvdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclF1b3RlIGZpbmFsIDogcHVibGljIFJlbmRlcklubGlu
ZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBRdW90ZVR5cGUpOworICAgIFJlbmRlclF1b3RlKERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJiwgUXVvdGVUeXBlKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJRdW90ZSgpOwogCiAg
ICAgdm9pZCBhdHRhY2hRdW90ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFk
KG51bGxwdHIpCkBAIC01Niw3ICs1Niw3IEBAIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVs
ZW1lbnQmIGVsZW0KIHsKIH0KIAotUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhy
ZWFkKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAg
ICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJl
YWQobnVsbHB0cikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0ZvckJveEluUmVnaW9uKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCosIGNvbnN0IFJlbmRlckJveCosIGZsb2F0LCBmbG9hdCkgeyB9CiAKIHByb3RlY3RlZDoK
LSAgICBSZW5kZXJSZWdpb24oRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IFJlbmRlckZsb3dUaHJlYWQqKTsKLSAgICBSZW5kZXJSZWdpb24oRG9jdW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAgUmVuZGVyUmVn
aW9uKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAgUmVu
ZGVyUmVnaW9uKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyRmxvd1RocmVhZCopOwog
CiAgICAgdm9pZCBlbnN1cmVPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZWZQdHI8
UmVuZGVyT3ZlcmZsb3c+JiwgYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb25TZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvblNldDo6UmVu
ZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvblNl
dDo6UmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkKICAgICA6IFJlbmRlclJlZ2lvbihkb2N1
bWVudCwgV1RGTW92ZShzdHlsZSksICZmbG93VGhyZWFkKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cGFuZFRvRW5jb21wYXNzRmxv
d1RocmVhZENvbnRlbnRzSWZOZWVkZWQoKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclJlZ2lv
blNldChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dU
aHJlYWQmKTsKKyAgICBSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBS
ZW5kZXJGbG93VGhyZWFkJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsRmxvd1RocmVh
ZCgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsMjEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY29uc3QgaW50IGNEZWZhdWx0V2lkdGggPSAzMDA7CiBjb25zdCBpbnQg
Y0RlZmF1bHRIZWlnaHQgPSAxNTA7CiAKLVJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRl
clJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShjRGVmYXVsdFdpZHRoLCBjRGVm
YXVsdEhlaWdodCkKIHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVwbGFj
ZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJS
ZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRy
aW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9CiAK
LVJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNp
Y1NpemUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
ICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRG
bGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVwbGFjZWRMb2dpY2Fs
SGVpZ2h0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNpemUmIGlu
dHJpbnNpY1NpemUpOwotICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CisgICAg
UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlclJlcGxh
Y2VkKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKTsKKyAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0
IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOwogCiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSZXBsaWNhOjpSZW5k
ZXJSZXBsaWNhKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgLy8gVGhpcyBp
cyBhIGhhY2suIFJlcGxpY2FzIGFyZSBzeW50aGV0aWMsIGFuZCBkb24ndCBwaWNrIHVwIHRoZSBh
dHRyaWJ1dGVzIG9mIHRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGljYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyUmVwbGljYSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3gg
ewogcHVibGljOgotICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCiAgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sqIHJ1YnlBZnRl
ckJsb2MKIAogc3RhdGljIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNSdWJ5SW5saW5lQmxv
Y2soUmVuZGVyT2JqZWN0JiBydWJ5KQogewotICAgIFJlbmRlckJsb2NrKiBuZXdCbG9jayA9IG5l
dyBSZW5kZXJCbG9ja0Zsb3cocnVieS5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcnVieS5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAg
ICBSZW5kZXJCbG9jayogbmV3QmxvY2sgPSBuZXcgUmVuZGVyQmxvY2tGbG93KHJ1YnkuZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocnVieS5z
dHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKICAgICBuZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7
CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVuZGVyUnVieVJ1biYgZmluZFJ1YnlSdW4KIAogLy89PT0gcnVieSBhcyBpbmxpbmUgb2Jq
ZWN0ID09PQogCi1SZW5kZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVi
eUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKIH0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFJlbmRlclJ1YnlBc0lubGluZTo6cmVtb3Zl
Q2hpbGQoUmVuCiAKIC8vPT09IHJ1YnkgYXMgYmxvY2sgb2JqZWN0ID09PQogCi1SZW5kZXJSdWJ5
QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJSdWJ5QXNC
bG9jayhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIDxydWJ5PiB3aGVuIHVzZWQgYXMgJ2Rpc3BsYXk6
aW5saW5lJwogY2xhc3MgUmVuZGVyUnVieUFzSW5saW5lIGZpbmFsIDogcHVibGljIFJlbmRlcklu
bGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0lubGluZSgpOwogCiAg
ICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCkgb3ZlcnJpZGU7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAvLyA8cnVi
eT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5OmJsb2NrJyBvciAnZGlzcGxheTppbmxpbmUtYmxvY2sn
CiBjbGFzcyBSZW5kZXJSdWJ5QXNCbG9jayBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cg
ewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFzQmxvY2soKTsKIAogICAgIEVsZW1l
bnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX2luaXRpYWxPZmZzZXQoMCkKICAgICAsIG1faXNBZnRlckV4cGFuc2lvbih0
cnVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFJlbmRlclJ1YnlSdW47
CiAKIGNsYXNzIFJlbmRlclJ1YnlCYXNlIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CiAgICAgCiAgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAo
YW5vbnltb3VzKSI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
UnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVJ1bi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5UnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLVJlbmRlclJ1YnlSdW46OlJl
bmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9sYXN0Q2hhcmFjdGVyKDApCiAgICAgLCBtX3NlY29u
ZFRvTGFzdENoYXJhY3RlcigwKQpAQCAtMjAzLDggKzIwMyw4IEBAIHZvaWQgUmVuZGVyUnVieVJ1
bjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2IKIAogUmVuZGVyUnVieUJhc2UqIFJlbmRlclJ1YnlSdW46
OmNyZWF0ZVJ1YnlCYXNlKCkgY29uc3QKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKTsKLSAg
ICBuZXdTdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NF
TlRFUj8KKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spOworICAgIG5ld1N0eWxlLnNldFRleHRBbGln
bihDRU5URVIpOyAvLyBGSVhNRTogdXNlIFdFQktJVF9DRU5URVI/CiAgICAgYXV0byByZW5kZXJl
ciA9IG5ldyBSZW5kZXJSdWJ5QmFzZShkb2N1bWVudCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAg
ICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiByZW5kZXJlcjsKQEAg
LTIxMyw3ICsyMTMsNyBAQCBSZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVi
CiBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5UnVuKGNvbnN0
IFJlbmRlck9iamVjdCogcGFyZW50UnVieSkKIHsKICAgICBBU1NFUlQoaXNSdWJ5KHBhcmVudFJ1
YnkpKTsKLSAgICBhdXRvIHJlbmRlcmVyID0gbmV3IFJlbmRlclJ1YnlSdW4ocGFyZW50UnVieS0+
ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
JnBhcmVudFJ1YnktPnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAgIGF1dG8gcmVuZGVyZXIg
PSBuZXcgUmVuZGVyUnVieVJ1bihwYXJlbnRSdWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJ
TkVfQkxPQ0spKTsKICAgICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJu
IHJlbmRlcmVyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlclJ1
YnlUZXh0OwogCiBjbGFzcyBSZW5kZXJSdWJ5UnVuIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
RmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVJ1bihEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5UnVuKCk7CiAKICAgICBib29sIGhhc1J1
YnlUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQoRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyUnVieVRleHQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5VGV4dChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVRleHQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlUZXh0KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsOSArMjQ1LDkgQEAgdm9pZCBSZW5k
ZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcgogICAgIH0KIAogICAgIGlmIChhdXRvJiBw
YXJ0UmVuZGVyZXJTbG90ID0gbV9wYXJ0cy5hZGQocGFydFR5cGUsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZSkKLSAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+c2V0U3R5bGUoV1RGTW92ZShwYXJ0
U3R5bGUpKTsKKyAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+c2V0U3R5bGUoV1RGTW92ZSgqcGFy
dFN0eWxlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRSZW5kZXJlclNsb3QgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0Pihvd25pbmdSZW5kZXJlcigpLT5kb2N1bWVudCgp
LCBXVEZNb3ZlKHBhcnRTdHlsZSksIHRoaXMsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydFJlbmRl
cmVyU2xvdCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KG93bmluZ1JlbmRl
cmVyKCktPmRvY3VtZW50KCksIFdURk1vdmUoKnBhcnRTdHlsZSksIHRoaXMsIHBhcnRUeXBlKTsK
ICAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgfQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFy
UGFydChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCitSZW5k
ZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiBkb2N1bWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydCkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fc2Nyb2xsYmFyKHNjcm9sbGJhcikKICAgICAsIG1fcGFydChwYXJ0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclNj
cm9sbGJhcjsKIAogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlbmRlclNjcm9sbGJhciogPSBudWxscHRyLCBT
Y3JvbGxiYXJQYXJ0ID0gTm9QYXJ0KTsKKyAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyU2Nyb2xsYmFyKiA9IG51bGxwdHIsIFNjcm9sbGJhclBh
cnQgPSBOb1BhcnQpOwogICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyU2VhcmNo
RmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVy
U2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3NlYXJj
aFBvcHVwKDApCkBAIC0xNzgsOCArMTc4LDggQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6dXBk
YXRlQ2FuY2VsQnV0dAogICAgIGlmIChjdXJTdHlsZS52aXNpYmlsaXR5KCkgPT0gYnV0dG9uVmlz
aWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYW5jZWxCdXR0b25TdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZSgmY3VyU3R5bGUpOwotICAgIGNhbmNlbEJ1dHRvblN0eWxlLT5z
ZXRWaXNpYmlsaXR5KGJ1dHRvblZpc2liaWxpdHkpOworICAgIGF1dG8gY2FuY2VsQnV0dG9uU3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VyU3R5bGUpOworICAgIGNhbmNlbEJ1dHRvblN0eWxl
LnNldFZpc2liaWxpdHkoYnV0dG9uVmlzaWJpbGl0eSk7CiAgICAgY2FuY2VsQnV0dG9uUmVuZGVy
ZXItPnNldFN0eWxlKFdURk1vdmUoY2FuY2VsQnV0dG9uU3R5bGUpKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlclNlYXJjaEZpZWxkIGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZSwgcHJpdmF0ZSBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRl
clNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU2VhcmNoRmllbGQoKTsKIAogICAgIHZvaWQgdXBk
YXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgaW50IFJlbmRlclNsaWRlcjo6
ZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5OwogCi1SZW5kZXJTbGlkZXI6OlJlbmRlclNsaWRlcihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogewogICAgIC8vIFdlIGFzc3VtZSBSZW5kZXJTbGlkZXIgd29ya3Mg
b25seSB3aXRoIDxpbnB1dCB0eXBlPXJhbmdlPi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBj
bGFzcyBSZW5kZXJTbGlkZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGludCBkZWZhdWx0VHJhY2tMZW5ndGg7CiAKLSAgICBSZW5kZXJTbGlkZXIoSFRN
TElucHV0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNsaWRlcihIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyU2xpZGVyKCk7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcg
KzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3Qo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pc1BvdGVudGlhbE1v
dXNlQWN0aXZhdGlvbihmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRl
ZE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJU
YWJsZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hlYWQobnVsbHB0cikK
ICAgICAsIG1fZm9vdChudWxscHRyKQpAQCAtNzIsNyArNzIsNyBAQCBSZW5kZXJUYWJsZTo6UmVu
ZGVyVGFibGUoRWxlbWVudCYgZWxlbWVuCiAgICAgbV9jb2x1bW5Qb3MuZmlsbCgwLCAxKTsKIH0K
IAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhk
b2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hlYWQobnVsbHB0cikKICAgICAs
IG1fZm9vdChudWxscHRyKQpAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6
bm9kZUF0UG9pbnQoY29uc3QgSGl0VAogCiBSZW5kZXJUYWJsZSogUmVuZGVyVGFibGU6OmNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkK
IHsKLSAgICBhdXRvIHRhYmxlID0gbmV3IFJlbmRlclRhYmxlKHBhcmVudC0+ZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5
bGUoKSwgcGFyZW50LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUgPyBJTkxJTkVfVEFCTEUg
OiBUQUJMRSkpOworICAgIGF1dG8gdGFibGUgPSBuZXcgUmVuZGVyVGFibGUocGFyZW50LT5kb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJl
bnQtPnN0eWxlKCksIHBhcmVudC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FID8gSU5MSU5F
X1RBQkxFIDogVEFCTEUpKTsKICAgICB0YWJsZS0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0
dXJuIHRhYmxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIGVudW0gU2tpcEVtcHR5U2VjdGlv
bnNWYWx1ZSB7IERvTm90U2tpcEUKIAogY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKKyAgICBSZW5kZXJUYWJsZShEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICAvLyBQZXIgQ1NTIDMgd3JpdGluZy1tb2RlOiAi
VGhlIGZpcnN0IGFuZCBzZWNvbmQgdmFsdWVzIG9mIHRoZSAnYm9yZGVyLXNwYWNpbmcnIHByb3Bl
cnR5IHJlcHJlc2VudCBzcGFjaW5nIGJldHdlZW4gY29sdW1ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2FwdGlvbjo6
UmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
YXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUmVuZGVyVGFi
bGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2FwdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZUNhcHRpb24oKTsKIAog
ICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJUYWJsZUNlbGwgOiBwdWJsaQogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5k
ZXJUYWJsZUNlbGwpLCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRh
YmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fY29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2Nl
bGxXaWR0aENoYW5nZWQoZmFsc2UpCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQKICAgICB1cGRhdGVDb2xBbmRSb3dTcGFuRmxhZ3MoKTsK
IH0KIAotUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVDZWxsOjpS
ZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1f
Y29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2NlbGxXaWR0aENoYW5nZWQoZmFsc2Up
CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFyc0No
YW5nZWQoCiAKIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1v
dXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7Ci0gICAg
YXV0byBjZWxsID0gbmV3IFJlbmRlclRhYmxlQ2VsbChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCks
IFRBQkxFX0NFTEwpKTsKKyAgICBhdXRvIGNlbGwgPSBuZXcgUmVuZGVyVGFibGVDZWxsKHBhcmVu
dC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9DRUxMKSk7CiAgICAgY2VsbC0+aW5pdGlhbGl6ZVN0
eWxlKCk7CiAgICAgcmV0dXJuIGNlbGw7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDggQEAgZW51bSBJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbAogCiBjbGFzcyBS
ZW5kZXJUYWJsZUNlbGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOwotICAgIFJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CisgICAgUmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgCiAg
ICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0OwogICAgIHVuc2lnbmVkIHJvd1NwYW4oKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlQ29sOjpSZW5k
ZXJUYWJsZUNvbChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVGFibGVDb2w6OlJlbmRlclRhYmxlQ29sKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShz
dHlsZSksIDApCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmplY3QgYXR0cmlidXRlcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAogY2xhc3Mg
UmVuZGVyVGFibGVDb2wgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJUYWJsZUNvbChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVGFibGVDb2woRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CiAKICAgICB2b2lkIGNsZWFyUHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
Qml0cygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZVJv
dzo6UmVuZGVyVGFibGVSb3coRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9yb3dJbmRleCh1bnNldFJvd0luZGV4KQogewogICAg
IHNldElubGluZShmYWxzZSk7CiB9CiAKLVJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIFJlbmRlclRhYmxlUm93OjppbWFnZUNoYW5nZWQoV3JhcHBlCiAKIFJlbmRlclRhYmxl
Um93KiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogcGFyZW50KQogewotICAgIGF1dG8gbmV3Um93ID0gbmV3IFJlbmRl
clRhYmxlUm93KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XKSk7CisgICAgYXV0
byBuZXdSb3cgPSBuZXcgUmVuZGVyVGFibGVSb3cocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIFRB
QkxFX1JPVykpOwogICAgIG5ld1Jvdy0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5l
d1JvdzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4Um93SW5kZXggPSAweDdGCiAKIGNsYXNzIFJlbmRlclRhYmxlUm93IGZpbmFsIDog
cHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVSb3coRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlUm93KERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVSb3co
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlclRhYmxlUm93KERvY3VtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJUYWJsZVJvdyogbmV4dFJvdygpIGNvbnN0Owog
ICAgIFJlbmRlclRhYmxlUm93KiBwcmV2aW91c1JvdygpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMyArODIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZUxvZ2ljYWxIZWlnaHRGbwogICAgIH0KIH0KIAotUmVuZGVyVGFibGVTZWN0aW9uOjpSZW5k
ZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVu
ZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVTZWN0aW9uOjpS
ZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICBz
ZXRJbmxpbmUoZmFsc2UpOwpAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgUmVuZGVyVGFibGVTZWN0aW9uOgogCiBSZW5kZXJUYWJsZVNlY3Rpb24qIFJlbmRlclRhYmxl
U2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogcGFyZW50KQogewotICAgIGF1dG8gc2VjdGlvbiA9IG5ldyBSZW5kZXJUYWJsZVNlY3Rp
b24ocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBUQUJMRV9ST1dfR1JPVVApKTsKKyAgICBhdXRv
IHNlY3Rpb24gPSBuZXcgUmVuZGVyVGFibGVTZWN0aW9uKHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgp
LCBUQUJMRV9ST1dfR1JPVVApKTsKICAgICBzZWN0aW9uLT5pbml0aWFsaXplU3R5bGUoKTsKICAg
ICByZXR1cm4gc2VjdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCAr
NTUsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKERv
Y3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVT
ZWN0aW9uKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24o
RG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZVNlY3Rp
b24oKTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxv
Y2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAg
UmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgLy8gVGhpcyBjb252ZW5pZW5j
ZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2UgaW5uZXJUZXh0RWxl
bWVudCBtYXkgb3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CkBAIC05MSw3ICs5MSw3IEBAIHBy
aXZhdGU6CiAvLyBhbnltb3JlLgogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
ciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlclRleHRD
b250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
ICAgICB7IH0KICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkg
eyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRBcmVh
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1M
VGV4dEFyZWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyVGV4dENvbnRyb2woZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAg
Y2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1M
VGV4dEFyZWFFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRBcmVh
RWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMg
UmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZShIVE1MSW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAog
cHJvdGVjdGVkOgpAQCAtOTAsNyArOTAsNyBAQCBpbmxpbmUgSFRNTEVsZW1lbnQqIFJlbmRlclRl
eHRDb250cm9sU2luCiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9s
SW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorICAgIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRD
dWUoVlRUQ3VlQm94JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9jdWUoZWxlbWVudC5nZXRDdWUoKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBjbGFzcyBWVFRDdWVCb3g7CiAKIGNsYXNzIFJlbmRlclZUVEN1ZSBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclZUVEN1ZShWVFRDdWVC
b3gmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWVFRDdWUoVlRU
Q3VlQm94JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclZpZGVvOjpSZW5kZXJWaWRl
byhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNZWRpYShlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGNhbGN1bGF0ZUludHJpbnNpY1Np
emUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIAog
Y2xhc3MgUmVuZGVyVmlkZW8gZmluYWwgOiBwdWJsaWMgUmVuZGVyTWVkaWEgewogcHVibGljOgot
ICAgIFJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlkZW8oKTsKIAogICAgIEhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqPiBtX3Nw
YW5uZXJTdGFjazsKIH07CiAKLVJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmlldzo6UmVu
ZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9mcmFtZVZp
ZXcoKmRvY3VtZW50LnZpZXcoKSkKICAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0KG51bGxw
dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVuZGVyUXVvdGU7CiAKIGNsYXNzIFJlbmRl
clZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3Vi
dHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRlclZpZXcoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlldygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1BhcmVu
dFNvb24oV2lkZ2UKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpz
Y2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKIH0KIAotUmVuZGVyV2lkZ2V0OjpS
ZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZy
YW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3dlYWtQdHJGYWN0
b3J5KHRoaXMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGVyZWYoKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlcldpZGdldChIVE1MRnJhbWVPd25lckVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJXaWRnZXQo
SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBm
aW5hbDsKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMyArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGNvbnN0IFJl
bmRlclN0eWxlJiBjdXJyZW50U3R5bGUpCitzdGF0aWMgUmVuZGVyU3R5bGUgY2xvbmVSZW5kZXJT
dHlsZVdpdGhTdGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKQogewotICAgIGF1
dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJmN1cnJlbnRTdHlsZSk7CisgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50U3R5bGUpOwogICAgIGlmIChj
dXJyZW50U3R5bGUubGFzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgbmV3U3R5bGUtPnNldExhc3RD
aGlsZFN0YXRlKCk7CisgICAgICAgIG5ld1N0eWxlLnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAg
aWYgKGN1cnJlbnRTdHlsZS5maXJzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgbmV3U3R5bGUtPnNl
dEZpcnN0Q2hpbGRTdGF0ZSgpOworICAgICAgICBuZXdTdHlsZS5zZXRGaXJzdENoaWxkU3RhdGUo
KTsKICAgICByZXR1cm4gbmV3U3R5bGU7CiB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgVGV4dEF1dG9T
aXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KERlbAogfQogCiBUZXh0QXV0b1NpemluZ0tleTo6
VGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQotICAgIDogbV9zdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmUoc3R5bGUpKQorICAgIDogbV9zdHlsZShzdHlsZSA/IFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqc3R5bGUpIDogbnVsbHB0cikKIHsKIH0KIApAQCAtMTE4LDEwICsxMTgsMTAg
QEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIHN0eWxlID0gY2xvbmVSZW5kZXJTdHls
ZVdpdGhTdGF0ZSh0ZXh0LT5zdHlsZSgpKTsKLSAgICAgICAgICAgIGF1dG8gZm9udERlc2NyaXB0
aW9uID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAgICAgYXV0byBmb250RGVz
Y3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoYXZlcmFnZVNpemUpOwotICAgICAgICAgICAgc3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICAgICAgc3R5bGUt
PmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2Vs
ZWN0b3IoKSk7CisgICAgICAgICAgICBzdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKTsKKyAgICAgICAgICAgIHN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6
aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICB0ZXh0LT5w
YXJlbnQoKS0+c2V0U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRSZW5kZXJlciA9IHRleHQtPnBhcmVudCgpOwpAQCAt
MTMyLDggKzEzMiw4IEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0Tm9kZVNpemUK
ICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbGlzdE1hcmtlclJlbmRlcmVyID0gcGFyZW50UmVu
ZGVyZXItPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIGlmIChsaXN0TWFya2VyUmVuZGVyZXIt
PmlzTGlzdE1hcmtlcigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVu
ZGVyU3R5bGVXaXRoU3RhdGUobGlzdE1hcmtlclJlbmRlcmVyLT5zdHlsZSgpKTsKLSAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAg
ICAgICAgICAgICAgc3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+
ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgc3R5bGUuZm9u
dENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3Rv
cigpKTsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPigqbGlzdE1h
cmtlclJlbmRlcmVyKS5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTE1MCwxMCArMTUwLDEwIEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1
ZTo6YWRqdXN0Tm9kZVNpemUKICAgICAgICAgICAgIGludCBsaW5lSGVpZ2h0ID0gc3BlY2lmaWVk
TGluZUhlaWdodCAqIHNjYWxlQ2hhbmdlOwogICAgICAgICAgICAgaWYgKCFsaW5lSGVpZ2h0TGVu
Z3RoLmlzRml4ZWQoKSB8fCBsaW5lSGVpZ2h0TGVuZ3RoLnZhbHVlKCkgIT0gbGluZUhlaWdodCkg
ewogICAgICAgICAgICAgICAgIGF1dG8gbmV3UGFyZW50U3R5bGUgPSBjbG9uZVJlbmRlclN0eWxl
V2l0aFN0YXRlKHBhcmVudFN0eWxlKTsKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+
c2V0TGluZUhlaWdodChMZW5ndGgobGluZUhlaWdodCwgRml4ZWQpKTsKLSAgICAgICAgICAgICAg
ICBuZXdQYXJlbnRTdHlsZS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChsaW5lSGVpZ2h0TGVuZ3Ro
KTsKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPmZvbnRDYXNj
YWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7
CisgICAgICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChMZW5ndGgobGlu
ZUhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVj
aWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGgpOworICAgICAgICAgICAgICAgIG5ld1Bh
cmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICAg
ICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9k
ZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcGFyZW50UmVu
ZGVyZXItPnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6
cmVzZXQoKQogICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpICE9IG9y
aWdpbmFsU2l6ZSkgewogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6
ZShvcmlnaW5hbFNpemUpOwogICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVuZGVyU3R5
bGVXaXRoU3RhdGUodGV4dC0+c3R5bGUoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBzdHlsZS0+Zm9udENhc2Nh
ZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsK
KyAgICAgICAgICAgIHN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgc3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5k
b2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5z
ZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gUmVzZXQgdGhl
IGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCi1SZW5kZXJNYXRo
TUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYgY29udGFpbmVyLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhN
TEJsb2NrKEVsZW1lbnQmIGNvbnRhaW5lciwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGNvbnRhaW5lciwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKLVJlbmRl
ck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVy
TWF0aE1MQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyRmxleGlibGVCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAt
NjAsNyArNjAsNyBAQCBib29sIFJlbmRlck1hdGhNTEJsb2NrOjppc0NoaWxkQWxsb3dlZChjCiAK
IFJlbmRlclB0cjxSZW5kZXJNYXRoTUxCbG9jaz4gUmVuZGVyTWF0aE1MQmxvY2s6OmNyZWF0ZUFu
b255bW91c01hdGhNTEJsb2NrKCkKIHsKLSAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MQmxvY2s+
IG5ld0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KGRvY3VtZW50KCks
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBG
TEVYKSk7CisgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTEJsb2NrPiBuZXdCbG9jayA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEJsb2NrPihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKSk7CiAgICAgbmV3Qmxv
Y2stPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBjbGFz
cyBSZW5kZXJNYXRoTUxPcGVyYXRvcjsKIAogY2xhc3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJs
aWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEJsb2NrKEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxC
bG9jayhEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ck1hdGhNTEJsb2NrKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxC
bG9jayhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgYm9vbCBpc0NoaWxkQWxsb3dl
ZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJNYXRoTUxU
YWJsZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUYWJsZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
UmVuZGVyTWF0aE1MVGFibGUoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKKyAgICBleHBsaWNpdCBSZW5kZXJNYXRoTUxUYWJsZShFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlclRhYmxlKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZlbmNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIE1hdGhNTE5hbWVzOwogc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFy
ID0gIigiOwogc3RhdGljIGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOwogCi1S
ZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1h
dGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY2xvc2VGZW5jZVJlbmRl
cmVyKG51bGxwdHIpCiB7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2Vk
Ojp1cGRhdGVGcm9tRWxlbWUKIAogUmVuZGVyUHRyPFJlbmRlck1hdGhNTE9wZXJhdG9yPiBSZW5k
ZXJNYXRoTUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJhdG9yKGNvbnN0IFN0cmluZyYgb3BlcmF0
b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6Rm9ybSBmb3JtLCBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnk6OkZsYWcgZmxhZykKIHsKLSAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1M
T3BlcmF0b3I+IG5ld09wZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0
b3I+KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KCZzdHlsZSgpLCBGTEVYKSwgb3BlcmF0b3JTdHJpbmcsIGZvcm0sIGZsYWcpOworICAgIFJl
bmRlclB0cjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4gbmV3T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCksIG9wZXJhdG9yU3RyaW5nLCBm
b3JtLCBmbGFnKTsKICAgICBuZXdPcGVyYXRvci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0
dXJuIG5ld09wZXJhdG9yOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGZW5jZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNs
YXNzIFJlbmRlck1hdGhNTEZlbmNlZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewog
cHVibGljOgotICAgIFJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MRmVu
Y2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0
IGdGcmFjdGlvbkJhcldpZHRoID0gMAogc3RhdGljIGNvbnN0IGZsb2F0IGdOdW1lcmF0b3JHYXAg
PSAwLjJmOwogc3RhdGljIGNvbnN0IGZsb2F0IGdEZW5vbWluYXRvckdhcCA9IDAuMmY7CiAKLVJl
bmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZGVmYXVs
dExpbmVUaGlja25lc3MoMSkKICAgICAsIG1fbGluZVRoaWNrbmVzcygwKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rp
b24uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gZmluYWwg
OiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZy
YWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICBmbG9hdCByZWxhdGl2
ZUxpbmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzID8g
bV9saW5lVGhpY2tuZXNzIC8gbV9kZWZhdWx0TGluZVRoaWNrbmVzcyA6IExheW91dFVuaXQoMCk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNYXRoLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKIAotUmVuZGVyTWF0aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MTWF0
aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTE1hdGggZmluYWwg
OiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxNYXRo
KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRo
TUxNYXRoKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlz
UmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWVuY2xvc2UuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAvLyBGb3Igbm93LCB3
ZSB1c2UgYSBCZXppZXIgY3VydmUgYW5kIHRoaXMgc29tZXdoYXQgYXJiaXRyYXJ5IHZhbHVlLgog
Y29uc3QgdW5zaWduZWQgc2hvcnQgbG9uZ0RpdkxlZnRTcGFjZSA9IDEwOwogCi1SZW5kZXJNYXRo
TUxNZW5jbG9zZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9h
c2NlbnQoMCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFz
cyBSZW5kZXJNYXRoTUxNZW5jbG9zZSBmaW5hbDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3
Miw3IEBAIHN0YXRpYyBjb25zdCBTdHJldGNoeUNoYXJhY3RlciBzdHJldGNoeUMKICAgICB7IDB4
MjIyYiwgMHgyMzIwLCAweDIzYWUsIDB4MjMyMSwgMHgwICAgIH0gLy8gaW50ZWdyYWwgc2lnbgog
fTsKIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFRva2VuKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVpZ2h0QWJvdmVCYXNlbGluZSgw
KQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDApCkBAIC04Miw3ICs4Miw3IEBA
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXQKICAgICB1cGRhdGVUb2tl
bkNvbnRlbnQoKTsKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJh
dG9yKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
OjpGb3JtIGZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzKQorUmVuZGVyTWF0aE1MT3BlcmF0b3I6
OlJlbmRlck1hdGhNTE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjpGb3JtIGZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzKQogICAgIDogUmVuZGVyTWF0aE1M
VG9rZW4oZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVpZ2h0QWJv
dmVCYXNlbGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDApCkBAIC02
MzEsOSArNjMxLDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlU3R5bGUoKQog
ICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdob2xlIGVt
YmVsbGlzaGVkIG9wZXJhdG9yIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0ODMxKS4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIG9ubHkgYmUgYWRk
ZWQgaW5zaWRlIChwZXJoYXBzIGluZmVycmVkKSBtcm93IChodHRwOi8vd3d3LnczLm9yZy9UUi9N
YXRoTUwvY2hhcHRlcjMuaHRtbCNwcmVzbS5vcHNwYWNpbmcpLgogICAgIGNvbnN0IGF1dG8mIHdy
YXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwotICAgIGF1dG8g
bmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgRkxFWCk7Ci0gICAgbmV3U3R5bGUtPnNldE1hcmdpblN0YXJ0KExlbmd0aChtX2xl
YWRpbmdTcGFjZSwgRml4ZWQpKTsKLSAgICBuZXdTdHlsZS0+c2V0TWFyZ2luRW5kKExlbmd0aCht
X3RyYWlsaW5nU3BhY2UsIEZpeGVkKSk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOworICAgIG5l
d1N0eWxlLnNldE1hcmdpblN0YXJ0KExlbmd0aChtX2xlYWRpbmdTcGFjZSwgRml4ZWQpKTsKKyAg
ICBuZXdTdHlsZS5zZXRNYXJnaW5FbmQoTGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsK
ICAgICB3cmFwcGVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgd3JhcHBlci0+
c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTE9wZXJhdG9yIDogcHVibGljIFJl
bmRlck1hdGhNTFRva2VuIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRo
TUxFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0
aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0s
IHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0
aE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKERv
Y3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwog
CiAgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxp
bmUsIExheW91dFVuaXQgZGVwdGhCZWxvd0Jhc2VsaW5lKTsKICAgICB2b2lkIHN0cmV0Y2hUbyhM
YXlvdXRVbml0IHdpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBjb25zdCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgPSAwCiAvLyBSYWRpY2FsIHRo
aWNrIGxpbmUgdGhpY2tuZXNzIChlbSkKIGNvbnN0IGZsb2F0IGdSYWRpY2FsVGhpY2tMaW5lVGhp
Y2tuZXNzRW1zID0gMC4xZjsKIAotUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
LCBTdHJpbmcoJmdSYWRpY2FsQ2hhcmFjdGVyLCAxKSwgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
OjpQcmVmaXgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
UmFkaWNhbE9wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IgZmluYWwg
OiBwdWJsaWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IgewogcHVibGljOgotICAgIFJlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4p
OworICAgIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGluZSwg
TGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBJbiBvcmRlciB0byBhY2NlcHQgaW52YWxpZCBtYXJrdXAg
YW5kIHRvIGhhbmRsZSA8bXJvb3Q+IGFuZCA8bXNxcnQ+IGNvbnNpc3RlbnRseSwgd2Ugd2lsbCBh
bGxvdyBhbnkgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoZSBCYXNlV3JhcHBlciBvZiA8bXJvb3Q+
IHRvby4KIC8vIFdlIHdpbGwgYWxsb3cgdGhlIEluZGV4V3JhcHBlciB0byBiZSBlbXB0eSBhbmQg
aXQgd2lsbCBhbHdheXMgY29udGFpbiB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgPG1yb290PiBpZiB0
aGVyZSBhcmUgYXQgbGVhc3QgMiBlbGVtZW50cy4KIAotUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVy
TWF0aE1MUm9vdChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxSb290OjpyZXN0cnVjdHVyZVdyYXBwZQogCiAgICAgaWYgKHJhZGljYWwtPmlzRW1wdHko
KSkgewogICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIHJhZGljYWwgb3BlcmF0b3IuCi0gICAgICAg
IFJlbmRlclB0cjxSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I+IHJhZGljYWxPcGVyYXRvciA9
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4oZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEZM
RVgpKTsKKyAgICAgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4gcmFk
aWNhbE9wZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
Pihkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShzdHlsZSgpLCBGTEVYKSk7CiAgICAgICAgIHJhZGljYWxPcGVyYXRvci0+aW5pdGlhbGl6ZVN0
eWxlKCk7CiAgICAgICAgIHJhZGljYWwtPmFkZENoaWxkKHJhZGljYWxPcGVyYXRvci5sZWFrUHRy
KCkpOwogICAgIH0KQEAgLTIyMCwyNiArMjIwLDI2IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6
dXBkYXRlU3R5bGUoKQogICAgIC8vIFdlIHNldCB0aGUgc3R5bGUgb2YgdGhlIGFub255bW91cyB3
cmFwcGVycy4KIAogICAgIGF1dG8gcmFkaWNhbCA9IHJhZGljYWxXcmFwcGVyKCk7Ci0gICAgYXV0
byByYWRpY2FsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheSgmc3R5bGUoKSwgRkxFWCk7Ci0gICAgcmFkaWNhbFN0eWxlLT5zZXRNYXJnaW5Ub3AoTGVu
Z3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1hdGhNTFJv
b3Q6OmxheW91dCgpLgorICAgIGF1dG8gcmFkaWNhbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CisgICAgcmFkaWNhbFN0
eWxlLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0
ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCiAgICAgcmFkaWNhbC0+c2V0U3R5bGUo
V1RGTW92ZShyYWRpY2FsU3R5bGUpKTsKICAgICByYWRpY2FsLT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKIAogICAgIGF1dG8gYmFzZSA9IGJhc2VXcmFwcGVyKCk7Ci0gICAg
YXV0byBiYXNlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheSgmc3R5bGUoKSwgRkxFWCk7Ci0gICAgYmFzZVN0eWxlLT5zZXRNYXJnaW5Ub3AoTGVuZ3Ro
KDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1hdGhNTFJvb3Q6
OmxheW91dCgpLgotICAgIGJhc2VTdHlsZS0+c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3Np
dGlvbkJhc2VsaW5lKTsKKyAgICBhdXRvIGJhc2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOworICAgIGJhc2VTdHlsZS5z
ZXRNYXJnaW5Ub3AoTGVuZ3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGlu
IFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpLgorICAgIGJhc2VTdHlsZS5zZXRBbGlnbkl0ZW1z
UG9zaXRpb24oSXRlbVBvc2l0aW9uQmFzZWxpbmUpOwogICAgIGJhc2UtPnNldFN0eWxlKFdURk1v
dmUoYmFzZVN0eWxlKSk7CiAgICAgYmFzZS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CiAKICAgICBpZiAoIWlzUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCgpKSB7CiAgICAgICAg
IC8vIEZvciBtcm9vdCwgd2UgYWxzbyBzZXQgdGhlIHN0eWxlIG9mIHRoZSBpbmRleCB3cmFwcGVy
LgogICAgICAgICBhdXRvIGluZGV4ID0gaW5kZXhXcmFwcGVyKCk7Ci0gICAgICAgIGF1dG8gaW5k
ZXhTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZz
dHlsZSgpLCBGTEVYKTsKLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0TWFyZ2luVG9wKExlbmd0aCgw
LCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290Ojps
YXlvdXQoKS4KLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0TWFyZ2luU3RhcnQoTGVuZ3RoKGtlcm5C
ZWZvcmVEZWdyZWUsIEZpeGVkKSk7Ci0gICAgICAgIGluZGV4U3R5bGUtPnNldE1hcmdpbkVuZChM
ZW5ndGgoa2VybkFmdGVyRGVncmVlLCBGaXhlZCkpOwotICAgICAgICBpbmRleFN0eWxlLT5zZXRB
bGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQmFzZWxpbmUpOworICAgICAgICBhdXRvIGlu
ZGV4U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShz
dHlsZSgpLCBGTEVYKTsKKyAgICAgICAgaW5kZXhTdHlsZS5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAs
IEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGluIFJlbmRlck1hdGhNTFJvb3Q6Omxh
eW91dCgpLgorICAgICAgICBpbmRleFN0eWxlLnNldE1hcmdpblN0YXJ0KExlbmd0aChrZXJuQmVm
b3JlRGVncmVlLCBGaXhlZCkpOworICAgICAgICBpbmRleFN0eWxlLnNldE1hcmdpbkVuZChMZW5n
dGgoa2VybkFmdGVyRGVncmVlLCBGaXhlZCkpOworICAgICAgICBpbmRleFN0eWxlLnNldEFsaWdu
SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CiAgICAgICAgIGluZGV4LT5zZXRT
dHlsZShXVEZNb3ZlKGluZGV4U3R5bGUpKTsKICAgICAgICAgaW5kZXgtPnNldE5lZWRzTGF5b3V0
QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgCiAKIFJlbmRlclB0cjxSZW5kZXJNYXRo
TUxSb290V3JhcHBlcj4gUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI6OmNyZWF0ZUFub255bW91c1dy
YXBwZXIoUmVuZGVyTWF0aE1MUm9vdCogcmVuZGVyT2JqZWN0KQogewotICAgIFJlbmRlclB0cjxS
ZW5kZXJNYXRoTUxSb290V3JhcHBlcj4gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxSb290V3JhcHBlcj4ocmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyT2JqZWN0LT5zdHlsZSgpLCBG
TEVYKSk7CisgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBuZXdCbG9jayA9
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPihyZW5kZXJPYmplY3QtPmRv
Y3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHJl
bmRlck9iamVjdC0+c3R5bGUoKSwgRkxFWCkpOwogICAgIG5ld0Jsb2NrLT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gbmV3QmxvY2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6
IHB1YmxpYyBSZW5kZXJNYQogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOwog
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUm9vdChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUm9vdChFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAKICAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlk
ZTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIgZmluYWwg
OiBwdQogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFJvb3Q7CiAKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNYXRoTUxSb290V3JhcHBlcihEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlck1hdGhNTFJv
dyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpIHsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1h
dGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1M
QmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKLVJlbmRlck1hdGhNTFJvdzo6
UmVuZGVyTWF0aE1MUm93KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KERvY3VtZW50
JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2Nr
KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBSZW5kZXJNYXRoTUxSb290Owog
CiBjbGFzcyBSZW5kZXJNYXRoTUxSb3cgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVi
bGljOgotICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MUm93KERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAog
ICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0aWVzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBz
dGF0aWMgYm9vbCBpc1ByZXNjcmlwdERlbGltaXRlcihjb25zdCBSCiAgICAgcmV0dXJuIHJlbmRl
ck9iamVjdC5ub2RlKCkgJiYgcmVuZGVyT2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6bXByZXNjcmlwdHNUYWcpOwogfQogCi1SZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJN
YXRoTUxTY3JpcHRzKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9j
ayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5k
IG9mIHN1Yi9zdXAgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFJlbmRlciBhIGJhc2Ugd2l0aCBzY3JpcHRzLgogY2xh
c3MgUmVuZGVyTWF0aE1MU2NyaXB0cyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGZpbmFsOwogICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVy
TWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6
OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX3dpZHRoKDApCiAgICAgLCBtX2hlaWdodCgwKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxU
ZXh0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1h
dGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgTWF0aE1M
VGV4dEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxUZXh0RWxl
bWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
cXVhcmVSb290LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJNYXRoTUxT
cXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpS
ZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb290KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVh
cmVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw4ICszOCw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlOwogLy8gUmVu
ZGVyIHNxcnQoYmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBjbGFzcyBSZW5kZXJNYXRo
TUxTcXVhcmVSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvb3QgewogcHVibGljOgot
ICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOwotICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MU3F1YXJlUm9vdD4g
Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKFJlbmRlck1hdGhNTE1lbmNsb3NlJik7
CisgICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTFRva2VuOjpS
ZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9j
ayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY29udGFpbnNFbGVtZW50KGZhbHNl
KQogewogfQogCi1SZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fY29udGFpbnNFbGVtZW50KGZhbHNlKQogewpAQCAtODIsMTcgKzgyLDE3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVN0eWxlKCkKICAgICBjb25zdCBhdXRv
JiB0b2tlbkVsZW1lbnQgPSBlbGVtZW50KCk7CiAKICAgICBjb25zdCBhdXRvJiB3cmFwcGVyID0g
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKLSAgICBhdXRvIG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCks
IEZMRVgpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKIAogICAgIGlmICh0b2tlbkVsZW1lbnQu
aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWlUYWcpKSB7CiAgICAgICAgIC8vIFRoaXMgdHJpZXMg
dG8gZW11bGF0ZSB0aGUgZGVmYXVsdCBtYXRodmFyaWFudCB2YWx1ZSBvbiA8bWk+IHVzaW5nIHRo
ZSBDU1MgZm9udC1zdHlsZSBwcm9wZXJ0eS4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHJldmlzZWQgd2hlbiBtYXRodmFyaWFudCBpcyBpbXBsZW1lbnRlZCAoaHR0cDovL3drYnVn
Lzg1NzM1KSBhbmQgd2hlbiBmb250cyB3aXRoIE1hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3lt
Ym9scyBjaGFyYWN0ZXJzIGFyZSBtb3JlIHBvcHVsYXIuCi0gICAgICAgIGF1dG8gZm9udERlc2Ny
aXB0aW9uID0gbmV3U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBGb250U2VsZWN0
b3IqIGZvbnRTZWxlY3RvciA9IG5ld1N0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRTZWxlY3Rvcigp
OworICAgICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IG5ld1N0eWxlLmZvbnREZXNjcmlwdGlv
bigpOworICAgICAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9IG5ld1N0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udFNlbGVjdG9yKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc0VsZW1lbnQg
JiYgZWxlbWVudCgpLnRleHRDb250ZW50KCkuc3RyaXBXaGl0ZVNwYWNlKCkuc2ltcGxpZnlXaGl0
ZVNwYWNlKCkubGVuZ3RoKCkgPT0gMSAmJiAhdG9rZW5FbGVtZW50Lmhhc0F0dHJpYnV0ZShtYXRo
dmFyaWFudEF0dHIpKQogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhGb250
SXRhbGljT24pOwotICAgICAgICBpZiAobmV3U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbmV3U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRl
KGZvbnRTZWxlY3Rvcik7CisgICAgICAgIGlmIChuZXdTdHlsZS5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgIG5ld1N0eWxlLmZvbnRDYXNjYWRlKCkudXBk
YXRlKGZvbnRTZWxlY3Rvcik7CiAgICAgfQogCiAgICAgd3JhcHBlci0+c2V0U3R5bGUoV1RGTW92
ZShuZXdTdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRl
ck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7
Ci0gICAgUmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CisgICAgUmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAg
IE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1M
VGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1l
czsKICAgICAKLVJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiB1bmRlci9v
dmVyIGV4cHJlc3Npb24gd2UgaGF2ZSBieSBlbGVtZW50IG5hbWUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhN
TFVuZGVyT3ZlcihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICAKICAg
ICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNDYgKzg2LDUxIEBAIHN0cnVj
dCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVy
U3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5bGUpLCBSZW5kZXJTdHlsZV9zaG91
bGRfc3RheV9zbWFsbCk7CiAKLWlubGluZSBSZW5kZXJTdHlsZSYgZGVmYXVsdFN0eWxlKCkKK1Jl
bmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKLSAgICBzdGF0aWMgUmVu
ZGVyU3R5bGUmIHN0eWxlID0gKlJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKS5yZWxl
YXNlKCk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZSA9ICpuZXcgUmVuZGVyU3R5bGUo
Q3JlYXRlRGVmYXVsdFN0eWxlKTsKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpCitSZW5kZXJTdHlsZSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gY2xvbmUoJmRlZmF1bHRTdHlsZSgpKTsK
KyAgICByZXR1cm4gY2xvbmUoZGVmYXVsdFN0eWxlKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQorc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPihuZXcgUmVuZGVyU3R5bGUodHJ1ZSkpOwor
ICAgIHJldHVybiBjbG9uZVB0cihkZWZhdWx0U3R5bGUoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSBkaXNwbGF5KQorUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25lKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsK
LSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIG5ld1N0eWxl
LT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7Ci0gICAgbmV3U3R5bGUtPmluaGVyaXRVbmljb2Rl
QmlkaUZyb20ocGFyZW50U3R5bGUpOwotICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KGRpc3BsYXkp
OwotICAgIHJldHVybiBuZXdTdHlsZTsKKyAgICByZXR1cm4gUmVuZGVyU3R5bGUoc3R5bGUsIENs
b25lKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xv
bmUoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KG5ldyBSZW5kZXJTdHlsZSgqb3Ro
ZXIpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENs
b25lKTsKK30KKworUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlzcGxheSBkaXNw
bGF5KQoreworICAgIGF1dG8gbmV3U3R5bGUgPSBjcmVhdGUoKTsKKyAgICBuZXdTdHlsZS5pbmhl
cml0RnJvbSgmcGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLmluaGVyaXRVbmljb2RlQmlkaUZy
b20oJnBhcmVudFN0eWxlKTsKKyAgICBuZXdTdHlsZS5zZXREaXNwbGF5KGRpc3BsYXkpOworICAg
IHJldHVybiBuZXdTdHlsZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwc2V1ZG9TdHlsZSkKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVTdHls
ZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxl
KQogewogICAgIEFTU0VSVChwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgcHNl
dWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gQUZURVIpOwogCi0gICAgYXV0byBzdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+aW5oZXJpdEZyb20oJnBzZXVkb1N0eWxlKTsK
KyAgICBhdXRvIHN0eWxlID0gY3JlYXRlKCk7CisgICAgc3R5bGUuaW5oZXJpdEZyb20oJnBzZXVk
b1N0eWxlKTsKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLUFMV0FZU19JTkxJTkUgUmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKGJvb2wpCitSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdFN0eWxlVGFnKQogICAgIDogbV9ib3goU3R5bGVCb3hEYXRhOjpjcmVhdGUoKSkKICAgICAs
IHZpc3VhbChTdHlsZVZpc3VhbERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZ3JvdW5kKFN0
eWxlQmFja2dyb3VuZERhdGE6OmNyZWF0ZSgpKQpAQCAtMTYyLDE3ICsxNjcsMTcgQEAgQUxXQVlT
X0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoYgogICAgIHN0YXRpY19hc3NlcnQoKHNp
emVvZihOb25Jbmhlcml0ZWRGbGFncykgPD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5v
dCBncm93Iik7CiB9CiAKLUFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBvKQotICAgIDogbV9ib3goby5tX2JveCkKLSAgICAsIHZpc3VhbChv
LnZpc3VhbCkKLSAgICAsIG1fYmFja2dyb3VuZChvLm1fYmFja2dyb3VuZCkKLSAgICAsIHN1cnJv
dW5kKG8uc3Vycm91bmQpCi0gICAgLCByYXJlTm9uSW5oZXJpdGVkRGF0YShvLnJhcmVOb25Jbmhl
cml0ZWREYXRhKQotICAgICwgcmFyZUluaGVyaXRlZERhdGEoby5yYXJlSW5oZXJpdGVkRGF0YSkK
LSAgICAsIGluaGVyaXRlZChvLmluaGVyaXRlZCkKLSAgICAsIG1fc3ZnU3R5bGUoby5tX3N2Z1N0
eWxlKQotICAgICwgaW5oZXJpdGVkX2ZsYWdzKG8uaW5oZXJpdGVkX2ZsYWdzKQotICAgICwgbm9u
aW5oZXJpdGVkX2ZsYWdzKG8ubm9uaW5oZXJpdGVkX2ZsYWdzKQorUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCisgICAgOiBtX2JveChv
dGhlci5tX2JveCkKKyAgICAsIHZpc3VhbChvdGhlci52aXN1YWwpCisgICAgLCBtX2JhY2tncm91
bmQob3RoZXIubV9iYWNrZ3JvdW5kKQorICAgICwgc3Vycm91bmQob3RoZXIuc3Vycm91bmQpCisg
ICAgLCByYXJlTm9uSW5oZXJpdGVkRGF0YShvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YSkKKyAg
ICAsIHJhcmVJbmhlcml0ZWREYXRhKG90aGVyLnJhcmVJbmhlcml0ZWREYXRhKQorICAgICwgaW5o
ZXJpdGVkKG90aGVyLmluaGVyaXRlZCkKKyAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHls
ZSkKKyAgICAsIGluaGVyaXRlZF9mbGFncyhvdGhlci5pbmhlcml0ZWRfZmxhZ3MpCisgICAgLCBu
b25pbmhlcml0ZWRfZmxhZ3Mob3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGEuaCIKICNpbmNsdWRlICJTdHlsZUZpbHRlckRhdGEuaCIKICNp
bmNsdWRlICJTdHlsZUZsZXhpYmxlQm94RGF0YS5oIgorI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVk
RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlTWFycXVlZURhdGEuaCIKICNpbmNsdWRlICJTdHlsZU11
bHRpQ29sRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCIKQEAgLTQ3
OSwyMCArNDgwLDI5IEBAIHByb3RlY3RlZDoKIAogLy8gIUVORCBTWU5DIQogcHJpdmF0ZToKLSAg
ICAvLyB1c2VkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KLSAgICBBTFdBWVNfSU5MSU5F
IFJlbmRlclN0eWxlKGJvb2wpOwotICAgIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmKTsKKyAgICBlbnVtIENyZWF0ZURlZmF1bHRTdHlsZVRhZyB7IENyZWF0ZURl
ZmF1bHRTdHlsZSB9OworICAgIFJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZVRhZyk7CisK
KyAgICBzdGF0aWMgUmVuZGVyU3R5bGUmIGRlZmF1bHRTdHlsZSgpOwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZShjb25zdCBSZW5kZXJT
dHlsZSopOworICAgIFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKyAgICBS
ZW5kZXJTdHlsZSYgb3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKKworICAgIC8v
IFRoaXMgaXMgbm90IGEgdHJ1ZSBjb3B5IGNvbnN0cnVjdG9yLiBJdCBkb2Vzbid0IGNvcHkgcHNl
dWRvIHN0eWxlIGNhY2hlcyBmb3IgZXhhbXBsZS4KKyAgICBlbnVtIENsb25lVGFnIHsgQ2xvbmUg
fTsKKyAgICBSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIENsb25lVGFnKTsKIAogICAg
IH5SZW5kZXJTdHlsZSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgUmVuZGVyU3R5bGUgZm9yIGdlbmVy
YXRlZCBjb250ZW50IGJ5IGluaGVyaXRpbmcgZnJvbSBhIHBzZXVkbyBzdHlsZS4KLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9t
UHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKKyAgICBzdGF0aWMg
UmVuZGVyU3R5bGUgY3JlYXRlKCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlUHRyKCk7CisKKyAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY2xvbmUoY29uc3Qg
UmVuZGVyU3R5bGUmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBj
bG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYpOworCisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlLCBFRGlzcGxheSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZVN0eWxlSW5oZXJp
dGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOwogCiAg
ICAgQ29udGVudFBvc2l0aW9uIHJlc29sdmVkSnVzdGlmeUNvbnRlbnRQb3NpdGlvbihjb25zdCBT
dHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yKSBjb25zdDsKICAg
ICBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSByZXNvbHZlZEp1c3RpZnlDb250ZW50RGlzdHJpYnV0
aW9uKGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3Ip
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2Nr
KFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhp
Y3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdCbG9j
ayhTVkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWlu
ZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChm
YWxzZSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNPYmplY3RCb3VuZGluZ0JveFZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3Vu
ZGluZ0JveFZhbGlkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZH
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0Nv
bnRhaW5lcihTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0VsbGlwc2UuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZH
RWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdFbGxpcHNlOjpSZW5kZXJTVkdFbGxpcHNlKFNWR0dy
YXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR1NoYXBlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV91c2VQYXRoRmFsbGJh
Y2soZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0VsbGlwc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdFbGxpcHNlIGZpbmFs
IDogcHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdFbGxpcHNl
KFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclNWR0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyU1ZHRWxsaXBzZSgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJT
VkdGb3JlaWduT2JqZWN0KCk7CiAKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgZm9yZWln
bk9iamVjdEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9w
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVJlbmRlclNWR0dyYWRpZW50U3Rv
cDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5k
ZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0dyYWRpZW50U3RvcC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBAIGNsYXNzIFNWR0dyYWRpZW50RWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgZXhp
c3RzIG1vc3RseSBzbyB3ZSBjYW4gaGVhciBhYm91dCBncmFkaWVudCBzdG9wIHN0eWxlIGNoYW5n
ZXMKIGNsYXNzIFJlbmRlclNWR0dyYWRpZW50U3RvcCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdHcmFkaWVudFN0
b3AoU1ZHU3RvcEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJT
VkdHcmFkaWVudFN0b3AoKTsKIAogICAgIFNWR1N0b3BFbGVtZW50JiBlbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8U1ZHU3RvcEVsZW1lbnQ+KFJlbmRlck9iamVjdDo6bm9kZUZvck5v
bkFub255bW91cygpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNW
R0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdD
b250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAg
Y2xhc3MgU1ZHRWxlbWVudDsKIC8vIDxkZWZzPiwgPGxpbmVhckdyYWRpZW50PiwgPHJhZGlhbEdy
YWRpZW50PiBhcmUgYWxsIGdvb2QgZXhhbXBsZXMKIGNsYXNzIFJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lciA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
SW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVl
ZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQCBjbGFzcyBTVkdJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0ltYWdl
IGZpbmFsIDogcHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdJbWFnZSgpOwogCiAgICAgU1ZHSW1hZ2VFbGVtZW50JiBp
bWFnZUVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdJ
bmxpbmU6OlJlbmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNW
R0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgc2V0
QWx3YXlzQ3JlYXRlTGluZUJveGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJbmxp
bmUgOiBwdWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxpbmUo
U1ZHR3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9k
ZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hhc1NW
R1NoYWRvdyhmYWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgU1ZHRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdNb2RlbE9iamVj
dChTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUGF0aC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdQYXRoOjpSZW5kZXJTVkdQ
YXRoKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR1BhdGg6OlJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHU2hhcGUo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdQYXRo
IGZpbmFsIDogcHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdQ
YXRoKFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyU1ZHUGF0aCgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1JlY3Q6OlJlbmRlclNW
R1JlY3QoU1ZHUmVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdXNlUGF0
aEZhbGxiYWNrKGZhbHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZWN0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVjdCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVjdChTVkdSZWN0
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jl
Y3QoU1ZHUmVjdEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJT
VkdSZWN0KCk7CiAKICAgICBTVkdSZWN0RWxlbWVudCYgcmVjdEVsZW1lbnQoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDbGkKIAogY2xhc3MgUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBh
dGhFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcigpOwogCiAgICAgU1ZHQ2xpcFBhdGhF
bGVtZW50JiBjbGlwUGF0aEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdDbGlw
UGF0aEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQCBzdGF0aWMgaW5saW5lIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYgc3ZnCiAgICAg
cmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CiB9CiAKLVJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0Vs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2lkKGVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKSkKICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5k
ZXJMYXllciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIo
U1ZHRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGVu
dW0gSW52YWxpZGF0aW9uTW9kZSB7CiAgICAgICAgIExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlk
YXRpb24sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcigpOwogCiAgICAgU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR0ZpbHRlckVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyOjplbGVtZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyYgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmltaXRpdmVF
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0CiAK
IGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIGZpbmFsIDogcHVibGljIFJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQ
cmltaXRpdmVFbGVtZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50JiBub2Rl
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5v
ZGUsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
cihub2RlLCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdEdyYWRpZW50QXR0
cmlidXRlcyh0cnVlKQogI2lmIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JikgZmlu
YWwgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoKTsKIAogICAgIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVu
dEVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdN
YXJrZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01h
cmtlckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFy
a2VyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291
cmNlTWFya2VyKCk7CiAKICAgICBTVkdNYXJrZXJFbGVtZW50JiBtYXJrZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTWFya2VyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXI6OmVsZW1lbnQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcihTVkdNYXNrRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlTWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cihTVkdNYXNrRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHN0cnVjdCBNYXNrZXJEYXRhIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVi
bGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZH
TWFza0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlcigpOwogCiAgICAgU1ZHTWFza0VsZW1lbnQmIG1hc2tFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8U1ZHTWFza0VsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyOjplbGVtZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0
dGVybihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0cmlidXRlcyh0cnVlKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuIGZpbmFs
IDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICBTVkdQYXR0ZXJuRWxlbWVudCYgcGF0dGVybkVs
ZW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29s
IG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDsKIAogY2xhc3MgUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudCgpOwogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiByYWRp
YWxHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgp
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQoZmFsc2UpCiAgICAgLCBtX2lzTGF5
b3V0U2l6ZUNoYW5nZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHUm9vdCBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUm9vdChTVkdT
VkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZH
Um9vdChTVkdTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
U1ZHUm9vdCgpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCYgc3ZnU1ZHRWxlbWVudCgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgUmVuZGVyU1ZHU2hhcGUmIG1fcmVuZGVyZXI7CiB9OwogCi1SZW5kZXJTVkdT
aGFwZTo6UmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1No
YXBlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUoZmFsc2UpIC8vIERlZmF1bHQgaXMgZmFsc2UsIHRoZSBj
YWNoZWQgcmVjdHMgYXJlIGVtcHR5IGZyb20gdGhlIGJlZ2lubmluZy4KICAgICAsIG1fbmVlZHNT
aGFwZVVwZGF0ZSh0cnVlKSAvLyBEZWZhdWx0IGlzIHRydWUsIHNvIHdlIGdyYWIgYSBQYXRoIG9i
amVjdCBvbmNlIGZyb20gU1ZHR3JhcGhpY3NFbGVtZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIAogY2xhc3Mg
UmVuZGVyU1ZHU2hhcGUgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1NoYXBlKCk7CiAKICAgICBTVkdH
cmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFNWR0dyYXBoaWNzRWxlbWVudD4oUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmVsZW1lbnQoKSk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVFNwYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVuZGVyU1ZHVFNwYW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5s
aW5lIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJTVkdUU3BhbihTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFuKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyU1ZHSW5saW5l
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZH
VGV4dChTVkdUZXh0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR0Jsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1Jl
b3JkZXJpbmcoZmFsc2UpCiAgICAgLCBtX25lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoZmFs
c2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVy
U1ZHSW5saW5lVGV4dDsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4
dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdUZXh0KCk7
CiAKICAgICBTVkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHRQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aChTVkdU
ZXh0UGF0aEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHSW5saW5l
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyU1ZHVGV4dFBhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFNWR1RleHRQYXRoRWxlbWVudCYgdGV4dFBh
dGhFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNz
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogICAgICwgbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RV
cGRhdGUoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50OwogY2xhc3MgUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIg
ewogcHVibGljOgotICAgIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhp
Y3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRv
d25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkp
OyB9CiAKICAgICBib29sIGlzU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkKICAgICAsIG1faXNMYXlv
dXRTaXplQ2hhbmdlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyB0aHVzIHdlIGluaGVyaXQgZnJvbSBSZW5kZXJTVkdDb250YWluZXIgaW5zdGVh
ZCBvZiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyCiBjbGFzcyBSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGlj
OgotICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihT
VkdTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdT
VkdFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJU
cmVlVXBkYXRlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVVcGRhdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBA
IHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW4KICAgICBpZiAoc2hvdWxk
Q3JlYXRlTmV3UmVuZGVyZXIpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVS
ZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgICAgICBlbGVtZW50LndpbGxBdHRhY2hSZW5kZXJl
cnMoKTsKLSAgICAgICAgY3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgV1RGTW92ZSh1cGRhdGUuc3R5
bGUpKTsKKyAgICAgICAgY3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgV1RGTW92ZSgqdXBkYXRlLnN0
eWxlKSk7CiAgICAgICAgIGludmFsaWRhdGVXaGl0ZXNwYWNlT25seVRleHRTaWJsaW5nc0FmdGVy
QXR0YWNoSWZOZWVkZWQoZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjEs
MTkgKzI2MSwxOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAg
ICAgYXV0byYgcmVuZGVyZXIgPSAqZWxlbWVudC5yZW5kZXJlcigpOwogCiAgICAgaWYgKHVwZGF0
ZS5pc1N5bnRoZXRpYykgewotICAgICAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKHVwZGF0
ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZVJlY29tcG9zaXRlTGF5ZXIpOworICAgICAgICByZW5k
ZXJlci5zZXRTdHlsZShXVEZNb3ZlKCp1cGRhdGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VSZWNv
bXBvc2l0ZUxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1cGRhdGUu
Y2hhbmdlID09IFN0eWxlOjpOb0NoYW5nZSkgewogICAgICAgICBpZiAocHNldWRvU3R5bGVDYWNo
ZUlzSW52YWxpZCgmcmVuZGVyZXIsIHVwZGF0ZS5zdHlsZS5nZXQoKSkgfHwgKHBhcmVudCgpLnN0
eWxlQ2hhbmdlID09IFN0eWxlOjpGb3JjZSAmJiByZW5kZXJlci5yZXF1aXJlc0ZvcmNlZFN0eWxl
UmVjYWxjUHJvcGFnYXRpb24oKSkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKFdU
Rk1vdmUodXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOworICAgICAgICAgICAg
cmVuZGVyZXIuc2V0U3R5bGUoV1RGTW92ZSgqdXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNl
RXF1YWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKHVwZGF0ZS5zdHlsZSksIFN0
eWxlRGlmZmVyZW5jZUVxdWFsKTsKKyAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3ZlKCp1cGRh
dGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCkBAIC0yODksMTcgKzI4OSwxNyBAQCBzdGF0aWMgUmVuZGVyTmFtZWRGbG93VGhyZWFk
KiBtb3ZlVG9GbG93CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRl
UmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5k
ZXJlcihlbGVtZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogcGFyZW50Rmxvd1JlbmRlcmVyID0g
bnVsbHB0cjsKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgcGFyZW50Rmxvd1JlbmRlcmVy
ID0gbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKGVsZW1lbnQsICpzdHlsZSk7CisgICAgcGFyZW50
Rmxvd1JlbmRlcmVyID0gbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKGVsZW1lbnQsIHN0eWxlKTsK
ICNlbmRpZgogCi0gICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNOZWVkZWQoKnN0eWxlKSkKKyAg
ICBpZiAoIWVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHJlbmRlclRyZWVQb3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50KTsK
QEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJl
cihFCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlOwogICAg
IG5ld1JlbmRlcmVyLT5hbmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCpuZXdSZW5kZXJlciwg
aW5pdGlhbFN0eWxlLCBhbmltYXRlZFN0eWxlKTsKICAgICBpZiAoYW5pbWF0ZWRTdHlsZSkKLSAg
ICAgICAgbmV3UmVuZGVyZXItPnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZShhbmltYXRlZFN0eWxl
KSk7CisgICAgICAgIG5ld1JlbmRlcmVyLT5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoKmFuaW1h
dGVkU3R5bGUpKTsKIAogICAgIG5ld1JlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKIApAQCAt
NDgyLDcgKzQ4Miw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZU9yQWYK
IAogICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIGVsZW1lbnRVcGRhdGU7CiAKLSAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1cnJlbnQucmVuZGVyZXIoKS0+Z2V0Q2FjaGVk
UHNldWRvU3R5bGUocHNldWRvSWQsICZjdXJyZW50LnJlbmRlcmVyKCktPnN0eWxlKCkpKTsKKyAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpjdXJyZW50LnJlbmRlcmVy
KCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkLCAmY3VycmVudC5yZW5kZXJlcigpLT5z
dHlsZSgpKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGU7CiAgICAgaWYgKHJlbmRlcmVyICYmIG1fZG9jdW1lbnQuZnJhbWUoKS0+YW5pbWF0aW9uKCku
dXBkYXRlQW5pbWF0aW9ucygqcmVuZGVyZXIsICpuZXdTdHlsZSwgYW5pbWF0ZWRTdHlsZSkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJlbmRl
clRyZWUoQ29udGFpbmVyTm9kZSYgcm9vdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0UmVuZGVyZXIo
VGV4dCYpOwogICAgIHZvaWQgdXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmLCBTdHlsZTo6
RWxlbWVudFVwZGF0ZSYpOwotICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZvaWQgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5VGV4
dFNpYmxpbmdzQWZ0ZXJBdHRhY2hJZk5lZWRlZChOb2RlJik7CiAgICAgdm9pZCB1cGRhdGVCZWZv
cmVPckFmdGVyUHNldWRvRWxlbWVudChFbGVtZW50JiwgUHNldWRvSWQpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBuYW1lc3BhY2UgU3R5bGUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZW5kZXJTdHls
ZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChkb2N1bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpOwogCkBAIC01NSwxOSArNTUsMTkg
QEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogCiAgICAgYXV0byBk
b2N1bWVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgZG9jdW1lbnRTdHls
ZS0+c2V0RGlzcGxheShCTE9DSyk7Ci0gICAgZG9jdW1lbnRTdHlsZS0+c2V0UlRMT3JkZXJpbmco
ZG9jdW1lbnQudmlzdWFsbHlPcmRlcmVkKCkgPyBWaXN1YWxPcmRlciA6IExvZ2ljYWxPcmRlcik7
Ci0gICAgZG9jdW1lbnRTdHlsZS0+c2V0Wm9vbSghZG9jdW1lbnQucHJpbnRpbmcoKSA/IHJlbmRl
clZpZXcuZnJhbWUoKS5wYWdlWm9vbUZhY3RvcigpIDogMSk7Ci0gICAgZG9jdW1lbnRTdHlsZS0+
c2V0UGFnZVNjYWxlVHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9y
KCkpOwotICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZG9jdW1lbnRGb250RGVzY3JpcHRpb24g
PSBkb2N1bWVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBkb2N1bWVudFN0eWxlLnNl
dERpc3BsYXkoQkxPQ0spOworICAgIGRvY3VtZW50U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1l
bnQudmlzdWFsbHlPcmRlcmVkKCkgPyBWaXN1YWxPcmRlciA6IExvZ2ljYWxPcmRlcik7CisgICAg
ZG9jdW1lbnRTdHlsZS5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygpID8gcmVuZGVyVmlldy5m
cmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFBhZ2VT
Y2FsZVRyYW5zZm9ybShyZW5kZXJWaWV3LmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAg
ICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRvY3VtZW50Rm9udERlc2NyaXB0aW9uID0gZG9jdW1l
bnRTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBkb2N1bWVudEZvbnREZXNjcmlwdGlvbi5z
ZXRMb2NhbGUoZG9jdW1lbnQuY29udGVudExhbmd1YWdlKCkpOwotICAgIGRvY3VtZW50U3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGRvY3VtZW50Rm9udERlc2NyaXB0aW9uKSk7Cisg
ICAgZG9jdW1lbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkb2N1bWVudEZvbnRE
ZXNjcmlwdGlvbikpOwogCiAgICAgLy8gVGhpcyBvdmVycmlkZXMgYW55IC13ZWJraXQtdXNlci1t
b2RpZnkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBpZnJhbWUuCi0gICAgZG9jdW1lbnRTdHls
ZS0+c2V0VXNlck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSA/IFJFQURfV1JJVEUgOiBS
RUFEX09OTFkpOworICAgIGRvY3VtZW50U3R5bGUuc2V0VXNlck1vZGlmeShkb2N1bWVudC5pbkRl
c2lnbk1vZGUoKSA/IFJFQURfV1JJVEUgOiBSRUFEX09OTFkpOwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBpZiAoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkpCi0gICAgICAgIGRvY3VtZW50U3R5bGUt
PnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudChOb1RleHRTaXplQWRqdXN0bWVu
dCkpOworICAgICAgICBkb2N1bWVudFN0eWxlLnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRq
dXN0bWVudChOb1RleHRTaXplQWRqdXN0bWVudCkpOwogI2VuZGlmCiAKICAgICBFbGVtZW50KiBk
b2NFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CkBAIC03OSwyNCArNzksMjQg
QEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogICAgICAgICBhdXRv
KiBib2R5ID0gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKTsKICAgICAgICAgUmVuZGVyT2JqZWN0
KiBib2R5UmVuZGVyZXIgPSBib2R5ID8gYm9keS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAg
ICAgIGlmIChib2R5UmVuZGVyZXIgJiYgIWRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNl
dFdyaXRpbmdNb2RlKGJvZHlSZW5kZXJlci0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50U3R5bGUuc2V0V3JpdGluZ01vZGUoYm9keVJlbmRlcmVyLT5zdHlsZSgp
LndyaXRpbmdNb2RlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudFN0eWxl
LT5zZXRXcml0aW5nTW9kZShkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkud3JpdGluZ01vZGUo
KSk7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldFdyaXRpbmdNb2RlKGRvY0VsZW1lbnRS
ZW5kZXJlci0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICAgICAgaWYgKGJvZHlSZW5kZXJl
ciAmJiAhZG9jRWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rp
b24oKSkKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldERpcmVjdGlvbihib2R5UmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRE
aXJlY3Rpb24oYm9keVJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0aW9uKGRvY0VsZW1lbnRSZW5k
ZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSk7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNl
dERpcmVjdGlvbihkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkpOwogICAg
IH0KIAogICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24gPSByZW5kZXJWaWV3LmZyYW1l
VmlldygpLnBhZ2luYXRpb24oKTsKICAgICBpZiAocGFnaW5hdGlvbi5tb2RlICE9IFBhZ2luYXRp
b246OlVucGFnaW5hdGVkKSB7Ci0gICAgICAgIGRvY3VtZW50U3R5bGUtPnNldENvbHVtblN0eWxl
c0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOwotICAgICAgICBkb2N1bWVudFN0
eWxlLT5zZXRDb2x1bW5HYXAocGFnaW5hdGlvbi5nYXApOworICAgICAgICBkb2N1bWVudFN0eWxl
LnNldENvbHVtblN0eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOworICAg
ICAgICBkb2N1bWVudFN0eWxlLnNldENvbHVtbkdhcChwYWdpbmF0aW9uLmdhcCk7CiAgICAgICAg
IGlmIChyZW5kZXJWaWV3Lm11bHRpQ29sdW1uRmxvd1RocmVhZCgpKQotICAgICAgICAgICAgcmVu
ZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZSgqZG9jdW1lbnRTdHlsZSk7
CisgICAgICAgICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxl
KGRvY3VtZW50U3R5bGUpOwogICAgICAgICBpZiAocmVuZGVyVmlldy5mcmFtZSgpLnBhZ2UoKS0+
cGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxl
LT5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCIpOwotICAgICAg
ICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0TGluZVNuYXAoTGluZVNuYXBDb250YWluKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0
aW9uLWdyaWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNu
YXBDb250YWluKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTExLDE3ICsxMTEsMTcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRAogICAgIGludCBzaXplID0gZm9u
dFNpemVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgZG9jdW1lbnQpOwogICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwogICAgIGJvb2wgdXNlU1ZHWm9v
bVJ1bGVzID0gZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpOwotICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRDb21wdXRlZFNpemUoY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZv
bnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsIGRvY3VtZW50
U3R5bGUuZ2V0KCksIGRvY3VtZW50KSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0
aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3VtZW50U3R5bGUsIGRv
Y3VtZW50KSk7CiAKICAgICBGb250T3JpZW50YXRpb24gZm9udE9yaWVudGF0aW9uOwogICAgIE5v
bkNKS0dseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvbjsKLSAgICBzdGQ6OnRpZShmb250
T3JpZW50YXRpb24sIGdseXBoT3JpZW50YXRpb24pID0gZG9jdW1lbnRTdHlsZS0+Zm9udEFuZEds
eXBoT3JpZW50YXRpb24oKTsKKyAgICBzdGQ6OnRpZShmb250T3JpZW50YXRpb24sIGdseXBoT3Jp
ZW50YXRpb24pID0gZG9jdW1lbnRTdHlsZS5mb250QW5kR2x5cGhPcmllbnRhdGlvbigpOwogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRPcmllbnRhdGlvbihmb250T3JpZW50YXRpb24pOwogICAgIGZv
bnREZXNjcmlwdGlvbi5zZXROb25DSktHbHlwaE9yaWVudGF0aW9uKGdseXBoT3JpZW50YXRpb24p
OwogCi0gICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bik7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKIAotICAgIGRvY3VtZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZjb25zdF9jYXN0
PERvY3VtZW50Jj4oZG9jdW1lbnQpLmZvbnRTZWxlY3RvcigpKTsKKyAgICBkb2N1bWVudFN0eWxl
LmZvbnRDYXNjYWRlKCkudXBkYXRlKCZjb25zdF9jYXN0PERvY3VtZW50Jj4oZG9jdW1lbnQpLmZv
bnRTZWxlY3RvcigpKTsKIAogICAgIHJldHVybiBkb2N1bWVudFN0eWxlOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclN0eWxlOwog
CiBuYW1lc3BhY2UgU3R5bGUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc29s
dmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYpOworUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRv
Y3VtZW50KGNvbnN0IERvY3VtZW50Jik7CiAKIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU2hhcmlu
Z1Jlc28KIAogICAgIG1fZWxlbWVudHNTaGFyaW5nU3R5bGUuYWRkKCZlbGVtZW50LCBzaGFyZUVs
ZW1lbnQpOwogCi0gICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSh1cGRhdGUuZWxlbWVudFN0
eWxlKCpzaGFyZUVsZW1lbnQpKTsKKyAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1
cGRhdGUuZWxlbWVudFN0eWxlKCpzaGFyZUVsZW1lbnQpKTsKIH0KIAogU3R5bGVkRWxlbWVudCog
U2hhcmluZ1Jlc29sdmVyOjpmaW5kU2libGluZyhjb25zdCBDb250ZXh0JiBjb250ZXh0LCBOb2Rl
KiBub2RlLCB1bnNpZ25lZCYgY291bnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgc3RhdGljIHZvaWQgZW5zdXJlUGxhY2Vob2xkZXJTdHlsZShEb2N1bQogewogICAg
IGlmIChwbGFjZWhvbGRlclN0eWxlKQogICAgICAgICByZXR1cm47Ci0gICAgcGxhY2Vob2xkZXJT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKS5yZWxlYXNlKCk7CisgICAgcGxhY2Vob2xkZXJT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKS5yZWxlYXNlKCk7CiAgICAgcGxhY2Vob2xk
ZXJTdHlsZS0+c2V0RGlzcGxheShOT05FKTsKICAgICBwbGFjZWhvbGRlclN0eWxlLT5zZXRJc1Bs
YWNlaG9sZGVyU3R5bGUoKTsKICAgICBwbGFjZWhvbGRlclN0eWxlLT5mb250Q2FzY2FkZSgpLnVw
ZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmUKIHsKICAgICBpZiAoIW1fZG9jdW1l
bnQuaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgIWVsZW1lbnQucmVuZGVyZXIoKSkgewogICAg
ICAgICBtX2RvY3VtZW50LnNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKTsKLSAgICAg
ICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZShwbGFjZWhvbGRlclN0eWxlKTsKKyAgICAgICAg
cmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigqcGxhY2Vob2xkZXJTdHlsZSk7CiAgICAgfQog
CiAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpIHsKQEAg
LTIwNSw3ICsyMDUsNyBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1l
CiAgICAgICAgIHVwZGF0ZS5pc1N5bnRoZXRpYyA9IHRydWU7CiAKICAgICBpZiAoJmVsZW1lbnQg
PT0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSkgewotICAgICAgICBtX2RvY3VtZW50RWxl
bWVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHVwZGF0ZS5zdHlsZS5nZXQoKSk7CisgICAg
ICAgIG1fZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0
ZS5zdHlsZSk7CiAgICAgICAgIHNjb3BlKCkuc3R5bGVSZXNvbHZlci5zZXRPdmVycmlkZURvY3Vt
ZW50RWxlbWVudFN0eWxlKG1fZG9jdW1lbnRFbGVtZW50U3R5bGUuZ2V0KCkpOwogCiAgICAgICAg
IC8vIElmICJyZW0iIHVuaXRzIGFyZSB1c2VkIGFueXdoZXJlIGluIHRoZSBkb2N1bWVudCwgYW5k
IGlmIHRoZSBkb2N1bWVudCBlbGVtZW50J3MgZm9udCBzaXplIGNoYW5nZXMsIHRoZW4gZm9yY2Ug
Zm9udCB1cGRhdGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjbwogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9k
ZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgp
KS5pc1RleHRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBib29sIFNWR0Fs
dEdseXBoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdU
U3Bhbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQWx0R2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgfQogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJj
bGVFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQoKSBj
b25zdAogICAgIHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdEZWZzRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
X09WRVJSSURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNWR0VsbGlwc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Vs
bGlwc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CiAKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3
IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGMKICAgICAgICAgb2Jq
ZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
RmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzSGVpZ2h0KHRy
dWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAg
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgLy8g
U1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlz
cGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY3Jl
YXRlIHJlbmRlcmVycyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwgdGhv
dWdoIHRoZQogICAgIC8vIHN1YnRyZWUgbWF5IGJlIGhpZGRlbiAtIHdlIG9ubHkgd2FudCB0aGUg
cmVzb3VyY2UgcmVuZGVyZXJzIHRvIGV4aXN0IHNvIHRoZXkgY2FuIGJlCiAgICAgLy8gcmVmZXJl
bmNlZCBmcm9tIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IE5P
TkUpCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgRmxvYXRSZWN0IFNWR0dyYXBo
aWNzRWxlbWVudDo6Z2V0QkJveChTdAogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRC
Qm94KHRoaXMsIHN0eWxlVXBkYXRlU3RyYXRlZ3kpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHR3JhcGhpY3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRo
LWJhc2VkIGRyYXdpbmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyAiYmFzZSBjbGFzcyIgbWV0aG9kcyBmb3IgYWxsIHRoZSBlbGVtZW50cyB3aGlj
aCByZW5kZXIgYXMgcGF0aHMKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7Ci0g
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbWFnZT4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBA
IHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5n
bGUoCiAgICAgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudEFuZ2xlLCBhbmdsZSk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb24KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01h
c2tFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIEZsb2F0
UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0QkJveChTdHlsZVUKICAgICByZXR1cm4gcmVuZGVyZXIt
PnBhdGgoKS5ib3VuZGluZ1JlY3QoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgLy8gQnkgZGVm
YXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2luZwog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOX09WRVJSSURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0g
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAg
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVy
bkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50PigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFNWR1Jl
Y3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1JlY3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWCwgeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb24KICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdT
VkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSb290
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHU3Rv
cEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N0
b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR0dyYWRpZW50U3RvcD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0dyYWRpZW50U3RvcCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
d2l0Y2hFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTd2l0Y2hFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29s
IFNWR1N3aXRjaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQogICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU5fT1ZFUlJJREUoRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9s
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
eW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBib29sIFNW
R1N5bWJvbEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0
ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVy
cmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZAogICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFJl
ZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1RSZWZFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgUmVmPFNWR1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50Ojpj
cgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdU
U3BhbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdUU3Bhbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1RTcGFuRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKICAgICAgICAgICAgIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkCiAgICAgcmV0dXJuIG1h
dHJpeDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1RleHQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTVkdUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNv
bnN0IG92ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9p
ZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR1RleHRQYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAg
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYzLDcgKzI2Myw3IEBAIFNWR0VsZW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnRhcmdl
dENsb25lKCkKICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocm9vdC0+Zmlyc3RDaGls
ZCgpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHdpbGxS
ZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b0NsaXBQYXRoKFBhdGgm
KSBvdmVycmlkZTsKICAgICBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpIG92ZXJy
aWRlOwogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277264</attachid>
            <date>2016-04-25 11:45:30 -0700</date>
            <delta_ts>2016-04-25 11:45:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>inline-renderstyle-10.patch</filename>
            <type>text/plain</type>
            <size>401039</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyOCBAQAorMjAxNi0wNC0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIFJlbmRlclN0eWxl
IGludG8gUmVuZGVyRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2OTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
KworICAgICAgICBXZSBjYW4gc2F2ZSBtZW1vcnkgYW5kIHJlZHVjZSBpbmRpcmVjdGlvbiBvZiBz
dHlsZSBhY2Nlc3MgYnkgaW5saW5pbmcgUmVuZGVyU3R5bGUgdG8gUmVuZGVyRWxlbWVudC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFrZXMgUmVuZGVyU3R5bGUgbW92ZWFibGUgYW5kIHN3
aXRjaGVzIGZyb20gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiB0byBSZW5kZXJTdHlsZSYm
CisgICAgICAgIGluIG1hbnkgcGxhY2VzIHdoZXJlIG93bmVyc2hpcCBpcyBwYXNzZWQuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblJlcGxhY2VtZW50OjpzY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luUmVwbGFjZW1lbnQ6OndpbGxDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ollv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5
bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5VG9TdHlsZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlcik6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKToKKyAg
ICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUJ1dHRvbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQlJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQlJFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OkhUTUxEZXRhaWxzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpmb3JtKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50OjphbHRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFRydW5jYXRlVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFD
b250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5F
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzTmV0c2Nh
cGVQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Y2FuU2VsZWN0
QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3Vt
bWFyeUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFdC
UkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFdCUkVsZW1lbnQ6OkhUTUxXQlJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxXQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFdCUkVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5
cGU6OnN1cHBvcnRzVmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBl
Lmg6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9JbWFnZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Zm9ybUZvclN1Ym1pc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRodW1iRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1J1
YnlFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UnVieVRleHRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UnVieVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
UnVieVRleHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjptYXhSZXN1bHRzQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGb250KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6RGV0YWlsc01hcmtl
ckNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6
OnNldFRpbWVEaXNwbGF5c0hpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzSW5uZXJF
bGVtZW50OjpQcm9ncmVzc0lubmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVz
c0lubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyVGh1bWI6
OlJlbmRlclNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVu
dDo6c2V0UG9zaXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJD
b250YWluZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyQ29u
dGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
bnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRy
b2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9s
czo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVEN1ZS5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50Lmg6CisgICAgICAgICogbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxN
ZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNZW5jbG9z
ZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRl
eHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1hdGVkU3R5bGVGb3JS
ZW5kZXJlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlv
bnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6Z2V0QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6b25BbmltYXRpb25FbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1wbGljaXRBbmltYXRpb246OnJlc2V0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmlt
YXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246Omdl
dEFuaW1hdGVkU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnQ6OlJlbmRlckF0dGFjaG1lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpS
ZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNsb25lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93OjpSZW5kZXJCbG9ja0Zsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojp1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2tpcEJvZHlCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6UmVuZGVyQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmpl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QnV0dG9uOjpSZW5kZXJCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQ29tYmluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Zmlyc3RMaW5lU3R5bGVGb3JDYWNoZWRVbmNhY2hlZFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzSW5pdGlhbGl6
ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZUludGVybmFsKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6On5SZW5kZXJFbWJlZGRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OlJl
bmRlckZpZWxkc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9s
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhbWU6OlJlbmRlckZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJh
c2U6OmNoaWxkVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlblBs
YWNlaG9sZGVyOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVs
bFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxs
U2NyZWVuOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRGcmVlU3BhY2VGb3JEaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6UmVuZGVyR3JpZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpS
ZW5kZXJJRnJhbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6UmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0eWxlT2ZBbm9u
eW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZENo
aWxkSWdub3JpbmdDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpjbG9uZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6aXNTY3JvbGxhYmxlT3JSdWJi
ZXJiYW5kYWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6UmVuZGVy
TGlzdEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXN0TWFy
a2VyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0
TWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZWRpYTo6UmVuZGVyTWVkaWEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGVkT3B0aW9uQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjpzZXRUZXh0RnJvbU9wdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQ6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1v
dXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojp+UmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNyZWF0
ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21w
dXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50OjpzZXRPYmplY3RTdHlsZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25P
YmplY3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVw
ZGF0ZVdyaXRpbmdNb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclByb2dyZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVnaW9uOjphYnNvbHV0ZVF1YWRzRm9yQm94SW5SZWdpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
ZWdpb25TZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBs
aWNhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFub255bW91
c1J1YnlJbmxpbmVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNJbmxpbmU6
OlJlbmRlclJ1YnlBc0lubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNCbG9j
azo6UmVuZGVyUnVieUFzQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5UnVuKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0
OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHRvblZp
c2liaWxpdHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlk
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJs
ZUNhcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpSZW5k
ZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxvZ2ljYWxIZWlnaHRGb3JD
ZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVT
ZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRU
Q3VlOjpSZW5kZXJWVFRDdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bW92ZVdpZGdldFRvUGFyZW50U29vbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJXaWRnZXQ6OlJlbmRlcldpZGdldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MQmxvY2s6OmNyZWF0ZUFub255bW91c01hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRmVuY2VkOjpjcmVhdGVNYXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRo
OjpSZW5kZXJNYXRoTUxNYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1hdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJN
YXRoTUxNZW5jbG9zZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1h
dGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cjo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb290OjpSZW5kZXJNYXRoTUxSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OnJlc3RydWN0dXJlV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MUm9vdDo6dXBkYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI6OmNyZWF0ZUFub255bW91c1dyYXBwZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVu
ZGVyTWF0aE1MUm93KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ByZXNjcmlwdERlbGltaXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxUb2tlbjo6ZWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkZWZh
dWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVN0
eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6
Z3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNW
R0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6aXNPYmplY3RCb3VuZGlu
Z0JveFZhbGlkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJ
bmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmdyYXBoaWNzRWxlbWVudCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjplbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6
UmVuZGVyU1ZHUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1JlY3Q6OlJlbmRlclNWR1JlY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ZnRXh0
ZW5zaW9uc0Zyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VMaW5lYXJHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXI6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jvb3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OlJlbmRlclNWR1NoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6Z3JhcGhpY3NFbGVt
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAg
ICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpt
b3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRh
dGVyOjp1cGRhdGVCZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudCk6CisgICAgICAgICogc3R5bGUv
UmVuZGVyVHJlZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oOgorICAgICAgICAqIHN0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
aGFyaW5nUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJp
bmdSZXNvbHZlcjo6ZmluZFNpYmxpbmcpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbnN1cmVQbGFjZWhvbGRlclN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGlj
c0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0Fu
Z2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OmdldEJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVs
ZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
U3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RT
cGFuRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RTcGFuRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9T
VkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
dGFyZ2V0Q2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorCiAyMDE2LTA0
LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIxNTY4NDYpOiBDcmFzaGVzIHdpdGggZ3VhcmQgbWFsbG9jCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
CiAgICAgdmlydHVhbCBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpID0gMDsKIH07CiAKIHR5cGVkZWYg
UmVmPFBsdWdpblJlcGxhY2VtZW50PiAoKkNyZWF0ZVBsdWdpblJlcGxhY2VtZW50KShIVE1MUGx1
Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgZmluYWwgeyByZXR1cm4g
bV9zY3JpcHRPYmplY3Q7IH0KIAogICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwg
eyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwog
CiAgICAgYm9vbCBlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCk7CiAgICAgRE9NV3Jh
cHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAs
NyBAQCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGltZVBsCiAgICAgbV9tZWRp
YUVsZW1lbnQgPSBudWxscHRyOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYgcGx1Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
SFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09ICZwbHVnaW4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpZb3VUdWJlUGx1Z2luUgogICAg
ICAgICBtX2F0dHJpYnV0ZXMuYWRkKHBhcmFtTmFtZXNbaV0sIHBhcmFtVmFsdWVzW2ldKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0
aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Q
b3NpdGlvbikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09
ICZwbHVnaW4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
eW91VHViZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7CiAKICAgICBib29sIHdpbGxDcmVhdGVS
ZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX3BhcmVudEVs
ZW1lbnQ7CiAgICAgUmVmUHRyPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IG1fZW1iZWRTaGFk
b3dFbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsMTEgKzM4OCwxMSBAQCBFbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JFbGVtCiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAogICAgIGlmIChz
dGF0ZS5wYXJlbnRTdHlsZSgpKSB7Ci0gICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxl
OjpjcmVhdGUoKSk7CisgICAgICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQ
dHIoKSk7CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXRGcm9tKHN0YXRlLnBhcmVudFN0
eWxlKCksIGlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSA/IFJlbmRlclN0eWxlOjpBdFNoYWRv
d0JvdW5kYXJ5IDogUmVuZGVyU3R5bGU6Ok5vdEF0U2hhZG93Qm91bmRhcnkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN0YXRlLnNldFN0eWxlKGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKSk7Ci0g
ICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShzdGF0ZS5zdHls
ZSgpKSk7CisgICAgICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0
cigqc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIAogICAgIGF1dG8mIHN0eWxlID0gKnN0YXRlLnN0
eWxlKCk7CkBAIC00NTMsOCArNDUzLDggQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdgogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICAvLyBDcmVhdGUg
dGhlIHN0eWxlCi0gICAgc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKGVsZW1lbnRT
dHlsZSkpOwotICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShlbGVt
ZW50U3R5bGUpKTsKKyAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVs
ZW1lbnRTdHlsZSkpOworICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZWxlbWVudFN0eWxlKSk7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAg
ICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZTsKQEAgLTU2NSwxMSArNTY1LDExIEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHYKICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOwogCiAgICAgaWYgKG1fc3RhdGUucGFyZW50U3R5bGUoKSkgewotICAgICAgICBzdGF0ZS5z
ZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpOworICAgICAgICBzdGF0ZS5zZXRTdHlsZShS
ZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkpOwogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0
RnJvbShtX3N0YXRlLnBhcmVudFN0eWxlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRl
LnNldFN0eWxlKGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKSk7Ci0gICAgICAgIHN0YXRlLnNldFBh
cmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShzdGF0ZS5zdHlsZSgpKSk7CisgICAgICAgIHN0
YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqc3RhdGUuc3R5bGUoKSkp
OwogICAgIH0KIAogICAgIC8vIFNpbmNlIHdlIGRvbid0IHVzZSBwc2V1ZG8tZWxlbWVudHMgaW4g
YW55IG9mIG91ciBxdWlyay9wcmludCB1c2VyIGFnZW50IHJ1bGVzLCBkb24ndCB3YXN0ZSB0aW1l
IHdhbGtpbmcKQEAgLTYxNCwxMSArNjE0LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gU3R5bGVSZXNvbHYKIAogICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6
Y3JlYXRlUHRyKCk7CiAKICAgICBtX3N0YXRlID0gU3RhdGUoKmRvY3VtZW50RWxlbWVudCwgbV9k
b2N1bWVudC5yZW5kZXJTdHlsZSgpKTsKIAotICAgIG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpKTsKKyAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVQ
dHIoKSk7CiAgICAgbV9zdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbShtX3N0YXRlLnJvb3RFbGVt
ZW50U3R5bGUoKSk7CiAKICAgICBQYWdlUnVsZUNvbGxlY3RvciBjb2xsZWN0b3IobV9zdGF0ZSwg
bV9ydWxlU2V0cyk7CkBAIC02NTQsNyArNjU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdgogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKQogewotICAgIG1fc3RhdGUuc2V0U3R5bGUo
UmVuZGVyU3R5bGU6OmNyZWF0ZSgpKTsKKyAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxl
OjpjcmVhdGVQdHIoKSk7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBmb250cyBhcmUgaW5pdGlhbGl6
ZWQgaWYgd2UgZG9uJ3QgaW5oZXJpdCB0aGVtIGZyb20gb3VyIHBhcmVudCBzdHlsZS4KICAgICBp
bml0aWFsaXplRm9udFN0eWxlKGRvY3VtZW50U2V0dGluZ3MoKSk7CiAgICAgaWYgKGRvY3VtZW50
U2V0dGluZ3MoKSkKQEAgLTEyMTMsOCArMTIxMyw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
VG9NYXRjaGVkUHJvcGVydGkKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFu
Z2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVy
U3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBS
ZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBz
dWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgotICAgIGNhY2hlSXRlbS5yZW5kZXJT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSk7Ci0gICAgY2FjaGVJdGVtLnBhcmVudFJl
bmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFN0eWxlKTsKKyAgICBjYWNoZUl0
ZW0ucmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKTsKKyAgICBjYWNo
ZUl0ZW0ucGFyZW50UmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnBhcmVudFN0
eWxlKTsKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuYWRkKGhhc2gsIFdURk1vdmUoY2Fj
aGVJdGVtKSk7CiB9CiAKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlNYXRjaGVkUHJvcGVydGkKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRv
U3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3RhdGUgPSBTdGF0ZSgpOwotICAgIG1fc3Rh
dGUuc2V0UGFyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlLmdldCgpKSk7CisgICAg
bV9zdGF0ZS5zZXRQYXJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSk7CiAg
ICAgbV9zdGF0ZS5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgYXBwbHlQcm9wZXJ0eVRv
Q3VycmVudFN0eWxlKGlkLCB2YWx1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NzYsMTAgKzE4NzYsMTAgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZQogICAgICAgICAgICAgLy8gZm9udCBzZWxlY3Rvciwgc28gc2V0
IGEgZm9udCBzZWxlY3RvciBpZiBuZWVkZWQuCiAgICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNl
dHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKSkgewogICAgICAgICAgICAgICAgIGlmIChzZXR0aW5n
cy0+Zm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZmb250U2VsZWN0b3IoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmZv
bnRTZWxlY3RvcigpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBkb2N1bWVu
dENoYW5nZSA9IFN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UoKmRvY3VtZW50U3R5bGUsIG1fcmVuZGVy
Vmlldy0+c3R5bGUoKSk7CisgICAgICAgICAgICBhdXRvIGRvY3VtZW50Q2hhbmdlID0gU3R5bGU6
OmRldGVybWluZUNoYW5nZShkb2N1bWVudFN0eWxlLCBtX3JlbmRlclZpZXctPnN0eWxlKCkpOwog
ICAgICAgICAgICAgaWYgKGRvY3VtZW50Q2hhbmdlICE9IFN0eWxlOjpOb0NoYW5nZSkKICAgICAg
ICAgICAgICAgICByZW5kZXJWaWV3KCktPnNldFN0eWxlKFdURk1vdmUoZG9jdW1lbnRTdHlsZSkp
OwogICAgICAgICB9CkBAIC01ODM1LDcgKzU4MzUsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRX
aWxsRW50ZXJGdWxsU2NyZWVuCiAgICAgYm9vbCBzaG91bGRDcmVhdGVQbGFjZWhvbGRlciA9IGlz
PFJlbmRlckJveD4ocmVuZGVyZXIpOwogICAgIGlmIChzaG91bGRDcmVhdGVQbGFjZWhvbGRlcikg
ewogICAgICAgICBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJlY3QgPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcikuZnJhbWVSZWN0KCk7Ci0gICAgICAgIG1fc2F2ZWRQbGFjZWhvbGRlclJl
bmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5kZXJlci0+c3R5bGUoKSk7CisgICAg
ICAgIG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRy
KHJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVu
dCAhPSBkb2N1bWVudEVsZW1lbnQoKSkKQEAgLTU5MTUsNyArNTkxNSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlcihSZW4KICAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBs
YWNlaG9sZGVyKFdURk1vdmUobV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGUpLCBtX3NhdmVk
UGxhY2Vob2xkZXJGcmFtZVJlY3QpOwogICAgIGVsc2UgaWYgKHJlbmRlcmVyICYmIG1fZnVsbFNj
cmVlblJlbmRlcmVyICYmIG1fZnVsbFNjcmVlblJlbmRlcmVyLT5wbGFjZWhvbGRlcigpKSB7CiAg
ICAgICAgIFJlbmRlckJsb2NrKiBwbGFjZWhvbGRlciA9IG1fZnVsbFNjcmVlblJlbmRlcmVyLT5w
bGFjZWhvbGRlcigpOwotICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxhY2Vob2xkZXIoUmVuZGVy
U3R5bGU6OmNsb25lKCZwbGFjZWhvbGRlci0+c3R5bGUoKSksIHBsYWNlaG9sZGVyLT5mcmFtZVJl
Y3QoKSk7CisgICAgICAgIHJlbmRlcmVyLT5jcmVhdGVQbGFjZWhvbGRlcihSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIocGxhY2Vob2xkZXItPnN0eWxlKCkpLCBwbGFjZWhvbGRlci0+ZnJhbWVSZWN0KCkp
OwogICAgIH0KIAogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Myw3ICsxNDkzLDcgQEAgYm9vbCBFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbgogICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkg
IT0gTk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gQ09OVEVOVFM7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChj
b25zdCBFbGVtZW50JikgeyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJik7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290KiBzaGFkb3dSb290
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBQc2V1ZG9F
bGVtZW50OjpyZQogICAgIGF1dG8qIHN0eWxlID0gbV9ob3N0RWxlbWVudC0+cmVuZGVyZXIoKS0+
Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCwgJnBhcmVudFN0eWxlKTsKICAgICBpZiAo
IXN0eWxlKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUoUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCpzdHlsZSkpOwogfQogCiB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRp
ZEF0dGFjaFJlbmRlcmVycygpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50
OjpkaWRSZWNhbGNTdHlsZShTdHlsZQogICAgICAgICAvLyBXZSBvbmx5IG1hbmFnZSB0aGUgc3R5
bGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29udGVudCB3aGljaCBtdXN0IGJlIGltYWdlcyBvciB0ZXh0
LgogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90
ZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUlu
aGVyaXRpbmdGcm9tUHNldWRvU3R5bGUocmVuZGVyZXIuc3R5bGUoKSk7CisgICAgICAgIGF1dG8g
Y3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1
ZG9TdHlsZShyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmNoaWxkKS5zZXRTdHlsZShXVEZNb3ZlKGNyZWF0ZWRTdHlsZSkpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBib29sIEJhc2VCdXR0b25JbnB1dFR5
cGU6OmFwcGVuZEZvcm1EYXRhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPihlbGVtZW50
KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1
dHRvbklucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1
dHRvbklucHV0VHlwZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVG
cm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcm
LCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3
ICsxOTUsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlCiAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRmlsZUlucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJGaWxlVXBsb2FkQ29udHJvbD4oZWxlbWVudCgpLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHZhbHVlTWlzc2lu
Zyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWVNaXNzaW5n
VGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChF
dmVudCopIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNhbkNoYW5nZUZyb21Bbm90aGVyVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEZpbGVMaXN0KiBmaWxlcygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIGJvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4g
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIGlmICghY2FuRW1iZWRKYXZhKCkpCiAgICAgICAgIHJldHVy
biBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIAog
ICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAg
IFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBSZWY8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBIVE1MQXR0YWNobWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckF0dGFjaG1l
bnQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEF0dGFjaG1lbnRFbGVt
ZW50KCk7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNob3VsZFNlbGVjdE9uTW91c2VEb3duKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw5ICs3MCw5IEBAIHZvaWQgSFRNTEJSRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCisgICAgaWYgKHN0eWxlLmhh
c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxp
bmVCcmVhaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJSRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJSRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3Qg
QXQKICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbHdheXMgY3JlYXRlcyBvbmUsIGJ1dCBidXR0
b25zIGRvbid0IG5lZWQgaXQuCiAgICAgYm9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI0LDcgKzEyNCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMK
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1l
LT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Nyw3ICs4Nyw3IEBAIEhUTUxEZXRhaWxzRWxlbWVudDo6SFRNTERldGFpbHNFbGVtZW50
KGMKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkZXRhaWxzVGFnKSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCBib29s
IEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0CiAgICAgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNvbnN0OwogCiAgICAg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxGaWVsZFNldEVsZW1lbnQ6CiAgICAgcmV0dXJuIGZpZWxkc2V0OwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpZWxkc2V0
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRl
OwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoCiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsOSArMTU3LDkgQEAgYm9vbCBIVE1MRnJhbWVTZXRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZAogICAgIHJldHVybiAhc3R5bGUuaXNQbGFjZWhvbGRlclN0
eWxlKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoc3R5bGUtPmhhc0Nv
bnRlbnQoKSkKKyAgICBpZiAoc3R5bGUuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVu
ZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgCiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lU2V0PigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3
IEBAIGJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4g
aXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlzcGxheSgpICE9IE5PTkU7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJRnJhbWU+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVRva2VuTGlzdD4gbV9zYW5kYm94Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDkgKzI1Niw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRN
TEltYWdlRWxlbWVudDo6YWwKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEltYWdl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCisg
ICAgaWYgKHN0eWxlLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6
OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckltYWdlPigqdGhpcywgV1RGTW92ZShzdHlsZSksIG51bGxwdHIsIG1faW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0ZShjb25zdCBJbWFnZUNhbmRpZGF0
ZSYpOwogCiAgICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NjAsNyArNzYwLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmVuZGVyZXJJc05lZWRlZCgpICYm
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Y3JlYXRlSW5wdXRS
ZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0xODc1LDIzICsxODc1LDIzIEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVHJ1bmNhdGVUZXgKICAgICByZXR1cm4gZG9jdW1lbnQo
KS5mb2N1c2VkRWxlbWVudCgpICE9IHRoaXMgJiYgc3R5bGUudGV4dE92ZXJmbG93KCkgPT0gVGV4
dE92ZXJmbG93RWxsaXBzaXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gSFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSBjb25zdAorUmVuZGVyU3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGF1dG8gdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPmlu
aGVyaXRGcm9tKCZzdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsICp0ZXh0
QmxvY2tTdHlsZSk7CisgICAgdGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZyb20oJnN0eWxlKTsKKyAg
ICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUpOwogCi0gICAgdGV4
dEJsb2NrU3R5bGUtPnNldFdoaXRlU3BhY2UoUFJFKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0
T3ZlcmZsb3dXcmFwKE5vcm1hbE92ZXJmbG93V3JhcCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNl
dE92ZXJmbG93WChPSElEREVOKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0T3ZlcmZsb3dZKE9I
SURERU4pOwotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRUZXh0T3ZlcmZsb3coc2hvdWxkVHJ1bmNh
dGVUZXh0KHN0eWxlKSA/IFRleHRPdmVyZmxvd0VsbGlwc2lzIDogVGV4dE92ZXJmbG93Q2xpcCk7
CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOworICAgIHRleHRCbG9ja1N0
eWxlLnNldE92ZXJmbG93V3JhcChOb3JtYWxPdmVyZmxvd1dyYXApOworICAgIHRleHRCbG9ja1N0
eWxlLnNldE92ZXJmbG93WChPSElEREVOKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxv
d1koT0hJRERFTik7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KHNob3VsZFRy
dW5jYXRlVGV4dChzdHlsZSkgPyBUZXh0T3ZlcmZsb3dFbGxpcHNpcyA6IFRleHRPdmVyZmxvd0Ns
aXApOwogCiAgICAgLy8gRG8gbm90IGFsbG93IGxpbmUtaGVpZ2h0IHRvIGJlIHNtYWxsZXIgdGhh
biBvdXIgZGVmYXVsdC4KLSAgICBpZiAodGV4dEJsb2NrU3R5bGUtPmZvbnRNZXRyaWNzKCkubGlu
ZVNwYWNpbmcoKSA+IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKQotICAgICAgICB0ZXh0Qmxv
Y2tTdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7
CisgICAgaWYgKHRleHRCbG9ja1N0eWxlLmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKSA+IHN0
eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRMaW5l
SGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKIAotICAgIHRleHRCbG9j
a1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5
KEJMT0NLKTsKIAogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKICAgICBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgpIGNv
bnN0OwogICAgIAogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZW5kZXJTdHlsZSBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29u
c3Q7CiAgICAgSFRNTEVsZW1lbnQqIGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKQEAg
LTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0aW9uKCkgY29u
c3Q7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5h
bDsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9p
ZCB3aWxsQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKSBmaW5hbDsKICAgICB2b2lkIGRpZERldGFjaFJlbmRlcmVycygpIGZpbmFsOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsMTEgKzIzNywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAK
ICAgICAgICAgYm9vbCBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRydWU7CiAgICAgICAgIGlmICghbV9t
ZWRpYS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gZG9jdW1lbnRTdHlsZTsKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1
bWVudFN0eWxlOwogICAgICAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJl
ZSgpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUgPSBTdHlsZTo6cmVzb2x2ZUZvckRv
Y3VtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1l
ZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21l
ZGlhKTsKLSAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yKGRvY3VtZW50
KCkuZnJhbWUoKS0+dmlldygpLT5tZWRpYVR5cGUoKSwgZG9jdW1lbnQoKS5mcmFtZSgpLCBkb2N1
bWVudFN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVh
dG9yKGRvY3VtZW50KCkuZnJhbWUoKS0+dmlldygpLT5tZWRpYVR5cGUoKSwgZG9jdW1lbnQoKS5m
cmFtZSgpLCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0cik7CiAgICAg
ICAgICAgICBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IGV2YWx1YXRvci5ldmFsKG1lZGlhLmdldCgpKTsK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNiw3ICs3MzYsNyBAQCBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAgICAgcmV0dXJuIGNvbnRyb2xzKCkgJiYgSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpOwogI2VuZGlmCiAKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGJvb2wgbWVkaWFDb250cm9sc0RlcGVuZE9u
UGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xzRGVwZW5kT25Q
YWdlU2NhbGVGYWN0b3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBSZWY8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6CiAgICAgcmV0dXJuIG1ldGVyOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+dGhlbWUoKS5zdXBw
b3J0c01ldGVyKHN0eWxlLT5hcHBlYXJhbmNlKCkpKQorICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5hcHBlYXJhbmNlKCkpKQogICAgICAgICBy
ZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWV0ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc3VwcG9y
dExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3ICsyOTQsNyBAQCBOUE9iamVjdCog
SFRNTFBsdWdJbkVsZW1lbnQ6OmdldE5QT2JqZWN0CiAKICNlbmRpZiAvKiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkgKi8KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQgJiYgbV9wbHVn
aW5SZXBsYWNlbWVudC0+d2lsbENyZWF0ZVJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBtX3Bs
dWdpblJlcGxhY2VtZW50LT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoKnRoaXMsIFdURk1vdmUoc3R5
bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CiAKICAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCB1
c2UgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluc3RlYWQgb2YgY2FsbGluZyBkaXNw
YXRjaEJlZm9yZUxvYWRFdmVudCBkaXJlY3RseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRM
b2FkQXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRp
b25Qb3NpdGlvbikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBBU1NFUlQoIWRvY3Vt
ZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBmaW5h
bDsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIGZpbmFs
OwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOSArNTYsOSBAQCBSZWY8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2dyZXNzRWxl
CiAgICAgcmV0dXJuIHByb2dyZXNzOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAg
aWYgKCFzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQorICAgIGlmICghc3R5bGUuaGFzQXBwZWFyYW5j
ZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUHJvZ3Jlc3M+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBvdmVycmlkZTsKICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MoKSBjb25zdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6Y2FuU2VsZWN0QWxsKCkgYwogICAgIHJldHVybiAhdXNlc01lbnVMaXN0KCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKHVzZXNNZW51TGlz
dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBmaW5hbDsKIAog
ICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3QgZmlu
YWw7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIGJv
b2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgZmluYWw7CiAKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSFRNTFN1
bW1hcnlFbGVtZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1l
KHN1bW1hcnlUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTdW1tYXJ5
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFN1
bW1hcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3Ro
QXR0cmkKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtNTIzLDE3ICs1MjMsMTcgQEAgYm9vbCBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gSFRNTFRleHRB
cmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KSBjb25zdAorUmVuZGVyU3R5bGUgSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGF1dG8gdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPmlu
aGVyaXRGcm9tKCZzdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsICp0ZXh0
QmxvY2tTdHlsZSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAg
IHRleHRCbG9ja1N0eWxlLmluaGVyaXRGcm9tKCZzdHlsZSk7CisgICAgYWRqdXN0SW5uZXJUZXh0
U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0eWxlKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNw
bGF5KEJMT0NLKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBXZSdyZSBhZGRpbmcgdGhy
ZWUgZXh0cmEgcGl4ZWxzIG9mIHBhZGRpbmcgdG8gbGluZSB0ZXh0YXJlYXMgdXAgd2l0aCB0ZXh0
IGZpZWxkcy4gIAotICAgIHRleHRCbG9ja1N0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgoMywg
Rml4ZWQpKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCgzLCBG
aXhlZCkpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhl
ZCkpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFBhZGRpbmdSaWdodChMZW5ndGgoMywgRml4ZWQp
KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRleHRCbG9ja1N0eWxlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVy
VGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVuZGVyU3R5bGUgY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95
ZWQoKTsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVT
dHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUgY3JlYXRlSW5u
ZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCA9IDA7CiAKICAgICB2b2lkIHNl
bGVjdGlvbkNoYW5nZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAog
ICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IAogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZpZGVvPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3Bs
YXlNb2RlKCkgPT0gUG9zdGVyIHx8IGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZp
ZGVvOyB9CiAKICAgICBVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25zdDsKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1v
ZGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxX
QlJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJF
bGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
V0JSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgSFRNTFdCUkVs
ZW1lbnQ6OkhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YQogICAgIEFTU0VSVChoYXNUYWdOYW1lKHdi
clRhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxX
QlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTGluZUJyZWFrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFdCUkVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFdCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDcgKzY3LDcgQEAgYm9vbCBIaWRkZW5JbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0
VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgRm9ybUNvbnRy
b2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZy
b21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSW1h
Z2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXYKICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVySW1hZ2U+KGVsZW1lbnQoKSwgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBvdmVycmlkZTsKICAgICB2b2lkIGFsdEF0
dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQo
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBJbnB1dFR5
cGU6OmYKICAgICByZXR1cm4gZWxlbWVudCgpLmZvcm0oKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IElucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4oUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKGVsZW1lbnQo
KSwgV1RGTW92ZShzdHlsZSkpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBNaXNjZWxsYW5lb3Vz
IGZ1bmN0aW9ucy4KIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCk7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgSFRNTEVsZW1l
bnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUaHVtYgogICAgIHJldHVybiAmdHlwZWRTbGlkZXJU
aHVtYkVsZW1lbnQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU2xpZGVyPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVu
dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9h
cmRFdmVudCopIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJ
bnB1dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwog
ICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29u
c3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDExICs0MywxMSBAQCBSZWY8UnVieUVsZW1lbnQ+IFJ1YnlFbGVtZW50
OjpjcmVhdGUoY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUnVieUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRp
b24pCiB7Ci0gICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgIGlmIChzdHls
ZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyUnVieUFzSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgIGlmIChzdHlsZS0+
ZGlzcGxheSgpID09IEJMT0NLIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKQor
ICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUuZGlzcGxheSgpID09IElO
TElORV9CTE9DSykKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlBc0Js
b2NrPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJ1YnlFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVi
eVRleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlU
ZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UnVieVRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFJl
ZjxSdWJ5VGV4dEVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3IKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSdWJ5VGV4dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieVRl
eHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICAvLyBSZW5k
ZXJSdWJ5VGV4dCByZXF1aXJlcyBpdHMgcGFyZW50IHRvIGJlIFJlbmRlclJ1YnlSdW4uCi0gICAg
aWYgKGlzUnVieShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5bGUtPmRpc3BsYXko
KSA9PSBCTE9DSykKKyAgICBpZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAm
JiBzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0spCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJSdWJ5VGV4dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9u
UG9zaXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBSdWJ5VGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjptYXhSZXN1bHRz
QXR0cmlidXQKICAgICAgICAgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZSgqbV9yZXN1bHRz
QnV0dG9uLCBlbGVtZW50KCkubWF4UmVzdWx0cygpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNlYXJjaElu
cHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTZWFyY2hGaWVsZD4oZWxlbWVudCgpLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgbWF4UmVzdWx0c0F0
dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmKSBvdmVycmlkZTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRTdWJtaXRJbXAKICAgICAgICAgfHwgSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNp
dGx5KGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0
VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU+KGVsZW1lbnQoKSwgV1RGTW92ZShz
dHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCop
IGZpbmFsOwogICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50KikgZmluYWw7CiAgICAgYm9vbCBz
aG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50KikgZmluYWw7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VJbnB1dE1l
dGhvZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1
dGUoKSBvdmVycmlkZTsKICAgICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50KCkgY29u
c3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGb250KGMKIAogICAgIC8vIE1hcCB0aGUgPGNhbnZhcz4gZm9udCBpbnRvIHRoZSB0
ZXh0IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdvcmRzIGxpa2UgbGFyZ2VyL3NtYWxsZXIs
IHRoZXNlIHdpbGwgd29yawogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBjYW52YXMuCi0gICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIG5ld1N0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2Fu
dmFzKCktPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBAIERldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2VyQ29udHIKICAgICBzZXRQc2V1
ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWRldGFpbHMtbWFya2VyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0
YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRGV0YWlsc01hcmtlcj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNN
YXJrZXJDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGV0YWlsc01hcmtlckNvbnRyb2wuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERldGFpbHNNYXJrZXJDb250cm9s
KERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVuCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAg
LTMyNyw3ICszMjcsNyBAQCBSZWY8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkBAIC0xMDgyLDcgKzEwODIsNyBAQCBSZWY8TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVuCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvY3VtZW50
Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8SW1hZ2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2Uo
KSBvdmVycmlkZTsKICAgICB2b2lkIHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdl
ZChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZAogICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS5zdXBwb3J0
c01ldGVyKHJlbmRlci0+c3R5bGUoKS5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1l
dGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1ldGVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgTWV0ZXJJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBSZWY8TWV0
ZXJJbm5lckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIFByb2dyZXNzSW5uZXJFbGVtZW50OjpQcm9ncmVzc0lubmVyRWxlbWUKIHsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBQcm9ncmVz
c0lubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclByb2dyZXNzPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgaGFzVmVydGljYWxBcHBlYXJhbmNlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYihTbGlk
ZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTbGlkZXJUaHVtYjo6UmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wg
UmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSAKIC8vIGh0dHA6Ly93ZWJraXQub3Jn
L2IvNjI1MzUKIGNsYXNzIFJlbmRlclNsaWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRl
ckNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCisgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyRmxleGlibGVC
b3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tCiAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlclRodW1iPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpAQCAtNjIzLDcgKzYyMyw3IEBAIFJlZjxTbGlkZXJDb250YWluZXJFbGVt
ZW50PiBTbGlkZXJDb250YWkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTbGlkZXJDb250YWlu
ZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFpbmVyPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KERv
Y3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMTksNyArMTE5LDcgQEAgaW5saW5lIFJlZjxT
bGlkZXJUaHVtYkVsZW1lbnQ+IFNsaWRlclRodQogCiBjbGFzcyBSZW5kZXJTbGlkZXJUaHVtYiBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclNsaWRl
clRodW1iKFNsaWRlclRodW1iRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4p
OworICAgIFJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUp
OwogCiBwcml2YXRlOgpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUqKSBvdmVycmlk
ZTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gVGV4
dENvbnRyCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cihkb2N1bWVudCkpOwogfQogICAgIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250
cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtNzcsNyArNzcsNyBAQCBSZWY8VGV4
dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sCiAKIE9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShSZW5kZXJTdHls
ZSYsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgYXV0byBpbm5lckNvbnRh
aW5lclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gaW5uZXJDb250YWlu
ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBpbm5lckNvbnRhaW5lclN0
eWxlLT5pbmhlcml0RnJvbShzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgaW5uZXJDb250YWluZXJT
dHlsZS0+c2V0RmxleEdyb3coMSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bAogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5u
ZXJCbG9jaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTEzNiw3ICsxMzYsOCBAQCBS
ZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sCiAKIE9wdGlvbmFsPEVsZW1l
bnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
UmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIHJldHVy
biBFbGVtZW50U3R5bGUoZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFk
b3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpKTsKKyAgICBh
dXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dI
b3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOworICAgIHJldHVy
biBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHls
ZSkpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IGNyZWF0ZShE
b2N1bWVudCYpOwogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9j
dW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiB9OwogCiBjbGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRGl2RWxlbWVudCB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGZpbmFsIDogcHVibGlj
IFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bihIVE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKCk7CiAKIHByaXZhdGU6CkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJv
cGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1SZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW1h
Z2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpkZWZhCiAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250
cm9sc0J1dHRvbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIEltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjKERvY3VtZW50Jik7CiAKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIGlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21h
Yy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVySW1hZ2VDb250cm9s
cyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlcklt
YWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVySW1hZ2VDb250cm9scygpOwogCiBwcml2YXRlOgpAQCAtNDksNyAr
NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3Bh
Z2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUmVuZGVySW1h
Z2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckltYWdlQ29udHJvbHM6OlJl
bmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9
CkBAIC0xMDMsNyArMTAzLDcgQEAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VD
b250cgogewogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3VtZW50Jik7CiAKLSAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94CiAgICAgcmV0dXJuIHRyYWNrRGlzcGxheUJveFNoYWRv
d1BzZXVkb0lkOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVC
b3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWVFRD
dWU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFZUVEN1ZUJveChEb2N1bWVudCYsIFZUVEN1ZSYpOwogCi0gICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgVlRUQ3VlJiBtX2N1ZTsKICAg
ICBpbnQgbV9mb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hpbGQKICAgICBNYXRoTUxFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewogICAgIGlmIChoYXNUYWdOYW1lKGFubm90YXRpb25feG1sVGFnKSkKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvdz4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9OwogICAgIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxNYXRoTUxNYXRoRWxlbWVudD4gTWF0
aE1MTWF0aEVsZW1lbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxNYXRoRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0
aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIE1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIFJlZjxNYXRoTUxNZW5jbG9zZUVsZW1lbnQ+IE1hdGhNTE1lbmNsb3MKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1lbmNsb3NlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
TWF0aE1MTWVuY2xvc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsgICAgCiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1lbmNsb3NlPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1l
bmNsb3NlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOwogICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0K
ICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykg
eyBtX25vdGF0aW9uRmxhZ3MgfD0gbm90YXRpb25GbGFnOyB9CiAgICAgdW5zaWduZWQgc2hvcnQg
bV9ub3RhdGlvbkZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIFJlZjxNYXRoTUxTZWxlY3RFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNYXRoTUxTZWxlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxl
Y3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTZWxl
Y3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7Ci0gICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWF0aE1MVGV4dEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGlu
c2VydGlvblBvc2l0aW9uKQogewogICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1Rh
ZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTFRleHRFbGVtZQogCiAgICAgLy8gRklYTUU6IHdoeSBkbyB3ZSBoYXZl
IHRvIHNldCB0aGUgYWxpZ25tZW50IGhlcmUgPyBJdCBzZWVtcyBuZWVkZWQgdG8gbWFrZSB0aGUK
ICAgICAvLyBzdHlsZS1jaGFuZ2VkLmh0bXQgdGVzdCB0byBwYXNzLCBzaW5jZSBtYXRobWwgcmVu
ZGVycyBleHBlY3QgU3RyZXRjaCBhcyBkZWZhdWx0LgotICAgIHN0eWxlLT5zZXRBbGlnbkl0ZW1z
UG9zaXRpb24oSXRlbVBvc2l0aW9uU3RyZXRjaCk7CisgICAgc3R5bGUuc2V0QWxpZ25JdGVtc1Bv
c2l0aW9uKEl0ZW1Qb3NpdGlvblN0cmV0Y2gpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlck1hdGhNTFRva2VuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MVGV4dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5OSwxMCAr
Mzc5OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAg
bV9zY3JvbGxDb3JuZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIW1fc2Ny
b2xsQ29ybmVyKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKGNvcm5l
clN0eWxlKSk7CisgICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyLT5kb2N1bWVudCgpLCBXVEZNb3ZlKCpjb3JuZXJT
dHlsZSkpOwogICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXItPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZN
b3ZlKGNvcm5lclN0eWxlKSk7CisgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUo
V1RGTW92ZSgqY29ybmVyU3R5bGUpKTsKICAgICAgICAgaW52YWxpZGF0ZVNjcm9sbENvcm5lcihj
b3JuZXJSZWN0KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gQW5pbWF0aW9uQ28KICAgICBjb25zdCBDb21wb3NpdGVBbmltYXRpb24mIHJlbmRlcmVy
QW5pbWF0aW9ucyA9ICptX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZ2V0KCZyZW5kZXJlcik7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRpbmdTdHlsZSA9IHJlbmRlcmVyQW5p
bWF0aW9ucy5nZXRBbmltYXRlZFN0eWxlKCk7CiAgICAgaWYgKCFhbmltYXRpbmdTdHlsZSkKLSAg
ICAgICAgYW5pbWF0aW5nU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJnJlbmRlcmVyLnN0eWxl
KCkpOworICAgICAgICBhbmltYXRpbmdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5k
ZXJlci5zdHlsZSgpKTsKICAgICAKICAgICByZXR1cm4gYW5pbWF0aW5nU3R5bGU7CiB9CkBAIC02
MzcsNyArNjM3LDcgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpbwog
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmlt
YXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYg
KCFyZW5kZXJlci5pc0NTU0FuaW1hdGluZygpKQotICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6
OmNsb25lKCZyZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpj
bG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICByZXR1cm4gbV9kYXRhLT5nZXRBbmltYXRl
ZFN0eWxlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIENvbXBvc2l0
ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBv
ZiB0aGUgcHJvcGVydHksIHNvIHRoYXQgcmVzdGFydGVkIHRyYW5zaXRpb25zIHVzZSB0aGUgY29y
cmVjdCBzdGFydGluZyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1NQcm9w
ZXJ0eUFuaW1hdGlvbjo6YW5pbWF0aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQocHJvcCkgJiYg
aW1wbEFuaW0tPmlzQWNjZWxlcmF0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbW9kaWZpZWRDdXJyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVkQ3VycmVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGN1cnJlbnRTdHls
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ3VycmVudFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpjdXJyZW50U3R5bGUpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW1wbEFuaW0tPmJsZW5kUHJvcGVydHlWYWx1ZUluU3R5bGUocHJvcCwg
bW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5p
bWF0aW9uLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5p
bWF0aW9uKEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJRCBhbmltYXRpbmdQcm9w
ZXJ0eSwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFu
aW0sIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpCiAgICAgOiBBbmltYXRpb25CYXNlKHRyYW5zaXRp
b24sIHJlbmRlcmVyLCBjb21wQW5pbSkKLSAgICAsIG1fZnJvbVN0eWxlKFJlbmRlclN0eWxlOjpj
bG9uZShmcm9tU3R5bGUpKQorICAgICwgbV9mcm9tU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCpmcm9tU3R5bGUpKQogICAgICwgbV90cmFuc2l0aW9uUHJvcGVydHkodHJhbnNpdGlvbi5wcm9w
ZXJ0eSgpKQogICAgICwgbV9hbmltYXRpbmdQcm9wZXJ0eShhbmltYXRpbmdQcm9wZXJ0eSkKIHsK
QEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3Np
dAogICAgIC8vIFJ1biBhIGN5Y2xlIG9mIGFuaW1hdGlvbi4KICAgICAvLyBXZSBrbm93IHdlIHdp
bGwgbmVlZCBhIG5ldyByZW5kZXIgc3R5bGUsIHNvIG1ha2Ugb25lIGlmIG5lZWRlZAogICAgIGlm
ICghYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZSh0YXJnZXRTdHlsZSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnRhcmdldFN0eWxlKTsKIAogICAgIGJvb2wgbmVlZHNBbmltID0gQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0aGlzLCBtX2FuaW1hdGluZ1Byb3BlcnR5LCBh
bmltYXRlZFN0eWxlLmdldCgpLCBtX2Zyb21TdHlsZS5nZXQoKSwgbV90b1N0eWxlLmdldCgpLCBw
cm9ncmVzcygpKTsKICAgICAvLyBGSVhNRTogd2UgYWxzbyBuZWVkIHRvIGRldGVjdCBjYXNlcyB3
aGVyZSB3ZSBoYXZlIHRvIHNvZnR3YXJlIGFuaW1hdGUgZm9yIG90aGVyIHJlYXNvbnMsCkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQKIHZv
aWQgSW1wbGljaXRBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIHsKICAgICBpZiAoIWFuaW1hdGVkU3R5bGUpCi0g
ICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUobV90b1N0eWxlLmdldCgp
KTsKKyAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbV90b1N0
eWxlKTsKIAogICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXModGhpcywg
bV9hbmltYXRpbmdQcm9wZXJ0eSwgYW5pbWF0ZWRTdHlsZS5nZXQoKSwgbV9mcm9tU3R5bGUuZ2V0
KCksIG1fdG9TdHlsZS5nZXQoKSwgcHJvZ3Jlc3MoKSk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAg
dm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6b25BbmltYXRpb25FbmQoZAogICAgIC8vIChjb21wYXJp
bmcgdGhlIG9sZCB1bmFuaW1hdGVkIHN0eWxlIHdpdGggdGhlIG5ldyBmaW5hbCBzdHlsZSBvZiB0
aGUgdHJhbnNpdGlvbikuCiAgICAgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBrZXlmcmFtZUFu
aW0gPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkobV9hbmlt
YXRpbmdQcm9wZXJ0eSk7CiAgICAgaWYgKGtleWZyYW1lQW5pbSkKLSAgICAgICAga2V5ZnJhbWVB
bmltLT5zZXRVbmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKG1fdG9TdHlsZS5nZXQo
KSkpOworICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFVuYW5pbWF0ZWRTdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKm1fdG9TdHlsZSkpOwogICAgIAogICAgIHNlbmRUcmFuc2l0aW9uRXZlbnQo
ZXZlbnROYW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCwgZWxhcHNlZFRpbWUpOwogICAgIGVuZEFu
aW1hdGlvbigpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnJl
c2V0KFJlbmRlclN0eWwKICAgICBBU1NFUlQodG8pOwogICAgIEFTU0VSVChtX2Zyb21TdHlsZSk7
CiAKLSAgICBtX3RvU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUodG8pOworICAgIG1fdG9TdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdG8pOwogCiAgICAgLy8gUmVzdGFydCB0aGUgdHJh
bnNpdGlvbgogICAgIGlmIChtX2Zyb21TdHlsZSAmJiBtX3RvU3R5bGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKEFuaW1hdGlv
biYgYW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3Np
dGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRT
dHlsZSkKICAgICA6IEFuaW1hdGlvbkJhc2UoYW5pbWF0aW9uLCByZW5kZXJlciwgY29tcG9zaXRl
QW5pbWF0aW9uKQogICAgICwgbV9rZXlmcmFtZXMoYW5pbWF0aW9uLm5hbWUoKSkKLSAgICAsIG1f
dW5hbmltYXRlZFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSh1bmFuaW1hdGVkU3R5bGUpKQorICAg
ICwgbV91bmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1bmFuaW1hdGVkU3R5
bGUpKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKICAgICAvLyBHZXQgdGhlIGtleWZyYW1lIFJl
bmRlclN0eWxlcwpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFu
aW1hdGUoQ29tcG9zaXQKICAgICAvLyBJZiBzbywgd2UgbmVlZCB0byBzZW5kIGJhY2sgdGhlIHRh
cmdldFN0eWxlLgogICAgIGlmIChwb3N0QWN0aXZlKCkpIHsKICAgICAgICAgaWYgKCFhbmltYXRl
ZFN0eWxlKQotICAgICAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh0
YXJnZXRTdHlsZSk7CisgICAgICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCp0YXJnZXRTdHlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE2MSw3ICsxNjEsNyBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0
CiAgICAgLy8gUnVuIGEgY3ljbGUgb2YgYW5pbWF0aW9uLgogICAgIC8vIFdlIGtub3cgd2Ugd2ls
bCBuZWVkIGEgbmV3IHJlbmRlciBzdHlsZSwgc28gbWFrZSBvbmUgaWYgbmVlZGVkLgogICAgIGlm
ICghYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZSh0YXJnZXRTdHlsZSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKnRhcmdldFN0eWxlKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGJlIG1v
cmUgZWZmaWNpZW50IGFib3V0IGRldGVybWluaW5nIHdoaWNoIGtleWZyYW1lcyB3ZSBhcmUgYW5p
bWF0aW5nIGJldHdlZW4uCiAgICAgLy8gV2Ugc2hvdWxkIGNhY2hlIHRoZSBsYXN0IHBhaXIgb3Ig
c29tZXRoaW5nLgpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246Omdl
dEFuaW1hdGVkU3R5bGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFhbmltYXRlZFN0eWxl
KQotICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZtX29iamVjdC0+
c3R5bGUoKSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
bV9vYmplY3QtPnN0eWxlKCkpOwogCiAgICAgZm9yIChhdXRvIHByb3BlcnR5SUQgOiBtX2tleWZy
YW1lcy5wcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgLy8gR2V0IHRoZSBmcm9tL3RvIHN0eWxlcyBh
bmQgcHJvZ3Jlc3MgYmV0d2VlbgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckF0dGFjaG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotUmVuZGVyQXR0YWNobWVudDo6UmVuZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJB
dHRhY2htZW50OjpSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBMYXlvdXRTaXplKCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogCiBjbGFzcyBSZW5k
ZXJBdHRhY2htZW50IGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJBdHRhY2htZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckF0dGFjaG1lbnQoSFRNTEF0dGFjaG1lbnRFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQmIGF0dGFj
aG1lbnRFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDEyICsxODEsMTIgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFkVmVydGljYWxMYXlvdXRPdmVyZmxvdzsKIH07CiAKLVJl
bmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJC
bG9jazo6UmVuZGVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwg
QmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewogfQogCi1S
ZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5k
ZXJCbG9jazo6UmVuZGVyQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1l
bnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogewog
fQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGkKICAgICAgICAgZm9yIChSZW5kZXJCbG9jayogY3VyckNvbnQgPSBibG9ja0VsZW1lbnRD
b250aW51YXRpb24oKTsgY3VyckNvbnQ7IGN1cnJDb250ID0gY3VyckNvbnQtPmJsb2NrRWxlbWVu
dENvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogbmV4
dENvbnQgPSBjdXJyQ29udC0+Y29udGludWF0aW9uKCk7CiAgICAgICAgICAgICBjdXJyQ29udC0+
c2V0Q29udGludWF0aW9uKDApOwotICAgICAgICAgICAgY3VyckNvbnQtPnNldFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZSgmbmV3U3R5bGUpKTsKKyAgICAgICAgICAgIGN1cnJDb250LT5zZXRTdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUpKTsKICAgICAgICAgICAgIGN1cnJDb250LT5z
ZXRDb250aW51YXRpb24obmV4dENvbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzkxLDcgKzM5
MSw3IEBAIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNsb24KICAgICAgICAg
Y2xvbmVCbG9jay0+c2V0Q2hpbGRyZW5JbmxpbmUoY2hpbGRyZW5JbmxpbmUoKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgUmVuZGVyVHJlZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uKCpwYXJl
bnQoKSk7Ci0gICAgICAgIGNsb25lQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFJlbmRlckJs
b2NrPihlbGVtZW50KCktPmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZTo6Y2xvbmUo
JnN0eWxlKCkpLCBpbnNlcnRpb25Qb3NpdGlvbikpOworICAgICAgICBjbG9uZUJsb2NrID0gc3Rh
dGljX3BvaW50ZXJfY2FzdDxSZW5kZXJCbG9jaz4oZWxlbWVudCgpLT5jcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKCkpLCBpbnNlcnRpb25Qb3NpdGlvbikpOwog
ICAgICAgICBjbG9uZUJsb2NrLT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBUaGlz
IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgcmlnaHQgdmFsdWUgb2YgY2hpbGRyZW5JbmxpbmUg
aW4gY2FzZQpAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUNoaWxk
KFJlbmRlck9iamUKICAgICAgICAgICAgIEFTU0VSVCghaW5saW5lQ2hpbGRyZW5CbG9jay5jb250
aW51YXRpb24oKSk7CiAgICAgICAgICAgICAvLyBDYWNoZSB0aGlzIHZhbHVlIGFzIGl0IG1pZ2h0
IGdldCBjaGFuZ2VkIGluIHNldFN0eWxlKCkgY2FsbC4KICAgICAgICAgICAgIGJvb2wgaW5saW5l
Q2hpbGRyZW5CbG9ja0hhc0xheWVyID0gaW5saW5lQ2hpbGRyZW5CbG9jay5oYXNMYXllcigpOwot
ICAgICAgICAgICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAg
ICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spKTsKICAgICAgICAgICAgIHJlbW92
ZUNoaWxkSW50ZXJuYWwoaW5saW5lQ2hpbGRyZW5CbG9jaywgaW5saW5lQ2hpbGRyZW5CbG9ja0hh
c0xheWVyID8gTm90aWZ5Q2hpbGRyZW4gOiBEb250Tm90aWZ5Q2hpbGRyZW4pOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBOb3cganVzdCBwdXQgdGhlIGlubGluZUNoaWxkcmVuQmxvY2sg
aW5zaWRlIHRoZSBibG9ja0NoaWxkcmVuQmxvY2suCkBAIC0zMDY4LDkgKzMwNjgsOSBAQCB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlCiAgICAgICAgIC8vIFRoZSBmaXJz
dC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5k
ZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5l
d0ZpcnN0TGV0dGVyOwogICAgICAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElO
RSkKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoJnBzZXVkb1N0eWxlKSk7CisgICAgICAgICAgICBuZXdG
aXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHBzZXVkb1N0eWxlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0
dGVyID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
JnBzZXVkb1N0eWxlKSk7CisgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJC
bG9ja0Zsb3coZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKSk7CiAg
ICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAgICAvLyBN
b3ZlIHRoZSBmaXJzdCBsZXR0ZXIgaW50byB0aGUgbmV3IHJlbmRlcmVyLgpAQCAtMzA5Niw3ICsz
MDk2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZQogICAgICAg
ICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRh
aW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5
bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXItPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZShw
c2V1ZG9TdHlsZSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJl
bmRlcmVyKFJlbmRlckVsZW1lbnQqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlclRleHQqIGN1cnJl
bnRUZXh0Q2hpbGQpCkBAIC0zMTA1LDkgKzMxMDUsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjcmVh
dGVGaXJzdExldHRlclJlbmRlCiAgICAgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlID0gc3R5bGVG
b3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7CiAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGZpcnN0TGV0dGVyID0gbnVsbHB0cjsKICAgICBpZiAo
cHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElORSkKLSAgICAgICAgZmlyc3RMZXR0ZXIgPSBu
ZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmcHNldWRvU3R5
bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCks
IFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAgIGVsc2UKLSAgICAgICAgZmly
c3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpj
bG9uZSgmcHNldWRvU3R5bGUpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxv
Y2tGbG93KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSkpOwogICAg
IGZpcnN0TGV0dGVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBmaXJzdExldHRlckNvbnRhaW5l
ci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIGN1cnJlbnRUZXh0Q2hpbGQpOwogCkBAIC0zNzQzLDkg
KzM3NDMsOSBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91CiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29udmVydCBhbGwgb3VyIGlubGluZSBkaXNwbGF5cyB0
byBibG9jay10eXBlIGluIHRoZSBhbm9ueW1vdXMgbG9naWMgPwogICAgIFJlbmRlckJsb2NrKiBu
ZXdCb3g7CiAgICAgaWYgKGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVY
KQotICAgICAgICBuZXdCb3ggPSBuZXcgUmVuZGVyRmxleGlibGVCb3gocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50
LT5zdHlsZSgpLCBGTEVYKSk7CisgICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJGbGV4aWJsZUJv
eChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgRkxFWCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3
Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCksIEJMT0NL
KSk7CisgICAgICAgIG5ld0JveCA9IG5ldyBSZW5kZXJCbG9ja0Zsb3cocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQt
PnN0eWxlKCksIEJMT0NLKSk7CiAKICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwogICAg
IHJldHVybiBuZXdCb3g7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIGZyaWVu
ZCBjbGFzcyBMaW5lTGF5b3V0U3RhdGU7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCbG9jayhF
bGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0g
ICAgUmVuZGVyQmxvY2soRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBC
YXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwg
QmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQmxvY2soRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCiBwdWJsaWM6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgUmVuZGVyQmxvY2tGbG93
OjpNYXJnaW5JbmZvOjpNYXJnaW5JbmZvKAogICAgIG1fbmVnYXRpdmVNYXJnaW4gPSAobV9jYW5D
b2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhDaGlsZHJlbiAmJiAhYmxvY2subXVzdERpc2NhcmRNYXJn
aW5CZWZvcmUoKSkgPyBibG9jay5tYXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpIDogTGF5b3V0VW5p
dCgpOwogfQogCi1SZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93
OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zs
b3dGbGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZv
clRleHRBdXRvc2l6aW5nKC0xKQpAQCAtMTA0LDcgKzEwNCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6
UmVuZGVyQmxvY2tGbG93KEVsZW1lbnQKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0K
IAotUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93OjpSZW5k
ZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dG
bGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZvclRl
eHRBdXRvc2l6aW5nKC0xKQpAQCAtMTIwLDcgKzEyMCw3IEBAIFJlbmRlckJsb2NrRmxvdzo6flJl
bmRlckJsb2NrRmxvdygpCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVNdWx0aUNvbHVt
bkZsb3dUaHJlYWQoKQogewotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKSk7
CisgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmV3IFJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZChkb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwogICAgIGZsb3dUaHJlYWQt
PmluaXRpYWxpemVTdHlsZSgpOwogICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gRG8g
dGhpcyB0byBhdm9pZCB3cmFwcGluZyBpbmxpbmUgY2hpbGRyZW4gdGhhdCBhcmUganVzdCBnb2lu
ZyB0byBtb3ZlIGludG8gdGhlIGZsb3cgdGhyZWFkLgogICAgIGRlbGV0ZUxpbmVzKCk7CkBAIC0y
MDM3LDcgKzIwMzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5
CiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKQog
ewogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkICYmIChjaGls
ZC0+aXNJbkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgfHwgY2hpbGQtPmlzUmVuZGVyTXVsdGlDb2x1
bW5TZXQoKSk7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgIGNoaWxk
LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgY2hpbGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiB9CiAKIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCAr
NTUsOCBAQCBlbnVtIExpbmVDb3VudCB7CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdyA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3co
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckJsb2NrRmxvdygpOwogICAgICAg
ICAKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcg
QEAgc3RhdGljIGJvb2wgc2tpcEJvZHlCYWNrZ3JvdW5kKGNvbnN0IFJlbgogICAgICAgICAmJiAo
ZG9jdW1lbnRFbGVtZW50UmVuZGVyZXIgPT0gYm9keUVsZW1lbnRSZW5kZXJlci0+cGFyZW50KCkp
OwogfQogCi1SZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitS
ZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVj
dChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgo
LTEpCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxl
bWVudCwgcwogICAgIHNldElzQm94KCk7CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5
cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJh
c2VUeXBlRmxhZ3MpCiAgICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAs
IG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsOCArNjMwLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlbmRlckJveCogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJveChFbGVtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQm94KERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAg
UmVuZGVyQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJCb3goRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAg
IHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdAogICAgIGxheWVyKCktPmJhY2tpbmcoKS0+
c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5k
ZXJCb3hNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJl
bmRlckJveE1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJl
bmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94
TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxh
Z3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzOCw4ICsyMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNvbnRpbnVhdGlvbigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJh
c2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyk7CiAKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1SZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRy
b2xFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9idXR0b25UZXh0KDApCiAgICAgLCBtX2lubmVyKDAp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogLy8g
dG8gZGF0ZSBhcyB0aGUgYnV0dG9uIGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24gZmluYWwg
OiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJCdXR0b24oKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQmIGZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OnN0eWxlRGlkQ2hh
bmdlKFMKICAgICAvLyBjbG9iYmVyaW5nIHdpZHRoIHZhcmlhbnRzIGFuZCBzaHJpbmstdG8tZml0
IGNoYW5nZXMsIHNpbmNlIHdlIHdvbid0IHJlY29tYmluZSB3aGVuCiAgICAgLy8gdGhlIGZvbnQg
ZG9lc24ndCBjaGFuZ2UuCiAgICAgaWYgKCFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+Zm9udENhc2Nh
ZGUoKSAhPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkpCi0gICAgICAgIG1fY29tYmluZUZvbnRTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSk7CisgICAgICAgIG1fY29tYmluZUZvbnRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihzdHlsZSgpKTsKIAogICAgIFJlbmRlclRleHQ6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX29yZGluYWxJdGVyYXRpb247CiB9OwogCi1SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCAwKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8g
QWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJsb2NrLWxldmVsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xh
c3MgRmxleEJveEl0ZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goKTsKIAogICAgIEVsZW1l
bnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0
YWlsc01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1SZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNN
YXJrZXJDb250cm9sJiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2Vy
Q29udHJvbCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2Nr
RmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlckRldGFpbHNNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxz
TWFya2VyQ29udHJvbCYsIFJlbmRlclN0eWxlJiYpOwogICAgIERldGFpbHNNYXJrZXJDb250cm9s
JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc01hcmtlckNvbnRy
b2wmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKICAgICBlbnVtIE9yaWVudGF0aW9uIHsg
VXAsIERvd24sIExlZnQsIFJpZ2h0IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udAogICAgIHJldHVybiBt
YXA7CiB9CiAKLWlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnRhaW5lck5v
ZGUmIGVsZW1lbnRPckRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
LCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitpbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVu
ZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0
KGVsZW1lbnRPckRvY3VtZW50KQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3Mp
CiAgICAgLCBtX2FuY2VzdG9yTGluZUJveERpcnR5KGZhbHNlKQpAQCAtMTA0LDEyICsxMDQsMTIg
QEAgaW5saW5lIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoQ29udAogewogfQogCi1SZW5k
ZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKK1JlbmRl
ckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChz
dGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZWxlbWVudCksIFdURk1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzKQogewogfQogCi1SZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVG
bGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVG
bGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSY+KGRv
Y3VtZW50KSwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9CkBAIC0xMTcsMjQg
KzExNywyNCBAQCBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkCiBSZW5k
ZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgpCiB7CiAgICAgaWYgKGhhc0luaXRpYWxpemVkU3R5
bGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUt
PmJhY2tncm91bmRMYXllcnMoKTsgYmdMYXllcjsgYmdMYXllciA9IGJnTGF5ZXItPm5leHQoKSkg
eworICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogYmdMYXllciA9IG1fc3R5bGUuYmFja2dy
b3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7CiAgICAg
ICAgICAgICBpZiAoU3R5bGVJbWFnZSogYmFja2dyb3VuZEltYWdlID0gYmdMYXllci0+aW1hZ2Uo
KSkKICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBt
X3N0eWxlLT5tYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fc3R5
bGUubWFza0xheWVycygpOyBtYXNrTGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgp
KSB7CiAgICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0ltYWdlID0gbWFza0xheWVyLT5p
bWFnZSgpKQogICAgICAgICAgICAgICAgIG1hc2tJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlID0gbV9zdHls
ZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpKQorICAgICAgICBpZiAoU3R5bGVJbWFnZSogYm9yZGVy
SW1hZ2UgPSBtX3N0eWxlLmJvcmRlckltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIGJvcmRl
ckltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1h
c2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCisgICAgICAgIGlm
IChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdl
KCkpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICBpZiAoYXV0byBzaGFwZVZhbHVlID0gbV9zdHls
ZS0+c2hhcGVPdXRzaWRlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2hhcGVWYWx1ZSA9IG1fc3R5
bGUuc2hhcGVPdXRzaWRlKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHNoYXBlSW1hZ2UgPSBz
aGFwZVZhbHVlLT5pbWFnZSgpKQogICAgICAgICAgICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgUmVuZGVyRWxlbWVu
dDo6flJlbmRlckVsZW1lbnQoKQogICAgICAgICB2aWV3KCkudW5yZWdpc3RlckZvclZpc2libGVJ
blZpZXdwb3J0Q2FsbGJhY2soKnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7
CiAgICAgLy8gTWluaW1hbCBzdXBwb3J0IGZvciBjb250ZW50IHByb3BlcnRpZXMgcmVwbGFjaW5n
IGFuIGVudGlyZSBlbGVtZW50LgogICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5
IG9uZSBwaWVjZSBvZiBjb250ZW50IGFuZCBpdCdzIGEgVVJMLgogICAgIC8vIE90aGVyd2lzZSBh
Y3RzIGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KLSAgICBjb25zdCBDb250
ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKKyAgICBjb25zdCBD
b250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOwogICAgIGlmIChj
b250ZW50RGF0YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBpczxJbWFnZUNvbnRlbnREYXRh
PigqY29udGVudERhdGEpICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAg
IGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERh
dGEpLmltYWdlKCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJ
bWFnZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KCZz
dHlsZUltYWdlKSk7CkBAIC0xNTksNyArMTU5LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFJlbmRlckVsZW1lbnQ6OgogICAgICAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiAgICAgfQog
Ci0gICAgc3dpdGNoIChzdHlsZS0+ZGlzcGxheSgpKSB7CisgICAgc3dpdGNoIChzdHlsZS5kaXNw
bGF5KCkpIHsKICAgICBjYXNlIE5PTkU6CiAgICAgY2FzZSBDT05URU5UUzoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0zNzUsMTQgKzM3NSwxNCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omlu
aXRpYWxpemVTdHlsZSgpCiAKICAgICBtX2hhc0luaXRpYWxpemVkU3R5bGUgPSB0cnVlOwogCi0g
ICAgdXBkYXRlRmlsbEltYWdlcyhudWxscHRyLCBtX3N0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkp
OwotICAgIHVwZGF0ZUZpbGxJbWFnZXMobnVsbHB0ciwgbV9zdHlsZS0+bWFza0xheWVycygpKTsK
KyAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUuYmFja2dyb3VuZExheWVycygp
KTsKKyAgICB1cGRhdGVGaWxsSW1hZ2VzKG51bGxwdHIsIG1fc3R5bGUubWFza0xheWVycygpKTsK
IAotICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KSk7Ci0gICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS0+bWFza0JveEltYWdlKCkuaW1h
Z2UoKSk7CisgICAgdXBkYXRlSW1hZ2UobnVsbHB0ciwgbV9zdHlsZS5ib3JkZXJJbWFnZSgpLmlt
YWdlKCkpOworICAgIHVwZGF0ZUltYWdlKG51bGxwdHIsIG1fc3R5bGUubWFza0JveEltYWdlKCku
aW1hZ2UoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB1cGRhdGVTaGFwZUltYWdl
KG51bGxwdHIsIG1fc3R5bGUtPnNoYXBlT3V0c2lkZSgpKTsKKyAgICB1cGRhdGVTaGFwZUltYWdl
KG51bGxwdHIsIG1fc3R5bGUuc2hhcGVPdXRzaWRlKCkpOwogI2VuZGlmCiAKICAgICBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2VOZXdTdHlsZSwgbnVsbHB0cik7CkBAIC0zOTQsNyArMzk0
LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojppbml0aWFsaXplU3R5bGUoKQogICAgIC8vIGhhdmUg
dGhlaXIgcGFyZW50IHNldCBiZWZvcmUgZ2V0dGluZyBhIGNhbGwgdG8gaW5pdGlhbGl6ZVN0eWxl
KCkgOnwKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZURpZmZlcmVuY2UgbWluaW1hbFN0eWxlRGlmZmVyZW5j
ZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5
bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2UpCiB7CiAgICAgLy8gRklYTUU6IFNo
b3VsZCBjaGFuZ2UgUmVuZGVyVmlldyBzbyBpdCBjYW4gdXNlIGluaXRpYWxpemVTdHlsZSB0b28u
CiAgICAgLy8gSWYgd2UgZG8gdGhhdCwgd2UgY2FuIGFzc2VydCBtX2hhc0luaXRpYWxpemVkU3R5
bGUgdW5jb25kaXRpb25hbGx5LApAQCAtNDA0LDM0ICs0MDQsMzQgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZQogICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmID0gU3R5
bGVEaWZmZXJlbmNlRXF1YWw7CiAgICAgdW5zaWduZWQgY29udGV4dFNlbnNpdGl2ZVByb3BlcnRp
ZXMgPSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlOb25lOwogICAgIGlmIChtX2hhc0luaXRpYWxp
emVkU3R5bGUpCi0gICAgICAgIGRpZmYgPSBtX3N0eWxlLT5kaWZmKCpzdHlsZSwgY29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMpOworICAgICAgICBkaWZmID0gbV9zdHlsZS5kaWZmKHN0eWxlLCBj
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAKICAgICBkaWZmID0gc3RkOjptYXgoZGlmZiwg
bWluaW1hbFN0eWxlRGlmZmVyZW5jZSk7CiAKICAgICBkaWZmID0gYWRqdXN0U3R5bGVEaWZmZXJl
bmNlKGRpZmYsIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKIAotICAgIHN0eWxlV2lsbENo
YW5nZShkaWZmLCAqc3R5bGUpOworICAgIHN0eWxlV2lsbENoYW5nZShkaWZmLCBzdHlsZSk7CiAK
ICAgICBhdXRvIG9sZFN0eWxlID0gV1RGTW92ZShtX3N0eWxlKTsKICAgICBtX3N0eWxlID0gV1RG
TW92ZShzdHlsZSk7CiAKLSAgICB1cGRhdGVGaWxsSW1hZ2VzKG9sZFN0eWxlLT5iYWNrZ3JvdW5k
TGF5ZXJzKCksIG1fc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7Ci0gICAgdXBkYXRlRmlsbElt
YWdlcyhvbGRTdHlsZS0+bWFza0xheWVycygpLCBtX3N0eWxlLT5tYXNrTGF5ZXJzKCkpOworICAg
IHVwZGF0ZUZpbGxJbWFnZXMob2xkU3R5bGUuYmFja2dyb3VuZExheWVycygpLCBtX3N0eWxlLmJh
Y2tncm91bmRMYXllcnMoKSk7CisgICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS5tYXNrTGF5
ZXJzKCksIG1fc3R5bGUubWFza0xheWVycygpKTsKIAotICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxl
LT5ib3JkZXJJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSk7
Ci0gICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCksIG1fc3R5
bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpOworICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlLmJv
cmRlckltYWdlKCkuaW1hZ2UoKSwgbV9zdHlsZS5ib3JkZXJJbWFnZSgpLmltYWdlKCkpOworICAg
IHVwZGF0ZUltYWdlKG9sZFN0eWxlLm1hc2tCb3hJbWFnZSgpLmltYWdlKCksIG1fc3R5bGUubWFz
a0JveEltYWdlKCkuaW1hZ2UoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB1cGRh
dGVTaGFwZUltYWdlKG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSwgbV9zdHlsZS0+c2hhcGVPdXRz
aWRlKCkpOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUuc2hhcGVPdXRzaWRlKCksIG1f
c3R5bGUuc2hhcGVPdXRzaWRlKCkpOwogI2VuZGlmCiAKICAgICBib29sIGRvZXNOb3ROZWVkTGF5
b3V0ID0gIXBhcmVudCgpOwogCi0gICAgc3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUuZ2V0
KCkpOworICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYsICZvbGRTdHlsZSk7CiAKICAgICAvLyBUZXh0
IHJlbmRlcmVycyB1c2UgdGhlaXIgcGFyZW50IHN0eWxlLiBOb3RpZnkgdGhlbSBhYm91dCB0aGUg
Y2hhbmdlLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJUZXh0
PigqdGhpcykpCi0gICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlLmdl
dCgpKTsKKyAgICAgICAgY2hpbGQuc3R5bGVEaWRDaGFuZ2UoZGlmZiwgJm9sZFN0eWxlKTsKIAog
ICAgIC8vIEZJWE1FOiB8dGhpc3wgbWlnaHQgYmUgZGVzdHJveWVkIGhlcmUuIFRoaXMgY2FuIGN1
cnJlbnRseSBoYXBwZW4gZm9yIGEgUmVuZGVyVGV4dEZyYWdtZW50IHdoZW4KICAgICAvLyBpdHMg
Zmlyc3QtbGV0dGVyIGJsb2NrIGdldHMgYW4gdXBkYXRlIGluIFJlbmRlclRleHRGcmFnbWVudDo6
c3R5bGVEaWRDaGFuZ2UuIEZvciBSZW5kZXJUZXh0RnJhZ21lbnQocyksCkBAIC00NDgsOSArNDQ4
LDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZQogICAgICAgICBp
ZiAodXBkYXRlZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQogICAgICAgICAgICAgc2V0
TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0
ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkpCi0g
ICAgICAgICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZS5nZXQo
KSk7CisgICAgICAgICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5
bGUpOwogICAgICAgICBlbHNlIGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50KSB7Ci0gICAgICAgICAgICBzZXROZWVk
c1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBz
ZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5bGUpOwogICAgICAgICAgICAg
c2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwogICAgICAgICB9IGVsc2UgaWYg
KHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpCiAgICAgICAg
ICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7CkBAIC03ODIsMTggKzc4
MiwxOCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9uCiAgICAgICAg
IGlmIChpczxSZW5kZXJGbG93VGhyZWFkPihlbGVtZW50Q2hpbGQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBlbGVtZW50Q2hpbGQuc3R5bGUoKS5kaXNw
bGF5KCkpOworICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgZWxlbWVudENoaWxkLnN0eWxlKCkuZGlzcGxh
eSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKSB7CiAgICAgICAg
ICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuc3BlY2lmaWVzQ29sdW1ucygpKQotICAgICAg
ICAgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oJnN0eWxlKCkp
OworICAgICAgICAgICAgICAgIG5ld1N0eWxlLmluaGVyaXRDb2x1bW5Qcm9wZXJ0aWVzRnJvbSgm
c3R5bGUoKSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudENoaWxkLnN0eWxlKCkuY29sdW1uU3Bh
bigpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5B
bGwpOworICAgICAgICAgICAgICAgIG5ld1N0eWxlLnNldENvbHVtblNwYW4oQ29sdW1uU3BhbkFs
bCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgcG9zaXRpb24gc3R5bGUg
b2YgYW5vbnltb3VzIGJsb2NrIGNvbnRpbnVhdGlvbnMgYXMgdGhleSBjYW4gaGF2ZSByZWxhdGl2
ZSBvciBzdGlja3kgcG9zaXRpb24gd2hlbgogICAgICAgICAvLyB0aGV5IGNvbnRhaW4gYmxvY2sg
ZGVzY2VuZGFudHMgb2YgcmVsYXRpdmUgb3Igc3RpY2t5IHBvc2l0aW9uZWQgaW5saW5lcy4KICAg
ICAgICAgaWYgKGVsZW1lbnRDaGlsZC5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oZWxlbWVudENoaWxkKS5pc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkp
Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24oZWxlbWVudENoaWxkLnN0eWxlKCku
cG9zaXRpb24oKSk7CisgICAgICAgICAgICBuZXdTdHlsZS5zZXRQb3NpdGlvbihlbGVtZW50Q2hp
bGQuc3R5bGUoKS5wb3NpdGlvbigpKTsKIAogICAgICAgICBlbGVtZW50Q2hpbGQuc2V0U3R5bGUo
V1RGTW92ZShuZXdTdHlsZSkpOwogICAgIH0KQEAgLTgxMCw5ICs4MTAsOSBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgaWYgKG9sZFN0eWxlKSB7CiAgICAg
ICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZpc2liaWxpdHkgY2hh
bmdlcywKICAgICAgICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGV4dCdz
IHotb3JkZXIgbGlzdC4KLSAgICAgICAgYm9vbCB2aXNpYmlsaXR5Q2hhbmdlZCA9IG1fc3R5bGUt
PnZpc2liaWxpdHkoKSAhPSBuZXdTdHlsZS52aXNpYmlsaXR5KCkKLSAgICAgICAgICAgIHx8IG1f
c3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLnpJbmRleCgpCi0gICAgICAgICAgICB8fCBtX3N0
eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUuaGFzQXV0b1pJbmRleCgpOworICAgICAg
ICBib29sIHZpc2liaWxpdHlDaGFuZ2VkID0gbV9zdHlsZS52aXNpYmlsaXR5KCkgIT0gbmV3U3R5
bGUudmlzaWJpbGl0eSgpCisgICAgICAgICAgICB8fCBtX3N0eWxlLnpJbmRleCgpICE9IG5ld1N0
eWxlLnpJbmRleCgpCisgICAgICAgICAgICB8fCBtX3N0eWxlLmhhc0F1dG9aSW5kZXgoKSAhPSBu
ZXdTdHlsZS5oYXNBdXRvWkluZGV4KCk7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQog
ICAgICAgICBpZiAodmlzaWJpbGl0eUNoYW5nZWQpCiAgICAgICAgICAgICBkb2N1bWVudCgpLnNl
dEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0ZSBpZiB2aXNp
YmlsaXR5IGNoYW5nZXMuCi0gICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3
U3R5bGUudmlzaWJpbGl0eSgpKSB7CisgICAgICAgIGlmIChtX3N0eWxlLnZpc2liaWxpdHkoKSAh
PSBuZXdTdHlsZS52aXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciog
bGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxl
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQogICAgICAgICAgICAgICAgICAgICBsYXllci0+c2V0
SGFzVmlzaWJsZUNvbnRlbnQoKTsKQEAgLTgzOSwxNiArODM5LDE3IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5bGUt
Pm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkp
CisgICAgICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5
bGUub3V0bGluZVNpemUoKSB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYp
KSkKICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgaWYgKGlzRmxvYXRpbmcoKSAmJiAo
bV9zdHlsZS0+ZmxvYXRpbmcoKSAhPSBuZXdTdHlsZS5mbG9hdGluZygpKSkKKyAgICAgICAgaWYg
KGlzRmxvYXRpbmcoKSAmJiBtX3N0eWxlLmZsb2F0aW5nKCkgIT0gbmV3U3R5bGUuZmxvYXRpbmco
KSkgewogICAgICAgICAgICAgLy8gRm9yIGNoYW5nZXMgaW4gZmxvYXQgc3R5bGVzLCB3ZSBuZWVk
IHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJzZWx2ZXMKICAgICAgICAgICAgIC8vIGZyb20gdGhl
IGZsb2F0aW5nIG9iamVjdHMgbGlzdC4KICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJveD4o
KnRoaXMpLnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpOwot
ICAgICAgICBlbHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAobV9zdHlsZS0+cG9z
aXRpb24oKSAhPSBuZXdTdHlsZS5wb3NpdGlvbigpKSkKKyAgICAgICAgfSBlbHNlIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBtX3N0eWxlLnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUucG9z
aXRpb24oKSkgewogICAgICAgICAgICAgLy8gRm9yIGNoYW5nZXMgaW4gcG9zaXRpb25pbmcgc3R5
bGVzLCB3ZSBuZWVkIHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJzZWx2ZXMKICAgICAgICAgICAg
IC8vIGZyb20gdGhlIHBvc2l0aW9uZWQgb2JqZWN0cyBsaXN0LgogICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyQm94PigqdGhpcykucmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21C
bG9ja0xpc3RzKCk7CisgICAgICAgIH0KIAogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9
IGlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKQogICAgICAgICAgICAgJiYgKCFuZXdT
dHlsZS5pc0Zsb2F0aW5nKCkgJiYgIW5ld1N0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCkBA
IC04NzMsNyArODc0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5
bAogICAgIH0KIAogICAgIGJvb2wgbmV3U3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcyA9IG5ld1N0
eWxlLmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7Ci0gICAgYm9vbCBvbGRTdHlsZVVzZXNGaXhl
ZEJhY2tncm91bmRzID0gbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICBi
b29sIG9sZFN0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMgPSBtX3N0eWxlLmhhc0ZpeGVkQmFja2dy
b3VuZEltYWdlKCk7CiAgICAgaWYgKG5ld1N0eWxlVXNlc0ZpeGVkQmFja2dyb3VuZHMgfHwgb2xk
U3R5bGVVc2VzRml4ZWRCYWNrZ3JvdW5kcykgewogICAgICAgICBib29sIHJlcGFpbnRGaXhlZEJh
Y2tncm91bmRzT25TY3JvbGwgPSAhZnJhbWUoKS5zZXR0aW5ncygpLmZpeGVkQmFja2dyb3VuZHNQ
YWludFJlbGF0aXZlVG9Eb2N1bWVudCgpOwogCkBAIC04ODUsNyArODg2LDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICAgICAgICAgIGlmIChuZXdT
dHlsZVNsb3dTY3JvbGwgJiYgbmV3U3R5bGUuaGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSkK
ICAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7CiAKLSAgICAg
ICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICYmIG1fc3R5bGUtPmhhc0VudGlyZWx5
Rml4ZWRCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9s
bCAmJiBtX3N0eWxlLmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCiAgICAgICAgICAgICAg
ICAgICAgIG9sZFN0eWxlU2xvd1Njcm9sbCA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC05ODAsMTQgKzk4MSwxNCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoZGlmZiA9PSBTdHlsZURp
ZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0
KSB7Ci0gICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2VkKCp0aGlzLCBv
bGRTdHlsZSwgbV9zdHlsZS5nZXQoKSk7CisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVy
U3R5bGVDaGFuZ2VkKCp0aGlzLCBvbGRTdHlsZSwgJm1fc3R5bGUpOwogCiAgICAgICAgIC8vIElm
IHRoZSBvYmplY3QgYWxyZWFkeSBuZWVkcyBsYXlvdXQsIHRoZW4gc2V0TmVlZHNMYXlvdXQgd29u
J3QgZG8KICAgICAgICAgLy8gYW55IHdvcmsuIEJ1dCBpZiB0aGUgY29udGFpbmluZyBibG9jayBo
YXMgY2hhbmdlZCwgdGhlbiB3ZSBtYXkgbmVlZAogICAgICAgICAvLyB0byBtYXJrIHRoZSBuZXcg
Y29udGFpbmluZyBibG9ja3MgZm9yIGxheW91dC4gVGhlIGNoYW5nZSB0aGF0IGNhbgogICAgICAg
ICAvLyBkaXJlY3RseSBhZmZlY3QgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgdGhpcyBvYmplY3Qg
aXMgYSBjaGFuZ2UgdG8KICAgICAgICAgLy8gdGhlIHBvc2l0aW9uIHN0eWxlLgotICAgICAgICBp
ZiAobmVlZHNMYXlvdXQoKSAmJiBvbGRTdHlsZS0+cG9zaXRpb24oKSAhPSBtX3N0eWxlLT5wb3Np
dGlvbigpKQorICAgICAgICBpZiAobmVlZHNMYXlvdXQoKSAmJiBvbGRTdHlsZS0+cG9zaXRpb24o
KSAhPSBtX3N0eWxlLnBvc2l0aW9uKCkpCiAgICAgICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nr
c0ZvckxheW91dCgpOwogCiAgICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91
dCkKQEAgLTEwNTUsNyArMTA1Niw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlUmVtb3Zl
ZEZyb21UcmUKICAgICAgICAgcmVtb3ZlTGF5ZXJzKGxheWVyKTsKICAgICB9CiAKLSAgICBpZiAo
bV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSAmJiAhZnJhbWUoKS5zZXR0aW5ncygp
LmZpeGVkQmFja2dyb3VuZHNQYWludFJlbGF0aXZlVG9Eb2N1bWVudCgpKQorICAgIGlmIChtX3N0
eWxlLmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkgJiYgIWZyYW1lKCkuc2V0dGluZ3MoKS5maXhl
ZEJhY2tncm91bmRzUGFpbnRSZWxhdGl2ZVRvRG9jdW1lbnQoKSkKICAgICAgICAgdmlldygpLmZy
YW1lVmlldygpLnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KHRoaXMpOwogCiAgICAgaWYgKGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwxMSArMzYsMTEgQEAgY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBSZW5k
ZXJPYmplYwogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckVsZW1lbnQoKTsKIAotICAgIHN0
YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBib29sIGhhc0lu
aXRpYWxpemVkU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRpYWxpemVkU3R5bGU7IH0K
IAotICAgIFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVu
ZGVyU3R5bGUmPigqbV9zdHlsZSk7IH0KKyAgICBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlJj4obV9zdHlsZSk7IH0KICAgICBSZW5kZXJT
dHlsZSYgZmlyc3RMaW5lU3R5bGUoKSBjb25zdDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVN0eWxl
KCk7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIHdpdGggbWluaW1h
bFN0eWxlRGlmZmVyZW5jZSA+IFN0eWxlRGlmZmVyZW5jZUVxdWFsIGluZGljYXRlcyB0aGF0CiAg
ICAgLy8gb3V0LW9mLWJhbmQgc3RhdGUgKGUuZy4gYW5pbWF0aW9ucykgcmVxdWlyZXMgdGhhdCBz
dHlsZURpZENoYW5nZSBwcm9jZXNzaW5nCiAgICAgLy8gY29udGludWUgZXZlbiBpZiB0aGUgc3R5
bGUgaXNuJ3QgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgc3R5bGUuCi0gICAgdm9pZCBzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBTdHlsZURpZmZlcmVuY2UgbWluaW1h
bFN0eWxlRGlmZmVyZW5jZSA9IFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKKyAgICB2b2lkIHNldFN0
eWxlKFJlbmRlclN0eWxlJiYsIFN0eWxlRGlmZmVyZW5jZSBtaW5pbWFsU3R5bGVEaWZmZXJlbmNl
ID0gU3R5bGVEaWZmZXJlbmNlRXF1YWwpOwogCiAgICAgLy8gVGhlIHBzZXVkbyBlbGVtZW50IHN0
eWxlIGNhbiBiZSBjYWNoZWQgb3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hlZCBtZXRob2QgaWYg
dGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgcmVzcGVjdAogICAgIC8vIGFueSBwc2V1ZG8gY2xh
c3NlcyAoYW5kIHRoZXJlZm9yZSBoYXMgbm8gY29uY2VwdCBvZiBjaGFuZ2luZyBzdGF0ZSkuCkBA
IC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXBkYXRlcyBvbmx5IHRoZSBsb2Nh
bCBzdHlsZSBwdHIgb2YgdGhlIG9iamVjdC4gRG9lcyBub3QgdXBkYXRlIHRoZSBzdGF0ZSBvZiB0
aGUgb2JqZWN0LAogICAgIC8vIGFuZCBzbyBvbmx5IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUg
c3R5bGUgaXMga25vd24gbm90IHRvIGhhdmUgY2hhbmdlZCAob3IgZnJvbSBzZXRTdHlsZSkuCi0g
ICAgdm9pZCBzZXRTdHlsZUludGVybmFsKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpIHsgbV9zdHlsZSA9IFdURk1vdmUoc3R5bGUpOyB9CisgICAgdm9pZCBzZXRTdHlsZUludGVy
bmFsKFJlbmRlclN0eWxlJiYgc3R5bGUpIHsgbV9zdHlsZSA9IFdURk1vdmUoc3R5bGUpOyB9CiAK
ICAgICAvLyBSZXBhaW50IG9ubHkgaWYgb3VyIG9sZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJl
IGRpZmZlcmVudC4gVGhlIGNhbGxlciBtYXkgcGFzcyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxp
bmVCb3ggaWYgdGhleSBhcmUga25vd24uCiAgICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5l
ZWRlZChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25z
dCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gs
IGNvbnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciA9IG51bGxwdHIsIGNvbnN0IExheW91dFJl
Y3QqIG5ld091dGxpbmVCb3hQdHIgPSBudWxscHRyKTsKQEAgLTIyMyw4ICsyMjMsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNlVHlwZUZsYWdzOwogCi0gICAg
UmVuZGVyRWxlbWVudChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFz
ZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyRWxlbWVudChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoRG9j
dW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIGJvb2wgbGF5ZXJD
cmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3Q7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0
bGluZUF1dG8pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJlbmRlckVsZW1lbnQoQ29udGFpbmVy
Tm9kZSYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAg
IFJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9kZSYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxh
Z3MpOwogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgbm9uUHNldWRv
Tm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgZ2VuZXJhdGluZ05vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCog
bV9maXJzdENoaWxkOwogICAgIFJlbmRlck9iamVjdCogbV9sYXN0Q2hpbGQ7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CisgICAgUmVuZGVyU3R5bGUgbV9zdHls
ZTsKIAogICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoaXMgaGFjay4KICAgICAvLyBTdG9yZSBz
dGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgY29u
c3QgQ29sb3ImIHVuYXZhaWxhYmxlUGx1Z2luQm9yCiAgICAgcmV0dXJuIHN0YW5kYXJkOwogfQog
Ci1SZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3du
ZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdl
dChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faXNQbHVnaW5VbmF2YWlsYWJsZShm
YWxzZSkKICAgICAsIG1fdW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoZmFsc2Up
CkBAIC0xMTEsNyArMTExLDcgQEAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6On5SZW5kZXJFbWJlZGRl
ZE9iagogICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRl
KCp0aGlzKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxl
dEVsZW1lbnQmIGFwcGxldCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBhdXRvIHJlbmRl
cmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KGFwcGxldCwgV1RGTW92
ZShzdHlsZSkpOwogICAgIHJlbmRlcmVyLT5zZXRJbmxpbmUodHJ1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBjbGFzcyBUZXh0UnVuOwogLy8g
Rm9yIGV4YW1wbGUsIDxlbWJlZCBzcmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1
Zy1pbi4KIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IDogcHVibGljIFJlbmRlcldpZGdldCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRW1iZWRkZWRPYmpl
Y3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyRW1iZWRkZWRPYmplY3QoKTsKIAotICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOwogCiAgICAgZW51bSBQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiB7CiAgICAgICAgIFBs
dWdpbk1pc3NpbmcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJGaWVs
ZHNldDo6UmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZpZWxkc2V0OjpSZW5kZXJGaWVs
ZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlckZpZWxkc2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGVudW0gRmluZExlZ2VuZE9wdGlvbiB7IEln
bm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CiAg
ICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKEZpbmRMZWdlbmRPcHRpb24gPSBJZ25vcmVGbG9hdGlu
Z09yT3V0T2ZGbG93KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hh
cnMgPSAzODsKICNlbmRpZgogY29uc3QgaW50IGJ1dHRvblNoYWRvd0hlaWdodCA9IDI7CiAKLVJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhp
bnB1dCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVkRmlsZXMoaW5w
dXQuY2FuUmVjZWl2ZURyb3BwZWRGaWxlcygpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlckZpbGVVcGxvYWRDb250cm9sIGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0
RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZpbGVV
cGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJGaWxlVXBsb2FkQ29udHJvbCgpOwogCiAgICAgU3RyaW5nIGJ1dHRvblZhbHVl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0
IFJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRpb24gewogfTsKIAogCi1SZW5kZXJGbGV4aWJsZUJv
eDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2so
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0b3IoKnRoaXMp
CiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKQEAgLTc0LDcg
Kzc0LDcgQEAgUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZQogICAgIHNl
dENoaWxkcmVuSW5saW5lKGZhbHNlKTsgLy8gQWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJs
b2NrLWxldmVsLgogfQogCi1SZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhpcykKICAgICAsIG1fbnVtYmVyT2ZJ
bkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRmxleGlibGVC
b3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckZsZXhpYmxlQm94
KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJGbGV4
aWJsZUJveChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlckZsZXhpYmxlQm94KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJGbGV4
aWJsZUJveChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckZs
ZXhpYmxlQm94KCk7CiAKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3Vt
ZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fcHJldmlvdXNSZWdpb25Db3VudCgwKQogICAgICwgbV9hdXRvTG9naWNh
bEhlaWdodFJlZ2lvbnNDb3VudCgwKQpAQCAtNjksMTggKzY5LDE4IEBAIFJlbmRlckZsb3dUaHJl
YWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW0KICAgICBzZXRGbG93VGhyZWFkU3RhdGUoSW5zaWRl
T3V0T2ZGbG93VGhyZWFkKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlKQorUmVuZGVyU3R5bGUgUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxl
KFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOwotICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7
Ci0gICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwotICAgIG5ld1N0eWxlLT5zZXRQb3Np
dGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKLSAgICBuZXdTdHlsZS0+c2V0WkluZGV4KDApOwotICAg
IG5ld1N0eWxlLT5zZXRMZWZ0KExlbmd0aCgwLCBGaXhlZCkpOwotICAgIG5ld1N0eWxlLT5zZXRU
b3AoTGVuZ3RoKDAsIEZpeGVkKSk7Ci0gICAgbmV3U3R5bGUtPnNldFdpZHRoKExlbmd0aCgxMDAs
IFBlcmNlbnQpKTsKLSAgICBuZXdTdHlsZS0+c2V0SGVpZ2h0KExlbmd0aCgxMDAsIFBlcmNlbnQp
KTsKLSAgICBuZXdTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7CisgICAgbmV3
U3R5bGUuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOworICAgIG5ld1N0eWxlLnNldERpc3BsYXko
QkxPQ0spOworICAgIG5ld1N0eWxlLnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOworICAg
IG5ld1N0eWxlLnNldFpJbmRleCgwKTsKKyAgICBuZXdTdHlsZS5zZXRMZWZ0KExlbmd0aCgwLCBG
aXhlZCkpOworICAgIG5ld1N0eWxlLnNldFRvcChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBuZXdT
dHlsZS5zZXRXaWR0aChMZW5ndGgoMTAwLCBQZXJjZW50KSk7CisgICAgbmV3U3R5bGUuc2V0SGVp
Z2h0KExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKKyAgICBuZXdTdHlsZS5mb250Q2FzY2FkZSgpLnVw
ZGF0ZShudWxscHRyKTsKICAgICByZXR1cm4gbmV3U3R5bGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBkZXNj
ZW5kYW50IGJveCdzIGxheW91dCBpcyBmaW5pc2hlZCBhbmQgaXQgaGFzIGJlZW4gcG9zaXRpb25l
ZCB3aXRoaW4gaXRzIGNvbnRhaW5lci4KICAgICB2aXJ0dWFsIHZvaWQgZmxvd1RocmVhZERlc2Nl
bmRhbnRCb3hMYWlkT3V0KFJlbmRlckJveCopIHsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckZsb3dUaHJl
YWQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJG
bG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJGbG93VGhy
ZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4odGhpcyk7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWU6
OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1l
bnQmIGZyYW1lLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGZy
YW1lLCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBI
VE1MRnJhbWVFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGcmFtZUJhc2UgewogcHVibGljOgotICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZShIVE1MRnJh
bWVFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBIVE1MRnJhbWVFbGVtZW50JiBmcmFt
ZUVsZW1lbnQoKSBjb25zdDsKICAgICBGcmFtZUVkZ2VJbmZvIGVkZ2VJbmZvKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAkocmV2
aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50
QmFzZSYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNlJiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFJlbmRlclZpZXc7CiAvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJGcmFtZSBhbmQgUmVuZGVySUZy
YW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJhc2UmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxl
bWVudEJhc2UmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHVibGljOgogICAgIEZyYW1lVmlldyogY2hp
bGRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihSZW5kZXJXaWRnZXQ6
OndpZGdldCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxG
cmFtZVNldEVsZW1lbnQmIGZyYW1lU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQm
IGZyYW1lU2V0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZyYW1lU2V0
LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faXNSZXNpemluZyhmYWxzZSkKICAgICAsIG1f
aXNDaGlsZFJlc2l6aW5nKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFJlbmRlckZyYW1lU2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNl
dEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGcmFtZVNldCgp
OwogCiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudCYgZnJhbWVTZXRFbGVtZW50KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xk
ZXIoUmVuZGVyRnVsbFNjcmVlbiYgb3duZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCisgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3JlZW4m
IG93bmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhv
d25lci5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSkKICAgICAgICAgLCBtX293bmVyKG93bmVy
KSAKICAgICB7CkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9s
ZGVyOjp3aWxsQmUKICAgICBSZW5kZXJCbG9ja0Zsb3c6OndpbGxCZURlc3Ryb3llZCgpOwogfQog
Ci1SZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZ1bGxTY3JlZW46OlJl
bmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyRmxleGlibGVCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwg
bV9wbGFjZWhvbGRlcigwKQogewpAQCAtNzgsMjggKzc4LDI4IEBAIHZvaWQgUmVuZGVyRnVsbFNj
cmVlbjo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJGbGV4aWJsZUJveDo6d2lsbEJlRGVz
dHJveWVkKCk7CiB9CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0
ZUZ1bGxTY3JlZW5TdHlsZSgpCitzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlRnVsbFNjcmVlblN0
eWxlKCkKIHsKLSAgICBhdXRvIGZ1bGxzY3JlZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVE
ZWZhdWx0U3R5bGUoKTsKKyAgICBhdXRvIGZ1bGxzY3JlZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKIAogICAgIC8vIENyZWF0ZSBhIHN0YWNraW5nIGNvbnRleHQ6Ci0gICAgZnVsbHNj
cmVlblN0eWxlLT5zZXRaSW5kZXgoSU5UX01BWCk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldFpJ
bmRleChJTlRfTUFYKTsKIAotICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KHsgfSk7Ci0gICAgZnVsbHNjcmVlblN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRy
KTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKHsgfSk7CisgICAgZnVs
bHNjcmVlblN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIpOwogCi0gICAgZnVsbHNj
cmVlblN0eWxlLT5zZXREaXNwbGF5KEZMRVgpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS0+c2V0SnVz
dGlmeUNvbnRlbnRQb3NpdGlvbihDb250ZW50UG9zaXRpb25DZW50ZXIpOwotICAgIGZ1bGxzY3Jl
ZW5TdHlsZS0+c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkNlbnRlcik7Ci0gICAg
ZnVsbHNjcmVlblN0eWxlLT5zZXRGbGV4RGlyZWN0aW9uKEZsb3dDb2x1bW4pOworICAgIGZ1bGxz
Y3JlZW5TdHlsZS5zZXREaXNwbGF5KEZMRVgpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRKdXN0
aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbkNlbnRlcik7CisgICAgZnVsbHNjcmVl
blN0eWxlLnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50ZXIpOworICAgIGZ1
bGxzY3JlZW5TdHlsZS5zZXRGbGV4RGlyZWN0aW9uKEZsb3dDb2x1bW4pOwogICAgIAotICAgIGZ1
bGxzY3JlZW5TdHlsZS0+c2V0UG9zaXRpb24oRml4ZWRQb3NpdGlvbik7Ci0gICAgZnVsbHNjcmVl
blN0eWxlLT5zZXRXaWR0aChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldEhlaWdodChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKLSAgICBmdWxsc2NyZWVu
U3R5bGUtPnNldExlZnQoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7Ci0gICAgZnVsbHNjcmVl
blN0eWxlLT5zZXRUb3AoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgZnVsbHNjcmVl
blN0eWxlLnNldFBvc2l0aW9uKEZpeGVkUG9zaXRpb24pOworICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXRXaWR0aChMZW5ndGgoMTAwLjAsIFBlcmNlbnQpKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0
SGVpZ2h0KExlbmd0aCgxMDAuMCwgUGVyY2VudCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRM
ZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCkpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRU
b3AoTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgCi0gICAgZnVsbHNjcmVlblN0eWxl
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUu
c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICByZXR1cm4gZnVsbHNjcmVl
blN0eWxlOwogfQpAQCAtMTkzLDExICsxOTMsMTEgQEAgdm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpj
cmVhdGVQbGFjZWhvbGRlcgogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChmcmFtZVJl
Y3QuaGVpZ2h0KCksIEZpeGVkKSk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlcikgewotICAgICAg
ICBtX3BsYWNlaG9sZGVyLT5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIG1fcGxh
Y2Vob2xkZXItPnNldFN0eWxlKFdURk1vdmUoKnN0eWxlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3BsYWNlaG9sZGVyID0gbmV3IFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRl
cigqdGhpcywgV1RGTW92ZShzdHlsZSkpOworICAgIG1fcGxhY2Vob2xkZXIgPSBuZXcgUmVuZGVy
RnVsbFNjcmVlblBsYWNlaG9sZGVyKCp0aGlzLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgIG1fcGxh
Y2Vob2xkZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGlmIChwYXJlbnQoKSkgewogICAgICAg
ICBwYXJlbnQoKS0+YWRkQ2hpbGQobV9wbGFjZWhvbGRlciwgdGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJGdWxsU2NyZWVuIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJGdWxsU2NyZWVuIjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRGcmVlCiAgICAgICAgIGZyZWVTcGFjZUZvclJv
d3MgPSBmcmVlU3BhY2U7CiB9CiAKLVJlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxlbWVudCYgZWxl
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckdyaWQ6OlJl
bmRlckdyaWQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJh
dG9yKCp0aGlzKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGVudW0gR3JpZEF4aXNQb3NpdGlvbiB7
R3JpZEF4aXNTdGFydCwgR3IKIAogY2xhc3MgUmVuZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyR3JpZChFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyR3JpZChFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyR3JpZCgpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJI
VE1MQ2FudmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckhUTUxDYW52
YXM6OlJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1M
Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGVsZW1lbnQuc2l6
ZSgpKQogewogICAgIC8vIEFjdHVhbCBzaXplIGlzIG5vdCBrbm93biB5ZXQsIHJlcG9ydCB0aGUg
ZGVmYXVsdCBpbnRyaW5zaWMgc2l6ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVySFRNTENhbnZhcyBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySFRNTENh
bnZhcyhIVE1MQ2FudmFzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
IAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgCi1SZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1M
SUZyYW1lRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRl
clZpZXc7CiAKIGNsYXNzIFJlbmRlcklGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGcmFtZUJh
c2UgewogcHVibGljOgotICAgIFJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgSFRNTElGcmFtZUVsZW1lbnQmIGlmcmFtZUVs
ZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1SZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29u
c3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQorUmVuZGVySW1hZ2U6OlJlbmRlckltYWdl
KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxl
SW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJl
cGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdl
UmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0KGZhbHNlKQpAQCAt
MTM1LDcgKzEzNSw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW4K
ICAgICAgICAgbV9oYXNTaGFkb3dDb250cm9scyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQpLmhhc1NoYWRvd0NvbnRyb2xzKCk7CiB9CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJ
bWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRT
aXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVG
b3JBbHRUZXh0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIGVudW0gSW1hZ2VTaXplQ2hh
bmdlVHlwZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9IDEuMGYpOwotICAg
IFJlbmRlckltYWdlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgU3R5
bGVJbWFnZSogPSBudWxscHRyKTsKKyAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9IDEuMGYpOworICAgIFJl
bmRlckltYWdlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgU3R5bGVJbWFnZSogPSBudWxscHRy
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZSgpOwogCiAgICAgUmVuZGVySW1hZ2VSZXNvdXJj
ZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTMgKzUyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
SW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGls
ZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
SW5saW5lOjpSZW5kZXJJbmxpbmUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
LCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwpAQCAt
MTU4LDggKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlT2ZBbm9ueW1vdXNCbG9ja0MK
ICAgICAgICAgUmVuZGVySW5saW5lKiBjb250aW51YXRpb24gPSBibG9jay5pbmxpbmVFbGVtZW50
Q29udGludWF0aW9uKCk7CiAgICAgICAgIGlmIChvbGRTdHlsZS0+aGFzSW5GbG93UG9zaXRpb24o
KSAmJiBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3IoY29udGludWF0aW9uKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmYmxvY2suc3R5bGUoKSwgQkxPQ0spOwot
ICAgICAgICBibG9ja1N0eWxlLT5zZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7Cisg
ICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGJsb2NrLnN0eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYmxvY2tTdHlsZS5z
ZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAgIGJsb2NrLnNldFN0eWxl
KFdURk1vdmUoYmxvY2tTdHlsZSkpOwogICAgIH0KIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVECiAgICAgICAgIGZvciAoUmVuZGVy
SW5saW5lKiBjdXJyQ29udCA9IGNvbnRpbnVhdGlvbjsgY3VyckNvbnQ7IGN1cnJDb250ID0gY3Vy
ckNvbnQtPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkgewogICAgICAgICAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIG5leHRDb250ID0gY3VyckNvbnQtPmNvbnRpbnVhdGlvbigpOwogICAg
ICAgICAgICAgY3VyckNvbnQtPnNldENvbnRpbnVhdGlvbihudWxscHRyKTsKLSAgICAgICAgICAg
IGN1cnJDb250LT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoJm5ld1N0eWxlKSk7CisgICAg
ICAgICAgICBjdXJyQ29udC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKSk7
CiAgICAgICAgICAgICBjdXJyQ29udC0+c2V0Q29udGludWF0aW9uKG5leHRDb250KTsKICAgICAg
ICAgfQogICAgICAgICAvLyBJZiBhbiBpbmxpbmUncyBpbi1mbG93IHBvc2l0aW9uaW5nIGhhcyBj
aGFuZ2VkIGFuZCBpdCBpcyBwYXJ0IG9mIGFuIGFjdGl2ZSBjb250aW51YXRpb24gYXMgYSBkZXNj
ZW5kYW50IG9mIGFuIGFub255bW91cyBjb250YWluaW5nIGJsb2NrLApAQCAtMzMxLDEyICszMzEs
MTIgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgICAgICAv
LyBpbmxpbmUgaW50byBjb250aW51YXRpb25zLiAgVGhpcyBpbnZvbHZlcyBjcmVhdGluZyBhbiBh
bm9ueW1vdXMgYmxvY2sgYm94IHRvIGhvbGQKICAgICAgICAgLy8gfG5ld0NoaWxkfC4gIFdlIHRo
ZW4gbWFrZSB0aGF0IGJsb2NrIGJveCBhIGNvbnRpbnVhdGlvbiBvZiB0aGlzIGlubGluZS4gIFdl
IHRha2UgYWxsIG9mCiAgICAgICAgIC8vIHRoZSBjaGlsZHJlbiBhZnRlciB8YmVmb3JlQ2hpbGR8
IGFuZCBwdXQgdGhlbSBpbiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0LgotICAgICAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0
eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIGluc2lkZSBhbiBpbmxpbmUgYWZmZWN0ZWQgYnkgaW4tZmxvdyBwb3NpdGlv
bmluZyB0aGUgYmxvY2sgbmVlZHMgdG8gYmUgYWZmZWN0ZWQgYnkgaXQgdG9vLgogICAgICAgICAv
LyBHaXZpbmcgdGhlIGJsb2NrIGEgbGF5ZXIgbGlrZSB0aGlzIGFsbG93cyBpdCB0byBjb2xsZWN0
IHRoZSB4L3kgb2Zmc2V0cyBmcm9tIGlubGluZSBwYXJlbnRzIGxhdGVyLgogICAgICAgICBpZiAo
YXV0byBwb3NpdGlvbmVkQW5jZXN0b3IgPSBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3Io
dGhpcykpCi0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24ocG9zaXRpb25lZEFuY2Vz
dG9yLT5zdHlsZSgpLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgbmV3U3R5bGUuc2V0UG9zaXRp
b24ocG9zaXRpb25lZEFuY2VzdG9yLT5zdHlsZSgpLnBvc2l0aW9uKCkpOwogCiAgICAgICAgIFJl
bmRlckJsb2NrKiBuZXdCb3ggPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIFdURk1v
dmUobmV3U3R5bGUpKTsKICAgICAgICAgbmV3Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpCiAg
CiAgICAgICAgIGlmICghbmV3Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkgewogICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHN1aXRhYmxlIGV4aXN0aW5nIGFub255
bW91cyBpbmxpbmUtYmxvY2suIENyZWF0ZSBhIG5ldyBvbmUuCi0gICAgICAgICAgICBSZW5kZXJC
bG9ja0Zsb3cqIGFub255bW91c0lubGluZUJsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5
bGUoKSwgSU5MSU5FX0JMT0NLKSk7CisgICAgICAgICAgICBSZW5kZXJCbG9ja0Zsb3cqIGFub255
bW91c0lubGluZUJsb2NrID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBJTkxJTkVfQkxP
Q0spKTsKICAgICAgICAgICAgIGFub255bW91c0lubGluZUJsb2NrLT5pbml0aWFsaXplU3R5bGUo
KTsKICAgICAKICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjphZGRDaGlsZChhbm9u
eW1vdXNJbmxpbmVCbG9jaywgYmVmb3JlQ2hpbGQpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
UmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKIAogUmVuZGVyUHRyPFJlbmRlcklu
bGluZT4gUmVuZGVySW5saW5lOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyUHRyPFJlbmRl
cklubGluZT4gY2xvbmVJbmxpbmUgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+KCplbGVt
ZW50KCksIFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSkpOworICAgIFJlbmRlclB0cjxSZW5k
ZXJJbmxpbmU+IGNsb25lSW5saW5lID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPigqZWxl
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUoKSkpOwogICAgIGNsb25lSW5saW5lLT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICBjbG9uZUlubGluZS0+c2V0Rmxvd1RocmVhZFN0YXRlKGZs
b3dUaHJlYWRTdGF0ZSgpKTsKICAgICBjbG9uZUlubGluZS0+c2V0SGFzT3V0bGluZUF1dG9BbmNl
c3RvcihoYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBA
IGNsYXNzIFJlbmRlclJlZ2lvbjsKIAogY2xhc3MgUmVuZGVySW5saW5lIDogcHVibGljIFJlbmRl
ckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbmxpbmUoRWxlbWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlcklubGluZShEb2N1bWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklubGluZShFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVySW5saW5lKERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAKICAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nzk3
LDExICs2Nzk3LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWwK
ICAgICB9CiAKICAgICBpZiAoIW1fc2Nyb2xsQ29ybmVyKSB7Ci0gICAgICAgIG1fc2Nyb2xsQ29y
bmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1
bWVudCgpLCBXVEZNb3ZlKGNvcm5lcikpOworICAgICAgICBtX3Njcm9sbENvcm5lciA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgV1RG
TW92ZSgqY29ybmVyKSk7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRQYXJlbnQoJnJlbmRl
cmVyKCkpOwogICAgICAgICBtX3Njcm9sbENvcm5lci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAg
fSBlbHNlCi0gICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRTdHlsZShXVEZNb3ZlKGNvcm5lcikp
OworICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0U3R5bGUoV1RGTW92ZSgqY29ybmVyKSk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCkBAIC02ODE1LDExICs2
ODE1LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCiAgICAgfQog
CiAgICAgaWYgKCFtX3Jlc2l6ZXIpIHsKLSAgICAgICAgbV9yZXNpemVyID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU2Nyb2xsYmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1bWVudCgpLCBXVEZNb3ZlKHJl
c2l6ZXIpKTsKKyAgICAgICAgbV9yZXNpemVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2Nyb2xs
YmFyUGFydD4ocmVuZGVyZXIoKS5kb2N1bWVudCgpLCBXVEZNb3ZlKCpyZXNpemVyKSk7CiAgICAg
ICAgIG1fcmVzaXplci0+c2V0UGFyZW50KCZyZW5kZXJlcigpKTsKICAgICAgICAgbV9yZXNpemVy
LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9yZXNpemVyLT5zZXRT
dHlsZShXVEZNb3ZlKHJlc2l6ZXIpKTsKKyAgICAgICAgbV9yZXNpemVyLT5zZXRTdHlsZShXVEZN
b3ZlKCpyZXNpemVyKSk7CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6cmVmbGVjdGlv
bkxheWVyKCkgY29uc3QKQEAgLTY4NDQsMTAgKzY4NDQsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cmVtb3ZlUmVmbGVjdGlvbigpCiAgICAgbV9yZWZsZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlvblN0
eWxlKCkKK1JlbmRlclN0eWxlIFJlbmRlckxheWVyOjpjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKQog
ewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgbmV3U3R5
bGUtPmluaGVyaXRGcm9tKCZyZW5kZXJlcigpLnN0eWxlKCkpOworICAgIG5ld1N0eWxlLmluaGVy
aXRGcm9tKCZyZW5kZXJlcigpLnN0eWxlKCkpOwogICAgIAogICAgIC8vIE1hcCBpbiBvdXIgdHJh
bnNmb3JtLgogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOwpAQCAtNjg3MywxMCAr
Njg3MywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckxheWVyCiAgICAg
ICAgICAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5vZmZzZXQo
KSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBuZXdTdHlsZS0+c2V0VHJhbnNmb3JtKHRyYW5z
Zm9ybSk7CisgICAgbmV3U3R5bGUuc2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAKICAgICAvLyBN
YXAgaW4gb3VyIG1hc2suCi0gICAgbmV3U3R5bGUtPnNldE1hc2tCb3hJbWFnZShyZW5kZXJlcigp
LnN0eWxlKCkuYm94UmVmbGVjdCgpLT5tYXNrKCkpOworICAgIG5ld1N0eWxlLnNldE1hc2tCb3hJ
bWFnZShyZW5kZXJlcigpLnN0eWxlKCkuYm94UmVmbGVjdCgpLT5tYXNrKCkpOwogCiAgICAgcmV0
dXJuIG5ld1N0eWxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjQsNyArOTI0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZVJlZmxlY3Rpb24oKTsKICAgICB2b2lkIHJlbW92ZVJlZmxlY3Rpb24oKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7
CisgICAgUmVuZGVyU3R5bGUgY3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7CiAgICAgYm9vbCBwYWlu
dGluZ0luc2lkZVJlZmxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhaW50aW5nSW5zaWRlUmVm
bGVjdGlvbjsgfQogICAgIHZvaWQgc2V0UGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKGJvb2wgYikg
eyBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGI7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAgYm9vbCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpzX2hhZExheWVyIAogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNlOwogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpz
X2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7CiAKLVJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQorUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAg
OiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKLVJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCitS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50JiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdz
KQogICAgIDogUmVuZGVyRWxlbWVudChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBl
RmxhZ3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgQmFzZVR5cGVGbGFncyk7Ci0gICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxP
YmplY3QoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIHZv
aWQgY3JlYXRlTGF5ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIHN0YXRpYyB2b2lkIGVuc3VyZUxpbmVCb3hlcyhjb25zdCBSZW5kZXIKICAgICBkb3duY2Fz
dDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSkuZW5zdXJlTGluZUJveGVzKCk7
CiB9CiAKLVJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGluZUJyZWFr
OjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxscHRyKQogICAgICwgbV9jYWNoZWRMaW5l
SGVpZ2h0KGludmFsaWRMaW5lSGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIGNsYXNzIFBvc2l0aW9uOwogCiBjbGFzcyBSZW5kZXJMaW5lQnJlYWsgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlckxpbmVCcmVhayhI
VE1MRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxp
bmVCcmVhayhIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ckxpbmVCcmVhaygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVzIGhlcmUga2VlcCByZW5kZXIg
dHJlZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgaW50IGRlZmF1bHRTaXplID0gNDsKIC8vIHdpZGdldCwg
YnV0IEknbSBub3Qgc3VyZSB0aGlzIGlzIHJpZ2h0IGZvciB0aGUgbmV3IGNvbnRyb2wuCiBjb25z
dCBpbnQgYmFzZWxpbmVBZGp1c3RtZW50ID0gNzsKIAotUmVuZGVyTGlzdEJveDo6UmVuZGVyTGlz
dEJveChIVE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX29wdGlvbnNDaGFuZ2VkKHRydWUpCiAg
ICAgLCBtX3Njcm9sbFRvUmV2ZWFsU2VsZWN0aW9uQWZ0ZXJMYXlvdXQoZmFsc2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlckxpc3RCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2Nyb2xs
YWJsZUFyZWEgewogcHVibGljOgotICAgIFJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0Qm94KEhUTUxT
ZWxlY3RFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdEJv
eCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVsZW1lbnQoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0
SXRlbShFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX21hcmtlcihudWxscHRyKQogICAgICwgbV9oYXNFeHBsaWNpdFZhbHVl
KGZhbHNlKQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpzdHlsZURpZENo
YW5nZShTdHlsCiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAg
ICAvLyBUaGUgbWFya2VyIGFsd2F5cyBpbmhlcml0cyBmcm9tIHRoZSBsaXN0IGl0ZW0sIHJlZ2Fy
ZGxlc3Mgb2Ygd2hlcmUgaXQgbWlnaHQgZW5kCiAgICAgLy8gdXAgKGUuZy4sIGluIHNvbWUgZGVl
cGx5IG5lc3RlZCBsaW5lIGJveCkuIFNlZSBDU1MzIHNwZWMuCi0gICAgbmV3U3R5bGUtPmluaGVy
aXRGcm9tKCZzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS5pbmhlcml0RnJvbSgmc3R5bGUoKSk7CiAg
ICAgaWYgKCFtX21hcmtlcikgewogICAgICAgICBtX21hcmtlciA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlckxpc3RNYXJrZXI+KCp0aGlzLCBXVEZNb3ZlKG5ld1N0eWxlKSkubGVha1B0cigpOwogICAg
ICAgICBtX21hcmtlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgUmVuZGVyTGlzdE1hcmtlcjsKIAogY2xhc3MgUmVuZGVyTGlzdEl0ZW0g
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0
SXRlbShFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
TGlzdEl0ZW0oRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxp
c3RJdGVtKCk7CiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RT
dHlsZVR5cGUgdHlwCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotUmVuZGVy
TGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlzdEl0ZW0sIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0TWFya2VyOjpSZW5k
ZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckJveChsaXN0SXRlbS5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fbGlzdEl0ZW0obGlzdEl0ZW0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlLCBpbgog
Ly8gVGhlIFJlbmRlckxpc3RNYXJrZXIgYWx3YXlzIGhhcyB0byBiZSBhIGNoaWxkIG9mIGEgUmVu
ZGVyTGlzdEl0ZW0uCiBjbGFzcyBSZW5kZXJMaXN0TWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRl
ckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVy
TGlzdEl0ZW0mLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaXN0TWFya2Vy
KCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEo
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckltYWdlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIHNldEhhc1NoYWRvd0Nv
bnRyb2xzKHRydWUpOwogfQogCi1SZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
SW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVk
aWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBJbnRTaXplJiBp
bnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVySW1hZ2UoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlhIDogcHVibGlj
IFJlbmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWVkaWEoSFRNTE1l
ZGlhRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFNpemUm
IGludHJpbnNpY1NpemUpOworICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJiwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVuZGVy
TWVkaWEoKTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1lZGlh
Vm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29u
dGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmwKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGli
bGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkBAIC04MSw3ICs4MSw3IEBAIHZv
aWQgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIKIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKIAotUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVy
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
bGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJl
bmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZs
ZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lcihFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBzaXplX3Qgc2VsZWN0ZWRPcHRpb25D
b3VudChjb25zdCAKIH0KICNlbmRpZgogCi1SZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3Qo
SFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dChudWxscHRyKQogICAg
ICwgbV9pbm5lckJsb2NrKG51bGxwdHIpCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6c2V0VGV4dEZyb21PcHRpb24oaQogICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwog
ICAgICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7Ci0gICAg
ICAgICAgICBtX29wdGlvblN0eWxlID0gc3R5bGUgPyBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUp
IDogbnVsbHB0cjsKKyAgICAgICAgICAgIG1fb3B0aW9uU3R5bGUgPSBzdHlsZSA/IFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqc3R5bGUpIDogbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5k
ZXJNZW51TGlzdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCwgcHJpdmF0ZSBQb3B1
cE1lbnVDbGllbnQgewogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNZW51TGlz
dChIVE1MU2VsZWN0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ck1lbnVMaXN0KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxNZXRlckVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlck1ldGVyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlck1ldGVyKCk7CiAKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRl
ckVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGJvb2wgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpnU2hpZnRpbmdTcGFubmVyID0g
ZmFsc2U7CiAKLVJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9sYXN0
U2V0V29ya2VkT24obnVsbHB0cikKICAgICAsIG1fY29sdW1uQ291bnQoMSkKQEAgLTMzOCw3ICsz
MzgsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhCiAgICAgLy8g
TmVlZCB0byBjcmVhdGUgYSBuZXcgY29sdW1uIHNldCB3aGVuIHRoZXJlJ3Mgbm8gc2V0IGFscmVh
ZHkgY3JlYXRlZC4gV2UgYWxzbyBhbHdheXMgaW5zZXJ0CiAgICAgLy8gYW5vdGhlciBjb2x1bW4g
c2V0IGFmdGVyIGEgc3Bhbm5lci4gRXZlbiBpZiBpdCB0dXJucyBvdXQgdGhhdCB0aGVyZSBhcmUg
bm8gcmVuZGVyZXJzCiAgICAgLy8gZm9sbG93aW5nIHRoZSBzcGFubmVyLCB0aGVyZSBtYXkgYmUg
Ym90dG9tIG1hcmdpbnMgdGhlcmUsIHdoaWNoIHRha2UgdXAgc3BhY2UuCi0gICAgUmVuZGVyTXVs
dGlDb2x1bW5TZXQqIG5ld1NldCA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtblNldCgqdGhpcywgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJm11bHRpY29sQ29udGFp
bmVyLT5zdHlsZSgpLCBCTE9DSykpOworICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KiBuZXdTZXQg
PSBuZXcgUmVuZGVyTXVsdGlDb2x1bW5TZXQoKnRoaXMsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBCTE9DSykp
OwogICAgIG5ld1NldC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgbXVsdGljb2xDb250YWluZXIt
PlJlbmRlckJsb2NrOjphZGRDaGlsZChuZXdTZXQsIGluc2VydEJlZm9yZU11bHRpY29sQ2hpbGQp
OwogICAgIGludmFsaWRhdGVSZWdpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZQogCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxvd1RocmVhZCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJik7CiAgICAgflJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogCiAgICAg
UmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxv
d1RocmVhZCYgZmxvd1RocmVhZCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhy
ZWFkJiBmbG93VGhyZWFkLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyUmVnaW9u
U2V0KGZsb3dUaHJlYWQuZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSksIGZsb3dUaHJlYWQpCiAg
ICAgLCBtX2NvbXB1dGVkQ29sdW1uQ291bnQoMSkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5XaWR0
aCgwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGNvbWUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc3Bhbi4KIGNs
YXNzIFJlbmRlck11bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJl
bmRlckZsb3dUaHJlYWQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyog
bXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogbXVs
dGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFu
bmVyUGxhY2Vob2xkZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXI6OmNyZWF0ZUFub255bW91cyhSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQsIFJlbmRlckJveCogc3Bhbm5lciwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUoUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50U3R5bGUsIEJMT0NLKSk7Ci0g
ICAgbmV3U3R5bGUtPnNldENsZWFyKENCT1RIKTsgLy8gV2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4g
dGhlIHJvdyBwcmVjZWRpbmcgdGhlIHNwYW5uZXIgdG8gY29udGludWUgb24gdGhlIG90aGVyIHNp
ZGUuCisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KCpwYXJlbnRTdHlsZSwgQkxPQ0spOworICAgIG5ld1N0eWxlLnNldENsZWFy
KENCT1RIKTsgLy8gV2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4gdGhlIHJvdyBwcmVjZWRpbmcgdGhl
IHNwYW5uZXIgdG8gY29udGludWUgb24gdGhlIG90aGVyIHNpZGUuCiAgICAgYXV0byBwbGFjZWhv
bGRlciA9IG5ldyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihmbG93VGhyZWFk
LCBzcGFubmVyLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgcGxhY2Vob2xkZXItPmluaXRpYWxp
emVTdHlsZSgpOwogICAgIHJldHVybiBwbGFjZWhvbGRlcjsKIH0KIAotUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
KFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFu
bmVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
KFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFu
bmVyLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZsb3dUaHJlYWQtPmRv
Y3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiAgICAg
LCBtX3NwYW5uZXIoc3Bhbm5lcikKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJl
YWQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gqIHNwYW5uZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5l
ciwgUmVuZGVyU3R5bGUmJik7CiAgICAgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJSZWdpb24oZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBudWxscHRyKQogICAgICwg
bV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1faGFzQXV0b0xvZ2ljYWxIZWln
aHQoZmFsc2UpCkBAIC01NywxMyArNTcsMTMgQEAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6On5S
ZW5kZXJOYW1lZEZsbwogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUpCitSZW5kZXJTdHlsZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewotICAgIGF1dG8gc3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcGFyZW50U3R5bGUsIEJM
T0NLKTsKKyAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkocGFyZW50U3R5bGUsIEJMT0NLKTsKIAotICAgIHN0eWxlLT5zZXRGbG93VGhy
ZWFkKHBhcmVudFN0eWxlLmZsb3dUaHJlYWQoKSk7Ci0gICAgc3R5bGUtPnNldFJlZ2lvblRocmVh
ZChwYXJlbnRTdHlsZS5yZWdpb25UaHJlYWQoKSk7Ci0gICAgc3R5bGUtPnNldFJlZ2lvbkZyYWdt
ZW50KHBhcmVudFN0eWxlLnJlZ2lvbkZyYWdtZW50KCkpOworICAgIHN0eWxlLnNldEZsb3dUaHJl
YWQocGFyZW50U3R5bGUuZmxvd1RocmVhZCgpKTsKKyAgICBzdHlsZS5zZXRSZWdpb25UaHJlYWQo
cGFyZW50U3R5bGUucmVnaW9uVGhyZWFkKCkpOworICAgIHN0eWxlLnNldFJlZ2lvbkZyYWdtZW50
KHBhcmVudFN0eWxlLnJlZ2lvbkZyYWdtZW50KCkpOwogCiAgICAgcmV0dXJuIHN0eWxlOwogfQpA
QCAtMzY2LDEzICszNjYsMTMgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0
ZUNoaQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNoaWxkU3R5bGVJblJl
Z2lvbjsKICAgICAgICAgYm9vbCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IGZhbHNlOwogICAg
ICAgICBpZiAoaXQgIT0gbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5lbmQoKSkgewotICAgICAg
ICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKGl0LT52YWx1ZS5z
dHlsZS5nZXQoKSk7CisgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7CiAgICAgICAgICAgICBvYmplY3RSZWdpb25T
dHlsZUNhY2hlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2hp
bGQuaXNBbm9ueW1vdXMoKSB8fCBjaGlsZC5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKLSAg
ICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyZXIuc3R5bGUoKSwgY2hpbGQuc3R5bGUoKS5k
aXNwbGF5KCkpOworICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9ICBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclN0eWxlPihSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShyZW5kZXJlci5zdHlsZSgpLCBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSkpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKQotICAgICAgICAgICAg
ICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZSgmcmVuZGVyZXIuc3R5
bGUoKSk7CisgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6
OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHlsZUluUmVnaW9uKGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSwgcmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgIH0KQEAg
LTM4OCw5ICszODgsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRPYmplY3RT
CiB7CiAgICAgQVNTRVJUKG9iamVjdC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZSgmb2JqZWN0LT5zdHlsZSgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
b2JqZWN0LT5zdHlsZSgpKTsKICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkpCi0g
ICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwo
V1RGTW92ZShzdHlsZUluUmVnaW9uKSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpvYmplY3QpLnNldFN0eWxlSW50ZXJuYWwoV1RGTW92ZSgqc3R5bGVJblJlZ2lvbikpOwogCiAg
ICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0Pigqb2JqZWN0KSAmJiAhb2JqZWN0LT5oYXNC
b3hEZWNvcmF0aW9ucygpKSB7CiAgICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMgPSBpczxS
ZW5kZXJUYWJsZUNlbGw+KCpvYmplY3QpCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uTwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IG9iamVjdFN0eWxlSW5SZWdpb247CiAgICAgICAgIGJvb2wgb2JqZWN0UmVnaW9u
U3R5bGVDYWNoZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKGl0ICE9IG1fcmVuZGVyT2JqZWN0UmVn
aW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBSZW5k
ZXJTdHlsZTo6Y2xvbmUoaXQtPnZhbHVlLnN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIG9iamVj
dFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7
CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmNhY2hlZCk7CiAgICAgICAgICAgICBvYmpl
Y3RSZWdpb25TdHlsZUNhY2hlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNDYzLDggKzQ2
Myw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWcKICAgICBSZW5k
ZXJPYmplY3RSZWdpb25TdHlsZU1hcCB0ZW1wOwogICAgIGZvciAoYXV0byYgb2JqZWN0UGFpciA6
IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG9iamVjdFBhaXIua2V5KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RSZWdpb25TdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZSgmb2JqZWN0LT5zdHlsZSgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKG9iamVj
dFBhaXIudmFsdWUuc3R5bGUuZ2V0KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IG9iamVjdFJlZ2lvblN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKG9iamVjdC0+
c3R5bGUoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3Jp
Z2luYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqb2JqZWN0UGFpci52YWx1ZS5zdHls
ZSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0eWxlID0gb2JqZWN0UGFpci52
YWx1ZS5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSkgewpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWcK
ICAgICAgICAgICAgIHRlbXAuc2V0KG9iamVjdCwgV1RGTW92ZShzdHlsZUluZm8pKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkpCi0gICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKFdURk1v
dmUob2JqZWN0T3JpZ2luYWxTdHlsZSkpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbChXVEZNb3ZlKCpvYmplY3RPcmlnaW5hbFN0
eWxlKSk7CiAgICAgfQogCiAgICAgbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5zd2FwKHRlbXAp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDks
MTAgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvbiB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAg
IHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRGbG93KQogICAgIDog
UmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2hhc1Jl
Z2lvbnNXaXRoU3R5bGluZyhmYWxzZSkKICAgICAsIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hh
bmdlRXZlbnQoZmFsc2UpCkBAIC05Miw4ICs5Miw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1cGRhdGVXcml0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGZpcnN0IHJl
Z2lvbiBkZWZpbmVzIHRoZSBwcmluY2lwYWwgd3JpdGluZyBtb2RlIGZvciB0aGUgZW50aXJlIGZs
b3cuCi0gICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSk7Ci0g
ICAgbmV3U3R5bGUtPnNldFdyaXRpbmdNb2RlKGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkud3JpdGlu
Z01vZGUoKSk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSgp
KTsKKyAgICBuZXdTdHlsZS5zZXRXcml0aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHlsZSgpLndy
aXRpbmdNb2RlKCkpOwogICAgIHNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0MKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93
VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25T
dWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJik7
CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVm
PFdlYktpdE5hbWVkRmxvdz4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93VGhyZWFk
KCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQcm9ncmVzczo6UmVu
ZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3Bv
c2l0aW9uKEhUTUxQcm9ncmVzc0VsZW1lbnQ6OkludmFsaWRQb3NpdGlvbikKICAgICAsIG1fYW5p
bWF0aW9uU3RhcnRUaW1lKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclByb2dyZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3Mg
SFRNTFByb2dyZXNzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyUHJvZ3Jlc3MgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJQcm9ncmVzcyhIVE1MRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclByb2dyZXNz
KEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUHJvZ3Jl
c3MoKTsKIAogICAgIGRvdWJsZSBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZShE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFF1
b3RlVHlwZSBxdW90ZSkKK1JlbmRlclF1b3RlOjpSZW5kZXJRdW90ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFF1b3RlVHlwZSBxdW90ZSkKICAgICA6IFJlbmRlcklu
bGluZShkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3R5cGUocXVvdGUpCiAgICAg
LCBtX3RleHQoZW1wdHlTdHJpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJRdW90ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJRdW90ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUXVvdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclF1b3RlIGZpbmFsIDogcHVibGljIFJlbmRlcklubGlu
ZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBRdW90ZVR5cGUpOworICAgIFJlbmRlclF1b3RlKERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJiwgUXVvdGVUeXBlKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJRdW90ZSgpOwogCiAg
ICAgdm9pZCBhdHRhY2hRdW90ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFk
KG51bGxwdHIpCkBAIC01Niw3ICs1Niw3IEBAIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVs
ZW1lbnQmIGVsZW0KIHsKIH0KIAotUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhy
ZWFkKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAg
ICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJl
YWQobnVsbHB0cikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0ZvckJveEluUmVnaW9uKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCosIGNvbnN0IFJlbmRlckJveCosIGZsb2F0LCBmbG9hdCkgeyB9CiAKIHByb3RlY3RlZDoK
LSAgICBSZW5kZXJSZWdpb24oRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IFJlbmRlckZsb3dUaHJlYWQqKTsKLSAgICBSZW5kZXJSZWdpb24oRG9jdW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAgUmVuZGVyUmVn
aW9uKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAgUmVu
ZGVyUmVnaW9uKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyRmxvd1RocmVhZCopOwog
CiAgICAgdm9pZCBlbnN1cmVPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZWZQdHI8
UmVuZGVyT3ZlcmZsb3c+JiwgYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb25TZXQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvblNldDo6UmVu
ZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvblNl
dDo6UmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkKICAgICA6IFJlbmRlclJlZ2lvbihkb2N1
bWVudCwgV1RGTW92ZShzdHlsZSksICZmbG93VGhyZWFkKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cGFuZFRvRW5jb21wYXNzRmxv
d1RocmVhZENvbnRlbnRzSWZOZWVkZWQoKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclJlZ2lv
blNldChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dU
aHJlYWQmKTsKKyAgICBSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBS
ZW5kZXJGbG93VGhyZWFkJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsRmxvd1RocmVh
ZCgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsMjEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY29uc3QgaW50IGNEZWZhdWx0V2lkdGggPSAzMDA7CiBjb25zdCBpbnQg
Y0RlZmF1bHRIZWlnaHQgPSAxNTA7CiAKLVJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChF
bGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRl
clJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShjRGVmYXVsdFdpZHRoLCBjRGVm
YXVsdEhlaWdodCkKIHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVwbGFj
ZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJS
ZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRy
aW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9CiAK
LVJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNp
Y1NpemUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
ICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRG
bGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVwbGFjZWRMb2dpY2Fs
SGVpZ2h0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNpemUmIGlu
dHJpbnNpY1NpemUpOwotICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CisgICAg
UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlclJlcGxh
Y2VkKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKTsKKyAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0
IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOwogCiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSZXBsaWNhOjpSZW5k
ZXJSZXBsaWNhKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgLy8gVGhpcyBp
cyBhIGhhY2suIFJlcGxpY2FzIGFyZSBzeW50aGV0aWMsIGFuZCBkb24ndCBwaWNrIHVwIHRoZSBh
dHRyaWJ1dGVzIG9mIHRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGljYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyUmVwbGljYSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3gg
ewogcHVibGljOgotICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCiAgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sqIHJ1YnlBZnRl
ckJsb2MKIAogc3RhdGljIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNSdWJ5SW5saW5lQmxv
Y2soUmVuZGVyT2JqZWN0JiBydWJ5KQogewotICAgIFJlbmRlckJsb2NrKiBuZXdCbG9jayA9IG5l
dyBSZW5kZXJCbG9ja0Zsb3cocnVieS5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcnVieS5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAg
ICBSZW5kZXJCbG9jayogbmV3QmxvY2sgPSBuZXcgUmVuZGVyQmxvY2tGbG93KHJ1YnkuZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocnVieS5z
dHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKICAgICBuZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7
CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVuZGVyUnVieVJ1biYgZmluZFJ1YnlSdW4KIAogLy89PT0gcnVieSBhcyBpbmxpbmUgb2Jq
ZWN0ID09PQogCi1SZW5kZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVi
eUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKIH0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFJlbmRlclJ1YnlBc0lubGluZTo6cmVtb3Zl
Q2hpbGQoUmVuCiAKIC8vPT09IHJ1YnkgYXMgYmxvY2sgb2JqZWN0ID09PQogCi1SZW5kZXJSdWJ5
QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJSdWJ5QXNC
bG9jayhFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIDxydWJ5PiB3aGVuIHVzZWQgYXMgJ2Rpc3BsYXk6
aW5saW5lJwogY2xhc3MgUmVuZGVyUnVieUFzSW5saW5lIGZpbmFsIDogcHVibGljIFJlbmRlcklu
bGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0lubGluZSgpOwogCiAg
ICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCkgb3ZlcnJpZGU7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAvLyA8cnVi
eT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5OmJsb2NrJyBvciAnZGlzcGxheTppbmxpbmUtYmxvY2sn
CiBjbGFzcyBSZW5kZXJSdWJ5QXNCbG9jayBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cg
ewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFzQmxvY2soKTsKIAogICAgIEVsZW1l
bnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX2luaXRpYWxPZmZzZXQoMCkKICAgICAsIG1faXNBZnRlckV4cGFuc2lvbih0
cnVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFJlbmRlclJ1YnlSdW47
CiAKIGNsYXNzIFJlbmRlclJ1YnlCYXNlIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CiAgICAgCiAgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAo
YW5vbnltb3VzKSI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
UnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVJ1bi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5UnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLVJlbmRlclJ1YnlSdW46OlJl
bmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9sYXN0Q2hhcmFjdGVyKDApCiAgICAgLCBtX3NlY29u
ZFRvTGFzdENoYXJhY3RlcigwKQpAQCAtMjAzLDggKzIwMyw4IEBAIHZvaWQgUmVuZGVyUnVieVJ1
bjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2IKIAogUmVuZGVyUnVieUJhc2UqIFJlbmRlclJ1YnlSdW46
OmNyZWF0ZVJ1YnlCYXNlKCkgY29uc3QKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJMT0NLKTsKLSAg
ICBuZXdTdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NF
TlRFUj8KKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spOworICAgIG5ld1N0eWxlLnNldFRleHRBbGln
bihDRU5URVIpOyAvLyBGSVhNRTogdXNlIFdFQktJVF9DRU5URVI/CiAgICAgYXV0byByZW5kZXJl
ciA9IG5ldyBSZW5kZXJSdWJ5QmFzZShkb2N1bWVudCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAg
ICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiByZW5kZXJlcjsKQEAg
LTIxMyw3ICsyMTMsNyBAQCBSZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVi
CiBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5UnVuKGNvbnN0
IFJlbmRlck9iamVjdCogcGFyZW50UnVieSkKIHsKICAgICBBU1NFUlQoaXNSdWJ5KHBhcmVudFJ1
YnkpKTsKLSAgICBhdXRvIHJlbmRlcmVyID0gbmV3IFJlbmRlclJ1YnlSdW4ocGFyZW50UnVieS0+
ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
JnBhcmVudFJ1YnktPnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAgIGF1dG8gcmVuZGVyZXIg
PSBuZXcgUmVuZGVyUnVieVJ1bihwYXJlbnRSdWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJ
TkVfQkxPQ0spKTsKICAgICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJu
IHJlbmRlcmVyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlclJ1
YnlUZXh0OwogCiBjbGFzcyBSZW5kZXJSdWJ5UnVuIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
RmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVJ1bihEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5UnVuKCk7CiAKICAgICBib29sIGhhc1J1
YnlUZXh0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQoRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyUnVieVRleHQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5VGV4dChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVRleHQoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlUZXh0KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsOSArMjQ1LDkgQEAgdm9pZCBSZW5k
ZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcgogICAgIH0KIAogICAgIGlmIChhdXRvJiBw
YXJ0UmVuZGVyZXJTbG90ID0gbV9wYXJ0cy5hZGQocGFydFR5cGUsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZSkKLSAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+c2V0U3R5bGUoV1RGTW92ZShwYXJ0
U3R5bGUpKTsKKyAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+c2V0U3R5bGUoV1RGTW92ZSgqcGFy
dFN0eWxlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRSZW5kZXJlclNsb3QgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTY3JvbGxiYXJQYXJ0Pihvd25pbmdSZW5kZXJlcigpLT5kb2N1bWVudCgp
LCBXVEZNb3ZlKHBhcnRTdHlsZSksIHRoaXMsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydFJlbmRl
cmVyU2xvdCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNjcm9sbGJhclBhcnQ+KG93bmluZ1JlbmRl
cmVyKCktPmRvY3VtZW50KCksIFdURk1vdmUoKnBhcnRTdHlsZSksIHRoaXMsIHBhcnRUeXBlKTsK
ICAgICAgICAgcGFydFJlbmRlcmVyU2xvdC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgfQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFy
UGFydChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCitSZW5k
ZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiBkb2N1bWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydCkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fc2Nyb2xsYmFyKHNjcm9sbGJhcikKICAgICAsIG1fcGFydChwYXJ0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclNj
cm9sbGJhcjsKIAogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIFJlbmRlclNjcm9sbGJhciogPSBudWxscHRyLCBT
Y3JvbGxiYXJQYXJ0ID0gTm9QYXJ0KTsKKyAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgUmVuZGVyU2Nyb2xsYmFyKiA9IG51bGxwdHIsIFNjcm9sbGJhclBh
cnQgPSBOb1BhcnQpOwogICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyU2VhcmNo
RmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVy
U2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3NlYXJj
aFBvcHVwKDApCkBAIC0xNzgsOCArMTc4LDggQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6dXBk
YXRlQ2FuY2VsQnV0dAogICAgIGlmIChjdXJTdHlsZS52aXNpYmlsaXR5KCkgPT0gYnV0dG9uVmlz
aWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYW5jZWxCdXR0b25TdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZSgmY3VyU3R5bGUpOwotICAgIGNhbmNlbEJ1dHRvblN0eWxlLT5z
ZXRWaXNpYmlsaXR5KGJ1dHRvblZpc2liaWxpdHkpOworICAgIGF1dG8gY2FuY2VsQnV0dG9uU3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VyU3R5bGUpOworICAgIGNhbmNlbEJ1dHRvblN0eWxl
LnNldFZpc2liaWxpdHkoYnV0dG9uVmlzaWJpbGl0eSk7CiAgICAgY2FuY2VsQnV0dG9uUmVuZGVy
ZXItPnNldFN0eWxlKFdURk1vdmUoY2FuY2VsQnV0dG9uU3R5bGUpKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlclNlYXJjaEZpZWxkIGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZSwgcHJpdmF0ZSBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRl
clNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU2VhcmNoRmllbGQoKTsKIAogICAgIHZvaWQgdXBk
YXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgaW50IFJlbmRlclNsaWRlcjo6
ZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5OwogCi1SZW5kZXJTbGlkZXI6OlJlbmRlclNsaWRlcihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQogewogICAgIC8vIFdlIGFzc3VtZSBSZW5kZXJTbGlkZXIgd29ya3Mg
b25seSB3aXRoIDxpbnB1dCB0eXBlPXJhbmdlPi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBj
bGFzcyBSZW5kZXJTbGlkZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGludCBkZWZhdWx0VHJhY2tMZW5ndGg7CiAKLSAgICBSZW5kZXJTbGlkZXIoSFRN
TElucHV0RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNsaWRlcihIVE1MSW5wdXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyU2xpZGVyKCk7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcg
KzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3Qo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pc1BvdGVudGlhbE1v
dXNlQWN0aXZhdGlvbihmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRl
ZE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJU
YWJsZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hlYWQobnVsbHB0cikK
ICAgICAsIG1fZm9vdChudWxscHRyKQpAQCAtNzIsNyArNzIsNyBAQCBSZW5kZXJUYWJsZTo6UmVu
ZGVyVGFibGUoRWxlbWVudCYgZWxlbWVuCiAgICAgbV9jb2x1bW5Qb3MuZmlsbCgwLCAxKTsKIH0K
IAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhk
b2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2hlYWQobnVsbHB0cikKICAgICAs
IG1fZm9vdChudWxscHRyKQpAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6
bm9kZUF0UG9pbnQoY29uc3QgSGl0VAogCiBSZW5kZXJUYWJsZSogUmVuZGVyVGFibGU6OmNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkK
IHsKLSAgICBhdXRvIHRhYmxlID0gbmV3IFJlbmRlclRhYmxlKHBhcmVudC0+ZG9jdW1lbnQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5
bGUoKSwgcGFyZW50LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUgPyBJTkxJTkVfVEFCTEUg
OiBUQUJMRSkpOworICAgIGF1dG8gdGFibGUgPSBuZXcgUmVuZGVyVGFibGUocGFyZW50LT5kb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJl
bnQtPnN0eWxlKCksIHBhcmVudC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FID8gSU5MSU5F
X1RBQkxFIDogVEFCTEUpKTsKICAgICB0YWJsZS0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0
dXJuIHRhYmxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIGVudW0gU2tpcEVtcHR5U2VjdGlv
bnNWYWx1ZSB7IERvTm90U2tpcEUKIAogY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZShEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmKTsKKyAgICBSZW5kZXJUYWJsZShEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICAvLyBQZXIgQ1NTIDMgd3JpdGluZy1tb2RlOiAi
VGhlIGZpcnN0IGFuZCBzZWNvbmQgdmFsdWVzIG9mIHRoZSAnYm9yZGVyLXNwYWNpbmcnIHByb3Bl
cnR5IHJlcHJlc2VudCBzcGFjaW5nIGJldHdlZW4gY29sdW1ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2FwdGlvbjo6
UmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
YXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUmVuZGVyVGFi
bGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2FwdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZUNhcHRpb24oKTsKIAog
ICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJUYWJsZUNlbGwgOiBwdWJsaQogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5k
ZXJUYWJsZUNlbGwpLCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRh
YmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fY29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2Nl
bGxXaWR0aENoYW5nZWQoZmFsc2UpCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQKICAgICB1cGRhdGVDb2xBbmRSb3dTcGFuRmxhZ3MoKTsK
IH0KIAotUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVDZWxsOjpS
ZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1f
Y29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2NlbGxXaWR0aENoYW5nZWQoZmFsc2Up
CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFyc0No
YW5nZWQoCiAKIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1v
dXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7Ci0gICAg
YXV0byBjZWxsID0gbmV3IFJlbmRlclRhYmxlQ2VsbChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZwYXJlbnQtPnN0eWxlKCks
IFRBQkxFX0NFTEwpKTsKKyAgICBhdXRvIGNlbGwgPSBuZXcgUmVuZGVyVGFibGVDZWxsKHBhcmVu
dC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9DRUxMKSk7CiAgICAgY2VsbC0+aW5pdGlhbGl6ZVN0
eWxlKCk7CiAgICAgcmV0dXJuIGNlbGw7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDggQEAgZW51bSBJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbAogCiBjbGFzcyBS
ZW5kZXJUYWJsZUNlbGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOwotICAgIFJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CisgICAgUmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgCiAg
ICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0OwogICAgIHVuc2lnbmVkIHJvd1NwYW4oKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlQ29sOjpSZW5k
ZXJUYWJsZUNvbChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVGFibGVDb2w6OlJlbmRlclRhYmxlQ29sKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShz
dHlsZSksIDApCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmplY3QgYXR0cmlidXRlcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAogY2xhc3Mg
UmVuZGVyVGFibGVDb2wgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJUYWJsZUNvbChFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVGFibGVDb2woRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CiAKICAgICB2b2lkIGNsZWFyUHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
Qml0cygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZVJv
dzo6UmVuZGVyVGFibGVSb3coRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9yb3dJbmRleCh1bnNldFJvd0luZGV4KQogewogICAg
IHNldElubGluZShmYWxzZSk7CiB9CiAKLVJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIFJlbmRlclRhYmxlUm93OjppbWFnZUNoYW5nZWQoV3JhcHBlCiAKIFJlbmRlclRhYmxl
Um93KiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogcGFyZW50KQogewotICAgIGF1dG8gbmV3Um93ID0gbmV3IFJlbmRl
clRhYmxlUm93KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoJnBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XKSk7CisgICAgYXV0
byBuZXdSb3cgPSBuZXcgUmVuZGVyVGFibGVSb3cocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIFRB
QkxFX1JPVykpOwogICAgIG5ld1Jvdy0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5l
d1JvdzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4Um93SW5kZXggPSAweDdGCiAKIGNsYXNzIFJlbmRlclRhYmxlUm93IGZpbmFsIDog
cHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVSb3coRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlUm93KERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVSb3co
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlclRhYmxlUm93KERvY3VtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAKICAgICBSZW5kZXJUYWJsZVJvdyogbmV4dFJvdygpIGNvbnN0Owog
ICAgIFJlbmRlclRhYmxlUm93KiBwcmV2aW91c1JvdygpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMyArODIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZUxvZ2ljYWxIZWlnaHRGbwogICAgIH0KIH0KIAotUmVuZGVyVGFibGVTZWN0aW9uOjpSZW5k
ZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVu
ZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVTZWN0aW9uOjpS
ZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICBz
ZXRJbmxpbmUoZmFsc2UpOwpAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgUmVuZGVyVGFibGVTZWN0aW9uOgogCiBSZW5kZXJUYWJsZVNlY3Rpb24qIFJlbmRlclRhYmxl
U2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogcGFyZW50KQogewotICAgIGF1dG8gc2VjdGlvbiA9IG5ldyBSZW5kZXJUYWJsZVNlY3Rp
b24ocGFyZW50LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheSgmcGFyZW50LT5zdHlsZSgpLCBUQUJMRV9ST1dfR1JPVVApKTsKKyAgICBhdXRv
IHNlY3Rpb24gPSBuZXcgUmVuZGVyVGFibGVTZWN0aW9uKHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgp
LCBUQUJMRV9ST1dfR1JPVVApKTsKICAgICBzZWN0aW9uLT5pbml0aWFsaXplU3R5bGUoKTsKICAg
ICByZXR1cm4gc2VjdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCAr
NTUsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKERv
Y3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVT
ZWN0aW9uKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24o
RG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZVNlY3Rp
b24oKTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxv
Y2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAg
UmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgLy8gVGhpcyBjb252ZW5pZW5j
ZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2UgaW5uZXJUZXh0RWxl
bWVudCBtYXkgb3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CkBAIC05MSw3ICs5MSw3IEBAIHBy
aXZhdGU6CiAvLyBhbnltb3JlLgogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
ciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlclRleHRD
b250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
ICAgICB7IH0KICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkg
eyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRBcmVh
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1M
VGV4dEFyZWFFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyVGV4dENvbnRyb2woZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAg
Y2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1M
VGV4dEFyZWFFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRBcmVh
RWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMg
UmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZShIVE1MSW5wdXRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAog
cHJvdGVjdGVkOgpAQCAtOTAsNyArOTAsNyBAQCBpbmxpbmUgSFRNTEVsZW1lbnQqIFJlbmRlclRl
eHRDb250cm9sU2luCiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9s
SW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorICAgIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRD
dWUoVlRUQ3VlQm94JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9jdWUoZWxlbWVudC5nZXRDdWUoKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBjbGFzcyBWVFRDdWVCb3g7CiAKIGNsYXNzIFJlbmRlclZUVEN1ZSBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclZUVEN1ZShWVFRDdWVC
b3gmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWVFRDdWUoVlRU
Q3VlQm94JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclZpZGVvOjpSZW5kZXJWaWRl
byhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNZWRpYShlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGNhbGN1bGF0ZUludHJpbnNpY1Np
emUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIAog
Y2xhc3MgUmVuZGVyVmlkZW8gZmluYWwgOiBwdWJsaWMgUmVuZGVyTWVkaWEgewogcHVibGljOgot
ICAgIFJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlkZW8oKTsKIAogICAgIEhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqPiBtX3Nw
YW5uZXJTdGFjazsKIH07CiAKLVJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmlldzo6UmVu
ZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9mcmFtZVZp
ZXcoKmRvY3VtZW50LnZpZXcoKSkKICAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0KG51bGxw
dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVuZGVyUXVvdGU7CiAKIGNsYXNzIFJlbmRl
clZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3Vi
dHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRlclZpZXcoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlldygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1BhcmVu
dFNvb24oV2lkZ2UKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpz
Y2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKIH0KIAotUmVuZGVyV2lkZ2V0OjpS
ZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZy
YW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3dlYWtQdHJGYWN0
b3J5KHRoaXMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGVyZWYoKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlcldpZGdldChIVE1MRnJhbWVPd25lckVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJXaWRnZXQo
SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBm
aW5hbDsKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMyArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGNvbnN0IFJl
bmRlclN0eWxlJiBjdXJyZW50U3R5bGUpCitzdGF0aWMgUmVuZGVyU3R5bGUgY2xvbmVSZW5kZXJT
dHlsZVdpdGhTdGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKQogewotICAgIGF1
dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJmN1cnJlbnRTdHlsZSk7CisgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50U3R5bGUpOwogICAgIGlmIChj
dXJyZW50U3R5bGUubGFzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgbmV3U3R5bGUtPnNldExhc3RD
aGlsZFN0YXRlKCk7CisgICAgICAgIG5ld1N0eWxlLnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAg
aWYgKGN1cnJlbnRTdHlsZS5maXJzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgbmV3U3R5bGUtPnNl
dEZpcnN0Q2hpbGRTdGF0ZSgpOworICAgICAgICBuZXdTdHlsZS5zZXRGaXJzdENoaWxkU3RhdGUo
KTsKICAgICByZXR1cm4gbmV3U3R5bGU7CiB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgVGV4dEF1dG9T
aXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KERlbAogfQogCiBUZXh0QXV0b1NpemluZ0tleTo6
VGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQotICAgIDogbV9zdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmUoc3R5bGUpKQorICAgIDogbV9zdHlsZShzdHlsZSA/IFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqc3R5bGUpIDogbnVsbHB0cikKIHsKIH0KIApAQCAtMTE4LDEwICsxMTgsMTAg
QEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIHN0eWxlID0gY2xvbmVSZW5kZXJTdHls
ZVdpdGhTdGF0ZSh0ZXh0LT5zdHlsZSgpKTsKLSAgICAgICAgICAgIGF1dG8gZm9udERlc2NyaXB0
aW9uID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAgICAgYXV0byBmb250RGVz
Y3JpcHRpb24gPSBzdHlsZS5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoYXZlcmFnZVNpemUpOwotICAgICAgICAgICAgc3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICAgICAgc3R5bGUt
PmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2Vs
ZWN0b3IoKSk7CisgICAgICAgICAgICBzdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKTsKKyAgICAgICAgICAgIHN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6
aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICB0ZXh0LT5w
YXJlbnQoKS0+c2V0U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRSZW5kZXJlciA9IHRleHQtPnBhcmVudCgpOwpAQCAt
MTMyLDggKzEzMiw4IEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0Tm9kZVNpemUK
ICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbGlzdE1hcmtlclJlbmRlcmVyID0gcGFyZW50UmVu
ZGVyZXItPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIGlmIChsaXN0TWFya2VyUmVuZGVyZXIt
PmlzTGlzdE1hcmtlcigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVu
ZGVyU3R5bGVXaXRoU3RhdGUobGlzdE1hcmtlclJlbmRlcmVyLT5zdHlsZSgpKTsKLSAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAg
ICAgICAgICAgICAgc3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+
ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgc3R5bGUuZm9u
dENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3Rv
cigpKTsKICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPigqbGlzdE1h
cmtlclJlbmRlcmVyKS5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTE1MCwxMCArMTUwLDEwIEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1
ZTo6YWRqdXN0Tm9kZVNpemUKICAgICAgICAgICAgIGludCBsaW5lSGVpZ2h0ID0gc3BlY2lmaWVk
TGluZUhlaWdodCAqIHNjYWxlQ2hhbmdlOwogICAgICAgICAgICAgaWYgKCFsaW5lSGVpZ2h0TGVu
Z3RoLmlzRml4ZWQoKSB8fCBsaW5lSGVpZ2h0TGVuZ3RoLnZhbHVlKCkgIT0gbGluZUhlaWdodCkg
ewogICAgICAgICAgICAgICAgIGF1dG8gbmV3UGFyZW50U3R5bGUgPSBjbG9uZVJlbmRlclN0eWxl
V2l0aFN0YXRlKHBhcmVudFN0eWxlKTsKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+
c2V0TGluZUhlaWdodChMZW5ndGgobGluZUhlaWdodCwgRml4ZWQpKTsKLSAgICAgICAgICAgICAg
ICBuZXdQYXJlbnRTdHlsZS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChsaW5lSGVpZ2h0TGVuZ3Ro
KTsKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPmZvbnRDYXNj
YWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7
CisgICAgICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUuc2V0TGluZUhlaWdodChMZW5ndGgobGlu
ZUhlaWdodCwgRml4ZWQpKTsKKyAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRTcGVj
aWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGgpOworICAgICAgICAgICAgICAgIG5ld1Bh
cmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICAg
ICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9k
ZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcGFyZW50UmVu
ZGVyZXItPnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6
cmVzZXQoKQogICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpICE9IG9y
aWdpbmFsU2l6ZSkgewogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6
ZShvcmlnaW5hbFNpemUpOwogICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVuZGVyU3R5
bGVXaXRoU3RhdGUodGV4dC0+c3R5bGUoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBzdHlsZS0+Zm9udENhc2Nh
ZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsK
KyAgICAgICAgICAgIHN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgc3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5k
b2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5z
ZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gUmVzZXQgdGhl
IGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCkBAIC0xOTAsOSArMTkwLDkgQEAgdm9pZCBUZXh0
QXV0b1NpemluZ1ZhbHVlOjpyZXNldCgpCiAgICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWln
aHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmln
aW5hbExpbmVIZWlnaHQgIT0gcGFyZW50U3R5bGUubGluZUhlaWdodCgpKSB7CiAgICAgICAgICAg
ICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRT
dHlsZSk7Ci0gICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+c2V0TGluZUhlaWdodChvcmlnaW5h
bExpbmVIZWlnaHQpOwotICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPmZvbnRD
YXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3Io
KSk7CisgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KG9yaWdpbmFsTGlu
ZUhlaWdodCk7CisgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIG5ld1BhcmVudFN0eWxlLmZvbnRDYXNjYWRl
KCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7CiAg
ICAgICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHls
ZSkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogICAgIAotUmVuZGVyTWF0aE1MQmxv
Y2s6OlJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmIGNvbnRhaW5lciwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9j
ayhFbGVtZW50JiBjb250YWluZXIsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJG
bGV4aWJsZUJveChjb250YWluZXIsIFdURk1vdmUoc3R5bGUpKQogewogfQogCi1SZW5kZXJNYXRo
TUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhN
TEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTYwLDcg
KzYwLDcgQEAgYm9vbCBSZW5kZXJNYXRoTUxCbG9jazo6aXNDaGlsZEFsbG93ZWQoYwogCiBSZW5k
ZXJQdHI8UmVuZGVyTWF0aE1MQmxvY2s+IFJlbmRlck1hdGhNTEJsb2NrOjpjcmVhdGVBbm9ueW1v
dXNNYXRoTUxCbG9jaygpCiB7Ci0gICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTEJsb2NrPiBuZXdC
bG9jayA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEJsb2NrPihkb2N1bWVudCgpLCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgRkxFWCkp
OworICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxCbG9jaz4gbmV3QmxvY2sgPSBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJNYXRoTUxCbG9jaz4oZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCkpOwogICAgIG5ld0Jsb2NrLT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3QmxvY2s7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgUmVu
ZGVyTWF0aE1MT3BlcmF0b3I7CiAKIGNsYXNzIFJlbmRlck1hdGhNTEJsb2NrIDogcHVibGljIFJl
bmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50
Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2so
RG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRo
TUxCbG9jayhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVuZGVyTWF0aE1MQmxvY2so
RG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyTWF0aE1MVGFibGUg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyVGFibGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRl
ck1hdGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyTWF0aE1MVGFibGUoRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJUYWJsZShlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBNYXRoTUxOYW1lczsKIHN0YXRpYyBjb25zdCBjaGFyKiBnT3BlbmluZ0JyYWNlQ2hhciA9ICIo
IjsKIHN0YXRpYyBjb25zdCBjaGFyKiBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIjsKIAotUmVuZGVy
TWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxS
b3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2Nsb3NlRmVuY2VSZW5kZXJlcihu
dWxscHRyKQogewpAQCAtODUsNyArODUsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6dXBk
YXRlRnJvbUVsZW1lCiAKIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4gUmVuZGVyTWF0
aE1MRmVuY2VkOjpjcmVhdGVNYXRoTUxPcGVyYXRvcihjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3Ry
aW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9ybSwgTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpGbGFnIGZsYWcpCiB7Ci0gICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTE9wZXJh
dG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE9wZXJhdG9yPihk
b2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgm
c3R5bGUoKSwgRkxFWCksIG9wZXJhdG9yU3RyaW5nLCBmb3JtLCBmbGFnKTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+IG5ld09wZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MT3BlcmF0b3I+KGRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpLCBvcGVyYXRvclN0cmluZywgZm9ybSwg
ZmxhZyk7CiAgICAgbmV3T3BlcmF0b3ItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBu
ZXdPcGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBS
ZW5kZXJNYXRoTUxGZW5jZWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTEZlbmNlZChN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAg
ICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBnRnJh
Y3Rpb25CYXJXaWR0aCA9IDAKIHN0YXRpYyBjb25zdCBmbG9hdCBnTnVtZXJhdG9yR2FwID0gMC4y
ZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBnRGVub21pbmF0b3JHYXAgPSAwLjJmOwogCi1SZW5kZXJN
YXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
TWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2RlZmF1bHRMaW5l
VGhpY2tuZXNzKDEpCiAgICAgLCBtX2xpbmVUaGlja25lc3MoMCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTEZyYWN0aW9uIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxGcmFjdGlv
bihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgZmxvYXQgcmVsYXRpdmVMaW5l
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0TGluZVRoaWNrbmVzcyA/IG1fbGlu
ZVRoaWNrbmVzcyAvIG1fZGVmYXVsdExpbmVUaGlja25lc3MgOiBMYXlvdXRVbml0KDApOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CiAKLVJlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgoRWxlbWVudCYgZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTE1hdGg6OlJl
bmRlck1hdGhNTE1hdGgoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0
aC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxNYXRoIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWF0aChFbGVt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MTWF0
aChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRl
ck1hdGhNTE1hdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1l
bmNsb3NlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogLy8gRm9yIG5vdywgd2UgdXNl
IGEgQmV6aWVyIGN1cnZlIGFuZCB0aGlzIHNvbWV3aGF0IGFyYml0cmFyeSB2YWx1ZS4KIGNvbnN0
IHVuc2lnbmVkIHNob3J0IGxvbmdEaXZMZWZ0U3BhY2UgPSAxMDsKIAotUmVuZGVyTWF0aE1MTWVu
Y2xvc2U6OlJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0
aE1MTWVuY2xvc2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYXNjZW50
KDApCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVu
ZGVyTWF0aE1MTWVuY2xvc2UgZmluYWw6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGlj
OgotICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNZW5jbG9zZSI7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBA
QCBzdGF0aWMgY29uc3QgU3RyZXRjaHlDaGFyYWN0ZXIgc3RyZXRjaHlDCiAgICAgeyAweDIyMmIs
IDB4MjMyMCwgMHgyM2FlLCAweDIzMjEsIDB4MCAgICB9IC8vIGludGVncmFsIHNpZ24KIH07CiAK
LVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxUb2tlbihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUoMCkKICAg
ICAsIG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSgwKQpAQCAtODIsNyArODIsNyBAQCBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0CiAgICAgdXBkYXRlVG9rZW5Db250
ZW50KCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihE
b2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNv
bnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6Rm9y
bSBmb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFncykKK1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5k
ZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6
Rm9ybSBmb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFncykKICAgICA6IFJlbmRlck1hdGhNTFRva2Vu
KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFz
ZWxpbmUoMCkKICAgICAsIG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSgwKQpAQCAtNjMxLDkg
KzYzMSw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZVN0eWxlKCkKICAgICAv
LyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB3aG9sZSBlbWJlbGxp
c2hlZCBvcGVyYXRvciAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDgzMSkuCiAgICAgLy8gRklYTUU6IFRoZSBzcGFjaW5nIHNob3VsZCBvbmx5IGJlIGFkZGVkIGlu
c2lkZSAocGVyaGFwcyBpbmZlcnJlZCkgbXJvdyAoaHR0cDovL3d3dy53My5vcmcvVFIvTWF0aE1M
L2NoYXB0ZXIzLmh0bWwjcHJlc20ub3BzcGFjaW5nKS4KICAgICBjb25zdCBhdXRvJiB3cmFwcGVy
ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKLSAgICBhdXRvIG5ld1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxl
KCksIEZMRVgpOwotICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgobV9sZWFkaW5n
U3BhY2UsIEZpeGVkKSk7Ci0gICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5ndGgobV90cmFp
bGluZ1NwYWNlLCBGaXhlZCkpOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKKyAgICBuZXdTdHls
ZS5zZXRNYXJnaW5TdGFydChMZW5ndGgobV9sZWFkaW5nU3BhY2UsIEZpeGVkKSk7CisgICAgbmV3
U3R5bGUuc2V0TWFyZ2luRW5kKExlbmd0aChtX3RyYWlsaW5nU3BhY2UsIEZpeGVkKSk7CiAgICAg
d3JhcHBlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdTdHlsZSkpOwogICAgIHdyYXBwZXItPnNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxPcGVyYXRvciA6IHB1YmxpYyBSZW5kZXJN
YXRoTUxUb2tlbiB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3Ry
aW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNp
Z25lZCBzaG9ydCBmbGFncyA9IDApOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVu
dCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBM
YXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSk7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0
VW5pdCB3aWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgY29u
c3QgZmxvYXQgZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zID0gMAogLy8gUmFkaWNhbCB0aGljayBs
aW5lIHRoaWNrbmVzcyAoZW0pCiBjb25zdCBmbG9hdCBnUmFkaWNhbFRoaWNrTGluZVRoaWNrbmVz
c0VtcyA9IDAuMWY7CiAKLVJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6UmVuZGVyTWF0aE1M
UmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6UmVuZGVyTWF0aE1M
UmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTE9wZXJhdG9yKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgU3Ry
aW5nKCZnUmFkaWNhbENoYXJhY3RlciwgMSksIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJl
Zml4KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGlj
YWxPcGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTE9wZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsK
ICAgICB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxpbmUsIExheW91
dFVuaXQgZGVwdGhCZWxvd0Jhc2VsaW5lKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gSW4gb3JkZXIgdG8gYWNjZXB0IGludmFsaWQgbWFya3VwIGFuZCB0
byBoYW5kbGUgPG1yb290PiBhbmQgPG1zcXJ0PiBjb25zaXN0ZW50bHksIHdlIHdpbGwgYWxsb3cg
YW55IG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGUgQmFzZVdyYXBwZXIgb2YgPG1yb290PiB0b28u
CiAvLyBXZSB3aWxsIGFsbG93IHRoZSBJbmRleFdyYXBwZXIgdG8gYmUgZW1wdHkgYW5kIGl0IHdp
bGwgYWx3YXlzIGNvbnRhaW4gdGhlIGxhc3QgY2hpbGQgb2YgdGhlIDxtcm9vdD4gaWYgdGhlcmUg
YXJlIGF0IGxlYXN0IDIgZWxlbWVudHMuCiAKLVJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhN
TFJvb3QoRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
Um9vdDo6cmVzdHJ1Y3R1cmVXcmFwcGUKIAogICAgIGlmIChyYWRpY2FsLT5pc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gV2UgY3JlYXRlIHRoZSByYWRpY2FsIG9wZXJhdG9yLgotICAgICAgICBSZW5k
ZXJQdHI8UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yPiByYWRpY2FsT3BlcmF0b3IgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I+KGRvY3VtZW50KCksIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKSk7
CisgICAgICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I+IHJhZGljYWxP
cGVyYXRvciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcj4oZG9j
dW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5
bGUoKSwgRkxFWCkpOwogICAgICAgICByYWRpY2FsT3BlcmF0b3ItPmluaXRpYWxpemVTdHlsZSgp
OwogICAgICAgICByYWRpY2FsLT5hZGRDaGlsZChyYWRpY2FsT3BlcmF0b3IubGVha1B0cigpKTsK
ICAgICB9CkBAIC0yMjAsMjYgKzIyMCwyNiBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnVwZGF0
ZVN0eWxlKCkKICAgICAvLyBXZSBzZXQgdGhlIHN0eWxlIG9mIHRoZSBhbm9ueW1vdXMgd3JhcHBl
cnMuCiAKICAgICBhdXRvIHJhZGljYWwgPSByYWRpY2FsV3JhcHBlcigpOwotICAgIGF1dG8gcmFk
aWNhbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
JnN0eWxlKCksIEZMRVgpOwotICAgIHJhZGljYWxTdHlsZS0+c2V0TWFyZ2luVG9wKExlbmd0aCgw
LCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290Ojps
YXlvdXQoKS4KKyAgICBhdXRvIHJhZGljYWxTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEZMRVgpOworICAgIHJhZGljYWxTdHlsZS5z
ZXRNYXJnaW5Ub3AoTGVuZ3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIGlu
IFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpLgogICAgIHJhZGljYWwtPnNldFN0eWxlKFdURk1v
dmUocmFkaWNhbFN0eWxlKSk7CiAgICAgcmFkaWNhbC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CiAKICAgICBhdXRvIGJhc2UgPSBiYXNlV3JhcHBlcigpOwotICAgIGF1dG8g
YmFzZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
JnN0eWxlKCksIEZMRVgpOwotICAgIGJhc2VTdHlsZS0+c2V0TWFyZ2luVG9wKExlbmd0aCgwLCBG
aXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlv
dXQoKS4KLSAgICBiYXNlU3R5bGUtPnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25C
YXNlbGluZSk7CisgICAgYXV0byBiYXNlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBGTEVYKTsKKyAgICBiYXNlU3R5bGUuc2V0TWFy
Z2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5k
ZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KKyAgICBiYXNlU3R5bGUuc2V0QWxpZ25JdGVtc1Bvc2l0
aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKICAgICBiYXNlLT5zZXRTdHlsZShXVEZNb3ZlKGJh
c2VTdHlsZSkpOwogICAgIGJhc2UtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygp
OwogCiAgICAgaWYgKCFpc1JlbmRlck1hdGhNTFNxdWFyZVJvb3QoKSkgewogICAgICAgICAvLyBG
b3IgbXJvb3QsIHdlIGFsc28gc2V0IHRoZSBzdHlsZSBvZiB0aGUgaW5kZXggd3JhcHBlci4KICAg
ICAgICAgYXV0byBpbmRleCA9IGluZGV4V3JhcHBlcigpOwotICAgICAgICBhdXRvIGluZGV4U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUo
KSwgRkxFWCk7Ci0gICAgICAgIGluZGV4U3R5bGUtPnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4
ZWQpKTsgLy8gVGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0
KCkuCi0gICAgICAgIGluZGV4U3R5bGUtPnNldE1hcmdpblN0YXJ0KExlbmd0aChrZXJuQmVmb3Jl
RGVncmVlLCBGaXhlZCkpOwotICAgICAgICBpbmRleFN0eWxlLT5zZXRNYXJnaW5FbmQoTGVuZ3Ro
KGtlcm5BZnRlckRlZ3JlZSwgRml4ZWQpKTsKLSAgICAgICAgaW5kZXhTdHlsZS0+c2V0QWxpZ25J
dGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKKyAgICAgICAgYXV0byBpbmRleFN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUo
KSwgRkxFWCk7CisgICAgICAgIGluZGV4U3R5bGUuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhl
ZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQo
KS4KKyAgICAgICAgaW5kZXhTdHlsZS5zZXRNYXJnaW5TdGFydChMZW5ndGgoa2VybkJlZm9yZURl
Z3JlZSwgRml4ZWQpKTsKKyAgICAgICAgaW5kZXhTdHlsZS5zZXRNYXJnaW5FbmQoTGVuZ3RoKGtl
cm5BZnRlckRlZ3JlZSwgRml4ZWQpKTsKKyAgICAgICAgaW5kZXhTdHlsZS5zZXRBbGlnbkl0ZW1z
UG9zaXRpb24oSXRlbVBvc2l0aW9uQmFzZWxpbmUpOwogICAgICAgICBpbmRleC0+c2V0U3R5bGUo
V1RGTW92ZShpbmRleFN0eWxlKSk7CiAgICAgICAgIGluZGV4LT5zZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxSb290OjpwYWludChQYWludEluZm8mIAogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXI+IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOjpjcmVhdGVBbm9ueW1vdXNXcmFwcGVy
KFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCkKIHsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
TWF0aE1MUm9vdFdyYXBwZXI+IG5ld0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1M
Um9vdFdyYXBwZXI+KHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnJlbmRlck9iamVjdC0+c3R5bGUoKSwgRkxFWCkp
OworICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxSb290V3JhcHBlcj4gbmV3QmxvY2sgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb290V3JhcHBlcj4ocmVuZGVyT2JqZWN0LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShyZW5kZXJP
YmplY3QtPnN0eWxlKCksIEZMRVgpKTsKICAgICBuZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7
CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3QgOiBwdWJs
aWMgUmVuZGVyTWEKIGZyaWVuZCBjbGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjsKIAogcHVi
bGljOgotICAgIFJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CkBA
IC03OCw3ICs3OCw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyIGZpbmFsIDogcHUK
IGZyaWVuZCBjbGFzcyBSZW5kZXJNYXRoTUxSb290OwogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0
aE1MUm9vdFdyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQorICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJNYXRoTUxSb3coZG9j
dW1lbnQsIFdURk1vdmUoc3R5bGUpKSB7IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxS
b3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2Nr
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCi1SZW5kZXJNYXRoTUxSb3c6OlJlbmRl
ck1hdGhNTFJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1
bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogY2xh
c3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOwotICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CisgICAgUmVuZGVyTWF0aE1MUm93KERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICB2
b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGlj
IGJvb2wgaXNQcmVzY3JpcHREZWxpbWl0ZXIoY29uc3QgUgogICAgIHJldHVybiByZW5kZXJPYmpl
Y3Qubm9kZSgpICYmIHJlbmRlck9iamVjdC5ub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1wcmVzY3JpcHRzVGFnKTsKIH0KIAotUmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1M
U2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiBz
dWIvc3VwIGV4cHJlc3Npb24gd2UgaGF2ZSBieSBlbGVtZW50IG5hbWUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNjcmlwdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBSZW5kZXIgYSBiYXNlIHdpdGggc2NyaXB0cy4KIGNsYXNzIFJl
bmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVi
bGljOgotICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3Io
KSBmaW5hbDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhN
TFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNwYWNlOjpSZW5k
ZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV93aWR0aCgwKQogICAgICwgbV9oZWlnaHQoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJN
YXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxT
cGFjZShNYXRoTUxUZXh0RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIE1hdGhNTFRleHRF
bGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQm
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVy
TWF0aE1MU3F1YXJlUm9vdChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyTWF0aE1MUm9vdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9v
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOCArMzgsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxNZW5jbG9zZTsKIC8vIFJlbmRlciBz
cXJ0KGJhc2UpLCB1c2luZyByYWRpY2FsIG5vdGF0aW9uLgogY2xhc3MgUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb290IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+KTsKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q+IGNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihSZW5kZXJNYXRoTUxNZW5jbG9zZSYpOworICAg
IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIAog
cHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVy
TWF0aE1MVG9rZW4oRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2NvbnRhaW5zRWxlbWVudChmYWxzZSkKIHsK
IH0KIAotUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFRv
a2VuOjpSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX2NvbnRhaW5zRWxlbWVudChmYWxzZSkKIHsKQEAgLTgyLDE3ICs4MiwxNyBAQCB2
b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSgpCiAgICAgY29uc3QgYXV0byYgdG9r
ZW5FbGVtZW50ID0gZWxlbWVudCgpOwogCiAgICAgY29uc3QgYXV0byYgd3JhcHBlciA9IGRvd25j
YXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQoKSk7Ci0gICAgYXV0byBuZXdTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVY
KTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoc3R5bGUoKSwgRkxFWCk7CiAKICAgICBpZiAodG9rZW5FbGVtZW50Lmhhc1Rh
Z05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKSkgewogICAgICAgICAvLyBUaGlzIHRyaWVzIHRvIGVt
dWxhdGUgdGhlIGRlZmF1bHQgbWF0aHZhcmlhbnQgdmFsdWUgb24gPG1pPiB1c2luZyB0aGUgQ1NT
IGZvbnQtc3R5bGUgcHJvcGVydHkuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBy
ZXZpc2VkIHdoZW4gbWF0aHZhcmlhbnQgaXMgaW1wbGVtZW50ZWQgKGh0dHA6Ly93a2J1Zy84NTcz
NSkgYW5kIHdoZW4gZm9udHMgd2l0aCBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMg
Y2hhcmFjdGVycyBhcmUgbW9yZSBwb3B1bGFyLgotICAgICAgICBhdXRvIGZvbnREZXNjcmlwdGlv
biA9IG5ld1N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgRm9udFNlbGVjdG9yKiBm
b250U2VsZWN0b3IgPSBuZXdTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKKyAg
ICAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBuZXdTdHlsZS5mb250RGVzY3JpcHRpb24oKTsK
KyAgICAgICAgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IgPSBuZXdTdHlsZS5mb250Q2FzY2Fk
ZSgpLmZvbnRTZWxlY3RvcigpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNFbGVtZW50ICYmIGVs
ZW1lbnQoKS50ZXh0Q29udGVudCgpLnN0cmlwV2hpdGVTcGFjZSgpLnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpLmxlbmd0aCgpID09IDEgJiYgIXRva2VuRWxlbWVudC5oYXNBdHRyaWJ1dGUobWF0aHZhcmlh
bnRBdHRyKSkKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoRm9udEl0YWxp
Y09uKTsKLSAgICAgICAgaWYgKG5ld1N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKLSAgICAgICAgICAgIG5ld1N0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZShmb250
U2VsZWN0b3IpOworICAgICAgICBpZiAobmV3U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCisgICAgICAgICAgICBuZXdTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShm
b250U2VsZWN0b3IpOwogICAgIH0KIAogICAgIHdyYXBwZXItPnNldFN0eWxlKFdURk1vdmUobmV3
U3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRo
TUxUb2tlbiA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
TWF0aE1MVG9rZW4oRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwotICAg
IFJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyTWF0aE1MVG9rZW4oRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAg
IFJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBNYXRo
TUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFRleHRF
bGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAg
ICAgCi1SZW5kZXJNYXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50
JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogewogICAgIC8vIERldGVybWluZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBl
eHByZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIGZpbmFsIDog
cHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxVbmRl
ck92ZXIoRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgCiAgICAgUmVu
ZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJ
KHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDQ2ICs4Niw1MSBAQCBzdHJ1Y3QgU2Ft
ZVNpemVBc1JlbmRlclN0eWxlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlclN0eWxl
KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgUmVuZGVyU3R5bGVfc2hvdWxkX3N0
YXlfc21hbGwpOwogCi1pbmxpbmUgUmVuZGVyU3R5bGUmIGRlZmF1bHRTdHlsZSgpCitSZW5kZXJT
dHlsZSYgUmVuZGVyU3R5bGU6OmRlZmF1bHRTdHlsZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclN0
eWxlJiBzdHlsZSA9ICpSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkucmVsZWFzZSgp
OworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSYgc3R5bGUgPSAqbmV3IFJlbmRlclN0eWxlKENyZWF0
ZURlZmF1bHRTdHlsZSk7CiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGUoKQorUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGNsb25lKCZkZWZhdWx0U3R5bGUoKSk7CisgICAg
cmV0dXJuIGNsb25lKGRlZmF1bHRTdHlsZSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkKK3N0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4obmV3IFJlbmRlclN0eWxlKHRydWUpKTsKKyAgICBy
ZXR1cm4gY2xvbmVQdHIoZGVmYXVsdFN0eWxlKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlbmRlclN0
eWxlIFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAg
YXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICBuZXdTdHlsZS0+aW5o
ZXJpdEZyb20ocGFyZW50U3R5bGUpOwotICAgIG5ld1N0eWxlLT5pbmhlcml0VW5pY29kZUJpZGlG
cm9tKHBhcmVudFN0eWxlKTsKLSAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShkaXNwbGF5KTsKLSAg
ICByZXR1cm4gbmV3U3R5bGU7CisgICAgcmV0dXJuIFJlbmRlclN0eWxlKHN0eWxlLCBDbG9uZSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPihuZXcgUmVuZGVyU3R5bGUoKm90aGVyKSk7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7
Cit9CisKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRURpc3BsYXkgZGlzcGxheSkK
K3sKKyAgICBhdXRvIG5ld1N0eWxlID0gY3JlYXRlKCk7CisgICAgbmV3U3R5bGUuaW5oZXJpdEZy
b20oJnBhcmVudFN0eWxlKTsKKyAgICBuZXdTdHlsZS5pbmhlcml0VW5pY29kZUJpZGlGcm9tKCZw
YXJlbnRTdHlsZSk7CisgICAgbmV3U3R5bGUuc2V0RGlzcGxheShkaXNwbGF5KTsKKyAgICByZXR1
cm4gbmV3U3R5bGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcHNldWRvU3R5bGUpCitSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhl
cml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSkKIHsK
ICAgICBBU1NFUlQocHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gQkVGT1JFIHx8IHBzZXVkb1N0
eWxlLnN0eWxlVHlwZSgpID09IEFGVEVSKTsKIAotICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlKCk7Ci0gICAgc3R5bGUtPmluaGVyaXRGcm9tKCZwc2V1ZG9TdHlsZSk7CisgICAg
YXV0byBzdHlsZSA9IGNyZWF0ZSgpOworICAgIHN0eWxlLmluaGVyaXRGcm9tKCZwc2V1ZG9TdHls
ZSk7CiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1BTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShib29sKQorUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRT
dHlsZVRhZykKICAgICA6IG1fYm94KFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCiAgICAgLCB2aXN1
YWwoU3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2dyb3VuZChTdHlsZUJh
Y2tncm91bmREYXRhOjpjcmVhdGUoKSkKQEAgLTE2MiwxNyArMTY3LDE3IEBAIEFMV0FZU19JTkxJ
TkUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGIKICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2Yo
Tm9uSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiTm9uSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3Jv
dyIpOwogfQogCi1BTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgbykKLSAgICA6IG1fYm94KG8ubV9ib3gpCi0gICAgLCB2aXN1YWwoby52aXN1
YWwpCi0gICAgLCBtX2JhY2tncm91bmQoby5tX2JhY2tncm91bmQpCi0gICAgLCBzdXJyb3VuZChv
LnN1cnJvdW5kKQotICAgICwgcmFyZU5vbkluaGVyaXRlZERhdGEoby5yYXJlTm9uSW5oZXJpdGVk
RGF0YSkKLSAgICAsIHJhcmVJbmhlcml0ZWREYXRhKG8ucmFyZUluaGVyaXRlZERhdGEpCi0gICAg
LCBpbmhlcml0ZWQoby5pbmhlcml0ZWQpCi0gICAgLCBtX3N2Z1N0eWxlKG8ubV9zdmdTdHlsZSkK
LSAgICAsIGluaGVyaXRlZF9mbGFncyhvLmluaGVyaXRlZF9mbGFncykKLSAgICAsIG5vbmluaGVy
aXRlZF9mbGFncyhvLm5vbmluaGVyaXRlZF9mbGFncykKK1JlbmRlclN0eWxlOjpSZW5kZXJTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQorICAgIDogbV9ib3gob3RoZXIu
bV9ib3gpCisgICAgLCB2aXN1YWwob3RoZXIudmlzdWFsKQorICAgICwgbV9iYWNrZ3JvdW5kKG90
aGVyLm1fYmFja2dyb3VuZCkKKyAgICAsIHN1cnJvdW5kKG90aGVyLnN1cnJvdW5kKQorICAgICwg
cmFyZU5vbkluaGVyaXRlZERhdGEob3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEpCisgICAgLCBy
YXJlSW5oZXJpdGVkRGF0YShvdGhlci5yYXJlSW5oZXJpdGVkRGF0YSkKKyAgICAsIGluaGVyaXRl
ZChvdGhlci5pbmhlcml0ZWQpCisgICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCisg
ICAgLCBpbmhlcml0ZWRfZmxhZ3Mob3RoZXIuaW5oZXJpdGVkX2ZsYWdzKQorICAgICwgbm9uaW5o
ZXJpdGVkX2ZsYWdzKG90aGVyLm5vbmluaGVyaXRlZF9mbGFncykKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIw
MDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiU3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVGaWx0ZXJEYXRhLmgiCiAjaW5jbHVk
ZSAiU3R5bGVGbGV4aWJsZUJveERhdGEuaCIKKyNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEu
aCIKICNpbmNsdWRlICJTdHlsZU1hcnF1ZWVEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVNdWx0aUNv
bERhdGEuaCIKICNpbmNsdWRlICJTdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgiCkBAIC00NzksMjAg
KzQ4MCwyOSBAQCBwcm90ZWN0ZWQ6CiAKIC8vICFFTkQgU1lOQyEKIHByaXZhdGU6Ci0gICAgLy8g
dXNlZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgc3R5bGUuCi0gICAgQUxXQVlTX0lOTElORSBSZW5k
ZXJTdHlsZShib29sKTsKLSAgICBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJik7CisgICAgZW51bSBDcmVhdGVEZWZhdWx0U3R5bGVUYWcgeyBDcmVhdGVEZWZhdWx0
U3R5bGUgfTsKKyAgICBSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3R5bGVUYWcpOworCisgICAg
c3RhdGljIFJlbmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKTsKIAogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1bHRTdHlsZSgpOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2xvbmUoY29uc3QgUmVuZGVyU3R5bGUq
KTsKKyAgICBSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CisgICAgUmVuZGVy
U3R5bGUmIG9wZXJhdG9yPShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBUaGlz
IGlzIG5vdCBhIHRydWUgY29weSBjb25zdHJ1Y3Rvci4gSXQgZG9lc24ndCBjb3B5IHBzZXVkbyBz
dHlsZSBjYWNoZXMgZm9yIGV4YW1wbGUuCisgICAgZW51bSBDbG9uZVRhZyB7IENsb25lIH07Cisg
ICAgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBDbG9uZVRhZyk7CiAKICAgICB+UmVu
ZGVyU3R5bGUoKTsKIAotICAgIC8vIENyZWF0ZSBhIFJlbmRlclN0eWxlIGZvciBnZW5lcmF0ZWQg
Y29udGVudCBieSBpbmhlcml0aW5nIGZyb20gYSBwc2V1ZG8gc3R5bGUuCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVk
b1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSk7CisgICAgc3RhdGljIFJlbmRl
clN0eWxlIGNyZWF0ZSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IGNyZWF0ZVB0cigpOworCisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNsb25lKGNvbnN0IFJlbmRl
clN0eWxlJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2xvbmVQ
dHIoY29uc3QgUmVuZGVyU3R5bGUmKTsKKworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
RURpc3BsYXkpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVTdHlsZUluaGVyaXRpbmdG
cm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKIAogICAgIENv
bnRlbnRQb3NpdGlvbiByZXNvbHZlZEp1c3RpZnlDb250ZW50UG9zaXRpb24oY29uc3QgU3R5bGVD
b250ZW50QWxpZ25tZW50RGF0YSYgbm9ybWFsVmFsdWVCZWhhdmlvcikgY29uc3Q7CiAgICAgQ29u
dGVudERpc3RyaWJ1dGlvblR5cGUgcmVzb2x2ZWRKdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbihj
b25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdH
cmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZH
R3JhcGhpY3NFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNW
R0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQoZmFsc2Up
CiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
T2JqZWN0Qm91bmRpbmdCb3hWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdC
b3hWYWxpZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdDb250YWlu
ZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlw
c2UoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGlj
c0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdT
aGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdXNlUGF0aEZhbGxiYWNrKGZh
bHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdFbGxpcHNlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHRWxsaXBzZSBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdH
cmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR0VsbGlwc2UoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRlclNW
R0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
Y2xhc3MgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0ZvcmVpZ25P
YmplY3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHQmxvY2sgewogcHVibGljOgotICAgIFJlbmRl
clNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdCgpOwogCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmpl
Y3RFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCi1SZW5kZXJTVkdHcmFkaWVudFN0b3A6OlJl
bmRlclNWR0dyYWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZH
R3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9w
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdH
cmFkaWVudFN0b3AuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQ7CiAvLyBUaGlzIGNsYXNzIGV4aXN0cyBt
b3N0bHkgc28gd2UgY2FuIGhlYXIgYWJvdXQgZ3JhZGllbnQgc3RvcCBzdHlsZSBjaGFuZ2VzCiBj
bGFzcyBSZW5kZXJTVkdHcmFkaWVudFN0b3AgZmluYWwgOiBwdWJsaWMgUmVuZGVyRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNW
R1N0b3BFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wKCk7CiAKICAgICBTVkdTdG9wRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFNWR1N0b3BFbGVtZW50PihSZW5kZXJPYmplY3Q6Om5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNW
R0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQ29udGFp
bmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNz
IFNWR0VsZW1lbnQ7CiAvLyA8ZGVmcz4sIDxsaW5lYXJHcmFkaWVudD4sIDxyYWRpYWxHcmFkaWVu
dD4gYXJlIGFsbCBnb29kIGV4YW1wbGVzCiBjbGFzcyBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIg
OiBwdWJsaWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIoU1ZHRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxl
bWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ltYWdl
OjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiAgICAgLCBtX25lZWRzVHJh
bnNmb3JtVXBkYXRlKHRydWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgU1ZHSW1hZ2VFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdJbWFnZSBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
SW1hZ2UoU1ZHSW1hZ2VFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHSW1hZ2UoKTsKIAogICAgIFNWR0ltYWdlRWxlbWVudCYgaW1hZ2VF
bGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVuZGVyU1ZHSW5saW5l
OjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxp
bmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVySW5saW5lKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIHNldEFsd2F5
c0NyZWF0ZUxpbmVCb3hlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHSW5saW5lIDog
cHVibGljIFJlbmRlcklubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHSW5saW5lKFNWR0dy
YXBoaWNzRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIFNW
R0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5k
ZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oYXNTVkdTaGFk
b3coZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQmIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZH
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQ
YXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJTVkdQYXRoOjpSZW5kZXJTVkdQYXRoKFNWR0dyYXBoaWNzRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUGF0aCBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUGF0aChT
VkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdQYXRoKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR1BhdGgoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
clNWR1JlY3Q6OlJlbmRlclNWR1JlY3QoU1ZHUmVjdEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0
KFNWR1JlY3RFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3VzZVBhdGhGYWxs
YmFjayhmYWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVjdC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1JlY3QgZmluYWwgOiBwdWJsaWMg
UmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNWR1JlY3QoU1ZHUmVjdEVsZW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZWN0KFNW
R1JlY3RFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVj
dCgpOwogCiAgICAgU1ZHUmVjdEVsZW1lbnQmIHJlY3RFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmIGVs
ZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
aAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCB0
eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gQ2xpCiAKIGNsYXNzIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoKTsKIAogICAgIFNWR0NsaXBQYXRoRWxlbWVu
dCYgY2xpcFBhdGhFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHQ2xpcFBhdGhF
bGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAgc3RhdGljIGlubGluZSBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIHN2ZwogICAgIHJldHVy
biBlbGVtZW50LmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogfQogCi1SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9pZChlbGVtZW50LmdldElk
QXR0cmlidXRlKCkpCiAgICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5
ZXIqKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0Vs
ZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcihTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBlbnVtIElu
dmFsaWRhdGlvbk1vZGUgewogICAgICAgICBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9u
LApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQm
IGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgZmluYWwg
OiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIo
KTsKIAogICAgIFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxTVkdGaWx0ZXJFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6
ZWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyYgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dAogCiBjbGFz
cyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYsIFJlbmRlclN0eWxlJiYp
OwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYgZmlsdGVyUHJpbWl0
aXZlRWxlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYgbm9kZSwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQ6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50JiBub2RlLCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIobm9k
ZSwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3Nob3VsZENvbGxlY3RHcmFkaWVudEF0dHJpYnV0
ZXModHJ1ZSkKICNpZiBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIEZs
b2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIGZpbmFsIHsg
cmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IGZpbmFsIDogcHVibGljIFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudChTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50KCk7CiAKICAgICBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQm
IGxpbmVhckdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3JhZGllbnRFbGVt
ZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2Vy
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
cmtlci5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2VyRWxlbWVudCYsIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZU1h
cmtlcigpOwogCiAgICAgU1ZHTWFya2VyRWxlbWVudCYgbWFya2VyRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR01hcmtlckVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyOjplbGVtZW50KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIo
U1ZHTWFza0VsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZH
TWFza0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBzdHJ1Y3QgTWFza2VyRGF0YSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcihTVkdNYXNrRWxlbWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIoKTsKIAogICAgIFNWR01hc2tFbGVtZW50JiBtYXNrRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFNWR01hc2tFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6
ZWxlbWVudCgpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4o
U1ZHUGF0dGVybkVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9zaG91bGRDb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXModHJ1ZSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybiBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgU1ZHUGF0dGVybkVsZW1lbnQmIHBhdHRlcm5FbGVtZW50
KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJr
Rm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdS
ZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jl
c291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVu
dC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQCBjbGFzcyBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQoKTsKIAogICAgIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCYgcmFkaWFsR3Jh
ZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQoKSk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxlbWVu
dCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R1Jvb3Q6OlJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkKGZhbHNlKQogICAgICwgbV9pc0xheW91dFNp
emVDaGFuZ2VkKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBA
IGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR1Jvb3QgZmluYWwgOiBwdWJs
aWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jvb3Qo
U1ZHU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jv
b3QoKTsKIAogICAgIFNWR1NWR0VsZW1lbnQmIHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFJlbmRlclNWR1NoYXBlJiBtX3JlbmRlcmVyOwogfTsKIAotUmVuZGVyU1ZHU2hhcGU6
OlJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFwZShT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVl
ZHNCb3VuZGFyaWVzVXBkYXRlKGZhbHNlKSAvLyBEZWZhdWx0IGlzIGZhbHNlLCB0aGUgY2FjaGVk
IHJlY3RzIGFyZSBlbXB0eSBmcm9tIHRoZSBiZWdpbm5pbmcuCiAgICAgLCBtX25lZWRzU2hhcGVV
cGRhdGUodHJ1ZSkgLy8gRGVmYXVsdCBpcyB0cnVlLCBzbyB3ZSBncmFiIGEgUGF0aCBvYmplY3Qg
b25jZSBmcm9tIFNWR0dyYXBoaWNzRWxlbWVudC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
clNWR1NoYXBlIDogcHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdTaGFwZSgpOwogCiAgICAgU1ZHR3JhcGhp
Y3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdH
cmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR01vZGVsT2JqZWN0OjplbGVtZW50KCkpOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RT
cGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlbmRlclNWR1RTcGFuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAg
ICBleHBsaWNpdCBSZW5kZXJTVkdUU3BhbihTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlclNWR0lubGluZShlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
U1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQo
U1ZHVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJTVkdCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNSZW9yZGVy
aW5nKGZhbHNlKQogICAgICwgbV9uZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlKGZhbHNlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRlclNWR0lu
bGluZVRleHQ7CiAKIGNsYXNzIFJlbmRlclNWR1RleHQgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZH
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1lbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHVGV4dCgpOwogCiAg
ICAgU1ZHVGV4dEVsZW1lbnQmIHRleHRFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBh
dGhFbGVtZW50JiBlbGVtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKFNWR1RleHRQYXRoRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0lubGluZShlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clNWR1RleHRQYXRoIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50Jiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAKICAgICBTVkdUZXh0UGF0aEVsZW1lbnQmIHRleHRQYXRoRWxl
bWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAJKHJl
dmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lcjo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1l
bnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
KFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVl
ZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRl
KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIGNsYXNzIFJlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxl
bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSB7IHJldHVybiBkb3duY2Fz
dDxTVkdHcmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQog
CiAgICAgYm9vbCBpc1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6UmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYgZWxlbWVudCwgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6
ZUNoYW5nZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gdGh1cyB3ZSBpbmhlcml0IGZyb20gUmVuZGVyU1ZHQ29udGFpbmVyIGluc3RlYWQgb2Yg
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcgogY2xhc3MgUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZH
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCYgc3ZnU1ZHRWxl
bWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBk
YXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5k
ZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lk
IFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAgICAgaWYgKHNob3VsZENyZWF0
ZU5ld1JlbmRlcmVyKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2
ZUNhbGxiYWNrcygpKQogICAgICAgICAgICAgZWxlbWVudC53aWxsQXR0YWNoUmVuZGVyZXJzKCk7
Ci0gICAgICAgIGNyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIFdURk1vdmUodXBkYXRlLnN0eWxlKSk7
CisgICAgICAgIGNyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIFdURk1vdmUoKnVwZGF0ZS5zdHlsZSkp
OwogICAgICAgICBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFj
aElmTmVlZGVkKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYxLDE5ICsy
NjEsMTkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAgIGF1
dG8mIHJlbmRlcmVyID0gKmVsZW1lbnQucmVuZGVyZXIoKTsKIAogICAgIGlmICh1cGRhdGUuaXNT
eW50aGV0aWMpIHsKLSAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoV1RGTW92ZSh1cGRhdGUuc3R5
bGUpLCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVyKTsKKyAgICAgICAgcmVuZGVyZXIu
c2V0U3R5bGUoV1RGTW92ZSgqdXBkYXRlLnN0eWxlKSwgU3R5bGVEaWZmZXJlbmNlUmVjb21wb3Np
dGVMYXllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodXBkYXRlLmNoYW5n
ZSA9PSBTdHlsZTo6Tm9DaGFuZ2UpIHsKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlQ2FjaGVJc0lu
dmFsaWQoJnJlbmRlcmVyLCB1cGRhdGUuc3R5bGUuZ2V0KCkpIHx8IChwYXJlbnQoKS5zdHlsZUNo
YW5nZSA9PSBTdHlsZTo6Rm9yY2UgJiYgcmVuZGVyZXIucmVxdWlyZXNGb3JjZWRTdHlsZVJlY2Fs
Y1Byb3BhZ2F0aW9uKCkpKSB7Ci0gICAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShXVEZNb3Zl
KHVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKKyAgICAgICAgICAgIHJlbmRl
cmVyLnNldFN0eWxlKFdURk1vdmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFs
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcmVuZGVyZXIuc2V0U3R5bGUoV1RGTW92ZSh1cGRhdGUuc3R5bGUpLCBTdHlsZURp
ZmZlcmVuY2VFcXVhbCk7CisgICAgcmVuZGVyZXIuc2V0U3R5bGUoV1RGTW92ZSgqdXBkYXRlLnN0
eWxlKSwgU3R5bGVEaWZmZXJlbmNlRXF1YWwpOwogfQogCiAjaWYgRU5BQkxFKENTU19SRUdJT05T
KQpAQCAtMjg5LDE3ICsyODksMTcgQEAgc3RhdGljIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbW92
ZVRvRmxvdwogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRl
cmVyKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
Cit2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIo
ZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dSZW5kZXJlciA9IG51bGxw
dHI7CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIHBhcmVudEZsb3dSZW5kZXJlciA9IG1v
dmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCAqc3R5bGUpOworICAgIHBhcmVudEZsb3dS
ZW5kZXJlciA9IG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBzdHlsZSk7CiAjZW5k
aWYKIAotICAgIGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKCpzdHlsZSkpCisgICAgaWYg
KCFlbGVtZW50LnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKICAg
ICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7CkBAIC0z
MjYsNyArMzI2LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZWRTdHlsZTsKICAgICBuZXdS
ZW5kZXJlci0+YW5pbWF0aW9uKCkudXBkYXRlQW5pbWF0aW9ucygqbmV3UmVuZGVyZXIsIGluaXRp
YWxTdHlsZSwgYW5pbWF0ZWRTdHlsZSk7CiAgICAgaWYgKGFuaW1hdGVkU3R5bGUpCi0gICAgICAg
IG5ld1JlbmRlcmVyLT5zZXRTdHlsZUludGVybmFsKFdURk1vdmUoYW5pbWF0ZWRTdHlsZSkpOwor
ICAgICAgICBuZXdSZW5kZXJlci0+c2V0U3R5bGVJbnRlcm5hbChXVEZNb3ZlKCphbmltYXRlZFN0
eWxlKSk7CiAKICAgICBuZXdSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAKQEAgLTQ4Miw3
ICs0ODIsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVPckFmCiAKICAg
ICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBlbGVtZW50VXBkYXRlOwogCi0gICAgYXV0byBuZXdTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50LnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVk
b1N0eWxlKHBzZXVkb0lkLCAmY3VycmVudC5yZW5kZXJlcigpLT5zdHlsZSgpKSk7CisgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqY3VycmVudC5yZW5kZXJlcigpLT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCwgJmN1cnJlbnQucmVuZGVyZXIoKS0+c3R5bGUo
KSkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlOwog
ICAgIGlmIChyZW5kZXJlciAmJiBtX2RvY3VtZW50LmZyYW1lKCktPmFuaW1hdGlvbigpLnVwZGF0
ZUFuaW1hdGlvbnMoKnJlbmRlcmVyLCAqbmV3U3R5bGUsIGFuaW1hdGVkU3R5bGUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJUcmVl
KENvbnRhaW5lck5vZGUmIHJvb3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dFJlbmRlcmVyKFRleHQm
KTsKICAgICB2b2lkIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiwgU3R5bGU6OkVsZW1l
bnRVcGRhdGUmKTsKLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKICAgICB2b2lkIGludmFsaWRhdGVXaGl0ZXNwYWNlT25seVRleHRTaWJs
aW5nc0FmdGVyQXR0YWNoSWZOZWVkZWQoTm9kZSYpOwogICAgIHZvaWQgdXBkYXRlQmVmb3JlT3JB
ZnRlclBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIFBzZXVkb0lkKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIFN0eWxlIHsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNv
bHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVuZGVyU3R5bGUgcmVz
b2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
ZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKTsKIApAQCAtNTUsMTkgKzU1LDE5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckQKIAogICAgIGF1dG8gZG9jdW1l
bnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIAotICAgIGRvY3VtZW50U3R5bGUtPnNl
dERpc3BsYXkoQkxPQ0spOwotICAgIGRvY3VtZW50U3R5bGUtPnNldFJUTE9yZGVyaW5nKGRvY3Vt
ZW50LnZpc3VhbGx5T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2FsT3JkZXIpOwotICAg
IGRvY3VtZW50U3R5bGUtPnNldFpvb20oIWRvY3VtZW50LnByaW50aW5nKCkgPyByZW5kZXJWaWV3
LmZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSA6IDEpOwotICAgIGRvY3VtZW50U3R5bGUtPnNldFBh
Z2VTY2FsZVRyYW5zZm9ybShyZW5kZXJWaWV3LmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsK
LSAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRvY3VtZW50Rm9udERlc2NyaXB0aW9uID0gZG9j
dW1lbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXREaXNw
bGF5KEJMT0NLKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFJUTE9yZGVyaW5nKGRvY3VtZW50LnZp
c3VhbGx5T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2FsT3JkZXIpOworICAgIGRvY3Vt
ZW50U3R5bGUuc2V0Wm9vbSghZG9jdW1lbnQucHJpbnRpbmcoKSA/IHJlbmRlclZpZXcuZnJhbWUo
KS5wYWdlWm9vbUZhY3RvcigpIDogMSk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRQYWdlU2NhbGVU
cmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgRm9u
dENhc2NhZGVEZXNjcmlwdGlvbiBkb2N1bWVudEZvbnREZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5
bGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZG9jdW1lbnRGb250RGVzY3JpcHRpb24uc2V0TG9j
YWxlKGRvY3VtZW50LmNvbnRlbnRMYW5ndWFnZSgpKTsKLSAgICBkb2N1bWVudFN0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oV1RGTW92ZShkb2N1bWVudEZvbnREZXNjcmlwdGlvbikpOworICAgIGRv
Y3VtZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZG9jdW1lbnRGb250RGVzY3Jp
cHRpb24pKTsKIAogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFueSAtd2Via2l0LXVzZXItbW9kaWZ5
IGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgaWZyYW1lLgotICAgIGRvY3VtZW50U3R5bGUtPnNl
dFVzZXJNb2RpZnkoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkgPyBSRUFEX1dSSVRFIDogUkVBRF9P
TkxZKTsKKyAgICBkb2N1bWVudFN0eWxlLnNldFVzZXJNb2RpZnkoZG9jdW1lbnQuaW5EZXNpZ25N
b2RlKCkgPyBSRUFEX1dSSVRFIDogUkVBRF9PTkxZKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
aWYgKGRvY3VtZW50LmluRGVzaWduTW9kZSgpKQotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRU
ZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQoTm9UZXh0U2l6ZUFkanVzdG1lbnQpKTsK
KyAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1l
bnQoTm9UZXh0U2l6ZUFkanVzdG1lbnQpKTsKICNlbmRpZgogCiAgICAgRWxlbWVudCogZG9jRWxl
bWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwpAQCAtNzksMjQgKzc5LDI0IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckQKICAgICAgICAgYXV0byogYm9k
eSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCk7CiAgICAgICAgIFJlbmRlck9iamVjdCogYm9k
eVJlbmRlcmVyID0gYm9keSA/IGJvZHktPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgICAgICBp
ZiAoYm9keVJlbmRlcmVyICYmICFkb2NFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGlj
aXRseVNldFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRXcml0
aW5nTW9kZShib2R5UmVuZGVyZXItPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CisgICAgICAgICAg
ICBkb2N1bWVudFN0eWxlLnNldFdyaXRpbmdNb2RlKGJvZHlSZW5kZXJlci0+c3R5bGUoKS53cml0
aW5nTW9kZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0
V3JpdGluZ01vZGUoZG9jRWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwor
ICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRXcml0aW5nTW9kZShkb2NFbGVtZW50UmVuZGVy
ZXItPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgICAgIGlmIChib2R5UmVuZGVyZXIgJiYg
IWRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkp
Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXREaXJlY3Rpb24oYm9keVJlbmRlcmVyLT5z
dHlsZSgpLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0RGlyZWN0
aW9uKGJvZHlSZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldERpcmVjdGlvbihkb2NFbGVtZW50UmVuZGVyZXIt
PnN0eWxlKCkuZGlyZWN0aW9uKCkpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXREaXJl
Y3Rpb24oZG9jRWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpKTsKICAgICB9CiAK
ICAgICBjb25zdCBQYWdpbmF0aW9uJiBwYWdpbmF0aW9uID0gcmVuZGVyVmlldy5mcmFtZVZpZXco
KS5wYWdpbmF0aW9uKCk7CiAgICAgaWYgKHBhZ2luYXRpb24ubW9kZSAhPSBQYWdpbmF0aW9uOjpV
bnBhZ2luYXRlZCkgewotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRDb2x1bW5TdHlsZXNGcm9t
UGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKLSAgICAgICAgZG9jdW1lbnRTdHlsZS0+
c2V0Q29sdW1uR2FwKHBhZ2luYXRpb24uZ2FwKTsKKyAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRD
b2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKKyAgICAgICAg
ZG9jdW1lbnRTdHlsZS5zZXRDb2x1bW5HYXAocGFnaW5hdGlvbi5nYXApOwogICAgICAgICBpZiAo
cmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKLSAgICAgICAgICAgIHJlbmRlclZp
ZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoKmRvY3VtZW50U3R5bGUpOworICAg
ICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShkb2N1
bWVudFN0eWxlKTsKICAgICAgICAgaWYgKHJlbmRlclZpZXcuZnJhbWUoKS5wYWdlKCktPnBhZ2lu
YXRpb25MaW5lR3JpZEVuYWJsZWQoKSkgewotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0
TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKLSAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUtPnNldExpbmVTbmFwKExpbmVTbmFwQ29udGFpbik7CisgICAgICAgICAg
ICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1n
cmlkIik7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVTbmFwKExpbmVTbmFwQ29u
dGFpbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMSwxNyArMTExLDE3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckQKICAgICBpbnQgc2l6ZSA9IGZvbnRTaXpl
Rm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwgZmFsc2UsIGRvY3VtZW50KTsKICAgICBmb250RGVz
Y3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKICAgICBib29sIHVzZVNWR1pvb21SdWxl
cyA9IGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250RGVz
Y3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzLCBkb2N1bWVudFN0eWxl
LmdldCgpLCBkb2N1bWVudCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUo
Y29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlvbi5p
c0Fic29sdXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsICZkb2N1bWVudFN0eWxlLCBkb2N1bWVu
dCkpOwogCiAgICAgRm9udE9yaWVudGF0aW9uIGZvbnRPcmllbnRhdGlvbjsKICAgICBOb25DSktH
bHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb247Ci0gICAgc3RkOjp0aWUoZm9udE9yaWVu
dGF0aW9uLCBnbHlwaE9yaWVudGF0aW9uKSA9IGRvY3VtZW50U3R5bGUtPmZvbnRBbmRHbHlwaE9y
aWVudGF0aW9uKCk7CisgICAgc3RkOjp0aWUoZm9udE9yaWVudGF0aW9uLCBnbHlwaE9yaWVudGF0
aW9uKSA9IGRvY3VtZW50U3R5bGUuZm9udEFuZEdseXBoT3JpZW50YXRpb24oKTsKICAgICBmb250
RGVzY3JpcHRpb24uc2V0T3JpZW50YXRpb24oZm9udE9yaWVudGF0aW9uKTsKICAgICBmb250RGVz
Y3JpcHRpb24uc2V0Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbihnbHlwaE9yaWVudGF0aW9uKTsKIAot
ICAgIGRvY3VtZW50U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwor
ICAgIGRvY3VtZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAK
LSAgICBkb2N1bWVudFN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmY29uc3RfY2FzdDxEb2N1
bWVudCY+KGRvY3VtZW50KS5mb250U2VsZWN0b3IoKSk7CisgICAgZG9jdW1lbnRTdHlsZS5mb250
Q2FzY2FkZSgpLnVwZGF0ZSgmY29uc3RfY2FzdDxEb2N1bWVudCY+KGRvY3VtZW50KS5mb250U2Vs
ZWN0b3IoKSk7CiAKICAgICByZXR1cm4gZG9jdW1lbnRTdHlsZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIFN0eWxlIHsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9y
RG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKK1JlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVu
dChjb25zdCBEb2N1bWVudCYpOwogCiB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNoYXJpbmdSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw3ICsxMzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFNoYXJpbmdSZXNv
CiAKICAgICBtX2VsZW1lbnRzU2hhcmluZ1N0eWxlLmFkZCgmZWxlbWVudCwgc2hhcmVFbGVtZW50
KTsKIAotICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUodXBkYXRlLmVsZW1lbnRTdHlsZSgq
c2hhcmVFbGVtZW50KSk7CisgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRl
LmVsZW1lbnRTdHlsZSgqc2hhcmVFbGVtZW50KSk7CiB9CiAKIFN0eWxlZEVsZW1lbnQqIFNoYXJp
bmdSZXNvbHZlcjo6ZmluZFNpYmxpbmcoY29uc3QgQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9k
ZSwgdW5zaWduZWQmIGNvdW50KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIHN0YXRpYyB2b2lkIGVuc3VyZVBsYWNlaG9sZGVyU3R5bGUoRG9jdW0KIHsKICAgICBpZiAo
cGxhY2Vob2xkZXJTdHlsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHBsYWNlaG9sZGVyU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCkucmVsZWFzZSgpOworICAgIHBsYWNlaG9sZGVyU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCkucmVsZWFzZSgpOwogICAgIHBsYWNlaG9sZGVyU3R5
bGUtPnNldERpc3BsYXkoTk9ORSk7CiAgICAgcGxhY2Vob2xkZXJTdHlsZS0+c2V0SXNQbGFjZWhv
bGRlclN0eWxlKCk7CiAgICAgcGxhY2Vob2xkZXJTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUo
JmRvY3VtZW50LmZvbnRTZWxlY3RvcigpKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50Lmhh
dmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmICFlbGVtZW50LnJlbmRlcmVyKCkpIHsKICAgICAgICAg
bV9kb2N1bWVudC5zZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCk7Ci0gICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUocGxhY2Vob2xkZXJTdHlsZSk7CisgICAgICAgIHJldHVy
biBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnBsYWNlaG9sZGVyU3R5bGUpOwogICAgIH0KIAogICAg
IGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSB7CkBAIC0yMDUs
NyArMjA1LDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZQogICAg
ICAgICB1cGRhdGUuaXNTeW50aGV0aWMgPSB0cnVlOwogCiAgICAgaWYgKCZlbGVtZW50ID09IG1f
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKLSAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSh1cGRhdGUuc3R5bGUuZ2V0KCkpOworICAgICAgICBt
X2RvY3VtZW50RWxlbWVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUuc3R5
bGUpOwogICAgICAgICBzY29wZSgpLnN0eWxlUmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpKTsKIAogICAgICAgICAvLyBJ
ZiAicmVtIiB1bml0cyBhcmUgdXNlZCBhbnl3aGVyZSBpbiB0aGUgZG9jdW1lbnQsIGFuZCBpZiB0
aGUgZG9jdW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBjaGFuZ2VzLCB0aGVuIGZvcmNlIGZvbnQg
dXBkYXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY28KICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+
aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudE5vZGUoKSkuaXNU
ZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5s
aW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBTVkdBbHRHbHlw
aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQWx0R2x5cGhFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVFNwYW4+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBTVkdBbHRHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdBbHRHbHlwaEVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBT
VkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIH0KIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdFbGxpcHNlPigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdDbGlwUGF0aEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
Q2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBib29sIFNWR0RlZnNFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QK
ICAgICByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRGVmc0VsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVS
UklERShFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbgogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdFbGxpcHNl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdFbGxpcHNlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9OwogCi0gICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQogICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjCiAgICAgICAgIG9iamVjdC0+
c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRl
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24g
MjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZQogICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhhc0hlaWdodCh0cnVlKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdGb3JlaWduT2JqZWN0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJp
ZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAw
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjbwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIC8vIFNWRyAx
LjEgdGVzdHN1aXRlIGV4cGxpY2l0ZWx5IHVzZXMgY29uc3RydWN0cyBsaWtlIDxnIGRpc3BsYXk9
Im5vbmUiPjxsaW5lYXJHcmFkaWVudD4KICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGNyZWF0ZSBy
ZW5kZXJlcnMgZm9yIHRoZSA8Zz4gJiA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQsIHRob3VnaCB0
aGUKICAgICAvLyBzdWJ0cmVlIG1heSBiZSBoaWRkZW4gLSB3ZSBvbmx5IHdhbnQgdGhlIHJlc291
cmNlIHJlbmRlcmVycyB0byBleGlzdCBzbyB0aGV5IGNhbiBiZQogICAgIC8vIHJlZmVyZW5jZWQg
ZnJvbSBzb21ld2hlcmUgZWxzZS4KLSAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FKQor
ICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIEZsb2F0UmVjdCBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OmdldEJCb3goU3QKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0QkJveCh0
aGlzLCBzdHlsZVVwZGF0ZVN0cmF0ZWd5KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0dyYXBoaWNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHR3JhcGhpY3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0aC1iYXNl
ZCBkcmF3aW5nCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1BhdGg+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggcmVu
ZGVyIGFzIHBhdGhzCiAgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpOwotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogcHJvdGVjdGVk
OgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2UKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW1hZ2U+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShy
ZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEF0
dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAotICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lk
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudD4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKAog
ICAgIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRBbmdsZSwgYW5nbGUpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
b3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFNWR01hc2tFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNW
R1Jlc291cmNlTWFza2VyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBGbG9hdFJlY3Qg
U1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3goU3R5bGVVCiAgICAgcmV0dXJuIHJlbmRlcmVyLT5wYXRo
KCkuYm91bmRpbmdSZWN0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIC8vIEJ5IGRlZmF1bHQs
IGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdpbmcKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNp
b24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCgKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAwMDMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTVkdSZWN0RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZWN0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIFNWR1NWR0VsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU1ZHRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
U1ZHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKGlzT3V0ZXJtb3N0U1ZHU1ZHRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUm9vdD4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
cmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR1N0b3BFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJTVkdHcmFkaWVudFN0b3A+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHU3RvcEVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBTVkdT
d2l0Y2hFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N3aXRjaEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHU3dpdGNoRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOX09WRVJSSURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9s
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBTVkdTeW1i
b2xFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZQogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnZpZXdCb3hBdHRyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N5
bWJvbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1N5bWJvbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlz
aW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMjAw
MDMxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQKICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RSZWZFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIFJlZjxTVkdUU3BhbkVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3IKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUU3BhbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVFNwYW4+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RTcGFuRWxlbWVudC5oCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAgICAgICAgICAgICAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgQWZm
aW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjphbmltYXRlZAogICAgIHJldHVybiBtYXRyaXg7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVGV4dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdU
ZXh0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBv
dmVycmlkZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgU1ZH
VGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0
UGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdUZXh0UGF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMDAzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDAwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2Myw3ICsyNjMsNyBAQCBTVkdFbGVtZW50KiBTVkdVc2VFbGVtZW50Ojp0YXJnZXRDbG9u
ZSgpCiAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJvb3QtPmZpcnN0Q2hpbGQoKSk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdVc2VFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdVc2VFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgYm9vbCB3aWxsUmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9DbGlwUGF0aChQYXRoJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>