<?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>229622</bug_id>
          
          <creation_ts>2021-08-27 12:17:54 -0700</creation_ts>
          <short_desc>Rename enums in CSSUnitType to CamelCase and remove CSS_ prefix</short_desc>
          <delta_ts>2024-09-02 20:34:10 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Kiet Ho">kiet.ho</reporter>
          <assigned_to name="zak ridouh">zakr</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788112</commentid>
    <comment_count>0</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-08-27 12:17:54 -0700</bug_when>
    <thetext>Rename enums in CSSUnitType to CamelCase and remove CSS_ prefix.

Most renames follow the format CSSUnitType::CSS_XXX_YYY =&gt; CSSUnitType::XxxYyy except for:
* If there exists a method CSSPrimitiveValue::IsXXXX(), then it&apos;s renamed to CssUnitType::XXXX instead. For example, CSS_VW is renamed to ViewportPercentageWidth because of CSSPrimitiveValue::IsViewportPercentageWidth()
* CSS_S is renamed to Second

Feel free to comment if you think an enum should be renamed to something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788118</commentid>
    <comment_count>1</comment_count>
      <attachid>436657</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-08-27 12:34:31 -0700</bug_when>
    <thetext>Created attachment 436657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788177</commentid>
    <comment_count>2</comment_count>
      <attachid>436675</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-08-27 14:29:12 -0700</bug_when>
    <thetext>Created attachment 436675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788179</commentid>
    <comment_count>3</comment_count>
      <attachid>436675</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-27 14:35:54 -0700</bug_when>
    <thetext>Comment on attachment 436675
Patch

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

&gt; Source/WebCore/css/CSSUnits.h:64
&gt; +    DotsPerInch = 31,
&gt; +    DotsPerCentimeter = 32,

We use Cm and In above so these should be DotsPerCm and DotsPerIn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788188</commentid>
    <comment_count>4</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-08-27 14:50:53 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 436675 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436675&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSUnits.h:64
&gt; &gt; +    DotsPerInch = 31,
&gt; &gt; +    DotsPerCentimeter = 32,
&gt; 
&gt; We use Cm and In above so these should be DotsPerCm and DotsPerIn

Or we could change Cm =&gt; Centimeter and In =&gt; Inch, let me know your preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788550</commentid>
    <comment_count>5</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-08-30 09:52:53 -0700</bug_when>
    <thetext>I&apos;m putting on hold before https://bugs.webkit.org/show_bug.cgi?id=229672 and https://bugs.webkit.org/show_bug.cgi?id=204276 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790280</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-03 12:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/82734077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904342</commentid>
    <comment_count>7</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-09 06:11:58 -0700</bug_when>
    <thetext>It seems that r+ patch didn&apos;t landed and this change is also not implemented. Example:

https://github.com/WebKit/WebKit/blob/387077670b14ff83b0f1ea2c1f65be35ad962ad0/Source/WebCore/animation/CSSPropertyAnimation.cpp#L472

Do we need this? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2054240</commentid>
    <comment_count>8</comment_count>
    <who name="zak ridouh">zakr</who>
    <bug_when>2024-08-20 16:00:44 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/32490</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436657</attachid>
            <date>2021-08-27 12:34:31 -0700</date>
            <delta_ts>2021-08-27 14:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229622-20210827123429.patch</filename>
            <type>text/plain</type>
            <size>358824</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FiMGUwZTNmNzYwOGU4
NGNjYTY0NmI0NGU0MDE3M2MyMjdkNDJlYS4uODhiYjNiNmU1ZTBlNzRhMTFhYTRmZmY4ZjkzMzY5
ZjcxYTdiMjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4OSBAQAorMjAyMS0wOC0yNyAgS2ll
dCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgZW51bXMgaW4gQ1NTVW5p
dFR5cGUgdG8gQ2FtZWxDYXNlIGFuZCByZW1vdmUgQ1NTXyBwcmVmaXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3QgcmVuYW1lcyBmb2xsb3cgdGhl
IGZvcm1hdCBDU1NVbml0VHlwZTo6Q1NTX1hYWF9ZWVkgPT4gQ1NTVW5pdFR5cGU6Olh4eFl5eQor
ICAgICAgICBleGNlcHQgZm9yOgorICAgICAgICAqIElmIHRoZXJlIGV4aXN0cyBhIG1ldGhvZCBD
U1NQcmltaXRpdmVWYWx1ZTo6SXNYWFhYKCksIHRoZW4gaXQncyByZW5hbWVkIHRvCisgICAgICAg
ICAgQ3NzVW5pdFR5cGU6OlhYWFggaW5zdGVhZC4gRm9yIGV4YW1wbGUsIENTU19WVyBpcyByZW5h
bWVkIHRvCisgICAgICAgICAgVmlld3BvcnRQZXJjZW50YWdlV2lkdGggYmVjYXVzZSBvZiBDU1NQ
cmltaXRpdmVWYWx1ZTo6SXNWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCgpCisgICAgICAgICogQ1NT
X1MgaXMgcmVuYW1lZCB0byBTZWNvbmQKKworICAgICAgICAqIGFuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc2ZhZGVCbGVuZCk6CisgICAg
ICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp2YWx1ZUZvckltYWdlU2xpY2VTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21BZGp1c3RlZFBpeGVs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6em9vbUFkanVzdGVkTnVtYmVyVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6dmFsdWVGb3JSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBl
cmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9y
UXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdHJpeFRyYW5zZm9ybVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVkU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRS
b3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TGVuZ3RoRm9yWm9vbSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbHVlRm9yR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGF5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6ZHVyYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0VW5kZXJsaW5lT2Zmc2V0VG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzc1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6YWx0VGV4
dFRvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudFRvQ1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y291bnRlclRvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRXZWlnaHRGcm9tU3R5bGVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250Tm9uS2V5d29y
ZFN0cmV0Y2hGcm9tU3R5bGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpmb250Tm9uS2V5d29yZFN0eWxlRnJvbVN0eWxlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Zm9udFNob3J0aGFuZFZhbHVlRm9yU2VsZWN0aW9uUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5T
dHlsZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCBjb25zdCk6CisgICAgICAgICogY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUl0YWxpY1JhbmdlKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udFN0eWxlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3Rv
cHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kR3JhZGllbnRTdG9wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNyZWF0ZURlcHJlY2F0ZWRDU1NP
TVdyYXBwZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmNsZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVMZW5ndGhEb3VibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmljYWxV
bml0c1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
aXNaZXJvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc1Bv
c2l0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc05l
Z2F0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc0Nl
bnRlclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Ojpkb3VibGVWYWx1ZUludGVybmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpzdHJpbmdWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6dW5pdFR5cGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbGxl
Y3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6aXNGb250UmVsYXRpdmVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmlzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Ojppc1Jlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlRGVncmVlcyk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Igc2hvcnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVu
c2lnbmVkIHNob3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIHVuc2lnbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBmbG9hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUNsYW1wVmFsdWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtbkZpbGwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtblNwYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRpbmdU
b0xlbmd0aFJlcXVpcmVzTm9uTnVsbFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTVG9T
dHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGll
Y2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlUXVhZCk6CisgICAgICAgICogY3NzL0NTU1VuaXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnVuaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlOjpjYW5vbmljYWxVbml0VHlw
ZUZvckNhdGVnb3J5KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IGNzcy9DU1NVbml0cy5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RhdGljQ1NTVmFsdWVQb29sOjpTdGF0aWNDU1NWYWx1ZVBvb2wpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZSk6CisgICAgICAgICogY3Nz
L0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpnZXRGbG9hdFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaDoKKyAgICAg
ICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb3Vi
bGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpldmFsdWF0ZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGNzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZWF0
dXJlV2l0aFZhbGlkSWRlbnQpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhPcmllbnRhdGlvblRvQ1NTUHJp
bWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3Nz
L2NhbGMvQ1NTQ2FsY0NhdGVnb3J5TWFwcGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
VW5pdENhdGVnb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0aW9uQ2F0ZWdvcnlGb3JD
b21iaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjYW5vbmljYWxVbml0VHlwZUZvckNhbGN1
bGF0aW9uQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzRG91YmxlVmFsdWUpOgorICAg
ICAgICAqIGNzcy9jYWxjL0NTU0NhbGNPcGVyYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnByaW1pdGl2ZVR5cGVGb3JDb21iaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJzaW9uVG9BZGRWYWx1ZXNXaXRoVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY09w
ZXJhdGlvbk5vZGU6OmNvbWJpbmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxj
T3BlcmF0aW9uTm9kZTo6cHJpbWl0aXZlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NDYWxjT3BlcmF0aW9uTm9kZTo6ZG91YmxlVmFsdWUgY29uc3QpOgorICAgICAgICAqIGNzcy9j
YWxjL0NTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6YWRkKToKKyAgICAgICAgKiBjc3MvY2FsYy9DU1NDYWxj
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxlbmRIYWxmKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNTUyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVBbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNp
bXBsZUxlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JJbnRPclBlcmNl
bnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VOdW1lcmljQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VUcmFuc2Zvcm1BbmdsZUFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZy
b21UcmllKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvUGVyY2VudGFn
ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVRyYW5zZm9ybU9yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdW1lRm9udFdlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdW1lQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQW5pbWF0aW9uTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lUGVyc3BlY3RpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZVRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lUG9zaXRpb25M
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQ291bnRlckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVJl
ZmxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUdyaWRCcmVhZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlcjo6Y29uc3VtZVN5c3RlbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXI6OmNvbnN1bWVGbGV4KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OkNhbGNQYXJzZXI6OmNvbnN1bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q2FsY1BhcnNlcjo6Y29uc3VtZU51bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRlZ2Vy
VHlwZUNTU1ByaW1pdGl2ZVZhbHVlV2l0aENhbGNXaXRoS25vd25Ub2tlblR5cGVGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJbnRl
Z2VyVHlwZUNTU1ByaW1pdGl2ZVZhbHVlV2l0aENhbGNXaXRoS25vd25Ub2tlblR5cGVOdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTnVt
YmVyUmF3V2l0aEtub3duVG9rZW5UeXBlSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUGVyY2VudFJhd1dpdGhLbm93blRva2VuVHlwZUlk
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZVBlcmNlbnRDU1NQcmltaXRpdmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG9rZW5UeXBlUGVyY2Vu
dGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1
bWVMZW5ndGhSYXdXaXRoS25vd25Ub2tlblR5cGVEaW1lbnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGVuZ3RoUmF3V2l0aEtub3duVG9r
ZW5UeXBlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZUFuZ2xlUmF3V2l0aEtub3duVG9rZW5UeXBlRGltZW5zaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUFuZ2xlUmF3V2l0aEtu
b3duVG9rZW5UeXBlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZVRpbWVDU1NQcmltaXRpdmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG9r
ZW5UeXBlRGltZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y29uc3VtZVRpbWVDU1NQcmltaXRpdmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG9rZW5U
eXBlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Y29uc3VtZVJlc29sdXRpb25DU1NQcmltaXRpdmVWYWx1ZVdpdGhLbm93blRva2VuVHlwZURpbWVu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1
bWVBbmdsZVJhd09yTnVtYmVyUmF3QWxsb3dpbmdTeW1ib2xUYWJsZUlkZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU51bWJlclJhd09yUGVy
Y2VudFJhd0FsbG93aW5nU3ltYm9sVGFibGVJZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVGb250V2VpZ2h0TnVtYmVyV29ya2VyU2FmZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
VXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VS
ZWxhdGl2ZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVIV0JQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VSZWxhdGl2
ZUxhYlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpwYXJzZVJlbGF0aXZlTENIUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVDb2xvckZ1bmN0aW9uRm9yUkdCVHlw
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJl
bGF0aXZlQ29sb3JGdW5jdGlvbkZvclhZWlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUNyb3NzRmFkZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVGaWx0ZXJGdW5jdGlvbik6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzV29ya2VyU2FmZTo6Y29uc3VtZUZvbnRTdHls
ZVJhbmdlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVWYWx1ZSk6CisgICAg
ICAgICogY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6Y29tcHV0ZUxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6ZWZmZWN0aXZlU2l6ZURlZmF1bHRWYWx1ZSk6Cisg
ICAgICAgICogY3NzL3R5cGVkb20vU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6cmVpZnlWYWx1ZSk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0ZWRGb250U2l6ZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5Rm9u
dFNpemVGcm9tQ1NTVmFsdWUpOgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5n
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENoYW5nZXM6OmNyZWF0ZVN0eWxlUHJvcGVy
dGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUxpc3RGb3JTaGFkb3cpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKHN0cmlu
Z0Zyb21DU1NWYWx1ZSk6CisgICAgICAgIChmbG9hdFZhbHVlRnJvbVByaW1pdGl2ZVZhbHVlKToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVz
VG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRkSFRNTExlbmd0aFRv
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxI
aW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSFJFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRz
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxI
aW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmF1dG9GaWxsU3Ryb25nUGFzc3dvcmRNYXNrSW1hZ2UpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWV0ZXJFbGVtZW50OjpkaWRFbGVtZW50U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Ojpj
b2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRh
dGlvbk1lc3NhZ2U6OmFkanVzdEJ1YmJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRp
dEJ1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVUZXh0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6dXBkYXRlVGV4dFRyYWNrU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1ZhbHVlRWxlbWVu
dDo6c2V0V2lkdGhQZXJjZW50YWdlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVt
ZW50OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
R2VuZXJpYzo6c2V0Rm9udFNpemUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6ZGlzcGxheUxh
c3RUZXh0VHJhY2tDdWVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp3aWxsUmVt
b3ZlVGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6cHJlcGFy
ZVJlZ2lvbkRpc3BsYXlUcmVlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnNBdENhcmV0KToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVkUGFnZU1hcmdpbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpyZXNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVybmFsUGFkZGluZ0JveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zV2l0aEZvcm1Db250cm9sUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlIGNv
bnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V2Via2l0SHlw
aGVuYXRlTGltaXRMaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydENsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjptbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6aW5jaExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbik6CisgICAgICAgICogc3ZnL1NWR0xl
bmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByaW1pdGl2ZVR5cGVUb0xlbmd0aFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZSk6CisKIDIw
MjEtMDgtMjcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNzY4ODIpOiBTaGFkb3cgdHJlZXMgbWF5IHVzZSBzdGFsZSBzdHlsZSBpbmZv
cm1hdGlvbiBhZnRlciBpbmxpbmUgc3R5bGVzaGVldCBpcyBtdXRhdGVkIHZpYSBDU1NPTQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1YzU3YzBlNmUyMzQ3ODJiYzg2NTZjYjZlZGE2NDExMjYxMzhhMGE1Li4xYjhkNWEw
NTVkZTMyN2UxYmRiMTk0NzdiMmU2NjYwZDFjMjFkMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTA4LTI3ICBLaWV0IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBlbnVtcyBpbiBDU1NVbml0VHlwZSB0byBDYW1lbENhc2UgYW5kIHJlbW92ZSBDU1NfIHBy
ZWZpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
NjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbkNob2ljZUFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2Vv
bWV0cnkpOgorCiAyMDIxLTA4LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCBhIHR5cG8gaW4gYEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZGVjb2RlKClgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcAppbmRleCA0NjQ5Mjk4ZDgxYzk4Yjg0NTU1ZjFiZjExYzE0OTAzMzVjZTlhNmNk
Li45NmQ4M2Q2ZjVjZDA1NDlhOTRlMGRhZTMyNGNhMTFjNDU4OWNiMTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTQ1Myw3
ICs0NTMsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBjcm9zc2ZhZGVCbGVu
ZChTdHlsZUNhY2hlZEltYWdlKiBmcm9tU3R5bGVJbWFnZQogCiAgICAgYXV0byBmcm9tSW1hZ2VW
YWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSgqZnJvbVN0eWxlSW1hZ2UtPmNhY2hlZEltYWdl
KCkpOwogICAgIGF1dG8gdG9JbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKCp0b1N0
eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkpOwotICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjb250ZXh0LnByb2dyZXNzLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUik7CisgICAgYXV0byBwZXJjZW50YWdlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKGNvbnRleHQucHJvZ3Jlc3MsIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogCiAgICAgYXV0
byBjcm9zc2ZhZGVWYWx1ZSA9IENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShmcm9t
SW1hZ2VWYWx1ZSksIFdURk1vdmUodG9JbWFnZVZhbHVlKSwgV1RGTW92ZShwZXJjZW50YWdlVmFs
dWUpKTsKICAgICByZXR1cm4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY3Jv
c3NmYWRlVmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjJiYjE0NGVlYzc5ZjJhNGM1NDBkY2Q1M2YxN2M5MDA1
ZWI4ZGI5NS4uZGIyOGRkOWEwNDc4OTQyNWZmZGJkN2UzYjM1NWFhYTQzZGNjZDk4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTEwNywxNSArMTA3LDE1IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVl
Rm9ySW1hZ2VTbGljZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVGhlc2UgdmFs
dWVzIGNhbiBiZSBwZXJjZW50YWdlcywgbnVtYmVycywgb3Igd2hpbGUgYW4gYW5pbWF0aW9uIG9m
IG1peGVkIHR5cGVzIGlzIGluIHByb2dyZXNzLAogICAgIC8vIGEgY2FsY3VsYXRpb24gdGhhdCBj
b21iaW5lcyBhIHBlcmNlbnRhZ2UgYW5kIGEgbnVtYmVyLgogICAgIGlmIChsZW5ndGguaXNQZXJj
ZW50KCkpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAg
ICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxlbmd0aC5w
ZXJjZW50KCksIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICBpZiAobGVuZ3RoLmlzQXV0
bygpIHx8IGxlbmd0aC5pc0ZpeGVkKCkpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxlbmd0aC52YWx1ZSgpLCBDU1NVbml0VHlwZTo6Q1NTX05V
TUJFUik7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKGxlbmd0aC52YWx1ZSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKIAogICAgIC8vIENhbGN1
bGF0aW5nIHRoZSBhY3R1YWwgbGVuZ3RoIGN1cnJlbnRseSBpbiB1c2Ugd291bGQgcmVxdWlyZSBt
b3N0IG9mIHRoZSBjb2RlIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNl
SW1hZ2UuCiAgICAgLy8gQW5kIGV2ZW4gaWYgd2UgY291bGQgZG8gdGhhdCwgaXQncyBub3QgY2xl
YXIgaWYgdGhhdCdzIGV4YWN0bHkgd2hhdCB3ZSdkIHdhbnQgZHVyaW5nIGFuaW1hdGlvbi4KICAg
ICAvLyBGSVhNRTogRm9yIG5vdywganVzdCByZXR1cm4gMC4KICAgICBBU1NFUlQobGVuZ3RoLmlz
Q2FsY3VsYXRlZCgpKTsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoMCwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiB9
CiAKIHN0YXRpYyBSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlU2xpY2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VR
dWFkKGNvbnN0IExlbmd0aEJveCYgYm94LCBjCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKTsKIAogICAgIGlmIChib3gudG9wKCkuaXNSZWxhdGl2ZSgp
KQotICAgICAgICB0b3AgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LnRvcCgpLnZhbHVl
KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgdG9wID0gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGJveC50b3AoKS52YWx1ZSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAg
ICBlbHNlCiAgICAgICAgIHRvcCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3gudG9wKCks
IHN0eWxlKTsKIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94LCBjCiAg
ICAgICAgIGxlZnQgPSB0b3A7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGJveC5yaWdodCgp
LmlzUmVsYXRpdmUoKSkKLSAgICAgICAgICAgIHJpZ2h0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGJveC5yaWdodCgpLnZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAg
ICAgICAgIHJpZ2h0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC5yaWdodCgpLnZhbHVl
KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByaWdo
dCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3gucmlnaHQoKSwgc3R5bGUpOwogCkBAIC0x
ODYsNyArMTg2LDcgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JOaW5l
UGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBib3gsIGMKICAgICAgICAgICAgIGxlZnQg
PSByaWdodDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChib3guYm90dG9tKCku
aXNSZWxhdGl2ZSgpKQotICAgICAgICAgICAgICAgIGJvdHRvbSA9IGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShib3guYm90dG9tKCkudmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwor
ICAgICAgICAgICAgICAgIGJvdHRvbSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3guYm90
dG9tKCkudmFsdWUoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgYm90dG9tID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC5ib3R0
b20oKSwgc3R5bGUpOwogCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBib3gs
IGMKICAgICAgICAgICAgICAgICBsZWZ0ID0gcmlnaHQ7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYm94LmxlZnQoKS5pc1JlbGF0aXZlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGxlZnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LmxlZnQoKS52YWx1ZSgp
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LmxlZnQoKS52YWx1ZSgpLCBDU1NVbml0VHlwZTo6
TnVtYmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGxlZnQg
PSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LmxlZnQoKSwgc3R5bGUpOwogICAgICAgICAg
ICAgfQpAQCAtMjQwLDEyICsyNDAsMTIgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JO
aW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UsIGNvbnN0IFIKIAogaW5s
aW5lIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUo
ZG91YmxlIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoYWRqdXN0RmxvYXRGb3JBYnNvbHV0
ZVpvb20odmFsdWUsIHN0eWxlKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoYWRqdXN0RmxvYXRGb3JBYnNvbHV0
ZVpvb20odmFsdWUsIHN0eWxlKSwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogaW5saW5lIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHpvb21BZGp1c3RlZE51bWJlclZhbHVlKGRvdWJsZSB2
YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlIC8gc3R5bGUuZWZmZWN0aXZlWm9vbSgp
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlVmFsdWUodmFsdWUgLyBzdHlsZS5lZmZlY3RpdmVab29tKCksIENTU1Vu
aXRUeXBlOjpOdW1iZXIpOwogfQogCiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1
ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwg
Y29uc3QKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0OwogICAgIGlmIChy
ZWZsZWN0aW9uLT5vZmZzZXQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgb2Zm
c2V0ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShyZWZsZWN0aW9uLT5v
ZmZzZXQoKS5wZXJjZW50KCksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAg
IG9mZnNldCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocmVmbGVjdGlv
bi0+b2Zmc2V0KCkucGVyY2VudCgpLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgZWxz
ZQogICAgICAgICBvZmZzZXQgPSB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlZmxlY3Rpb24tPm9m
ZnNldCgpLnZhbHVlKCksIHN0eWxlKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENv
bG9yKGNvbnN0IFJlCiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlT3Ja
b29tQWRqdXN0ZWRWYWx1ZShMZW5ndGggbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRh
Z2UpOwogICAgIAogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGxl
bmd0aCwgc3R5bGUpOwogfQpAQCAtNDczLDggKzQ3Myw4IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHZhbHVlRm9yUXVvdGVzKGNvbnN0IFF1b3Rlc0RhdGEqIHF1b3RlcykKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocXVvdGVz
LT5vcGVuUXVvdGUoaSksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKSk7Ci0gICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHF1b3Rlcy0+Y2xv
c2VRdW90ZShpKSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocXVvdGVzLT5vcGVuUXVv
dGUoaSksIENTU1VuaXRUeXBlOjpTdHJpbmcpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocXVvdGVzLT5jbG9zZVF1b3RlKGkpLCBD
U1NVbml0VHlwZTo6U3RyaW5nKSk7CiAgICAgfQogICAgIHJldHVybiBsaXN0OwogfQpAQCAtNTQ0
LDM0ICs1NDQsMzQgQEAgc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBtYXRyaXhUcmFuc2Zv
cm1WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHIKICAgICBpZiAodHJhbnNmb3Jt
LmlzQWZmaW5lKCkpIHsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVNYXRyaXgpOwogCi0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5hKCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5iKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0g
ICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRy
YW5zZm9ybS5jKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9y
bVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5kKCksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5hKCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUodHJhbnNmb3JtLmIoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICB0cmFu
c2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0uYygp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5kKCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCh6b29tQWRqdXN0ZWROdW1iZXJW
YWx1ZSh0cmFuc2Zvcm0uZSgpLCBzdHlsZSkpOwogICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBw
ZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9ybS5mKCksIHN0eWxlKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVh
dGUoQ1NTVmFsdWVNYXRyaXgzZCk7CiAKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0xMSgpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTEyKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0g
ICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRy
YW5zZm9ybS5tMTMoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgdHJhbnNm
b3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0xNCgp
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTExKCksIENTU1VuaXRUeXBl
OjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUodHJhbnNmb3JtLm0xMigpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAg
ICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5z
Zm9ybS5tMTMoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1
ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTE0KCksIENTU1Vu
aXRUeXBlOjpOdW1iZXIpKTsKIAotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTIxKCksIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHRyYW5zZm9ybS5tMjIoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAg
ICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNm
b3JtLm0yMygpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTI0KCksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMjEoKSwgQ1NTVW5pdFR5cGU6Ok51
bWJlcikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZSh0cmFuc2Zvcm0ubTIyKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAg
dHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3Jt
Lm0yMygpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMjQoKSwgQ1NTVW5pdFR5
cGU6Ok51bWJlcikpOwogCi0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMzEoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIp
KTsKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUodHJhbnNmb3JtLm0zMigpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICB0
cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0u
bTMzKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVl
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMzQoKSwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0zMSgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHRyYW5zZm9ybS5tMzIoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICB0cmFu
c2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTMz
KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0zNCgpLCBDU1NVbml0VHlwZTo6
TnVtYmVyKSk7CiAKICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCh6b29tQWRqdXN0ZWRO
dW1iZXJWYWx1ZSh0cmFuc2Zvcm0ubTQxKCksIHN0eWxlKSk7CiAgICAgICAgIHRyYW5zZm9ybVZh
bHVlLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFsdWUodHJhbnNmb3JtLm00MigpLCBzdHls
ZSkpOwogICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKHpvb21BZGp1c3RlZE51bWJlclZh
bHVlKHRyYW5zZm9ybS5tNDMoKSwgc3R5bGUpKTsKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm00NCgpLCBDU1NVbml0VHlw
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTQ0KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWUucmVsZWFzZU5vbk51bGwoKTsKQEAg
LTYzNywxMiArNjM3LDEyIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvbXB1dGVkU2NhbGUoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0CiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAKICAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzY2FsZS0+eCgpLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUikpOworICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc2NhbGUtPngoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgIGlmIChzY2FsZS0+
eigpICE9IDEpIHsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzY2FsZS0+eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNjYWxlLT56KCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc2NhbGUtPnkoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNjYWxlLT56KCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpKTsKICAgICB9IGVsc2UgaWYgKHNjYWxlLT54KCkgIT0gc2NhbGUtPnkoKSkKLSAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzY2FsZS0+eSgpLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHNjYWxlLT55KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICByZXR1cm4g
bGlzdDsKIH0KIApAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvbXB1
dGVkUm90YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7CiAKICAgICBpZiAoIXJvdGF0ZS0+aXMzRE9wZXJhdGlvbigpIHx8ICghcm90YXRlLT54
KCkgJiYgIXJvdGF0ZS0+eSgpICYmIHJvdGF0ZS0+eigpKSkKLSAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShyb3RhdGUtPmFuZ2xlKCksIENTU1VuaXRUeXBlOjpDU1NfREVH
KTsKKyAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyb3RhdGUtPmFuZ2xl
KCksIENTU1VuaXRUeXBlOjpEZWcpOwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCkBAIC02NjMsMTkgKzY2MywxOSBAQCBzdGF0aWMgUmVm
PENTU1ZhbHVlPiBjb21wdXRlZFJvdGF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJTdHlsZSYgcwogICAgIGVsc2UgaWYgKCFyb3RhdGUtPngoKSAmJiByb3RhdGUtPnkoKSAm
JiAhcm90YXRlLT56KCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlWSkpOwogICAgIGVsc2UgewotICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJvdGF0ZS0+eCgpLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUikpOwotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHJvdGF0ZS0+eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJvdGF0ZS0+eigpLCBDU1NVbml0VHlw
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHJvdGF0ZS0+eCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocm90YXRlLT55KCksIENTU1VuaXRUeXBl
OjpOdW1iZXIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShyb3RhdGUtPnooKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgIH0KIAotICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocm90YXRlLT5hbmdsZSgpLCBDU1NVbml0
VHlwZTo6Q1NTX0RFRykpOworICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUocm90YXRlLT5hbmdsZSgpLCBDU1NVbml0VHlwZTo6RGVnKSk7CiAKICAgICByZXR1cm4gbGlz
dDsKIH0KIAogc3RhdGljIGlubGluZSBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGFkanVzdExlbmd0
aEZvclpvb20oZG91YmxlIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBBZGp1c3RQ
aXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQogewotICAgIHJldHVybiBhZGp1c3Qg
PT0gQWRqdXN0UGl4ZWxWYWx1ZXMgPyB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aCwgc3R5
bGUpIDogQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsZW5ndGgsIENTU1Vu
aXRUeXBlOjpDU1NfUFgpOworICAgIHJldHVybiBhZGp1c3QgPT0gQWRqdXN0UGl4ZWxWYWx1ZXMg
PyB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aCwgc3R5bGUpIDogQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsZW5ndGgsIENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5ndGhGb3Jab29tKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEFkanVzdFBpeGVs
VmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCkBAIC03MTYsMzMgKzcxNiwzMyBAQCBSZWY8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgYwogCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgp
ID09IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24mIHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocmVmZXJlbmNlT3BlcmF0aW9uLnVybCgpLCBDU1NV
bml0VHlwZTo6Q1NTX1VSSSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShyZWZlcmVuY2VPcGVyYXRpb24udXJsKCksIENTU1VuaXRUeXBlOjpVUkkp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVl
PiBmaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewogICAg
ICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1Zh
bHVlR3JheXNjYWxlKTsKLSAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0
aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikp
OworICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9w
ZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpTRVBJQTogewogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1
ZTo6Y3JlYXRlKENTU1ZhbHVlU2VwaWEpOwotICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBD
U1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVTYXR1cmF0ZSk7Ci0gICAgICAgICAgICAg
ICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQo
KSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1
ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlw
ZTo6TnVtYmVyKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewogICAgICAgICAgICAg
ICAgIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlSHVlUm90
YXRlKTsKLSAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0
ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykpOworICAgICAgICAg
ICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1v
dW50KCksIENTU1VuaXRUeXBlOjpEZWcpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKICAg
ICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NW
YWx1ZUludmVydCk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1C
RVIpKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
PihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6QVBQTEVfSU5WRVJUX0xJR0hUTkVTUzogewpAQCAtNzUxLDE3ICs3NTEsMTcg
QEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CiAgICAgICAgICAgICAgICAgZmlsdGVyVmFs
dWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVPcGFjaXR5KTsKLSAgICAgICAg
ICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3du
Y2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRp
b24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAgICAg
IGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1v
dW50KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNT
OiB7CiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVh
dGUoQ1NTVmFsdWVCcmlnaHRuZXNzKTsKLSAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlw
ZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewogICAgICAgICAgICAgICAgIGZpbHRl
clZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlQ29udHJhc3QpOwotICAg
ICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9w
ZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAg
ICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9u
KS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6
IHsKQEAgLTc5MSw3ICs3OTEsNyBAQCBSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYwogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdyaWRM
ZW5ndGgmIHRyYWNrQnJlYWR0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGlm
ICghdHJhY2tCcmVhZHRoLmlzTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRyYWNrQnJlYWR0aC5mbGV4KCksIENTU1VuaXRUeXBl
OjpDU1NfRlIpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZSh0cmFja0JyZWFkdGguZmxleCgpLCBDU1NVbml0VHlwZTo6RmxleCk7CiAKICAgICBj
b25zdCBMZW5ndGgmIHRyYWNrQnJlYWR0aExlbmd0aCA9IHRyYWNrQnJlYWR0aC5sZW5ndGgoKTsK
ICAgICBpZiAodHJhY2tCcmVhZHRoTGVuZ3RoLmlzQXV0bygpKQpAQCAtODEyLDcgKzgxMiw3IEBA
IHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZShjb25z
dCBHcmlkVHJhY2tTaXplJiB0cmFja1NpCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUKHRy
YWNrU2l6ZS50eXBlKCkgPT0gTWluTWF4VHJhY2tTaXppbmcpOwogICAgICAgICBpZiAodHJhY2tT
aXplLm1pblRyYWNrQnJlYWR0aCgpLmlzQXV0bygpICYmIHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFk
dGgoKS5pc0ZsZXgoKSkKLSAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4KCksIENTU1Vu
aXRUeXBlOjpDU1NfRlIpOworICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUodHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmZsZXgoKSwgQ1NT
VW5pdFR5cGU6OkZsZXgpOwogCiAgICAgICAgIGF1dG8gbWluTWF4VHJhY2tCcmVhZHRocyA9IENT
U0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1pbm1heCk7CiAgICAgICAgIG1pbk1heFRy
YWNrQnJlYWR0aHMtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJh
Y2tTaXplLm1pblRyYWNrQnJlYWR0aCgpLCBzdHlsZSkpOwpAQCAtMTA0Niw5ICsxMDQ2LDkgQEAg
c3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0
aW9uJiBwb3NpdGlvbikKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzU3BhbigpKSB7CiAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3Bhbikp
OwotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBvc2l0aW9u
LnNwYW5Qb3NpdGlvbigpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCksIENTU1VuaXRUeXBlOjpO
dW1iZXIpKTsKIAogICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUN1c3RvbUlkZW50KHBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKSkpOwpAQCAtMTMyNCwxMCArMTMyNCwxMCBAQCBzdGF0aWMgUmVm
PENTU1ZhbHVlTGlzdD4gZGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25M
aXN0KQogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBpZiAoYW5pbWF0aW9uTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFuaW1hdGlvbkxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuZGVs
YXkoKSwgQ1NTVW5pdFR5cGU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGFuaW1hdGlvbkxpc3QtPmFuaW1hdGlvbihpKS5kZWxheSgp
LCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0
aGF0IGluaXRpYWxBbmltYXRpb25EZWxheSgpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMg
YW5kIGFuaW1hdGlvbnMKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NVbml0VHlwZTo6Q1NTX1MpKTsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246Omlu
aXRpYWxEZWxheSgpLCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgfQogICAgIHJldHVybiBs
aXN0OwogfQpAQCAtMTMzOCwxMCArMTMzOCwxMCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4g
ZHVyYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25MaXN0KQogICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAo
YW5pbWF0aW9uTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlv
bkxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NT
VW5pdFR5cGU6OkNTU19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGFuaW1hdGlvbkxpc3QtPmFuaW1hdGlvbihpKS5kdXJhdGlvbigpLCBDU1NV
bml0VHlwZTo6U2Vjb25kKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGlu
aXRpYWxBbmltYXRpb25EdXJhdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5k
IGFuaW1hdGlvbnMKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShBbmltYXRpb246OmluaXRpYWxEdXJhdGlvbigpLCBDU1NVbml0VHlwZTo6Q1NTX1MpKTsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246Omlu
aXRpYWxEdXJhdGlvbigpLCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgfQogICAgIHJldHVy
biBsaXN0OwogfQpAQCAtMTYxNiw3ICsxNjE2LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdGV4
dFVuZGVybGluZU9mZnNldFRvQ1NTVmFsdWUoY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgdGUK
ICAgICBpZiAodGV4dFVuZGVybGluZU9mZnNldC5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CiAgICAgQVNTRVJUKHRleHRVbmRlcmxpbmVPZmZzZXQuaXNMZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dFVuZGVybGluZU9m
ZnNldC5sZW5ndGhWYWx1ZSgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICByZXR1cm4gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh0ZXh0VW5kZXJsaW5lT2Zmc2V0Lmxl
bmd0aFZhbHVlKCksIENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzVG9DU1NWYWx1ZShjb25zdCBUZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyYgdGV4dERlY29yYXRpb25UaGlja25lc3MpCkBAIC0xNjI2LDcgKzE2MjYsNyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzc1RvQ1NTVmFsdWUoY29u
c3QgVGV4dERlY29yYXRpb25UaGljawogICAgIGlmICh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5p
c0Zyb21Gb250KCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZyb21Gb250KTsKICAgICBBU1NFUlQodGV4dERl
Y29yYXRpb25UaGlja25lc3MuaXNMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dERlY29yYXRpb25UaGlja25lc3MubGVuZ3RoVmFs
dWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dERlY29yYXRpb25UaGlja25lc3MubGVuZ3RoVmFsdWUo
KSwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1w
aGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRp
b24+IHRleHRFbXBoYXNpc1Bvc2l0aW9uKQpAQCAtMTczMCw3ICsxNzMwLDcgQEAgc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwg
Y29uc3QgUmVuZGVyU3QKIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHN0eWxlLmNvbnRlbnRBbHRUZXh0KCksIENTU1VuaXRUeXBl
OjpDU1NfU1RSSU5HKTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZShzdHlsZS5jb250ZW50QWx0VGV4dCgpLCBDU1NVbml0VHlwZTo6U3RyaW5nKTsKIH0K
ICAgICAKIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0xNzM5LDExICsxNzM5LDExIEBAIHN0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0
YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChpczxD
b3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJDb250ZW50RGF0YT4o
KmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllcigpLCBDU1NVbml0VHlwZTo6Q1NTX0NP
VU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRl
cigpLmlkZW50aWZpZXIoKSwgQ1NTVW5pdFR5cGU6OkNvdW50ZXJOYW1lKSk7CiAgICAgICAgIGVs
c2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFn
ZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpj
b250ZW50RGF0YSkpCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENT
U1VuaXRUeXBlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRh
KS50ZXh0KCksIENTU1VuaXRUeXBlOjpTdHJpbmcpKTsKICAgICB9CiAgICAgcmV0dXJuIGxpc3Q7
CiB9CkBAIC0xNzU5LDcgKzE3NTksNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb3VudGVyVG9D
U1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcAogICAgIGZv
ciAoYXV0byYga2V5VmFsdWUgOiAqbWFwKSB7CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlQ3VzdG9tSWRlbnQoa2V5VmFsdWUua2V5KSk7CiAgICAgICAgIGRvdWJsZSBu
dW1iZXIgPSAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyBrZXlW
YWx1ZS52YWx1ZS5pbmNyZW1lbnRWYWx1ZSA6IGtleVZhbHVlLnZhbHVlLnJlc2V0VmFsdWUpLnZh
bHVlX29yKDApOwotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KG51bWJlciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShudW1iZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGxpc3Q7CiB9CkBAIC0xODAxLDcgKzE4MDEsNyBAQCBzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiAKIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Zm9udE5vbktleXdvcmRXZWlnaHRGcm9tU3R5bGVWYWx1ZShGb250U2VsZWN0aW9uVmFsdWUg
d2VpZ2h0KQogewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHQpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7
CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHdlaWdodCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogfQogCiBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRXZWlnaHRGcm9tU3R5
bGVWYWx1ZShGb250U2VsZWN0aW9uVmFsdWUgd2VpZ2h0KQpAQCAtMTgxOCw3ICsxODE4LDcgQEAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdodEZyb21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRTdHJldGNoRnJvbVN0eWxlVmFsdWUoRm9udFNlbGVj
dGlvblZhbHVlIHN0cmV0Y2gpCiB7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlVmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0cmV0Y2gpLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOworICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihzdHJldGNoKSwgQ1NTVW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOwogfQogCiBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmZvbnRTdHJldGNoRnJvbVN0eWxlVmFsdWUoRm9udFNlbGVjdGlvblZhbHVlIHN0cmV0Y2gp
CkBAIC0xODM1LDcgKzE4MzUsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250
U3RyZXRjaEZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIFJlZjxDU1NGb250
U3R5bGVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRTdHlsZUZy
b21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSBpdGFsaWMpCiB7Ci0gICAgcmV0dXJuIENT
U0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPYmxpcXVlKSwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oaXRhbGljKSwgQ1NTVW5pdFR5cGU6OkNT
U19ERUcpKTsKKyAgICByZXR1cm4gQ1NTRm9udFN0eWxlVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9ibGlxdWUpLCBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihp
dGFsaWMpLCBDU1NVbml0VHlwZTo6RGVnKSk7CiB9CiAKIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoc3RkOjpvcHRp
b25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYywgRm9udFN0eWxlQXhpcyBmb250U3R5bGVB
eGlzKQpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFJlZjxDU1NGb250VmFsdWU+IGZvbnRT
aG9ydGhhbmRWYWx1ZUZvclNlbGVjdGlvblByb3BlcnRpZXMoY29uc3QgRm9udERlc2MKICAgICBp
ZiAoYXV0byB2YWx1ZSA9IGZvbnRXZWlnaHRLZXl3b3JkKHdlaWdodCkpCiAgICAgICAgIGNvbXB1
dGVkRm9udC0+d2VpZ2h0ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUodmFsdWUudmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoaXNDU1MyMVdlaWdodCh3ZWln
aHQpKQotICAgICAgICBjb21wdXRlZEZvbnQtPndlaWdodCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdlaWdodCksIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY29tcHV0ZWRGb250LT53ZWlnaHQgPSBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHQpLCBD
U1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBDU1NGb250VmFs
dWU6OmNyZWF0ZSgpOwogCkBAIC0yNzQ2LDEzICsyNzQ2LDEzIEBAIFJlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVu
ZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveERpcmVjdGlv
bigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveEZsZXgoKSwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS5ib3hGbGV4KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hGbGV4R3JvdXAoKSwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS5ib3hGbGV4R3JvdXAoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm94TGluZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveE9yZGluYWxHcm91cCgpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLmJveE9yZGluYWxHcm91cCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm94T3JpZW50KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94UGFjazoKQEAgLTI3NzcsNyArMjc3Nyw3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3Qg
UmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5Db3VudDoKICAgICAgICAg
ICAgIGlmIChzdHlsZS5oYXNBdXRvQ29sdW1uQ291bnQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5jb2x1bW5Db3Vu
dCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmNvbHVtbkNvdW50KCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uRmlsbDoKICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuY29sdW1uRmlsbCgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkdhcDoKQEAgLTI4MDksNyArMjgwOSw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5
bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbldpZHRoKCksIHN0eWxlKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRhYlNpemU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxl
LnRhYlNpemUoKS5pc1NwYWNlcygpID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NVbml0
VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwgc3R5bGUudGFiU2l6ZSgpLmlz
U3BhY2VzKCkgPyBDU1NVbml0VHlwZTo6TnVtYmVyIDogQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7
CkBAIC0yODY5LDcgKzI4NjksNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5UGxhY2VTZWxmOgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhwbGFjZVNlbGZTaG9ydGhhbmQoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcmRlcjoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3JkZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIp
OworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5vcmRl
cigpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0
OgogICAgICAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAm
JiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC0yOTg1
LDE5ICsyOTg1LDE5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXI6CiAgICAgICAgICAgICBpZiAoc3R5bGUu
aHlwaGVuYXRpb25TdHJpbmcoKS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5oeXBoZW5hdGlvblN0cmlu
ZygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmh5cGhlbmF0aW9uU3RyaW5nKCksIENTU1VuaXRUeXBl
OjpTdHJpbmcpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRB
ZnRlcjoKICAgICAgICAgICAgIGlmIChzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmU6CiAgICAgICAgICAg
ICBpZiAoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIDwgMCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRv
KTsKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLmh5
cGhlbmF0aW9uTGltaXRCZWZvcmUoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUuaHlwaGVuYXRpb25M
aW1pdEJlZm9yZSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXM6CiAgICAgICAgICAgICBpZiAoc3R5bGUuaHlw
aGVuYXRpb25MaW1pdExpbmVzKCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vTGltaXQpOwotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUuaHlwaGVuYXRpb25MaW1p
dExpbmVzKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBD
U1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdDoKICAgICAgICAgICAgIGlmIChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXQ6OkJv
cmRlcikKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUJvcmRlcik7CkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNv
bnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3R5bGUuaW1hZ2VSZW5kZXJpbmcoKSk7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVU
SU9OKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZXNvbHV0aW9uOgotICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5pbWFnZVJlc29sdXRpb24o
KSwgQ1NTVW5pdFR5cGU6OkNTU19EUFBYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUuaW1hZ2VSZXNvbHV0aW9uKCksIENTU1VuaXRUeXBlOjpEb3Rz
UGVyUGl4ZWwpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgogICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUsIENTU1Byb3BlcnR5TGVmdCwg
cmVuZGVyZXIpOwpAQCAtMzAyMSw3ICszMDIxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKICAgICAgICAgICAgIGlm
IChzdHlsZS5saW5lQ2xhbXAoKS5pc05vbmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5saW5lQ2xhbXAoKS52YWx1
ZSgpLCBzdHlsZS5saW5lQ2xhbXAoKS5pc1BlcmNlbnRhZ2UoKSA/IENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSA6IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGluZUNsYW1wKCkudmFsdWUoKSwgc3R5
bGUubGluZUNsYW1wKCkuaXNQZXJjZW50YWdlKCkgPyBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSA6
IENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdo
dDoKICAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgpAQCAtMzAzMiw3ICszMDMyLDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5
SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlUG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlOgogICAgICAgICAgICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5
cGUoKSA9PSBMaXN0U3R5bGVUeXBlOjpTdHJpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5saXN0U3R5bGVTdHJpbmdWYWx1ZSgpLCBDU1NV
bml0VHlwZTo6Q1NTX1NUUklORyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS5saXN0U3R5bGVTdHJpbmdWYWx1ZSgpLCBDU1NVbml0VHlwZTo6
U3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUubGlzdFN0eWxlVHlwZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2Fs
ZToKICAgICAgICAgICAgIGlmIChzdHlsZS5zcGVjaWZpZWRMb2NhbGUoKS5pc051bGwoKSkKQEAg
LTMwOTUsMTEgKzMwOTUsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAg
IHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5
OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5vcGFj
aXR5KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3BhY2l0eSgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6CiAgICAgICAgICAgICBpZiAoc3R5
bGUuaGFzQXV0b09ycGhhbnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5vcnBoYW5zKCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUub3JwaGFucygpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmVDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0
eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUoc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSkgOiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3IoJnN0eWxlLCBzdHlsZS5vdXRsaW5lQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lT2Zmc2V0OgpAQCAtMzE5OSw3ICszMTk5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5k
ZXJTdHkKICAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Tm9uZToKICAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwogICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDdXN0b206Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0RW1w
aGFzaXNDdXN0b21NYXJrKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoKSwgQ1NTVW5pdFR5cGU6OlN0cmluZyk7CiAgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcms6OkF1dG86CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAjaWYgIUFTU0VSVF9FTkFCTEVECkBAIC0zMjQ1LDcgKzMyNDUsNyBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0
IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICBpZiAoc3R5bGUudGV4dFNp
emVBZGp1c3QoKS5pc05vbmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUudGV4dFNpemVBZGp1c3QoKS5wZXJjZW50
YWdlKCksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS50ZXh0U2l6ZUFkanVzdCgpLnBlcmNlbnRh
Z2UoKSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGV4dFN0cm9rZUNvbG9yKCkpOwpAQCAt
MzI4OSw3ICszMjg5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdpZG93czoKICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNBdXRvV2lkb3dzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUud2lkb3dzKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUud2lkb3dzKCksIENTU1Vu
aXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc1JlbmRlclNWR01vZGVsT2JqZWN0KCkp
IHsKICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy53My5vcmcvVFIv
Q1NTMi92aXN1ZGV0Lmh0bWwjdGhlLXdpZHRoLXByb3BlcnR5LApAQCAtMzMzMSw5ICszMzMxLDkg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRl
eDoKICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNBdXRvU3BlY2lmaWVkWkluZGV4KCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUuc3BlY2lmaWVkWkluZGV4KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuc3BlY2lmaWVkWklu
ZGV4KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Wm9v
bToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuem9v
bSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnpvb20oKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CiAgICAgICAgICAgICBpZiAoc3R5bGUu
Ym94U2l6aW5nKCkgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94KQogICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudEJv
eCk7CkBAIC0zMzk5LDEwICszMzk5LDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudCA9PSBBbmltYXRpb246Okl0ZXJhdGlv
bkNvdW50SW5maW5pdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUluZmluaXRlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaXRlcmF0aW9uQ291bnQsIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGl0ZXJhdGlvbkNvdW50LCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxJ
dGVyYXRpb25Db3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsSXRlcmF0aW9uQ291bnQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlv
bk5hbWU6IHsKQEAgLTM0MTQsNyArMzQxNCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzSWRlbnRpZmllcikKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlQ3VzdG9tSWRlbnQobmFt
ZS5zdHJpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShuYW1lLnN0cmluZywg
Q1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobmFtZS5zdHJpbmcsIENTU1VuaXRUeXBl
OjpTdHJpbmcpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vbmUpKTsKQEAgLTM0NTIsOCArMzQ1Miw4IEBAIFJlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVu
ZGVyU3R5CiAgICAgICAgICAgICBjYXNlIEFzcGVjdFJhdGlvVHlwZTo6QXV0b0FuZFJhdGlvOgog
ICAgICAgICAgICAgY2FzZSBBc3BlY3RSYXRpb1R5cGU6OlJhdGlvOiB7CiAgICAgICAgICAgICAg
ICAgYXV0byByYXRpb0xpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7
Ci0gICAgICAgICAgICAgICAgcmF0aW9MaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLmFzcGVjdFJhdGlvV2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsK
LSAgICAgICAgICAgICAgICByYXRpb0xpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUuYXNwZWN0UmF0aW9IZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsK
KyAgICAgICAgICAgICAgICByYXRpb0xpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUuYXNwZWN0UmF0aW9XaWR0aCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAg
ICAgICAgICAgICAgcmF0aW9MaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLmFzcGVjdFJhdGlvSGVpZ2h0KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAgICAg
ICAgICAgICBpZiAoc3R5bGUuYXNwZWN0UmF0aW9UeXBlKCkgIT0gQXNwZWN0UmF0aW9UeXBlOjpB
dXRvQW5kUmF0aW8pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYXRpb0xpc3Q7CiAgICAg
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwpAQCAtMzUxMyw4ICszNTEzLDggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAg
ICAgICAgIC8vIE5vdCBhIHJlYWwgc3R5bGUgcHJvcGVydHkgLS0gdXNlZCBieSB0aGUgZWRpdGlu
ZyBlbmdpbmUgLS0gc28gaGFzIG5vIGNvbXB1dGVkIHZhbHVlLgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOiB7Ci0gICAgICAg
ICAgICBhdXRvIGRyb3AgPSAhc3R5bGUuaW5pdGlhbExldHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLmluaXRpYWxMZXR0ZXJEcm9wKCksIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKLSAgICAgICAgICAgIGF1dG8gc2l6ZSA9ICFzdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0
KCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcCA9ICFzdHlsZS5p
bml0aWFsTGV0dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW5pdGlhbExl
dHRlckRyb3AoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CisgICAgICAgICAgICBhdXRvIHNpemUg
PSAhc3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUuaW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1vdmUo
ZHJvcCksIFdURk1vdmUoc2l6ZSkpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CkBAIC0zNjU2LDkgKzM2NTYsOSBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0
eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIGFuaW1hdGlvbiA9IGFuaW1hdGlvbkxpc3QtPmFuaW1hdGlvbihpKTsKICAgICAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGFuaW1h
dGlvbikpOwotICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGFuaW1hdGlvbi5kdXJhdGlvbigpLCBDU1NVbml0VHlwZTo6Q1NTX1MpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShh
bmltYXRpb24uZHVyYXRpb24oKSwgQ1NTVW5pdFR5cGU6OlNlY29uZCkpOwogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZSgqYW5pbWF0aW9u
LnRpbWluZ0Z1bmN0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltYXRpb24uZGVsYXkoKSwgQ1NTVW5pdFR5cGU6OkNT
U19TKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1VuaXRUeXBlOjpTZWNvbmQpKTsKICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNMaXN0LT5hcHBlbmQoV1RGTW92ZShsaXN0KSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uc0xpc3Q7
CkBAIC0zNjY3LDkgKzM2NjcsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
ICAgICAgICAgLy8gdHJhbnNpdGlvbi1wcm9wZXJ0eSBkZWZhdWx0IHZhbHVlLgogICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVBbGwpKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoQW5pbWF0aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTVW5pdFR5cGU6OkNTU19TKSk7Cisg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1VuaXRUeXBlOjpTZWNvbmQpKTsKICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bFRpbWluZ0Z1bmN0aW9uKCkpKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSwgQ1NTVW5pdFR5cGU6OkNT
U19TKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KEFuaW1hdGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1VuaXRUeXBlOjpTZWNvbmQpKTsKICAgICAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzOgpAQCAtMzcwNSw3ICszNzA1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJT
dHkKICAgICAgICAgICAgIGlmICghb3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAg
ICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKQotICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0PFJl
ZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS51cmwoKSwgQ1NTVW5pdFR5cGU6
OkNTU19VUkkpOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS51cmwo
KSwgQ1NTVW5pdFR5cGU6OlVSSSk7CiAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAoaXM8U2hhcGVDbGlw
UGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBzaGFw
ZU9wZXJhdGlvbiA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24p
OwpAQCAtMzcyMCw3ICszNzIwLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5zaGFwZU1hcmdpbigpLCBzdHlsZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5zaGFwZUltYWdlVGhyZXNob2xkKCksIENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUuc2hhcGVJbWFnZVRocmVzaG9sZCgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlT3V0c2lkZToKICAgICAgICAgICAgIHJl
dHVybiBzaGFwZVByb3BlcnR5VmFsdWUoc3R5bGUsIHN0eWxlLnNoYXBlT3V0c2lkZSgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbHRlcjoKQEAgLTM5MjgsNyArMzkyOCw3IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5
bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VDb2xvcjoK
ICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoJnN0eWxlLCBzdHls
ZS5zdHJva2VDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGlt
aXQ6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS5z
dHJva2VNaXRlckxpbWl0KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLnN0cm9rZU1pdGVyTGltaXQo
KSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3Rl
czoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclF1b3RlcyhzdHlsZS5xdW90ZXMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAyZGZmNWIxNTE1YzI5
YTYwN2RkMDgxOGYwMTgwZTgzY2VkYjc3NzMyLi4zZDZhODhjM2RhZjEyYjdiMzZhMjVjZWViYjc5
ODhjMDQwMjM3NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAK
QEAgLTIxOCw3ICsyMTgsNyBAQCBSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFk
ZVZhbHVlOjpibGVuZChjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgZnJvbQogICAgIGRvdWJsZSB0
b1BlcmNlbnRhZ2UgPSBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICBpZiAo
bV9wZXJjZW50YWdlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICB0b1BlcmNlbnRhZ2Ug
Lz0gMTAwLjA7Ci0gICAgYXV0byBwZXJjZW50YWdlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKGJsZW5kRnVuYyhmcm9tUGVyY2VudGFnZSwgdG9QZXJjZW50YWdlLCBjb250ZXh0KSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShibGVuZEZ1bmMoZnJvbVBlcmNlbnRhZ2UsIHRvUGVyY2Vu
dGFnZSwgY29udGV4dCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogCiAgICAgcmV0dXJuIENTU0Ny
b3NzZmFkZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShmcm9tSW1hZ2VWYWx1ZSksIFdURk1vdmUodG9J
bWFnZVZhbHVlKSwgV1RGTW92ZShwZXJjZW50YWdlVmFsdWUpLCBmcm9tLmlzUHJlZml4ZWQoKSAm
JiBpc1ByZWZpeGVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuY3BwCmluZGV4IDgyMGUwZGUzZDgxZjdlNjZhMmM5MTAyYWFhODAwYTk2ZmUyMGMy
ZGUuLjFlNTkwNzQwMTJlY2RiNDQxMGU5ZGUxNzIxMzZmNDE3YmZmMGVjM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAog
ICAgICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7CiAgICAg
ICAgICAgICBtX3N0cmluZ1ZhbHVlID0gdmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsK
ICAgICAgICAgfSwgWyZdKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3Ry
aW5nVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLnZhbHVlKCksIENTU1Vu
aXRUeXBlOjpDU1NfUFgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS52YWx1ZSgpLCBDU1NVbml0VHlwZTo6UHgp
LT5jc3NUZXh0KCk7CiAgICAgICAgIH0sIFsmXShjb25zdCBSZWY8U3R5bGVJbWFnZT4mIHZhbHVl
KSB7CiAgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gdmFsdWUtPmNzc1ZhbHVlKCktPmNzc1Rl
eHQoKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCAwYjA3
YTY0YjY4MmI1MjlhNzY5MDE3OWU1OGQxMzg3MzY1YjYzODU4Li4wODJlNDBlMGE4OTA0ZWQyMTZh
OTM1Zjg1MjkxYWRmODgyMzg3ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAg
LTIzNywxNCArMjM3LDE0IEBAIHN0YXRpYyBGb250U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlSXRh
bGljUmFuZ2UoQ1NTVmFsdWUmIHZhbHVlKQogICAgIGF1dG8gbGVuZ3RoID0gcmFuZ2VWYWx1ZS5v
YmxpcXVlVmFsdWVzLT5sZW5ndGgoKTsKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnJhbmdl
VmFsdWUub2JsaXF1ZVZhbHVlcy0+aXRlbSgwKSk7Ci0gICAgICAgIEZvbnRTZWxlY3Rpb25WYWx1
ZSByZXN1bHQocHJpbWl0aXZlVmFsdWUudmFsdWU8ZmxvYXQ+KENTU1VuaXRUeXBlOjpDU1NfREVH
KSk7CisgICAgICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQocHJpbWl0aXZlVmFsdWUudmFs
dWU8ZmxvYXQ+KENTU1VuaXRUeXBlOjpEZWcpKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCBy
ZXN1bHQgfTsKICAgICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSAyKTsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZTEgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnJhbmdlVmFsdWUub2Js
aXF1ZVZhbHVlcy0+aXRlbSgwKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUyID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpyYW5nZVZhbHVlLm9ibGlxdWVWYWx1ZXMtPml0ZW0oMSkp
OwotICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQxKHByaW1pdGl2ZVZhbHVlMS52YWx1ZTxm
bG9hdD4oQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKLSAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVz
dWx0MihwcmltaXRpdmVWYWx1ZTIudmFsdWU8ZmxvYXQ+KENTU1VuaXRUeXBlOjpDU1NfREVHKSk7
CisgICAgRm9udFNlbGVjdGlvblZhbHVlIHJlc3VsdDEocHJpbWl0aXZlVmFsdWUxLnZhbHVlPGZs
b2F0PihDU1NVbml0VHlwZTo6RGVnKSk7CisgICAgRm9udFNlbGVjdGlvblZhbHVlIHJlc3VsdDIo
cHJpbWl0aXZlVmFsdWUyLnZhbHVlPGZsb2F0PihDU1NVbml0VHlwZTo6RGVnKSk7CiAgICAgcmV0
dXJuIHsgcmVzdWx0MSwgcmVzdWx0MiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFN0eWxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U3R5
bGVWYWx1ZS5oCmluZGV4IDg2MjRkZjg2NGYzYzUzYzY5YmFhODM3Y2UzZTk4ODgzZjkzZmUwODAu
LmI1ZDM5ZGFmZjgwZjMzNzFjMTA3MmRkNGY3ZmZmYzMzYjJiNjQ3YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U3R5bGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U3R5bGVWYWx1ZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGF1dG8gdmFsdWVJRCA9IGZvbnRTdHlsZVZhbHVlLT52YWx1ZUlEKCk7CiAgICAgICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT2JsaXF1ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gb2JsaXF1ZVZhbHVlLT52YWx1
ZTxmbG9hdD4oQ1NTVW5pdFR5cGU6OkNTU19ERUcpID49IHN0YXRpY19jYXN0PGZsb2F0PihpdGFs
aWNWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIG9ibGlxdWVWYWx1ZS0+dmFsdWU8ZmxvYXQ+KENT
U1VuaXRUeXBlOjpEZWcpID49IHN0YXRpY19jYXN0PGZsb2F0PihpdGFsaWNWYWx1ZSgpKTsKICAg
ICB9CiAKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZVZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IDVjZmNhY2NmOTBjOWQzYmIyYjQ5
ZmU1MjE0YjZjZjVmODIxY2RiYzIuLjI0YzFlYTBjMmU1NTY3MTljZGNkNmZmY2QxZWUxODBhOWQ1
YzIzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTMxMyw5
ICszMTMsOSBAQCBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIENTU0dyYWRpZW50VmFsdWU6OmNv
bXB1dGVTdG9wcyhHcmFkaWVudEFkYXB0ZXImIGdyYWRpZQogICAgICAgICBmb3IgKGF1dG8mIHN0
b3AgOiBtX3N0b3BzKSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQ7CiAgICAgICAgICAgICBp
ZiAoc3RvcC5wb3NpdGlvbi0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICAgICAgb2Zmc2V0
ID0gc3RvcC5wb3NpdGlvbi0+ZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
IC8gMTAwOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHN0b3AucG9zaXRpb24tPmZsb2F0VmFs
dWUoQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpIC8gMTAwOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG9mZnNldCA9IHN0b3AucG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHN0b3AucG9zaXRpb24t
PmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAKICAgICAgICAgICAgIENvbG9yIGNv
bG9yID0gc3RvcC5yZXNvbHZlZENvbG9yOwogICAgICAgICAgICAgaWYgKHN0eWxlLmhhc0FwcGxl
Q29sb3JGaWx0ZXIoKSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBHcmFkaWVudDo6Q29sb3JTdG9wVmVj
dG9yIENTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9wcyhHcmFkaWVudEFkYXB0ZXImIGdyYWRp
ZQogICAgICAgICBpZiAoc3RvcC5wb3NpdGlvbikgewogICAgICAgICAgICAgYXV0byYgcG9zaXRp
b25WYWx1ZSA9ICpzdG9wLnBvc2l0aW9uOwogICAgICAgICAgICAgaWYgKHBvc2l0aW9uVmFsdWUu
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICAgICAgc3RvcHNbaV0ub2Zmc2V0ID0gcG9zaXRp
b25WYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSkgLyAxMDA7Cisg
ICAgICAgICAgICAgICAgc3RvcHNbaV0ub2Zmc2V0ID0gcG9zaXRpb25WYWx1ZS5mbG9hdFZhbHVl
KENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UgaWYgKHBv
c2l0aW9uVmFsdWUuaXNMZW5ndGgoKSB8fCBwb3NpdGlvblZhbHVlLmlzVmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgfHwgcG9zaXRpb25WYWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExl
bmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoOwogICAgICAgICAgICAgICAg
IGlmIChwb3NpdGlvblZhbHVlLmlzTGVuZ3RoKCkpCkBAIC0zNTgsNyArMzU4LDcgQEAgR3JhZGll
bnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvcHMoR3JhZGll
bnRBZGFwdGVyJiBncmFkaWUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3Rv
cHNbaV0ub2Zmc2V0ID0gKGdyYWRpZW50TGVuZ3RoID4gMCkgPyBsZW5ndGggLyBncmFkaWVudExl
bmd0aCA6IDA7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uVmFsdWUuaXNBbmdsZSgp
KQotICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHBvc2l0aW9uVmFsdWUuZmxvYXRW
YWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RFRykgLyAzNjA7CisgICAgICAgICAgICAgICAgc3RvcHNb
aV0ub2Zmc2V0ID0gcG9zaXRpb25WYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpEZWcpIC8g
MzYwOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICAgICAgc3RvcHNbaV0ub2Zmc2V0ID0gMDsKQEAgLTY2Myw3ICs2
NjMsNyBAQCBib29sIENTU0dyYWRpZW50VmFsdWU6OmVxdWFscyhjb25zdCBDU1NHcmFkaWVudFZh
bHVlJiBvdGhlcikgY29uc3QKIHN0YXRpYyB2b2lkIGFwcGVuZEdyYWRpZW50U3RvcHMoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPENTU0dyYWRpZW50Q29sb3JTdG9wLCAyPiYg
c3RvcHMpCiB7CiAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMpIHsKLSAgICAgICAgZG91Ymxl
IHBvc2l0aW9uID0gc3RvcC5wb3NpdGlvbi0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpOworICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBzdG9wLnBvc2l0aW9uLT5kb3VibGVW
YWx1ZShDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgaWYgKCFwb3NpdGlvbikKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGZyb20oIiwgc3RvcC5jb2xvci0+Y3NzVGV4dCgpLCAn
KScpOwogICAgICAgICBlbHNlIGlmIChwb3NpdGlvbiA9PSAxKQpAQCAtODE5LDcgKzgxOSw3IEBA
IFJlZjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvCiAgICAgRmxvYXRQb2ludCBmaXJzdFBvaW50OwogICAg
IEZsb2F0UG9pbnQgc2Vjb25kUG9pbnQ7CiAgICAgaWYgKG1fYW5nbGUpIHsKLSAgICAgICAgZmxv
YXQgYW5nbGUgPSBtX2FuZ2xlLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKyAg
ICAgICAgZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpEZWcp
OwogICAgICAgICBlbmRQb2ludHNGcm9tQW5nbGUoYW5nbGUsIHNpemUsIGZpcnN0UG9pbnQsIHNl
Y29uZFBvaW50LCBncmFkaWVudFR5cGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNo
IChncmFkaWVudFR5cGUoKSkgewpAQCAtMTI2OSw3ICsxMjY5LDcgQEAgUmVmPEdyYWRpZW50PiBD
U1NDb25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb24KIAogICAgIGZsb2F0IGFuZ2xlUmFkaWFucyA9IDA7CiAgICAgaWYgKG1fYW5nbGUp
Ci0gICAgICAgIGFuZ2xlUmFkaWFucyA9IG1fYW5nbGUtPmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19SQUQpOworICAgICAgICBhbmdsZVJhZGlhbnMgPSBtX2FuZ2xlLT5mbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpSYWQpOwogCiAgICAgR3JhZGllbnQ6OkNvbmljRGF0YSBkYXRhIHsgY2VudGVy
UG9pbnQsIGFuZ2xlUmFkaWFucyB9OwogICAgIENvbmljR3JhZGllbnRBZGFwdGVyIGFkYXB0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggMTU1MTAxMjgzYzYy
NmNhMThhMzNiMDJiYWIxMjc4ZTk2YjhiMGYzOC4uMzgzMmFjNWYxNjBhYmExN2QxMWU5ZGUzY2Jj
N2EyM2UzZGVlMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApA
QCAtNTgsNyArNTgsNyBAQCB2b2lkIENTU0ltYWdlU2V0VmFsdWU6OmZpbGxJbWFnZVNldCgpCiAg
ICAgICAgIEFTU0VSVChpczxDU1NJbWFnZVZhbHVlPihpbWFnZVZhbHVlKSB8fCBpczxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlPihpbWFnZVZhbHVlKSk7CiAgICAgICAgIEFTU0VSVChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4oc2NhbGVGYWN0b3JWYWx1ZSkpOwogCi0gICAgICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNjYWxlRmFjdG9yVmFsdWUpLT5mbG9h
dFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfRFBQWCk7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNjYWxlRmFjdG9yVmFsdWUpLT5mbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWwpOwogICAgICAgICBtX2ltYWdlc0luU2V0LmFw
cGVuZCh7IGltYWdlVmFsdWUsIHNjYWxlRmFjdG9yIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGU5OGUyODI3Y2UwMjE4YWQyNDViZjMxMTVhYWRkODdk
ZDRlMTU3YTAuLjU3MTQ3NGU0NWYzZWQ1NTI4OTY3NTE1MWNkOTVlYjg1Zjk2YzZjYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBTdHJpbmcg
Q1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiBSZWY8RGVwcmVjYXRlZENTU09N
VmFsdWU+IENTU0ltYWdlVmFsdWU6OmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgc3R5bGVEZWNsYXJhdGlvbikgY29uc3QKIHsKICAgICAvLyBOT1RFOiBX
ZSBleHBvc2UgQ1NTSW1hZ2VWYWx1ZXMgYXMgVVJJIHByaW1pdGl2ZSB2YWx1ZXMgaW4gQ1NTT00g
dG8gbWFpbnRhaW4gb2xkIGJlaGF2aW9yLgotICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9sb2NhdGlvbi5y
ZXNvbHZlZFVSTC5zdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19VUkkpLCBzdHlsZURlY2xhcmF0
aW9uKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fbG9jYXRpb24ucmVzb2x2ZWRVUkwuc3RyaW5nKCks
IENTU1VuaXRUeXBlOjpVUkkpLCBzdHlsZURlY2xhcmF0aW9uKTsKIH0KIAogYm9vbCBDU1NJbWFn
ZVZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA5OGI4ZGJi
ZWJlMjY4ZTc5ZjI2N2JiNDMxNDk5NTgzNTdlNTkwM2IxLi43OTQ3ZDE2ODViMTMyN2FiMWFlMjM4
OGJiYTBhNDk4ZjlhZjQyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKQEAgLTUyLDYxICs1Miw2MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihDU1NVbml0VHlw
ZSB1bml0VHlwZSkKIHsKICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0NBTEM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFH
RV9XSVRIX0xFTkdUSDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdF
X1dJVEhfTlVNQkVSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0ZSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19HUkFEOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19IWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSU46Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0tIWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkxIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19U
VVJOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfVk1BWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVlc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQQ006Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBQ
WDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q2hzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRl
ZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpGbGV4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6SHo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
S0h6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1z
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQ
YzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlB0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlE6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TGhzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJs
aHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlNlY29uZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpW
aWV3cG9ydFBlcmNlbnRhZ2VNYXg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJj
ZW50YWdlTWluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRo
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkRvdHNQZXJJbmNoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhl
bDoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0FUVFI6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0NPVU5URVJfTkFNRToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1J
TFk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6QXR0cjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpD
b3VudGVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50ZXJOYW1lOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkZvbnRGYW1pbHk6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BST1BFUlRZX0lEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JD
T0xPUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1NUUklORzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5JQ09ERV9SQU5H
RToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVVJJOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpQYWlyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlNoYXBlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlN0cmluZzoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpVbmljb2RlUmFuZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5rbm93bjoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpVUkk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JREVOVDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpJZGVudDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0x
MTksNjAgKzExOSw2MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZENTU1VuaXRUeXBlRm9y
RG91YmxlQ29udmVyc2lvbihDU1NVbml0VHlwZSB1bml0VHlwZSkKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1N0cmluZ1R5cGUoQ1NTVW5pdFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlN0cmluZzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDdXN0b21JZGVudDoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVVJJOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUU6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6VVJJOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q291bnRlck5hbWU6CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19DQUxDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0Vf
V0lUSF9MRU5HVEg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9X
SVRIX05VTUJFUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19E
SU1FTlNJT046Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQQ006Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0RQSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBQWDoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19GUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
S0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUEFJUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BST1BFUlRZX0lEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxI
UzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUVVJUktZX0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkFEOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1T
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1RVUk46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVf
UkFOR0U6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV046Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1ZBTFVFX0lEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Vk1JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q2FsY3VsYXRlZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFn
ZVdpdGhMZW5ndGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNoczoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpDbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkRlZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90
c1BlckluY2g6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Rm9udEZhbWlseToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpGbGV4OgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6S0h6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6Ok1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpQYWlyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHJvcGVy
dHlJRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQ
eDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1YWQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UkdCQ29sb3I6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6U2Vjb25kOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNoYXBlOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlR1cm46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5pY29kZVJhbmdlOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlVua25vd246CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJ
RDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTkzLDM1ICsxOTMsMzUgQEAgQ1NTVW5pdFR5cGUgQ1NTUHJpbWl0aXZlVmFsdWU6OnByaW1pdGl2
ZVR5cGUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBVc2UgYSBzd2l0Y2ggc3RhdGVtZW50IGhl
cmUuCiAKLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BS
T1BFUlRZX0lEIHx8IHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCB8fCBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDdXN0b21JZGVudCkK
LSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfSURFTlQ7CisgICAgaWYgKHByaW1pdGl2
ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQgfHwgcHJpbWl0aXZlVW5pdFR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6VmFsdWVJRCB8fCBwcmltaXRpdmVVbml0VHlwZSgpID09IENT
U1VuaXRUeXBlOjpDdXN0b21JZGVudCkKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpJZGVu
dDsKIAotICAgIC8vIFdlYi1leHBvc2VkIGNvbnRlbnQgZXhwZWN0cyBmb250IGZhbWlseSB2YWx1
ZXMgdG8gaGF2ZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyBwcmltaXRpdmUgdHlwZQotICAgIC8v
IHNvIHdlIG5lZWQgdG8gbWFwIG91ciBpbnRlcm5hbCBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFN
SUxZIHR5cGUgaGVyZS4KLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX0ZPTlRfRkFNSUxZKQotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19TVFJJ
Tkc7CisgICAgLy8gV2ViLWV4cG9zZWQgY29udGVudCBleHBlY3RzIGZvbnQgZmFtaWx5IHZhbHVl
cyB0byBoYXZlIENTU1VuaXRUeXBlOjpTdHJpbmcgcHJpbWl0aXZlIHR5cGUKKyAgICAvLyBzbyB3
ZSBuZWVkIHRvIG1hcCBvdXIgaW50ZXJuYWwgQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHkgdHlwZSBo
ZXJlLgorICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpGb250RmFt
aWx5KQorICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlN0cmluZzsKIAotICAgIGlmIChwcmlt
aXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKKyAgICBpZiAocHJpbWl0
aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZCkKICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZVVuaXRUeXBlKCk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUuY2FsYy0+Y2F0ZWdv
cnkoKSkgewogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6TnVtYmVyOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDoKLSAgICAg
ICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVy
Y2VudE51bWJlcjoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTlVNQkVSOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aE51bWJlcjsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNl
bnRMZW5ndGg6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFH
RV9XSVRIX0xFTkdUSDsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVy
Y2VudGFnZVdpdGhMZW5ndGg7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6
CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpBbmdsZToKICAgICBjYXNlIENhbGN1bGF0
aW9uQ2F0ZWdvcnk6OlRpbWU6CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpGcmVxdWVu
Y3k6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmNhbGMtPnByaW1pdGl2ZVR5cGUoKTsKICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok90aGVyOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OkNTU19VTktOT1dOOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlVua25vd247CiAg
ICAgfQotICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV047CisgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpVbmtub3duOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgcHJvcGVy
dHlOYW1lKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTI0MSwxNCArMjQxLDE0IEBAIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZU5hbWUoQ1NTVmFsdWVJRCB2YWx1ZUlEKQogQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENTU1ZhbHVlSUQgdmFsdWVJRCkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBtX3ZhbHVlLnZhbHVlSUQgPSB2YWx1ZUlEOwogfQog
CiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQpOwogICAgIG1fdmFsdWUucHJvcGVy
dHlJRCA9IHByb3BlcnR5SUQ7CiB9CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1VuaXRUeXBl
IHR5cGUpCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ29sb3Im
IGNvbG9yKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUik7CisgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlJHQkNvbG9yKTsKICAgICBtX3ZhbHVlLmNvbG9yID0gbmV3
IENvbG9yKGNvbG9yKTsKIH0KIApAQCAtMjk3LDcgKzI5Nyw3IEBAIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0CiAgICAgICAgIGluaXQobGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
TGVuZ3RoVHlwZTo6Rml4ZWQ6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpDU1NfUFgpOworICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
UHgpOwogICAgICAgICBtX3ZhbHVlLm51bSA9IGFkanVzdEZsb2F0Rm9yQWJzb2x1dGVab29tKGxl
bmd0aC52YWx1ZSgpLCBzdHlsZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIExlbmd0aFR5
cGU6OkNhbGN1bGF0ZWQ6CkBAIC0zMzksMzkgKzMzOSwzOSBAQCB2b2lkIENTU1ByaW1pdGl2ZVZh
bHVlOjppbml0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5
cGUoKSkgewogICAgIGNhc2UgTGVuZ3RoVHlwZTo6QXV0bzoKLSAgICAgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBlOjpG
aXhlZDoKLSAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19QWCk7
CisgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAg
IG1fdmFsdWUubnVtID0gbGVuZ3RoLnZhbHVlKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IExlbmd0aFR5cGU6OkludHJpbnNpYzoKLSAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJ
bnRyaW5zaWM7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkludHJp
bnNpYzoKLSAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaW5JbnRyaW5zaWM7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIExlbmd0aFR5cGU6Ok1pbkNvbnRlbnQ6Ci0gICAgICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgICAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTWluQ29udGVudDsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgTGVuZ3RoVHlwZTo6TWF4Q29udGVudDoKLSAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVNYXhDb250ZW50OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBlOjpGaWxs
QXZhaWxhYmxlOgotICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEKTsKKyAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZh
bHVlSUQpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFp
bGFibGU7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIExlbmd0aFR5cGU6OkZpdENvbnRlbnQ6
Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRml0Q29udGVudDsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgTGVuZ3RoVHlwZTo6UGVyY2VudDoKLSAgICAgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBBU1NFUlQoc3Rk
Ojppc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7CiAgICAgICAgIG1fdmFsdWUubnVtID0gbGVu
Z3RoLnBlcmNlbnQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzg2LDQ5ICszODYsNDkgQEAgdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKIAogdm9pZCBD
U1NQcmltaXRpdmVWYWx1ZTo6aW5pdChjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OkNTU19QQUlSKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
UGFpcik7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7CiAgICAgbV92YWx1ZS5wYWly
ID0gJlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCwgc3R5bGUpLCBjcmVhdGUo
bGVuZ3RoU2l6ZS5oZWlnaHQsIHN0eWxlKSkubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1p
dGl2ZVZhbHVlOjppbml0KFJlZjxDb3VudGVyPiYmIGNvdW50ZXIpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6Q291bnRlcik7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0g
ZmFsc2U7CiAgICAgbV92YWx1ZS5jb3VudGVyID0gJmNvdW50ZXIubGVha1JlZigpOwogfQogCiB2
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFJlZjxSZWN0PiYmIHIpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19SRUNUKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6UmVjdCk7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFs
c2U7CiAgICAgbV92YWx1ZS5yZWN0ID0gJnIubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1p
dGl2ZVZhbHVlOjppbml0KFJlZjxRdWFkPiYmIHF1YWQpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19RVUFEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6UXVhZCk7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7CiAgICAg
bV92YWx1ZS5xdWFkID0gJnF1YWQubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1pdGl2ZVZh
bHVlOjppbml0KFJlZjxQYWlyPiYmIHApCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19QQUlSKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6UGFpcik7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7CiAgICAgbV92YWx1ZS5w
YWlyID0gJnAubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFJl
ZjxDU1NCYXNpY1NoYXBlPiYmIHNoYXBlKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfU0hBUEUpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpTaGFwZSk7CiAgICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFsc2U7CiAgICAgbV92YWx1
ZS5zaGFwZSA9ICZzaGFwZS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6
OmluaXQoUmVmUHRyPENTU0NhbGNWYWx1ZT4mJiBjKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfQ0FMQyk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNhbGN1bGF0ZWQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwog
ICAgIG1fdmFsdWUuY2FsYyA9IGMubGVha1JlZigpOwogfQpAQCAtNDQyLDg5ICs0NDIsODkgQEAg
dm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCgpCiB7CiAgICAgYXV0byB0eXBlID0gcHJp
bWl0aXZlVW5pdFR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlN0cmluZzoKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDdXN0b21JZGVudDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVVJJ
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19DT1VOVEVSX05BTUU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VVJJOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkF0dHI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291bnRlck5hbWU6CiAg
ICAgICAgIGlmIChtX3ZhbHVlLnN0cmluZykKICAgICAgICAgICAgIG1fdmFsdWUuc3RyaW5nLT5k
ZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRF
UjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyOgogICAgICAgICBtX3ZhbHVlLmNvdW50
ZXItPmRlcmVmKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19S
RUNUOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlY3Q6CiAgICAgICAgIG1fdmFsdWUucmVjdC0+
ZGVyZWYoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVQUQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVhZDoKICAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJl
ZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEFJUjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQYWlyOgogICAgICAgICBtX3ZhbHVlLnBhaXItPmRlcmVmKCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIGlmIChtX3ZhbHVlLmNhbGMpCiAg
ICAgICAgICAgICBtX3ZhbHVlLmNhbGMtPmRlcmVmKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXI6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1NIQVBFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNoYXBlOgogICAgICAgICBtX3ZhbHVl
LnNoYXBlLT5kZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRk9OVF9GQU1JTFk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseToKICAgICAg
ICAgQVNTRVJUKG1fdmFsdWUuZm9udEZhbWlseSk7CiAgICAgICAgIGRlbGV0ZSBtX3ZhbHVlLmZv
bnRGYW1pbHk7CiAgICAgICAgIG1fdmFsdWUuZm9udEZhbWlseSA9IG51bGxwdHI7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpSR0JDb2xvcjoKICAgICAgICAgQVNTRVJUKG1fdmFsdWUuY29sb3IpOwogICAg
ICAgICBkZWxldGUgbV92YWx1ZS5jb2xvcjsKICAgICAgICAgbV92YWx1ZS5jb2xvciA9IG51bGxw
dHI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJT046
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19FWFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
REVHOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0dSQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19IWjoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfS0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19UVVJOOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Vkg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1ZNQVg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQUFg6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0RQSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBDTToKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRlI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkxIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSURFTlQ6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1VOS05PV046Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVf
UkFOR0U6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZX0lEOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNp
b246CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlBlcmNlbnRhZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlF1aXJreUVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UmVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UHg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6TW06CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6RGVnOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpHcmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlNlY29uZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpIejoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpLSHo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9y
dFBlcmNlbnRhZ2VIZWlnaHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50
YWdlTWluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RG90c1BlckluY2g6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RmxleDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OklkZW50OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVua25vd246
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5pY29kZVJhbmdlOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlByb3BlcnR5SUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDoKICAgICAgICAg
QVNTRVJUKCFpc1N0cmluZ1R5cGUodHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VW5rbm93bik7CiAgICAgaWYgKG1faGFzQ2Fj
aGVkQ1NTVGV4dCkgewogICAgICAgICBjc3NUZXh0Q2FjaGUoKS5yZW1vdmUodGhpcyk7CiAgICAg
ICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwpAQCAtNTc4LDcgKzU3OCw3IEBAIHRlbXBs
YXRlPD4gTGF5b3V0VW5pdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpCiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSkgY29uc3QKIHsKLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q1NTX0NBTEMpIHsKKyAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q2FsY3VsYXRlZCkgewogICAgICAgICAvLyBUaGUgbXVsdGlwbGllciBhbmQgZmFjdG9yIGlzIGFw
cGxpZWQgdG8gZWFjaCB2YWx1ZSBpbiB0aGUgY2FsYyBleHByZXNzaW9uIGluZGl2aWR1YWxseQog
ICAgICAgICByZXR1cm4gbV92YWx1ZS5jYWxjLT5jb21wdXRlTGVuZ3RoUHgoY29udmVyc2lvbkRh
dGEpOwogICAgIH0KQEAgLTU5Myw1NyArNTkzLDU3IEBAIHN0YXRpYyBjb25zdGV4cHIgZG91Ymxl
IFFQZXJJbmNoID0gMjUuNCAqIDQuMDsKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBk
b3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRN
ZXRyaWNzKiBmb250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERl
c2NyaXB0aW9uLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0
aW9uLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIHN3aXRjaCAocHJpbWl0
aXZlVHlwZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKICAgICAgICAgQVNTRVJUKGZvbnREZXNjcmlw
dGlvbik7CiAgICAgICAgIHJldHVybiAoKHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5
Rm9udFNpemUpID8gZm9udERlc2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgOiBmb250RGVzY3Jp
cHRpb24tPmNvbXB1dGVkU2l6ZSgpKSAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19FWFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgogICAgICAgICBBU1NFUlQoZm9udE1l
dHJpY3MpOwogICAgICAgICBpZiAoZm9udE1ldHJpY3MtPmhhc1hIZWlnaHQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmb250TWV0cmljcy0+eEhlaWdodCgpICogdmFsdWU7CiAgICAgICAgIEFTU0VS
VChmb250RGVzY3JpcHRpb24pOwogICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9
PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgp
IDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgLyAyLjAgKiB2YWx1ZTsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOgog
ICAgICAgICBpZiAoIXJvb3RGb250RGVzY3JpcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgICAgIHJldHVybiAoKHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9u
dFNpemUpID8gcm9vdEZvbnREZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogcm9vdEZvbnRE
ZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpICogdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0NIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CiAgICAgICAgIEFTU0VSVChm
b250TWV0cmljcyk7CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+emVyb1dpZHRoKCkgKiB2
YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6UHg6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Q006CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQ
ZXJJbmNoIC8gY21QZXJJbmNoICogdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01N
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVy
SW5jaCAvIG1tUGVySW5jaCAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlE6CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNo
IC8gUVBlckluY2ggKiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIC0xLjA7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5j
aCAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpQdDoKICAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggLyA3Mi4wICogdmFs
dWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlBjOgogICAgICAgICAvLyAxIHBjID09IDEyIHB0CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQ
ZXJJbmNoICogMTIuMCAvIDcyLjAgKiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Q0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19D
QUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3Vs
YXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aE51bWJlcjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiAtMS4wOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIHJldHVy
biByZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpLmhlaWdodCgpIC8gMTAwLjAgKiB2YWx1ZSA6IDA7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZXOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgog
ICAgICAgICByZXR1cm4gcmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoKS53aWR0aCgpIC8gMTAwLjAgKiB2YWx1ZSA6IDA7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1ZNQVg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJj
ZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVyVmlldykgewogICAgICAgICAgICAgSW50U2l6
ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzID0gcmVuZGVyVmlldy0+dmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMud2lkdGgoKSwgdmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cy5oZWlnaHQoKSkgLyAxMDAuMCAqIHZhbHVlOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChyZW5k
ZXJWaWV3KSB7CiAgICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptaW4odmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cy53aWR0aCgpLCB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLmhlaWdodCgpKSAvIDEw
MC4wICogdmFsdWU7CkBAIC02NTgsMTMgKzY1OCwxMyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUoQ1NTVW5pdFR5cGUgcHJpbWl0
aQogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTVW5pdFR5
cGUgcHJpbWl0aXZlVHlwZSwgZG91YmxlIHZhbHVlKQogewogICAgIHN3aXRjaCAocHJpbWl0aXZl
VHlwZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRh
LnN0eWxlKCkpOwogICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhE
b3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21w
dXRlKCksIG51bGxwdHIsICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24o
KSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgYnVn
IHJpZ2h0IG5vdyB3aGVyZSB0aGUgem9vbSB3aWxsIGJlIGFwcGxpZWQgdHdpY2UgdG8gRVggdW5p
dHMuCiAgICAgICAgIC8vIFdlIHJlYWxseSBuZWVkIHRvIGNvbXB1dGUgRVggdXNpbmcgZm9udE1l
dHJpY3MgZm9yIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWRTaXplIGFuZCBub3QgdXNlCiAgICAgICAg
IC8vIG91ciBhY3R1YWwgY29uc3RydWN0ZWQgcmVuZGVyaW5nIGZvbnQuCkBAIC02NzIsNDAgKzY3
Miw0MCBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91
YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgICAgICB2YWx1ZSA9IGNvbXB1dGVV
bnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNp
b25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250
TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOwog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlJlbXM6CiAgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9u
Q2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJv
cGVydHlUb0NvbXB1dGUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgY29udmVyc2lvbkRhdGEucm9vdFN0
eWxlKCkgPyAmY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpIDog
bnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NI
UzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9u
RGF0YS5zdHlsZSgpKTsKICAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRv
Q29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSk7CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1E6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlE6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UGM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRh
Z2VXaXRoTGVuZ3RoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdl
V2l0aE51bWJlcjoKICAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3Ro
RG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29t
cHV0ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgICAg
ICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3cG9ydEhlaWdodEZhY3RvcigpOwog
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZp
ZXdwb3J0UGVyY2VudGFnZVdpZHRoOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9u
RGF0YS52aWV3cG9ydFdpZHRoRmFjdG9yKCk7CiAKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Vk1BWDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6CiAgICAg
ICAgIHJldHVybiB2YWx1ZSAqIGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0TWF4RmFjdG9yKCk7CiAK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpW
aWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNvbnZlcnNpb25E
YXRhLnZpZXdwb3J0TWluRmFjdG9yKCk7CiAKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhT
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25E
YXRhLnN0eWxlKCkpOwogICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEuY29tcHV0aW5nTGluZUhl
aWdodCgpIHx8IGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkpIHsKICAgICAgICAg
ICAgIC8vIFRyeSB0byBnZXQgdGhlIHBhcmVudCdzIGNvbXB1dGVkIGxpbmUtaGVpZ2h0LCBvciBm
YWxsIGJhY2sgdG8gdGhlIGluaXRpYWwgbGluZS1oZWlnaHQgb2YgdGhpcyBlbGVtZW50J3MgZm9u
dCBzcGFjaW5nLgpAQCAtNzE0LDcgKzcxNCw3IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAg
ICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5jb21wdXRlZExpbmVI
ZWlnaHQoKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxI
UzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgogICAgICAgICBpZiAoY29udmVyc2lvbkRh
dGEucm9vdFN0eWxlKCkpIHsKICAgICAgICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21wdXRp
bmdMaW5lSGVpZ2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkKICAg
ICAgICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0
ZUxpbmVIZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPnNwZWNpZmllZExpbmVIZWln
aHQoKSk7CkBAIC03NjIsNDcgKzc2Miw0NyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3IoQ1NTVW5pdFR5cGUgdW5pdAogICAg
IC8vIEZJWE1FOiB0aGUgc3dpdGNoIGNhbiBiZSByZXBsYWNlZCBieSBhbiBhcnJheSBvZiBzY2Fs
ZSBmYWN0b3JzLgogICAgIHN3aXRjaCAodW5pdFR5cGUpIHsKICAgICAvLyBUaGVzZSBhcmUgImNh
bm9uaWNhbCIgdW5pdHMgaW4gdGhlaXIgcmVzcGVjdGl2ZSBjYXRlZ29yaWVzLgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSFo6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQUFg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UHg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1z
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQ
ZXJQaXhlbDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgogICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJ
bmNoIC8gY21QZXJJbmNoOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRFBDTToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjoKICAgICAg
ICAgZmFjdG9yID0gY21QZXJJbmNoIC8gY3NzUGl4ZWxzUGVySW5jaDsgLy8gKDIuNTQgY20vaW4p
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpNbToKICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIG1t
UGVySW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UToKICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5j
aCAvIFFQZXJJbmNoOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
SU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CiAgICAgICAgIGZhY3RvciA9IGNzc1BpeGVs
c1BlckluY2g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckluY2g6CiAgICAgICAgIGZhY3RvciA9IDEg
LyBjc3NQaXhlbHNQZXJJbmNoOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUFQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6CiAgICAgICAgIGZhY3RvciA9IGNz
c1BpeGVsc1BlckluY2ggLyA3Mi4wOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUEM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CiAgICAgICAgIGZhY3RvciA9
IGNzc1BpeGVsc1BlckluY2ggKiAxMi4wIC8gNzIuMDsgLy8gMSBwYyA9PSAxMiBwdAogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkFEOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlJhZDoKICAgICAgICAgZmFjdG9yID0gZGVncmVlc1BlclJhZGlhbkRvdWJsZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6R3JhZDoKICAgICAgICAgZmFjdG9yID0gZGVncmVlc1BlckdyYWRpZW50RG91
YmxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOgogICAgICAgICBmYWN0b3IgPSBkZWdyZWVzUGVyVHVy
bkRvdWJsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1M6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0tIWjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTZWNv
bmQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6S0h6OgogICAgICAgICBmYWN0b3IgPSAxMDAwOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtODI3LDMzICs4MjcsMzMgQEAgZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShDU1NVbml0VHlwZSB1bml0VHlwZSkgY29u
c3QKIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDID8g
bV92YWx1ZS5udW0gOiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7CisgICAgcmV0dXJuIHBy
aW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQgPyBtX3ZhbHVlLm51
bSA6IG1fdmFsdWUuY2FsYy0+ZG91YmxlVmFsdWUoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxib29s
PiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKLSAgICBpZiAocHJpbWl0aXZl
VW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCisgICAgaWYgKHByaW1pdGl2ZVVu
aXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0KIAogc3RkOjpvcHRpb25hbDxi
b29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNQb3NpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHBy
aW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQorICAgIGlmIChwcmlt
aXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3ZhbHVlLm51bSA+IDA7CiB9CiAKIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTmVnYXRpdmUoKSBjb25zdAogewot
ICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKKyAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5udW0gPCAwOwog
fQogCiBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0NlbnRlclBvc2l0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gdmFsdWVJRCgpID09IENTU1ZhbHVlQ2VudGVyIHx8IGRvdWJsZVZhbHVlKENT
U1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSkgPT0gNTA7CisgICAgcmV0dXJuIHZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUNlbnRlciB8fCBkb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6UGVyY2VudGFnZSkg
PT0gNTA7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91
YmxlVmFsdWVJbnRlcm5hbChDU1NVbml0VHlwZSByZXF1ZXN0ZWRVbml0VHlwZSkgY29uc3QKQEAg
LTg2Miw3ICs4NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdAogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgQ1NTVW5pdFR5cGUgc291cmNlVW5pdFR5cGUgPSBwcmltaXRp
dmVUeXBlKCk7Ci0gICAgaWYgKHJlcXVlc3RlZFVuaXRUeXBlID09IHNvdXJjZVVuaXRUeXBlIHx8
IHJlcXVlc3RlZFVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfRElNRU5TSU9OKQorICAgIGlm
IChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlw
ZSA9PSBDU1NVbml0VHlwZTo6RGltZW5zaW9uKQogICAgICAgICByZXR1cm4gZG91YmxlVmFsdWUo
KTsKIAogICAgIENTU1VuaXRDYXRlZ29yeSBzb3VyY2VDYXRlZ29yeSA9IHVuaXRDYXRlZ29yeShz
b3VyY2VVbml0VHlwZSk7CkBAIC04NzcsMTYgKzg3NywxNiBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVx
dWVzdAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHRhcmdldENhdGVn
b3J5ID09IENTU1VuaXRDYXRlZ29yeTo6TnVtYmVyKSB7Ci0gICAgICAgIC8vIFdlIGludGVycHJl
dCBjb252ZXJzaW9uIHRvIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIGFzIGNvbnZlcnNpb24gdG8g
YSBjYW5vbmljYWwgdW5pdCBpbiB0aGlzIHZhbHVlJ3MgY2F0ZWdvcnkuCisgICAgICAgIC8vIFdl
IGludGVycHJldCBjb252ZXJzaW9uIHRvIENTU1VuaXRUeXBlOjpOdW1iZXIgYXMgY29udmVyc2lv
biB0byBhIGNhbm9uaWNhbCB1bml0IGluIHRoaXMgdmFsdWUncyBjYXRlZ29yeS4KICAgICAgICAg
dGFyZ2V0VW5pdFR5cGUgPSBjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5KHNvdXJjZUNhdGVn
b3J5KTsKLSAgICAgICAgaWYgKHRhcmdldFVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfVU5L
Tk9XTikKKyAgICAgICAgaWYgKHRhcmdldFVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpVbmtub3du
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoc291
cmNlVW5pdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpIHsKLSAgICAgICAgLy8gV2Ug
aW50ZXJwcmV0IGNvbnZlcnNpb24gZnJvbSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiBpbiB0aGUg
c2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBub24tc3RyaWN0
IG1vZGUuCisgICAgaWYgKHNvdXJjZVVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpOdW1iZXIpIHsK
KyAgICAgICAgLy8gV2UgaW50ZXJwcmV0IGNvbnZlcnNpb24gZnJvbSBDU1NVbml0VHlwZTo6TnVt
YmVyIGluIHRoZSBzYW1lIHdheSBhcyBDU1NQYXJzZXI6OnZhbGlkVW5pdCgpIHdoaWxlIHVzaW5n
IG5vbi1zdHJpY3QgbW9kZS4KICAgICAgICAgc291cmNlVW5pdFR5cGUgPSBjYW5vbmljYWxVbml0
VHlwZUZvckNhdGVnb3J5KHRhcmdldENhdGVnb3J5KTsKLSAgICAgICAgaWYgKHNvdXJjZVVuaXRU
eXBlID09IENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTikKKyAgICAgICAgaWYgKHNvdXJjZVVuaXRU
eXBlID09IENTU1VuaXRUeXBlOjpVbmtub3duKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKQEAgLTkwNiwxNiArOTA2LDE2IEBAIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChDU1NVbml0VHlwZSByZXF1
ZXN0CiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OnN0cmluZ1ZhbHVlKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVVuaXRUeXBlKCkpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlN0cmluZzoKICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDdXN0b21JZGVudDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQVRUUjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVVJJOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VVJJOgogICAgICAgICByZXR1cm4gbV92YWx1ZS5zdHJp
bmc7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkZvbnRGYW1pbHk6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmZvbnRGYW1pbHkt
PmZhbWlseU5hbWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CiAgICAgICAgIHJldHVybiB2YWx1ZU5hbWUobV92YWx1
ZS52YWx1ZUlEKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UHJvcGVydHlJRDoKICAgICAgICAgcmV0dXJuIHByb3BlcnR5TmFt
ZShtX3ZhbHVlLnByb3BlcnR5SUQpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKQEAgLTkzMSw2MCArOTMxLDYwIEBAIE5FVkVSX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKFN0cmluZ1ZpZXcgc3VmZml4KSBjb25zCiBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OnVuaXRUeXBlU3RyaW5nKENTU1VuaXRUeXBlIHVuaXRUeXBl
KQogewogICAgIHN3aXRjaCAodW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0U6IHJldHVybiAiJSI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19FTVM6IHJldHVybiAiZW0iOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOiBy
ZXR1cm4gImV4IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOiByZXR1cm4gInB4
IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOiByZXR1cm4gImNtIjsKLSAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOiByZXR1cm4gIm1tIjsKLSAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0lOOiByZXR1cm4gImluIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BUOiByZXR1cm4gInB0IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BD
OiByZXR1cm4gInBjIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzogcmV0dXJu
ICJkZWciOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkFEOiByZXR1cm4gInJhZCI7
Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19HUkFEOiByZXR1cm4gImdyYWQiOwotICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6IHJldHVybiAibXMiOwotICAgICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUzogcmV0dXJuICJzIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0haOiByZXR1cm4gImh6IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0tI
WjogcmV0dXJuICJraHoiOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6IHJldHVy
biAidnciOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6IHJldHVybiAidmgiOwot
ICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjogcmV0dXJuICJ2bWluIjsKLSAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6IHJldHVybiAidm1heCI7Ci0gICAgICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19EUFBYOiByZXR1cm4gImRwcHgiOwotICAgICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfRFBJOiByZXR1cm4gImRwaSI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19EUENNOiByZXR1cm4gImRwY20iOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRlI6IHJldHVybiAiZnIiOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUTogcmV0
dXJuICJxIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzogcmV0dXJuICJsaCI7
Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOiByZXR1cm4gInJsaCI7Ci0gICAg
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19UVVJOOiByZXR1cm4gInR1cm4iOwotICAgICAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzogcmV0dXJuICJyZW0iOwotICAgICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfQ0hTOiByZXR1cm4gImNoIjsKLQotICAgICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVU5LTk9XTjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoK
LSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTjoKLSAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1NUUklORzoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VS
SToKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOgorICAgICAgICBjYXNlIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlOiByZXR1cm4gIiUiOworICAgICAgICBjYXNlIENTU1VuaXRU
eXBlOjpFbXM6IHJldHVybiAiZW0iOworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6IHJl
dHVybiAiZXgiOworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDogcmV0dXJuICJweCI7Cisg
ICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOiByZXR1cm4gImNtIjsKKyAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6TW06IHJldHVybiAibW0iOworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpJ
bjogcmV0dXJuICJpbiI7CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OiByZXR1cm4gInB0
IjsKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6IHJldHVybiAicGMiOworICAgICAgICBj
YXNlIENTU1VuaXRUeXBlOjpEZWc6IHJldHVybiAiZGVnIjsKKyAgICAgICAgY2FzZSBDU1NVbml0
VHlwZTo6UmFkOiByZXR1cm4gInJhZCI7CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6
IHJldHVybiAiZ3JhZCI7CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOiByZXR1cm4gIm1z
IjsKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6U2Vjb25kOiByZXR1cm4gInMiOworICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpIejogcmV0dXJuICJoeiI7CisgICAgICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OktIejogcmV0dXJuICJraHoiOworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aDogcmV0dXJuICJ2dyI7CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDogcmV0dXJuICJ2aCI7CisgICAgICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjogcmV0dXJuICJ2bWluIjsKKyAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OiByZXR1cm4gInZtYXgi
OworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6IHJldHVybiAiZHBweCI7
CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOiByZXR1cm4gImRwaSI7Cisg
ICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOiByZXR1cm4gImRwY20i
OworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpGbGV4OiByZXR1cm4gImZyIjsKKyAgICAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UTogcmV0dXJuICJxIjsKKyAgICAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6TGhzOiByZXR1cm4gImxoIjsKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczogcmV0
dXJuICJybGgiOworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOiByZXR1cm4gInR1cm4i
OworICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOiByZXR1cm4gInJlbSI7CisgICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNoczogcmV0dXJuICJjaCI7CisKKyAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6VW5rbm93bjoKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgorICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlN0cmluZzoKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6VVJJOgorICAgICAgICBjYXNl
IENTU1VuaXRUeXBlOjpJZGVudDoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRl
bnQ6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOgotICAgICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JF
Q1Q6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKLSAgICAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19V
TklDT0RFX1JBTkdFOgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1F
OgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6Ci0gICAgICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19RVUFEOgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoK
LSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJF
UjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xF
TkdUSDoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOgotICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6Ci0gICAgICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WQUxVRV9JRDoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJL
WV9FTVM6CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6CisgICAgICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNvdW50ZXI6CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlY3Q6CisgICAg
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOgorICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpQYWlyOgorICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmljb2RlUmFuZ2U6CisgICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50ZXJOYW1lOgorICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpTaGFwZToKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVhZDoKKyAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q2FsY3VsYXRlZDoKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3Vs
YXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOgorICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxj
dWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGg6CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZv
bnRGYW1pbHk6CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQ6CisgICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CisgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1
aXJreUVtczoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk5NCw4NiArOTk0LDg2IEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6dW5pdFR5cGVTdHJpbmcoQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCiBBTFdBWVNf
SU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwcmltaXRpdmVVbml0VHlwZSgpKSB7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV046CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5r
bm93bjoKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4g
Zm9ybWF0TnVtYmVyVmFsdWUoIiIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5U
QUdFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiBm
b3JtYXROdW1iZXJWYWx1ZSgiJSIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKICAgICAgICAgcmV0dXJu
IGZvcm1hdE51bWJlclZhbHVlKCJlbSIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVy
VmFsdWUoImV4Iik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UmVtczoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJyZW0i
KTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNoczoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJjaCIpOwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QWDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDoKICAgICAgICAg
cmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJweCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19DTToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKICAgICAgICAgcmV0dXJuIGZvcm1hdE51
bWJlclZhbHVlKCJjbSIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUFBYOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbDoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJl
clZhbHVlKCJkcHB4Iik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQSToKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpEb3RzUGVySW5jaDoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZh
bHVlKCJkcGkiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBDTToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJl
clZhbHVlKCJkcGNtIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6Ok1tOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoIm1tIik7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Oklu
OgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImluIik7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1BUOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OgogICAgICAgICByZXR1
cm4gZm9ybWF0TnVtYmVyVmFsdWUoInB0Iik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BD
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVy
VmFsdWUoInBjIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpEZWc6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiZGVnIik7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpS
YWQ6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgicmFkIik7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0dSQUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDoKICAgICAg
ICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJncmFkIik7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX01TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOgogICAgICAgICByZXR1cm4gZm9y
bWF0TnVtYmVyVmFsdWUoIm1zIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1M6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6U2Vjb25kOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFs
dWUoInMiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSFo6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6SHo6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiaHoiKTsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktIejoKICAg
ICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJraHoiKTsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVFVSTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOgogICAgICAgICByZXR1
cm4gZm9ybWF0TnVtYmVyVmFsdWUoInR1cm4iKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RlI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RmxleDoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51
bWJlclZhbHVlKCJmciIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlE6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgicSIpOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TGhz
OgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImxoIik7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JMSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKICAgICAgICAg
cmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJybGgiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRElNRU5TSU9OOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRpbWVuc2lvbjoKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXNuJ3QgY29ycmVjdC4KICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJl
clZhbHVlKCIiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlN0cmluZzoKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0cmluZyhtX3Zh
bHVlLnN0cmluZyk7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6IHsKICAgICAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKG1f
dmFsdWUuc3RyaW5nLCBidWlsZGVyKTsKICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHk6CiAgICAgICAgIHJldHVybiBzZXJpYWxpemVGb250
RmFtaWx5KG1fdmFsdWUuZm9udEZhbWlseS0+ZmFtaWx5TmFtZSk7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1VSSToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVUkk6CiAgICAgICAgIHJldHVy
biBzZXJpYWxpemVVUkwobV92YWx1ZS5zdHJpbmcpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWYWx1ZUlEOgogICAgICAgICByZXR1
cm4gdmFsdWVOYW1lKG1fdmFsdWUudmFsdWVJRCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1BST1BFUlRZX0lEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQ6CiAgICAgICAg
IHJldHVybiBwcm9wZXJ0eU5hbWUobV92YWx1ZS5wcm9wZXJ0eUlEKTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQVRUUjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpBdHRyOgogICAgICAgICBy
ZXR1cm4gImF0dHIoIiArIFN0cmluZyhtX3ZhbHVlLnN0cmluZykgKyAnKSc7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3Vu
dGVyTmFtZToKICAgICAgICAgcmV0dXJuICJjb3VudGVyKCIgKyBTdHJpbmcobV92YWx1ZS5zdHJp
bmcpICsgJyknOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOiB7CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q291bnRlcjogewogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
ICAgICAgICAgYXV0byBzZXBhcmF0b3IgPSBtX3ZhbHVlLmNvdW50ZXItPnNlcGFyYXRvcigpOwog
ICAgICAgICBhdXRvIGxpc3RTdHlsZSA9IG1fdmFsdWUuY291bnRlci0+bGlzdFN0eWxlKCk7CkBA
IC0xMDg1LDMyICsxMDg1LDMyIEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnKScpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgfQot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJl
Y3Q6CiAgICAgICAgIHJldHVybiByZWN0VmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19RVUFEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1YWQ6CiAgICAgICAg
IHJldHVybiBxdWFkVmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19SR0JDT0xPUjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSR0JDb2xvcjoKICAgICAgICAgcmV0
dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IoKSk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BBSVI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGFpcjoKICAgICAgICAgcmV0dXJuIHBh
aXJWYWx1ZSgpLT5jc3NUZXh0KCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTEM6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZDoKICAgICAgICAgaWYgKCFtX3ZhbHVlLmNh
bGMpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuY2FsYy0+Y3Nz
VGV4dCgpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TSEFQRToKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpTaGFwZToKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuc2hhcGUtPmNzc1RleHQoKTsK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgi
dnciKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVy
VmFsdWUoInZoIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICByZXR1cm4gZm9ybWF0
TnVtYmVyVmFsdWUoInZtaW4iKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6CiAgICAgICAgIHJldHVy
biBmb3JtYXROdW1iZXJWYWx1ZSgidm1heCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19J
REVOVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5JQ09ERV9SQU5HRToKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6SWRlbnQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5pY29kZVJhbmdlOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aE51bWJlcjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGg6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC0xMTQyLDcyICsxMTQyLDcyIEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFscyhjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHN3aXRjaCAocHJpbWl0aXZlVW5pdFR5cGUoKSkgewotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19VTktOT1dOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVua25vd246CiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19Q
WDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0RQUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQSToKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfRFBDTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RF
RzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19HUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSFo6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0tIWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZI
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19WTUFYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GUjoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19STEhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJ
T046CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlBlcmNlbnRhZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlF1aXJreUVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UmVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UHg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RG90c1BlclBpeGVsOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNo
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlB0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkRlZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSYWQ6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6R3JhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpTZWNvbmQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6S0h6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3Bv
cnRQZXJjZW50YWdlSGVpZ2h0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZU1pbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RmxleDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkRpbWVuc2lvbjoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUubnVt
ID09IG90aGVyLm1fdmFsdWUubnVtOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJU
WV9JRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEOgogICAgICAgICByZXR1cm4g
cHJvcGVydHlOYW1lKG1fdmFsdWUucHJvcGVydHlJRCkgPT0gcHJvcGVydHlOYW1lKG90aGVyLm1f
dmFsdWUucHJvcGVydHlJRCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CiAgICAgICAgIHJldHVybiB2YWx1ZU5hbWUo
bV92YWx1ZS52YWx1ZUlEKSA9PSB2YWx1ZU5hbWUob3RoZXIubV92YWx1ZS52YWx1ZUlEKTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlN0
cmluZzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDdXN0b21JZGVudDoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVVJJOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
VVJJOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q291bnRlck5hbWU6CiAgICAgICAgIHJldHVybiBlcXVhbChtX3ZhbHVlLnN0cmluZywgb3RoZXIu
bV92YWx1ZS5zdHJpbmcpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50ZXI6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmNvdW50
ZXIgJiYgb3RoZXIubV92YWx1ZS5jb3VudGVyICYmIG1fdmFsdWUuY291bnRlci0+ZXF1YWxzKCpv
dGhlci5tX3ZhbHVlLmNvdW50ZXIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlY3Q6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJlY3Qg
JiYgb3RoZXIubV92YWx1ZS5yZWN0ICYmIG1fdmFsdWUucmVjdC0+ZXF1YWxzKCpvdGhlci5tX3Zh
bHVlLnJlY3QpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlF1YWQ6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLnF1YWQgJiYgb3RoZXIubV92
YWx1ZS5xdWFkICYmIG1fdmFsdWUucXVhZC0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnF1YWQpOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpSR0JDb2xvcjoKICAgICAgICAgcmV0dXJuIGNvbG9yKCkgPT0gb3RoZXIuY29sb3IoKTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEFJUjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYWly
OgogICAgICAgICByZXR1cm4gbV92YWx1ZS5wYWlyICYmIG90aGVyLm1fdmFsdWUucGFpciAmJiBt
X3ZhbHVlLnBhaXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5wYWlyKTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ0FMQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkOgogICAg
ICAgICByZXR1cm4gbV92YWx1ZS5jYWxjICYmIG90aGVyLm1fdmFsdWUuY2FsYyAmJiBtX3ZhbHVl
LmNhbGMtPmVxdWFscygqb3RoZXIubV92YWx1ZS5jYWxjKTsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfU0hBUEU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2hhcGU6CiAgICAgICAgIHJldHVy
biBtX3ZhbHVlLnNoYXBlICYmIG90aGVyLm1fdmFsdWUuc2hhcGUgJiYgbV92YWx1ZS5zaGFwZS0+
ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnNoYXBlKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Rk9OVF9GQU1JTFk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseToKICAgICAgICAg
cmV0dXJuIGZvbnRGYW1pbHkoKSA9PSBvdGhlci5mb250RmFtaWx5KCk7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0lERU5UOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JB
TkdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1C
RVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdU
SDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJZGVudDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpV
bmljb2RlUmFuZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aDoKICAgICAgICAgLy8gRklYTUU6IHNlZW1zIGxpa2UgdGhlc2Ugc2hvdWxkIGJlIGhh
bmRsZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAg
LTEyMjQsMTcgKzEyMjQsMTcgQEAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWkKIHZvaWQgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKEhhc2hT
ZXQ8Q1NTUHJvcGVydHlJRD4mIHZhbHVlcykgY29uc3QKIHsKICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVVuaXRUeXBlKCkpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19F
WFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpFbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CiAgICAgICAgIHZhbHVlcy5h
ZGQoQ1NTUHJvcGVydHlGb250U2l6ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TGhzOgogICAgICAgICB2YWx1
ZXMuYWRkKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgICAgICB2YWx1ZXMuYWRkKENTU1Byb3Bl
cnR5TGluZUhlaWdodCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19DQUxDOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIG1fdmFs
dWUuY2FsYy0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXModmFsdWVzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTEyNDUsMTQgKzEyNDUsMTQgQEAgdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNp
ZXMoSGFzaFNldDxDU1NQcm9wZXIKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbGxlY3REaXJl
Y3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB2
YWx1ZXMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwcmltaXRpdmVVbml0VHlwZSgpKSB7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVtczoK
ICAgICAgICAgdmFsdWVzLmFkZChDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UmxoczoKICAgICAgICAgdmFsdWVzLmFkZChDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICAgICAg
dmFsdWVzLmFkZChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxh
dGVkOgogICAgICAgICBtX3ZhbHVlLmNhbGMtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25h
bERlcGVuZGVuY2llcyh2YWx1ZXMpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAxNzE3NWYyODc5NDNlY2E4NjBk
ZjQ4ZWIxNTYwY2EyMmZkZDY4Zjg1Li4yNzNmNzc0ODlhOTNhMDZlOTVhY2Y0N2VhOGViNDdiYjJj
MDkzZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtODMsMzkg
KzgzLDM5IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIHVzZSBwcmlt
aXRpdmVVbml0VHlwZSgpIGFuZCBzb21lIHVzZSBwcmltaXRpdmVUeXBlKCkuIE1hbnkgdGhhdCB1
c2UgcHJpbWl0aXZlVW5pdFR5cGUoKSBhcmUgbGlrZWx5IGJyb2tlbiB3aXRoIGNhbGMoKS4KICAg
ICBib29sIGlzQW5nbGUoKSBjb25zdCB7IHJldHVybiB1bml0Q2F0ZWdvcnkocHJpbWl0aXZlVHlw
ZSgpKSA9PSBDU1NVbml0Q2F0ZWdvcnk6OkFuZ2xlOyB9Ci0gICAgYm9vbCBpc0F0dHIoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQVRUUjsg
fQotICAgIGJvb2wgaXNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI7IH0KLSAgICBib29sIGlzRm9udEluZGVwZW5k
ZW50TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA+PSBDU1NVbml0
VHlwZTo6Q1NTX1BYICYmIHByaW1pdGl2ZVVuaXRUeXBlKCkgPD0gQ1NTVW5pdFR5cGU6OkNTU19Q
QzsgfQorICAgIGJvb2wgaXNBdHRyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6QXR0cjsgfQorICAgIGJvb2wgaXNDb3VudGVyKCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q291bnRlcjsgfQorICAg
IGJvb2wgaXNGb250SW5kZXBlbmRlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVV
bml0VHlwZSgpID49IENTU1VuaXRUeXBlOjpQeCAmJiBwcmltaXRpdmVVbml0VHlwZSgpIDw9IENT
U1VuaXRUeXBlOjpQYzsgfQogICAgIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgoKSBjb25zdCB7
IHJldHVybiBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChwcmltaXRpdmVVbml0VHlwZSgpKTsgfQotICAg
IGJvb2wgaXNRdWlya3lFbXMoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NT
VW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOyB9CisgICAgYm9vbCBpc1F1aXJreUVtcygpIGNvbnN0
IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOyB9CiAg
ICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzTGVuZ3RoKHN0YXRpY19jYXN0PENT
U1VuaXRUeXBlPihwcmltaXRpdmVUeXBlKCkpKTsgfQotICAgIGJvb2wgaXNOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7IH0K
LSAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U7IH0KLSAgICBib29sIGlzUHgoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QWDsgfQotICAgIGJv
b2wgaXNSZWN0KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0
VHlwZTo6Q1NTX1JFQ1Q7IH0KLSAgICBib29sIGlzUGFpcigpIGNvbnN0IHsgcmV0dXJuIHByaW1p
dGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QQUlSOyB9Ci0gICAgYm9vbCBpc1By
b3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfUFJPUEVSVFlfSUQ7IH0KLSAgICBib29sIGlzUkdCQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I7IH0K
LSAgICBib29sIGlzU2hhcGUoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09
IENTU1VuaXRUeXBlOjpDU1NfU0hBUEU7IH0KLSAgICBib29sIGlzU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzsgfQot
ICAgIGJvb2wgaXNGb250RmFtaWx5KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOyB9CisgICAgYm9vbCBpc051bWJlcigp
IGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyOyB9
CisgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkg
PT0gQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U7IH0KKyAgICBib29sIGlzUHgoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlB4OyB9CisgICAgYm9vbCBpc1Jl
Y3QoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpS
ZWN0OyB9CisgICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlw
ZSgpID09IENTU1VuaXRUeXBlOjpQYWlyOyB9CisgICAgYm9vbCBpc1Byb3BlcnR5SUQoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlE
OyB9CisgICAgYm9vbCBpc1JHQkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6UkdCQ29sb3I7IH0KKyAgICBib29sIGlzU2hhcGUoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpTaGFwZTsgfQor
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09
IENTU1VuaXRUeXBlOjpTdHJpbmc7IH0KKyAgICBib29sIGlzRm9udEZhbWlseSgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHk7IH0K
ICAgICBib29sIGlzVGltZSgpIGNvbnN0IHsgcmV0dXJuIHVuaXRDYXRlZ29yeShwcmltaXRpdmVV
bml0VHlwZSgpKSA9PSBDU1NVbml0Q2F0ZWdvcnk6OlRpbWU7IH0KICAgICBib29sIGlzRnJlcXVl
bmN5KCkgY29uc3QgeyByZXR1cm4gdW5pdENhdGVnb3J5KHByaW1pdGl2ZVR5cGUoKSkgPT0gQ1NT
VW5pdENhdGVnb3J5OjpGcmVxdWVuY3k7IH0KLSAgICBib29sIGlzVVJJKCkgY29uc3QgeyByZXR1
cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VSSTsgfQotICAgIGJv
b2wgaXNDYWxjdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6Q1NTX0NBTEM7IH0KLSAgICBib29sIGlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBl
OjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOyB9Ci0gICAgYm9vbCBpc0NhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDsgfQotICAgIGJv
b2wgaXNEb3RzUGVySW5jaCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NV
bml0VHlwZTo6Q1NTX0RQSTsgfQotICAgIGJvb2wgaXNEb3RzUGVyUGl4ZWwoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19EUFBYOyB9Ci0gICAgYm9v
bCBpc0RvdHNQZXJDZW50aW1ldGVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09
IENTU1VuaXRUeXBlOjpDU1NfRFBDTTsgfQorICAgIGJvb2wgaXNVUkkoKSBjb25zdCB7IHJldHVy
biBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpVUkk7IH0KKyAgICBib29sIGlz
Q2FsY3VsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5p
dFR5cGU6OkNhbGN1bGF0ZWQ7IH0KKyAgICBib29sIGlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRo
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpD
YWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXI7IH0KKyAgICBib29sIGlzQ2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENT
U1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGg7IH0KKyAgICBib29sIGlz
RG90c1BlckluY2goKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5
cGU6OkRvdHNQZXJJbmNoOyB9CisgICAgYm9vbCBpc0RvdHNQZXJQaXhlbCgpIGNvbnN0IHsgcmV0
dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOyB9CisgICAg
Ym9vbCBpc0RvdHNQZXJDZW50aW1ldGVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgp
ID09IENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjsgfQogICAgIGJvb2wgaXNSZXNvbHV0
aW9uKCkgY29uc3QgeyByZXR1cm4gdW5pdENhdGVnb3J5KHByaW1pdGl2ZVR5cGUoKSkgPT0gQ1NT
VW5pdENhdGVnb3J5OjpSZXNvbHV0aW9uOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHByaW1p
dGl2ZVVuaXRUeXBlKCkpOyB9Ci0gICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1ZX
OyB9Ci0gICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19WSDsgfQotICAgIGJvb2wg
aXNWaWV3cG9ydFBlcmNlbnRhZ2VNYXgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlw
ZSgpID09IENTU1VuaXRUeXBlOjpDU1NfVk1BWDsgfQotICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNl
bnRhZ2VNaW4oKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfVk1JTjsgfQotICAgIGJvb2wgaXNWYWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gcHJp
bWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEOyB9Ci0gICAgYm9v
bCBpc0ZsZXgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6
OkNTU19GUjsgfQorICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZVdpZHRoOyB9CisgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVy
Y2VudGFnZUhlaWdodDsgfQorICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VNYXgoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpWaWV3cG9ydFBl
cmNlbnRhZ2VNYXg7IH0KKyAgICBib29sIGlzVmlld3BvcnRQZXJjZW50YWdlTWluKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJj
ZW50YWdlTWluOyB9CisgICAgYm9vbCBpc1ZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBwcmltaXRp
dmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpWYWx1ZUlEOyB9CisgICAgYm9vbCBpc0ZsZXgo
KSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkZsZXg7IH0K
ICAgICBib29sIGlzQ3VzdG9tSWRlbnQoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlw
ZSgpID09IENTU1VuaXRUeXBlOjpDdXN0b21JZGVudDsgfQogCiAgICAgc3RhdGljIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUlEIHZhbHVlSUQpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWVJRCkpOyB9CkBAIC0xNjcs
MTYgKzE2NywxNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5n
VmFsdWUoKSBjb25zdDsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgQVNTRVJU
KHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUik7IHJldHVy
biAqbV92YWx1ZS5jb2xvcjsgfQotICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSID8g
bnVsbHB0ciA6IG1fdmFsdWUuY291bnRlcjsgfQotICAgIENTU0NhbGNWYWx1ZSogY3NzQ2FsY1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6
Q1NTX0NBTEMgPyBudWxscHRyIDogbV92YWx1ZS5jYWxjOyB9Ci0gICAgY29uc3QgQ1NTRm9udEZh
bWlseSYgZm9udEZhbWlseSgpIGNvbnN0IHsgQVNTRVJUKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0g
Q1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWSk7IHJldHVybiAqbV92YWx1ZS5mb250RmFtaWx5
OyB9Ci0gICAgUGFpciogcGFpclZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5
cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1BBSVIgPyBudWxscHRyIDogbV92YWx1ZS5wYWlyOyB9
Ci0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZl
VW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZX0lEID8gbV92YWx1ZS5wcm9w
ZXJ0eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9Ci0gICAgUXVhZCogcXVhZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1FVQUQg
PyBudWxscHRyIDogbV92YWx1ZS5xdWFkOyB9Ci0gICAgUmVjdCogcmVjdFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1QgPyBu
dWxscHRyIDogbV92YWx1ZS5yZWN0OyB9Ci0gICAgQ1NTQmFzaWNTaGFwZSogc2hhcGVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19T
SEFQRSA/IG51bGxwdHIgOiBtX3ZhbHVlLnNoYXBlOyB9Ci0gICAgQ1NTVmFsdWVJRCB2YWx1ZUlE
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEID8gbV92YWx1ZS52YWx1ZUlEIDogQ1NTVmFsdWVJbnZhbGlkOyB9CisgICAgY29u
c3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyBBU1NFUlQocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6UkdCQ29sb3IpOyByZXR1cm4gKm1fdmFsdWUuY29sb3I7IH0KKyAgICBDb3Vu
dGVyKiBjb3VudGVyVmFsdWUoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9
IENTU1VuaXRUeXBlOjpDb3VudGVyID8gbnVsbHB0ciA6IG1fdmFsdWUuY291bnRlcjsgfQorICAg
IENTU0NhbGNWYWx1ZSogY3NzQ2FsY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5p
dFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZCA/IG51bGxwdHIgOiBtX3ZhbHVlLmNh
bGM7IH0KKyAgICBjb25zdCBDU1NGb250RmFtaWx5JiBmb250RmFtaWx5KCkgY29uc3QgeyBBU1NF
UlQocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseSk7IHJldHVy
biAqbV92YWx1ZS5mb250RmFtaWx5OyB9CisgICAgUGFpciogcGFpclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6UGFpciA/IG51bGxwdHIg
OiBtX3ZhbHVlLnBhaXI7IH0KKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEID8g
bV92YWx1ZS5wcm9wZXJ0eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9CisgICAgUXVhZCogcXVh
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlw
ZTo6UXVhZCA/IG51bGxwdHIgOiBtX3ZhbHVlLnF1YWQ7IH0KKyAgICBSZWN0KiByZWN0VmFsdWUo
KSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpSZWN0
ID8gbnVsbHB0ciA6IG1fdmFsdWUucmVjdDsgfQorICAgIENTU0Jhc2ljU2hhcGUqIHNoYXBlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpT
aGFwZSA/IG51bGxwdHIgOiBtX3ZhbHVlLnNoYXBlOyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlE
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6VmFs
dWVJRCA/IG1fdmFsdWUudmFsdWVJRCA6IENTU1ZhbHVlSW52YWxpZDsgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIG9wZXJhdG9yIFQoKSBjb25zdDsgLy8gRGVmaW5lZCBpbiBD
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKIApAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgoQ1NTVW5p
dFR5cGUpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1Jlc29sdXRpb24oQ1NTVW5pdFR5
cGUpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0
aChDU1NVbml0VHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID49IENTU1VuaXRUeXBlOjpDU1NfVlcg
JiYgdHlwZSA8PSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoQ1NTVW5pdFR5cGUgdHlwZSkgeyByZXR1
cm4gdHlwZSA+PSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlV2lkdGggJiYgdHlwZSA8
PSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OyB9CiAKICAgICB1bmlvbiB7CiAg
ICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRDsKQEAgLTI2MywzMCArMjYzLDMwIEBAIHBy
aXZhdGU6CiAKIGNvbnN0ZXhwciBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0ZvbnRSZWxhdGl2
ZUxlbmd0aChDU1NVbml0VHlwZSB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09IENTU1VuaXRU
eXBlOjpDU1NfRU1TCi0gICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19FWFMKLSAg
ICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0xIUwotICAgICAgICB8fCB0eXBlID09
IENTU1VuaXRUeXBlOjpDU1NfUkxIUwotICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpD
U1NfUkVNUwotICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpDU1NfQ0hTCi0gICAgICAg
IHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOworICAgIHJldHVybiB0eXBl
ID09IENTU1VuaXRUeXBlOjpFbXMKKyAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6RXhz
CisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkxocworICAgICAgICB8fCB0eXBlID09
IENTU1VuaXRUeXBlOjpSbGhzCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OlJlbXMK
KyAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q2hzCisgICAgICAgIHx8IHR5cGUgPT0g
Q1NTVW5pdFR5cGU6OlF1aXJreUVtczsKIH0KIAogY29uc3RleHByIGJvb2wgQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzTGVuZ3RoKENTU1VuaXRUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuICh0eXBlID49
IENTU1VuaXRUeXBlOjpDU1NfRU1TICYmIHR5cGUgPD0gQ1NTVW5pdFR5cGU6OkNTU19QQykKLSAg
ICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1JFTVMKLSAgICAgICAgfHwgdHlwZSA9
PSBDU1NVbml0VHlwZTo6Q1NTX0NIUwotICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpD
U1NfUQotICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpDU1NfTEhTCi0gICAgICAgIHx8
IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19STEhTCisgICAgcmV0dXJuICh0eXBlID49IENTU1Vu
aXRUeXBlOjpFbXMgJiYgdHlwZSA8PSBDU1NVbml0VHlwZTo6UGMpCisgICAgICAgIHx8IHR5cGUg
PT0gQ1NTVW5pdFR5cGU6OlJlbXMKKyAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q2hz
CisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OlEKKyAgICAgICAgfHwgdHlwZSA9PSBD
U1NVbml0VHlwZTo6TGhzCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OlJsaHMKICAg
ICAgICAgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSkKLSAgICAgICAgfHwgdHlw
ZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM7CisgICAgICAgIHx8IHR5cGUgPT0gQ1NT
VW5pdFR5cGU6OlF1aXJreUVtczsKIH0KIAogY29uc3RleHByIGJvb2wgQ1NTUHJpbWl0aXZlVmFs
dWU6OmlzUmVzb2x1dGlvbihDU1NVbml0VHlwZSB0eXBlKQogewotICAgIHJldHVybiB0eXBlID49
IENTU1VuaXRUeXBlOjpDU1NfRFBQWCAmJiB0eXBlIDw9IENTU1VuaXRUeXBlOjpDU1NfRFBDTTsK
KyAgICByZXR1cm4gdHlwZSA+PSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsICYmIHR5cGUgPD0g
Q1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KFQmJiB2YWx1ZSkKQEAgLTI5NiwxMyArMjk2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoVCYm
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIENTU1ByaW1pdGl2ZVZhbHVlOjpUaW1lVW5pdCB0aW1l
VW5pdD4gaW5saW5lIFQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVUaW1lKCkgY29uc3QKIHsK
LSAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5p
dFR5cGU6OkNTU19TKQorICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6U2Vjb25kKQogICAgICAgICByZXR1cm4gdmFsdWU8VD4oKTsK
LSAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5p
dFR5cGU6OkNTU19NUykKKyAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVU
eXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok1zKQogICAgICAgICByZXR1cm4gdmFsdWU8VD4oKSAvIDEw
MDA7Ci0gICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkg
PT0gQ1NTVW5pdFR5cGU6OkNTU19NUykKKyAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlzZWNvbmRz
ICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6TXMpCiAgICAgICAgIHJldHVybiB2
YWx1ZTxUPigpOwotICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0aXZl
VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUykKKyAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlz
ZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6U2Vjb25kKQogICAgICAg
ICByZXR1cm4gdmFsdWU8VD4oKSAqIDEwMDA7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIDA7CkBAIC0zMjMsMTMgKzMyMywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJlZjxUPiYmIHZhbHVl
KQogaW5saW5lIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXMoQ1NTVW5p
dFR5cGUgdHlwZSwgZG91YmxlIGFuZ2xlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgogICAg
ICAgICByZXR1cm4gYW5nbGU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpSYWQ6CiAgICAgICAgIHJldHVybiByYWQyZGVnKGFuZ2xlKTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFk
OgogICAgICAgICByZXR1cm4gZ3JhZDJkZWcoYW5nbGUpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19UVVJOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CiAgICAgICAgIHJldHVybiB0
dXJuMmRlZyhhbmdsZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApp
bmRleCBkMjg5N2JmNmIzMGIyMjVkN2EwYTZlZmQ3MzUzYmViZmVjYjY2OGQ5Li4xMzNhYmEyNTNj
MDYxNDNhYTE2OWRmMzJjMGU0ZWM4MzM5MGFmMDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTUzLDEzICs1MywxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoc2hvcnQgaSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewot
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBtX3ZhbHVlLm51
bSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBzaG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKHByaW1pdGl2
ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCisgICAgaWYgKHByaW1pdGl2
ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKICAgICAgICAgcmV0dXJuIGNsYW1w
VG88c2hvcnQ+KG1fdmFsdWUubnVtKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
NjksMTMgKzY5LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBzaG9ydCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUodW5zaWduZWQgc2hvcnQgaSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6TnVtYmVyKTsK
ICAgICBtX3ZhbHVlLm51bSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaSk7CiB9CiAKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGNv
bnN0CiB7Ci0gICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UikKKyAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTx1bnNpZ25lZCBzaG9ydD4oKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKSBjb25zdAogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIHsKLSAgICBpZiAocHJp
bWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQorICAgIGlmIChwcmltaXRp
dmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKICAgICAgICAgcmV0dXJuIHZhbHVlPGlu
dD4oKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTMsNyArOTMsNyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVuc2lnbmVkKCkg
Y29uc3QKIHsKLSAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKQorICAgIGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKICAg
ICAgICAgcmV0dXJuIHZhbHVlPHVuc2lnbmVkPigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgdW5zaWduZWQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGZsb2F0IGkpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUik7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6Ok51bWJl
cik7CiAgICAgbV92YWx1ZS5udW0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpOwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgZmxvYXQoKSBjb25zdAog
ewotICAgIGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCisg
ICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKQogICAgICAgICBy
ZXR1cm4gdmFsdWU8ZmxvYXQ+KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEy
MCwxNiArMTIwLDE2IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBmbG9hdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUNsYW1wVmFsdWUgaSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKGkuaXNQZXJjZW50YWdlKCkg
PyBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UgOiBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7
CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoaS5pc1BlcmNlbnRhZ2UoKSA/IENTU1VuaXRUeXBl
OjpQZXJjZW50YWdlIDogQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgbV92YWx1ZS5udW0gPSBz
dGF0aWNfY2FzdDxkb3VibGU+KGkudmFsdWUoKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQ2xhbXBWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikKKyAgICBpZiAo
cHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAgICAgIHJldHVybiBM
aW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExpbmVDbGFtcDo6TGluZUNvdW50KTsKIAotICAg
IGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKQorICAg
IGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAg
IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExpbmVDbGFtcDo6UGVyY2VudGFn
ZSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUNsYW1wVmFsdWUo
KSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKFJlZmxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBSZWZsZWN0aW9uRGlyZWN0
aW9uOjpBYm92ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBYm92ZTsKQEAg
LTE3OSw3ICsxNzksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgUmVmbGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sdW1uRmlsbCBjb2x1bW5GaWxsKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoY29sdW1uRmlsbCkgewogICAgIGNh
c2UgQ29sdW1uRmlsbDo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2x1bW5GaWxsIGNvbHVtbkZpbGwpCiAKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2x1bW5GaWxsKCkgY29uc3QK
IHsKLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKSB7CisgICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpIHsKICAgICAgICAgaWYgKG1fdmFsdWUudmFsdWVJRCA9PSBDU1NWYWx1ZUJhbGFuY2UpCiAg
ICAgICAgICAgICByZXR1cm4gQ29sdW1uRmlsbDo6QmFsYW5jZTsKICAgICAgICAgaWYgKG1fdmFs
dWUudmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8pCkBAIC0yMDUsNyArMjA1LDcgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtbkZpbGwoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENv
bHVtblNwYW4gY29sdW1uU3BhbikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewot
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2gg
KGNvbHVtblNwYW4pIHsKICAgICBjYXNlIENvbHVtblNwYW46OkFsbDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbGw7CkBAIC0yMTksNyArMjE5LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbHVtblNwYW4gY29s
dW1uU3BhbikKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBD
b2x1bW5TcGFuKCkgY29uc3QKIHsKICAgICAvLyBNYXAgMSB0byBub25lIGZvciBjb21wYXRpYmls
aXR5IHJlYXNvbnMuCi0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIgJiYgbV92YWx1ZS5udW0gPT0gMSkKKyAgICBpZiAocHJpbWl0aXZlVW5pdFR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyICYmIG1fdmFsdWUubnVtID09IDEpCiAgICAgICAg
IHJldHVybiBDb2x1bW5TcGFuOjpOb25lOwogCiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKQEAg
LTI0MSw3ICsyNDEsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQ29sdW1uU3BhbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHZhbHVlKSB7CiAgICAgY2FzZSBQcmludENvbG9y
QWRqdXN0OjpFeGFjdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFeGFjdDsK
QEAgLTI3Myw3ICsyNzMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgUHJpbnRDb2xvckFkanVzdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm9yZGVyU3R5bGUgZSkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJvcmRlclN0eWxlOjpO
b25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0zMjksNyAr
MzI5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE91
dGxpbmVJc0F1dG8oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKENvbXBvc2l0ZU9wZXJhdG9yIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFs
dWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBDb21wb3NpdGVPcGVyYXRvcjo6Q2xl
YXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2xlYXI7CkBAIC00MTgsNyAr
NDE4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENv
bXBvc2l0ZU9wZXJhdG9yKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFydCBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgTm9Db250cm9sUGFydDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb250cm9sUGFydCgpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoQmFja2ZhY2VWaXNpYmlsaXR5IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dp
dGNoIChlKSB7CiAgICAgY2FzZSBCYWNrZmFjZVZpc2liaWxpdHk6OlZpc2libGU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQmFja2ZhY2VWaXNp
YmlsaXR5KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShGaWxsQXR0YWNobWVudCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRmlsbEF0dGFjaG1lbnQ6OlNjcm9sbEJhY2tncm91
bmQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2Nyb2xsOwpAQCAtNzAzLDcg
KzcwMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBG
aWxsQXR0YWNobWVudCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRmlsbEJveCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRmlsbEJveDo6Qm9yZGVyOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvcmRlckJveDsKQEAgLTc0OCw3ICs3NDgsNyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRmlsbEJveCgpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
RmlsbFJlcGVhdCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewog
ICAgIGNhc2UgRmlsbFJlcGVhdDo6UmVwZWF0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVJlcGVhdDsKQEAgLTc4OSw3ICs3ODksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRmlsbFJlcGVhdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm94UGFjayBlKQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQm94UGFjazo6
U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3RhcnQ7CkBAIC04MzAs
NyArODMwLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEJveFBhY2soKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEJveEFsaWdubWVudCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQm94QWxpZ25tZW50OjpTdHJldGNoOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0cmV0Y2g7CkBAIC04NzcsNyArODc3LDcgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJveEFsaWdubWVu
dCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoQm94RGVjb3JhdGlvbkJyZWFrIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBCb3hEZWNvcmF0aW9uQnJlYWs6OlNsaWNlOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNsaWNlOwpAQCAtOTA5LDcgKzkwOSw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3hEZWNvcmF0
aW9uQnJlYWsoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEVkZ2UgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwor
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0
Y2ggKGUpIHsKICAgICBjYXNlIEVkZ2U6OlRvcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVUb3A7CkBAIC05NTAsNyArOTUwLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVkZ2UoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJveFNpemluZyBlKQogICAgIDogQ1NT
VmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5
cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQm94U2l6aW5nOjpCb3Jk
ZXJCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQm9yZGVyQm94OwpAQCAt
OTgxLDcgKzk4MSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBCb3hTaXppbmcoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJveERpcmVjdGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQm94RGlyZWN0aW9uOjpOb3JtYWw6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpAQCAtMTAxMiw3ICsxMDEy
LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJveERp
cmVjdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoQm94TGluZXMgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBz
d2l0Y2ggKGUpIHsKICAgICBjYXNlIEJveExpbmVzOjpTaW5nbGU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlU2luZ2xlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJveExpbmVzKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShCb3hP
cmllbnQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBj
YXNlIEJveE9yaWVudDo6SG9yaXpvbnRhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVIb3Jpem9udGFsOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJveE9yaWVudCgpIGNvbnN0CiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ2FwdGlvblNpZGUg
ZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIENh
cHRpb25TaWRlOjpMZWZ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7
CkBAIC0xMTE3LDcgKzExMTcsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgQ2FwdGlvblNpZGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENsZWFyIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFs
dWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBDbGVhcjo6Tm9uZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENsZWFyKCkgY29uc3QK
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShD
dXJzb3JUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAg
ICAgY2FzZSBDdXJzb3JUeXBlOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUF1dG87CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ3Vyc29yVmlzaWJpbGl0eSBl
KQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQ3Vy
c29yVmlzaWJpbGl0eTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOwpAQCAtMTMzNCw3ICsxMzM0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEN1cnNvclZpc2liaWxpdHkoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKERpc3BsYXlUeXBlIGUpCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBEaXNwbGF5
VHlwZTo6SW5saW5lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZTsK
QEAgLTE0MjMsNyArMTQyMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBEaXNwbGF5VHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRW1wdHlDZWxsIGUpCiAgICAgOiBDU1NWYWx1
ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBFbXB0eUNlbGw6OlNob3c6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2hvdzsKQEAgLTE0NTQsNyArMTQ1NCw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFbXB0eUNl
bGwoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEZsZXhEaXJlY3Rpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBz
d2l0Y2ggKGUpIHsKICAgICBjYXNlIEZsZXhEaXJlY3Rpb246OlJvdzoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVSb3c7CkBAIC0xNDk1LDcgKzE0OTUsNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRmxleERpcmVjdGlvbigpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
QWxpZ25Db250ZW50IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7
CiAgICAgY2FzZSBBbGlnbkNvbnRlbnQ6OkZsZXhTdGFydDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVGbGV4U3RhcnQ7CkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQWxpZ25Db250ZW50KCkgY29uc3QK
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShG
bGV4V3JhcCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAg
IGNhc2UgRmxleFdyYXA6Ok5vV3JhcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVOb3dyYXA7CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRmxleFdyYXAoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZsb2F0IGUpCiAgICAgOiBDU1NW
YWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBGbG9hdDo6Tm9uZToKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZsb2F0KCkg
Y29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShMaW5lQnJlYWsgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUp
IHsKICAgICBjYXNlIExpbmVCcmVhazo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVBdXRvOwpAQCAtMTcwMyw3ICsxNzAzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVCcmVhaygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGlzdFN0eWxlUG9zaXRp
b24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNl
IExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU91dHNpZGU7CkBAIC0xNzQ3LDcgKzE3NDcsNyBAQCBpbmxpbmUgQ1NTVmFsdWVJRCB0
b0NTU1ZhbHVlSUQoTGlzdFN0eWxlVHlwZSBzdHlsZSkKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaXN0U3R5bGVUeXBlIHN0eWxlKQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIG1fdmFsdWUudmFsdWVJRCA9IHRvQ1NTVmFsdWVJRChz
dHlsZSk7CiB9CiAKQEAgLTE3NjYsNyArMTc2Niw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaXN0U3R5bGVUeXBlKCkgY29uc3QKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShNYXJnaW5Db2xsYXBz
ZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2Ug
TWFyZ2luQ29sbGFwc2U6OkNvbGxhcHNlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUNvbGxhcHNlOwpAQCAtMTgwMiw3ICsxODAyLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE1hcmdpbkNvbGxhcHNlKCkgY29uc3QKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShNYXJxdWVlQmVo
YXZpb3IgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBj
YXNlIE1hcnF1ZWVCZWhhdmlvcjo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVOb25lOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIE1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0CiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFycXVlZURpcmVj
dGlvbiBkaXJlY3Rpb24pCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChkaXJl
Y3Rpb24pIHsKICAgICBjYXNlIE1hcnF1ZWVEaXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRm9yd2FyZHM7CkBAIC0xOTAxLDcgKzE5MDEsNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTWFycXVlZURpcmVj
dGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoTkJTUE1vZGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOwor
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0
Y2ggKGUpIHsKICAgICBjYXNlIE5CU1BNb2RlOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE5CU1BNb2RlKCkgY29uc3QKIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPdmVyZmxv
dyBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2Ug
T3ZlcmZsb3c6OlZpc2libGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlz
aWJsZTsKQEAgLTE5ODksNyArMTk4OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBPdmVyZmxvdygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT3ZlcnNjcm9sbEJlaGF2aW9yIGJlaGF2
aW9yKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoYmVoYXZpb3IpIHsKICAg
ICBjYXNlIE92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVDb250YWluOwpAQCAtMjAyNSw3ICsyMDI1LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoQnJlYWtCZXR3ZWVuIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChl
KSB7CiAgICAgY2FzZSBCcmVha0JldHdlZW46OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQXV0bzsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4oKSBjb25zdAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJyZWFrSW5z
aWRlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2Fz
ZSBCcmVha0luc2lkZTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEJyZWFrSW5zaWRlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQb3NpdGlvblR5cGUgZSkKICAgICA6
IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFBvc2l0aW9uVHlw
ZTo6U3RhdGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0YXRpYzsKQEAg
LTIxODQsNyArMjE4NCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBQb3NpdGlvblR5cGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJlc2l6ZSBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgUmVzaXplOjpCb3RoOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvdGg7CkBAIC0yMjI4LDcgKzIyMjgsNyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgUmVzaXplKCkgY29uc3QK
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShU
YWJsZUxheW91dFR5cGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUp
IHsKICAgICBjYXNlIFRhYmxlTGF5b3V0VHlwZTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtMjI1OSw3ICsyMjU5LDcgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRhYmxlTGF5b3V0VHlwZSgpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4
dEFsaWduTW9kZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewog
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlU3RhcnQ7CkBAIC0yMzEwLDcgKzIzMTAsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEFsaWduTW9kZSgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEFsaWdu
TGFzdCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNh
c2UgVGV4dEFsaWduTGFzdDo6U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlU3RhcnQ7CkBAIC0yMzY2LDcgKzIzNjYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEFsaWduTGFzdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEp1c3RpZnkgZSkK
ICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFRleHRK
dXN0aWZ5OjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CkBA
IC0yNDU4LDcgKzI0NTgsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgVGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dFVuZGVybGluZVBvc2l0aW9u
IHBvc2l0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAocG9zaXRpb24p
IHsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtMjQ5Nyw3ICsyNDk3LDcgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRVbmRlcmxpbmVQb3NpdGlv
bigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoVGV4dFNlY3VyaXR5IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dp
dGNoIChlKSB7CiAgICAgY2FzZSBUZXh0U2VjdXJpdHk6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKQEAgLTI1MzgsNyArMjUzOCw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0U2VjdXJpdHkoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRl
eHRUcmFuc2Zvcm0gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsK
ICAgICBjYXNlIFRleHRUcmFuc2Zvcm06OkNhcGl0YWxpemU6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQ2FwaXRhbGl6ZTsKQEAgLTI1NzksNyArMjU3OSw3IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtKCkgY29u
c3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFVW5pY29kZUJpZGkgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUp
IHsKICAgICBjYXNlIFVCTm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU5vcm1hbDsKQEAgLTI2MzMsNyArMjYzMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFVW5pY29kZUJpZGkoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFVzZXJEcmFnIGUpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBVc2VyRHJhZzo6
QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtMjY3MSw3
ICsyNjcxLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IFVzZXJEcmFnKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShVc2VyTW9kaWZ5IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBVc2VyTW9kaWZ5OjpSZWFkT25seToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZWFkT25seTsKQEAgLTI3MDcsNyArMjcwNyw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBVc2VyTW9kaWZ5
KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShVc2VyU2VsZWN0IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
LSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNo
IChlKSB7CiAgICAgY2FzZSBVc2VyU2VsZWN0OjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVXNlclNlbGVjdCgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmVydGljYWxB
bGlnbiBhKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoYSkgewogICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VG9wOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZVRvcDsKQEAgLTI4MTMsNyArMjgxMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBWZXJ0aWNhbEFsaWduKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShWaXNpYmlsaXR5IGUpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBWaXNpYmlsaXR5
OjpWaXNpYmxlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGU7CkBA
IC0yODQ5LDcgKzI4NDksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgVmlzaWJpbGl0eSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV2hpdGVTcGFjZSBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZh
bHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgV2hpdGVTcGFjZTo6Tm9ybWFsOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTI5MDUsNyArMjkw
NSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0
ZVNwYWNlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShXb3JkQnJlYWsgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBz
d2l0Y2ggKGUpIHsKICAgICBjYXNlIFdvcmRCcmVhazo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTI5NDYsNyArMjk0Niw3IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXb3JkQnJlYWsoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE92
ZXJmbG93V3JhcCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewog
ICAgIGNhc2UgT3ZlcmZsb3dXcmFwOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTm9ybWFsOwpAQCAtMjk4Miw3ICsyOTgyLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE92ZXJmbG93V3JhcCgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dERpcmVj
dGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNh
c2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUx0cjsKQEAgLTMwMTMsNyArMzAxMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9uKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShXcml0aW5nTW9kZSBlKQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgV3JpdGluZ01v
ZGU6OlRvcFRvQm90dG9tOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhvcml6
b250YWxUYjsKQEAgLTMwNjAsNyArMzA2MCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBXcml0aW5nTW9kZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dENvbWJpbmUgZSkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFRleHRDb21i
aW5lOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0z
MDkxLDcgKzMwOTEsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgVGV4dENvbWJpbmUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7CiAgICAgY2FzZSBSdWJ5UG9z
aXRpb246OkJlZm9yZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCZWZvcmU7
CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgUnVieVBvc2l0aW9uKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0T3ZlcmZsb3cgb3ZlcmZsb3cpCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChvdmVyZmxvdykgewogICAgIGNhc2Ug
VGV4dE92ZXJmbG93OjpDbGlwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNs
aXA7CkBAIC0zMTU4LDcgKzMxNTgsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgVGV4dE92ZXJmbG93KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0RW1waGFzaXNGaWxsIGZpbGwp
CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChmaWxsKSB7CiAgICAgY2FzZSBU
ZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlRmlsbGVkOwpAQCAtMzE4OSw3ICszMTg5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRFbXBoYXNpc0ZpbGwoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRFbXBoYXNp
c01hcmsgbWFyaykKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKG1hcmspIHsK
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVEb3Q7CkBAIC0zMjQzLDcgKzMyNDMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEVtcGhhc2lzTWFyaygpIGNvbnN0CiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dE9y
aWVudGF0aW9uIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAg
ICAgY2FzZSBUZXh0T3JpZW50YXRpb246OlNpZGV3YXlzOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVNpZGV3YXlzOwpAQCAtMzI4Myw3ICszMjgzLDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRPcmllbnRhdGlvbigpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
UG9pbnRlckV2ZW50cyBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgUG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb25lOwpAQCAtMzM1OSw3ICszMzU5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMoKSBjb25zdAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEtlcm5pbmcg
a2VybmluZykKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGtlcm5pbmcpIHsK
ICAgICBjYXNlIEtlcm5pbmc6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQXV0bzsKQEAgLTMzOTgsNyArMzM5OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBLZXJuaW5nKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPYmplY3RGaXQgZml0KQogICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZml0KSB7CiAgICAgY2FzZSBPYmplY3RGaXQ6
OkZpbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRmlsbDsKQEAgLTM0NDIs
NyArMzQ0Miw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBPYmplY3RGaXQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZykKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHNtb290aGluZykgewogICAgIGNhc2UgRm9udFNt
b290aGluZ01vZGU6OkF1dG9TbW9vdGhpbmc6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXV0bzsKQEAgLTM0ODYsNyArMzQ4Niw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBGb250U21vb3RoaW5nTW9kZSgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRm9udFNtYWxs
Q2FwcyBzbWFsbENhcHMpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChzbWFs
bENhcHMpIHsKICAgICBjYXNlIEZvbnRTbWFsbENhcHM6Ok9mZjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC0zNTE5LDcgKzM1MTksNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRm9udFNtYWxsQ2FwcygpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
VGV4dFJlbmRlcmluZ01vZGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewot
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2gg
KGUpIHsKICAgICBjYXNlIFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZzoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtMzU2MCw3ICszNTYwLDcg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRSZW5k
ZXJpbmdNb2RlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShIeXBoZW5zIGh5cGhlbnMpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRp
dmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZB
TFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7
CiAgICAgc3dpdGNoIChoeXBoZW5zKSB7CiAgICAgY2FzZSBIeXBoZW5zOjpOb25lOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0zNTk2LDcgKzM1OTYsNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSHlwaGVucygpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoTGluZVNuYXAgZ3JpZFNuYXApCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
LSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNo
IChncmlkU25hcCkgewogICAgIGNhc2UgTGluZVNuYXA6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKQEAgLTM2MzIsNyArMzYzMiw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lU25hcCgpIGNvbnN0CiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUFs
aWduIGxpbmVBbGlnbikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGxpbmVB
bGlnbikgewogICAgIGNhc2UgTGluZUFsaWduOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0zNjYzLDcgKzM2NjMsNyBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUFsaWduKCkgY29uc3QKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShTcGVha0FzIGUp
CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBTcGVh
a0FzOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpA
QCAtMzcwMyw3ICszNzAzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIE9yZGVyKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPcmRlciBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgT3JkZXI6OkxvZ2ljYWw6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTG9naWNhbDsKQEAgLTM3NDAsNyArMzc0MCw3IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8U3BlYWtB
cz4oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChibGVuZE1vZGUpIHsKICAgICBjYXNlIEJsZW5kTW9kZTo6Tm9ybWFsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTM4NTEsNyArMzg1MSw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCbGVuZE1v
ZGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKElzb2xhdGlvbiBpc29sYXRpb24pCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChpc29sYXRpb24pIHsKICAgICBjYXNlIElzb2xhdGlvbjo6QXV0bzoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtMzg4Myw3ICszODgzLDcgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIElzb2xhdGlvbigp
IGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoTGluZUNhcCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgQnV0dENhcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVC
dXR0OwpAQCAtMzkxOSw3ICszOTE5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIExpbmVDYXAoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpbmVKb2luIGUpCiAgICAgOiBDU1NWYWx1
ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBNaXRlckpvaW46CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWl0ZXI7CkBAIC0zOTU1LDcgKzM5NTUsNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUpvaW4oKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKFdpbmRSdWxlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7
CiAgICAgY2FzZSBXaW5kUnVsZTo6Tm9uWmVybzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVOb256ZXJvOwpAQCAtMzk4Nyw3ICszOTg3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFdpbmRSdWxlKCkgY29uc3QKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShBbGlnbm1lbnRCYXNl
bGluZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNh
c2UgQWxpZ25tZW50QmFzZWxpbmU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXV0bzsKQEAgLTQwNjgsNyArNDA2OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBBbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm9yZGVyQ29s
bGFwc2UgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBj
YXNlIEJvcmRlckNvbGxhcHNlOjpTZXBhcmF0ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVTZXBhcmF0ZTsKQEAgLTQwOTksNyArNDA5OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3JkZXJDb2xsYXBzZSgpIGNvbnN0CiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm9yZGVy
Rml0IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2Fz
ZSBCb3JkZXJGaXQ6OkJvcmRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVC
b3JkZXI7CkBAIC00MTMwLDcgKzQxMzAsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgQm9yZGVyRml0KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShJbWFnZVJlbmRlcmluZyBpbWFnZVJl
bmRlcmluZykKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGltYWdlUmVuZGVy
aW5nKSB7CiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZzo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNDE3OCw3ICs0MTc4LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdlUmVuZGVyaW5nKCkgY29uc3QK
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShU
cmFuc2Zvcm1TdHlsZTNEIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChl
KSB7CiAgICAgY2FzZSBUcmFuc2Zvcm1TdHlsZTNEOjpGbGF0OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUZsYXQ7CkBAIC00MjE4LDcgKzQyMTgsNyBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
VHJhbnNmb3JtQm94IGJveCkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGJv
eCkgewogICAgIGNhc2UgVHJhbnNmb3JtQm94OjpTdHJva2VCb3g6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlU3Ryb2tlQm94OwpAQCAtNDI2NCw3ICs0MjY0LDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRyYW5zZm9ybUJveCgpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoQ29sdW1uQXhpcyBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgQ29sdW1uQXhpczo6SG9yaXpvbnRhbDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVIb3Jpem9udGFsOwpAQCAtNDMwMCw3ICs0MzAwLDcgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtbkF4aXMoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENv
bHVtblByb2dyZXNzaW9uIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChl
KSB7CiAgICAgY2FzZSBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTQzNDIsMTAgKzQzNDIsMTAgQEAgaW5saW5l
IGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRpbmdUb0xlbmd0aFJlcXVpcmVzTm9uTnVs
bFN0eWxlKGludCBsZW5ndGgKICAgICBBU1NFUlQoaXNGb250UmVsYXRpdmVMZW5ndGgoKSk7CiAg
ICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZSgpLgogICAgIHN3aXRjaCAocHJpbWl0aXZlVW5pdFR5cGUo
KSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0VYUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6TGhzOgogICAgICAgICByZXR1cm4gbGVuZ3RoQ29udmVyc2lvbiAmIChGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENvbnZlcnNpb24pOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzNzIsNyArNDM3Miw3IEBAIHRlbXBsYXRlPGlu
dCBzdXBwb3J0ZWQ+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVydFRvTGVuZ3RoKGNv
bnN0IENTU1RvTGVuCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoQnVmZmVyZWRSZW5kZXJpbmcgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFM
VUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsK
ICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJ1ZmZlcmVkUmVuZGVyaW5nOjpBdXRvOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CkBAIC00NDA4LDcgKzQ0MDgsNyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQnVmZmVyZWRS
ZW5kZXJpbmcoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKENvbG9ySW50ZXJwb2xhdGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uOjpBdXRv
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CkBAIC00NDQ0LDcgKzQ0
NDQsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29s
b3JJbnRlcnBvbGF0aW9uKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2xvclJlbmRlcmluZyBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZh
bHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQ29sb3JSZW5kZXJpbmc6OkF1dG86
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTQ0ODAsNyArNDQ4
MCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xv
clJlbmRlcmluZygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRG9taW5hbnRCYXNlbGluZSBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6QXV0bzoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNDU2MSw3ICs0NTYx
LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIERvbWlu
YW50QmFzZWxpbmUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKFNoYXBlUmVuZGVyaW5nIGUpCiAgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJ
RCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBTaGFwZVJlbmRlcmluZzo6QXV0bzoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNDYwMiw3ICs0NjAyLDcg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFNoYXBlUmVu
ZGVyaW5nKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShUZXh0QW5jaG9yIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lE
KTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAg
c3dpdGNoIChlKSB7CiAgICAgY2FzZSBUZXh0QW5jaG9yOjpTdGFydDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGFydDsKQEAgLTQ2MzgsMjEgKzQ2MzgsMjEgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbmNob3IoKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewot
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1IpOworICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpSR0JDb2xvcik7CiAgICAgbV92YWx1
ZS5jb2xvciA9IG5ldyBDb2xvcihjb2xvcik7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDU1NGb250RmFtaWx5IGZvbnRGYW1pbHkp
CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZKTsKKyAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Rm9udEZhbWlseSk7CiAgICAgbV92YWx1ZS5mb250RmFtaWx5ID0g
bmV3IENTU0ZvbnRGYW1pbHkoV1RGTW92ZShmb250RmFtaWx5KSk7CiB9CiAKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShWZWN0b3JFZmZlY3Qg
ZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFZl
Y3RvckVmZmVjdDo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25l
OwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFZlY3RvckVmZmVjdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFza1R5cGUgZSkKICAgICA6IENTU1Zh
bHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBl
OjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIE1hc2tUeXBlOjpMdW1pbmFu
Y2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTHVtaW5hbmNlOwpAQCAtNDcx
NCw3ICs0NzE0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIE1hc2tUeXBlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShDU1NCb3hUeXBlIGNzc0JveCkKICAgICA6IENTU1ZhbHVlKFBy
aW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1
ZUlEKTsKICAgICBzd2l0Y2ggKGNzc0JveCkgewogICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2lu
Qm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hcmdpbkJveDsKQEAgLTQ3
NzIsNyArNDc3Miw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBDU1NCb3hUeXBlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShJdGVtUG9zaXRpb24gaXRlbVBvc2l0aW9uKQogICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoaXRlbVBvc2l0aW9uKSB7CiAgICAgY2FzZSBJ
dGVtUG9zaXRpb246OkxlZ2FjeToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
ZWdhY3k7CkBAIC00ODY3LDcgKzQ4NjcsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgSXRlbVBvc2l0aW9uKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPdmVyZmxvd0FsaWdubWVudCBv
dmVyZmxvd0FsaWdubWVudCkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKG92
ZXJmbG93QWxpZ25tZW50KSB7CiAgICAgY2FzZSBPdmVyZmxvd0FsaWdubWVudDo6RGVmYXVsdDoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEZWZhdWx0OwpAQCAtNDg5OCw3ICs0
ODk4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE92
ZXJmbG93QWxpZ25tZW50KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250ZW50UG9zaXRpb24gY29udGVudFBvc2l0aW9uKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoY29udGVudFBvc2l0aW9uKSB7CiAg
ICAgY2FzZSBDb250ZW50UG9zaXRpb246Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC00OTY4LDcgKzQ5NjgsNyBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29udGVudFBvc2l0aW9uKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250
ZW50RGlzdHJpYnV0aW9uIGNvbnRlbnREaXN0cmlidXRpb24pCiAgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJ
RCk7CiAgICAgc3dpdGNoIChjb250ZW50RGlzdHJpYnV0aW9uKSB7CiAgICAgY2FzZSBDb250ZW50
RGlzdHJpYnV0aW9uOjpEZWZhdWx0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZURlZmF1bHQ7CkBAIC01MDI2LDcgKzUwMjYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFpvb20oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAodGV4dFpvb20pIHsKICAgICBjYXNl
IFRleHRab29tOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9y
bWFsOwpAQCAtNTA0Myw3ICs1MDQzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRvdWNoQWN0aW9uIHRv
dWNoQWN0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAodG91Y2hBY3Rp
b24pIHsKICAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUF1dG87CkBAIC01MDkyLDcgKzUwOTIsNyBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPigpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoU2Nyb2xsU25hcFN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKHN0cmljdG5lc3MpIHsKICAgICBjYXNlIFNjcm9sbFNuYXBTdHJpY3Ru
ZXNzOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC01
MTI1LDcgKzUxMjUsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgU2Nyb2xsU25hcFN0cmljdG5lc3MoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBBeGlzIGF4aXMpCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChheGlzKSB7CiAgICAgY2FzZSBTY3Jv
bGxTbmFwQXhpczo6WEF4aXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlWDsK
QEAgLTUxNjgsNyArNTE2OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBTY3JvbGxTbmFwQXhpcygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoU2Nyb2xsU25hcEF4aXNBbGlnblR5cGUg
dHlwZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC01MjA2LDcgKzUyMDYsNyBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgU2Nyb2xsU25hcEF4aXNBbGlnblR5cGUoKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKFNjcm9sbFNuYXBTdG9wIHNuYXBTdG9wKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoc25hcFN0b3ApIHsKICAgICBjYXNlIFNjcm9sbFNuYXBTdG9wOjpOb3JtYWw6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpAQCAtNTIzNSw3ICs1MjM1
LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFNjcm9s
bFNuYXBTdG9wKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShUcmFpbGluZ1dvcmQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFM
VUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsK
ICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFRyYWlsaW5nV29yZDo6QXV0bzoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNTI2OSw3ICs1MjY5LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRyYWlsaW5nV29yZCgp
IGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoQXBwbGVQYXlCdXR0b25TdHlsZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoZSkgewogICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6V2hpdGU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2hpdGU7CkBAIC01MzA2LDcgKzUzMDYsNyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQXBwbGVQYXlC
dXR0b25TdHlsZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoQXBwbGVQYXlCdXR0b25UeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFs
dWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBs
YWluOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBsYWluOwpAQCAtNTQwOCw3
ICs1NDA4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRm9udFZhcmlhbnRQb3NpdGlvbiBwb3NpdGlvbikK
ICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7CiAgICAgY2Fz
ZSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTm9ybWFsOwpAQCAtNTQ0NSw3ICs1NDQ1LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZvbnRWYXJpYW50UG9zaXRpb24oKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZv
bnRWYXJpYW50Q2FwcyBjYXBzKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0g
ICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAo
Y2FwcykgewogICAgIGNhc2UgRm9udFZhcmlhbnRDYXBzOjpOb3JtYWw6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpAQCAtNTUwMiw3ICs1NTAyLDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZvbnRWYXJpYW50Q2Fwcygp
IGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRm9udFZhcmlhbnRBbHRlcm5hdGVzIGFsdGVybmF0ZXMpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFs
dWVJRCk7CiAgICAgc3dpdGNoIChhbHRlcm5hdGVzKSB7CiAgICAgY2FzZSBGb250VmFyaWFudEFs
dGVybmF0ZXM6Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3Jt
YWw7CkBAIC01NTM0LDcgKzU1MzQsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRm9udFZhcmlhbnRBbHRlcm5hdGVzKCkgY29uc3QKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShGb250T3B0aWNhbFNp
emluZyBzaXppbmcpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChzaXppbmcp
IHsKICAgICBjYXNlIEZvbnRPcHRpY2FsU2l6aW5nOjpFbmFibGVkOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CkBAIC01NTY2LDcgKzU1NjYsNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRm9udE9wdGljYWxTaXppbmcoKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEZvbnRMb2FkaW5nQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRp
dmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZB
TFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7
CiAgICAgc3dpdGNoIChiZWhhdmlvcikgewogICAgIGNhc2UgRm9udExvYWRpbmdCZWhhdmlvcjo6
QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNTYxMyw3
ICs1NjEzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEZvbnRMb2FkaW5nQmVoYXZpb3IoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE1hdGhTdHlsZSBtYXRoU3R5bGUpCiAgICAgOiBD
U1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChtYXRoU3R5bGUpIHsKICAgICBjYXNlIE1hdGhT
dHlsZTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCBiZmQxYWZmYWI0YzU0YjZlNWE4
NzEzMzEyOTZhNjgyMzEwMzQ3Y2FhLi44YWJmMDNkYmJmODRkMmRhMDUyZGM4OTJhM2ZkMGUwZWVm
MmY1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC01NTksMTkgKzU1
OSwxOSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NTVmFs
dWUmIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hZwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5p
c1BlcmNlbnRhZ2UoKSkKICAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAg
Ym94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmludFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5n
dGgoc2xpY2VzLT50b3AoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlciksIExlbmd0aFR5
cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCiAg
ICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1
ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5ib3R0b20o
KSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgIGJveC5ib3R0b20oKSA9
IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6Ok51
bWJlciksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVy
Y2VudGFnZSgpKQogICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5k
b3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJv
eC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAgICAgICBib3gubGVmdCgpID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6TnVtYmVyKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOwogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQog
ICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVl
KCksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnJpZ2h0KCkg
PSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UiksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xp
Y2VzLT5yaWdodCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6TnVtYmVyKSwgTGVuZ3RoVHlwZTo6
Rml4ZWQpOwogICAgIGltYWdlLnNldEltYWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3Vy
IGZpbGwgbW9kZS4KQEAgLTU5NSw3ICs1OTUsNyBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6
bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlJiB2YWx1ZSkKICAgICBpZiAoc2xpY2VzLT50
b3AoKS0+aXNOdW1iZXIoKSkKICAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9w
KCktPmZsb2F0VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgo
c2xpY2VzLT50b3AoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwg
TGVuZ3RoVHlwZTo6UGVyY2VudCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMt
PnRvcCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6UGVyY2VudGFnZSksIExlbmd0aFR5cGU6
OlBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzQ2FsY3VsYXRlZFBlcmNl
bnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRv
cCgpLT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0
YSkpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1
dG8pCkBAIC02MDQsNyArNjA0LDcgQEAgTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlUXVhZChDU1NWYWx1ZSYgdmFsdWUpCiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNOdW1iZXIoKSkKICAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5mbG9hdFZhbHVlKCksIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGlj
ZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFH
RSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChz
bGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKSwgTGVu
Z3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc0NhbGN1
bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVl
KGNvbnZlcnNpb25EYXRhKSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT52YWx1ZUlE
KCkgIT0gQ1NTVmFsdWVBdXRvKQpAQCAtNjEzLDcgKzYxMyw3IEBAIExlbmd0aEJveCBDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUmIHZhbHVlKQogICAgIGlmIChz
bGljZXMtPmJvdHRvbSgpLT5pc051bWJlcigpKQogICAgICAgICBib3guYm90dG9tKCkgPSBMZW5n
dGgoc2xpY2VzLT5ib3R0b20oKS0+ZmxvYXRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7
CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAg
IGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKKyAgICAgICAg
Ym94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRvdWJsZVZhbHVlKENTU1Vu
aXRUeXBlOjpQZXJjZW50YWdlKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZSBpZiAo
c2xpY2VzLT5ib3R0b20oKS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAg
ICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmNzc0NhbGNWYWx1
ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CiAgICAgZWxzZSBp
ZiAoc2xpY2VzLT5ib3R0b20oKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKQEAgLTYyMiw3
ICs2MjIsNyBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFk
KENTU1ZhbHVlJiB2YWx1ZSkKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCiAg
ICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmZsb2F0VmFsdWUoKSwg
TGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+
ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3RoVHlwZTo6UGVy
Y2VudCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRvdWJs
ZVZhbHVlKENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAg
ICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVu
Z3RoKCkpCiAgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmNzc0Nh
bGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CiAgICAg
ZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1VuaXRzLmNwcAppbmRleCBkOTZjOTFkZWIwMWRlOTVkYTZkZGIwZTZmNTU5YTU0NjQ1
MGI2OWIxLi4wNzhiOTEzZmIzYTY0ZTYyZDE4ODc1ZjZkZTNlYTNiNGM0NmU5ODkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NVbml0cy5jcHAKQEAgLTI4LDMyICsyOCwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBDU1NVbml0Q2F0ZWdvcnkgdW5pdENhdGVnb3J5KENTU1VuaXRUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBDU1NVbml0Q2F0ZWdvcnk6
Ok51bWJlcjsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgogICAgICAgICByZXR1cm4gQ1NTVW5pdENhdGVnb3J5
OjpQZXJjZW50OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlB0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlE6CiAgICAgICAgIHJldHVybiBDU1NVbml0Q2F0ZWdvcnk6Okxlbmd0aDsK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1M6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2Vj
b25kOgogICAgICAgICByZXR1cm4gQ1NTVW5pdENhdGVnb3J5OjpUaW1lOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19ERUc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVS
TjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmFk
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVy
bjoKICAgICAgICAgcmV0dXJuIENTU1VuaXRDYXRlZ29yeTo6QW5nbGU7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6SHo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6S0h6OgogICAgICAgICBy
ZXR1cm4gQ1NTVW5pdENhdGVnb3J5OjpGcmVxdWVuY3k7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0RQUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQSToKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfRFBDTToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckluY2g6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RG90c1BlckNlbnRpbWV0ZXI6CiAgICAgICAgIHJldHVybiBDU1NVbml0Q2F0ZWdvcnk6OlJlc29s
dXRpb247CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIENTU1VuaXRDYXRlZ29yeTo6T3Ro
ZXI7CkBAIC02NCwyMyArNjQsMjMgQEAgQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5pdFR5cGVGb3JD
YXRlZ29yeShDU1NVbml0Q2F0ZWdvcnkgY2F0ZWdvcnkpCiB7CiAgICAgc3dpdGNoIChjYXRlZ29y
eSkgewogICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpOdW1iZXI6Ci0gICAgICAgIHJldHVybiBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpOdW1i
ZXI7CiAgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6Okxlbmd0aDoKLSAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpDU1NfUFg7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UHg7CiAgICAg
Y2FzZSBDU1NVbml0Q2F0ZWdvcnk6OlBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6Q1NTX1VOS05PV047IC8vIENhbm5vdCBjb252ZXJ0IGJldHdlZW4gbnVtYmVycyBhbmQgcGVy
Y2VudC4KKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpVbmtub3duOyAvLyBDYW5ub3QgY29u
dmVydCBiZXR3ZWVuIG51bWJlcnMgYW5kIHBlcmNlbnQuCiAgICAgY2FzZSBDU1NVbml0Q2F0ZWdv
cnk6OlRpbWU6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX01TOworICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6Ok1zOwogICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpBbmdsZToK
LSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfREVHOworICAgICAgICByZXR1cm4gQ1NT
VW5pdFR5cGU6OkRlZzsKICAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6RnJlcXVlbmN5OgotICAg
ICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19IWjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRU
eXBlOjpIejsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pIHx8IEVOQUJMRShSRVNP
TFVUSU9OX01FRElBX1FVRVJZKQogICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpSZXNvbHV0aW9u
OgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19EUFBYOworICAgICAgICByZXR1cm4g
Q1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbDsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV047CisgICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6VW5rbm93bjsKICAgICB9CiB9CiAKQEAgLTEwNyw1OSArMTA3LDU5IEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENTU1VuaXRDYXRlZ29yeSBjYXRlZ29yeSkK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENTU1VuaXRUeXBlIHVuaXRU
eXBlKQogewogICAgIHN3aXRjaCAodW5pdFR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVU5LTk9XTjogdHMgPDwgInVua25vd24iOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSOiB0cyA8PCAibnVtYmVyIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BFUkNFTlRBR0U6IHRzIDw8ICJwZXJjZW50YWdlIjsgYnJlYWs7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0VNUzogdHMgPDwgImVtcyI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19FWFM6IHRzIDw8ICJleHMiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUFg6IHRzIDw8ICJweCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19D
TTogdHMgPDwgImNtIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOiB0cyA8
PCAibW0iOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSU46IHRzIDw8ICJpbiI7
IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDogdHMgPDwgInB0IjsgYnJlYWs7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOiB0cyA8PCAicGMiOyBicmVhazsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOiB0cyA8PCAiZGVnIjsgYnJlYWs7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1JBRDogdHMgPDwgInJhZCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19HUkFEOiB0cyA8PCAiZ3JhZCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19NUzogdHMgPDwgIm1zIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1M6IHRzIDw8ICJzIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0haOiB0cyA8
PCAiaHoiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOiB0cyA8PCAia2h6
IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTjogdHMgPDwgImRp
bWVuc2lvbiI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkc6IHRzIDw8
ICJzdHJpbmciOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVVJJOiB0cyA8PCAi
dXJpIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOiB0cyA8PCAiaWRl
bnQiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmtub3duOiB0cyA8PCAidW5rbm93
biI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjogdHMgPDwgIm51bWJlciI7
IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6IHRzIDw8ICJwZXJjZW50
YWdlIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOiB0cyA8PCAiZW1zIjsgYnJl
YWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOiB0cyA8PCAiZXhzIjsgYnJlYWs7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UHg6IHRzIDw8ICJweCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNtOiB0cyA8PCAiY20iOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNbTog
dHMgPDwgIm1tIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46IHRzIDw8ICJpbiI7
IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OiB0cyA8PCAicHQiOyBicmVhazsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQYzogdHMgPDwgInBjIjsgYnJlYWs7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RGVnOiB0cyA8PCAiZGVnIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UmFkOiB0cyA8PCAicmFkIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDogdHMg
PDwgImdyYWQiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczogdHMgPDwgIm1zIjsg
YnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2Vjb25kOiB0cyA8PCAicyI7IGJyZWFrOwor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OiB0cyA8PCAiaHoiOyBicmVhazsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpLSHo6IHRzIDw8ICJraHoiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpEaW1lbnNpb246IHRzIDw8ICJkaW1lbnNpb24iOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpTdHJpbmc6IHRzIDw8ICJzdHJpbmciOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpVUkk6IHRzIDw8ICJ1cmkiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJZGVudDog
dHMgPDwgImlkZW50IjsgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6
IHRzIDw8ICJjdXN0b20taWRlbnQiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
QVRUUjogdHMgPDwgImF0dHIiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09V
TlRFUjogdHMgPDwgImNvdW50ZXIiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UkVDVDogdHMgPDwgInJlY3QiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdC
Q09MT1I6IHRzIDw8ICJyZ2Jjb2xvciI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19WVzogdHMgPDwgInZ3IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOiB0
cyA8PCAidmgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjogdHMgPDwg
InZtaW4iOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDogdHMgPDwgInZt
YXgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBQWDogdHMgPDwgImRwcHgi
OyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBJOiB0cyA8PCAiZHBpIjsgYnJl
YWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQQ006IHRzIDw8ICJkcGNtIjsgYnJlYWs7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZSOiB0cyA8PCAiZnIiOyBicmVhazsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUTogdHMgPDwgInEiOyBicmVhazsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfTEhTOiB0cyA8PCAibGgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUkxIUzogdHMgPDwgInJsaCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QQUlSOiB0cyA8PCAicGFpciI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19V
TklDT0RFX1JBTkdFOiB0cyA8PCAidW5pY29kZV9yYW5nZSI7IGJyZWFrOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19UVVJOOiB0cyA8PCAidHVybiI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19SRU1TOiB0cyA8PCAicmVtcyI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19DSFM6IHRzIDw8ICJjaHMiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfQ09VTlRFUl9OQU1FOiB0cyA8PCAiY291bnRlcl9uYW1lIjsgYnJlYWs7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1NIQVBFOiB0cyA8PCAic2hhcGUiOyBicmVhazsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUVVBRDogdHMgPDwgInF1YWQiOyBicmVhazsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ0FMQzogdHMgPDwgImNhbGMiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOiB0cyA8PCAiY2FsY19wZXJjZW50
YWdlX3dpdGhfbnVtYmVyIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDogdHMgPDwgImNhbGNfcGVyY2VudGFnZV93aXRoX2xlbmd0
aCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWTogdHMgPDwg
ImZvbnRfZmFtaWx5IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZ
X0lEOiB0cyA8PCAicHJvcGVydHlfaWQiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQ6IHRzIDw8ICJ2YWx1ZV9pZCI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19RVUlSS1lfRU1TOiB0cyA8PCAicXVpcmt5X2VtcyI7IGJyZWFrOworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkF0dHI6IHRzIDw8ICJhdHRyIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q291bnRlcjogdHMgPDwgImNvdW50ZXIiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpSZWN0OiB0cyA8PCAicmVjdCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJH
QkNvbG9yOiB0cyA8PCAicmdiY29sb3IiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpW
aWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDogdHMgPDwgInZ3IjsgYnJlYWs7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OiB0cyA8PCAidmgiOyBicmVhazsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46IHRzIDw8ICJ2bWluIjsg
YnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OiB0cyA8
PCAidm1heCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbDogdHMg
PDwgImRwcHgiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVySW5jaDogdHMg
PDwgImRwaSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVy
OiB0cyA8PCAiZHBjbSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6IHRzIDw8
ICJmciI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlE6IHRzIDw8ICJxIjsgYnJlYWs7
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TGhzOiB0cyA8PCAibGgiOyBicmVhazsKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpSbGhzOiB0cyA8PCAicmxoIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UGFpcjogdHMgPDwgInBhaXIiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpV
bmljb2RlUmFuZ2U6IHRzIDw8ICJ1bmljb2RlX3JhbmdlIjsgYnJlYWs7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6VHVybjogdHMgPDwgInR1cm4iOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpSZW1zOiB0cyA8PCAicmVtcyI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNoczog
dHMgPDwgImNocyI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50ZXJOYW1lOiB0
cyA8PCAiY291bnRlcl9uYW1lIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2hhcGU6
IHRzIDw8ICJzaGFwZSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1YWQ6IHRzIDw8
ICJxdWFkIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZDogdHMgPDwg
ImNhbGMiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFn
ZVdpdGhOdW1iZXI6IHRzIDw8ICJjYWxjX3BlcmNlbnRhZ2Vfd2l0aF9udW1iZXIiOyBicmVhazsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGg6IHRz
IDw8ICJjYWxjX3BlcmNlbnRhZ2Vfd2l0aF9sZW5ndGgiOyBicmVhazsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpGb250RmFtaWx5OiB0cyA8PCAiZm9udF9mYW1pbHkiOyBicmVhazsKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEOiB0cyA8PCAicHJvcGVydHlfaWQiOyBicmVhazsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpWYWx1ZUlEOiB0cyA8PCAidmFsdWVfaWQiOyBicmVhazsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpRdWlya3lFbXM6IHRzIDw8ICJxdWlya3lfZW1zIjsgYnJlYWs7
CiAgICAgfQogICAgIHJldHVybiB0czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmgKaW5kZXggNTNiYmQy
ZjAwZmJkOWUxNWZiOGI4MmFjODNkMzFkMTFiN2NmMmM0Yy4uZWQzZjliZTkzY2I3Y2VjOTVmNzJk
M2EyNzVkNzJjMDA3OGNhMzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmgKQEAgLTI4LDc0ICsyOCw3
MyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGSVhNRTog
Tm8gbmVlZCB0byBoYXJkLWNvZGUgdGhlIG51bWJlcnMgaGVyZSBhbnkgbW9yZSwgc28gd2Ugc2hv
dWxkIHJlbW92ZSB0aGVtLgotLy8gRklYTUU6IE5vIG5lZWQgdG8gdXNlIGFsbCBjYXBpdGFscyBh
bmQgYSBDU1MgcHJlZml4IG9uIGFsbCB0aGVzZSBuYW1lcy4gU2hvdWxkIGZpeCB0aGF0LgogZW51
bSBjbGFzcyBDU1NVbml0VHlwZSA6IHVpbnQ4X3QgewotICAgIENTU19VTktOT1dOID0gMCwKLSAg
ICBDU1NfTlVNQkVSID0gMSwKLSAgICBDU1NfUEVSQ0VOVEFHRSA9IDIsCi0gICAgQ1NTX0VNUyA9
IDMsCi0gICAgQ1NTX0VYUyA9IDQsCi0gICAgQ1NTX1BYID0gNSwKLSAgICBDU1NfQ00gPSA2LAot
ICAgIENTU19NTSA9IDcsCi0gICAgQ1NTX0lOID0gOCwKLSAgICBDU1NfUFQgPSA5LAotICAgIENT
U19QQyA9IDEwLAotICAgIENTU19ERUcgPSAxMSwKLSAgICBDU1NfUkFEID0gMTIsCi0gICAgQ1NT
X0dSQUQgPSAxMywKLSAgICBDU1NfTVMgPSAxNCwKLSAgICBDU1NfUyA9IDE1LAotICAgIENTU19I
WiA9IDE2LAotICAgIENTU19LSFogPSAxNywKLSAgICBDU1NfRElNRU5TSU9OID0gMTgsCi0gICAg
Q1NTX1NUUklORyA9IDE5LAotICAgIENTU19VUkkgPSAyMCwKLSAgICBDU1NfSURFTlQgPSAyMSwK
LSAgICBDU1NfQVRUUiA9IDIyLAotICAgIENTU19DT1VOVEVSID0gMjMsCi0gICAgQ1NTX1JFQ1Qg
PSAyNCwKLSAgICBDU1NfUkdCQ09MT1IgPSAyNSwKLSAgICBDU1NfVlcgPSAyNiwKLSAgICBDU1Nf
VkggPSAyNywKLSAgICBDU1NfVk1JTiA9IDI4LAotICAgIENTU19WTUFYID0gMjksCi0gICAgQ1NT
X0RQUFggPSAzMCwKLSAgICBDU1NfRFBJID0gMzEsCi0gICAgQ1NTX0RQQ00gPSAzMiwKLSAgICBD
U1NfRlIgPSAzMywKLSAgICBDU1NfUSA9IDM0LAotICAgIENTU19MSFMgPSAzNSwKLSAgICBDU1Nf
UkxIUyA9IDM2LAorICAgIFVua25vd24gPSAwLAorICAgIE51bWJlciA9IDEsCisgICAgUGVyY2Vu
dGFnZSA9IDIsCisgICAgRW1zID0gMywKKyAgICBFeHMgPSA0LAorICAgIFB4ID0gNSwKKyAgICBD
bSA9IDYsCisgICAgTW0gPSA3LAorICAgIEluID0gOCwKKyAgICBQdCA9IDksCisgICAgUGMgPSAx
MCwKKyAgICBEZWcgPSAxMSwKKyAgICBSYWQgPSAxMiwKKyAgICBHcmFkID0gMTMsCisgICAgTXMg
PSAxNCwKKyAgICBTZWNvbmQgPSAxNSwKKyAgICBIeiA9IDE2LAorICAgIEtIeiA9IDE3LAorICAg
IERpbWVuc2lvbiA9IDE4LAorICAgIFN0cmluZyA9IDE5LAorICAgIFVSSSA9IDIwLAorICAgIElk
ZW50ID0gMjEsCisgICAgQXR0ciA9IDIyLAorICAgIENvdW50ZXIgPSAyMywKKyAgICBSZWN0ID0g
MjQsCisgICAgUkdCQ29sb3IgPSAyNSwKKyAgICBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCA9IDI2
LAorICAgIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodCA9IDI3LAorICAgIFZpZXdwb3J0UGVyY2Vu
dGFnZU1pbiA9IDI4LAorICAgIFZpZXdwb3J0UGVyY2VudGFnZU1heCA9IDI5LAorICAgIERvdHNQ
ZXJQaXhlbCA9IDMwLAorICAgIERvdHNQZXJJbmNoID0gMzEsCisgICAgRG90c1BlckNlbnRpbWV0
ZXIgPSAzMiwKKyAgICBGbGV4ID0gMzMsCisgICAgUSA9IDM0LAorICAgIExocyA9IDM1LAorICAg
IFJsaHMgPSAzNiwKIAogICAgIEN1c3RvbUlkZW50LAogCi0gICAgQ1NTX1BBSVIgPSAxMDAsCi0g
ICAgQ1NTX1VOSUNPREVfUkFOR0UgPSAxMDIsCi0gICAgQ1NTX1RVUk4gPSAxMDcsCi0gICAgQ1NT
X1JFTVMgPSAxMDgsCi0gICAgQ1NTX0NIUyA9IDEwOSwKKyAgICBQYWlyID0gMTAwLAorICAgIFVu
aWNvZGVSYW5nZSA9IDEwMiwKKyAgICBUdXJuID0gMTA3LAorICAgIFJlbXMgPSAxMDgsCisgICAg
Q2hzID0gMTA5LAogCi0gICAgQ1NTX0NPVU5URVJfTkFNRSA9IDExMCwKKyAgICBDb3VudGVyTmFt
ZSA9IDExMCwKIAotICAgIENTU19TSEFQRSA9IDExMSwKKyAgICBTaGFwZSA9IDExMSwKIAotICAg
IENTU19RVUFEID0gMTEyLAorICAgIFF1YWQgPSAxMTIsCiAKLSAgICBDU1NfQ0FMQyA9IDExMywK
LSAgICBDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSID0gMTE0LAotICAgIENTU19DQUxD
X1BFUkNFTlRBR0VfV0lUSF9MRU5HVEggPSAxMTUsCisgICAgQ2FsY3VsYXRlZCA9IDExMywKKyAg
ICBDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXIgPSAxMTQsCisgICAgQ2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTGVuZ3RoID0gMTE1LAogCi0gICAgQ1NTX0ZPTlRfRkFNSUxZID0gMTE2LAor
ICAgIEZvbnRGYW1pbHkgPSAxMTYsCiAKLSAgICBDU1NfUFJPUEVSVFlfSUQgPSAxMTcsCi0gICAg
Q1NTX1ZBTFVFX0lEID0gMTE4LAorICAgIFByb3BlcnR5SUQgPSAxMTcsCisgICAgVmFsdWVJRCA9
IDExOCwKICAgICAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gaGFuZGxlIHF1aXJreSBt
YXJnaW5zIGluIHJlZmxvdyByb290cyAoYm9keSwgdGQsIGFuZCB0aCkgbGlrZSBXaW5JRS4KICAg
ICAvLyBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IGEgc3R5bGVzaGVldCBjYW4gdXNlIHRoZSB2YWx1
ZSBfX3FlbSAoZm9yIHF1aXJreSBlbSkgaW5zdGVhZCBvZiBlbS4KICAgICAvLyBXaGVuIHRoZSBx
dWlya3kgdmFsdWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2lu
IHdpbGwgY29sbGFwc2UgYXdheQogICAgIC8vIGluc2lkZSBhIHRhYmxlIGNlbGwuIFRoaXMgcXVp
cmsgaXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIHNwZWMgYnV0IG91ciBpbXBsIGlzIGRpZmZlcmVu
dC4KLSAgICBDU1NfUVVJUktZX0VNUyA9IDEyMAorICAgIFF1aXJreUVtcyA9IDEyMAogCiAgICAg
Ly8gTm90ZSB0aGF0IENTU1ZhbHVlIGFsbG9jYXRlcyA3IGJpdHMgZm9yIG1fcHJpbWl0aXZlVW5p
dFR5cGUsIHNvIHRoZXJlIGNhbiBiZSBubyB2YWx1ZSBoZXJlID4gMTI3LgogfTsKQEAgLTExOSw0
ICsxMTgsMyBAQCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Q1NTVW5pdENhdGVnb3J5KTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBDU1NVbml0VHlwZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBkNjEzZjZiODZhY2M2ODBhZDM3ZmYwZjg1MjY1
MGE3MzM3YmE5N2E0Li5jZTI5OTEzMzk1ZWNiMWJmZjVjM2VmNDhhNmZjYWJjZDY4MjgzMWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApAQCAtNTIsOSArNTIsOSBAQCBTdGF0aWND
U1NWYWx1ZVBvb2w6OlN0YXRpY0NTU1ZhbHVlUG9vbCgpCiAgICAgICAgIG1faWRlbnRpZmllclZh
bHVlc1tpXS5jb25zdHJ1Y3QoQ1NTVmFsdWU6OlN0YXRpY0NTU1ZhbHVlLCBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUlEPihpKSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1heGltdW1D
YWNoZWFibGVJbnRlZ2VyVmFsdWUgKyAxKTsgKytpKSB7Ci0gICAgICAgIG1fcGl4ZWxWYWx1ZXNb
aV0uY29uc3RydWN0KENTU1ZhbHVlOjpTdGF0aWNDU1NWYWx1ZSwgaSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Ci0gICAgICAgIG1fcGVyY2VudFZhbHVlc1tpXS5jb25zdHJ1Y3QoQ1NTVmFsdWU6OlN0
YXRpY0NTU1ZhbHVlLCBpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICBt
X251bWJlclZhbHVlc1tpXS5jb25zdHJ1Y3QoQ1NTVmFsdWU6OlN0YXRpY0NTU1ZhbHVlLCBpLCBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIG1fcGl4ZWxWYWx1ZXNbaV0uY29uc3Ry
dWN0KENTU1ZhbHVlOjpTdGF0aWNDU1NWYWx1ZSwgaSwgQ1NTVW5pdFR5cGU6OlB4KTsKKyAgICAg
ICAgbV9wZXJjZW50VmFsdWVzW2ldLmNvbnN0cnVjdChDU1NWYWx1ZTo6U3RhdGljQ1NTVmFsdWUs
IGksIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICAgICAgbV9udW1iZXJWYWx1ZXNbaV0u
Y29uc3RydWN0KENTU1ZhbHVlOjpTdGF0aWNDU1NWYWx1ZSwgaSwgQ1NTVW5pdFR5cGU6Ok51bWJl
cik7CiAgICAgfQogfQogCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NVbml0VHlwZSB0
eXBlKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlw
ZSk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHg6CiAgICAgICAgIHJldHVybiBzdGF0aWNDU1NWYWx1
ZVBvb2wtPm1fcGl4ZWxWYWx1ZXNbaW50VmFsdWVdLmdldCgpOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CiAg
ICAgICAgIHJldHVybiBzdGF0aWNDU1NWYWx1ZVBvb2wtPm1fcGVyY2VudFZhbHVlc1tpbnRWYWx1
ZV0uZ2V0KCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBzdGF0aWNDU1NWYWx1ZVBvb2wtPm1f
bnVtYmVyVmFsdWVzW2ludFZhbHVlXS5nZXQoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBl
M2E0OTc3MjkzZjUxZTJhZjhkNWI2ZmEyMTY1MzI2MmU3MDY2MDllLi5lZjM0Yzk3OTJjODg4MGRi
Y2M2MzUyYWRjZDM0YzRiY2I2YjVmYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM4LDU5ICszOCw1OSBAQCB1
bnNpZ25lZCBzaG9ydCBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlw
ZSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFNvbWUgb2YgdGhlc2Ugc2hvdWxkIHJldHVybiBDU1Nf
VU5LTk9XTiBpbnN0ZWFkIG9mIGhhcmQtY29kZWQgbnVtYmVycyBub3QgbWVudGlvbmVkIGluIHRo
ZSBJREwgZmlsZS4KIAogICAgIHN3aXRjaCAobV92YWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSB7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0FUVFI6ICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NfQVRUUjsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDExMzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FM
Q19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOiAgcmV0dXJuIDExNTsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOiAgcmV0dXJuIDExNDsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDEwOTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU19DTTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjog
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19DT1VOVEVSOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19DT1VOVEVSX05BTUU6ICAgICAgICAgICAgICAgICByZXR1cm4gMTEwOwotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTX0RFRzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRElNRU5TSU9OOiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU19ESU1FTlNJT047Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0RQQ006ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzMjsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfRFBJOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDMxOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUFBYOiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMzA7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzogICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NfRU1TOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0VYUzsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfRk9OVF9GQU1JTFk6ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19TVFJJ
Tkc7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZSOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAzMzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU19HUkFEOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19IWjogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0haOwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19JREVOVDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
X0lERU5UOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTX0FUVFI7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRl
ZDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMTM7CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOiAgIHJldHVybiAxMTU7CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOiAgIHJldHVybiAx
MTQ7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxMDk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NfQ007CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291
bnRlcjogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfQ09VTlRFUjsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpDb3VudGVyTmFtZTogICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDExMDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU19ERUc7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGltZW5zaW9uOiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfRElNRU5TSU9OOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOiAgICAgICAgICAgICAgICByZXR1cm4gMzI7Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckluY2g6ICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAzMTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6ICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDMwOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0VNUzsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpFeHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19FWFM7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseTogICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NfU1RSSU5HOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMzM7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfR1JBRDsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpIejogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19IWjsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpJZGVudDogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENTU19JREVOVDsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDdXN0b21JZGVudDogICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19JREVOVDsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfSU46ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19JTjsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19LSFo7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzogICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAzNTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19NTTsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfTVM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19NUzsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19OVU1CRVI7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6ICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxMDA7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfUEM7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1BFUkNFTlRBR0U6ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfUEVSQ0VO
VEFHRTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6ICAgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU19JREVOVDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19QVDsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUFg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19QWDsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUTogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDM0OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTEyOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1T
OiAgICAgICAgICAgICAgICAgICByZXR1cm4gMTIwOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19SQUQ6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1JBRDsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUkVDVDogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U19SRUNUOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTA4OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1JHQkNPTE9SOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19STEhTOiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzY7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NfUzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6ICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDExMTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOiAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19TVFJJTkc7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1RVUk46ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMDc7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVfUkFOR0U6ICAgICAgICAgICAgICAgIHJldHVy
biAxMDI7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV046ICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NfVU5LTk9XTjsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVVJJ
OiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19VUkk7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1ZBTFVFX0lEOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfSURF
TlQ7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NfVkg7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6ICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfVk1BWDsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfVk1JTjogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19WTUlOOwotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTX1ZXOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTX0lOOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktIejogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0tIWjsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpMaHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM1OworICAg
IGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTX01NOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTX01TOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjog
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX05VTUJFUjsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpQYWlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEwMDsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENTU19QQzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOiAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU19QRVJDRU5UQUdFOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlByb3BlcnR5SUQ6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0lERU5UOwor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTX1BUOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTX1BYOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlE6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzQ7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UXVhZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMTI7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxMjA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmFkOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NfUkFEOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlY3Q6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1JFQ1Q7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UmVtczogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMDg7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UkdCQ29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NfUkdCQ09MT1I7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAzNjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTZWNvbmQ6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19TOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlNoYXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTExOworICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlN0cmluZzogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTX1NUUklORzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDEwNzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmljb2Rl
UmFuZ2U6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEwMjsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpVbmtub3duOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19VTktOT1dO
OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVSSTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTX1VSSTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWYWx1ZUlEOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19JREVOVDsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6ICAgICAgICAgcmV0dXJuIENTU19WSDsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6ICAgICAgICAgICAgcmV0dXJu
IENTU19WTUFYOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjog
ICAgICAgICAgICByZXR1cm4gQ1NTX1ZNSU47CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3Bv
cnRQZXJjZW50YWdlV2lkdGg6ICAgICAgICAgIHJldHVybiBDU1NfVlc7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDIsNDMgKzEwMiw0MyBAQCBFeGNlcHRpb25Pcjxm
bG9hdD4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUodW5zaWdu
ZWQgc2hvcnQgdQogICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIHZhbHVlcyBkbyBub3QgbmVl
ZCB0byBiZSBleHBvc2VkIGFzIGEgZGVzdGluYXRpb24gdHlwZS4gUmVtb3ZlIGNhc2VzIGJlbG93
IGFuZCBnaXZlIEludmFsaWRBY2Nlc3NFcnJvciBpbnN0ZWFkLgogCiAgICAgc3dpdGNoICh1bml0
VHlwZSkgewotICAgIGNhc2UgQ1NTX0NNOiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRG
bG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfQ00pOwotICAgIGNhc2UgQ1NTX0RFRzogICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKTsK
LSAgICBjYXNlIENTU19ESU1FTlNJT046ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTik7Ci0gICAgY2FzZSBDU1NfRU1TOiAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwot
ICAgIGNhc2UgQ1NTX0VYUzogICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVl
KENTU1VuaXRUeXBlOjpDU1NfRVhTKTsKLSAgICBjYXNlIENTU19HUkFEOiAgICAgICAgICByZXR1
cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0dSQUQpOwotICAgIGNh
c2UgQ1NTX0haOiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1Vu
aXRUeXBlOjpDU1NfSFopOwotICAgIGNhc2UgQ1NTX0lOOiAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfSU4pOwotICAgIGNhc2UgQ1NTX0tI
WjogICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfS0haKTsKLSAgICBjYXNlIENTU19NTTogICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0
RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX01NKTsKLSAgICBjYXNlIENTU19NUzogICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX01TKTsK
LSAgICBjYXNlIENTU19OVU1CRVI6ICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUEM6ICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QQyk7Ci0gICAg
Y2FzZSBDU1NfUEVSQ0VOVEFHRTogICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NT
VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKLSAgICBjYXNlIENTU19QVDogICAgICAgICAgICBy
ZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BUKTsKLSAgICBj
YXNlIENTU19QWDogICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19SQUQ6ICAgICAgICAgICByZXR1cm4gbV92
YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1JBRCk7Ci0gICAgY2FzZSBDU1Nf
UzogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19TKTsKLSAgICBjYXNlIENTU19WSDogICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0
RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1ZIKTsKLSAgICBjYXNlIENTU19WTUFYOiAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1ZNQVgp
OwotICAgIGNhc2UgQ1NTX1ZNSU46ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfVk1JTik7Ci0gICAgY2FzZSBDU1NfVlc6ICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19WVyk7CisgICAg
Y2FzZSBDU1NfQ006ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NT
VW5pdFR5cGU6OkNtKTsKKyAgICBjYXNlIENTU19ERUc6ICAgICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RGVnKTsKKyAgICBjYXNlIENTU19ESU1FTlNJ
T046ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RGltZW5z
aW9uKTsKKyAgICBjYXNlIENTU19FTVM6ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0Rmxv
YXRWYWx1ZShDU1NVbml0VHlwZTo6RW1zKTsKKyAgICBjYXNlIENTU19FWFM6ICAgICAgICAgICBy
ZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RXhzKTsKKyAgICBjYXNl
IENTU19HUkFEOiAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0
VHlwZTo6R3JhZCk7CisgICAgY2FzZSBDU1NfSFo6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUt
PmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6Okh6KTsKKyAgICBjYXNlIENTU19JTjogICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6SW4pOworICAg
IGNhc2UgQ1NTX0tIWjogICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpLSHopOworICAgIGNhc2UgQ1NTX01NOiAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpNbSk7CisgICAgY2FzZSBDU1NfTVM6ICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6Ok1zKTsK
KyAgICBjYXNlIENTU19OVU1CRVI6ICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBjYXNlIENTU19QQzogICAgICAgICAgICByZXR1
cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UGMpOworICAgIGNhc2UgQ1NT
X1BFUkNFTlRBR0U6ICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpQZXJjZW50YWdlKTsKKyAgICBjYXNlIENTU19QVDogICAgICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UHQpOworICAgIGNhc2UgQ1NTX1BYOiAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpQeCk7Cisg
ICAgY2FzZSBDU1NfUkFEOiAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OlJhZCk7CisgICAgY2FzZSBDU1NfUzogICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlNlY29uZCk7CisgICAgY2FzZSBDU1Nf
Vkg6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodCk7CisgICAgY2FzZSBDU1NfVk1BWDogICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZU1heCk7CisgICAgY2FzZSBDU1NfVk1JTjogICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdl
dEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbik7CisgICAgY2Fz
ZSBDU1NfVlc6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5p
dFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoKTsKIAotICAgIGNhc2UgMzA6ICAgICAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfRFBQ
WCk7Ci0gICAgY2FzZSAzMTogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0
VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19EUEkpOwotICAgIGNhc2UgMzI6ICAgICAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfRFBDTSk7Ci0g
ICAgY2FzZSAzMzogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19GUik7Ci0gICAgY2FzZSAzNDogICAgICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19RKTsKLSAgICBjYXNlIDM1
OiAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlw
ZTo6Q1NTX0xIUyk7Ci0gICAgY2FzZSAzNjogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUt
PmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19STEhTKTsKLSAgICBjYXNlIDEwNzogICAg
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NT
X1RVUk4pOwotICAgIGNhc2UgMTA4OiAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRG
bG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUkVNUyk7Ci0gICAgY2FzZSAxMDk6ICAgICAgICAg
ICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19DSFMp
OwotICAgIGNhc2UgMTEzOiAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfQ0FMQyk7Ci0gICAgY2FzZSAxMTQ6ICAgICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNF
TlRBR0VfV0lUSF9OVU1CRVIpOwotICAgIGNhc2UgMTE1OiAgICAgICAgICAgICAgIHJldHVybiBt
X3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJ
VEhfTEVOR1RIKTsKLSAgICBjYXNlIDEyMDogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+
Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVMpOworICAgIGNhc2UgMzA6
ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpEb3RzUGVyUGl4ZWwpOworICAgIGNhc2UgMzE6ICAgICAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpEb3RzUGVySW5jaCk7CisgICAgY2FzZSAz
MjogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5
cGU6OkRvdHNQZXJDZW50aW1ldGVyKTsKKyAgICBjYXNlIDMzOiAgICAgICAgICAgICAgICByZXR1
cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RmxleCk7CisgICAgY2FzZSAz
NDogICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5
cGU6OlEpOworICAgIGNhc2UgMzU6ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRG
bG9hdFZhbHVlKENTU1VuaXRUeXBlOjpMaHMpOworICAgIGNhc2UgMzY6ICAgICAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpSbGhzKTsKKyAgICBj
YXNlIDEwNzogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NV
bml0VHlwZTo6VHVybik7CisgICAgY2FzZSAxMDg6ICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlJlbXMpOworICAgIGNhc2UgMTA5OiAgICAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDaHMp
OworICAgIGNhc2UgMTEzOiAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkKTsKKyAgICBjYXNlIDExNDogICAgICAgICAgICAg
ICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTnVtYmVyKTsKKyAgICBjYXNlIDExNTogICAgICAgICAgICAgICByZXR1cm4g
bV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTGVuZ3RoKTsKKyAgICBjYXNlIDEyMDogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+
Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UXVpcmt5RW1zKTsKIAogICAgIGRlZmF1bHQ6ICAg
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdCQ29s
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCmluZGV4
IGE3ZTViOGFkMGU5YmIzOTU5YjczMmYxMDc4Y2U5YzEyNTA0ZTc1NTYuLjZkMmIwODIzNWMzNjUx
YzJmOTlhNGIyYWM4NTdjZjJiZDI1ZTVkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlwZT4gc3RhdGljIFJlZjxEZXByZWNhdGVk
Q1NTT01QcmltaXRpdmVWYWx1ZT4gY3JlYXRlV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9uJiBv
d25lciwgTnVtYmVyVHlwZSBudW1iZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKS0+Y3JlYXRl
RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7CisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTVW5pdFR5cGU6Ok51bWJlciktPmNy
ZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOwogICAgIH0KIAogICAg
IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25z
dCBDb2xvciYgY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAKaW5kZXggYTQ3YjJmZTU0OWE4OTQxNGEyMDc4NjRhYWJlODk3ZDA3YTU5NzI3Yy4uYWU2Yjc2
NWUxMmM0YzUwMWM0M2E2MGM0OWFiODE4YmUxNDQ2NDlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlm
ICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSB8fCAhZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFs
dWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKS5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6TnVtYmVyKTsKIH0K
IAogc3RhdGljIGJvb2wgemVyb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgTWVkaWFGZWF0dXJl
UHJlZml4IG9wKQpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBib29sIGV2YWx1YXRlUmVzb2x1
dGlvbihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHJlc29sdXRpb24gPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICBmbG9hdCByZXNvbHV0aW9uVmFsdWUgPSBy
ZXNvbHV0aW9uLmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLmZsb2F0VmFsdWUoKSA6IHJlc29sdXRp
b24uZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQUFgpOworICAgIGZsb2F0IHJlc29sdXRp
b25WYWx1ZSA9IHJlc29sdXRpb24uaXNOdW1iZXIoKSA/IHJlc29sdXRpb24uZmxvYXRWYWx1ZSgp
IDogcmVzb2x1dGlvbi5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWwpOwogICAg
IGJvb2wgcmVzdWx0ID0gY29tcGFyZVZhbHVlKGRldmljZVNjYWxlRmFjdG9yLCByZXNvbHV0aW9u
VmFsdWUsIG9wKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwg
IiAgZXZhbHVhdGVSZXNvbHV0aW9uOiAiIDw8IG9wIDw8ICIgIiA8PCByZXNvbHV0aW9uVmFsdWUg
PDwgIiBkZXZpY2Ugc2NhbGUgZmFjdG9yICIgPDwgZGV2aWNlU2NhbGVGYWN0b3IgPDwgIjogIiA8
PCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHByZXNzaW9uLmNwcAppbmRleCBjYTgwODgzNmYwYzE4OGU2MGEyMDhhMWNiYzNiMTA3
OTQzMThlNWE0Li5lODI2YzY2ZmE0YWFjOTI1ZTdkM2E4NjVkOWU1YWFhODZmMjUwNjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRWYWx1ZUZvcklkZW50TWVkaWFGZWF0dXJl
KGNvbnN0IEF0b21TdHJpbmcmIGZlYXR1cmUsIGMKIAogc3RhdGljIGlubGluZSBib29sIGZlYXR1
cmVXaXRoVmFsaWRJZGVudChjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSwgY29uc3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmIGNv
bnRleHQpCiB7Ci0gICAgaWYgKHZhbHVlLnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NVbml0VHlwZTo6
Q1NTX0lERU5UIHx8ICFpc1ZhbGlkVmFsdWVGb3JJZGVudE1lZGlhRmVhdHVyZShtZWRpYUZlYXR1
cmUsIHZhbHVlKSkKKyAgICBpZiAodmFsdWUucHJpbWl0aXZlVHlwZSgpICE9IENTU1VuaXRUeXBl
OjpJZGVudCB8fCAhaXNWYWxpZFZhbHVlRm9ySWRlbnRNZWRpYUZlYXR1cmUobWVkaWFGZWF0dXJl
LCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGIxMjc2
NzZmYWZmNGZhZDJjNjgxOTkyMjc0YmY4NTUxNDY1MGJhYTQuLmY2N2UzNDUwYmFkMzYyMzQ2Yjcz
NjdhMDQ0NmMxZTg4OThiZjhjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgc3Rh
dGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0
aXZlVmFsdWUoR2x5cGhPcmllbnQKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAg
Y2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVzMDoKLSAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoMC4wZiwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpOworICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjBmLCBDU1NVbml0VHlwZTo6RGVnKTsK
ICAgICBjYXNlIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXM5MDoKLSAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoOTAuMGYsIENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoOTAuMGYsIENTU1VuaXRUeXBl
OjpEZWcpOwogICAgIGNhc2UgR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczE4MDoKLSAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMTgwLjBmLCBDU1NVbml0VHlwZTo6Q1NT
X0RFRyk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDE4MC4wZiwg
Q1NTVW5pdFR5cGU6OkRlZyk7CiAgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVzMjcw
OgotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgyNzAuMGYsIENTU1Vu
aXRUeXBlOjpDU1NfREVHKTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoMjcwLjBmLCBDU1NVbml0VHlwZTo6RGVnKTsKICAgICBjYXNlIEdseXBoT3JpZW50YXRpb246
OkF1dG86CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAg
UmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1
cnJlbnRDb2xvcihTVkdQYWludFR5cGUKIHsKICAgICBpZiAocGFpbnRUeXBlID49IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkgewogICAgICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh1cmwsIENTU1VuaXRUeXBlOjpDU1NfVVJJKSk7CisgICAgICAgIHZhbHVl
cy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodXJsLCBDU1NVbml0VHlwZTo6VVJJ
KSk7CiAgICAgICAgIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKQogICAg
ICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb25lKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWlu
dFR5cGU6OlVSSUN1cnJlbnRDb2xvcikKQEAgLTk3LDE1ICs5NywxNSBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eQogICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY2xpcFJ1bGUoKSk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eToKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmxvb2RPcGFjaXR5KCksIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUu
Zmxvb2RPcGFjaXR5KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlTdG9wT3BhY2l0eToKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3ZnU3R5bGUuc3RvcE9wYWNpdHkoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5zdG9wT3BhY2l0eSgp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBv
bGF0aW9uOgogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHls
ZS5jb2xvckludGVycG9sYXRpb24oKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJw
b2xhdGlvbkZpbHRlcnM6CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZpbGxPcGFjaXR5OgotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdmdTdHlsZS5maWxsT3BhY2l0eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmZpbGxPcGFjaXR5
KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToK
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmlsbFJ1
bGUoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgpAQCAtMTEzLDcgKzEx
Myw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBl
UmVuZGVyaW5nOgogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdT
dHlsZS5zaGFwZVJlbmRlcmluZygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0
eToKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuc3Ry
b2tlT3BhY2l0eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSwgQ1NTVW5p
dFR5cGU6Ok51bWJlcik7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgog
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5hbGlnbm1l
bnRCYXNlbGluZSgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZToKQEAg
LTEyMiw3ICsxMjIsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS50ZXh0QW5jaG9yKCkpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXNrOgogICAgICAgICBpZiAoIXN2Z1N0eWxlLm1hc2tlclJlc291cmNl
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUobWFrZVN0cmluZygnIycsIHN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCkpLCBDU1NVbml0VHlw
ZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUubWFza2VyUmVzb3VyY2UoKSksIENTU1VuaXRUeXBl
OjpVUkkpOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb25lKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xvcjoKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3ZnU3R5bGUuZmxvb2RD
b2xvcigpKTsKQEAgLTEzNiwxNSArMTM2LDE1IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5CiAg
ICAgICAgIHJldHVybiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHls
ZS5rZXJuaW5nKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CiAgICAgICAgIGlm
ICghc3ZnU3R5bGUubWFya2VyRW5kUmVzb3VyY2UoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUu
bWFya2VyRW5kUmVzb3VyY2UoKSksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKKyAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1ha2VTdHJpbmcoJyMnLCBzdmdTdHls
ZS5tYXJrZXJFbmRSZXNvdXJjZSgpKSwgQ1NTVW5pdFR5cGU6OlVSSSk7CiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJNaWQ6CiAgICAgICAgIGlmICghc3ZnU3R5bGUubWFya2Vy
TWlkUmVzb3VyY2UoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2Uo
KSksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKG1ha2VTdHJpbmcoJyMnLCBzdmdTdHlsZS5tYXJrZXJNaWRSZXNvdXJj
ZSgpKSwgQ1NTVW5pdFR5cGU6OlVSSSk7CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlN
YXJrZXJTdGFydDoKICAgICAgICAgaWYgKCFzdmdTdHlsZS5tYXJrZXJTdGFydFJlc291cmNlKCku
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bWFrZVN0cmluZygnIycsIHN2Z1N0eWxlLm1hcmtlclN0YXJ0UmVzb3VyY2UoKSksIENTU1VuaXRU
eXBlOjpDU1NfVVJJKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG1ha2VTdHJpbmcoJyMnLCBzdmdTdHlsZS5tYXJrZXJTdGFydFJlc291cmNlKCkpLCBDU1NV
bml0VHlwZTo6VVJJKTsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKICAg
ICAgICAgcmV0dXJuIGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKHN2Z1N0eWxlLnN0cm9r
ZVBhaW50VHlwZSgpLCBzdmdTdHlsZS5zdHJva2VQYWludFVyaSgpLCBzdmdTdHlsZS5zdHJva2VQ
YWludENvbG9yKCksIHN0eWxlLT5jb2xvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9jYWxjL0NTU0NhbGNDYXRlZ29yeU1hcHBpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2NhbGMvQ1NTQ2FsY0NhdGVnb3J5TWFwcGluZy5jcHAKaW5kZXggMWU4YzdkMmNlYjVhNTJjYzAz
NzE2ODkwNjY0MjIyZjY5YjllOWY0MC4uYWMxY2EwNjc0ZTE3NjhkM2NhNWFmYTFmZTNmNmQzYTM5
ZTExZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY0NhdGVn
b3J5TWFwcGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY0NhdGVn
b3J5TWFwcGluZy5jcHAKQEAgLTM0LDM4ICszNCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBD
YWxjdWxhdGlvbkNhdGVnb3J5IGNhbGNVbml0Q2F0ZWdvcnkoQ1NTVW5pdFR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6Ok51bWJlcjsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
TU06Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1E6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUkxIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19W
VzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZNSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpR
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhz
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hz
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6
TGVuZ3RoOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVn
b3J5OjpQZXJjZW50OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6OkFuZ2xlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpTZWNvbmQ6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5
OjpUaW1lOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19IWjoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfS0haOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OktIejoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkZyZXF1ZW5j
eTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6T3Ro
ZXI7CkBAIC03NSwzOSArNzUsMzkgQEAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYWxjVW5pdENhdGVn
b3J5KENTU1VuaXRUeXBlIHR5cGUpCiBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhbGN1bGF0aW9uQ2F0
ZWdvcnlGb3JDb21iaW5hdGlvbihDU1NVbml0VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlw
ZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVy
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlB0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlE6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UGVyY2VudGFnZToKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19HUkFEOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19UVVJOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRlZzoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpSYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpUdXJuOgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5n
bGU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlNlY29uZDoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlRpbWU7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6S0h6Ogog
ICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6RnJlcXVlbmN5OwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19S
RU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19DSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19WSDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFbXM6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJsaHM6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0
UGVyY2VudGFnZVdpZHRoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFn
ZUhlaWdodDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpPdGhlcjsKICAgICB9CkBAIC0x
MTYsNzggKzExNiw3OCBAQCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhbGN1bGF0aW9uQ2F0ZWdvcnlG
b3JDb21iaW5hdGlvbihDU1NVbml0VHlwZSB0eXBlKQogQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5p
dFR5cGVGb3JDYWxjdWxhdGlvbkNhdGVnb3J5KENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkp
CiB7CiAgICAgc3dpdGNoIChjYXRlZ29yeSkgewotICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29y
eTo6TnVtYmVyOiByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7Ci0gICAgY2FzZSBDYWxj
dWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1BYOwotICAg
IGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDogcmV0dXJuIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRTsKLSAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkFuZ2xlOiByZXR1
cm4gQ1NTVW5pdFR5cGU6OkNTU19ERUc7Ci0gICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpU
aW1lOiByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19NUzsKLSAgICBjYXNlIENhbGN1bGF0aW9uQ2F0
ZWdvcnk6OkZyZXF1ZW5jeTogcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfSFo7CisgICAgY2FzZSBD
YWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6IHJldHVybiBDU1NVbml0VHlwZTo6TnVtYmVyOwor
ICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOiByZXR1cm4gQ1NTVW5pdFR5cGU6
OlB4OworICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDogcmV0dXJuIENTU1Vu
aXRUeXBlOjpQZXJjZW50YWdlOworICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5nbGU6
IHJldHVybiBDU1NVbml0VHlwZTo6RGVnOworICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6
VGltZTogcmV0dXJuIENTU1VuaXRUeXBlOjpNczsKKyAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdv
cnk6OkZyZXF1ZW5jeTogcmV0dXJuIENTU1VuaXRUeXBlOjpIejsKICAgICBjYXNlIENhbGN1bGF0
aW9uQ2F0ZWdvcnk6Ok90aGVyOgogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2Vu
dE51bWJlcjoKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
cmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjsKKyAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OlVua25vd247CiB9CiAKIGJvb2wgaGFzRG91YmxlVmFsdWUoQ1NTVW5pdFR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1M6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0RJTUVOU0lPTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19EUFBYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0RQQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZSOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19ROgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVy
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpDaHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpN
bToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQdDoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpTZWNvbmQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6S0h6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRpbWVuc2lv
bjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZp
ZXdwb3J0UGVyY2VudGFnZU1heDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckluY2g6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6RG90c1BlckNlbnRpbWV0ZXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RmxleDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpROgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpSbGhzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVU5LTk9XTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWToKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVVJJOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JREVOVDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpVbmtub3duOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlN0cmluZzoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpGb250RmFtaWx5OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVS
SToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJZGVudDoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
dXN0b21JZGVudDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQVRUUjoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVDVDoK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BBSVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVfUkFOR0U6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRToKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfU0hBUEU6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVQUQ6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0NBTEM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05V
TUJFUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVO
R1RIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6QXR0cjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlY3Q6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UkdCQ29sb3I6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UGFpcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmljb2RlUmFuZ2U6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q291bnRlck5hbWU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2hhcGU6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UXVhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpRdWlya3lFbXM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBy
b3BlcnR5SUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH07CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjT3BlcmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjT3BlcmF0aW9uTm9kZS5jcHAKaW5kZXggNWNlZGQ1M2E0
MGJmN2VkYzAwNTAzZjdmY2ZkNjIwY2EwNDYzMDdmNy4uZjM0Y2FmYWRmOTYwY2Q4ZjUyZDQyOTM0
YTc0YmU0OWE0NzkxZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NT
Q2FsY09wZXJhdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0Nh
bGNPcGVyYXRpb25Ob2RlLmNwcApAQCAtMjE5LDEyICsyMTksMTIgQEAgc3RhdGljIENTU1VuaXRU
eXBlIHByaW1pdGl2ZVR5cGVGb3JDb21iaW5hdGlvbihjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5v
ZGUmIG5vZGUKICAgICBpZiAoaXM8Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZT4obm9kZSkpCiAg
ICAgICAgIHJldHVybiBub2RlLnByaW1pdGl2ZVR5cGUoKTsKICAgICAKLSAgICByZXR1cm4gQ1NT
VW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgIHJldHVybiBDU1NVbml0VHlwZTo6VW5rbm93bjsK
IH0KIAogc3RhdGljIENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OlVuaXRDb252ZXJzaW9uIGNv
bnZlcnNpb25Ub0FkZFZhbHVlc1dpdGhUeXBlcyhDU1NVbml0VHlwZSBmaXJzdFR5cGUsIENTU1Vu
aXRUeXBlIHNlY29uZFR5cGUpCiB7Ci0gICAgaWYgKGZpcnN0VHlwZSA9PSBDU1NVbml0VHlwZTo6
Q1NTX1VOS05PV04gfHwgc2Vjb25kVHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pCisg
ICAgaWYgKGZpcnN0VHlwZSA9PSBDU1NVbml0VHlwZTo6VW5rbm93biB8fCBzZWNvbmRUeXBlID09
IENTU1VuaXRUeXBlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gQ1NTQ2FsY1ByaW1pdGl2ZVZh
bHVlTm9kZTo6VW5pdENvbnZlcnNpb246OkludmFsaWQ7CiAKICAgICBhdXRvIGZpcnN0Q2F0ZWdv
cnkgPSBjYWxjdWxhdGlvbkNhdGVnb3J5Rm9yQ29tYmluYXRpb24oZmlyc3RUeXBlKTsKQEAgLTQ2
NiwxMCArNDY2LDEwIEBAIHZvaWQgQ1NTQ2FsY09wZXJhdGlvbk5vZGU6OmNvbWJpbmVDaGlsZHJl
bigpCiAgICAgICAgIHVuc2lnbmVkIGxlYWRpbmdOdW1iZXJOb2RlQ291bnQgPSAwOwogICAgICAg
ICBmb3IgKGF1dG8mIG5vZGUgOiBtX2NoaWxkcmVuKSB7CiAgICAgICAgICAgICBhdXRvIG5vZGVU
eXBlID0gcHJpbWl0aXZlVHlwZUZvckNvbWJpbmF0aW9uKG5vZGUuZ2V0KCkpOwotICAgICAgICAg
ICAgaWYgKG5vZGVUeXBlICE9IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAg
aWYgKG5vZGVUeXBlICE9IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gbm9kZS0+ZG91Ymxl
VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgbXVsdGlwbGllciAq
PSBub2RlLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgICAgICsr
bGVhZGluZ051bWJlck5vZGVDb3VudDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTUxNCw3ICs1
MTQsNyBAQCB2b2lkIENTU0NhbGNPcGVyYXRpb25Ob2RlOjpjb21iaW5lQ2hpbGRyZW4oKQogCiAg
ICAgICAgIGlmICghZGlkTXVsdGlwbHkpIHsKICAgICAgICAgICAgIGlmIChsZWFkaW5nTnVtYmVy
Tm9kZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtdWx0aXBsaWVyTm9kZSA9IENTU0Nh
bGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG11
bHRpcGxpZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgYXV0
byBtdWx0aXBsaWVyTm9kZSA9IENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZShDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG11bHRpcGxpZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsK
ICAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtdWx0
aXBsaWVyTm9kZSkpOwogICAgICAgICAgICAgfQogCkBAIC02ODAsMTEgKzY4MCwxMSBAQCBDU1NV
bml0VHlwZSBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiAgICAg
ICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAgICAgICAgQVNTRVJUKGNo
aWxkLT5jYXRlZ29yeSgpID09IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcik7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOworICAgICAgICByZXR1cm4g
Q1NTVW5pdFR5cGU6Ok51bWJlcjsKIAogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVy
Y2VudDogewogICAgICAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgICAgICAgICAgcmV0dXJuIENTU1Vu
aXRUeXBlOjpVbmtub3duOwogCiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA9PSAyKSB7
CiAgICAgICAgICAgICBpZiAobV9jaGlsZHJlblswXS0+Y2F0ZWdvcnkoKSA9PSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpOdW1iZXIpCkBAIC02OTUsNyArNjk1LDcgQEAgQ1NTVW5pdFR5cGUgQ1NTQ2Fs
Y09wZXJhdGlvbk5vZGU6OnByaW1pdGl2ZVR5cGUoKSBjb25zdAogICAgICAgICBDU1NVbml0VHlw
ZSBmaXJzdFR5cGUgPSBtX2NoaWxkcmVuWzBdLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgIGZv
ciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAoZmlyc3RUeXBl
ICE9IGNoaWxkLT5wcmltaXRpdmVUeXBlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1Vu
aXRUeXBlOjpDU1NfVU5LTk9XTjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OlVua25vd247CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpcnN0VHlwZTsKICAgICB9CkBA
IC03MTEsMTAgKzcxMSwxMCBAQCBDU1NVbml0VHlwZSBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6cHJp
bWl0aXZlVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50
TGVuZ3RoOgogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudE51bWJlcjoKICAg
ICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok90aGVyOgotICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkNTU19VTktOT1dOOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlVua25vd247
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6Q1NTX1VOS05PV047CisgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpVbmtub3duOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6
Y3JlYXRlQ2FsY0V4cHJlc3Npb24oY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEpIGNvbnN0CkBAIC03NDYsOCArNzQ2LDggQEAgZG91YmxlIENTU0NhbGNPcGVy
YXRpb25Ob2RlOjpkb3VibGVWYWx1ZShDU1NVbml0VHlwZSB1bml0VHlwZSkgY29uc3QKIAogICAg
IHJldHVybiBldmFsdWF0ZShtX2NoaWxkcmVuLm1hcChbJl0gKGF1dG8mIGNoaWxkKSB7CiAgICAg
ICAgIENTU1VuaXRUeXBlIGNoaWxkVHlwZSA9IHVuaXRUeXBlOwotICAgICAgICBpZiAoYWxsb3dO
dW1iZXJzICYmIHVuaXRUeXBlICE9IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSICYmIGNoaWxkLT5w
cmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICBj
aGlsZFR5cGUgPSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjsKKyAgICAgICAgaWYgKGFsbG93TnVt
YmVycyAmJiB1bml0VHlwZSAhPSBDU1NVbml0VHlwZTo6TnVtYmVyICYmIGNoaWxkLT5wcmltaXRp
dmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKKyAgICAgICAgICAgIGNoaWxkVHlwZSA9
IENTU1VuaXRUeXBlOjpOdW1iZXI7CiAgICAgICAgIHJldHVybiBjaGlsZC0+ZG91YmxlVmFsdWUo
Y2hpbGRUeXBlKTsKICAgICB9KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Y2FsYy9DU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9j
YWxjL0NTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGUuY3BwCmluZGV4IDI5ZDA0ODMwZTAwYTA3NGRl
ZTQ1YThmZjNlNGFkMDhiY2VjZmU1MmMuLmUxZDcwZGExMGYxYzc2Y2ZlYWYzZjJmMTZkOTE2NzA3
NGFkMzIxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNQcmlt
aXRpdmVWYWx1ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNQ
cmltaXRpdmVWYWx1ZU5vZGUuY3BwCkBAIC0xMDUsOCArMTA1LDggQEAgdm9pZCBDU1NDYWxjUHJp
bWl0aXZlVmFsdWVOb2RlOjphZGQoY29uc3QgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZSYgbm9k
ZSwgVW5pdEMKICAgICBjYXNlIFVuaXRDb252ZXJzaW9uOjpDYW5vbmljYWxpemU6IHsKICAgICAg
ICAgYXV0byB2YWx1ZUNhdGVnb3J5ID0gdW5pdENhdGVnb3J5KHZhbHVlVHlwZSk7CiAgICAgICAg
IC8vIEZJWE1FOiBJdCdzIGF3a3dhcmQgdGhhdCBjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5
KCkgaGFzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIENTU1VuaXRDYXRlZ29yeTo6UGVyY2VudC4KLSAg
ICAgICAgYXV0byBjYW5vbmljYWxUeXBlID0gdmFsdWVDYXRlZ29yeSA9PSBDU1NVbml0Q2F0ZWdv
cnk6OlBlcmNlbnQgPyBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UgOiBjYW5vbmljYWxVbml0
VHlwZUZvckNhdGVnb3J5KHZhbHVlQ2F0ZWdvcnkpOwotICAgICAgICBBU1NFUlQoY2Fub25pY2Fs
VHlwZSAhPSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pOworICAgICAgICBhdXRvIGNhbm9uaWNh
bFR5cGUgPSB2YWx1ZUNhdGVnb3J5ID09IENTU1VuaXRDYXRlZ29yeTo6UGVyY2VudCA/IENTU1Vu
aXRUeXBlOjpQZXJjZW50YWdlIDogY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeSh2YWx1ZUNh
dGVnb3J5KTsKKyAgICAgICAgQVNTRVJUKGNhbm9uaWNhbFR5cGUgIT0gQ1NTVW5pdFR5cGU6OlVu
a25vd24pOwogICAgICAgICBkb3VibGUgbGVmdFZhbHVlID0gbV92YWx1ZS0+ZG91YmxlVmFsdWUo
Y2Fub25pY2FsVHlwZSk7CiAgICAgICAgIGRvdWJsZSByaWdodFZhbHVlID0gbm9kZS5kb3VibGVW
YWx1ZShjYW5vbmljYWxUeXBlKTsKICAgICAgICAgbV92YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUobGVmdFZhbHVlICsgcmlnaHRWYWx1ZSwgY2Fub25pY2FsVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ZhbHVlLmNwcAppbmRleCBkNmFhZTVhMDU5ZjdmYjQxYjgy
YjVmYTE2ZTY3M2UyNmRjZjMzMzM1Li43NjJiNDlhOTE3Mzc4OTA1NmZhZWJhM2I2ZDA0MWVkMWU5
MjEwZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNWYWx1ZS5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNT
Uyhjb25zdCBMZW5ndGgmLCBjb25zdCBSZW5kZXJTdHlsZSYKIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PENTU0NhbGNPcGVyYXRpb25Ob2RlPiBjcmVhdGVCbGVuZEhhbGYoY29uc3QgTGVuZ3RoJiBsZW5n
dGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0
dXJuIENTU0NhbGNPcGVyYXRpb25Ob2RlOjpjcmVhdGUoQ2FsY09wZXJhdG9yOjpNdWx0aXBseSwg
Y3JlYXRlQ1NTKGxlbmd0aCwgc3R5bGUpLAotICAgICAgICBDU1NDYWxjUHJpbWl0aXZlVmFsdWVO
b2RlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwcm9ncmVzcywgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKSk7CisgICAgICAgIENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNy
ZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByb2dyZXNzLCBDU1NVbml0VHlwZTo6TnVt
YmVyKSkpOwogfQogCiBzdGF0aWMgVmVjdG9yPFJlZjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+PiBj
cmVhdGVDU1MoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
PiYgbm9kZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTgyLDcgKzgyLDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBDYWxjRXhw
cmVzc2lvbk5vZGUmIG5vZGUsIGMKICAgICBzd2l0Y2ggKG5vZGUudHlwZSgpKSB7CiAgICAgY2Fz
ZSBDYWxjRXhwcmVzc2lvbk5vZGVUeXBlOjpOdW1iZXI6IHsKICAgICAgICAgZmxvYXQgdmFsdWUg
PSBkb3duY2FzdDxDYWxjRXhwcmVzc2lvbk51bWJlcj4obm9kZSkudmFsdWUoKTsgLy8gZG91Ymxl
PwotICAgICAgICByZXR1cm4gQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6Y3JlYXRlKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Cisg
ICAgICAgIHJldHVybiBDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVhdGUoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgIH0KICAg
ICBjYXNlIENhbGNFeHByZXNzaW9uTm9kZVR5cGU6Okxlbmd0aDogewogICAgICAgICBhdXRvJiBs
ZW5ndGggPSBkb3duY2FzdDxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obm9kZSkubGVuZ3RoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKaW5k
ZXggZjAzYzhjNTNmM2VjNmQ1M2MzNjg1YmJkMDMwYTc5ZjAzMzAwYzhhYi4uMmE2YTFhODVhNGVk
NmFhNzIzMzY3ZDRjZGY0ODlkMjA3YjQ5ZmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcApAQCAtMTE3LDEwICsxMTcsMTAgQEAgc3Rh
dGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlTGVuZ3RoKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGwKIHsKICAgICBpZiAobGVuZ3RoID4gMiAmJiBpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0sICdwJykgJiYgaXNBU0NJSUFs
cGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDFdLCAneCcpKSB7CiAgICAgICAg
IGxlbmd0aCAtPSAyOwotICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19QWDsKKyAgICAg
ICAgdW5pdCA9IENTU1VuaXRUeXBlOjpQeDsKICAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDEgJiYg
Y2hhcmFjdGVyc1tsZW5ndGggLSAxXSA9PSAnJScpIHsKICAgICAgICAgbGVuZ3RoIC09IDE7Ci0g
ICAgICAgIHVuaXQgPSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U7CisgICAgICAgIHVuaXQg
PSBDU1NVbml0VHlwZTo6UGVyY2VudGFnZTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNlZE51bWJl
ciA9IHBhcnNlQ1NTTnVtYmVyKGNoYXJhY3RlcnMsIGxlbmd0aCk7CkBAIC0xMzcsMTAgKzEzNywx
MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFyc2VTaW1wbGVBbmdsZShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZQogCiAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoY2hhcmFjdGVyc1tsZW5ndGggLSAzXSwgJ2QnKSAmJiBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0sICdlJykgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDFdLCAnZycpKSB7CiAgICAgICAgIGxlbmd0
aCAtPSAzOwotICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19ERUc7CisgICAgICAgIHVu
aXQgPSBDU1NVbml0VHlwZTo6RGVnOwogICAgIH0gZWxzZSBpZiAoaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDNdLCAncicpICYmIGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoY2hhcmFjdGVyc1tsZW5ndGggLSAyXSwgJ2EnKSAmJiBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0sICdkJykpIHsKICAgICAgICAgbGVuZ3Ro
IC09IDM7Ci0gICAgICAgIHVuaXQgPSBDU1NVbml0VHlwZTo6Q1NTX1JBRDsKKyAgICAgICAgdW5p
dCA9IENTU1VuaXRUeXBlOjpSYWQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU2ltcGxl
TGVuZ3RoVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBTdHJpbmdWCiAKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZG91YmxlIG51bWJlcjsKLSAgICBD
U1NVbml0VHlwZSB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7CisgICAgQ1NTVW5pdFR5
cGUgdW5pdCA9IENTU1VuaXRUeXBlOjpOdW1iZXI7CiAKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KSB7CiAgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgoc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCwgdW5pdCwgbnVtYmVyKSkKQEAgLTE3MCwxMCArMTcwLDEwIEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlkLCBTdHJpbmdWCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBp
ZiAodW5pdCA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikgeworICAgIGlmICh1bml0ID09IENT
U1VuaXRUeXBlOjpOdW1iZXIpIHsKICAgICAgICAgaWYgKG51bWJlciAmJiBjc3NQYXJzZXJNb2Rl
ICE9IFNWR0F0dHJpYnV0ZU1vZGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1NfUFg7CisgICAgICAgIHVuaXQgPSBDU1NVbml0VHlw
ZTo6UHg7CiAgICAgfQogCiAgICAgaWYgKG51bWJlciA8IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51
bWJlcnMpCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4g
cGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3QKICAgICBp
ZiAoY3VycmVudCA9PSBlbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBp
ZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSICYmICgqY3VycmVudCA9PSAnLicg
fHwgKmN1cnJlbnQgPT0gJyUnKSkKKyAgICBpZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpOdW1i
ZXIgJiYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpjdXJyZW50ID09ICcuJykgewpAQCAtMjk4LDE4
ICsyOTgsMTggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9y
UGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3QKICAgICAgICAgbG9jYWxWYWx1ZSAr
PSBwZXJjZW50YWdlOwogICAgIH0KIAotICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNT
U19QRVJDRU5UQUdFICYmICpjdXJyZW50ICE9ICclJykKKyAgICBpZiAoZXhwZWN0ID09IENTU1Vu
aXRUeXBlOjpQZXJjZW50YWdlICYmICpjdXJyZW50ICE9ICclJykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqY3VycmVudCA9PSAnJScpIHsKLSAgICAgICAgZXhwZWN0
ID0gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOworICAgICAgICBleHBlY3QgPSBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZTsKICAgICAgICAgbG9jYWxWYWx1ZSA9IGxvY2FsVmFsdWUgLyAxMDAu
MCAqIDI1NS4wOwogICAgICAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMjU1IGZvciBwZXJjZW50YWdl
cyBvdmVyIDEwMCUKICAgICAgICAgaWYgKGxvY2FsVmFsdWUgPiAyNTUpCiAgICAgICAgICAgICBs
b2NhbFZhbHVlID0gMjU1OwogICAgICAgICBjdXJyZW50Kys7CiAgICAgfSBlbHNlCi0gICAgICAg
IGV4cGVjdCA9IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOworICAgICAgICBleHBlY3QgPSBDU1NV
bml0VHlwZTo6TnVtYmVyOwogCiAgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzSFRNTFNw
YWNlPENoYXJhY3RlclR5cGU+KCpjdXJyZW50KSkKICAgICAgICAgY3VycmVudCsrOwpAQCAtNDY2
LDcgKzQ2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyCiAgICAgICAgICAgICByZXR1cm4g
KmhleENvbG9yOwogICAgIH0KIAotICAgIGF1dG8gZXhwZWN0ID0gQ1NTVW5pdFR5cGU6OkNTU19V
TktOT1dOOworICAgIGF1dG8gZXhwZWN0ID0gQ1NTVW5pdFR5cGU6OlVua25vd247CiAKICAgICAv
LyBUcnkgcmdiYSgpIHN5bnRheC4KICAgICBpZiAobWlnaHRCZVJHQkEoY2hhcmFjdGVycywgbGVu
Z3RoKSkgewpAQCAtMTEzNiwxMyArMTEzNiwxMyBAQCBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9y
bVRyYW5zbGF0ZUFyZ3VtZW50cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaQog
ICAgICAgICBpZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZWxpbWl0ZXIpOwotICAgICAgICBDU1NVbml0VHlwZSB1bml0ID0gQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVI7CisgICAgICAgIENTU1VuaXRUeXBlIHVuaXQgPSBDU1NVbml0VHlwZTo6TnVt
YmVyOwogICAgICAgICBkb3VibGUgbnVtYmVyOwogICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVu
Z3RoKHBvcywgYXJndW1lbnRMZW5ndGgsIHVuaXQsIG51bWJlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbnVtYmVyICYmIHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIpCi0gICAgICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19QWDsKLSAgICAg
ICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgfHwgKHVuaXQgPT0gQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFICYmICh0cmFuc2Zvcm1WYWx1ZS0+bmFtZSgpID09IENTU1Zh
bHVlVHJhbnNsYXRlWiB8fCAodHJhbnNmb3JtVmFsdWUtPm5hbWUoKSA9PSBDU1NWYWx1ZVRyYW5z
bGF0ZTNkICYmIGV4cGVjdGVkQ291bnQgPT0gMSkpKSkKKyAgICAgICAgaWYgKCFudW1iZXIgJiYg
dW5pdCA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKQorICAgICAgICAgICAgdW5pdCA9IENTU1VuaXRU
eXBlOjpQeDsKKyAgICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlciB8fCAodW5p
dCA9PSBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSAmJiAodHJhbnNmb3JtVmFsdWUtPm5hbWUoKSA9
PSBDU1NWYWx1ZVRyYW5zbGF0ZVogfHwgKHRyYW5zZm9ybVZhbHVlLT5uYW1lKCkgPT0gQ1NTVmFs
dWVUcmFuc2xhdGUzZCAmJiBleHBlY3RlZENvdW50ID09IDEpKSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShudW1iZXIsIHVuaXQpKTsKICAgICAgICAgcG9zICs9IGFyZ3VtZW50TGVuZ3Ro
ICsgMTsKQEAgLTExNTksMTIgKzExNTksMTIgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1B
bmdsZUFyZ3VtZW50KENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCBDU1NGdW5jdGkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKLSAgICBDU1NVbml0VHlwZSB1bml0ID0gQ1NT
VW5pdFR5cGU6OkNTU19OVU1CRVI7CisgICAgQ1NTVW5pdFR5cGUgdW5pdCA9IENTU1VuaXRUeXBl
OjpOdW1iZXI7CiAgICAgZG91YmxlIG51bWJlcjsKICAgICBpZiAoIXBhcnNlU2ltcGxlQW5nbGUo
cG9zLCBhcmd1bWVudExlbmd0aCwgdW5pdCwgbnVtYmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghbnVtYmVyICYmIHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCi0g
ICAgICAgIHVuaXQgPSBDU1NVbml0VHlwZTo6Q1NTX0RFRzsKKyAgICBpZiAoIW51bWJlciAmJiB1
bml0ID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCisgICAgICAgIHVuaXQgPSBDU1NVbml0VHlwZTo6
RGVnOwogCiAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG51bWJlciwgdW5pdCkpOwogICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CkBAIC0x
MTgzLDcgKzExODMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50
cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaWduZQogICAgICAgICBhdXRvIG51
bWJlciA9IHBhcnNlQ1NTTnVtYmVyKHBvcywgYXJndW1lbnRMZW5ndGgpOwogICAgICAgICBpZiAo
IW51bWJlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdHJhbnNmb3JtVmFs
dWUtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKCpudW1iZXIsIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSgqbnVtYmVyLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgICAg
IHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CiAgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2Vu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCmluZGV4
IGVhNzAzMDQ0YjE3MWIzMTUxMDg0ZmUyMGI2ZDY5YjkwNDU3MDA2MzcuLjlmYzY2NGViNjg2YTdm
MGU2ODliYzNhZTQ2N2Y1YTg3MWIyNjMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCkBAIC00OSw5ICs0OSw5IEBAIENTU1VuaXRUeXBlIGNzc1By
aW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2ln
bmVkIGxlCiAgICAgY2FzZSAxOgogICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBd
KSkgewogICAgICAgICBjYXNlICdxJzoKLSAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6
Q1NTX1E7CisgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlE7CiAgICAgICAgIGNhc2Ug
J3MnOgotICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUzsKKyAgICAgICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6U2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgMjoKQEAgLTU5LDU5ICs1OSw1OSBAQCBDU1NVbml0VHlwZSBjc3NQcmltaXRpdmVW
YWx1ZVVuaXRGcm9tVHJpZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZQog
ICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pKSB7CiAgICAgICAgICAgICBjYXNlICdoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
VW5pdFR5cGU6OkNTU19DSFM7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpD
aHM7CiAgICAgICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkNTU19DTTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNtOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2UnOgogICAg
ICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKICAgICAgICAgICAgIGNh
c2UgJ20nOgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0VNUzsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkVtczsKICAgICAgICAgICAgIGNhc2Ug
J3gnOgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0VYUzsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkV4czsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgIGlmICh0b0FTQ0lJ
TG93ZXIoZGF0YVsxXSkgPT0gJ3InKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6Q1NTX0ZSOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6RmxleDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdoJzoKICAgICAgICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3onKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6Q1NTX0haOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6SHo7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICBpZiAodG9B
U0NJSUxvd2VyKGRhdGFbMV0pID09ICduJykKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkNTU19JTjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkluOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgaWYgKHRv
QVNDSUlMb3dlcihkYXRhWzFdKSA9PSAnaCcgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5saW5lSGVpZ2h0VW5pdHNFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTEhTOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6TGhzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ20nOgogICAg
ICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKICAgICAgICAgICAgIGNh
c2UgJ20nOgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX01NOworICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6TW07CiAgICAgICAgICAgICBjYXNlICdz
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19NUzsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6Ok1zOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3AnOgogICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoZGF0YVsxXSkpIHsKICAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1BDOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6UGM7CiAgICAgICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTVW5pdFR5cGU6OkNTU19QVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OlB0OwogICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpDU1NfUFg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpQ
eDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd2JzoK
ICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CiAgICAgICAgICAg
ICBjYXNlICdoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19WSDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhl
aWdodDsKICAgICAgICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6Q1NTX1ZXOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlV2lkdGg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTIyLDMxICsxMjIsMzEgQEAgQ1NTVW5pdFR5cGUgY3NzUHJpbWl0aXZl
VmFsdWVVbml0RnJvbVRyaWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgdW5zaWduZWQgbGUK
ICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CiAgICAgICAgICAg
ICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09
ICdnJykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfREVHOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkRlZzsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ3AnOgogICAgICAgICAgICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2knKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTVW5pdFR5cGU6OkNTU19EUEk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6RG90c1BlckluY2g7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdrJzoKICAgICAgICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAneicp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfS0haOworICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6S0h6OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkp
IHsKICAgICAgICAgICAgIGNhc2UgJ2EnOgogICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93
ZXIoZGF0YVsyXSkgPT0gJ2QnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OkNTU19SQUQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UmFk
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAg
ICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnbScpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1JFTVM7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6UmVtczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsy
XSkgPT0gJ2gnICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGlu
ZUhlaWdodFVuaXRzRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkNTU19STEhTOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OlJsaHM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTYwLDExICsxNjAsMTEgQEAgQ1NTVW5pdFR5cGUgY3NzUHJpbWl0aXZlVmFsdWVV
bml0RnJvbVRyaWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgdW5zaWduZWQgbGUKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzJdKSkgewogICAgICAgICAgICAg
ICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFb
M10pID09ICdtJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6
Q1NTX0RQQ007CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkRv
dHNQZXJDZW50aW1ldGVyOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRh
WzNdKSA9PSAneCcpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNTU19EUFBYOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpE
b3RzUGVyUGl4ZWw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTcyLDExICsxNzIsMTEgQEAgQ1NTVW5pdFR5cGUg
Y3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwg
dW5zaWduZWQgbGUKICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFb
Ml0pID09ICdhJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2QnKQotICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1VuaXRUeXBlOjpHcmFkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3Qn
OgogICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAndScgJiYgdG9BU0NJ
SUxvd2VyKGRhdGFbMl0pID09ICdyJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ24nKQot
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1RVUk47CisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpUdXJuOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgJ3YnOgogICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkp
IHsKQEAgLTE4NCwxMSArMTg0LDExIEBAIENTU1VuaXRUeXBlIGNzc1ByaW1pdGl2ZVZhbHVlVW5p
dEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgICAg
ICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKICAgICAgICAgICAgICAg
ICBjYXNlICdhJzoKICAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNd
KSA9PSAneCcpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNT
U19WTUFYOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpWaWV3
cG9ydFBlcmNlbnRhZ2VNYXg7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRh
dGFbM10pID09ICduJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6Q1NTX1ZNSU47CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OlZpZXdwb3J0UGVyY2VudGFnZU1pbjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDEyICsyMDAsMTIg
QEAgQ1NTVW5pdFR5cGUgY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoY29uc3QgQ2hhcmFj
dGVyVHlwZSogZGF0YSwgdW5zaWduZWQgbGUKICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIo
ZGF0YVswXSkpIHsKICAgICAgICAgY2FzZSAnXyc6CiAgICAgICAgICAgICBpZiAodG9BU0NJSUxv
d2VyKGRhdGFbMV0pID09ICdfJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ3EnICYmIHRv
QVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnZScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbNF0pID09ICdt
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOwor
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBD
U1NVbml0VHlwZTo6Q1NTX1VOS05PV047CisgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpVbmtub3du
OwogfQogCiBzdGF0aWMgQ1NTVW5pdFR5cGUgc3RyaW5nVG9Vbml0VHlwZShTdHJpbmdWaWV3IHN0
cmluZ1ZpZXcpCkBAIC0yNDMsNyArMjQzLDcgQEAgQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRv
a2VuKGRvdWJsZSBudW1lcmljVmFsdWUsIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHUKICAg
ICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQogICAgICwgbV9udW1lcmljVmFsdWVUeXBlKG51bWVy
aWNWYWx1ZVR5cGUpCiAgICAgLCBtX251bWVyaWNTaWduKHNpZ24pCi0gICAgLCBtX3VuaXQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSkKKyAgICAsIG1fdW5p
dChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTVW5pdFR5cGU6Ok51bWJlcikpCiAgICAgLCBtX251
bWVyaWNWYWx1ZShudW1lcmljVmFsdWUpCiB7CiAgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXco
b3JpZ2luYWxUZXh0KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIENTU1BhcnNlclRva2VuOjpj
b252ZXJ0VG9QZXJjZW50YWdlKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2Vu
KTsKICAgICBtX3R5cGUgPSBQZXJjZW50YWdlVG9rZW47Ci0gICAgbV91bml0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgbV91bml0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKIH0KIAogU3Ry
aW5nVmlldyBDU1NQYXJzZXJUb2tlbjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNWM0MWMzNjc2
ZWE2ZDk5MmFiNzllYTNhOTY5ZDY4YjEyODIxMzEyMC4uMmIzMWFmMDM2OTA4OTI4NWYwYmQwZmNk
MTQ2Y2Q3ZjdjMDY1Y2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIENTU1Byb3BlcnR5UGFy
c2VyOjpjb25zdW1lVHJhbnNmb3JtT3JpZ2luKGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybU9y
aWdpblgsIENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luLCBXVEZNb3ZlKHJlc3VsdFhZLT54KSwg
aW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm1Pcmln
aW5ZLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbiwgV1RGTW92ZShyZXN1bHRYWS0+eSksIGlt
cG9ydGFudCk7Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2lu
WiwgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIHJlc3VsdFogPyByZXN1bHRaLnJlbGVhc2VO
b25OdWxsKCkgOiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDAsIENTU1Vu
aXRUeXBlOjpDU1NfUFgpLCBpbXBvcnRhbnQsICFoYXNaKTsKKyAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbiwg
cmVzdWx0WiA/IHJlc3VsdFoucmVsZWFzZU5vbk51bGwoKSA6IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUoMCwgQ1NTVW5pdFR5cGU6OlB4KSwgaW1wb3J0YW50LCAhaGFzWik7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05MTgsNyArOTE4LDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZvbnRXZWlnaHQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgIHJldHVybiBzd2l0Y2hPbigqcmVzdWx0
LCBbXSAoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCk7CiAgICAgICAg
IH0sIFtdIChkb3VibGUgd2VpZ2h0TnVtYmVyKSB7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3ZWlnaHROdW1iZXIsIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKHdlaWdodE51bWJlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAg
ICAgIH0pOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwNjYsNyArMTA2Niw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb3VudGVyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBpbnQgZGVmYXVsdFZhCiAgICAgICAgIGludCBpID0gZGVmYXVsdFZhbHVlOwog
ICAgICAgICBpZiAoYXV0byBjb3VudGVyVmFsdWUgPSBjb25zdW1lSW50ZWdlclJhdyhyYW5nZSkp
CiAgICAgICAgICAgICBpID0gKmNvdW50ZXJWYWx1ZTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNy
ZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjb3VudGVyTmFtZS5yZWxlYXNlTm9uTnVsbCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjb3VudGVyTmFtZS5yZWxlYXNlTm9uTnVsbCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1VuaXRUeXBlOjpOdW1iZXIpLCBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOwogICAgIH0gd2hpbGUgKCFyYW5nZS5h
dEVuZCgpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KQEAgLTEzMjksNyArMTMyOSw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVBbmltYXRpb25OYW1lKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAibm9uZSIpKQogICAgICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRv
a2VuLnZhbHVlKCkudG9TdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpOworICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh0b2tlbi52YWx1
ZSgpLnRvU3RyaW5nKCksIENTU1VuaXRUeXBlOjpTdHJpbmcpOwogICAgIH0KIAogICAgIHJldHVy
biBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOwpAQCAtMTgwMyw3ICsxODAzLDcgQEAgc3RhdGlj
IGJvb2wgY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2UKICAgICBhdXRvIHBlcnNwZWN0aXZlID0gY29uc3VtZU51bWJlclJh
dyhhcmdzKTsKICAgICBpZiAoIXBlcnNwZWN0aXZlIHx8ICpwZXJzcGVjdGl2ZSA8IDApCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoKnBlcnNwZWN0aXZlLCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7CisgICAg
dHJhbnNmb3JtVmFsdWUtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKCpwZXJzcGVj
dGl2ZSwgQ1NTVW5pdFR5cGU6OlB4KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5NjAs
NyArMTk2MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUcmFuc2xhdGUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vCiAgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgLy8gQWRkIHRoZSB6ZXJvIHZhbHVlIGZvciB5IGlmIHdlIGRpZCBub3Qg
YWxyZWFkeSBhZGQgYSB5IHZhbHVlLgogICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgPT0gMSkK
LSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENT
U1VuaXRUeXBlOjpDU1NfUFgpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpQeCkpOwogICAgICAgICBsaXN0LT5hcHBl
bmQoKnopOwogICAgIH0KIApAQCAtMjEyMSw3ICsyMTIxLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uTG9uZ2hhbmQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmEKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcmNlbnQsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFH
RSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcmNlbnQsIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiB9CkBAIC0y
MzI4LDggKzIzMjgsOCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQXR0cihDU1NQ
YXJzZXJUb2tlblJhbmdlIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgYwogICAgIGlmICghYXJncy5h
dEVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBtb3ZpbmcgdG8gYSBDU1NGdW5jdGlvblZhbHVlIHdpdGggYSBjdXN0b20taWRlbnQgcmF0aGVy
IHRoYW4gYSBzcGVjaWFsIENTU19BVFRSIHByaW1pdGl2ZSB2YWx1ZS4KLSAgICByZXR1cm4gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShhdHRyTmFtZSwgQ1NTVW5pdFR5cGU6
OkNTU19BVFRSKTsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRvIGEgQ1NTRnVuY3Rp
b25WYWx1ZSB3aXRoIGEgY3VzdG9tLWlkZW50IHJhdGhlciB0aGFuIGEgc3BlY2lhbCBDU1NVbml0
VHlwZTo6QXR0ciBwcmltaXRpdmUgdmFsdWUuCisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlVmFsdWUoYXR0ck5hbWUsIENTU1VuaXRUeXBlOjpBdHRyKTsKIH0KIAog
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncywgYm9vbCBjb3VudGVycykKQEAgLTIzNDAsMTEgKzIzNDAsMTEgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UgYXJncywgYm9vbCBjb3UKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2Vw
YXJhdG9yOwogICAgIGlmICghY291bnRlcnMpCi0gICAgICAgIHNlcGFyYXRvciA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoU3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKKyAg
ICAgICAgc2VwYXJhdG9yID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShTdHJpbmcoKSwgQ1NT
VW5pdFR5cGU6OlN0cmluZyk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5n
VG9rZW4pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgc2VwYXJhdG9yID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkudmFsdWUoKS50b1N0cmluZygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CisgICAgICAg
IHNlcGFyYXRvciA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OlN0cmluZyk7
CiAgICAgfQogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGU7CkBAIC0y
NDA3LDcgKzI0MDcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1l
UGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsCiAgICAgYXV0byBwZXJzcGVj
dGl2ZSA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpOwogICAgIGlmICghcGVyc3BlY3RpdmUgfHwg
KnBlcnNwZWN0aXZlIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKnBlcnNwZWN0aXZlLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqcGVyc3BlY3RpdmUsIENT
U1VuaXRUeXBlOjpQeCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1l
U2Nyb2xsU25hcEFsaWduKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzAyMSw3ICsz
MDIxLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJlZmxlY3QoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnMKIAogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gb2Zmc2V0OwogICAgIGlmIChyYW5nZS5hdEVuZCgpKQotICAgICAgICBvZmZzZXQg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDAsIENTU1VuaXRUeXBlOjpD
U1NfUFgpOworICAgICAgICBvZmZzZXQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZVZhbHVlKDAsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG9mZnNldCA9
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6
QWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwogICAgICAgICBpZiAoIW9mZnNldCkKQEAgLTM0
MzksMTAgKzM0MzksMTAgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3Vt
ZUdyaWRCcmVhZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLAogICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAoaWRlbnRNYXRjaGVzPENT
U1ZhbHVlTWluQ29udGVudCwgQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50LCBDU1NWYWx1ZU1heENv
bnRlbnQsIENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCwgQ1NTVmFsdWVBdXRvPih0b2tlbi5pZCgp
KSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tlbi51bml0VHlwZSgpID09IENTU1VuaXRUeXBl
OjpDU1NfRlIpIHsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuICYmIHRv
a2VuLnVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkZsZXgpIHsKICAgICAgICAgaWYgKHJhbmdl
LnBlZWsoKS5udW1lcmljVmFsdWUoKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19GUik7
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1VuaXRUeXBlOjpGbGV4KTsK
ICAgICB9CiAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKIH0KQEAgLTM4MjcsNyArMzgyNyw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVBc3BlY3RSYXRpbyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKICAgICBpZiAoKHJpZ2h0VmFsdWUgJiYgIXNsYXNoU2VlbikgfHwgKCFy
aWdodFZhbHVlICYmIHNsYXNoU2VlbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
ICghc2xhc2hTZWVuICYmICFyaWdodFZhbHVlKSAvLyBBIG1pc3NpbmcgcmlnaHQtaGFuZCBpcyB0
cmVhdGVkIGFzIDEuCi0gICAgICAgIHJpZ2h0VmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKDEsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgcmln
aHRWYWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoMSwgQ1NTVW5p
dFR5cGU6Ok51bWJlcik7CiAgICAgaWYgKCFhdXRvVmFsdWUpCiAgICAgICAgIGF1dG9WYWx1ZSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8+KHJhbmdlKTsKIApAQCAtNDg0MCw3ICs0ODQwLDcg
QEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRh
bnQpCiAgICAgCiAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3Bl
cnR5Rm9udCwgQ1NTRm9udFN0eWxlVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGlj
KCkpID8gQ1NTVmFsdWVJdGFsaWMgOiBDU1NWYWx1ZU5vcm1hbCkpLCBpbXBvcnRhbnQpOwogICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250LCBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihmb250
RGVzY3JpcHRpb24ud2VpZ2h0KCkpKSwgaW1wb3J0YW50KTsKLSAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlVmFsdWUoZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKSwgQ1NTVW5pdFR5
cGU6OkNTU19QWCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250
U2l6ZSwgQ1NTUHJvcGVydHlGb250LCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIENTU1VuaXRUeXBlOjpQeCksIGlt
cG9ydGFudCk7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9udEZhbWlseUxpc3QtPmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmb250RGVz
Y3JpcHRpb24uZmFtaWx5QXQoMCksIEZyb21TeXN0ZW1Gb250SUQ6OlllcykpOwogICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgQ1NTUHJvcGVydHlGb250LCBXVEZNb3ZlKGZv
bnRGYW1pbHlMaXN0KSwgaW1wb3J0YW50KTsKQEAgLTUxMzIsNyArNTEzMiw3IEBAIGJvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGbGV4KGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGZsZXhTaHJpbmsgPT0gdW5zZXRWYWx1ZSkKICAgICAgICAgICAgICAgICAg
ICAgZmxleFNocmluayA9ICpudW1iZXI7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoISpudW1i
ZXIpIC8vIGZsZXggb25seSBhbGxvd3MgYSBiYXNpcyBvZiAwIChzYW5zIHVuaXRzKSBpZiBmbGV4
LWdyb3cgYW5kIGZsZXgtc2hyaW5rIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuCi0gICAg
ICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwg
Q1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIWZsZXhCYXNpcykgewpAQCAtNTE1NiwxMyArNTE1NiwxMyBAQCBib29sIENT
U1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRmxleChib29sIGltcG9ydGFudCkKICAgICAgICAgLy8g
aWYgdHVybmVkIGJhY2sgb24gZm9yIG5lc3RlZCBjb2x1bW5zLCBldGMuKS4gV2UgaGF2ZSBsYXlv
dXQgdGVzdCBjb3ZlcmFnZSBvZiBib3RoCiAgICAgICAgIC8vIHNjZW5hcmlvcy4KICAgICAgICAg
aWYgKCFmbGV4QmFzaXMpCi0gICAgICAgICAgICBmbGV4QmFzaXMgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICBm
bGV4QmFzaXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpQZXJj
ZW50YWdlKTsKICAgICB9CiAKICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5RmxleEdyb3csIENTU1Byb3Bl
cnR5RmxleCwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4R3Jv
dyksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgaW1wb3J0YW50KTsKLSAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1Byb3BlcnR5RmxleCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4U2hyaW5rKSwgQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5RmxleEdyb3cs
IENTU1Byb3BlcnR5RmxleCwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0
PihmbGV4R3JvdyksIENTU1VuaXRUeXBlOjpOdW1iZXIpLCBpbXBvcnRhbnQpOworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5RmxleFNocmluaywgQ1NTUHJvcGVydHlGbGV4LCBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88ZmxvYXQ+KGZsZXhTaHJpbmspLCBDU1NVbml0VHlwZTo6
TnVtYmVyKSwgaW1wb3J0YW50KTsKICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhCYXNp
cywgQ1NTUHJvcGVydHlGbGV4LCBmbGV4QmFzaXMucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0YW50
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCA3MzZiMmU5MjQ1NWMyMWZl
ZGVmZTkwYTg1MjFlNjM4NGI3NTI4MzI3Li45Mzc5ZTk3OGMxOWVlODEwOTRiNGM3NzAyNTNjZDgy
NGJmNDhkN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAg
ICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOwotICAgICAgICByZXR1cm4gbV9wb29sLmNyZWF0
ZVZhbHVlKHN0ZDo6cm91bmQoc3RkOjptYXgobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIG1p
bmltdW1WYWx1ZSkpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVybiBt
X3Bvb2wuY3JlYXRlVmFsdWUoc3RkOjpyb3VuZChzdGQ6Om1heChtX2NhbGNWYWx1ZS0+ZG91Ymxl
VmFsdWUoKSwgbWluaW11bVZhbHVlKSksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50VHlwZT4gY29u
c3VtZUludGVnZXJUeXBlUmF3KGRvdWJsZSBtaW5pbXVtVmFsdWUpCkBAIC0xNjgsNyArMTY4LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOwotICAgICAgICByZXR1
cm4gbV9wb29sLmNyZWF0ZVZhbHVlKG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVybiBtX3Bvb2wuY3JlYXRlVmFsdWUobV9j
YWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIH0KIAog
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KCkKQEAgLTI2Myw3ICsy
NjMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBzdGF0aWMgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjb25zdW1lSW50ZWdlclR5cGVDUwogICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
dHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pOwogCiAgICAgaWYgKGF1dG8gaW50ZWdlciA9IGNvbnN1
bWVJbnRlZ2VyVHlwZVJhd1dpdGhLbm93blRva2VuVHlwZUZ1bmN0aW9uPEludFR5cGU+KHJhbmdl
LCBtaW5pbXVtVmFsdWUpKQotICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZSgqaW50ZWdl
ciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVW
YWx1ZSgqaW50ZWdlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSW50ZWdlclR5cGVDUwogICAgIEFT
U0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IE51bWJlclRva2VuKTsKIAogICAgIGlmIChhdXRv
IGludGVnZXIgPSBjb25zdW1lSW50ZWdlclR5cGVSYXdXaXRoS25vd25Ub2tlblR5cGVOdW1iZXI8
SW50VHlwZT4ocmFuZ2UsIG1pbmltdW1WYWx1ZSkpCi0gICAgICAgIHJldHVybiBwb29sLmNyZWF0
ZVZhbHVlKCppbnRlZ2VyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVy
biBwb29sLmNyZWF0ZVZhbHVlKCppbnRlZ2VyLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhd1dpdGhLbm93blRva2VuVHlwZUlkZW50KENTU1Bh
cnNlclRvCiAKICAgICBpZiAoYXV0byB2YXJpYWJsZSA9IHN5bWJvbFRhYmxlLmdldChyYW5nZS5w
ZWVrKCkuaWQoKSkpIHsKICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+dHlwZSkgewotICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgorICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpOdW1iZXI6CiAgICAgICAgICAgICBpZiAoYXV0byB2YWxpZGF0ZWRWYWx1ZSA9IHZhbGlkYXRl
ZE51bWJlclJhdyh2YXJpYWJsZS0+dmFsdWUsIHZhbHVlUmFuZ2UpKSB7CiAgICAgICAgICAgICAg
ICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVkVmFsdWU7CkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBjb25zdW1lUGVyY2VudFJhd1dpdGhLbm93blRva2VuVHlwZUlkZW50KENT
U1BhcnNlclQKIAogICAgIGlmIChhdXRvIHZhcmlhYmxlID0gc3ltYm9sVGFibGUuZ2V0KHJhbmdl
LnBlZWsoKS5pZCgpKSkgewogICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT50eXBlKSB7Ci0gICAg
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgorICAgICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpQZXJjZW50YWdlOgogICAgICAgICAgICAgaWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUg
PSB2YWxpZGF0ZWRQZXJjZW50UmF3KHZhcmlhYmxlLT52YWx1ZSwgdmFsdWVSYW5nZSkpIHsKICAg
ICAgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUGVyY2VudENTU1ByaW1pdGl2ZVZh
bHVlV2l0aENhbGNXaXRoS25vdwogCiAgICAgaWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUgPSB2YWxp
ZGF0ZWRQZXJjZW50UmF3KHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWUoKSwgdmFsdWVSYW5nZSkp
IHsKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAg
cmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoKnZhbGlkYXRlZFZhbHVlLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOworICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZSgqdmFsaWRhdGVk
VmFsdWUsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC00NDgsMjcgKzQ0OCwyNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGhS
YXc+IGNvbnN1bWVMZW5ndGhSYXdXaXRoS25vd25Ub2tlblR5cGVEaW1lbnNpb24oQ1NTUAogCiAg
ICAgYXV0byB1bml0VHlwZSA9IHRva2VuLnVuaXRUeXBlKCk7CiAgICAgc3dpdGNoICh1bml0VHlw
ZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlF1aXJreUVtczoKICAgICAgICAgaWYgKHBhcnNlck1vZGUgIT0gVUFTaGVldE1v
ZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19SRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JMSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X01NOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUFQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WVzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TGhzOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJsaHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNbToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQdDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRh
Z2VXaWR0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpROgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExlbmd0aFJh
dz4gY29uc3VtZUxlbmd0aFJhd1dpdGhLbm93blRva2VuVHlwZU51bWJlcihDU1NQYXJzCiAKICAg
ICBpZiAoYXV0byB2YWxpZGF0ZWRWYWx1ZSA9IHZhbGlkYXRlZExlbmd0aFJhdyh0b2tlbi5udW1l
cmljVmFsdWUoKSwgdmFsdWVSYW5nZSkpIHsKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKLSAgICAgICAgcmV0dXJuIHsgeyBDU1NVbml0VHlwZTo6Q1NTX1BYLCAq
dmFsaWRhdGVkVmFsdWUgfSB9OworICAgICAgICByZXR1cm4geyB7IENTU1VuaXRUeXBlOjpQeCwg
KnZhbGlkYXRlZFZhbHVlIH0gfTsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
QEAgLTU0MSwxMCArNTQxLDEwIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFuZ2xlUmF3PiBjb25z
dW1lQW5nbGVSYXdXaXRoS25vd25Ub2tlblR5cGVEaW1lbnNpb24oQ1NTUGFyCiAKICAgICBhdXRv
IHVuaXRUeXBlID0gcmFuZ2UucGVlaygpLnVuaXRUeXBlKCk7CiAgICAgc3dpdGNoICh1bml0VHlw
ZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVFVSTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6UmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6VHVybjoKICAgICAgICAgcmV0dXJuIHsgeyB1bml0VHlwZSwgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSB9IH07CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC01NTgsNyArNTU4LDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhd1dpdGhLbm93blRva2VuVHlwZU51bWJlcihD
U1NQYXJzZXIKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbik7
CiAKICAgICBpZiAoc2hvdWxkQWNjZXB0VW5pdGxlc3NWYWx1ZShyYW5nZS5wZWVrKCkubnVtZXJp
Y1ZhbHVlKCksIHBhcnNlck1vZGUsIHVuaXRsZXNzLCB1bml0bGVzc1plcm8pKQotICAgICAgICBy
ZXR1cm4geyB7IENTU1VuaXRUeXBlOjpDU1NfREVHLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBDU1NVbml0
VHlwZTo6RGVnLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1
ZSgpIH0gfTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC02MDgsNyArNjA4LDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVRpbWVDU1NQcmltaXRp
dmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG8KICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJh
bmdlOjpOb25OZWdhdGl2ZSAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChhdXRvIHVuaXQgPSByYW5nZS5wZWVrKCku
dW5pdFR5cGUoKTsgdW5pdCA9PSBDU1NVbml0VHlwZTo6Q1NTX01TIHx8IHVuaXQgPT0gQ1NTVW5p
dFR5cGU6OkNTU19TKQorICAgIGlmIChhdXRvIHVuaXQgPSByYW5nZS5wZWVrKCkudW5pdFR5cGUo
KTsgdW5pdCA9PSBDU1NVbml0VHlwZTo6TXMgfHwgdW5pdCA9PSBDU1NVbml0VHlwZTo6U2Vjb25k
KQogICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB1bml0KTsKIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtNjIxLDcgKzYyMSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNv
bnN1bWVUaW1lQ1NTUHJpbWl0aXZlVmFsdWVXaXRoQ2FsY1dpdGhLbm93blRvCiAgICAgaWYgKHVu
aXRsZXNzID09IFVuaXRsZXNzUXVpcms6OkFsbG93ICYmIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFs
dWUocmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpLCBwYXJzZXJNb2RlLCB1bml0bGVzcywgVW5p
dGxlc3NaZXJvUXVpcms6OkFsbG93KSkgewogICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCkgPCAwKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBwb29sLmNyZWF0ZVZh
bHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENT
U1VuaXRUeXBlOjpDU1NfTVMpOworICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZShyYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NVbml0VHlw
ZTo6TXMpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTYzMiwxMCArNjMyLDEw
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0aW9uQ1NT
UHJpbWl0aXZlVmFsdWVXaXRoS25vd25Ub2tlCiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50
eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pOwogCi0gICAgaWYgKGF1dG8gdW5pdCA9IHJhbmdlLnBl
ZWsoKS51bml0VHlwZSgpOyB1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfRFBQWCB8fCB1bml0ID09
IENTU1VuaXRUeXBlOjpDU1NfRFBJIHx8IHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19EUENNKQor
ICAgIGlmIChhdXRvIHVuaXQgPSByYW5nZS5wZWVrKCkudW5pdFR5cGUoKTsgdW5pdCA9PSBDU1NV
bml0VHlwZTo6RG90c1BlclBpeGVsIHx8IHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNo
IHx8IHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyKQogICAgICAgICByZXR1
cm4gcG9vbC5jcmVhdGVWYWx1ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51
bWVyaWNWYWx1ZSgpLCB1bml0KTsKICAgICBpZiAoYWxsb3dYID09IEFsbG93WFJlc29sdXRpb25V
bml0OjpBbGxvdyAmJiByYW5nZS5wZWVrKCkudW5pdFN0cmluZygpID09ICJ4IikKLSAgICAgICAg
cmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5udW1lcmljVmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19EUFBYKTsKKyAgICAgICAgcmV0dXJu
IHBvb2wuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbCk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KQEAgLTEwOTQsMTQgKzEwOTQsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBjb25zdW1lQW5nbGVSYXdPck51bWJlclJhd0FsbG93aW5nU3ltYm9sVGFibGVJZGVudCgK
ICAgICBjYXNlIElkZW50VG9rZW46CiAgICAgICAgIGlmIChhdXRvIHZhcmlhYmxlID0gc3ltYm9s
VGFibGUuZ2V0KHRva2VuLmlkKCkpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT50
eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgICAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19HUkFEOgotICAgICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46Cisg
ICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6CisgICAgICAgICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpSYWQ6CisgICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAgICAg
ICAgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKICAgICAgICAgICAgICAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXModmFyaWFibGUtPnR5cGUsIHZhcmlhYmxlLT52YWx1
ZSk7CiAKLSAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6CisgICAgICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CiAgICAgICAgICAgICAgICAgcmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFi
bGUtPnZhbHVlOwogCkBAIC0xMTg1LDE0ICsxMTg1LDE0IEBAIHN0YXRpYyBhdXRvIGNvbnN1bWVO
dW1iZXJSYXdPclBlcmNlbnRSYXdBbGxvd2luZ1N5bWJvbFRhYmxlSWRlbnQoQ1NTUGFyc2VyVG9r
ZW5SCiAgICAgY2FzZSBJZGVudFRva2VuOgogICAgICAgICBpZiAoYXV0byB2YXJpYWJsZSA9IHN5
bWJvbFRhYmxlLmdldChyYW5nZS5wZWVrKCkuaWQoKSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAo
dmFyaWFibGUtPnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJD
RU5UQUdFOgorICAgICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6UGVyY2VudGFnZToKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byB2YWxpZGF0ZWRWYWx1ZSA9IHZhbGlkYXRlZFBlcmNlbnRSYXco
dmFyaWFibGUtPnZhbHVlLCB2YWx1ZVJhbmdlKSkgewogICAgICAgICAgICAgICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcGVyY2VudFRyYW5mb3JtZXIoKnZhbGlkYXRlZFZhbHVlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVI6CisgICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CiAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUgPSB2YWxpZGF0ZWROdW1iZXJSYXco
dmFyaWFibGUtPnZhbHVlLCB2YWx1ZVJhbmdlKSkgewogICAgICAgICAgICAgICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVtYmVyVHJhbmZvcm1lcigqdmFsaWRhdGVkVmFsdWUpOwpAQCAtMTI3MSw3ICsxMjcxLDcg
QEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRm9udFdlaWdodE51bWJlcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3Vt
ZUZvbnRXZWlnaHROdW1iZXJXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NWYWx1ZVBvb2wmIHBvb2wpCiB7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUZvbnRX
ZWlnaHROdW1iZXJSYXcocmFuZ2UpKQotICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZSgq
cmVzdWx0LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVybiBwb29sLmNy
ZWF0ZVZhbHVlKCpyZXN1bHQsIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJh
bmdlLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBDU1NVbml0
VHlwZTo6Q1NTX1NUUklORyk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRv
U3RyaW5nKCksIENTU1VuaXRUeXBlOjpTdHJpbmcpOwogfQogCiBTdHJpbmdWaWV3IGNvbnN1bWVV
cmxBc1N0cmluZ1ZpZXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0xMzUwLDcgKzEz
NTAsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgU3RyaW5nVmlldyB1cmwgPSBjb25zdW1lVXJsQXNTdHJpbmdW
aWV3KHJhbmdlKTsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh1cmwu
dG9TdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19VUkkpOworICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHVybC50b1N0cmluZygpLCBDU1NVbml0VHlwZTo6
VVJJKTsKIH0KIAogc3RhdGljIENvbG9yIGNvbnN1bWVPcmlnaW5Db2xvcihDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQpAQCAtMTQ2Niwx
MCArMTQ2NiwxMCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFycwogICAgIGF1dG8gb3JpZ2luQ29s
b3JBc1NSR0IgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKTsK
IAogICAgIENTU0NhbGNTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFs
dWVSLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNTUkdCLnJlZCAq
IDEwMC4wIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVHLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UsIG9yaWdpbkNvbG9yQXNTUkdCLmdyZWVuICogMTAwLjAgfSwKLSAgICAgICAgeyBDU1NWYWx1
ZUIsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc1NSR0IuYmx1ZSAq
IDEwMC4wIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJD
RU5UQUdFLCBvcmlnaW5Db2xvckFzU1JHQi5hbHBoYSAqIDEwMC4wIH0KKyAgICAgICAgeyBDU1NW
YWx1ZVIsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzU1JHQi5yZWQgKiAx
MDAuMCB9LAorICAgICAgICB7IENTU1ZhbHVlRywgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9y
aWdpbkNvbG9yQXNTUkdCLmdyZWVuICogMTAwLjAgfSwKKyAgICAgICAgeyBDU1NWYWx1ZUIsIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzU1JHQi5ibHVlICogMTAwLjAgfSwK
KyAgICAgICAgeyBDU1NWYWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2lu
Q29sb3JBc1NSR0IuYWxwaGEgKiAxMDAuMCB9CiAgICAgfTsKIAogICAgIGF1dG8gcmVkID0gY29u
c3VtZVJlbGF0aXZlUkdCQ29tcG9uZW50KGFyZ3MsIHN5bWJvbFRhYmxlKTsKQEAgLTE1OTQsMTAg
KzE1OTQsMTAgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVIU0xQYXJhbWV0ZXJzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMKICAgICBhdXRvIG9yaWdpbkNvbG9y
QXNIU0wgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhTTEE8ZmxvYXQ+PigpOwogCiAg
ICAgQ1NTQ2FsY1N5bWJvbFRhYmxlIHN5bWJvbFRhYmxlIHsKLSAgICAgICAgeyBDU1NWYWx1ZUgs
IENTU1VuaXRUeXBlOjpDU1NfREVHLCBvcmlnaW5Db2xvckFzSFNMLmh1ZSB9LAotICAgICAgICB7
IENTU1ZhbHVlUywgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzSFNM
LnNhdHVyYXRpb24gfSwKLSAgICAgICAgeyBDU1NWYWx1ZUwsIENTU1VuaXRUeXBlOjpDU1NfUEVS
Q0VOVEFHRSwgb3JpZ2luQ29sb3JBc0hTTC5saWdodG5lc3MgfSwKLSAgICAgICAgeyBDU1NWYWx1
ZUFscGhhLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNIU0wuYWxw
aGEgKiAxMDAuMCB9CisgICAgICAgIHsgQ1NTVmFsdWVILCBDU1NVbml0VHlwZTo6RGVnLCBvcmln
aW5Db2xvckFzSFNMLmh1ZSB9LAorICAgICAgICB7IENTU1ZhbHVlUywgQ1NTVW5pdFR5cGU6OlBl
cmNlbnRhZ2UsIG9yaWdpbkNvbG9yQXNIU0wuc2F0dXJhdGlvbiB9LAorICAgICAgICB7IENTU1Zh
bHVlTCwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNvbG9yQXNIU0wubGlnaHRuZXNz
IH0sCisgICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9y
aWdpbkNvbG9yQXNIU0wuYWxwaGEgKiAxMDAuMCB9CiAgICAgfTsKIAogICAgIGF1dG8gaHVlID0g
Y29uc3VtZUFuZ2xlUmF3T3JOdW1iZXJSYXdBbGxvd2luZ1N5bWJvbFRhYmxlSWRlbnQoYXJncywg
c3ltYm9sVGFibGUsIGNvbnRleHQubW9kZSk7CkBAIC0xNzMzLDEwICsxNzMzLDEwIEBAIHN0YXRp
YyBDb2xvciBwYXJzZVJlbGF0aXZlSFdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBjb25zdCBDU1NQYXJzCiAgICAgYXV0byBvcmlnaW5Db2xvckFzSFdCID0gb3JpZ2luQ29s
b3IudG9Db2xvclR5cGVMb3NzeTxIV0JBPGZsb2F0Pj4oKTsKIAogICAgIENTU0NhbGNTeW1ib2xU
YWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFsdWVILCBDU1NVbml0VHlwZTo6Q1NT
X0RFRywgb3JpZ2luQ29sb3JBc0hXQi5odWUgfSwKLSAgICAgICAgeyBDU1NWYWx1ZVcsIENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc0hXQi53aGl0ZW5lc3MgfSwKLSAg
ICAgICAgeyBDU1NWYWx1ZUIsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29s
b3JBc0hXQi5ibGFja25lc3MgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUFscGhhLCBDU1NVbml0VHlw
ZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNIV0IuYWxwaGEgKiAxMDAuMCB9CisgICAg
ICAgIHsgQ1NTVmFsdWVILCBDU1NVbml0VHlwZTo6RGVnLCBvcmlnaW5Db2xvckFzSFdCLmh1ZSB9
LAorICAgICAgICB7IENTU1ZhbHVlVywgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNv
bG9yQXNIV0Iud2hpdGVuZXNzIH0sCisgICAgICAgIHsgQ1NTVmFsdWVCLCBDU1NVbml0VHlwZTo6
UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc0hXQi5ibGFja25lc3MgfSwKKyAgICAgICAgeyBDU1NW
YWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc0hXQi5hbHBo
YSAqIDEwMC4wIH0KICAgICB9OwogCiAgICAgYXV0byBodWVDb25zdW1lciA9IFsmc3ltYm9sVGFi
bGUsICZjb250ZXh0XShhdXRvJiBhcmdzKSB7IHJldHVybiBjb25zdW1lQW5nbGVSYXdPck51bWJl
clJhd0FsbG93aW5nU3ltYm9sVGFibGVJZGVudChhcmdzLCBzeW1ib2xUYWJsZSwgY29udGV4dC5t
b2RlKTsgfTsKQEAgLTE4MDgsMTAgKzE4MDgsMTAgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRp
dmVMYWJQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMK
ICAgICBhdXRvIG9yaWdpbkNvbG9yQXNMYWIgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5
PExhYjxmbG9hdD4+KCk7CiAKICAgICBDU1NDYWxjU3ltYm9sVGFibGUgc3ltYm9sVGFibGUgewot
ICAgICAgICB7IENTU1ZhbHVlTCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5D
b2xvckFzTGFiLmxpZ2h0bmVzcyB9LAotICAgICAgICB7IENTU1ZhbHVlQSwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIsIG9yaWdpbkNvbG9yQXNMYWIuYSB9LAotICAgICAgICB7IENTU1ZhbHVlQiwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIsIG9yaWdpbkNvbG9yQXNMYWIuYiB9LAotICAgICAgICB7
IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JB
c0xhYi5hbHBoYSAqIDEwMC4wIH0KKyAgICAgICAgeyBDU1NWYWx1ZUwsIENTU1VuaXRUeXBlOjpQ
ZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzTGFiLmxpZ2h0bmVzcyB9LAorICAgICAgICB7IENTU1Zh
bHVlQSwgQ1NTVW5pdFR5cGU6Ok51bWJlciwgb3JpZ2luQ29sb3JBc0xhYi5hIH0sCisgICAgICAg
IHsgQ1NTVmFsdWVCLCBDU1NVbml0VHlwZTo6TnVtYmVyLCBvcmlnaW5Db2xvckFzTGFiLmIgfSwK
KyAgICAgICAgeyBDU1NWYWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2lu
Q29sb3JBc0xhYi5hbHBoYSAqIDEwMC4wIH0KICAgICB9OwogCiAgICAgYXV0byBsaWdodG5lc3ND
b25zdW1lciA9IFsmc3ltYm9sVGFibGVdKGF1dG8mIGFyZ3MpIHsgcmV0dXJuIGNvbnN1bWVQZXJj
ZW50QWxsb3dpbmdTeW1ib2xUYWJsZUlkZW50KGFyZ3MsIHN5bWJvbFRhYmxlKTsgfTsKQEAgLTE4
ODUsMTAgKzE4ODUsMTAgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJz
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMKICAgICBhdXRvIG9yaWdp
bkNvbG9yQXNMQ0ggPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PExDSEE8ZmxvYXQ+Pigp
OwogCiAgICAgQ1NTQ2FsY1N5bWJvbFRhYmxlIHN5bWJvbFRhYmxlIHsKLSAgICAgICAgeyBDU1NW
YWx1ZUwsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc0xDSC5saWdo
dG5lc3MgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUMsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSLCBv
cmlnaW5Db2xvckFzTENILmNocm9tYSB9LAotICAgICAgICB7IENTU1ZhbHVlSCwgQ1NTVW5pdFR5
cGU6OkNTU19ERUcsIG9yaWdpbkNvbG9yQXNMQ0guaHVlIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVB
bHBoYSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzTENILmFscGhh
ICogMTAwLjAgfQorICAgICAgICB7IENTU1ZhbHVlTCwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2Us
IG9yaWdpbkNvbG9yQXNMQ0gubGlnaHRuZXNzIH0sCisgICAgICAgIHsgQ1NTVmFsdWVDLCBDU1NV
bml0VHlwZTo6TnVtYmVyLCBvcmlnaW5Db2xvckFzTENILmNocm9tYSB9LAorICAgICAgICB7IENT
U1ZhbHVlSCwgQ1NTVW5pdFR5cGU6OkRlZywgb3JpZ2luQ29sb3JBc0xDSC5odWUgfSwKKyAgICAg
ICAgeyBDU1NWYWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JB
c0xDSC5hbHBoYSAqIDEwMC4wIH0KICAgICB9OwogCiAgICAgYXV0byBsaWdodG5lc3NDb25zdW1l
ciA9IFsmc3ltYm9sVGFibGVdKGF1dG8mIGFyZ3MpIHsgcmV0dXJuIGNvbnN1bWVQZXJjZW50QWxs
b3dpbmdTeW1ib2xUYWJsZUlkZW50KGFyZ3MsIHN5bWJvbFRhYmxlKTsgfTsKQEAgLTE5NjEsMTAg
KzE5NjEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgQ29sb3IgcGFy
c2VSZWxhdGl2ZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXBlcygKICAgICBhdXRvIG9yaWdpbkNvbG9y
QXNDb2xvclR5cGUgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKTsK
IAogICAgIENTU0NhbGNTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFs
dWVSLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNDb2xvclR5cGUu
cmVkICogMTAwLjAgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUcsIENTU1VuaXRUeXBlOjpDU1NfUEVS
Q0VOVEFHRSwgb3JpZ2luQ29sb3JBc0NvbG9yVHlwZS5ncmVlbiAqIDEwMC4wIH0sCi0gICAgICAg
IHsgQ1NTVmFsdWVCLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXND
b2xvclR5cGUuYmx1ZSAqIDEwMC4wIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzQ29sb3JUeXBlLmFscGhhICogMTAw
LjAgfQorICAgICAgICB7IENTU1ZhbHVlUiwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdp
bkNvbG9yQXNDb2xvclR5cGUucmVkICogMTAwLjAgfSwKKyAgICAgICAgeyBDU1NWYWx1ZUcsIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzQ29sb3JUeXBlLmdyZWVuICogMTAw
LjAgfSwKKyAgICAgICAgeyBDU1NWYWx1ZUIsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmln
aW5Db2xvckFzQ29sb3JUeXBlLmJsdWUgKiAxMDAuMCB9LAorICAgICAgICB7IENTU1ZhbHVlQWxw
aGEsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzQ29sb3JUeXBlLmFscGhh
ICogMTAwLjAgfQogICAgIH07CiAKICAgICBhdXRvIGNvbnN1bWVSR0IgPSBbJnN5bWJvbFRhYmxl
XShhdXRvJiBhcmdzKSB7IHJldHVybiBjb25zdW1lTnVtYmVyUmF3T3JQZXJjZW50RGl2aWRlZEJ5
MTAwUmF3QWxsb3dpbmdTeW1ib2xUYWJsZUlkZW50KGFyZ3MsIHN5bWJvbFRhYmxlLCBWYWx1ZVJh
bmdlOjpBbGwpOyB9OwpAQCAtMjAyMiwxMCArMjAyMiwxMCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VS
ZWxhdGl2ZUNvbG9yRnVuY3Rpb25Gb3JYWVpQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZwogICAgIGF1dG8gb3JpZ2luQ29sb3JBc1hZWiA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBl
TG9zc3k8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPj4oKTsKIAogICAgIENTU0NhbGNTeW1i
b2xUYWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFsdWVYLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUiwgb3JpZ2luQ29sb3JBc1hZWi54IH0sCi0gICAgICAgIHsgQ1NTVmFsdWVZLCBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUiwgb3JpZ2luQ29sb3JBc1hZWi55IH0sCi0gICAgICAgIHsg
Q1NTVmFsdWVaLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiwgb3JpZ2luQ29sb3JBc1hZWi56IH0s
Ci0gICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBv
cmlnaW5Db2xvckFzWFlaLmFscGhhICogMTAwLjAgfQorICAgICAgICB7IENTU1ZhbHVlWCwgQ1NT
VW5pdFR5cGU6Ok51bWJlciwgb3JpZ2luQ29sb3JBc1hZWi54IH0sCisgICAgICAgIHsgQ1NTVmFs
dWVZLCBDU1NVbml0VHlwZTo6TnVtYmVyLCBvcmlnaW5Db2xvckFzWFlaLnkgfSwKKyAgICAgICAg
eyBDU1NWYWx1ZVosIENTU1VuaXRUeXBlOjpOdW1iZXIsIG9yaWdpbkNvbG9yQXNYWVoueiB9LAor
ICAgICAgICB7IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5D
b2xvckFzWFlaLmFscGhhICogMTAwLjAgfQogICAgIH07CiAKICAgICBhdXRvIGNvbnN1bWVYWVog
PSBbJnN5bWJvbFRhYmxlXShhdXRvJiBhcmdzKSB7IHJldHVybiBjb25zdW1lTnVtYmVyQWxsb3dp
bmdTeW1ib2xUYWJsZUlkZW50KGFyZ3MsIHN5bWJvbFRhYmxlKTsgfTsKQEAgLTI3NzEsMTEgKzI3
NzEsMTEgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0
ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclRva2VuUmEKIHsKICAgICBpZiAoYXJncy5wZWVrKCku
dHlwZSgpID09IElkZW50VG9rZW4pIHsKICAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1
bWVJZGVudDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlk
ZW50PENTU1ZhbHVlVG9wPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgwLiwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdF
KTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKDAuLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgICAgIGlmICgoaG9yaXpvbnRh
bCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAm
JiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkKLSAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDEwMC4sIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZSgxMDAuLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAg
ICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQotICAgICAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoNTAuLCBDU1NVbml0
VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoNTAuLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHJlc3VsdCA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2U6OkFsbCk7CkBAIC0y
ODEzLDcgKzI4MTMsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29s
b3JTdG9wKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NHcgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0b3AucG9zaXRpb24gPSBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7
CisgICAgc3RvcC5wb3NpdGlvbiA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUocG9zaXRpb24sIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIHN0b3AuY29sb3IgPSBjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKGFyZ3MsIGNvbnRleHQpOwogICAgIHJldHVy
biBzdG9wLmNvbG9yICYmIGFyZ3MuYXRFbmQoKTsKIH0KQEAgLTMxNTYsNyArMzE1Niw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgY29uc3QgQ1NTUGFyCiAgICAgYXV0byBwZXJjZW50YWdlID0gY29uc3VtZU51bWJl
clJhd09yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhhcmdzKTsKICAgICBpZiAoIXBlcmNlbnRhZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShjbGFtcFRvPGRvdWJsZT4oKnBlcmNl
bnRhZ2UsIDAsIDEpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgYXV0byBwZXJjZW50
YWdlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGNsYW1wVG88
ZG91YmxlPigqcGVyY2VudGFnZSwgMCwgMSksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIHJl
dHVybiBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLnJlbGVhc2VOb25O
dWxsKCksIHRvSW1hZ2VWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHBlcmNlbnRhZ2VW
YWx1ZSksIHByZWZpeGVkKTsKIH0KIApAQCAtMzQwNiw3ICszNDA2LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NGdW5jdGlvblZhbHVlPiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UKICAgICAgICAgICAgICAgICBib29sIGlzUGVyY2VudGFnZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqcGFyc2VkVmFsdWUpLmlzUGVyY2VudGFnZSgpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBtYXhBbGxvd2VkID0gaXNQZXJjZW50YWdlID8gMTAwLjAgOiAxLjA7
CiAgICAgICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqcGFyc2Vk
VmFsdWUpLmRvdWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKQotICAgICAgICAgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobWF4QWxsb3dlZCwgaXNQZXJj
ZW50YWdlID8gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFIDogQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpOworICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobWF4QWxsb3dlZCwgaXNQZXJjZW50YWdlID8gQ1NTVW5pdFR5cGU6OlBlcmNl
bnRhZ2UgOiBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJXb3JrZXJTYWZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJXb3JrZXJTYWZlLmNwcAppbmRleCBjOWU3Y2MxNTcyMTg2MjBiMzZkMGQwYjZlMmI2
ZmJhYTg0YzgwNzY3Li45OTU3OTFjYzg4NWMwMTAxZDI5YjMwNzMzMzM4MDk1MTYwODZmMjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29y
a2VyU2FmZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlcldvcmtlclNhZmUuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgUmVmUHRyPENTU0ZvbnRTdHls
ZVJhbmdlVmFsdWU+IGNvbnN1bWVGb250U3R5bGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBub3QgYWxsb3cgdGhl
IHVuaXRsZXNzIHplcm8uCiAgICAgaWYgKGF1dG8gZmlyc3RBbmdsZSA9IENTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZUFuZ2xlV29ya2VyU2FmZShyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
cG9vbCwgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpVbml0bGVzc1F1aXJrOjpGb3JiaWQsIENT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6VW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KSkgewotICAg
ICAgICBhdXRvIGZpcnN0QW5nbGVJbkRlZ3JlZXMgPSBmaXJzdEFuZ2xlLT5kb3VibGVWYWx1ZShD
U1NVbml0VHlwZTo6Q1NTX0RFRyk7CisgICAgICAgIGF1dG8gZmlyc3RBbmdsZUluRGVncmVlcyA9
IGZpcnN0QW5nbGUtPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpEZWcpOwogICAgICAgICBpZiAo
IUNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6aXNGb250U3R5bGVBbmdsZUluUmFuZ2UoZmlyc3RB
bmdsZUluRGVncmVlcykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYg
KHJhbmdlLmF0RW5kKCkpIHsKQEAgLTMwNCw3ICszMDQsNyBAQCBSZWZQdHI8Q1NTRm9udFN0eWxl
UmFuZ2VWYWx1ZT4gY29uc3VtZUZvbnRTdHlsZVJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLAogICAgICAgICBhdXRvIHNlY29uZEFuZ2xlID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Ojpjb25zdW1lQW5nbGVXb3JrZXJTYWZlKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBwb29sLCBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OlVuaXRsZXNzUXVpcms6OkZvcmJpZCwgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpVbml0bGVzc1plcm9RdWlyazo6QWxsb3cpOwogICAgICAgICBpZiAoIXNl
Y29uZEFuZ2xlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8gc2Vj
b25kQW5nbGVJbkRlZ3JlZXMgPSBzZWNvbmRBbmdsZS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19ERUcpOworICAgICAgICBhdXRvIHNlY29uZEFuZ2xlSW5EZWdyZWVzID0gc2Vjb25kQW5n
bGUtPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpEZWcpOwogICAgICAgICBpZiAoIUNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6aXNGb250U3R5bGVBbmdsZUluUmFuZ2Uoc2Vjb25kQW5nbGVJbkRl
Z3JlZXMpIHx8IGZpcnN0QW5nbGVJbkRlZ3JlZXMgPiBzZWNvbmRBbmdsZUluRGVncmVlcykKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IDg3NmM5OWJkMmU4MDc5ODM3OGY5NTg3MzFk
NDIzNGEyNDhmNmI2YjguLjYyZDBiNGE2MjAyZjVmMzU3MjQ2MzZmOGRiYzJmNzgzM2Q0MGRkYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVDb2xv
bihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyCiAKIHZvaWQgTWVkaWFR
dWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVWYWx1ZShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsK
LSAgICBpZiAodHlwZSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tlbi51bml0VHlwZSgpID09IENT
U1VuaXRUeXBlOjpDU1NfVU5LTk9XTikgeworICAgIGlmICh0eXBlID09IERpbWVuc2lvblRva2Vu
ICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlVua25vd24pIHsKICAgICAgICAg
cmFuZ2UuY29uc3VtZSgpOwogICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7CiAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRy
aWJ1dGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0
ZVBhcnNlci5jcHAKaW5kZXggNjQ4YjQ5YTM5ZjU5YWJlODc3YzFiYTg0OWYxNTljODgzODUxYTRm
Zi4uMjVkODBhNzZkMjllYTFjYjhmZDVmYWExZWJlOGMzZGY1YzMyODYwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgZmxvYXQgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OmNvbXB1dGVMZW5ndGgoZG91
YmxlIHZhbHVlLCBDU1NVbml0VHlwZSB0eXBlLCBjb25zdAogICAgIC8vIHRoZSBwb2ludGVyIHRv
IGl0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHVuaXQgZXZhbHVhdGlvbi4gVGhpcyBpcyBhY2Nl
cHRpYmxlIGJlY2F1c2UgdGhlIHN0eWxlIGFsd2F5cyBjb21lcyBmcm9tIHRoZQogICAgIC8vIFJl
bmRlclZpZXcsIHdoaWNoIGhhcyBpdHMgZm9udCBpbmZvcm1hdGlvbiBoYXJkY29kZWQgaW4gcmVz
b2x2ZUZvckRvY3VtZW50KCkgdG8gYmUgLXdlYmtpdC1zdGFuZGFyZCwgd2hvc2Ugb3BlcmF0aW9u
cwogICAgIC8vIGRvbid0IHJlcXVpcmUgYSBmb250IHNlbGVjdG9yLgotICAgIGlmICh0eXBlID09
IENTU1VuaXRUeXBlOjpDU1NfRVhTIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19DSFMpIHsK
KyAgICBpZiAodHlwZSA9PSBDU1NVbml0VHlwZTo6RXhzIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6
OkNocykgewogICAgICAgICBSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IgPSBzdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwogICAgICAgICBzdHlsZS5mb250Q2FzY2Fk
ZSgpLnVwZGF0ZShudWxscHRyKTsKICAgICAgICAgZmxvYXQgcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCB0eXBlLCB2
YWx1ZSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgdW5zaWduZWQgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6
OmVmZmVjdGl2ZVNpemVEZWZhdWx0VmFsdWUoKQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgcmV0
dXJuIGNsYW1wVG88ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZSh7ICZzdHlsZSwgJnN0eWxlLCByZW5kZXJlci0+cGFyZW50U3R5bGUoKSwgcmVuZGVy
ZXIgfSwgQ1NTVW5pdFR5cGU6OkNTU19WVywgMTAwLjApKTsKKyAgICByZXR1cm4gY2xhbXBUbzxm
bG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKHsgJnN0
eWxlLCAmc3R5bGUsIHJlbmRlcmVyLT5wYXJlbnRTdHlsZSgpLCByZW5kZXJlciB9LCBDU1NVbml0
VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlV2lkdGgsIDEwMC4wKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1N0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9TdHls
ZVByb3BlcnR5TWFwUmVhZE9ubHkuY3BwCmluZGV4IDJiNjJiODE1YjQ4OWM0ZDVmM2IxZTJjNGZm
ZWM4NGU3YzExMGJiODguLmJmZTAxZjhiZDdlMmFhNGU5YTU5YTk5ZjgxNjY0ZjkwZGYzMTAyZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1N0eWxlUHJvcGVydHlNYXBS
ZWFkT25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vU3R5bGVQcm9wZXJ0
eU1hcFJlYWRPbmx5LmNwcApAQCAtNDksNyArNDksNyBAQCBSZWZQdHI8Q1NTU3R5bGVWYWx1ZT4g
U3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5OjpyZWlmeVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgRG9j
dQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBQcm9wZXJseSByZWlm
eSBhbGwgbGVuZ3RoIHZhbHVlcy4KLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkucHJpbWl0aXZlVHlwZSgp
ID09IENTU1VuaXRUeXBlOjpDU1NfUFgpCisgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6UHgpCiAgICAgICAgIHJldHVybiBDU1NVbml0VmFsdWU6OmNy
ZWF0ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5kb3VibGVWYWx1ZSgpLCAi
cHgiKTsKIAogICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPigqdmFsdWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA1MjM3Y2ZjMGY5NTc1ZDRl
Y2FhZDNiOWFhNmE5MzM4ZWMwNmNkZDhjLi44OTQ5MzMyYzFhZDJiOThhNTJmZGY4MDE5OWZhNWZh
ODNhYjk1ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVs
YXRpdmVGb250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKICAgICAgICAgICAgIGN1
cnJlbnRGb250U2l6ZSA9IGNvbXB1dGVkRm9udFNpemUobm9kZS5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGN1cnJlbnRGb250U2l6ZSAhPSBkZXNpcmVkRm9udFNpemUpIHsKLSAgICAg
ICAgICAgIGlubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGRlc2lyZWRGb250U2l6ZSwgQ1NTVW5p
dFR5cGU6OkNTU19QWCksIGZhbHNlKTsKKyAgICAgICAgICAgIGlubGluZVN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZVZhbHVlKGRlc2lyZWRGb250U2l6ZSwgQ1NTVW5pdFR5cGU6OlB4KSwgZmFsc2UpOwogICAgICAg
ICAgICAgc2V0Tm9kZUF0dHJpYnV0ZSgqZWxlbWVudCwgc3R5bGVBdHRyLCBpbmxpbmVTdHlsZS0+
YXNUZXh0KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbmxpbmVTdHlsZS0+aXNFbXB0eSgp
KSB7CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0
ZWRGb250U2l6ZShOb2RlKiBub2RlKQogICAgIGF1dG8gdmFsdWUgPSBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yKG5vZGUpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSk7CiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAg
cmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmZsb2F0VmFsdWUoQ1NT
VW5pdFR5cGU6OlB4KTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6am9pbkNoaWxkVGV4
dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAxYjAzNjhh
ZjFkMDI5NWMxNzc5N2E0Y2FlNDljMTkwYmM3NjgxNDRiLi5mNjUwMzFmYzA4NWFiZmNiNTRmY2Zm
ODZiZGZmN2RlNzAyZDZhNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCkBAIC0xOTA5LDcgKzE5MDksNyBAQCBzdGF0aWMgYm9vbCBpc0NTU1ZhbHVlTGVuZ3RoKENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShE
b2N1bWVudCYgZG9jdW1lbnQsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vbCBzaG91bGRV
c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwgTGVnYWN5Rm9udFNpemVNb2RlIG1vZGUpCiB7CiAgICAg
aWYgKGlzQ1NTVmFsdWVMZW5ndGgodmFsdWUpKSB7Ci0gICAgICAgIGludCBwaXhlbEZvbnRTaXpl
ID0gdmFsdWUtPmludFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBpbnQgcGl4
ZWxGb250U2l6ZSA9IHZhbHVlLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBp
bnQgbGVnYWN5Rm9udFNpemUgPSBTdHlsZTo6bGVnYWN5Rm9udFNpemVGb3JQaXhlbFNpemUocGl4
ZWxGb250U2l6ZSwgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIGRvY3VtZW50KTsKICAg
ICAgICAgLy8gVXNlIGxlZ2FjeSBmb250IHNpemUgb25seSBpZiBwaXhlbCB2YWx1ZSBtYXRjaGVz
IGV4YWN0bHkgdG8gdGhhdCBvZiBsZWdhY3kgZm9udCBzaXplLgogICAgICAgICBpbnQgY3NzUHJp
bWl0aXZlRXF1aXZhbGVudCA9IGxlZ2FjeUZvbnRTaXplIC0gMSArIENTU1ZhbHVlWFNtYWxsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcAppbmRl
eCBhOWNhMGExYWI2YTIzMTM4ZWI3ZTNkZTI3YjFkYzUxYjc1OTNiNTM3Li40ZDZkOTRhNTg2Y2Vi
ZDgxYmNmOTQ5ZTk3ZjA3OTM5MWY1YTUyYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcApAQCAtNzEsMTAgKzcxLDEwIEBAIFJlZjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBGb250Q2hhbmdlczo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkg
Y29uc3QKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
Km1fYm9sZCA/IENTU1ZhbHVlQm9sZCA6IENTU1ZhbHVlTm9ybWFsKTsKIAogICAgIGlmIChtX2Zv
bnRTaXplKQotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKCptX2ZvbnRTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoKm1fZm9udFNpemUsIENTU1VuaXRUeXBlOjpQeCkpOwogCiAg
ICAgaWYgKG1fZm9udFNpemVEZWx0YSkKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSwgY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKCptX2Zv
bnRTaXplRGVsdGEsIENTU1VuaXRUeXBlOjpDU1NfUFgpKTsKKyAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSwgY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKCptX2ZvbnRTaXplRGVsdGEsIENTU1VuaXRUeXBlOjpQeCkpOwogCiAgICAgcmV0dXJu
IHN0eWxlOwogfQpAQCAtODYsOSArODYsOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Y3NzVmFsdWVMaXN0Rm9yU2hhZG93KGNvbnN0IEZvbnRTaGFkb3cmIHNoYWRvdykKIAogICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBhdXRv
JiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwotICAgIGF1dG8gd2lk
dGggPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93Lm9mZnNldC53aWR0aCgpLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKLSAgICBhdXRvIGhlaWdodCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzaGFkb3cub2Zmc2V0LmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICBh
dXRvIGJsdXJSYWRpdXMgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93LmJsdXJSYWRp
dXMsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGF1dG8gd2lkdGggPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc2hhZG93Lm9mZnNldC53aWR0aCgpLCBDU1NVbml0VHlwZTo6UHgpOworICAg
IGF1dG8gaGVpZ2h0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5vZmZzZXQuaGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpQeCk7CisgICAgYXV0byBibHVyUmFkaXVzID0gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5ibHVyUmFkaXVzLCBDU1NVbml0VHlwZTo6UHgpOwogICAg
IGF1dG8gY29sb3IgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93LmNvbG9yKTsKICAg
ICBsaXN0LT5wcmVwZW5kKENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyUmFkaXVzKSwgeyB9LCB7IH0sIFdURk1vdmUoY29s
b3IpKSk7CiAgICAgcmV0dXJuIGxpc3QucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNGY0NGJhODU0MTBhMTZhOTk0ZTI1Y2EwNmU4
ODU0YzZhMmQ3ZGJlNi4uOThmNDc0ZDFlYjVkZDZjM2JkZjk1ODliZmYyNzVjMDNjNjBkOWEyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAt
NTU0LDggKzU1NCw4IEBAIHN0YXRpYyBib29sIHN0cmluZ0Zyb21DU1NWYWx1ZShDU1NWYWx1ZSYg
dmFsdWUsIFN0cmluZyYgcmVzdWx0KQogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgaXNTdHJpbmdUeXBlKENTU1VuaXRUeXBlKT8K
ICAgICAgICAgQ1NTVW5pdFR5cGUgcHJpbWl0aXZlVHlwZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkucHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlVHlw
ZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyB8fCBwcmltaXRpdmVUeXBlID09IENTU1VuaXRU
eXBlOjpDU1NfVVJJCi0gICAgICAgICAgICB8fCBwcmltaXRpdmVUeXBlID09IENTU1VuaXRUeXBl
OjpDU1NfSURFTlQgfHwgcHJpbWl0aXZlVHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0FUVFIpIHsK
KyAgICAgICAgaWYgKHByaW1pdGl2ZVR5cGUgPT0gQ1NTVW5pdFR5cGU6OlN0cmluZyB8fCBwcmlt
aXRpdmVUeXBlID09IENTU1VuaXRUeXBlOjpVUkkKKyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVR5
cGUgPT0gQ1NTVW5pdFR5cGU6OklkZW50IHx8IHByaW1pdGl2ZVR5cGUgPT0gQ1NTVW5pdFR5cGU6
OkF0dHIpIHsKICAgICAgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLmNzc1RleHQo
KTsKICAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZS5sZW5ndGgoKSkgewogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHN0cmluZ1ZhbHVlOwpAQCAtNjkxLDI2ICs2OTEsMjYgQEAgc3RhdGljIGlu
bGluZSBib29sIGZsb2F0VmFsdWVGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUm
IHByaW1pdGl2ZVZhbHUKIHsKICAgICAvLyBGSVhNRTogVXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlVmFsdWUuCiAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBlKCkp
IHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgICAgIHJlc3VsdCA9IHByaW1p
dGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6UHg6CisgICAgICAgIHJlc3VsdCA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1BUOgotICAgICAgICByZXN1bHQgPSA0ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRW
YWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BUKSAvIDM7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6
CisgICAgICAgIHJlc3VsdCA9IDQgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRU
eXBlOjpQdCkgLyAzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUEM6Ci0gICAgICAgIHJlc3VsdCA9IDE2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX1BDKTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICAg
ICAgcmVzdWx0ID0gMTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpQ
Yyk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DTToK
LSAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRU
eXBlOjpDU1NfUEMpIC8gMi41NDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICAgICAg
cmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpQYykg
LyAyLjU0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
TU06Ci0gICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BDKSAvIDI1LjQ7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TW06CisgICAg
ICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6
UGMpIC8gMjUuNDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1E6Ci0gICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShD
U1NVbml0VHlwZTo6Q1NTX1BDKSAvICgyNS40ICogNC4wKTsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpROgorICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NT
VW5pdFR5cGU6OlBjKSAvICgyNS40ICogNC4wKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2
ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19JTik7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6SW46CisgICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6SW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4
IDgwMTEzMGE3N2Q3NzBjMjJmMTRkNTUzODJmZmNiYTZmZWVkNTgyNDAuLmE4MDZhNjhhMWNlMTE0
ODU1ODY0NTE5MzMwNTEyZTkzY2EwZTFhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdW5zaWduZWQgSFRNTEVsZW1lbnQ6OnBhcnNlQm9yZGVy
V2lkdGhBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpIGNvbnN0CiAKIHZvaWQgSFRN
TEVsZW1lbnQ6OmFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7Ci0gICAgYWRkUHJvcGVydHlU
b1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBw
YXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKHZhbHVlKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cisg
ICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoLCBwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKHZhbHVlKSwgQ1NTVW5pdFR5
cGU6OlB4KTsKICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1ZhbHVlU29saWQpOwogfQogCkBAIC02MzgsOCAr
NjM4LDggQEAgdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhl
aWdodEF0dHJpYnV0ZXNUb1N0eWxlKFN0cmluZ1ZpZXcKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byByYXRpb0xpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7Ci0g
ICAgcmF0aW9MaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZShkaW1lbnNpb25XaWR0aC0+bnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAg
IHJhdGlvTGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUo
ZGltZW5zaW9uSGVpZ2h0LT5udW1iZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAg
cmF0aW9MaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShk
aW1lbnNpb25XaWR0aC0+bnVtYmVyLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgcmF0aW9M
aXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShkaW1lbnNp
b25IZWlnaHQtPm51bWJlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKSk7CiAgICAgbGlzdC0+YXBwZW5kKHJhdGlvTGlzdCk7CkBAIC0xMDIzLDEzICsxMDIzLDEz
IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0eWxlKE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoZGlt
ZW5zaW9uVmFsdWUtPnR5cGUgPT0gSFRNTERpbWVuc2lvbjo6VHlwZTo6UGVyY2VudGFnZSkgewog
ICAgICAgICBpZiAoYWxsb3dQZXJjZW50YWdlID09IEFsbG93UGVyY2VudGFnZTo6WWVzKQotICAg
ICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBwcm9w
ZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOworICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0
eWxlLCBwcm9wZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBDU1NVbml0VHlwZTo6UGVy
Y2VudGFnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHVzZUNTU1BYID09IFVz
ZUNTU1BYQXNVbml0VHlwZTo6WWVzKQotICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
YWxIaW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIGRpbWVuc2lvblZhbHVlLT5udW1iZXIsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxI
aW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIGRpbWVuc2lvblZhbHVlLT5udW1iZXIsIENTU1Vu
aXRUeXBlOjpQeCk7CiAgICAgZWxzZQotICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
YWxIaW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIGRpbWVuc2lvblZhbHVlLT5udW1iZXIsIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBD
U1NVbml0VHlwZTo6TnVtYmVyKTsKIH0KIAogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw0
L3NnbWwvZHRkLmh0bWwjTGVuZ3RoLCBpbmNsdWRpbmcgcGl4ZWwgYW5kIHBlcmNlbnRhZ2UgdmFs
dWVzLgpAQCAtMTUwMCw4ICsxNTAwLDggQEAgdm9pZCBIVE1MRWxlbWVudDo6dXBkYXRlV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHIKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gbGluZUJvdW5kcyA9IHJvdGF0ZWRCb3Vu
ZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihsaW5lUXVhZCwgMC4wMSk7Ci0gICAg
ICAgIGxpbmVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0
aCwgbGluZUJvdW5kcy5zaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwotICAgICAg
ICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0
LCBsaW5lQm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAg
ICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IGxpbmVCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6UHgpOworICAgICAgICBsaW5l
Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBsaW5l
Qm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAgIGxpbmVDb250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VT
dHJpbmcoCiAgICAgICAgICAgICAidHJhbnNsYXRlKCJfcywKICAgICAgICAgICAgIHN0ZDo6cm91
bmQobGluZUJvdW5kcy5jZW50ZXIueCgpIC0gKGxpbmVCb3VuZHMuc2l6ZS53aWR0aCgpIC8gMikp
LCAicHgsICJfcywKQEAgLTE1OTEsOCArMTU5MSw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0
ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiBy
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29tZSB1cCB3aXRoIGEgd2F5IHRvIGNvYWxl
c2NlIHRoZSBib3VuZGluZyBxdWFkcyBpbnRvIG9uZSBvciBtb3JlIHJvdGF0ZWQgcmVjdHMgd2l0
aCB0aGUgc2FtZSBhbmdsZSBvZiByb3RhdGlvbi4KICAgICAgICAgYXV0byB0YXJnZXRRdWFkID0g
Y29udmVydFRvQ29udGFpbmVyQ29vcmRpbmF0ZXMoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFk
cy5maXJzdCgpKTsKICAgICAgICAgYXV0byB0YXJnZXRCb3VuZHMgPSByb3RhdGVkQm91bmRpbmdS
ZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24odGFyZ2V0UXVhZCwgMC4wMSk7Ci0gICAgICAg
IGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdpZHRoLCB0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
LSAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5SGVpZ2h0LCB0YXJnZXRCb3VuZHMuc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CisgICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCB0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NV
bml0VHlwZTo6UHgpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHRhcmdldEJvdW5kcy5zaXplLmhlaWdodCgp
LCBDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VTdHJpbmcoCiAgICAg
ICAgICAgICAidHJhbnNsYXRlKCJfcywKICAgICAgICAgICAgIHN0ZDo6cm91bmQodGFyZ2V0Qm91
bmRzLmNlbnRlci54KCkgLSAodGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSAvIDIpKSwgInB4LCAi
X3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCBjZWY2ZDJi
YTczODA1ZTZhMDNjMGY3OGI2MWE0NDljMWU1ZWMzNDQzLi42NTAyZjczNGRlY2VhMDgyZTI1NjBh
NjZjNzY2YzFiYjkyZjBhNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0UHJl
c2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW0KIHsKICAgICBp
ZiAobmFtZSA9PSBoaWRkZW5BdHRyKSB7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2YWx1ZSwgInllcyIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLCAidHJ1ZSIpKSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
YWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDAsIENTU1VuaXRUeXBlOjpDU1Nf
UFgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgMCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5V2lkdGgsIDAsIENTU1VuaXRUeXBlOjpQeCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCAwLCBDU1NV
bml0VHlwZTo6UHgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKG5hbWUs
IHZhbHVlLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAppbmRleCBj
MzdlM2IxY2Y4MGJiNzQyMDg1MjI2YzgzNWRhYzA2N2Y2ZTM4M2U0Li45YmRmNTBlYTliM2VlODQx
YjE3NGE1YjNhYmQ2ZWU1ZTA1M2FkZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5jcHAKQEAgLTY0LDE4ICs2NCwxOCBAQCB2b2lkIEhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RQcmVz
ZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiB7CiAgICAg
aWYgKG5hbWUgPT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2YWx1ZSwgImxlZnQiKSkgewotICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAsIENTU1VuaXRUeXBl
OjpQeCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJyaWdodCIpKSB7
CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGFkZFBy
b3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwgMCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIDAs
IENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRvKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB3aWR0aEF0dHIpIHsKICAgICAgICAg
aWYgKGF1dG8gdmFsdWVJbnRlZ2VyID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSk7IHZhbHVlSW50
ZWdlciAmJiAhKnZhbHVlSW50ZWdlcikKLSAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgMSwgQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDEsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eVdpZHRoLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbG9yQXR0cikgewpAQCAt
OTMsOSArOTMsOSBAQCB2b2lkIEhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhp
bnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgfSBlbHNlIGlmIChuYW1l
ID09IHNpemVBdHRyKSB7CiAgICAgICAgIGludCBzaXplID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1
ZSkudmFsdWVfb3IoMCk7CiAgICAgICAgIGlmIChzaXplIDw9IDEpCi0gICAgICAgICAgICBhZGRQ
cm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tV2lkdGgsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVdpZHRoLCAwLCBDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
SGVpZ2h0LCBzaXplIC0gMiwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICBhZGRQ
cm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0
LCBzaXplIC0gMiwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVs
ZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKG5hbWUsIHZhbHVl
LCBzdHlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmlu
ZGV4IGFjZTk2M2U3ZDAzNzZiMzAwZDY4ZjE4ZTY0YzJkMjE1ZjYxZGExYzAuLmE4MzE3YTQyNWUz
YjY2MDIzYWE2NjQ2MjE4MWY3Nzk5NTJlY2U1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1l
bnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9uYWwgaGludCB0aGF0IHRoZSBib3JkZXIgc2hv
dWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KICAgICAgICAgaWYgKCFwYXJzZUhUTUxJbnRlZ2Vy
KHZhbHVlKS52YWx1ZV9vcigwKSkgewogICAgICAgICAgICAgLy8gQWRkIGEgcnVsZSB0aGF0IG51
bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgotICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgMCwgQ1NTVW5pdFR5cGU6
OlB4KTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDZkNjlm
MDdkNjUwZmYwODBiZDYyNjkzZjYzMjhjN2FkZjAyYzFlNjEuLmViMWVhMWU2NTllMWE5MTA4OWQw
ZWU3ZmU4MDA5ZDVjMmQxOWVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMjEwMiwxNCArMjEwMiwxNCBAQCBzdGF0aWMgUmVmPENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+IGF1dG9GaWxsU3Ryb25nUGFzc3dvcmRNYXNrSW1hZ2UoKQogewogICAgIENTU0dy
YWRpZW50Q29sb3JTdG9wIGZpcnN0U3RvcDsKICAgICBmaXJzdFN0b3AuY29sb3IgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUNvbG9yVmFsdWUoQ29sb3I6OmJsYWNrKTsKLSAgICBm
aXJzdFN0b3AucG9zaXRpb24gPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVl
KDUwLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgIGZpcnN0U3RvcC5wb3NpdGlv
biA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoNTAsIENTU1VuaXRUeXBl
OjpQZXJjZW50YWdlKTsKIAogICAgIENTU0dyYWRpZW50Q29sb3JTdG9wIHNlY29uZFN0b3A7CiAg
ICAgc2Vjb25kU3RvcC5jb2xvciA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlQ29s
b3JWYWx1ZShDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc2Vjb25kU3RvcC5wb3NpdGlv
biA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoMTAwLCBDU1NVbml0VHlw
ZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgIHNlY29uZFN0b3AucG9zaXRpb24gPSBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDEwMCwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2Up
OwogCiAgICAgYXV0byBncmFkaWVudCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShD
U1NHcmFkaWVudFJlcGVhdDo6Tm9uUmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGU6OkNTU0xpbmVh
ckdyYWRpZW50KTsKLSAgICBncmFkaWVudC0+c2V0QW5nbGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZSg5MCwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKKyAgICBncmFkaWVu
dC0+c2V0QW5nbGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSg5MCwgQ1NT
VW5pdFR5cGU6OkRlZykpOwogICAgIGdyYWRpZW50LT5hZGRTdG9wKFdURk1vdmUoZmlyc3RTdG9w
KSk7CiAgICAgZ3JhZGllbnQtPmFkZFN0b3AoV1RGTW92ZShzZWNvbmRTdG9wKSk7CiAgICAgZ3Jh
ZGllbnQtPmRvbmVBZGRpbmdTdG9wcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAKaW5kZXggMjI5NTRjNTY4NjFhMTJjMTBhMDYwNGNhMjAzOWY4OWNjMjY4OTEyYi4u
ZGQ0ZjEzODY2NTliMzE1MDU5ZDRjODI0MzdmZmI4MTBhOWYyZDEwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHZv
aWQgc2V0VmFsdWVDbGFzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTE1ldGVyRWxlbWVudDo6
R2F1Z2VSZWdpb24gZ2EKIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRFbGVtZW50U3RhdGVD
aGFuZ2UoKQogewotICAgIG1fdmFsdWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgdmFsdWVSYXRpbygpKjEwMCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
KyAgICBtX3ZhbHVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHZh
bHVlUmF0aW8oKSoxMDAsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICBzZXRWYWx1ZUNs
YXNzKCptX3ZhbHVlLCBnYXVnZVJlZ2lvbigpKTsKIAogICAgIGlmIChSZW5kZXJNZXRlciogcmVu
ZGVyID0gcmVuZGVyTWV0ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCmluZGV4IGM2YzM2YWU2N2Y1MDM5NzEzNmQ3MGZjMWYxYmUzMDBhNGIyY2Y2MzguLjVhZGRk
OWMyZDQxYTQwNDJlYjJlMTk2MjlmM2I0YmY5MzExZTQxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgSFRNTFRhYmxl
RWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtCiAgICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQogICAgICAgICBhZGRI
VE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIHZhbHVlKTsKICAgICBl
bHNlIGlmIChuYW1lID09IGJvcmRlckF0dHIpIAotICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIHBhcnNlQm9y
ZGVyV2lkdGhBdHRyaWJ1dGUodmFsdWUpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoLCBwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKHZhbHVlKSwgQ1NTVW5pdFR5cGU6
OlB4KTsKICAgICBlbHNlIGlmIChuYW1lID09IGJvcmRlcmNvbG9yQXR0cikgewogICAgICAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIHZhbHVlKTsKQEAgLTQ5NCwxMiArNDk0LDEyIEBA
IFJlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxT
dHlsZSgpIGNvbnN0CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yLCBjc3NWYWx1ZVBvb2wuY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU29saWRCb3JkZXJzOgotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKDEsIENTU1Vu
aXRUeXBlOjpDU1NfUFgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgsIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgxLCBDU1NVbml0VHlwZTo6UHgp
KTsKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTb2xpZCkpOwogICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgY3NzVmFsdWVQb29s
LmNyZWF0ZUluaGVyaXRlZFZhbHVlKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluc2V0
Qm9yZGVyczoKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGgsIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgxLCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7Cisg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoMSwgQ1NTVW5pdFR5cGU6OlB4KSk7CiAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlSW5zZXQpKTsKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGNzc1ZhbHVlUG9vbC5jcmVhdGVJbmhlcml0ZWRWYWx1
ZSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MDksNyArNTA5LDcgQEAgUmVmPFN0eWxlUHJvcGVy
dGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3QKICAg
ICB9CiAKICAgICBpZiAobV9wYWRkaW5nKQotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlQYWRkaW5nLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9wYWRkaW5nLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVBhZGRpbmcsIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1VuaXRUeXBl
OjpQeCkpOwogCiAgICAgcmV0dXJuIHN0eWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAppbmRleCBjZmViMDQzZjNjZjIwZjY3ZmI2ZmIwMmFjMTJkNDFkZTc4
ZjMwZWVhLi44OTA5MzY0OWUzZGY0NTM0NzQ4NjMwZTQ3ODNiMTVmNDdlYzM2NTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTY4LDEzICsxNjgsMTMg
QEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YWRqdXN0QnViYmxlUG9zaXRpb24oKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3AsIGhvc3RZICsgaG9zdFJlY3QuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgp
OworICAgIG1fYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBo
b3N0WSArIGhvc3RSZWN0LmhlaWdodCgpLCBDU1NVbml0VHlwZTo6UHgpOwogICAgIC8vIFRoZSAn
bGVmdCcgdmFsdWUgb2YgOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93LgogICAgIGNv
bnN0IGludCBidWJibGVBcnJvd1RvcE9mZnNldCA9IDMyOwogICAgIGRvdWJsZSBidWJibGVYID0g
aG9zdFg7CiAgICAgaWYgKGhvc3RSZWN0LndpZHRoKCkgLyAyIDwgYnViYmxlQXJyb3dUb3BPZmZz
ZXQpCiAgICAgICAgIGJ1YmJsZVggPSBzdGQ6Om1heChob3N0WCArIGhvc3RSZWN0LndpZHRoKCkg
LyAyIC0gYnViYmxlQXJyb3dUb3BPZmZzZXQsIDAuMCk7Ci0gICAgbV9idWJibGUtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBidWJibGVYLCBDU1NVbml0VHlwZTo6Q1NT
X1BYKTsKKyAgICBtX2J1YmJsZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxl
ZnQsIGJ1YmJsZVgsIENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIHZvaWQgVmFsaWRhdGlvbk1lc3Nh
Z2U6OmJ1aWxkQnViYmxlVHJlZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmluZGV4IGRkY2FiN2QwMzQ5ZDNiYTdiMjgxNmUwNTBl
ZWU4OGJiZTFkZTM3MWUuLjc3NTNiMzIwNWQ2M2NhZmU4NDU4NmU1OTQ4ODAzNTU0YzkzNTkwMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCkBAIC0xNzcsOSArMTc3LDkgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNp
dExpdGVyYWwoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIC8vIHByZXZlbnQgc2VsZWN0ZWQgZmll
bGRzIGZyb20gYXBwZWFyaW5nIHNxdWlzaGVkLiBUbyBmaXgsIHB1bGwgZmllbGRzIGNsb3Nlcgog
ICAgIC8vIHRvZ2V0aGVyIGJ5IGFwcGx5aW5nIGEgbmVnYXRpdmUgbWFyZ2luLgogICAgIGlmICh0
ZXh0LnN0YXJ0c1dpdGgoJyAnKSkKLSAgICAgICAgZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0LCAtMSwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgICAgIGVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlN
YXJnaW5JbmxpbmVTdGFydCwgLTEsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgaWYgKHRleHQuZW5k
c1dpdGgoJyAnKSkKLSAgICAgICAgZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmdpbklubGluZUVuZCwgLTEsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAg
ICBlbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luSW5saW5l
RW5kLCAtMSwgQ1NTVW5pdFR5cGU6OlB4KTsKIAogICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCksIHRleHQpKTsKICAgICBtX2VkaXRF
bGVtZW50LmZpZWxkc1dyYXBwZXJFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IGVjZThmNGNjNGZjYjY1NjFj
NGYwNzkxNjUzYWJlMGQxNTcxYTI5Y2QuLmM4OTE5NTZhODEzOTcwNWQ0YjUzY2RlMGJlNzRkOTU3
Yjk3OWIzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCkBAIC0y
NzIsNyArMjcyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
Ojp1cGRhdGVUZXh0U3Ryb2tlU3R5bGUoKQogCiAgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8g
c2V0IHRoaXMgcHJvcGVydHkgaW4gdGhlIHN0eWxlc2hlZXQgbGlrZSB0aGUgb3RoZXIgdXNlciBz
dHlsZSBwcmVmZXJlbmNlcywgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5ODc0Pi4KICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmdyb3VwKCkuZW5zdXJl
Q2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvblN0cm9rZVdpZHRoRm9yRm9udChtX2ZvbnRTaXpl
LCBsYW5ndWFnZSwgc3Ryb2tlV2lkdGgsIGltcG9ydGFudCkpCi0gICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgsIENTU1VuaXRU
eXBlOjpDU1NfUFgsIGltcG9ydGFudCk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlTdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgsIENTU1VuaXRUeXBlOjpQeCwgaW1w
b3J0YW50KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
Ojp1cGRhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklmTmVlZGVkKCkKQEAgLTMxOSwxMCArMzE5
LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRl
VGV4dFRyYWNrU3R5bGUoKQogewogICAgIGlmIChtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uKSB7
CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NT
VmFsdWVBYnNvbHV0ZSk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS53aWR0aCgpLCBDU1NVbml0VHlwZTo6
Q1NTX1BYKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdo
dCwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCAwLCBD
U1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRvcCwgMCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS53
aWR0aCgpLCBDU1NVbml0VHlwZTo6UHgpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBD
U1NVbml0VHlwZTo6UHgpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgMCwgQ1NTVW5pdFR5cGU6OlB4KTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVRvcCwgMCwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHAKaW5kZXggZjU3NGYwNzQ3ZDE5YWIwOGIxMGE0NWYzMTllNzg0M2Fh
MjRiMjZhMC4uZWM0YWY0Njk1OWYyOWFhMTAwZDY4Y2FhOTNlZDUxNThlY2ZhZTkxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIFByb2dyZXNzVmFsdWVFbGVtZW50OjpQcm9ncmVzc1ZhbHVl
RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHZvaWQgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6
OnNldFdpZHRoUGVyY2VudGFnZShkb3VibGUgd2lkdGgpCiB7Ci0gICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5U
QUdFKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHdpZHRo
LCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiB9CiAKIFJlZjxQcm9ncmVzc0lubmVyRWxlbWVu
dD4gUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAppbmRleCA5MzM0NzIyNmU5NmYyMTk3YzVmNTZlZDcyNjExNDY2OWJiMTBhN2Y3Li5k
ODcwM2JlYmM1MjNkYjQ2NzNmZWVjMmM2ZjYzNWMwZDExZDM0MTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoYwogICAgICAgICAvLyBT
ZXQgImZsZXgtYmFzaXM6IDFlbSIuIE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aEludCgpIG9ubHkgbmVlZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0
byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGlu
IGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBl
bGVtZW50IHN0eWxlLCB0aGUgcGFyZW50IGVsZW1lbnQgc3R5bGUsIGFuZCB0aGUgcmVuZGVyIHZp
ZXcuCi0gICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBD
U1NVbml0VHlwZTo6Q1NTX0VNUyk7CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgxLCBDU1NVbml0VHlwZTo6RW1zKTsKICAgICAgICAgaW50IHBpeGVscyA9
IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgeyBu
ZXdTdHlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxv
cHQgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5zZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCmluZGV4IDg0Mzk3NTlmODUxMzVm
M2Q0ZjBhODY3MTYzOGY5M2NmYTU1OTdjZGEuLjRkNGE3ZmMzNTRmODhlMzgzZmE4NDQzYzc0NTcx
ZDgyZmEyZWI2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQ
bGFjZWhvbGRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCkBAIC00Niw4ICs0Niw4IEBAIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBMYXlvdXRTCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXks
IHNpemUud2lkdGgoKSA/IENTU1ZhbHVlSW5saW5lQmxvY2sgOiBDU1NWYWx1ZUJsb2NrLCBmYWxz
ZSk7CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24s
IENTU1ZhbHVlVG9wLCBmYWxzZSk7CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlSGlkZGVuLCB0cnVlKTsKLSAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Ci0gICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6
ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpQeCk7Cisg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6ZS5oZWlnaHQo
KSwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogYXV0byBUZXh0UGxhY2Vob2xkZXJFbGVtZW50Ojpp
bnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5l
cmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5j
cHAKaW5kZXggNWU1OGM3OTc0YzM5MWI4ZmQ1YWFlMzA1ZjU0ZDkxYWU5Y2QwNmMxNi4uY2M3NWJm
NGQ1ZWQ0YzFmNTE2NmIzYjdmYmUwY2FmMjdlMjkxYTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCkBAIC04OCwxMSArODgsMTEg
QEAgdm9pZCBUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVz
KGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBDU1NWYWx1ZUlEIGFsaWdubWVudCA9IGN1
ZS0+Z2V0Q1NTQWxpZ25tZW50KCk7CiAgICAgZmxvYXQgc2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0
PihjdWUtPmdldENTU1NpemUoKSk7CiAgICAgaWYgKGN1ZS0+dXNlRGVmYXVsdFBvc2l0aW9uKCkp
IHsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvdHRvbSwgMCwg
Q1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
KyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvdHRvbSwgMCwgQ1NT
VW5pdFR5cGU6OlB4KTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSwgMS4wLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRp
Y19jYXN0PGZsb2F0Pih0ZXh0UG9zaXRpb24pLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
OwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNf
Y2FzdDxmbG9hdD4obGluZVBvc2l0aW9uKSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
KyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19j
YXN0PGZsb2F0Pih0ZXh0UG9zaXRpb24pLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAg
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGZs
b2F0PihsaW5lUG9zaXRpb24pLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAKICAgICAgICAg
ZG91YmxlIGF1dGhvckZvbnRTaXplID0gdmlkZW9TaXplLmhlaWdodCgpICogY3VlLT5iYXNlRm9u
dFNpemVSZWxhdGl2ZVRvVmlkZW9IZWlnaHQoKSAvIDEwMC4wOwogICAgICAgICBpZiAoIWF1dGhv
ckZvbnRTaXplKQpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBUZXh0VHJhY2tDdWVHZW5lcmlj
Qm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkK
ICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBmb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZz
KCkgLyBhdXRob3JGb250U2l6ZTsKICAgICAgICAgZG91YmxlIG5ld0N1ZVNpemUgPSBzdGQ6Om1p
bihzaXplICogbXVsdGlwbGllciwgMTAwLjApOwogICAgICAgICBpZiAoY3VlLT5nZXRXcml0aW5n
RGlyZWN0aW9uKCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5V2lkdGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAg
ICAgICAgICAgIGlmICgoYWxpZ25tZW50ID09IENTU1ZhbHVlTWlkZGxlIHx8IGFsaWdubWVudCA9
PSBDU1NWYWx1ZUNlbnRlcikgJiYgbXVsdGlwbGllciAhPSAxLjApCi0gICAgICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4odGV4dFBvc2l0aW9uIC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwg
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0ZXh0UG9z
aXRpb24gLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlw
ZTo6UGVyY2VudGFnZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCAgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsICBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAg
ICAgICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQg
PT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJs
ZT4obGluZVBvc2l0aW9uIC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwg
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNfY2FzdDxkb3VibGU+KGxpbmVQb3Np
dGlvbiAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBl
OjpQZXJjZW50YWdlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTIzLDEwICsxMjMsMTAgQEAg
dm9pZCBUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNv
bnN0IEludFNpemUmIHZpZGVvU2l6ZSkKIAogICAgIGlmIChjdWUtPmdldFdyaXRpbmdEaXJlY3Rp
b24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwpIHsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKLSAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlw
ZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TWF4V2lkdGgsIG1heFNpemUsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICB9
IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluSGVp
Z2h0LCAibWluLWNvbnRlbnQiKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
KyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4
U2l6ZSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgIH0KIAogICAgIGlmIChjdWUtPmZv
cmVncm91bmRDb2xvcigpLmlzVmFsaWQoKSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFRleHRU
cmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYg
dmlkZW9TaXplLCBibwogICAgIGRvdWJsZSBzaXplID0gdmlkZW9TaXplLmhlaWdodCgpICogYmFz
ZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KCkgLyAxMDA7CiAgICAgaWYgKGZvbnRTaXpl
TXVsdGlwbGllcigpKQogICAgICAgICBzaXplICo9IGZvbnRTaXplTXVsdGlwbGllcigpIC8gMTAw
OwotICAgIGRpc3BsYXlUcmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFNpemUsIGxyb3VuZChzaXplKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAg
ZGlzcGxheVRyZWVJbnRlcm5hbCgpLnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250U2l6ZSwgbHJvdW5kKHNpemUpLCBDU1NVbml0VHlwZTo6UHgpOwogfQogCiBib29sIFRleHRU
cmFja0N1ZUdlbmVyaWM6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBvdGhl
clRleHRUcmFja0N1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRl
eCBhNWFiOTc0YzI0NmQ4YzBiNzdjMTI1YjdlYTE3M2FmOTgxYTBjMjM3Li41Yzc2NzJjZTNkZWVl
Mzg4OTMzNDE1ZDBjZGI5Yjc1Nzg5Mjg1MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9w
ZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBhdXRvIHBvc2l0aW9uID0gY3Vl
LT5nZXRDU1NQb3NpdGlvbigpOwogCiAgICAgLy8gdGhlICd0b3AnIHByb3BlcnR5IG11c3QgYmUg
c2V0IHRvIHRvcCwKLSAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBw
b3NpdGlvbi5zZWNvbmQsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgcG9zaXRpb24uc2Vjb25kLCBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZSk7CiAKICAgICAvLyB0aGUgJ2xlZnQnIHByb3BlcnR5IG11c3QgYmUg
c2V0IHRvIGxlZnQKICAgICBpZiAoY3VlLT52ZXJ0aWNhbCgpID09IGhvcml6b250YWxLZXl3b3Jk
KCkpCi0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBwb3Np
dGlvbi5maXJzdCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHBvc2l0aW9uLmZpcnN0LCBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgZWxzZSBpZiAoY3VlLT52ZXJ0aWNhbCgpID09IHZlcnRp
Y2FsR3Jvd2luZ1JpZ2h0S2V5d29yZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgdXNlIGNh
bGMgdG8gZG8gdGhlIG1hdGggaW5zdGVhZCBvZiBkb2luZyB0aGUgc3VidHJhY3Rpb24gaGVyZT8K
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1ha2VTdHJp
bmcoImNhbGMoLSIsIHZpZGVvU2l6ZS53aWR0aCgpLCAicHggLSAiLCBjdWUtPmdldENTU1NpemUo
KSwgInB4KSIpKTsKQEAgLTIxMywxOSArMjEzLDE5IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNT
U1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIGRvdWJsZSBuZXdDdWVT
aXplID0gc3RkOjptaW4oY3VlLT5nZXRDU1NTaXplKCkgKiBtdWx0aXBsaWVyLCAxMDAuMCk7CiAg
ICAgLy8gdGhlICd3aWR0aCcgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gd2lkdGgsIGFuZCB0aGUg
J2hlaWdodCcgcHJvcGVydHkgIG11c3QgYmUgc2V0IHRvIGhlaWdodAogICAgIGlmIChjdWUtPnZl
cnRpY2FsKCkgPT0gaG9yaXpvbnRhbEtleXdvcmQoKSkgewotICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgbmV3Q3VlU2l6ZSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAg
ICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29u
dGVudCIpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4V2lk
dGgsIG1heFNpemUsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NTVW5pdFR5
cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRs
ZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQot
ICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRp
Y19jYXN0PGRvdWJsZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NT
U2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIp
LCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOwotICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6UGVyY2VudGFn
ZSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQs
ICJtaW4tY29udGVudCIpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAg
ICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXpl
LCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgICAgIGlmICgoYWxpZ25tZW50ID09IENT
U1ZhbHVlTWlkZGxlIHx8IGFsaWdubWVudCA9PSBDU1NWYWx1ZUNlbnRlcikgJiYgbXVsdGlwbGll
ciAhPSAxLjApCi0gICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VG9wLCBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0g
Y3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KHBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NT
aXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICB9CiAKICAgICAvLyBU
aGUgJ3RleHQtYWxpZ24nIHByb3BlcnR5IG9uIHRoZSAocm9vdCkgTGlzdCBvZiBXZWJWVFQgTm9k
ZSBPYmplY3RzIG11c3QKQEAgLTEwMzgsNyArMTAzOCw3IEBAIFJlZlB0cjxUZXh0VHJhY2tDdWVC
b3g+IFZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQg
Zm9uCiAgICAgfQogCiAgICAgaWYgKG1fZm9udFNpemUpCi0gICAgICAgIGRpc3BsYXlUcmVlLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIG1fZm9udFNpemUsIENT
U1VuaXRUeXBlOjpDU1NfUFgsIG1fZm9udFNpemVJc0ltcG9ydGFudCk7CisgICAgICAgIGRpc3Bs
YXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIG1fZm9u
dFNpemUsIENTU1VuaXRUeXBlOjpQeCwgbV9mb250U2l6ZUlzSW1wb3J0YW50KTsKIAogICAgIG1f
ZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRSZWdpb24uY3BwCmluZGV4IGExOTliYjA4OTlhZTNhYTE5MDUyZTgxN2IzMTUzM2Q2N2Fj
NmJlYjAuLjllMWY1ZDAwMjQzZGVlOGQ5NmRkNWZiMDIzZDFlYWIxZDE4ODk4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IFZUVFJlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0VHJhY2tDdWVCb3goKQogICAgICAgICBmbG9hdCBo
ZWlnaHQgPSBjaGlsZEJvdHRvbSAtIGNoaWxkVG9wOwogCiAgICAgICAgIG1fY3VycmVudFRvcCAt
PSBzdGQ6Om1pbihoZWlnaHQsIGNoaWxkQm90dG9tIC0gcmVnaW9uQm90dG9tKTsKLSAgICAgICAg
bV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIG1f
Y3VycmVudFRvcCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgIG1fY3VlQ29udGFpbmVy
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBtX2N1cnJlbnRUb3AsIENT
U1VuaXRUeXBlOjpQeCk7CiAKICAgICAgICAgc3RhcnRUaW1lcigpOwogICAgICAgICBicmVhazsK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6d2lsbFJlbW92ZVRleHRUcmFja0N1
ZUJveChWVFRDdWVCb3gqIGJveCkKICAgICBtX2N1ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCkucmVt
b3ZlKHRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkpOwogCiAgICAgbV9jdXJy
ZW50VG9wICs9IGJveEhlaWdodDsKLSAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKKyAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NVbml0VHlwZTo6UHgpOwogfQogCiBIVE1MRGl2RWxlbWVu
dCYgVlRUUmVnaW9uOjpnZXREaXNwbGF5VHJlZSgpCkBAIC0zNjMsMjcgKzM2MywyNyBAQCB2b2lk
IFZUVFJlZ2lvbjo6cHJlcGFyZVJlZ2lvbkRpc3BsYXlUcmVlKCkKIAogICAgIC8vIExldCByZWdp
b25XaWR0aCBiZSB0aGUgdGV4dCB0cmFjayByZWdpb24gd2lkdGguCiAgICAgLy8gTGV0IHdpZHRo
IGJlICdyZWdpb25XaWR0aCB2dycgKCd2dycgaXMgYSBDU1MgdW5pdCkKLSAgICBtX3JlZ2lvbkRp
c3BsYXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIG1fd2lk
dGgsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgbV9yZWdpb25EaXNwbGF5VHJl
ZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBtX3dpZHRoLCBDU1NV
bml0VHlwZTo6UGVyY2VudGFnZSk7CiAKICAgICAvLyBMZXQgbGluZUhlaWdodCBiZSAnMC4wNTMz
dmgnICgndmgnIGlzIGEgQ1NTIHVuaXQpIGFuZCByZWdpb25IZWlnaHQgYmUKICAgICAvLyB0aGUg
dGV4dCB0cmFjayByZWdpb24gaGVpZ2h0LiBMZXQgaGVpZ2h0IGJlICdsaW5lSGVpZ2h0JyBtdWx0
aXBsaWVkCiAgICAgLy8gYnkgcmVnaW9uSGVpZ2h0LgogICAgIGRvdWJsZSBoZWlnaHQgPSBsaW5l
SGVpZ2h0ICogbV9saW5lczsKLSAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBoZWlnaHQsIENTU1VuaXRUeXBlOjpDU1NfVkgp
OworICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlIZWlnaHQsIGhlaWdodCwgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdo
dCk7CiAKICAgICAvLyBMZXQgdmlld3BvcnRBbmNob3JYIGJlIHRoZSB4IGRpbWVuc2lvbiBvZiB0
aGUgdGV4dCB0cmFjayByZWdpb24gdmlld3BvcnQKICAgICAvLyBhbmNob3IgYW5kIHJlZ2lvbkFu
Y2hvclggYmUgdGhlIHggZGltZW5zaW9uIG9mIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbgogICAgIC8v
IGFuY2hvci4gTGV0IGxlZnRPZmZzZXQgYmUgcmVnaW9uQW5jaG9yWCBtdWx0aXBsaWVkIGJ5IHdp
ZHRoIGRpdmlkZWQgYnkKICAgICAvLyAxMDAuMC4gTGV0IGxlZnQgYmUgbGVmdE9mZnNldCBzdWJ0
cmFjdGVkIGZyb20gJ3ZpZXdwb3J0QW5jaG9yWCB2dycuCiAgICAgZG91YmxlIGxlZnRPZmZzZXQg
PSBtX3JlZ2lvbkFuY2hvci54KCkgKiBtX3dpZHRoIC8gMTAwOwotICAgIG1fcmVnaW9uRGlzcGxh
eVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBtX3ZpZXdwb3J0
QW5jaG9yLngoKSAtIGxlZnRPZmZzZXQsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxlZnQsIG1fdmlld3BvcnRBbmNob3IueCgpIC0gbGVmdE9mZnNldCwgQ1NTVW5pdFR5cGU6OlBl
cmNlbnRhZ2UpOwogCiAgICAgLy8gTGV0IHZpZXdwb3J0QW5jaG9yWSBiZSB0aGUgeSBkaW1lbnNp
b24gb2YgdGhlIHRleHQgdHJhY2sgcmVnaW9uIHZpZXdwb3J0CiAgICAgLy8gYW5jaG9yIGFuZCBy
ZWdpb25BbmNob3JZIGJlIHRoZSB5IGRpbWVuc2lvbiBvZiB0aGUgdGV4dCB0cmFjayByZWdpb24K
ICAgICAvLyBhbmNob3IuIExldCB0b3BPZmZzZXQgYmUgcmVnaW9uQW5jaG9yWSBtdWx0aXBsaWVk
IGJ5IGhlaWdodCBkaXZpZGVkIGJ5CiAgICAgLy8gMTAwLjAuIExldCB0b3AgYmUgdG9wT2Zmc2V0
IHN1YnRyYWN0ZWQgZnJvbSAndmlld3BvcnRBbmNob3JZIHZoJy4KICAgICBkb3VibGUgdG9wT2Zm
c2V0ID0gbV9yZWdpb25BbmNob3IueSgpICogaGVpZ2h0IC8gMTAwOwotICAgIG1fcmVnaW9uRGlz
cGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIG1fdmlld3Bv
cnRBbmNob3IueSgpIC0gdG9wT2Zmc2V0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwor
ICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUb3AsIG1fdmlld3BvcnRBbmNob3IueSgpIC0gdG9wT2Zmc2V0LCBDU1NVbml0VHlwZTo6UGVy
Y2VudGFnZSk7CiAKICAgICAvLyBUaGUgY3VlIGNvbnRhaW5lciBpcyB1c2VkIHRvIHdyYXAgdGhl
IGN1ZXMgYW5kIGl0IGlzIHRoZSBvYmplY3Qgd2hpY2ggaXMKICAgICAvLyBncmFkdWFsbHkgc2Ny
b2xsZWQgb3V0IGFzIG11bHRpcGxlIGN1ZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSByZWdpb24uCkBA
IC0zOTIsNyArMzkyLDcgQEAgdm9pZCBWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJl
ZSgpCiAgICAgICAgIG1fY3VlQ29udGFpbmVyLT5zZXRQc2V1ZG8odGV4dFRyYWNrQ3VlQ29udGFp
bmVyU2hhZG93UHNldWRvSWQoKSk7CiAgICAgICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPmFwcGVu
ZENoaWxkKCptX2N1ZUNvbnRhaW5lcik7CiAgICAgfQotICAgIG1fY3VlQ29udGFpbmVyLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAwLjBmLCBDU1NVbml0VHlwZTo6Q1NT
X1BYKTsKKyAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRvcCwgMC4wZiwgQ1NTVW5pdFR5cGU6OlB4KTsKIAogICAgIC8vIDcuNSBFdmVyeSBXZWJW
VFQgcmVnaW9uIG9iamVjdCBpcyBpbml0aWFsaXNlZCB3aXRoIHRoZSBmb2xsb3dpbmcgQ1NTCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNGZlZTg2ZWM4YTUyMTAw
MzllNTJkNjkwMGNkOGFiODM1N2Y5MmE2Mi4uNDFlZDIyMTRkNGY0NDE3ODkxYWNjNWYxOGY5YTYx
YzdkM2U1MTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTE0
NDUsNyArMTQ0NSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNpemU+CiAgICAgICAgIGF1dG8gaW1h
Z2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIs
IEF0b21TdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9t
U3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBpbWFnZS0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCAxMDAsIENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSk7CisgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TWF4V2lkdGgsIDEwMCwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBp
bWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
c2VyaWFsaXphdGlvbkZvckNTUyhDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDEzKSkp
OwogICAgICAgICBpbWFnZS0+c2V0SXNEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcigpOwogICAgICAg
ICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShpbWFnZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCmluZGV4IDBjOTYzMmUyZmYzYTQ5YTBmMjYzZWJmYmYzOWYxZjg3MDli
YjJmMDMuLmQ0ZDNkNWQ2ZjlhZTZjMzY5Njk5ZTNiZDFhZGE3ZDA0YmQ2OWYzZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRCb3hFeHRl
bnQgUHJpbnRDb250ZXh0Ojpjb21wdXRlZFBhZ2VNYXJnaW4oRmxvYXRCb3hFeHRlbnQgcHJpbnRN
YXJnaW4pCiAgICAgLy8gRklYTUUgQ3VycmVudGx5IG5vIHBzZXVkbyBjbGFzcyBpcyBzdXBwb3J0
ZWQuCiAgICAgYXV0byBzdHlsZSA9IGZyYW1lKCktPmRvY3VtZW50KCktPnN0eWxlU2NvcGUoKS5y
ZXNvbHZlcigpLnN0eWxlRm9yUGFnZSgwKTsKIAotICAgIGZsb2F0IHBpeGVsVG9Qb2ludFNjYWxl
RmFjdG9yID0gMSAvIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0
c1NjYWxlRmFjdG9yKENTU1VuaXRUeXBlOjpDU1NfUFQpOworICAgIGZsb2F0IHBpeGVsVG9Qb2lu
dFNjYWxlRmFjdG9yID0gMSAvIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmlj
YWxVbml0c1NjYWxlRmFjdG9yKENTU1VuaXRUeXBlOjpQdCk7CiAgICAgcmV0dXJuIHsgc3R5bGUt
Pm1hcmdpblRvcCgpLmlzQXV0bygpID8gcHJpbnRNYXJnaW4udG9wKCkgOiBzdHlsZS0+bWFyZ2lu
VG9wKCkudmFsdWUoKSAqIHBpeGVsVG9Qb2ludFNjYWxlRmFjdG9yLAogICAgICAgICBzdHlsZS0+
bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/IHByaW50TWFyZ2luLnJpZ2h0KCkgOiBzdHlsZS0+bWFy
Z2luUmlnaHQoKS52YWx1ZSgpICogcGl4ZWxUb1BvaW50U2NhbGVGYWN0b3IsCiAgICAgICAgIHN0
eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IHByaW50TWFyZ2luLmJvdHRvbSgpIDogc3R5
bGUtPm1hcmdpbkJvdHRvbSgpLnZhbHVlKCkgKiBwaXhlbFRvUG9pbnRTY2FsZUZhY3RvciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVlNmQzYmVmYjcxMTZl
ODIyMzIwMTIwNjNlODU3N2M5ZTYyODcxYjcuLjg2ODU0OGY5ZjU1OTJmNjI0ZWRkNmE2ZDFjODll
OTgyNDdlZjZjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMjcxNywyMyArMjcxNywyMyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQsIGNvbnN0IExheW91dFNpemUmIG9sZE9mZgogICAgIGlmIChy
ZXNpemUgIT0gUmVzaXplOjpWZXJ0aWNhbCAmJiBkaWZmZXJlbmNlLndpZHRoKCkpIHsKICAgICAg
ICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAg
ICAgLy8gTWFrZSBpbXBsaWNpdCBtYXJnaW5zIGZyb20gdGhlIHRoZW1lIGV4cGxpY2l0IChzZWUg
PGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc+KS4KLSAgICAgICAg
ICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0LCByZW5kZXJlci0+bWFyZ2luTGVmdCgpIC8gem9vbUZhY3RvciwgQ1NTVW5pdFR5cGU6
OkNTU19QWCk7Ci0gICAgICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIHJlbmRlcmVyLT5tYXJnaW5SaWdodCgpIC8gem9v
bUZhY3RvciwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICBzdHlsZWRFbGVtZW50
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgcmVuZGVyZXIt
Pm1hcmdpbkxlZnQoKSAvIHpvb21GYWN0b3IsIENTU1VuaXRUeXBlOjpQeCk7CisgICAgICAgICAg
ICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIHJlbmRlcmVyLT5tYXJnaW5SaWdodCgpIC8gem9vbUZhY3RvciwgQ1NTVW5pdFR5cGU6
OlB4KTsKICAgICAgICAgfQogICAgICAgICBMYXlvdXRVbml0IGJhc2VXaWR0aCA9IHJlbmRlcmVy
LT53aWR0aCgpIC0gKGlzQm94U2l6aW5nQm9yZGVyID8gMF9sdSA6IHJlbmRlcmVyLT5ob3Jpem9u
dGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpKTsKICAgICAgICAgYmFzZVdpZHRoID0gYmFzZVdp
ZHRoIC8gem9vbUZhY3RvcjsKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCByb3VuZFRvSW50KGJhc2VXaWR0aCArIGRpZmZlcmVu
Y2Uud2lkdGgoKSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBzdHlsZWRFbGVtZW50
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHJvdW5kVG9JbnQoYmFz
ZVdpZHRoICsgZGlmZmVyZW5jZS53aWR0aCgpKSwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICB9CiAK
ICAgICBpZiAocmVzaXplICE9IFJlc2l6ZTo6SG9yaXpvbnRhbCAmJiBkaWZmZXJlbmNlLmhlaWdo
dCgpKSB7CiAgICAgICAgIGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigqZWxlbWVudCkp
IHsKICAgICAgICAgICAgIC8vIE1ha2UgaW1wbGljaXQgbWFyZ2lucyBmcm9tIHRoZSB0aGVtZSBl
eHBsaWNpdCAoc2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3
PikuCi0gICAgICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWFyZ2luVG9wLCByZW5kZXJlci0+bWFyZ2luVG9wKCkgLyB6b29tRmFjdG9yLCBD
U1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHJlbmRlcmVyLT5tYXJnaW5C
b3R0b20oKSAvIHpvb21GYWN0b3IsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgcmVuZGVyZXItPm1hcmdpblRvcCgpIC8gem9vbUZhY3RvciwgQ1NTVW5pdFR5cGU6OlB4KTsK
KyAgICAgICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXJnaW5Cb3R0b20sIHJlbmRlcmVyLT5tYXJnaW5Cb3R0b20oKSAvIHpvb21GYWN0b3Is
IENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAgIH0KICAgICAgICAgTGF5b3V0VW5pdCBiYXNlSGVp
Z2h0ID0gcmVuZGVyZXItPmhlaWdodCgpIC0gKGlzQm94U2l6aW5nQm9yZGVyID8gMF9sdSA6IHJl
bmRlcmVyLT52ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CiAgICAgICAgIGJhc2VI
ZWlnaHQgPSBiYXNlSGVpZ2h0IC8gem9vbUZhY3RvcjsKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgcm91bmRUb0ludChiYXNl
SGVpZ2h0ICsgZGlmZmVyZW5jZS5oZWlnaHQoKSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAg
ICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVp
Z2h0LCByb3VuZFRvSW50KGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNlLmhlaWdodCgpKSwgQ1NTVW5p
dFR5cGU6OlB4KTsKICAgICB9CiAKICAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCAxMzZkMDA1Yzk5ZTc2
YWUyODVmZWQ3YmMxYTRmZTk3OWViNzI0NzEwLi42MmQ1ZTRkYTRiZjFhNGQxMDNlMDI4NTVlYTJh
NzNlZjgwNmQ2ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCkBAIC01NzMsNyArNTczLDcgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cElu
dGVybmFsUGFkZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIHsKICAgICBm
bG9hdCBwYWRkaW5nID0gTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXI7CiAgICAgaWYgKHNldHRp
bmdzLmlPU0Zvcm1Db250cm9sUmVmcmVzaEVuYWJsZWQoKSkgewotICAgICAgICBhdXRvIGVtU2l6
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENT
U1VuaXRUeXBlOjpFbXMpOwogICAgICAgICBwYWRkaW5nID0gZW1TaXplLT5jb21wdXRlTGVuZ3Ro
PGZsb2F0PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICB9CiAKQEAgLTYyMiw3ICs2MjIs
NyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5kZXJT
dHlsZSYgc3R5bGUsIFJlbmRlckJveCYgYm94KQogc3RhdGljIHZvaWQgYXBwbHlDb21tb25CdXR0
b25QYWRkaW5nVG9TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwotICAg
IGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1VuaXRUeXBl
OjpDU1NfRU1TKTsKKyAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MC41LCBDU1NVbml0VHlwZTo6RW1zKTsKICAgICAvLyBXZSBkb24ndCBuZWVkIHRoaXMgZWxlbWVu
dCdzIHBhcmVudCBzdHlsZSB0byBjYWxjdWxhdGUgYGVtYCB1bml0cywgc28gaXQncyBva2F5IHRv
IHBhc3MgbnVsbHB0ciBmb3IgaXQgaGVyZS4KICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21w
dXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50
LnJlbmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQu
ZnJhbWUoKSA/IGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkgOiAxLikpOwogICAg
IHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CkBA
IC0xMTIyLDcgKzExMjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbgogICAgIC8vIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50IG9ubHkgbmVlZHMgdGhlIGVsZW1lbnQncyBz
dHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4KICAgICAvLyBTaW5jZSB0aGUgZWxlbWVudCBt
aWdodCBub3QgYmUgaW4gYSBkb2N1bWVudCwganVzdCBwYXNzIG51bGxwdHIgZm9yIHRoZSByb290
IGVsZW1lbnQgc3R5bGUsCiAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IHN0eWxlLCBhbmQgdGhl
IHJlbmRlciB2aWV3LgotICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgxLjAsIENTU1VuaXRUeXBlOjpDU1NfRU1TKTsKKyAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NVbml0VHlwZTo6RW1zKTsKICAgICBpbnQgcGl4ZWxz
ID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgm
c3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0KSk7CiAg
ICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsK
IApAQCAtMjU4NSw3ICsyNTg1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zV2l0aEZvcm1Db250cm9sUmVmcmVzaChjb25zdAogICAgICAgICBn
bHlwaFBhdGguYWRkQmV6aWVyQ3VydmVUbyh7IDI5LjQxNzlmLCA3MS44ZiB9LCB7IDMwLjU0MWYs
IDcyLjM4NjdmIH0sIHsgMzEuODU5M2YsIDcyLjM4NjcgfSk7CiAgICAgfQogCi0gICAgYXV0byBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19F
TVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENT
U1VuaXRUeXBlOjpFbXMpOwogICAgIGF1dG8gZW1QaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCkpOwogICAgIGF1dG8gZ2x5cGhTY2FsZSA9
IDAuNjVmICogZW1QaXhlbHMgLyBnbHlwaFNpemUud2lkdGgoKTsKICAgICBnbHlwaFNpemUgPSBn
bHlwaFNjYWxlICogZ2x5cGhTaXplOwpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxl
JiBzdHlsZSwgY28KIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRh
dGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCk7
CiAKLSAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc2VhcmNoRmll
bGREZWNvcmF0aW9uRW1TaXplLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNp
emUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNlYXJjaEZpZWxkRGVjb3JhdGlvbkVtU2l6
ZSwgQ1NTVW5pdFR5cGU6OkVtcyk7CiAgICAgYXV0byBzaXplID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBzdHlsZS5zZXRXaWR0aCh7IHNpemUs
IExlbmd0aFR5cGU6OkZpeGVkIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAppbmRleCA0MDRmZmFjMDg4YjVhZGUxNGMwMjQ2YzQ1NDFhOTdmMjk3YTBh
NmY4Li43NjMxNzE1ZTc0OGY1NTY3MGFiNzAyNDkyNjAyMWQ1MzkzYWI1NTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjAwLDcgKzIwMCw3
IEBAIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChjb25zdCBC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xl
bmd0aCgpKSB7CiAgICAgICAgIExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRl
TGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwotICAgICAgICBsZW5ndGguc2V0SGFzUXVp
cmsocHJpbWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUVVJ
UktZX0VNUyk7CisgICAgICAgIGxlbmd0aC5zZXRIYXNRdWlyayhwcmltaXRpdmVWYWx1ZS5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlF1aXJreUVtcyk7CiAgICAgICAgIHJldHVybiBs
ZW5ndGg7CiAgICAgfQogCkBAIC00MjMsNyArNDIzLDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxk
ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TnVtYmVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZTxUPihDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWU8VD4oQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC00MzksNyArNDM5LDcgQEAgaW5saW5lIHNob3J0IEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKEJ1aWxkZXJTdGF0ZSYsIGMKICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vTGltaXQp
CiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUudmFsdWU8c2hv
cnQ+KENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUu
dmFsdWU8c2hvcnQ+KENTU1VuaXRUeXBlOjpOdW1iZXIpOwogfQogCiB0ZW1wbGF0ZTxDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5PgpAQCAtNjA3LDcgKzYwNyw3IEBAIGlubGluZSBSZWZQdHI8Q2xpcFBh
dGhPcGVyYXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChCdWlsZGVyU3Rh
dGUmCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfVVJJKSB7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6OlVSSSkgewogICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVl
ID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFN0cmluZyBmcmFn
bWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhj
c3NVUkxWYWx1ZSwgYnVpbGRlclN0YXRlLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgLy8gRklY
TUU6IEl0IGRvZXNuJ3Qgd29yayB3aXRoIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjEzMykKQEAgLTc5NCw3ICs3
OTQsNyBAQCBpbmxpbmUgZmxvYXQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VX
aWR0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogICAgICAgICAgICAgcmVzdWx0ICo9IDM7
CiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRo
aWNrKQogICAgICAgICAgICAgcmVzdWx0ICo9IDU7Ci0gICAgICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gZW1zVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1VuaXRU
eXBlOjpDU1NfRU1TKSk7CisgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1zVmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1VuaXRUeXBlOjpFbXMpKTsKICAg
ICAgICAgd2lkdGggPSBjb252ZXJ0Q29tcHV0ZWRMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZSwg
ZW1zVmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzEwLDcgKzEzMTAsNyBAQCBp
bmxpbmUgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3R5bGVGcm9tVgogICAgICAgICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAg
ICBBU1NFUlQodmFsdWVJRCA9PSBDU1NWYWx1ZU9ibGlxdWUpOwogICAgIGlmIChhdXRvKiBvYmxp
cXVlVmFsdWUgPSBmb250U3R5bGVWYWx1ZS5vYmxpcXVlVmFsdWUuZ2V0KCkpCi0gICAgICAgIHJl
dHVybiBGb250U2VsZWN0aW9uVmFsdWUob2JsaXF1ZVZhbHVlLT52YWx1ZTxmbG9hdD4oQ1NTVW5p
dFR5cGU6OkNTU19ERUcpKTsKKyAgICAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZShvYmxp
cXVlVmFsdWUtPnZhbHVlPGZsb2F0PihDU1NVbml0VHlwZTo6RGVnKSk7CiAgICAgcmV0dXJuIGl0
YWxpY1ZhbHVlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKaW5kZXggNDM5NDVjNWVkZWUxNDM1MjcwZWI1M2ZlNmYwNzQ4N2JhMGIxNjYzYi4uNjY3M2Q4
ZWY2OTQ2NWE1ZTA3NmI2MDY3ZjJkZmJkMmFhZWM2MTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGlubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYKIH0KIGlubGluZSBMZW5ndGggQnVpbGRlckN1c3RvbTo6bW1MZW5ndGgoZG91
YmxlIG1tKQogewotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtbSwgQ1NTVW5pdFR5cGU6OkNTU19NTSkpOworICAgIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTVW5pdFR5
cGU6Ok1tKSk7CiAgICAgcmV0dXJuIHZhbHVlLmdldCgpLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQogaW5saW5lIExlbmd0aCBCdWlsZGVyQ3Vz
dG9tOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQogewotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNoLCBDU1NVbml0VHlwZTo6Q1NT
X0lOKSk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGluY2gsIENTU1VuaXRUeXBlOjpJbikpOwogICAgIHJldHVybiB2YWx1ZS5nZXQo
KS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0K
IGJvb2wgQnVpbGRlckN1c3RvbTo6Z2V0UGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1
ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5n
dGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKQEAgLTM3NCw3ICszNzQsNyBAQCBpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLAogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVTbmFwKQogICAgICAgICAgICAgc25hcCA9IEltYWdlUmVzb2x1dGlvblNuYXA6
OlBpeGVsczsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzb2x1dGlvbiA9IHByaW1pdGl2
ZVZhbHVlLmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfRFBQWCk7CisgICAgICAgICAgICBy
ZXNvbHV0aW9uID0gcHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OkRvdHNQ
ZXJQaXhlbCk7CiAgICAgfQogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1
dGlvblNvdXJjZShzb3VyY2UpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVz
b2x1dGlvblNuYXAoc25hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAppbmRl
eCAzOTA2MTMzMmNjMmZlYTY5YTJlOWI5NGE1ZTk0OTAwMGQ2OThiZDg3Li4yYTU3MGQ3ZGRlZDVm
ZDYyNTljY2FjYzExMzFhMDYwYmM1NmQyZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhW
YWx1ZS5jcHAKQEAgLTEwMCwyNyArMTAwLDI3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxlbmd0aFR5cGUoU3RyCiBz
dGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5cGUgcHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZShDU1NV
bml0VHlwZSBwcmltaXRpdmVUeXBlKQogewogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlVua25vd246CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVy
OgogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6
CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgogICAgICAgICBy
ZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RW1zOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6RXhzOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpQeDoKICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBpeGVsczsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ006CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CiAgICAgICAg
IHJldHVybiBTVkdMZW5ndGhUeXBlOjpDZW50aW1ldGVyczsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfTU06CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TW06CiAgICAgICAgIHJldHVybiBTVkdM
ZW5ndGhUeXBlOjpNaWxsaW1ldGVyczsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSU46Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpJ
bmNoZXM7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlB0OgogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKICAgICAgICAg
cmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBpY2FzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwpAQCAtMTMzLDMxICsxMzMsMzEgQEAgc3RhdGljIGlu
bGluZSBDU1NVbml0VHlwZSBsZW5ndGhUeXBlVG9QcmltaXRpdmVUeXBlKFNWR0xlbmd0aFR5cGUg
bGVuZ3RoVHlwZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKICAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OlVua25vd246Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1VOS05P
V047CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6VW5rbm93bjsKICAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6Ok51bWJlcjoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVS
OworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6Ok51bWJlcjsKICAgICBjYXNlIFNWR0xlbmd0
aFR5cGU6OlBlcmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1BFUkNF
TlRBR0U7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UGVyY2VudGFnZTsKICAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6OkVtczoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfRU1T
OworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkVtczsKICAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OkV4czoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfRVhTOworICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkV4czsKICAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBpeGVsczoK
LSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUFg7CisgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6UHg7CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDZW50aW1ldGVyczoKLSAgICAg
ICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfQ007CisgICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6Q207CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNaWxsaW1ldGVyczoKLSAgICAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpDU1NfTU07CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6TW07
CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpJbmNoZXM6Ci0gICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6Q1NTX0lOOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkluOwogICAgIGNhc2Ug
U1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19Q
VDsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpQdDsKICAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OlBpY2FzOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19QQzsKKyAgICAgICAg
cmV0dXJuIENTU1VuaXRUeXBlOjpQYzsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgIHJldHVybiBDU1NV
bml0VHlwZTo6VW5rbm93bjsKIH0KIAogU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNW
R0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQppbmRleCBjODg0ZDhjZGJjMjE0OTZhYmJjMWI0ZDljOGZlZGNmMmE5
MTMwMjdmLi42MzA1ODkzOThlZWM1YmRiYzdiNjdlZTZlMTYwNTk0YTk4Mzc0MGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3Rh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBQREZQbHVnaW5Bbm5v
dGF0aW9uOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgTlNSZWN0IGFubm90YXRpb25SZWN0ID0gTlNS
ZWN0RnJvbUNHUmVjdChbbV9wZGZMYXllckNvbnRyb2xsZXIgYm91bmRzRm9yQW5ub3RhdGlvbjpt
X2Fubm90YXRpb24uZ2V0KCldKTsKIAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICBzdHlsZWRFbGVt
ZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGFubm90YXRpb25S
ZWN0LnNpemUud2lkdGgsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwotICAgIHN0eWxlZEVsZW1lbnQt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIGFubm90YXRpb25SZWN0
LnNpemUuaGVpZ2h0LCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGFubm90YXRpb25SZWN0LnNp
emUud2lkdGgsIENTU1VuaXRUeXBlOjpQeCk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgYW5ub3RhdGlvblJlY3Quc2l6ZS5oZWln
aHQsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24obV9wZGZM
YXllckNvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb24pOwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBhbm5vdGF0aW9uUmVjdC5vcmlnaW4u
eCAtIHNjcm9sbFBvc2l0aW9uLngoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgc3R5bGVk
RWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgZG9jdW1lbnRT
aXplLmhlaWdodCgpIC0gYW5ub3RhdGlvblJlY3Qub3JpZ2luLnkgLSBhbm5vdGF0aW9uUmVjdC5z
aXplLmhlaWdodCAtIHNjcm9sbFBvc2l0aW9uLnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cisg
ICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQs
IGFubm90YXRpb25SZWN0Lm9yaWdpbi54IC0gc2Nyb2xsUG9zaXRpb24ueCgpLCBDU1NVbml0VHlw
ZTo6UHgpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3AsIGRvY3VtZW50U2l6ZS5oZWlnaHQoKSAtIGFubm90YXRpb25SZWN0Lm9yaWdpbi55
IC0gYW5ub3RhdGlvblJlY3Quc2l6ZS5oZWlnaHQgLSBzY3JvbGxQb3NpdGlvbi55KCksIENTU1Vu
aXRUeXBlOjpQeCk7CiB9CiAKIGJvb2wgUERGUGx1Z2luQW5ub3RhdGlvbjo6aGFuZGxlRXZlbnQo
RXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCA3ZTlk
ZWQ4ZTkzOGE0MmE5MTQ1MGI4YWZiZWI2NmZmMWQzYzZhNWZkLi43YmRmNWQ4MWYyNmMyMmE2MzZk
Yjc0ODAwZjJlYjQyMzgzZDg2MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5t
bQpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OnVwZGF0
ZUdlb21ldHJ5KCkKICAgICBQREZQbHVnaW5Bbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSgpOwog
CiAgICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVs
ZW1lbnQqPihlbGVtZW50KCkpOwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgY2hvaWNlQW5ub3RhdGlvbigpLmZvbnQucG9pbnRT
aXplICogcGRmTGF5ZXJDb250cm9sbGVyKCkuY29udGVudFNjYWxlRmFjdG9yLCBDU1NVbml0VHlw
ZTo6Q1NTX1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udFNpemUsIGNob2ljZUFubm90YXRpb24oKS5mb250LnBvaW50U2l6ZSAqIHBk
ZkxheWVyQ29udHJvbGxlcigpLmNvbnRlbnRTY2FsZUZhY3RvciwgQ1NTVW5pdFR5cGU6OlB4KTsK
IH0KIAogdm9pZCBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjb21taXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tCmluZGV4IDc0OTVlMDQzNmM0MDc0M2Y0Y2VkZmJlNmViYzY2MDQ4
ZjY5ODU3NTEuLmEyMmZmNmJlM2VlODc1ZDNiZDNhNjM3ZmRiMzg5Y2VlZTliZWQxMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgUERGUGx1Z2luQW5ub3Rh
dGlvbjo6dXBkYXRlR2VvbWV0cnkoKTsKIAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICBzdHlsZWRF
bGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIHRleHRB
bm5vdGF0aW9uKCkuZm9udC5wb2ludFNpemUgKiBwZGZMYXllckNvbnRyb2xsZXIoKS5jb250ZW50
U2NhbGVGYWN0b3IsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHN0eWxlZEVsZW1lbnQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgdGV4dEFubm90YXRpb24o
KS5mb250LnBvaW50U2l6ZSAqIHBkZkxheWVyQ29udHJvbGxlcigpLmNvbnRlbnRTY2FsZUZhY3Rv
ciwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogdm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y29tbWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436675</attachid>
            <date>2021-08-27 14:29:12 -0700</date>
            <delta_ts>2021-08-27 14:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229622-20210827142910.patch</filename>
            <type>text/plain</type>
            <size>358708</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FiMGUwZTNmNzYwOGU4
NGNjYTY0NmI0NGU0MDE3M2MyMjdkNDJlYS4uMDIyM2QzNWQ1Mjg1NTM2MTdiNjU3NWZlMjI0NTJk
YTcyMTkwZGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMS0wOC0yNyAgS2ll
dCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgZW51bXMgaW4gQ1NTVW5p
dFR5cGUgdG8gQ2FtZWxDYXNlIGFuZCByZW1vdmUgQ1NTXyBwcmVmaXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3QgcmVuYW1lcyBmb2xsb3cgdGhl
IGZvcm1hdCBDU1NVbml0VHlwZTo6Q1NTX1hYWF9ZWVkgPT4gQ1NTVW5pdFR5cGU6Olh4eFl5eQor
ICAgICAgICBleGNlcHQgZm9yOgorCisgICAgICAgIElmIHRoZXJlIGV4aXN0cyBhIG1ldGhvZCBD
U1NQcmltaXRpdmVWYWx1ZTo6SXNYWFhYKCksIHRoZW4gaXQncyByZW5hbWVkIHRvCisgICAgICAg
IENzc1VuaXRUeXBlOjpYWFhYIGluc3RlYWQuIEZvciBleGFtcGxlLCBDU1NfVlcgaXMgcmVuYW1l
ZCB0bworICAgICAgICBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCBiZWNhdXNlIG9mIENTU1ByaW1p
dGl2ZVZhbHVlOjpJc1ZpZXdwb3J0UGVyY2VudGFnZVdpZHRoKCkuCisKKyAgICAgICAgQ1NTX1Mg
aXMgcmVuYW1lZCB0byBTZWNvbmQuCisKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NmYWRlQmxlbmQpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsdWVGb3JJbWFnZVNsaWNlU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvck5p
bmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21BZGp1c3RlZE51bWJlclZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbHVlRm9yUmVmbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwZXJj
ZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvclF1
b3Rlcyk6CisgICAgICAgIChXZWJDb3JlOjptYXRyaXhUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlZFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkUm90
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdExlbmd0aEZvclpvb20pOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OnNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjp2YWx1ZUZvckdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkZWxheVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmR1cmF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
dGV4dFVuZGVybGluZU9mZnNldFRvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERl
Y29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsdFRleHRU
b0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUb0NTU1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvdW50ZXJUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnROb25LZXl3b3JkV2VpZ2h0RnJvbVN0eWxlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRT
dHJldGNoRnJvbVN0eWxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRTdHlsZUZyb21TdHlsZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmZvbnRTaG9ydGhhbmRWYWx1ZUZvclNlbGVjdGlvblByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVJdGFsaWNSYW5nZSk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTdHlsZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0b3Bz
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEdyYWRpZW50U3RvcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29uaWNHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAg
ICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VT
ZXRWYWx1ZTo6ZmlsbEltYWdlU2V0KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjcmVhdGVEZXByZWNhdGVkQ1NTT01X
cmFwcGVyIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjppc1N0cmluZ1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OnByaW1pdGl2ZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21w
dXRlTGVuZ3RoRG91YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5p
dHNTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZG91
YmxlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Omlz
WmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNQb3Np
dGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNOZWdh
dGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNDZW50
ZXJQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
ZG91YmxlVmFsdWVJbnRlcm5hbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6c3RyaW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OnVuaXRUeXBlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5j
aWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb2xsZWN0
RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMgY29uc3QpOgorICAgICAgICAqIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmlzRm9udFJlbGF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjppc0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
aXNSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21w
dXRlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZURlZ3JlZXMpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHNob3J0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNp
Z25lZCBzaG9ydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciB1bnNpZ25lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgZmxvYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVDbGFtcFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2x1bW5GaWxsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2x1bW5TcGFuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0aW5nVG9M
ZW5ndGhSZXF1aXJlc05vbk51bGxTdHlsZSBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNl
SW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGll
Y2VJbWFnZVF1YWQpOgorICAgICAgICAqIGNzcy9DU1NVbml0cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1bml0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fub25pY2FsVW5pdFR5cGVG
b3JDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBj
c3MvQ1NTVW5pdHMuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0YXRpY0NTU1ZhbHVlUG9vbDo6U3RhdGljQ1NTVmFsdWVQb29sKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAqIGNzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXBy
ZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlwZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6CisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG91Ymxl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZXZhbHVhdGVSZXNvbHV0aW9uKToKKyAgICAgICAg
KiBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmVhdHVy
ZVdpdGhWYWxpZElkZW50KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1p
dGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFk
anVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9j
YWxjL0NTU0NhbGNDYXRlZ29yeU1hcHBpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Vu
aXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGlvbkNhdGVnb3J5Rm9yQ29t
YmluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y2Fub25pY2FsVW5pdFR5cGVGb3JDYWxjdWxh
dGlvbkNhdGVnb3J5KToKKyAgICAgICAgKFdlYkNvcmU6Omhhc0RvdWJsZVZhbHVlKToKKyAgICAg
ICAgKiBjc3MvY2FsYy9DU1NDYWxjT3BlcmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwcmltaXRpdmVUeXBlRm9yQ29tYmluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
c2lvblRvQWRkVmFsdWVzV2l0aFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNPcGVy
YXRpb25Ob2RlOjpjb21iaW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY09w
ZXJhdGlvbk5vZGU6OnByaW1pdGl2ZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY09wZXJhdGlvbk5vZGU6OmRvdWJsZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvY2Fs
Yy9DU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNQcmltaXRpdmVWYWx1ZU5vZGU6OmFkZCk6CisgICAgICAgICogY3NzL2NhbGMvQ1NTQ2FsY1Zh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJsZW5kSGFsZik6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDU1MpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBh
dGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlU2ltcGxlQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1w
bGVMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9ySW50T3JQZXJjZW50
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTnVtZXJpY0NvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlVHJhbnNmb3JtQW5nbGVBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcmltaXRpdmVWYWx1ZVVuaXRGcm9t
VHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1BlcmNlbnRhZ2Up
OgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVUcmFuc2Zvcm1PcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3VtZUZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUFuaW1hdGlvbk5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN1bWVUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVBvc2l0aW9uTG9u
Z2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUNvdW50ZXJDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVSZWZs
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVHcmlkQnJlYWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNvbnN1bWVTeXN0ZW1Gb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VyOjpjb25zdW1lRmxleCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpDYWxjUGFyc2VyOjpjb25zdW1lSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkNhbGNQYXJzZXI6OmNvbnN1bWVOdW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lSW50ZWdlclR5
cGVDU1NQcmltaXRpdmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG9rZW5UeXBlRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lSW50ZWdl
clR5cGVDU1NQcmltaXRpdmVWYWx1ZVdpdGhDYWxjV2l0aEtub3duVG9rZW5UeXBlTnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU51bWJl
clJhd1dpdGhLbm93blRva2VuVHlwZUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBlcmNlbnRSYXdXaXRoS25vd25Ub2tlblR5cGVJZGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVQ
ZXJjZW50Q1NTUHJpbWl0aXZlVmFsdWVXaXRoQ2FsY1dpdGhLbm93blRva2VuVHlwZVBlcmNlbnRh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
TGVuZ3RoUmF3V2l0aEtub3duVG9rZW5UeXBlRGltZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUxlbmd0aFJhd1dpdGhLbm93blRva2Vu
VHlwZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OmNvbnN1bWVBbmdsZVJhd1dpdGhLbm93blRva2VuVHlwZURpbWVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVBbmdsZVJhd1dpdGhLbm93
blRva2VuVHlwZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnM6OmNvbnN1bWVUaW1lQ1NTUHJpbWl0aXZlVmFsdWVXaXRoQ2FsY1dpdGhLbm93blRva2Vu
VHlwZURpbWVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVUaW1lQ1NTUHJpbWl0aXZlVmFsdWVXaXRoQ2FsY1dpdGhLbm93blRva2VuVHlw
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNv
bnN1bWVSZXNvbHV0aW9uQ1NTUHJpbWl0aXZlVmFsdWVXaXRoS25vd25Ub2tlblR5cGVEaW1lbnNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
QW5nbGVSYXdPck51bWJlclJhd0FsbG93aW5nU3ltYm9sVGFibGVJZGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXJSYXdPclBlcmNl
bnRSYXdBbGxvd2luZ1N5bWJvbFRhYmxlSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRm9udFdlaWdodE51bWJlcldvcmtlclNhZmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVVy
bCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVs
YXRpdmVSR0JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6cGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlSFdCUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVM
YWJQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6cGFyc2VSZWxhdGl2ZUxDSFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VSZWxh
dGl2ZUNvbG9yRnVuY3Rpb25Gb3JYWVpQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudENvbG9yU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OmNvbnN1bWVDcm9zc0ZhZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRmlsdGVyRnVuY3Rpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyc1dvcmtlclNhZmU6OmNvbnN1bWVGb250U3R5bGVS
YW5nZSk6CisgICAgICAgICogY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OmVmZmVjdGl2ZVNpemVEZWZhdWx0VmFsdWUpOgorICAg
ICAgICAqIGNzcy90eXBlZG9tL1N0eWxlUHJvcGVydHlNYXBSZWFkT25seS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHk6OnJlaWZ5VmFsdWUpOgorICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVkRm9udFNpemUpOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlZ2FjeUZvbnRT
aXplRnJvbUNTU1ZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDaGFuZ2VzOjpjcmVhdGVTdHlsZVByb3BlcnRp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVMaXN0Rm9yU2hhZG93KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChzdHJpbmdG
cm9tQ1NTVmFsdWUpOgorICAgICAgICAoZmxvYXRWYWx1ZUZyb21QcmltaXRpdmVWYWx1ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudDo6YXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50OjphcHBseUFzcGVjdFJhdGlvRnJvbVdpZHRoQW5kSGVpZ2h0QXR0cmlidXRlc1Rv
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGlu
dHNGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0Zv
ckF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGlu
dHNGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjphdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkTWFza0ltYWdlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
dGVyRWxlbWVudDo6ZGlkRWxlbWVudFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y29s
bGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRp
b25NZXNzYWdlOjphZGp1c3RCdWJibGVQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
RGF0ZVRpbWVFZGl0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUVkaXRC
dWlsZGVyOjp2aXNpdExpdGVyYWwpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGV4dFN0cm9rZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OnVwZGF0ZVRleHRUcmFja1N0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6
OnNldFdpZHRoUGVyY2VudGFnZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRQbGFj
ZWhvbGRlckVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVu
dDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdl
bmVyaWM6OnNldEZvbnRTaXplKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRDdWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVFJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OmRpc3BsYXlMYXN0
VGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6d2lsbFJlbW92
ZVRleHRUcmFja0N1ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnByZXBhcmVS
ZWdpb25EaXNwbGF5VHJlZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vo
b2xkZXJzQXRDYXJldCk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlZFBhZ2VNYXJnaW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cmVzaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlDb21tb25CdXR0b25QYWRkaW5nVG9TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9uc1dpdGhGb3JtQ29udHJvbFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVJT1M6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnRTdHlsZSBjb25z
dCk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhl
bmF0ZUxpbWl0TGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6bW1MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OmluY2hMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24pOgorICAgICAgICAqIHN2Zy9TVkdMZW5n
dGhWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmltaXRpdmVUeXBlVG9MZW5ndGhUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1ByaW1pdGl2ZVR5cGUpOgorCiAyMDIx
LTA4LTI3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjc2ODgyKTogU2hhZG93IHRyZWVzIG1heSB1c2Ugc3RhbGUgc3R5bGUgaW5mb3Jt
YXRpb24gYWZ0ZXIgaW5saW5lIHN0eWxlc2hlZXQgaXMgbXV0YXRlZCB2aWEgQ1NTT00KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNWM1N2MwZTZlMjM0NzgyYmM4NjU2Y2I2ZWRhNjQxMTI2MTM4YTBhNS4uMWI4ZDVhMDU1
ZGUzMjdlMWJkYjE5NDc3YjJlNjY2MGQxYzIxZDE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMS0wOC0yNyAgS2lldCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgZW51bXMgaW4gQ1NTVW5pdFR5cGUgdG8gQ2FtZWxDYXNlIGFuZCByZW1vdmUgQ1NTXyBwcmVm
aXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYy
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OnVwZGF0ZUdlb21l
dHJ5KToKKwogMjAyMS0wOC0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYSB0eXBvIGluIGBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRl
Y29kZSgpYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKaW5kZXggNDY0OTI5OGQ4MWM5OGI4NDU1NWYxYmYxMWMxNDkwMzM1Y2U5YTZjZC4u
OTZkODNkNmY1Y2QwNTQ5YTk0ZTBkYWUzMjRjYTExYzQ1ODljYjE1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC00NTMsNyAr
NDUzLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U3R5bGVJbWFnZT4gY3Jvc3NmYWRlQmxlbmQo
U3R5bGVDYWNoZWRJbWFnZSogZnJvbVN0eWxlSW1hZ2UKIAogICAgIGF1dG8gZnJvbUltYWdlVmFs
dWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoKmZyb21TdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgp
KTsKICAgICBhdXRvIHRvSW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSgqdG9TdHls
ZUltYWdlLT5jYWNoZWRJbWFnZSgpKTsKLSAgICBhdXRvIHBlcmNlbnRhZ2VWYWx1ZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoY29udGV4dC5wcm9ncmVzcywgQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpOworICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb250ZXh0LnByb2dyZXNzLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKIAogICAgIGF1dG8g
Y3Jvc3NmYWRlVmFsdWUgPSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoZnJvbUlt
YWdlVmFsdWUpLCBXVEZNb3ZlKHRvSW1hZ2VWYWx1ZSksIFdURk1vdmUocGVyY2VudGFnZVZhbHVl
KSk7CiAgICAgcmV0dXJuIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNyb3Nz
ZmFkZVZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDYyYmIxNDRlZWM3OWYyYTRjNTQwZGNkNTNmMTdjOTAwNWVi
OGRiOTUuLmRiMjhkZDlhMDQ3ODk0MjVmZmRiZDdlM2IzNTVhYWE0M2RjY2Q5ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0xMDcsMTUgKzEwNywxNSBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZv
ckltYWdlU2xpY2VTaWRlKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIC8vIFRoZXNlIHZhbHVl
cyBjYW4gYmUgcGVyY2VudGFnZXMsIG51bWJlcnMsIG9yIHdoaWxlIGFuIGFuaW1hdGlvbiBvZiBt
aXhlZCB0eXBlcyBpcyBpbiBwcm9ncmVzcywKICAgICAvLyBhIGNhbGN1bGF0aW9uIHRoYXQgY29t
YmluZXMgYSBwZXJjZW50YWdlIGFuZCBhIG51bWJlci4KICAgICBpZiAobGVuZ3RoLmlzUGVyY2Vu
dCgpKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZShsZW5ndGgucGVyY2VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShsZW5ndGgucGVy
Y2VudCgpLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgaWYgKGxlbmd0aC5pc0F1dG8o
KSB8fCBsZW5ndGguaXNGaXhlZCgpKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1C
RVIpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZShsZW5ndGgudmFsdWUoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAKICAgICAvLyBDYWxjdWxh
dGluZyB0aGUgYWN0dWFsIGxlbmd0aCBjdXJyZW50bHkgaW4gdXNlIHdvdWxkIHJlcXVpcmUgbW9z
dCBvZiB0aGUgY29kZSBmcm9tIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUlt
YWdlLgogICAgIC8vIEFuZCBldmVuIGlmIHdlIGNvdWxkIGRvIHRoYXQsIGl0J3Mgbm90IGNsZWFy
IGlmIHRoYXQncyBleGFjdGx5IHdoYXQgd2UnZCB3YW50IGR1cmluZyBhbmltYXRpb24uCiAgICAg
Ly8gRklYTUU6IEZvciBub3csIGp1c3QgcmV0dXJuIDAuCiAgICAgQVNTRVJUKGxlbmd0aC5pc0Nh
bGN1bGF0ZWQoKSk7Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
VmFsdWUoMCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDAsIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogfQog
CiBzdGF0aWMgUmVmPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJ
bWFnZVNsaWNlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVh
ZChjb25zdCBMZW5ndGhCb3gmIGJveCwgYwogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCk7CiAKICAgICBpZiAoYm94LnRvcCgpLmlzUmVsYXRpdmUoKSkK
LSAgICAgICAgdG9wID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC50b3AoKS52YWx1ZSgp
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHRvcCA9IGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShib3gudG9wKCkudmFsdWUoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAg
ZWxzZQogICAgICAgICB0b3AgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LnRvcCgpLCBz
dHlsZSk7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5ndGhCb3gmIGJveCwgYwogICAg
ICAgICBsZWZ0ID0gdG9wOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChib3gucmlnaHQoKS5p
c1JlbGF0aXZlKCkpCi0gICAgICAgICAgICByaWdodCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShib3gucmlnaHQoKS52YWx1ZSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAg
ICAgICByaWdodCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3gucmlnaHQoKS52YWx1ZSgp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmlnaHQg
PSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LnJpZ2h0KCksIHN0eWxlKTsKIApAQCAtMTg2
LDcgKzE4Niw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yTmluZVBp
ZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94LCBjCiAgICAgICAgICAgICBsZWZ0ID0g
cmlnaHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYm94LmJvdHRvbSgpLmlz
UmVsYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBib3R0b20gPSBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoYm94LmJvdHRvbSgpLnZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAg
ICAgICAgICAgICAgICBib3R0b20gPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYm94LmJvdHRv
bSgpLnZhbHVlKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGJvdHRvbSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShib3guYm90dG9t
KCksIHN0eWxlKTsKIApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExlbmd0aEJveCYgYm94LCBj
CiAgICAgICAgICAgICAgICAgbGVmdCA9IHJpZ2h0OwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGJveC5sZWZ0KCkuaXNSZWxhdGl2ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBsZWZ0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC5sZWZ0KCkudmFsdWUoKSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC5sZWZ0KCkudmFsdWUoKSwgQ1NTVW5pdFR5cGU6Ok51
bWJlcik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsZWZ0ID0g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJveC5sZWZ0KCksIHN0eWxlKTsKICAgICAgICAgICAg
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmlu
ZVBpZWNlSW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlLCBjb25zdCBSCiAKIGlubGlu
ZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGRv
dWJsZSB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGFkanVzdEZsb2F0Rm9yQWJzb2x1dGVa
b29tKHZhbHVlLCBzdHlsZSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGFkanVzdEZsb2F0Rm9yQWJzb2x1dGVa
b29tKHZhbHVlLCBzdHlsZSksIENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIGlubGluZSBzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZShkb3VibGUgdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh2YWx1ZSAvIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlIC8gc3R5bGUuZWZmZWN0aXZlWm9vbSgpLCBDU1NVbml0
VHlwZTo6TnVtYmVyKTsKIH0KIAogc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHZhbHVlRm9yUmVmbGVjdGlvbihjb25zdCBTdHlsZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIGNv
bnN0CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldDsKICAgICBpZiAocmVm
bGVjdGlvbi0+b2Zmc2V0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIG9mZnNl
dCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUocmVmbGVjdGlvbi0+b2Zm
c2V0KCkucGVyY2VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBv
ZmZzZXQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJlZmxlY3Rpb24t
Pm9mZnNldCgpLnBlcmNlbnQoKSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgIGVsc2UK
ICAgICAgICAgb2Zmc2V0ID0gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyZWZsZWN0aW9uLT5vZmZz
ZXQoKS52YWx1ZSgpLCBzdHlsZSk7CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xv
cihjb25zdCBSZQogc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9v
bUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQog
ewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1VuaXRUeXBlOjpQZXJjZW50YWdl
KTsKICAgICAKICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChsZW5n
dGgsIHN0eWxlKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2
YWx1ZUZvclF1b3Rlcyhjb25zdCBRdW90ZXNEYXRhKiBxdW90ZXMpCiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
bmUpOwogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHF1b3Rlcy0+
b3BlblF1b3RlKGkpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORykpOwotICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShxdW90ZXMtPmNsb3Nl
UXVvdGUoaSksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHF1b3Rlcy0+b3BlblF1b3Rl
KGkpLCBDU1NVbml0VHlwZTo6U3RyaW5nKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHF1b3Rlcy0+Y2xvc2VRdW90ZShpKSwgQ1NT
VW5pdFR5cGU6OlN0cmluZykpOwogICAgIH0KICAgICByZXR1cm4gbGlzdDsKIH0KQEAgLTU0NCwz
NCArNTQ0LDM0IEBAIHN0YXRpYyBSZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gbWF0cml4VHJhbnNmb3Jt
VmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyCiAgICAgaWYgKHRyYW5zZm9ybS5p
c0FmZmluZSgpKSB7CiAgICAgICAgIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKENTU1ZhbHVlTWF0cml4KTsKIAotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0uYSgpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZSh0cmFuc2Zvcm0uYigpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAg
ICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFu
c2Zvcm0uYygpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0uZCgpLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0uYSgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHRyYW5zZm9ybS5iKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNm
b3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLmMoKSwg
Q1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0uZCgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KSk7CiAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoem9vbUFkanVzdGVkTnVtYmVyVmFs
dWUodHJhbnNmb3JtLmUoKSwgc3R5bGUpKTsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZCh6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZSh0cmFuc2Zvcm0uZigpLCBzdHlsZSkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRl
KENTU1ZhbHVlTWF0cml4M2QpOwogCi0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMTEoKSwgQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpKTsKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUodHJhbnNmb3JtLm0xMigpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAg
ICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFu
c2Zvcm0ubTEzKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAgIHRyYW5zZm9y
bVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMTQoKSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0xMSgpLCBDU1NVbml0VHlwZTo6
TnVtYmVyKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMTIoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAg
ICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zv
cm0ubTEzKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0xNCgpLCBDU1NVbml0
VHlwZTo6TnVtYmVyKSk7CiAKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0yMSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UikpOwotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZSh0cmFuc2Zvcm0ubTIyKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0gICAgICAg
IHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9y
bS5tMjMoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgdHJhbnNmb3JtVmFs
dWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0yNCgpLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTIxKCksIENTU1VuaXRUeXBlOjpOdW1i
ZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUodHJhbnNmb3JtLm0yMigpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgICAgIHRy
YW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5t
MjMoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTI0KCksIENTU1VuaXRUeXBl
OjpOdW1iZXIpKTsKIAotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTMxKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7
Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHRyYW5zZm9ybS5tMzIoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgdHJh
bnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0z
MygpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSh0cmFuc2Zvcm0ubTM0KCksIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMzEoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikp
OworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZSh0cmFuc2Zvcm0ubTMyKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNm
b3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm0zMygp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tMzQoKSwgQ1NTVW5pdFR5cGU6Ok51
bWJlcikpOwogCiAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoem9vbUFkanVzdGVkTnVt
YmVyVmFsdWUodHJhbnNmb3JtLm00MSgpLCBzdHlsZSkpOwogICAgICAgICB0cmFuc2Zvcm1WYWx1
ZS0+YXBwZW5kKHpvb21BZGp1c3RlZE51bWJlclZhbHVlKHRyYW5zZm9ybS5tNDIoKSwgc3R5bGUp
KTsKICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCh6b29tQWRqdXN0ZWROdW1iZXJWYWx1
ZSh0cmFuc2Zvcm0ubTQzKCksIHN0eWxlKSk7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHRyYW5zZm9ybS5tNDQoKSwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUodHJhbnNmb3JtLm00NCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlLnJlbGVhc2VOb25OdWxsKCk7CkBAIC02
MzcsMTIgKzYzNywxMiBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb21wdXRlZFNjYWxlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdAogICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCiAgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2NhbGUtPngoKSwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKTsKKyAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHNjYWxlLT54KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICBpZiAoc2NhbGUtPnoo
KSAhPSAxKSB7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2NhbGUtPnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzY2FsZS0+eigpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHNjYWxlLT55KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzY2FsZS0+eigpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KSk7CiAgICAgfSBlbHNlIGlmIChzY2FsZS0+eCgpICE9IHNjYWxlLT55KCkpCi0gICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2NhbGUtPnkoKSwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzY2FsZS0+eSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgcmV0dXJuIGxp
c3Q7CiB9CiAKQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb21wdXRl
ZFJvdGF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
bmUpOwogCiAgICAgaWYgKCFyb3RhdGUtPmlzM0RPcGVyYXRpb24oKSB8fCAoIXJvdGF0ZS0+eCgp
ICYmICFyb3RhdGUtPnkoKSAmJiByb3RhdGUtPnooKSkpCi0gICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUocm90YXRlLT5hbmdsZSgpLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7
CisgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUocm90YXRlLT5hbmdsZSgp
LCBDU1NVbml0VHlwZTo6RGVnKTsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKIApAQCAtNjYzLDE5ICs2NjMsMTkgQEAgc3RhdGljIFJlZjxD
U1NWYWx1ZT4gY29tcHV0ZWRSb3RhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVu
ZGVyU3R5bGUmIHMKICAgICBlbHNlIGlmICghcm90YXRlLT54KCkgJiYgcm90YXRlLT55KCkgJiYg
IXJvdGF0ZS0+eigpKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyb3RhdGUtPngoKSwgQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIpKTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShyb3RhdGUtPnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShyb3RhdGUtPnooKSwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShyb3RhdGUtPngoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJvdGF0ZS0+eSgpLCBDU1NVbml0VHlwZTo6
TnVtYmVyKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
cm90YXRlLT56KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICB9CiAKLSAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJvdGF0ZS0+YW5nbGUoKSwgQ1NTVW5pdFR5
cGU6OkNTU19ERUcpKTsKKyAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHJvdGF0ZS0+YW5nbGUoKSwgQ1NTVW5pdFR5cGU6OkRlZykpOwogCiAgICAgcmV0dXJuIGxpc3Q7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5ndGhG
b3Jab29tKGRvdWJsZSBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQWRqdXN0UGl4
ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkKIHsKLSAgICByZXR1cm4gYWRqdXN0ID09
IEFkanVzdFBpeGVsVmFsdWVzID8gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShsZW5ndGgsIHN0eWxl
KSA6IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUobGVuZ3RoLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKTsKKyAgICByZXR1cm4gYWRqdXN0ID09IEFkanVzdFBpeGVsVmFsdWVzID8g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShsZW5ndGgsIHN0eWxlKSA6IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlVmFsdWUobGVuZ3RoLCBDU1NVbml0VHlwZTo6UHgpOwogfQogCiBzdGF0
aWMgaW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShjb25z
dCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBBZGp1c3RQaXhlbFZh
bHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQpAQCAtNzE2LDMzICs3MTYsMzMgQEAgUmVmPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGMKIAogICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJhdGlvbi51cmwoKSwgQ1NTVW5p
dFR5cGU6OkNTU19VUkkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUocmVmZXJlbmNlT3BlcmF0aW9uLnVybCgpLCBDU1NVbml0VHlwZTo6VVJJKSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4g
ZmlsdGVyVmFsdWU7CiAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi50eXBlKCkp
IHsKICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKICAgICAg
ICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1
ZUdyYXlzY2FsZSk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsK
KyAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVy
YXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
U0VQSUE6IHsKICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZVNlcGlhKTsKLSAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpOworICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+
KGZpbHRlck9wZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURTogewogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gQ1NT
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlU2F0dXJhdGUpOwotICAgICAgICAgICAgICAg
IGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1vdW50KCks
IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6
Ok51bWJlcikpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKICAgICAgICAgICAgICAg
ICBmaWx0ZXJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUh1ZVJvdGF0
ZSk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVy
T3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKKyAgICAgICAgICAg
ICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2Fz
dDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3Vu
dCgpLCBDU1NVbml0VHlwZTo6RGVnKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7CiAgICAg
ICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFs
dWVJbnZlcnQpOwotICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb24+KGZpbHRlck9wZXJhdGlvbikuYW1vdW50KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVS
KSk7CisgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4o
ZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkFQUExFX0lOVkVSVF9MSUdIVE5FU1M6IHsKQEAgLTc1MSwxNyArNzUxLDE3IEBA
IFJlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogewogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVl
ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlT3BhY2l0eSk7Ci0gICAgICAgICAg
ICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNh
c3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9u
KS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICBm
aWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3Vu
dCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzog
ewogICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRl
KENTU1ZhbHVlQnJpZ2h0bmVzcyk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKS5hbW91bnQoKSwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKICAgICAgICAgICAgICAgICBmaWx0ZXJW
YWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUNvbnRyYXN0KTsKLSAgICAg
ICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShk
b3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVy
YXRpb24pLmFtb3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAg
ICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0
PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbiku
YW1vdW50KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7
CkBAIC03OTEsNyArNzkxLDcgQEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGMKIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkTGVu
Z3RoJiB0cmFja0JyZWFkdGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBpZiAo
IXRyYWNrQnJlYWR0aC5pc0xlbmd0aCgpKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh0cmFja0JyZWFkdGguZmxleCgpLCBDU1NVbml0VHlwZTo6
Q1NTX0ZSKTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
VmFsdWUodHJhY2tCcmVhZHRoLmZsZXgoKSwgQ1NTVW5pdFR5cGU6OkZsZXgpOwogCiAgICAgY29u
c3QgTGVuZ3RoJiB0cmFja0JyZWFkdGhMZW5ndGggPSB0cmFja0JyZWFkdGgubGVuZ3RoKCk7CiAg
ICAgaWYgKHRyYWNrQnJlYWR0aExlbmd0aC5pc0F1dG8oKSkKQEAgLTgxMiw3ICs4MTIsNyBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoY29uc3Qg
R3JpZFRyYWNrU2l6ZSYgdHJhY2tTaQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVCh0cmFj
a1NpemUudHlwZSgpID09IE1pbk1heFRyYWNrU2l6aW5nKTsKICAgICAgICAgaWYgKHRyYWNrU2l6
ZS5taW5UcmFja0JyZWFkdGgoKS5pc0F1dG8oKSAmJiB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRo
KCkuaXNGbGV4KCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpLCBDU1NVbml0
VHlwZTo6Q1NTX0ZSKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4KCksIENTU1Vu
aXRUeXBlOjpGbGV4KTsKIAogICAgICAgICBhdXRvIG1pbk1heFRyYWNrQnJlYWR0aHMgPSBDU1NG
dW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVNaW5tYXgpOwogICAgICAgICBtaW5NYXhUcmFj
a0JyZWFkdGhzLT5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNr
U2l6ZS5taW5UcmFja0JyZWFkdGgoKSwgc3R5bGUpKTsKQEAgLTEwNDYsOSArMTA0Niw5IEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0IEdyaWRQb3NpdGlv
biYgcG9zaXRpb24pCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOwogICAgIGlmIChwb3NpdGlvbi5pc1NwYW4oKSkgewogICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4pKTsK
LSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5z
cGFuUG9zaXRpb24oKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSwg
Q1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgIH0gZWxzZQotICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpLCBDU1NVbml0VHlwZTo6TnVt
YmVyKSk7CiAKICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkKICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVDdXN0b21JZGVudChwb3NpdGlv
bi5uYW1lZEdyaWRMaW5lKCkpKTsKQEAgLTEzMjQsMTAgKzEzMjQsMTAgQEAgc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGRlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9uTGlz
dCkKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CiAgICAgaWYgKGFuaW1hdGlvbkxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhbmltYXRpb25MaXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5
KCksIENTU1VuaXRUeXBlOjpDU1NfUykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuZGVsYXkoKSwg
Q1NTVW5pdFR5cGU6OlNlY29uZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhh
dCBpbml0aWFsQW5pbWF0aW9uRGVsYXkoKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFu
ZCBhbmltYXRpb25zCi0gICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSwgQ1NTVW5pdFR5cGU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRGVsYXkoKSwgQ1NTVW5pdFR5cGU6OlNlY29uZCkpOwogICAgIH0KICAgICByZXR1cm4gbGlz
dDsKIH0KQEAgLTEzMzgsMTAgKzEzMzgsMTAgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGR1
cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9uTGlzdCkKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFu
aW1hdGlvbkxpc3QpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25M
aXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmR1cmF0aW9uKCksIENTU1Vu
aXRUeXBlOjpDU1NfUykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSkuZHVyYXRpb24oKSwgQ1NTVW5p
dFR5cGU6OlNlY29uZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0
aWFsQW5pbWF0aW9uRHVyYXRpb24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBh
bmltYXRpb25zCi0gICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
QW5pbWF0aW9uOjppbml0aWFsRHVyYXRpb24oKSwgQ1NTVW5pdFR5cGU6OkNTU19TKSk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0
aWFsRHVyYXRpb24oKSwgQ1NTVW5pdFR5cGU6OlNlY29uZCkpOwogICAgIH0KICAgICByZXR1cm4g
bGlzdDsKIH0KQEAgLTE2MTYsNyArMTYxNiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHRleHRV
bmRlcmxpbmVPZmZzZXRUb0NTU1ZhbHVlKGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIHRlCiAg
ICAgaWYgKHRleHRVbmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8p
OwogICAgIEFTU0VSVCh0ZXh0VW5kZXJsaW5lT2Zmc2V0LmlzTGVuZ3RoKCkpOwotICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRleHRVbmRlcmxpbmVPZmZz
ZXQubGVuZ3RoVmFsdWUoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dFVuZGVybGluZU9mZnNldC5sZW5n
dGhWYWx1ZSgpLCBDU1NVbml0VHlwZTo6UHgpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzc1RvQ1NTVmFsdWUoY29uc3QgVGV4dERlY29yYXRpb25UaGlj
a25lc3MmIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKQpAQCAtMTYyNiw3ICsxNjI2LDcgQEAgc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKGNvbnN0
IFRleHREZWNvcmF0aW9uVGhpY2sKICAgICBpZiAodGV4dERlY29yYXRpb25UaGlja25lc3MuaXNG
cm9tRm9udCgpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGcm9tRm9udCk7CiAgICAgQVNTRVJUKHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLmlzTGVuZ3RoKCkpOwotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmxlbmd0aFZhbHVl
KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmxlbmd0aFZhbHVlKCks
IENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9u
PiB0ZXh0RW1waGFzaXNQb3NpdGlvbikKQEAgLTE3MzAsNyArMTczMCw3IEBAIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNv
bnN0IFJlbmRlclN0CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGFsdFRleHRUb0NTU1ZhbHVlKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShzdHlsZS5jb250ZW50QWx0VGV4dCgpLCBDU1NVbml0VHlwZTo6
Q1NTX1NUUklORyk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
VmFsdWUoc3R5bGUuY29udGVudEFsdFRleHQoKSwgQ1NTVW5pdFR5cGU6OlN0cmluZyk7CiB9CiAg
ICAgCiBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQpAQCAtMTczOSwxMSArMTczOSwxMSBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBm
b3IgKGF1dG8qIGNvbnRlbnREYXRhID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVudERhdGE7
IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewogICAgICAgICBpZiAoaXM8Q291
bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpj
b250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIoKSwgQ1NTVW5pdFR5cGU6OkNTU19DT1VO
VEVSX05BTUUpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIo
KS5pZGVudGlmaWVyKCksIENTU1VuaXRUeXBlOjpDb3VudGVyTmFtZSkpOwogICAgICAgICBlbHNl
IGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKQogICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2Uo
KS5jc3NWYWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRhPigqY29u
dGVudERhdGEpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkudGV4dCgpLCBDU1NV
bml0VHlwZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSku
dGV4dCgpLCBDU1NVbml0VHlwZTo6U3RyaW5nKSk7CiAgICAgfQogICAgIHJldHVybiBsaXN0Owog
fQpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gY291bnRlclRvQ1NT
VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHAKICAgICBmb3Ig
KGF1dG8mIGtleVZhbHVlIDogKm1hcCkgewogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZUN1c3RvbUlkZW50KGtleVZhbHVlLmtleSkpOwogICAgICAgICBkb3VibGUgbnVt
YmVyID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8ga2V5VmFs
dWUudmFsdWUuaW5jcmVtZW50VmFsdWUgOiBrZXlWYWx1ZS52YWx1ZS5yZXNldFZhbHVlKS52YWx1
ZV9vcigwKTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShu
dW1iZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobnVtYmVyLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAg
ICAgfQogICAgIHJldHVybiBsaXN0OwogfQpAQCAtMTgwMSw3ICsxODAxLDcgQEAgc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogCiBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OmZvbnROb25LZXl3b3JkV2VpZ2h0RnJvbVN0eWxlVmFsdWUoRm9udFNlbGVjdGlvblZhbHVlIHdl
aWdodCkKIHsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZShzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0KSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwor
ICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHN0YXRpY19j
YXN0PGZsb2F0Pih3ZWlnaHQpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKIH0KIAogUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250V2VpZ2h0RnJvbVN0eWxl
VmFsdWUoRm9udFNlbGVjdGlvblZhbHVlIHdlaWdodCkKQEAgLTE4MTgsNyArMTgxOCw3IEBAIHN0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogCiBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmZvbnROb25LZXl3b3JkU3RyZXRjaEZyb21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rp
b25WYWx1ZSBzdHJldGNoKQogewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihzdHJldGNoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QRVJDRU5UQUdFKTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oc3RyZXRjaCksIENTU1VuaXRUeXBlOjpQZXJjZW50
YWdlKTsKIH0KIAogUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpmb250U3RyZXRjaEZyb21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQpA
QCAtMTgzNSw3ICsxODM1LDcgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFN0
cmV0Y2hGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBSZWY8Q1NTRm9udFN0
eWxlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnROb25LZXl3b3JkU3R5bGVGcm9t
U3R5bGVWYWx1ZShGb250U2VsZWN0aW9uVmFsdWUgaXRhbGljKQogewotICAgIHJldHVybiBDU1NG
b250U3R5bGVWYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlT2JsaXF1ZSksIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlVmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGl0YWxpYyksIENTU1VuaXRUeXBlOjpDU1Nf
REVHKSk7CisgICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPYmxpcXVlKSwgQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oaXRh
bGljKSwgQ1NTVW5pdFR5cGU6OkRlZykpOwogfQogCiBSZWY8Q1NTRm9udFN0eWxlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRTdHlsZUZyb21TdHlsZVZhbHVlKHN0ZDo6b3B0aW9u
YWw8Rm9udFNlbGVjdGlvblZhbHVlPiBpdGFsaWMsIEZvbnRTdHlsZUF4aXMgZm9udFN0eWxlQXhp
cykKQEAgLTI0OTgsNyArMjQ5OCw3IEBAIHN0YXRpYyBSZWY8Q1NTRm9udFZhbHVlPiBmb250U2hv
cnRoYW5kVmFsdWVGb3JTZWxlY3Rpb25Qcm9wZXJ0aWVzKGNvbnN0IEZvbnREZXNjCiAgICAgaWYg
KGF1dG8gdmFsdWUgPSBmb250V2VpZ2h0S2V5d29yZCh3ZWlnaHQpKQogICAgICAgICBjb21wdXRl
ZEZvbnQtPndlaWdodCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKHZhbHVlLnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGlzQ1NTMjFXZWlnaHQod2VpZ2h0
KSkKLSAgICAgICAgY29tcHV0ZWRGb250LT53ZWlnaHQgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHQpLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUik7CisgICAgICAgIGNvbXB1dGVkRm9udC0+d2VpZ2h0ID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0KSwgQ1NT
VW5pdFR5cGU6Ok51bWJlcik7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gQ1NTRm9udFZhbHVl
OjpjcmVhdGUoKTsKIApAQCAtMjc0NiwxMyArMjc0NiwxMyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRl
clN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgogICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hEaXJlY3Rpb24o
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgotICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hGbGV4KCksIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUuYm94RmxleCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoKLSAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm94RmxleEdyb3VwKCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUuYm94RmxleEdyb3VwKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveExpbmVzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hPcmRpbmFsR3JvdXAoKSwgQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS5ib3hPcmRpbmFsR3JvdXAoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveE9yaWVudCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFBhY2s6CkBAIC0yNzc3LDcgKzI3NzcsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJl
bmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uQ291bnQ6CiAgICAgICAgICAg
ICBpZiAoc3R5bGUuaGFzQXV0b0NvbHVtbkNvdW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKLSAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuY29sdW1uQ291bnQo
KSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5jb2x1bW5Db3VudCgpLCBDU1NVbml0VHlwZTo6TnVtYmVy
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkZpbGw6CiAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmNvbHVtbkZpbGwoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5HYXA6CkBAIC0yODA5LDcgKzI4MDksNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxl
KGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBzdHlsZSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVscygxLjApLCBzdHlsZS50
YWJTaXplKCkuaXNTcGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5
cGU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1Nw
YWNlcygpID8gQ1NTVW5pdFR5cGU6Ok51bWJlciA6IENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0gc3R5bGUuY3Vyc29ycygpOwpA
QCAtMjg2OSw3ICsyODY5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBsYWNlU2VsZjoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMocGxhY2VTZWxmU2hvcnRoYW5kKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9yZGVyKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsK
KyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3JkZXIo
KSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoK
ICAgICAgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYg
c3R5bGUuaGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtMjk4NSwx
OSArMjk4NSwxOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZh
bHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgogICAgICAgICAgICAgaWYgKHN0eWxlLmh5
cGhlbmF0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaHlwaGVuYXRpb25TdHJpbmco
KSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5oeXBoZW5hdGlvblN0cmluZygpLCBDU1NVbml0VHlwZTo6
U3RyaW5nKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0
ZXI6CiAgICAgICAgICAgICBpZiAoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgPCAwKQog
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxl
Lmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlOgogICAgICAgICAgICAg
aWYgKHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSA8IDApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7
Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS5oeXBo
ZW5hdGlvbkxpbWl0QmVmb3JlKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLmh5cGhlbmF0aW9uTGlt
aXRCZWZvcmUoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzOgogICAgICAgICAgICAgaWYgKHN0eWxlLmh5cGhl
bmF0aW9uTGltaXRMaW5lcygpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb0xpbWl0KTsKLSAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLmh5cGhlbmF0aW9uTGltaXRM
aW5lcygpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS5oeXBoZW5hdGlvbkxpbWl0TGluZXMoKSwgQ1NT
VW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJG
aXQ6CiAgICAgICAgICAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0OjpCb3Jk
ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVCb3JkZXIpOwpAQCAtMzAxMCw3ICszMDEwLDcgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25z
dCBSZW5kZXJTdHkKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHN0eWxlLmltYWdlUmVuZGVyaW5nKCkpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjoKLSAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW1hZ2VSZXNvbHV0aW9uKCks
IENTU1VuaXRUeXBlOjpDU1NfRFBQWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLmltYWdlUmVzb2x1dGlvbigpLCBDU1NVbml0VHlwZTo6RG90c1Bl
clBpeGVsKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKICAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLCBDU1NQcm9wZXJ0eUxlZnQsIHJl
bmRlcmVyKTsKQEAgLTMwMjEsNyArMzAyMSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CiAgICAgICAgICAgICBpZiAo
c3R5bGUubGluZUNsYW1wKCkuaXNOb25lKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGluZUNsYW1wKCkudmFsdWUo
KSwgc3R5bGUubGluZUNsYW1wKCkuaXNQZXJjZW50YWdlKCkgPyBDU1NVbml0VHlwZTo6Q1NTX1BF
UkNFTlRBR0UgOiBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxpbmVDbGFtcCgpLnZhbHVlKCksIHN0eWxl
LmxpbmVDbGFtcCgpLmlzUGVyY2VudGFnZSgpID8gQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UgOiBD
U1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6
CiAgICAgICAgICAgICByZXR1cm4gbGluZUhlaWdodEZyb21TdHlsZShzdHlsZSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKQEAgLTMwMzIsNyArMzAzMiw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLmxpc3RTdHlsZVBvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZToKICAgICAgICAgICAgIGlmIChzdHlsZS5saXN0U3R5bGVUeXBl
KCkgPT0gTGlzdFN0eWxlVHlwZTo6U3RyaW5nKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlU3RyaW5nVmFsdWUoKSwgQ1NTVW5p
dFR5cGU6OkNTU19TVFJJTkcpOworICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlU3RyaW5nVmFsdWUoKSwgQ1NTVW5pdFR5cGU6OlN0
cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
Lmxpc3RTdHlsZVR5cGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6
CiAgICAgICAgICAgICBpZiAoc3R5bGUuc3BlY2lmaWVkTG9jYWxlKCkuaXNOdWxsKCkpCkBAIC0z
MDk1LDExICszMDk1LDExIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICBy
ZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToK
LSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3BhY2l0
eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9wYWNpdHkoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgogICAgICAgICAgICAgaWYgKHN0eWxl
Lmhhc0F1dG9PcnBoYW5zKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3JwaGFucygpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLm9ycGhhbnMoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlPdXRsaW5lQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHls
ZSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpIDogY3VycmVudENvbG9yT3JWYWxpZENvbG9y
KCZzdHlsZSwgc3R5bGUub3V0bGluZUNvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZU9mZnNldDoKQEAgLTMxOTksNyArMzE5OSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVy
U3R5CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6Ok5vbmU6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKICAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Q3VzdG9tOgotICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhh
c2lzQ3VzdG9tTWFyaygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNDdXN0
b21NYXJrKCksIENTU1VuaXRUeXBlOjpTdHJpbmcpOwogICAgICAgICAgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrOjpBdXRvOgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2lmICFBU1NFUlRfRU5BQkxFRApAQCAtMzI0NSw3ICszMjQ1LDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBS
ZW5kZXJTdHkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgaWYgKHN0eWxlLnRleHRTaXpl
QWRqdXN0KCkuaXNOb25lKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLnRleHRTaXplQWRqdXN0KCkucGVyY2VudGFn
ZSgpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUudGV4dFNpemVBZGp1c3QoKS5wZXJjZW50YWdl
KCksIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRD
b2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0eWxlLnRleHRTdHJva2VDb2xvcigpKTsKQEAgLTMy
ODksNyArMzI4OSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXaWRvd3M6CiAgICAgICAgICAgICBpZiAoc3R5bGUuaGFzQXV0b1dpZG93cygpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLndpZG93cygpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLndpZG93cygpLCBDU1NVbml0
VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNSZW5kZXJTVkdNb2RlbE9iamVjdCgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL0NT
UzIvdmlzdWRldC5odG1sI3RoZS13aWR0aC1wcm9wZXJ0eSwKQEAgLTMzMzEsOSArMzMzMSw5IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0
eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6
CiAgICAgICAgICAgICBpZiAoc3R5bGUuaGFzQXV0b1NwZWNpZmllZFpJbmRleCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLnNwZWNpZmllZFpJbmRleCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnNwZWNpZmllZFpJbmRl
eCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206
Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnpvb20o
KSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS56b29tKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgogICAgICAgICAgICAgaWYgKHN0eWxlLmJv
eFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCkKICAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRlbnRCb3gp
OwpAQCAtMzM5OSwxMCArMzM5OSwxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uQ291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25D
b3VudEluZmluaXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJbmZpbml0ZSkpOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGl0ZXJhdGlvbkNvdW50LCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShpdGVyYXRpb25Db3VudCwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRl
cmF0aW9uQ291bnQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlh
bEl0ZXJhdGlvbkNvdW50KCksIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICAgICAgICAgIHJl
dHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25O
YW1lOiB7CkBAIC0zNDE0LDcgKzM0MTQsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAg
ICAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUN1c3RvbUlkZW50KG5hbWUu
c3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobmFtZS5zdHJpbmcsIENT
U1VuaXRUeXBlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKG5hbWUuc3RyaW5nLCBDU1NVbml0VHlwZTo6
U3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVOb25lKSk7CkBAIC0zNDUyLDggKzM0NTIsOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRl
clN0eQogICAgICAgICAgICAgY2FzZSBBc3BlY3RSYXRpb1R5cGU6OkF1dG9BbmRSYXRpbzoKICAg
ICAgICAgICAgIGNhc2UgQXNwZWN0UmF0aW9UeXBlOjpSYXRpbzogewogICAgICAgICAgICAgICAg
IGF1dG8gcmF0aW9MaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwot
ICAgICAgICAgICAgICAgIHJhdGlvTGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS5hc3BlY3RSYXRpb1dpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Ci0g
ICAgICAgICAgICAgICAgcmF0aW9MaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLmFzcGVjdFJhdGlvSGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSk7Cisg
ICAgICAgICAgICAgICAgcmF0aW9MaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLmFzcGVjdFJhdGlvV2lkdGgoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgICAg
ICAgICAgICAgIHJhdGlvTGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS5hc3BlY3RSYXRpb0hlaWdodCgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLmFzcGVjdFJhdGlvVHlwZSgpICE9IEFzcGVjdFJhdGlvVHlwZTo6QXV0
b0FuZFJhdGlvKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmF0aW9MaXN0OwogICAgICAg
ICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKQEAgLTM1MTMsOCArMzUxMyw4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAg
ICAgICAvLyBOb3QgYSByZWFsIHN0eWxlIHByb3BlcnR5IC0tIHVzZWQgYnkgdGhlIGVkaXRpbmcg
ZW5naW5lIC0tIHNvIGhhcyBubyBjb21wdXRlZCB2YWx1ZS4KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SW5pdGlhbExldHRlcjogewotICAgICAgICAg
ICAgYXV0byBkcm9wID0gIXN0eWxlLmluaXRpYWxMZXR0ZXJEcm9wKCkgPyBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS5pbml0aWFsTGV0dGVyRHJvcCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
Uik7Ci0gICAgICAgICAgICBhdXRvIHNpemUgPSAhc3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgp
ID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkgOiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5bGUuaW5p
dGlhbExldHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmluaXRpYWxMZXR0
ZXJEcm9wKCksIENTU1VuaXRUeXBlOjpOdW1iZXIpOworICAgICAgICAgICAgYXV0byBzaXplID0g
IXN0eWxlLmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShXVEZNb3ZlKGRy
b3ApLCBXVEZNb3ZlKHNpemUpKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgpAQCAtMzY1Niw5ICszNjU2LDkgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHls
ZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRv
JiBhbmltYXRpb24gPSBhbmltYXRpb25MaXN0LT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShhbmltYXRp
b24pKTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShhbmltYXRpb24uZHVyYXRpb24oKSwgQ1NTVW5pdFR5cGU6OkNTU19TKSk7CisgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5p
bWF0aW9uLmR1cmF0aW9uKCksIENTU1VuaXRUeXBlOjpTZWNvbmQpKTsKICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoKmFuaW1hdGlvbi50
aW1pbmdGdW5jdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1VuaXRUeXBlOjpDU1Nf
UykpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKGFuaW1hdGlvbi5kZWxheSgpLCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBwZW5kKFdURk1vdmUobGlzdCkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvbnNMaXN0OwpA
QCAtMzY2Nyw5ICszNjY3LDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgIC8vIHRyYW5zaXRpb24tcHJvcGVydHkgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
QWxsKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KEFuaW1hdGlvbjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1VuaXRUeXBlOjpDU1NfUykpOworICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShBbmltYXRpb246
OmluaXRpYWxEdXJhdGlvbigpLCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShBbmltYXRpb246OmluaXRpYWxU
aW1pbmdGdW5jdGlvbigpKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbERlbGF5KCksIENTU1VuaXRUeXBlOjpDU1Nf
UykpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NVbml0VHlwZTo6U2Vjb25kKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50czoKQEAgLTM3MDUsNyArMzcwNSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5
CiAgICAgICAgICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICAg
ICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShkb3duY2FzdDxSZWZl
cmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikudXJsKCksIENTU1VuaXRUeXBlOjpD
U1NfVVJJKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikudXJsKCks
IENTU1VuaXRUeXBlOjpVUkkpOwogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKGlzPFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgc2hhcGVP
cGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKTsK
QEAgLTM3MjAsNyArMzcyMCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUuc2hhcGVNYXJnaW4oKSwgc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuc2hhcGVJbWFnZVRocmVzaG9sZCgpLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLnNoYXBlSW1hZ2VUaHJlc2hvbGQoKSwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU91dHNpZGU6CiAgICAgICAgICAgICByZXR1
cm4gc2hhcGVQcm9wZXJ0eVZhbHVlKHN0eWxlLCBzdHlsZS5zaGFwZU91dHNpZGUoKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlGaWx0ZXI6CkBAIC0zOTI4LDcgKzM5MjgsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxl
KGNvbnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlQ29sb3I6CiAg
ICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUu
c3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0
OgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUuc3Ry
b2tlTWl0ZXJMaW1pdCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS5zdHJva2VNaXRlckxpbWl0KCks
IENTU1VuaXRUeXBlOjpOdW1iZXIpOwogCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6
CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JRdW90ZXMoc3R5bGUucXVvdGVzKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5kZXggMmRmZjViMTUxNWMyOWE2
MDdkZDA4MThmMDE4MGU4M2NlZGI3NzczMi4uM2Q2YTg4YzNkYWYxMmI3YjM2YTI1Y2VlYmI3OTg4
YzA0MDIzNzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBA
IC0yMTgsNyArMjE4LDcgQEAgUmVmUHRyPENTU0Nyb3NzZmFkZVZhbHVlPiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6YmxlbmQoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIGZyb20KICAgICBkb3VibGUgdG9Q
ZXJjZW50YWdlID0gbV9wZXJjZW50YWdlVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgaWYgKG1f
cGVyY2VudGFnZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgdG9QZXJjZW50YWdlIC89
IDEwMC4wOwotICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShibGVuZEZ1bmMoZnJvbVBlcmNlbnRhZ2UsIHRvUGVyY2VudGFnZSwgY29udGV4dCksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICBhdXRvIHBlcmNlbnRhZ2VWYWx1ZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoYmxlbmRGdW5jKGZyb21QZXJjZW50YWdlLCB0b1BlcmNlbnRh
Z2UsIGNvbnRleHQpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKIAogICAgIHJldHVybiBDU1NDcm9z
c2ZhZGVWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoZnJvbUltYWdlVmFsdWUpLCBXVEZNb3ZlKHRvSW1h
Z2VWYWx1ZSksIFdURk1vdmUocGVyY2VudGFnZVZhbHVlKSwgZnJvbS5pc1ByZWZpeGVkKCkgJiYg
aXNQcmVmaXhlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmNwcAppbmRleCA4MjBlMGRlM2Q4MWY3ZTY2YTJjOTEwMmFhYTgwMGE5NmZlMjBjMmRl
Li4xZTU5MDc0MDEyZWNkYjQ0MTBlOWRlMTcyMTM2ZjQxN2JmZjBlYzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IFN0cmluZyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAg
ICAgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkgewogICAgICAg
ICAgICAgbV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT50b2tlblJhbmdlKCkuc2VyaWFsaXplKCk7CiAg
ICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0cmlu
Z1ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS52YWx1ZSgpLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUudmFsdWUoKSwgQ1NTVW5pdFR5cGU6OlB4KS0+
Y3NzVGV4dCgpOwogICAgICAgICB9LCBbJl0oY29uc3QgUmVmPFN0eWxlSW1hZ2U+JiB2YWx1ZSkg
ewogICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT5jc3NWYWx1ZSgpLT5jc3NUZXh0
KCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggMGIwN2E2
NGI2ODJiNTI5YTc2OTAxNzllNThkMTM4NzM2NWI2Mzg1OC4uMDgyZTQwZTBhODkwNGVkMjE2YTkz
NWY4NTI5MWFkZjg4MjM4N2Y2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0y
MzcsMTQgKzIzNywxNCBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZUl0YWxp
Y1JhbmdlKENTU1ZhbHVlJiB2YWx1ZSkKICAgICBhdXRvIGxlbmd0aCA9IHJhbmdlVmFsdWUub2Js
aXF1ZVZhbHVlcy0+bGVuZ3RoKCk7CiAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpyYW5nZVZh
bHVlLm9ibGlxdWVWYWx1ZXMtPml0ZW0oMCkpOwotICAgICAgICBGb250U2VsZWN0aW9uVmFsdWUg
cmVzdWx0KHByaW1pdGl2ZVZhbHVlLnZhbHVlPGZsb2F0PihDU1NVbml0VHlwZTo6Q1NTX0RFRykp
OworICAgICAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0KHByaW1pdGl2ZVZhbHVlLnZhbHVl
PGZsb2F0PihDU1NVbml0VHlwZTo6RGVnKSk7CiAgICAgICAgIHJldHVybiB7IHJlc3VsdCwgcmVz
dWx0IH07CiAgICAgfQogICAgIEFTU0VSVChsZW5ndGggPT0gMik7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUxID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpyYW5nZVZhbHVlLm9ibGlx
dWVWYWx1ZXMtPml0ZW0oMCkpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlMiA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqcmFuZ2VWYWx1ZS5vYmxpcXVlVmFsdWVzLT5pdGVtKDEpKTsK
LSAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0MShwcmltaXRpdmVWYWx1ZTEudmFsdWU8Zmxv
YXQ+KENTU1VuaXRUeXBlOjpDU1NfREVHKSk7Ci0gICAgRm9udFNlbGVjdGlvblZhbHVlIHJlc3Vs
dDIocHJpbWl0aXZlVmFsdWUyLnZhbHVlPGZsb2F0PihDU1NVbml0VHlwZTo6Q1NTX0RFRykpOwor
ICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQxKHByaW1pdGl2ZVZhbHVlMS52YWx1ZTxmbG9h
dD4oQ1NTVW5pdFR5cGU6OkRlZykpOworICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQyKHBy
aW1pdGl2ZVZhbHVlMi52YWx1ZTxmbG9hdD4oQ1NTVW5pdFR5cGU6OkRlZykpOwogICAgIHJldHVy
biB7IHJlc3VsdDEsIHJlc3VsdDIgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTdHlsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFN0eWxl
VmFsdWUuaAppbmRleCA4NjI0ZGY4NjRmM2M1M2M2OWJhYTgzN2NlM2U5ODg4M2Y5M2ZlMDgwLi5i
NWQzOWRhZmY4MGYzMzcxYzEwNzJkZDRmN2ZmZmMzM2IyYjY0N2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFN0eWxlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFN0eWxlVmFsdWUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBhdXRvIHZhbHVlSUQgPSBmb250U3R5bGVWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJdGFsaWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU9ibGlxdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG9ibGlxdWVWYWx1ZS0+dmFsdWU8
ZmxvYXQ+KENTU1VuaXRUeXBlOjpDU1NfREVHKSA+PSBzdGF0aWNfY2FzdDxmbG9hdD4oaXRhbGlj
VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBvYmxpcXVlVmFsdWUtPnZhbHVlPGZsb2F0PihDU1NV
bml0VHlwZTo6RGVnKSA+PSBzdGF0aWNfY2FzdDxmbG9hdD4oaXRhbGljVmFsdWUoKSk7CiAgICAg
fQogCiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVWYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA1Y2ZjYWNjZjkwYzlkM2JiMmI0OWZl
NTIxNGI2Y2Y1ZjgyMWNkYmMyLi4yNGMxZWEwYzJlNTU2NzE5Y2RjZDZmZmNkMWVlMTgwYTlkNWMy
M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zMTMsOSAr
MzEzLDkgQEAgR3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21w
dXRlU3RvcHMoR3JhZGllbnRBZGFwdGVyJiBncmFkaWUKICAgICAgICAgZm9yIChhdXRvJiBzdG9w
IDogbV9zdG9wcykgewogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0OwogICAgICAgICAgICAgaWYg
KHN0b3AucG9zaXRpb24tPmlzUGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIG9mZnNldCA9
IHN0b3AucG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKSAv
IDEwMDsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9wLnBvc2l0aW9uLT5mbG9hdFZhbHVl
KENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBvZmZzZXQgPSBzdG9wLnBvc2l0aW9uLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9wLnBvc2l0aW9uLT5m
bG9hdFZhbHVlKENTU1VuaXRUeXBlOjpOdW1iZXIpOwogCiAgICAgICAgICAgICBDb2xvciBjb2xv
ciA9IHN0b3AucmVzb2x2ZWRDb2xvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNBcHBsZUNv
bG9yRmlsdGVyKCkpCkBAIC0zNDcsNyArMzQ3LDcgQEAgR3JhZGllbnQ6OkNvbG9yU3RvcFZlY3Rv
ciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvcHMoR3JhZGllbnRBZGFwdGVyJiBncmFkaWUK
ICAgICAgICAgaWYgKHN0b3AucG9zaXRpb24pIHsKICAgICAgICAgICAgIGF1dG8mIHBvc2l0aW9u
VmFsdWUgPSAqc3RvcC5wb3NpdGlvbjsKICAgICAgICAgICAgIGlmIChwb3NpdGlvblZhbHVlLmlz
UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHBvc2l0aW9u
VmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpIC8gMTAwOworICAg
ICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHBvc2l0aW9uVmFsdWUuZmxvYXRWYWx1ZShD
U1NVbml0VHlwZTo6UGVyY2VudGFnZSkgLyAxMDA7CiAgICAgICAgICAgICBlbHNlIGlmIChwb3Np
dGlvblZhbHVlLmlzTGVuZ3RoKCkgfHwgcG9zaXRpb25WYWx1ZS5pc1ZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpIHx8IHBvc2l0aW9uVmFsdWUuaXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5n
dGgoKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IGxlbmd0aDsKICAgICAgICAgICAgICAgICBp
ZiAocG9zaXRpb25WYWx1ZS5pc0xlbmd0aCgpKQpAQCAtMzU4LDcgKzM1OCw3IEBAIEdyYWRpZW50
OjpDb2xvclN0b3BWZWN0b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0b3BzKEdyYWRpZW50
QWRhcHRlciYgZ3JhZGllCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHN0b3Bz
W2ldLm9mZnNldCA9IChncmFkaWVudExlbmd0aCA+IDApID8gbGVuZ3RoIC8gZ3JhZGllbnRMZW5n
dGggOiAwOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvblZhbHVlLmlzQW5nbGUoKSkK
LSAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBwb3NpdGlvblZhbHVlLmZsb2F0VmFs
dWUoQ1NTVW5pdFR5cGU6OkNTU19ERUcpIC8gMzYwOworICAgICAgICAgICAgICAgIHN0b3BzW2ld
Lm9mZnNldCA9IHBvc2l0aW9uVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RGVnKSAvIDM2
MDsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IDA7CkBAIC02NjMsNyArNjYz
LDcgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTR3JhZGllbnRWYWx1
ZSYgb3RoZXIpIGNvbnN0CiBzdGF0aWMgdm9pZCBhcHBlbmRHcmFkaWVudFN0b3BzKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFZlY3RvcjxDU1NHcmFkaWVudENvbG9yU3RvcCwgMj4mIHN0
b3BzKQogewogICAgIGZvciAoYXV0byYgc3RvcCA6IHN0b3BzKSB7Ci0gICAgICAgIGRvdWJsZSBw
b3NpdGlvbiA9IHN0b3AucG9zaXRpb24tPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gc3RvcC5wb3NpdGlvbi0+ZG91YmxlVmFs
dWUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgIGlmICghcG9zaXRpb24pCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiLCBmcm9tKCIsIHN0b3AuY29sb3ItPmNzc1RleHQoKSwgJykn
KTsKICAgICAgICAgZWxzZSBpZiAocG9zaXRpb24gPT0gMSkKQEAgLTgxOSw3ICs4MTksNyBAQCBS
ZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjbwogICAgIEZsb2F0UG9pbnQgZmlyc3RQb2ludDsKICAgICBG
bG9hdFBvaW50IHNlY29uZFBvaW50OwogICAgIGlmIChtX2FuZ2xlKSB7Ci0gICAgICAgIGZsb2F0
IGFuZ2xlID0gbV9hbmdsZS0+ZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisgICAg
ICAgIGZsb2F0IGFuZ2xlID0gbV9hbmdsZS0+ZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RGVnKTsK
ICAgICAgICAgZW5kUG9pbnRzRnJvbUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJzdFBvaW50LCBzZWNv
bmRQb2ludCwgZ3JhZGllbnRUeXBlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAo
Z3JhZGllbnRUeXBlKCkpIHsKQEAgLTEyNjksNyArMTI2OSw3IEBAIFJlZjxHcmFkaWVudD4gQ1NT
Q29uaWNHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uCiAKICAgICBmbG9hdCBhbmdsZVJhZGlhbnMgPSAwOwogICAgIGlmIChtX2FuZ2xlKQot
ICAgICAgICBhbmdsZVJhZGlhbnMgPSBtX2FuZ2xlLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfUkFEKTsKKyAgICAgICAgYW5nbGVSYWRpYW5zID0gbV9hbmdsZS0+ZmxvYXRWYWx1ZShDU1NV
bml0VHlwZTo6UmFkKTsKIAogICAgIEdyYWRpZW50OjpDb25pY0RhdGEgZGF0YSB7IGNlbnRlclBv
aW50LCBhbmdsZVJhZGlhbnMgfTsKICAgICBDb25pY0dyYWRpZW50QWRhcHRlciBhZGFwdGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDE1NTEwMTI4M2M2MjZj
YTE4YTMzYjAyYmFiMTI3OGU5NmI4YjBmMzguLjM4MzJhYzVmMTYwYWJhMTdkMTFlOWRlM2NiYzdh
MjNlM2RlZTJmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgdm9pZCBDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQogICAg
ICAgICBBU1NFUlQoaXM8Q1NTSW1hZ2VWYWx1ZT4oaW1hZ2VWYWx1ZSkgfHwgaXM8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZT4oaW1hZ2VWYWx1ZSkpOwogICAgICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHNjYWxlRmFjdG9yVmFsdWUpKTsKIAotICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzY2FsZUZhY3RvclZhbHVlKS0+ZmxvYXRW
YWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQUFgpOworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzY2FsZUZhY3RvclZhbHVlKS0+ZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsKTsKICAgICAgICAgbV9pbWFnZXNJblNldC5hcHBl
bmQoeyBpbWFnZVZhbHVlLCBzY2FsZUZhY3RvciB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcAppbmRleCBlOThlMjgyN2NlMDIxOGFkMjQ1YmYzMTE1YWFkZDg3ZGQ0
ZTE1N2EwLi41NzE0NzRlNDVmM2VkNTUyODk2NzUxNTFjZDk1ZWI4NWY5NmM2Y2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgU3RyaW5nIENT
U0ltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogUmVmPERlcHJlY2F0ZWRDU1NPTVZh
bHVlPiBDU1NJbWFnZVZhbHVlOjpjcmVhdGVEZXByZWNhdGVkQ1NTT01XcmFwcGVyKENTU1N0eWxl
RGVjbGFyYXRpb24mIHN0eWxlRGVjbGFyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gTk9URTogV2Ug
ZXhwb3NlIENTU0ltYWdlVmFsdWVzIGFzIFVSSSBwcmltaXRpdmUgdmFsdWVzIGluIENTU09NIHRv
IG1haW50YWluIG9sZCBiZWhhdmlvci4KLSAgICByZXR1cm4gRGVwcmVjYXRlZENTU09NUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fbG9jYXRpb24ucmVz
b2x2ZWRVUkwuc3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKSwgc3R5bGVEZWNsYXJhdGlv
bik7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX2xvY2F0aW9uLnJlc29sdmVkVVJMLnN0cmluZygpLCBD
U1NVbml0VHlwZTo6VVJJKSwgc3R5bGVEZWNsYXJhdGlvbik7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VW
YWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggOThiOGRiYmVi
ZTI2OGU3OWYyNjdiYjQzMTQ5OTU4MzU3ZTU5MDNiMS4uM2EzNWEzYWZlNDc5YTE1NjdiYzJkNDVj
ZGVmM2Y2MDdkMmJiNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCkBAIC01Miw2MSArNTIsNjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGlu
ZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24oQ1NTVW5pdFR5cGUg
dW5pdFR5cGUpCiB7CiAgICAgc3dpdGNoICh1bml0VHlwZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19DQUxDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0Vf
V0lUSF9MRU5HVEg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9X
SVRIX05VTUJFUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJT046Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19GUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1JMSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVS
TjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZNQVg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1ZXOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUENNOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQUFg6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNo
czoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGltZW5zaW9uOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RmxleDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
Okh6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktI
ejoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGVyY2VudGFnZToKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpR
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhz
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpSYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpTZWNvbmQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlTWF4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZU1pbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpEb3RzUGVySW5jaDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19DT1VOVEVSX05BTUU6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZ
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291
bnRlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyTmFtZToKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpGb250RmFtaWx5OgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkN1c3RvbUlkZW50Ogot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QUk9QRVJUWV9JRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09M
T1I6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NIQVBFOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19TVFJJTkc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVfUkFOR0U6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV046Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1VSSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQ6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6UGFpcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1YWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVjdDoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpSR0JDb2xvcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpT
aGFwZToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6VW5pY29kZVJhbmdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVua25vd246CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6VVJJOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSURFTlQ6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE5
LDYwICsxMTksNjAgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvckRv
dWJsZUNvbnZlcnNpb24oQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNTdHJpbmdUeXBlKENTU1VuaXRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpT
dHJpbmc6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1VSSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQVRUUjoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlVSSToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpBdHRyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNvdW50ZXJOYW1lOgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfQ0FMQzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJ
VEhfTEVOR1RIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lU
SF9OVU1CRVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRElN
RU5TSU9OOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUENNOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQUFg6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWToKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfRlI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JREVOVDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0tI
WjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX01TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QUk9QRVJUWV9JRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1BYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1FVSVJLWV9FTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1M6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NIQVBFOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19UVVJOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JB
TkdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WQUxVRV9JRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZN
SU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNhbGN1bGF0ZWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTGVuZ3RoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aE51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q206CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291bnRlcjoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpEZWc6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGltZW5zaW9uOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQ
ZXJJbmNoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbDoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpFbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkZvbnRGYW1pbHk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RmxleDoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OklkZW50OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OktIejoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNbToKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpNczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6UGFpcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlByb3BlcnR5
SUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHg6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpRdWFkOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpS
YWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVjdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpS
ZW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlNlY29uZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTaGFwZToKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpUdXJuOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVuaWNvZGVSYW5nZToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpVbmtub3duOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3Bv
cnRQZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5
MywzNSArMTkzLDM1IEBAIENTU1VuaXRUeXBlIENTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVU
eXBlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVXNlIGEgc3dpdGNoIHN0YXRlbWVudCBoZXJl
LgogCi0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QUk9Q
RVJUWV9JRCB8fCBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQgfHwgcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQpCi0g
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOworICAgIGlmIChwcmltaXRpdmVV
bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEIHx8IHByaW1pdGl2ZVVuaXRUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6OlZhbHVlSUQgfHwgcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NV
bml0VHlwZTo6Q3VzdG9tSWRlbnQpCisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6SWRlbnQ7
CiAKLSAgICAvLyBXZWItZXhwb3NlZCBjb250ZW50IGV4cGVjdHMgZm9udCBmYW1pbHkgdmFsdWVz
IHRvIGhhdmUgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcgcHJpbWl0aXZlIHR5cGUKLSAgICAvLyBz
byB3ZSBuZWVkIHRvIG1hcCBvdXIgaW50ZXJuYWwgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlM
WSB0eXBlIGhlcmUuCi0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6
OkNTU19GT05UX0ZBTUlMWSkKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5H
OworICAgIC8vIFdlYi1leHBvc2VkIGNvbnRlbnQgZXhwZWN0cyBmb250IGZhbWlseSB2YWx1ZXMg
dG8gaGF2ZSBDU1NVbml0VHlwZTo6U3RyaW5nIHByaW1pdGl2ZSB0eXBlCisgICAgLy8gc28gd2Ug
bmVlZCB0byBtYXAgb3VyIGludGVybmFsIENTU1VuaXRUeXBlOjpGb250RmFtaWx5IHR5cGUgaGVy
ZS4KKyAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Rm9udEZhbWls
eSkKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpTdHJpbmc7CiAKLSAgICBpZiAocHJpbWl0
aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCisgICAgaWYgKHByaW1pdGl2
ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQpCiAgICAgICAgIHJldHVybiBw
cmltaXRpdmVVbml0VHlwZSgpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLmNhbGMtPmNhdGVnb3J5
KCkpIHsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
Ok51bWJlcjsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6Ci0gICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U7CisgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6UGVyY2VudGFnZTsKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNl
bnROdW1iZXI6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFH
RV9XSVRIX05VTUJFUjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVy
Y2VudGFnZVdpdGhOdW1iZXI7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50
TGVuZ3RoOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0Vf
V0lUSF9MRU5HVEg7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNl
bnRhZ2VXaXRoTGVuZ3RoOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgog
ICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5nbGU6CiAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpUaW1lOgogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6RnJlcXVlbmN5
OgogICAgICAgICByZXR1cm4gbV92YWx1ZS5jYWxjLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgY2Fz
ZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpPdGhlcjoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBl
OjpDU1NfVU5LTk9XTjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpVbmtub3duOwogICAg
IH0KLSAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgIHJldHVybiBDU1NV
bml0VHlwZTo6VW5rbm93bjsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5
TmFtZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC0yNDEsMTQgKzI0MSwxNCBAQCBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgdmFsdWVOYW1lKENTU1ZhbHVlSUQgdmFsdWVJRCkKIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlSUQpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6VmFsdWVJRCk7CiAgICAgbV92YWx1ZS52YWx1ZUlEID0gdmFsdWVJRDsKIH0KIAog
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEKTsKICAgICBtX3ZhbHVlLnByb3BlcnR5
SUQgPSBwcm9wZXJ0eUlEOwogfQogCkBAIC0yNzIsNyArMjcyLDcgQEAgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NVbml0VHlwZSB0
eXBlKQogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IENvbG9yJiBj
b2xvcikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1IpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpSR0JDb2xvcik7CiAgICAgbV92YWx1ZS5jb2xvciA9IG5ldyBD
b2xvcihjb2xvcik7CiB9CiAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdAogICAgICAgICBpbml0KGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIExl
bmd0aFR5cGU6OkZpeGVkOgotICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6Q1NTX1BYKTsKKyAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlB4
KTsKICAgICAgICAgbV92YWx1ZS5udW0gPSBhZGp1c3RGbG9hdEZvckFic29sdXRlWm9vbShsZW5n
dGgudmFsdWUoKSwgc3R5bGUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBl
OjpDYWxjdWxhdGVkOgpAQCAtMzM5LDM5ICszMzksMzkgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1
ZTo6aW5pdChjb25zdCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBl
KCkpIHsKICAgICBjYXNlIExlbmd0aFR5cGU6OkF1dG86Ci0gICAgICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgICAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlQXV0bzsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4
ZWQ6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUFgpOwor
ICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBt
X3ZhbHVlLm51bSA9IGxlbmd0aC52YWx1ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBM
ZW5ndGhUeXBlOjpJbnRyaW5zaWM6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6VmFsdWVJRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW50
cmluc2ljOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5JbnRyaW5z
aWM6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQpOworICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWluSW50cmluc2ljOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBlOjpNaW5Db250ZW50OgotICAgICAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICAgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU1pbkNvbnRlbnQ7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IExlbmd0aFR5cGU6Ok1heENvbnRlbnQ6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TWF4Q29udGVudDsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTGVuZ3RoVHlwZTo6RmlsbEF2
YWlsYWJsZToKLSAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19W
QUxVRV9JRCk7CisgICAgICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1
ZUlEKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRGaWxsQXZhaWxh
YmxlOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMZW5ndGhUeXBlOjpGaXRDb250ZW50Ogot
ICAgICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZpdENvbnRlbnQ7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIExlbmd0aFR5cGU6OlBlcmNlbnQ6Ci0gICAgICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICAgICAgQVNTRVJUKHN0ZDo6
aXNmaW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOwogICAgICAgICBtX3ZhbHVlLm51bSA9IGxlbmd0
aC5wZXJjZW50KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4Niw0OSArMzg2LDQ5IEBAIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAKIHZvaWQgQ1NT
UHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpDU1NfUEFJUik7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlBh
aXIpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwogICAgIG1fdmFsdWUucGFpciA9
ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgsIHN0eWxlKSwgY3JlYXRlKGxl
bmd0aFNpemUuaGVpZ2h0LCBzdHlsZSkpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6aW5pdChSZWY8Q291bnRlcj4mJiBjb3VudGVyKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUik7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OkNvdW50ZXIpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZh
bHNlOwogICAgIG1fdmFsdWUuY291bnRlciA9ICZjb3VudGVyLmxlYWtSZWYoKTsKIH0KIAogdm9p
ZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8UmVjdD4mJiByKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUkVDVCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlJlY3QpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNl
OwogICAgIG1fdmFsdWUucmVjdCA9ICZyLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6aW5pdChSZWY8UXVhZD4mJiBxdWFkKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfUVVBRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlF1YWQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwogICAgIG1f
dmFsdWUucXVhZCA9ICZxdWFkLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1
ZTo6aW5pdChSZWY8UGFpcj4mJiBwKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfUEFJUik7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OlBhaXIpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwogICAgIG1fdmFsdWUucGFp
ciA9ICZwLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8
Q1NTQmFzaWNTaGFwZT4mJiBzaGFwZSkKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6Q1NTX1NIQVBFKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6U2hhcGUpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwogICAgIG1fdmFsdWUu
c2hhcGUgPSAmc2hhcGUubGVha1JlZigpOwogfQogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpp
bml0KFJlZlB0cjxDU1NDYWxjVmFsdWU+JiYgYykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX0NBTEMpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDYWxjdWxhdGVkKTsKICAgICBtX2hhc0NhY2hlZENTU1RleHQgPSBmYWxzZTsKICAg
ICBtX3ZhbHVlLmNhbGMgPSBjLmxlYWtSZWYoKTsKIH0KQEAgLTQ0Miw4OSArNDQyLDg5IEBAIHZv
aWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogewogICAgIGF1dG8gdHlwZSA9IHByaW1p
dGl2ZVVuaXRUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1NUUklORzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTdHJpbmc6CiAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VSSToK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQVRUUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVSSToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpBdHRyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50ZXJOYW1lOgogICAg
ICAgICBpZiAobV92YWx1ZS5zdHJpbmcpCiAgICAgICAgICAgICBtX3ZhbHVlLnN0cmluZy0+ZGVy
ZWYoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291bnRlcjoKICAgICAgICAgbV92YWx1ZS5jb3VudGVy
LT5kZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVD
VDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0OgogICAgICAgICBtX3ZhbHVlLnJlY3QtPmRl
cmVmKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1YWQ6CiAgICAgICAgIG1fdmFsdWUucXVhZC0+ZGVyZWYo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UGFpcjoKICAgICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICBpZiAobV92YWx1ZS5jYWxjKQogICAg
ICAgICAgICAgbV92YWx1ZS5jYWxjLT5kZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19TSEFQRToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTaGFwZToKICAgICAgICAgbV92YWx1ZS5z
aGFwZS0+ZGVyZWYoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0ZPTlRfRkFNSUxZOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHk6CiAgICAgICAg
IEFTU0VSVChtX3ZhbHVlLmZvbnRGYW1pbHkpOwogICAgICAgICBkZWxldGUgbV92YWx1ZS5mb250
RmFtaWx5OwogICAgICAgICBtX3ZhbHVlLmZvbnRGYW1pbHkgPSBudWxscHRyOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6UkdCQ29sb3I6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLmNvbG9yKTsKICAgICAg
ICAgZGVsZXRlIG1fdmFsdWUuY29sb3I7CiAgICAgICAgIG1fdmFsdWUuY29sb3IgPSBudWxscHRy
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRElNRU5TSU9OOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0U6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RVhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19DSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RF
RzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19HUkFEOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSFo6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0tIWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZI
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19WTUFYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUFBYOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQQ006Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1JMSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19VTktOT1dOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JB
TkdFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGltZW5zaW9u
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQ
ZXJjZW50YWdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpRdWlya3lFbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6Ok1tOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlB0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkRlZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
R3JhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpT
ZWNvbmQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
S0h6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQ
ZXJjZW50YWdlSGVpZ2h0OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFn
ZU1pbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRv
dHNQZXJJbmNoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJDZW50aW1ldGVyOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpMaHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpJZGVudDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmtub3duOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVuaWNvZGVSYW5nZToKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQcm9wZXJ0eUlEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CiAgICAgICAgIEFT
U0VSVCghaXNTdHJpbmdUeXBlKHR5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTik7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlVua25vd24pOwogICAgIGlmIChtX2hhc0NhY2hl
ZENTU1RleHQpIHsKICAgICAgICAgY3NzVGV4dENhY2hlKCkucmVtb3ZlKHRoaXMpOwogICAgICAg
ICBtX2hhc0NhY2hlZENTU1RleHQgPSBmYWxzZTsKQEAgLTU3OCw3ICs1NzgsNyBAQCB0ZW1wbGF0
ZTw+IExheW91dFVuaXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5n
dGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEp
IGNvbnN0CiB7Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNT
U19DQUxDKSB7CisgICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNh
bGN1bGF0ZWQpIHsKICAgICAgICAgLy8gVGhlIG11bHRpcGxpZXIgYW5kIGZhY3RvciBpcyBhcHBs
aWVkIHRvIGVhY2ggdmFsdWUgaW4gdGhlIGNhbGMgZXhwcmVzc2lvbiBpbmRpdmlkdWFsbHkKICAg
ICAgICAgcmV0dXJuIG1fdmFsdWUuY2FsYy0+Y29tcHV0ZUxlbmd0aFB4KGNvbnZlcnNpb25EYXRh
KTsKICAgICB9CkBAIC01OTMsNTcgKzU5Myw1NyBAQCBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBR
UGVySW5jaCA9IDI1LjQgKiA0LjA7CiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVV
bnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUoQ1NTVW5pdFR5cGUgcHJpbWl0aXZlVHlwZSwgZG91
YmxlIHZhbHVlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5VG9Db21wdXRlLCBjb25zdCBGb250TWV0
cmljcyogZm9udE1ldHJpY3MsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qIGZvbnREZXNj
cmlwdGlvbiwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlwdGlv
biwgY29uc3QgUmVuZGVyVmlldyogcmVuZGVyVmlldykKIHsKICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVR5cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpRdWlya3lFbXM6CiAgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRp
b24pOwogICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZv
bnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0
aW9uLT5jb21wdXRlZFNpemUoKSkgKiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RVhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKICAgICAgICAgQVNTRVJUKGZvbnRNZXRy
aWNzKTsKICAgICAgICAgaWYgKGZvbnRNZXRyaWNzLT5oYXNYSGVpZ2h0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZm9udE1ldHJpY3MtPnhIZWlnaHQoKSAqIHZhbHVlOwogICAgICAgICBBU1NFUlQo
Zm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgcmV0dXJuICgocHJvcGVydHlUb0NvbXB1dGUgPT0g
Q1NTUHJvcGVydHlGb250U2l6ZSkgPyBmb250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6
IGZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpIC8gMi4wICogdmFsdWU7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmVtczoKICAg
ICAgICAgaWYgKCFyb290Rm9udERlc2NyaXB0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
OwogICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRT
aXplKSA/IHJvb3RGb250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6IHJvb3RGb250RGVz
Y3JpcHRpb24tPmNvbXB1dGVkU2l6ZSgpKSAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19DSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgogICAgICAgICBBU1NFUlQoZm9u
dE1ldHJpY3MpOwogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnplcm9XaWR0aCgpICogdmFs
dWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlB4OgogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NN
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVy
SW5jaCAvIGNtUGVySW5jaCAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpNbToKICAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1Blcklu
Y2ggLyBtbVBlckluY2ggKiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpROgogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAv
IFFQZXJJbmNoICogdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiAtMS4wOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKICAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2gg
KiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UHQ6CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNoIC8gNzIuMCAqIHZhbHVl
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQ
YzoKICAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVy
SW5jaCAqIDEyLjAgLyA3Mi4wICogdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NB
TENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FM
Q19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVk
UGVyY2VudGFnZVdpdGhOdW1iZXI6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gLTEuMDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgICAgICByZXR1cm4g
cmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
KS5oZWlnaHQoKSAvIDEwMC4wICogdmFsdWUgOiAwOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19WVzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAg
ICAgICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKCkud2lkdGgoKSAvIDEwMC4wICogdmFsdWUgOiAwOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19WTUFYOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZU1heDoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKICAgICAgICAgICAgIEludFNpemUg
dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heCh2aWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLndpZHRoKCksIHZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAwLjAgKiB2YWx1ZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICBpZiAocmVuZGVy
VmlldykgewogICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMu
d2lkdGgoKSwgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy5oZWlnaHQoKSkgLyAxMDAu
MCAqIHZhbHVlOwpAQCAtNjU4LDEzICs2NTgsMTMgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlIHByaW1pdGkK
IGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1VuaXRUeXBl
IHByaW1pdGl2ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5
cGUpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpRdWlya3lFbXM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5z
dHlsZSgpKTsKICAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0
ZSgpLCBudWxscHRyLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6RXhzOgogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyBy
aWdodCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIHR3aWNlIHRvIEVYIHVuaXRz
LgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRNZXRy
aWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAgICAv
LyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgpAQCAtNjcyLDQwICs2NzIs
NDAgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJs
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56
b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9u
RGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1l
dHJpY3MoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpSZW1zOgogICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNh
bGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3Bl
cnR5VG9Db21wdXRlKCksIG51bGxwdHIsIG51bGxwdHIsIGNvbnZlcnNpb25EYXRhLnJvb3RTdHls
ZSgpID8gJmNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSA6IG51
bGxwdHIpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRh
dGEuc3R5bGUoKSk7CiAgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0
aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0Nv
bXB1dGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19ROgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlBjOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdl
V2l0aExlbmd0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdp
dGhOdW1iZXI6CiAgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERv
dWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1
dGUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKICAgICAgICAg
cmV0dXJuIHZhbHVlICogY29udmVyc2lvbkRhdGEudmlld3BvcnRIZWlnaHRGYWN0b3IoKTsKIAot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAgICAgcmV0dXJuIHZhbHVlICogY29udmVyc2lvbkRh
dGEudmlld3BvcnRXaWR0aEZhY3RvcigpOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZN
QVg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAg
ICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3cG9ydE1heEZhY3RvcigpOwogCi0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0
YS52aWV3cG9ydE1pbkZhY3RvcigpOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0
YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0xpbmVIZWln
aHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpKSB7CiAgICAgICAgICAg
ICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5lLWhlaWdodCwgb3IgZmFs
bCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMgZWxlbWVudCdzIGZvbnQg
c3BhY2luZy4KQEAgLTcxNCw3ICs3MTQsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAg
ICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVp
Z2h0KCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRh
LnJvb3RTdHlsZSgpKSB7CiAgICAgICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEuY29tcHV0aW5n
TGluZUhlaWdodCgpIHx8IGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkpCiAgICAg
ICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNvbXB1dGVM
aW5lSGVpZ2h0KGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0
KCkpOwpAQCAtNzYyLDQ3ICs3NjIsNDcgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252
ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKENTU1VuaXRUeXBlIHVuaXQKICAgICAv
LyBGSVhNRTogdGhlIHN3aXRjaCBjYW4gYmUgcmVwbGFjZWQgYnkgYW4gYXJyYXkgb2Ygc2NhbGUg
ZmFjdG9ycy4KICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7CiAgICAgLy8gVGhlc2UgYXJlICJjYW5v
bmljYWwiIHVuaXRzIGluIHRoZWlyIHJlc3BlY3RpdmUgY2F0ZWdvcmllcy4KLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0haOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUFBYOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRlZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpIejoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVy
UGl4ZWw6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DTToKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDbToKICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5j
aCAvIGNtUGVySW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0RQQ006CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI6CiAgICAgICAg
IGZhY3RvciA9IGNtUGVySW5jaCAvIGNzc1BpeGVsc1BlckluY2g7IC8vICgyLjU0IGNtL2luKQog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6TW06CiAgICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyBtbVBl
ckluY2g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlE6CiAgICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2gg
LyBRUGVySW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lO
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOgogICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQ
ZXJJbmNoOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBJOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOgogICAgICAgICBmYWN0b3IgPSAxIC8g
Y3NzUGl4ZWxzUGVySW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BUOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0OgogICAgICAgICBmYWN0b3IgPSBjc3NQ
aXhlbHNQZXJJbmNoIC8gNzIuMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BDOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBjOgogICAgICAgICBmYWN0b3IgPSBj
c3NQaXhlbHNQZXJJbmNoICogMTIuMCAvIDcyLjA7IC8vIDEgcGMgPT0gMTIgcHQKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpSYWQ6CiAgICAgICAgIGZhY3RvciA9IGRlZ3JlZXNQZXJSYWRpYW5Eb3VibGU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19HUkFEOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkdyYWQ6CiAgICAgICAgIGZhY3RvciA9IGRlZ3JlZXNQZXJHcmFkaWVudERvdWJs
ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6VHVybjoKICAgICAgICAgZmFjdG9yID0gZGVncmVlc1BlclR1cm5E
b3VibGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2Vjb25k
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktIejoKICAgICAgICAgZmFjdG9yID0gMTAwMDsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTgyNywzMyArODI3LDMzIEBAIGRvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGUgdW5pdFR5cGUpIGNvbnN0
CiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBjb25zdAogewotICAg
IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfQ0FMQyA/IG1f
dmFsdWUubnVtIDogbV92YWx1ZS5jYWxjLT5kb3VibGVWYWx1ZSgpOworICAgIHJldHVybiBwcmlt
aXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkID8gbV92YWx1ZS5udW0g
OiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzWmVybygpIGNvbnN0CiB7Ci0gICAgaWYgKHByaW1pdGl2ZVVu
aXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQorICAgIGlmIChwcmltaXRpdmVVbml0
VHlwZSgpID09IENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiAhbV92YWx1ZS5udW07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAogewotICAgIGlmIChwcmlt
aXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKKyAgICBpZiAocHJpbWl0
aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5udW0gPiAwOwogfQogCiBzdGQ6Om9w
dGlvbmFsPGJvb2w+IENTU1ByaW1pdGl2ZVZhbHVlOjppc05lZ2F0aXZlKCkgY29uc3QKIHsKLSAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCisgICAg
aWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUubnVtIDwgMDsKIH0K
IAogYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNDZW50ZXJQb3NpdGlvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNlbnRlciB8fCBkb3VibGVWYWx1ZShDU1NV
bml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpID09IDUwOworICAgIHJldHVybiB2YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpID09
IDUwOwogfQogCiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJs
ZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CkBAIC04
NjIsNyArODYyLDcgQEAgc3RkOjpvcHRpb25hbDxkb3VibGU+IENTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZUludGVybmFsKENTU1VuaXRUeXBlIHJlcXVlc3QKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIENTU1VuaXRUeXBlIHNvdXJjZVVuaXRUeXBlID0gcHJpbWl0aXZl
VHlwZSgpOwotICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCBy
ZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTikKKyAgICBpZiAo
cmVxdWVzdGVkVW5pdFR5cGUgPT0gc291cmNlVW5pdFR5cGUgfHwgcmVxdWVzdGVkVW5pdFR5cGUg
PT0gQ1NTVW5pdFR5cGU6OkRpbWVuc2lvbikKICAgICAgICAgcmV0dXJuIGRvdWJsZVZhbHVlKCk7
CiAKICAgICBDU1NVbml0Q2F0ZWdvcnkgc291cmNlQ2F0ZWdvcnkgPSB1bml0Q2F0ZWdvcnkoc291
cmNlVW5pdFR5cGUpOwpAQCAtODc3LDE2ICs4NzcsMTYgQEAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZUludGVybmFsKENTU1VuaXRUeXBlIHJlcXVl
c3QKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0YXJnZXRDYXRlZ29y
eSA9PSBDU1NVbml0Q2F0ZWdvcnk6Ok51bWJlcikgewotICAgICAgICAvLyBXZSBpbnRlcnByZXQg
Y29udmVyc2lvbiB0byBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEg
Y2Fub25pY2FsIHVuaXQgaW4gdGhpcyB2YWx1ZSdzIGNhdGVnb3J5LgorICAgICAgICAvLyBXZSBp
bnRlcnByZXQgY29udmVyc2lvbiB0byBDU1NVbml0VHlwZTo6TnVtYmVyIGFzIGNvbnZlcnNpb24g
dG8gYSBjYW5vbmljYWwgdW5pdCBpbiB0aGlzIHZhbHVlJ3MgY2F0ZWdvcnkuCiAgICAgICAgIHRh
cmdldFVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeShzb3VyY2VDYXRlZ29y
eSk7Ci0gICAgICAgIGlmICh0YXJnZXRVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05P
V04pCisgICAgICAgIGlmICh0YXJnZXRVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6VW5rbm93bikK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKHNvdXJj
ZVVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSB7Ci0gICAgICAgIC8vIFdlIGlu
dGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgaW4gdGhlIHNh
bWUgd2F5IGFzIENTU1BhcnNlcjo6dmFsaWRVbml0KCkgd2hpbGUgdXNpbmcgbm9uLXN0cmljdCBt
b2RlLgorICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKSB7Cisg
ICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTVW5pdFR5cGU6Ok51bWJl
ciBpbiB0aGUgc2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBu
b24tc3RyaWN0IG1vZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5
cGVGb3JDYXRlZ29yeSh0YXJnZXRDYXRlZ29yeSk7Ci0gICAgICAgIGlmIChzb3VyY2VVbml0VHlw
ZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pCisgICAgICAgIGlmIChzb3VyY2VVbml0VHlw
ZSA9PSBDU1NVbml0VHlwZTo6VW5rbm93bikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCkBAIC05MDYsMTYgKzkwNiwxNiBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVz
dAogU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAg
c3dpdGNoIChwcmltaXRpdmVVbml0VHlwZSgpKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1NUUklORzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTdHJpbmc6CiAgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q3VzdG9tSWRlbnQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0FUVFI6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VSSToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpBdHRyOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVSSToKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuc3RyaW5n
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWToKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpGb250RmFtaWx5OgogICAgICAgICByZXR1cm4gbV92YWx1ZS5mb250RmFtaWx5LT5m
YW1pbHlOYW1lOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpWYWx1ZUlEOgogICAgICAgICByZXR1cm4gdmFsdWVOYW1lKG1fdmFsdWUu
dmFsdWVJRCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZX0lEOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlByb3BlcnR5SUQ6CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUo
bV92YWx1ZS5wcm9wZXJ0eUlEKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CkBAIC05MzEsNjEgKzkzMSw2MSBAQCBORVZFUl9JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2
ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShTdHJpbmdWaWV3IHN1ZmZpeCkgY29ucwogU3RyaW5n
IENTU1ByaW1pdGl2ZVZhbHVlOjp1bml0VHlwZVN0cmluZyhDU1NVbml0VHlwZSB1bml0VHlwZSkK
IHsKICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QRVJDRU5UQUdFOiByZXR1cm4gIiUiOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RU1TOiByZXR1cm4gImVtIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzogcmV0
dXJuICJleCI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDogcmV0dXJuICJweCI7
Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DTTogcmV0dXJuICJjbSI7Ci0gICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTTogcmV0dXJuICJtbSI7Ci0gICAgICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19JTjogcmV0dXJuICJpbiI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QVDogcmV0dXJuICJwdCI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzog
cmV0dXJuICJwYyI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6IHJldHVybiAi
ZGVnIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDogcmV0dXJuICJyYWQiOwot
ICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDogcmV0dXJuICJncmFkIjsKLSAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOiByZXR1cm4gIm1zIjsKLSAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1M6IHJldHVybiAicyI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19IWjogcmV0dXJuICJoeiI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19LSFo6
IHJldHVybiAia2h6IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOiByZXR1cm4g
InZ3IjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOiByZXR1cm4gInZoIjsKLSAg
ICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46IHJldHVybiAidm1pbiI7Ci0gICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOiByZXR1cm4gInZtYXgiOwotICAgICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfRFBQWDogcmV0dXJuICJkcHB4IjsKLSAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0RQSTogcmV0dXJuICJkcGkiOwotICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfRFBDTTogcmV0dXJuICJkcGNtIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0ZSOiByZXR1cm4gImZyIjsKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6IHJldHVy
biAicSI7Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6IHJldHVybiAibGgiOwot
ICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzogcmV0dXJuICJybGgiOwotICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjogcmV0dXJuICJ0dXJuIjsKLSAgICAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6IHJldHVybiAicmVtIjsKLSAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0NIUzogcmV0dXJuICJjaCI7Ci0KLSAgICAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1VOS05PV046Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6Ci0g
ICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJT046Ci0gICAgICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19TVFJJTkc6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VUkk6
Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JREVOVDoKLSAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q3VzdG9tSWRlbnQ6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRS
OgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKLSAgICAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1JFQ1Q6Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JD
T0xPUjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JBTkdFOgotICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfQ09VTlRFUl9OQU1FOgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6
Ci0gICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgotICAgICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ0FMQzoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVS
Q0VOVEFHRV9XSVRIX05VTUJFUjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZP
TlRfRkFNSUxZOgotICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6Ci0g
ICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDoKLSAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOiByZXR1cm4gIiUiOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkVtczogcmV0dXJuICJlbSI7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RXhzOiByZXR1cm4gImV4IjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDogcmV0dXJuICJweCI7
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206IHJldHVybiAiY20iOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6Ok1tOiByZXR1cm4gIm1tIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjogcmV0dXJu
ICJpbiI7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6IHJldHVybiAicHQiOworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlBjOiByZXR1cm4gInBjIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6
IHJldHVybiAiZGVnIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSYWQ6IHJldHVybiAicmFkIjsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOiByZXR1cm4gImdyYWQiOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6Ok1zOiByZXR1cm4gIm1zIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTZWNvbmQ6
IHJldHVybiAicyI7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SHo6IHJldHVybiAiaHoiOworICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OktIejogcmV0dXJuICJraHoiOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOiByZXR1cm4gInZ3IjsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6IHJldHVybiAidmgiOworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjogcmV0dXJuICJ2bWluIjsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6IHJldHVybiAidm1heCI7Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOiByZXR1cm4gImRwcHgiOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOiByZXR1cm4gImRwaSI7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI6IHJldHVybiAiZHBjbSI7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RmxleDogcmV0dXJuICJmciI7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UTogcmV0
dXJuICJxIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6IHJldHVybiAibGgiOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlJsaHM6IHJldHVybiAicmxoIjsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpUdXJuOiByZXR1cm4gInR1cm4iOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlbXM6IHJldHVy
biAicmVtIjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6IHJldHVybiAiY2giOworCisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6VW5rbm93bjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGltZW5zaW9uOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlN0cmluZzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVUkk6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6SWRlbnQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6QXR0cjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlJlY3Q6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UkdCQ29sb3I6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UGFpcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmljb2Rl
UmFuZ2U6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291bnRlck5hbWU6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6U2hhcGU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVhZDoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDYWxjdWxhdGVkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aE51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVy
Y2VudGFnZVdpdGhMZW5ndGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseToKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZh
bHVlSUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC05OTQsODYgKzk5NCw4NiBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OnVuaXRUeXBlU3RyaW5nKENTU1VuaXRUeXBlIHVuaXRUeXBlKQogQUxXQVlTX0lO
TElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1Rl
eHQoKSBjb25zdAogewogICAgIHN3aXRjaCAocHJpbWl0aXZlVW5pdFR5cGUoKSkgewotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVua25v
d246CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIGZv
cm1hdE51bWJlclZhbHVlKCIiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFH
RToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgogICAgICAgICByZXR1cm4gZm9y
bWF0TnVtYmVyVmFsdWUoIiUiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpRdWlya3lFbXM6CiAgICAgICAgIHJldHVybiBm
b3JtYXROdW1iZXJWYWx1ZSgiZW0iKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZh
bHVlKCJleCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlJlbXM6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgicmVtIik7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpD
aHM6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiY2giKTsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUFg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHg6CiAgICAgICAgIHJl
dHVybiBmb3JtYXROdW1iZXJWYWx1ZSgicHgiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Q006CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1i
ZXJWYWx1ZSgiY20iKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBQWDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJW
YWx1ZSgiZHBweCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6RG90c1BlckluY2g6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1
ZSgiZHBpIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQQ006CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJW
YWx1ZSgiZHBjbSIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpNbToKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJtbSIpOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoK
ICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJpbiIpOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19QVDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQdDoKICAgICAgICAgcmV0dXJu
IGZvcm1hdE51bWJlclZhbHVlKCJwdCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZh
bHVlKCJwYyIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6RGVnOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImRlZyIpOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmFk
OgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoInJhZCIpOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19HUkFEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CiAgICAgICAg
IHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgiZ3JhZCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19NUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKICAgICAgICAgcmV0dXJuIGZvcm1h
dE51bWJlclZhbHVlKCJtcyIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlNlY29uZDoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVl
KCJzIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0haOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6Okh6OgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoImh6Iik7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0tIWjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpLSHo6CiAgICAg
ICAgIHJldHVybiBmb3JtYXROdW1iZXJWYWx1ZSgia2h6Iik7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1RVUk46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjoKICAgICAgICAgcmV0dXJu
IGZvcm1hdE51bWJlclZhbHVlKCJ0dXJuIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZS
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6CiAgICAgICAgIHJldHVybiBmb3JtYXROdW1i
ZXJWYWx1ZSgiZnIiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpROgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoInEiKTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoK
ICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKCJsaCIpOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19STEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJsaHM6CiAgICAgICAgIHJl
dHVybiBmb3JtYXROdW1iZXJWYWx1ZSgicmxoIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0RJTUVOU0lPTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGlzbid0IGNvcnJlY3QuCiAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJW
YWx1ZSgiIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBzZXJpYWxpemVTdHJpbmcobV92YWx1
ZS5zdHJpbmcpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkN1c3RvbUlkZW50OiB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcihtX3Zh
bHVlLnN0cmluZywgYnVpbGRlcik7CiAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiAgICAgfQotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWToKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpGb250RmFtaWx5OgogICAgICAgICByZXR1cm4gc2VyaWFsaXplRm9udEZh
bWlseShtX3ZhbHVlLmZvbnRGYW1pbHktPmZhbWlseU5hbWUpOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19VUkk6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VVJJOgogICAgICAgICByZXR1cm4g
c2VyaWFsaXplVVJMKG1fdmFsdWUuc3RyaW5nKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDoKICAgICAgICAgcmV0dXJu
IHZhbHVlTmFtZShtX3ZhbHVlLnZhbHVlSUQpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19Q
Uk9QRVJUWV9JRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQcm9wZXJ0eUlEOgogICAgICAgICBy
ZXR1cm4gcHJvcGVydHlOYW1lKG1fdmFsdWUucHJvcGVydHlJRCk7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0FUVFI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6QXR0cjoKICAgICAgICAgcmV0
dXJuICJhdHRyKCIgKyBTdHJpbmcobV92YWx1ZS5zdHJpbmcpICsgJyknOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUU6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q291bnRl
ck5hbWU6CiAgICAgICAgIHJldHVybiAiY291bnRlcigiICsgU3RyaW5nKG1fdmFsdWUuc3RyaW5n
KSArICcpJzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjogeworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNvdW50ZXI6IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgICAgIGF1dG8gc2VwYXJhdG9yID0gbV92YWx1ZS5jb3VudGVyLT5zZXBhcmF0b3IoKTsKICAg
ICAgICAgYXV0byBsaXN0U3R5bGUgPSBtX3ZhbHVlLmNvdW50ZXItPmxpc3RTdHlsZSgpOwpAQCAt
MTA4NSwzMiArMTA4NSwzMiBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAgIH0KLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0
OgogICAgICAgICByZXR1cm4gcmVjdFZhbHVlKCktPmNzc1RleHQoKTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUVVBRDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpRdWFkOgogICAgICAgICBy
ZXR1cm4gcXVhZFZhbHVlKCktPmNzc1RleHQoKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UkdCQ09MT1I6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UkdCQ29sb3I6CiAgICAgICAgIHJldHVy
biBzZXJpYWxpemF0aW9uRm9yQ1NTKGNvbG9yKCkpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QQUlSOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBhaXI6CiAgICAgICAgIHJldHVybiBwYWly
VmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6CiAgICAgICAgIGlmICghbV92YWx1ZS5jYWxj
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmNhbGMtPmNzc1Rl
eHQoKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6U2hhcGU6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLnNoYXBlLT5jc3NUZXh0KCk7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdw
b3J0UGVyY2VudGFnZVdpZHRoOgogICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoInZ3
Iik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZh
bHVlKCJ2aCIpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjoKICAgICAgICAgcmV0dXJuIGZvcm1hdE51
bWJlclZhbHVlKCJ2bWluIik7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICByZXR1cm4g
Zm9ybWF0TnVtYmVyVmFsdWUoInZtYXgiKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSURF
TlQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVfUkFOR0U6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OklkZW50OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVuaWNvZGVSYW5nZToKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhOdW1iZXI6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MTE0Miw3MiArMTE0Miw3MiBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTUHJpbWl0aXZlVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBzd2l0Y2ggKHByaW1pdGl2ZVVuaXRUeXBlKCkpIHsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfVU5LTk9XTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVbmtub3duOgogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19FWFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19EUFBYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0RQQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfR1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1M6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0haOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19LSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVk1BWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRlI6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1E6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUkxIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRElNRU5TSU9O
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQ
ZXJjZW50YWdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpRdWlya3lFbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RXhzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OlB4OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkRvdHNQZXJQaXhlbDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVySW5jaDoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpEZWc6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkdyYWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
U2Vjb25kOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OktIejoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0
UGVyY2VudGFnZUhlaWdodDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRh
Z2VNaW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpMaHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLm51bSA9
PSBvdGhlci5tX3ZhbHVlLm51bTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlf
SUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHJvcGVydHlJRDoKICAgICAgICAgcmV0dXJuIHBy
b3BlcnR5TmFtZShtX3ZhbHVlLnByb3BlcnR5SUQpID09IHByb3BlcnR5TmFtZShvdGhlci5tX3Zh
bHVlLnByb3BlcnR5SUQpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpWYWx1ZUlEOgogICAgICAgICByZXR1cm4gdmFsdWVOYW1lKG1f
dmFsdWUudmFsdWVJRCkgPT0gdmFsdWVOYW1lKG90aGVyLm1fdmFsdWUudmFsdWVJRCk7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTdHJp
bmc6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1VSSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQVRUUjoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlVS
SToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpBdHRyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNv
dW50ZXJOYW1lOgogICAgICAgICByZXR1cm4gZXF1YWwobV92YWx1ZS5zdHJpbmcsIG90aGVyLm1f
dmFsdWUuc3RyaW5nKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpDb3VudGVyOgogICAgICAgICByZXR1cm4gbV92YWx1ZS5jb3VudGVy
ICYmIG90aGVyLm1fdmFsdWUuY291bnRlciAmJiBtX3ZhbHVlLmNvdW50ZXItPmVxdWFscygqb3Ro
ZXIubV92YWx1ZS5jb3VudGVyKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0OgogICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWN0ICYm
IG90aGVyLm1fdmFsdWUucmVjdCAmJiBtX3ZhbHVlLnJlY3QtPmVxdWFscygqb3RoZXIubV92YWx1
ZS5yZWN0KTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpRdWFkOgogICAgICAgICByZXR1cm4gbV92YWx1ZS5xdWFkICYmIG90aGVyLm1fdmFs
dWUucXVhZCAmJiBtX3ZhbHVlLnF1YWQtPmVxdWFscygqb3RoZXIubV92YWx1ZS5xdWFkKTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UkdCQ29sb3I6CiAgICAgICAgIHJldHVybiBjb2xvcigpID09IG90aGVyLmNvbG9yKCk7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGFpcjoK
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUucGFpciAmJiBvdGhlci5tX3ZhbHVlLnBhaXIgJiYgbV92
YWx1ZS5wYWlyLT5lcXVhbHMoKm90aGVyLm1fdmFsdWUucGFpcik7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0NBTEM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZDoKICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUuY2FsYyAmJiBvdGhlci5tX3ZhbHVlLmNhbGMgJiYgbV92YWx1ZS5j
YWxjLT5lcXVhbHMoKm90aGVyLm1fdmFsdWUuY2FsYyk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1NIQVBFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNoYXBlOgogICAgICAgICByZXR1cm4g
bV92YWx1ZS5zaGFwZSAmJiBvdGhlci5tX3ZhbHVlLnNoYXBlICYmIG1fdmFsdWUuc2hhcGUtPmVx
dWFscygqb3RoZXIubV92YWx1ZS5zaGFwZSk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0ZP
TlRfRkFNSUxZOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHk6CiAgICAgICAgIHJl
dHVybiBmb250RmFtaWx5KCkgPT0gb3RoZXIuZm9udEZhbWlseSgpOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19JREVOVDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5JQ09ERV9SQU5H
RToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVS
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5p
Y29kZVJhbmdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aE51bWJlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhM
ZW5ndGg6CiAgICAgICAgIC8vIEZJWE1FOiBzZWVtcyBsaWtlIHRoZXNlIHNob3VsZCBiZSBoYW5k
bGVkLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MjI0LDE3ICsxMjI0LDE3IEBAIFJlZjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pCiB2b2lkIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb2xsZWN0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0
PENTU1Byb3BlcnR5SUQ+JiB2YWx1ZXMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwcmltaXRpdmVV
bml0VHlwZSgpKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhT
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgogICAgICAgICB2YWx1ZXMuYWRk
KENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfTEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKICAgICAgICAgdmFsdWVz
LmFkZChDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICAgICAgdmFsdWVzLmFkZChDU1NQcm9wZXJ0
eUxpbmVIZWlnaHQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Q0FMQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDYWxjdWxhdGVkOgogICAgICAgICBtX3ZhbHVl
LmNhbGMtPmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKHZhbHVlcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMjQ1LDE0ICsxMjQ1LDE0IEBAIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVz
KEhhc2hTZXQ8Q1NTUHJvcGVyCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjb2xsZWN0RGlyZWN0
Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdmFs
dWVzKSBjb25zdAogewogICAgIHN3aXRjaCAocHJpbWl0aXZlVW5pdFR5cGUoKSkgewotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlbXM6CiAg
ICAgICAgIHZhbHVlcy5hZGQoQ1NTUHJvcGVydHlGb250U2l6ZSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJs
aHM6CiAgICAgICAgIHZhbHVlcy5hZGQoQ1NTUHJvcGVydHlGb250U2l6ZSk7CiAgICAgICAgIHZh
bHVlcy5hZGQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0NBTEM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRl
ZDoKICAgICAgICAgbV92YWx1ZS5jYWxjLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxE
ZXBlbmRlbmNpZXModmFsdWVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggMTcxNzVmMjg3OTQzZWNhODYwZGY0
OGViMTU2MGNhMjJmZGQ2OGY4NS4uMjczZjc3NDg5YTkzYTA2ZTk1YWNmNDdlYThlYjQ3YmIyYzA5
M2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTgzLDM5ICs4
MywzOSBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogU29tZSBvZiB0aGVzZSB1c2UgcHJpbWl0
aXZlVW5pdFR5cGUoKSBhbmQgc29tZSB1c2UgcHJpbWl0aXZlVHlwZSgpLiBNYW55IHRoYXQgdXNl
IHByaW1pdGl2ZVVuaXRUeXBlKCkgYXJlIGxpa2VseSBicm9rZW4gd2l0aCBjYWxjKCkuCiAgICAg
Ym9vbCBpc0FuZ2xlKCkgY29uc3QgeyByZXR1cm4gdW5pdENhdGVnb3J5KHByaW1pdGl2ZVR5cGUo
KSkgPT0gQ1NTVW5pdENhdGVnb3J5OjpBbmdsZTsgfQotICAgIGJvb2wgaXNBdHRyKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0FUVFI7IH0K
LSAgICBib29sIGlzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkg
PT0gQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOyB9Ci0gICAgYm9vbCBpc0ZvbnRJbmRlcGVuZGVu
dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPj0gQ1NTVW5pdFR5
cGU6OkNTU19QWCAmJiBwcmltaXRpdmVVbml0VHlwZSgpIDw9IENTU1VuaXRUeXBlOjpDU1NfUEM7
IH0KKyAgICBib29sIGlzQXR0cigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkg
PT0gQ1NTVW5pdFR5cGU6OkF0dHI7IH0KKyAgICBib29sIGlzQ291bnRlcigpIGNvbnN0IHsgcmV0
dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNvdW50ZXI7IH0KKyAgICBi
b29sIGlzRm9udEluZGVwZW5kZW50TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5p
dFR5cGUoKSA+PSBDU1NVbml0VHlwZTo6UHggJiYgcHJpbWl0aXZlVW5pdFR5cGUoKSA8PSBDU1NV
bml0VHlwZTo6UGM7IH0KICAgICBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gaXNGb250UmVsYXRpdmVMZW5ndGgocHJpbWl0aXZlVW5pdFR5cGUoKSk7IH0KLSAgICBi
b29sIGlzUXVpcmt5RW1zKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1Vu
aXRUeXBlOjpDU1NfUVVJUktZX0VNUzsgfQorICAgIGJvb2wgaXNRdWlya3lFbXMoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlF1aXJreUVtczsgfQogICAg
IGJvb2wgaXNMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc0xlbmd0aChzdGF0aWNfY2FzdDxDU1NV
bml0VHlwZT4ocHJpbWl0aXZlVHlwZSgpKSk7IH0KLSAgICBib29sIGlzTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOyB9Ci0g
ICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOyB9Ci0gICAgYm9vbCBpc1B4KCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUFg7IH0KLSAgICBib29s
IGlzUmVjdCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5
cGU6OkNTU19SRUNUOyB9Ci0gICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRp
dmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUEFJUjsgfQotICAgIGJvb2wgaXNQcm9w
ZXJ0eUlEKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX1BST1BFUlRZX0lEOyB9Ci0gICAgYm9vbCBpc1JHQkNvbG9yKCkgY29uc3QgeyByZXR1
cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOyB9Ci0g
ICAgYm9vbCBpc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6Q1NTX1NIQVBFOyB9Ci0gICAgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkc7IH0KLSAg
ICBib29sIGlzRm9udEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkg
PT0gQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWTsgfQorICAgIGJvb2wgaXNOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcjsgfQor
ICAgIGJvb2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09
IENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOyB9CisgICAgYm9vbCBpc1B4KCkgY29uc3QgeyByZXR1
cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpQeDsgfQorICAgIGJvb2wgaXNSZWN0
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6UmVj
dDsgfQorICAgIGJvb2wgaXNQYWlyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6UGFpcjsgfQorICAgIGJvb2wgaXNQcm9wZXJ0eUlEKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6UHJvcGVydHlJRDsg
fQorICAgIGJvb2wgaXNSR0JDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOyB9CisgICAgYm9vbCBpc1NoYXBlKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6U2hhcGU7IH0KKyAg
ICBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6U3RyaW5nOyB9CisgICAgYm9vbCBpc0ZvbnRGYW1pbHkoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpGb250RmFtaWx5OyB9CiAg
ICAgYm9vbCBpc1RpbWUoKSBjb25zdCB7IHJldHVybiB1bml0Q2F0ZWdvcnkocHJpbWl0aXZlVW5p
dFR5cGUoKSkgPT0gQ1NTVW5pdENhdGVnb3J5OjpUaW1lOyB9CiAgICAgYm9vbCBpc0ZyZXF1ZW5j
eSgpIGNvbnN0IHsgcmV0dXJuIHVuaXRDYXRlZ29yeShwcmltaXRpdmVUeXBlKCkpID09IENTU1Vu
aXRDYXRlZ29yeTo6RnJlcXVlbmN5OyB9Ci0gICAgYm9vbCBpc1VSSSgpIGNvbnN0IHsgcmV0dXJu
IHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19VUkk7IH0KLSAgICBib29s
IGlzQ2FsY3VsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NT
VW5pdFR5cGU6OkNTU19DQUxDOyB9Ci0gICAgYm9vbCBpc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjsgfQotICAgIGJvb2wgaXNDYWxjdWxhdGVk
UGVyY2VudGFnZVdpdGhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg7IH0KLSAgICBib29s
IGlzRG90c1BlckluY2goKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5p
dFR5cGU6OkNTU19EUEk7IH0KLSAgICBib29sIGlzRG90c1BlclBpeGVsKCkgY29uc3QgeyByZXR1
cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfRFBQWDsgfQotICAgIGJvb2wg
aXNEb3RzUGVyQ2VudGltZXRlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6Q1NTX0RQQ007IH0KKyAgICBib29sIGlzVVJJKCkgY29uc3QgeyByZXR1cm4g
cHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6VVJJOyB9CisgICAgYm9vbCBpc0Nh
bGN1bGF0ZWQoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRU
eXBlOjpDYWxjdWxhdGVkOyB9CisgICAgYm9vbCBpc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aE51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q2Fs
Y3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOyB9CisgICAgYm9vbCBpc0NhbGN1bGF0ZWRQZXJj
ZW50YWdlV2l0aExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NV
bml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOyB9CisgICAgYm9vbCBpc0Rv
dHNQZXJJbmNoKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBl
OjpEb3RzUGVySW5jaDsgfQorICAgIGJvb2wgaXNEb3RzUGVyUGl4ZWwoKSBjb25zdCB7IHJldHVy
biBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbDsgfQorICAgIGJv
b2wgaXNEb3RzUGVyQ2VudGltZXRlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NVbml0VHlwZTo6RG90c1BlckNlbnRpbWV0ZXI7IH0KICAgICBib29sIGlzUmVzb2x1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIHVuaXRDYXRlZ29yeShwcmltaXRpdmVUeXBlKCkpID09IENTU1Vu
aXRDYXRlZ29yeTo6UmVzb2x1dGlvbjsgfQogICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aChwcmltaXRp
dmVVbml0VHlwZSgpKTsgfQotICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19WVzsg
fQotICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSBjb25zdCB7IHJldHVybiBw
cmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfVkg7IH0KLSAgICBib29sIGlz
Vmlld3BvcnRQZXJjZW50YWdlTWF4KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg7IH0KLSAgICBib29sIGlzVmlld3BvcnRQZXJjZW50
YWdlTWluKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX1ZNSU47IH0KLSAgICBib29sIGlzVmFsdWVJRCgpIGNvbnN0IHsgcmV0dXJuIHByaW1p
dGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRDsgfQotICAgIGJvb2wg
aXNGbGV4KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpD
U1NfRlI7IH0KKyAgICBib29sIGlzVmlld3BvcnRQZXJjZW50YWdlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRh
Z2VXaWR0aDsgfQorICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNl
bnRhZ2VIZWlnaHQ7IH0KKyAgICBib29sIGlzVmlld3BvcnRQZXJjZW50YWdlTWF4KCkgY29uc3Qg
eyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJj
ZW50YWdlTWF4OyB9CisgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZU1pbigpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2Vu
dGFnZU1pbjsgfQorICAgIGJvb2wgaXNWYWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZl
VW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6VmFsdWVJRDsgfQorICAgIGJvb2wgaXNGbGV4KCkg
Y29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpGbGV4OyB9CiAg
ICAgYm9vbCBpc0N1c3RvbUlkZW50KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ7IH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlSUQpKTsgfQpAQCAtMTY3LDE2
ICsxNjcsMTYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1Zh
bHVlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IEFTU0VSVChw
cmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1IpOyByZXR1cm4g
Km1fdmFsdWUuY29sb3I7IH0KLSAgICBDb3VudGVyKiBjb3VudGVyVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUiA/IG51
bGxwdHIgOiBtX3ZhbHVlLmNvdW50ZXI7IH0KLSAgICBDU1NDYWxjVmFsdWUqIGNzc0NhbGNWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNT
U19DQUxDID8gbnVsbHB0ciA6IG1fdmFsdWUuY2FsYzsgfQotICAgIGNvbnN0IENTU0ZvbnRGYW1p
bHkmIGZvbnRGYW1pbHkoKSBjb25zdCB7IEFTU0VSVChwcmltaXRpdmVVbml0VHlwZSgpID09IENT
U1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1JTFkpOyByZXR1cm4gKm1fdmFsdWUuZm9udEZhbWlseTsg
fQotICAgIFBhaXIqIHBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBl
KCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19QQUlSID8gbnVsbHB0ciA6IG1fdmFsdWUucGFpcjsgfQot
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVu
aXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRCA/IG1fdmFsdWUucHJvcGVy
dHlJRCA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQotICAgIFF1YWQqIHF1YWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19RVUFEID8g
bnVsbHB0ciA6IG1fdmFsdWUucXVhZDsgfQotICAgIFJlY3QqIHJlY3RWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19SRUNUID8gbnVs
bHB0ciA6IG1fdmFsdWUucmVjdDsgfQotICAgIENTU0Jhc2ljU2hhcGUqIHNoYXBlVmFsdWUoKSBj
b25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfU0hB
UEUgPyBudWxscHRyIDogbV92YWx1ZS5zaGFwZTsgfQotICAgIENTU1ZhbHVlSUQgdmFsdWVJRCgp
IGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19W
QUxVRV9JRCA/IG1fdmFsdWUudmFsdWVJRCA6IENTU1ZhbHVlSW52YWxpZDsgfQorICAgIGNvbnN0
IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgQVNTRVJUKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NT
VW5pdFR5cGU6OlJHQkNvbG9yKTsgcmV0dXJuICptX3ZhbHVlLmNvbG9yOyB9CisgICAgQ291bnRl
ciogY291bnRlclZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBD
U1NVbml0VHlwZTo6Q291bnRlciA/IG51bGxwdHIgOiBtX3ZhbHVlLmNvdW50ZXI7IH0KKyAgICBD
U1NDYWxjVmFsdWUqIGNzc0NhbGNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRU
eXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQgPyBudWxscHRyIDogbV92YWx1ZS5jYWxj
OyB9CisgICAgY29uc3QgQ1NTRm9udEZhbWlseSYgZm9udEZhbWlseSgpIGNvbnN0IHsgQVNTRVJU
KHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHkpOyByZXR1cm4g
Km1fdmFsdWUuZm9udEZhbWlseTsgfQorICAgIFBhaXIqIHBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OlBhaXIgPyBudWxscHRyIDog
bV92YWx1ZS5wYWlyOyB9CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6UHJvcGVydHlJRCA/IG1f
dmFsdWUucHJvcGVydHlJRCA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQorICAgIFF1YWQqIHF1YWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6
OlF1YWQgPyBudWxscHRyIDogbV92YWx1ZS5xdWFkOyB9CisgICAgUmVjdCogcmVjdFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6UmVjdCA/
IG51bGxwdHIgOiBtX3ZhbHVlLnJlY3Q7IH0KKyAgICBDU1NCYXNpY1NoYXBlKiBzaGFwZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6U2hh
cGUgPyBudWxscHRyIDogbV92YWx1ZS5zaGFwZTsgfQorICAgIENTU1ZhbHVlSUQgdmFsdWVJRCgp
IGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlZhbHVl
SUQgPyBtX3ZhbHVlLnZhbHVlSUQgOiBDU1NWYWx1ZUludmFsaWQ7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBvcGVyYXRvciBUKCkgY29uc3Q7IC8vIERlZmluZWQgaW4gQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3RoKENTU1VuaXRU
eXBlKTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZXNvbHV0aW9uKENTU1VuaXRUeXBl
KTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
Q1NTVW5pdFR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA+PSBDU1NVbml0VHlwZTo6Q1NTX1ZXICYm
IHR5cGUgPD0gQ1NTVW5pdFR5cGU6OkNTU19WTUFYOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKENTU1VuaXRUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGUgPj0gQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoICYmIHR5cGUgPD0g
Q1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDsgfQogCiAgICAgdW5pb24gewogICAg
ICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQ7CkBAIC0yNjMsMzAgKzI2MywzMCBAQCBwcml2
YXRlOgogCiBjb25zdGV4cHIgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNGb250UmVsYXRpdmVM
ZW5ndGgoQ1NTVW5pdFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gdHlwZSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX0VNUwotICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpDU1NfRVhTCi0gICAg
ICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19MSFMKLSAgICAgICAgfHwgdHlwZSA9PSBD
U1NVbml0VHlwZTo6Q1NTX1JMSFMKLSAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NT
X1JFTVMKLSAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NIUwotICAgICAgICB8
fCB0eXBlID09IENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzsKKyAgICByZXR1cm4gdHlwZSA9
PSBDU1NVbml0VHlwZTo6RW1zCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkV4cwor
ICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpMaHMKKyAgICAgICAgfHwgdHlwZSA9PSBD
U1NVbml0VHlwZTo6UmxocworICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpSZW1zCisg
ICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNocworICAgICAgICB8fCB0eXBlID09IENT
U1VuaXRUeXBlOjpRdWlya3lFbXM7CiB9CiAKIGNvbnN0ZXhwciBib29sIENTU1ByaW1pdGl2ZVZh
bHVlOjppc0xlbmd0aChDU1NVbml0VHlwZSB0eXBlKQogewotICAgIHJldHVybiAodHlwZSA+PSBD
U1NVbml0VHlwZTo6Q1NTX0VNUyAmJiB0eXBlIDw9IENTU1VuaXRUeXBlOjpDU1NfUEMpCi0gICAg
ICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19SRU1TCi0gICAgICAgIHx8IHR5cGUgPT0g
Q1NTVW5pdFR5cGU6OkNTU19DSFMKLSAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NT
X1EKLSAgICAgICAgfHwgdHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0xIUwotICAgICAgICB8fCB0
eXBlID09IENTU1VuaXRUeXBlOjpDU1NfUkxIUworICAgIHJldHVybiAodHlwZSA+PSBDU1NVbml0
VHlwZTo6RW1zICYmIHR5cGUgPD0gQ1NTVW5pdFR5cGU6OlBjKQorICAgICAgICB8fCB0eXBlID09
IENTU1VuaXRUeXBlOjpSZW1zCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNocwor
ICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpRCisgICAgICAgIHx8IHR5cGUgPT0gQ1NT
VW5pdFR5cGU6OkxocworICAgICAgICB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpSbGhzCiAgICAg
ICAgIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpCi0gICAgICAgIHx8IHR5cGUg
PT0gQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOworICAgICAgICB8fCB0eXBlID09IENTU1Vu
aXRUeXBlOjpRdWlya3lFbXM7CiB9CiAKIGNvbnN0ZXhwciBib29sIENTU1ByaW1pdGl2ZVZhbHVl
Ojppc1Jlc29sdXRpb24oQ1NTVW5pdFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gdHlwZSA+PSBD
U1NVbml0VHlwZTo6Q1NTX0RQUFggJiYgdHlwZSA8PSBDU1NVbml0VHlwZTo6Q1NTX0RQQ007Cisg
ICAgcmV0dXJuIHR5cGUgPj0gQ1NTVW5pdFR5cGU6OkRvdHNQZXJQaXhlbCAmJiB0eXBlIDw9IENT
U1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShU
JiYgdmFsdWUpCkBAIC0yOTYsMTMgKzI5NiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKFQmJgog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDU1NQcmltaXRpdmVWYWx1ZTo6VGltZVVuaXQgdGltZVVu
aXQ+IGlubGluZSBUIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVGltZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfUykKKyAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6OlNlY29uZCkKICAgICAgICAgcmV0dXJuIHZhbHVlPFQ+KCk7Ci0g
ICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfTVMpCisgICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlw
ZSgpID09IENTU1VuaXRUeXBlOjpNcykKICAgICAgICAgcmV0dXJuIHZhbHVlPFQ+KCkgLyAxMDAw
OwotICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09
IENTU1VuaXRUeXBlOjpDU1NfTVMpCisgICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vjb25kcyAm
JiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok1zKQogICAgICAgICByZXR1cm4gdmFs
dWU8VD4oKTsKLSAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1MpCisgICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vj
b25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OlNlY29uZCkKICAgICAgICAg
cmV0dXJuIHZhbHVlPFQ+KCkgKiAxMDAwOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiAwOwpAQCAtMzIzLDEzICszMjMsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShSZWY8VD4mJiB2YWx1ZSkK
IGlubGluZSBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKENTU1VuaXRU
eXBlIHR5cGUsIGRvdWJsZSBhbmdsZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfREVHOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRlZzoKICAgICAg
ICAgcmV0dXJuIGFuZ2xlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6UmFkOgogICAgICAgICByZXR1cm4gcmFkMmRlZyhhbmdsZSk7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDoK
ICAgICAgICAgcmV0dXJuIGdyYWQyZGVnKGFuZ2xlKTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVFVSTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpUdXJuOgogICAgICAgICByZXR1cm4gdHVy
bjJkZWcoYW5nbGUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5k
ZXggZDI4OTdiZjZiMzBiMjI1ZDdhMGE2ZWZkNzM1M2JlYmZlY2I2NjhkOS4uMTMzYWJhMjUzYzA2
MTQzYWExNjlkZjMyYzBlNGVjODMzOTBhZjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC01MywxMyArNTMsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKHNob3J0IGkpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgbV92YWx1ZS5udW0g
PSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3Igc2hvcnQoKSBjb25zdAogewotICAgIGlmIChwcmltaXRpdmVV
bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQorICAgIGlmIChwcmltaXRpdmVV
bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAgICAgIHJldHVybiBjbGFtcFRv
PHNob3J0PihtX3ZhbHVlLm51bSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY5
LDEzICs2OSwxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3Igc2hvcnQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKHVuc2lnbmVkIHNob3J0IGkpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRp
dmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX05V
TUJFUik7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAg
ICAgbV92YWx1ZS5udW0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpOwogfQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKSBjb25z
dAogewotICAgIGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIp
CisgICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKQogICAgICAg
ICByZXR1cm4gdmFsdWU8dW5zaWduZWQgc2hvcnQ+KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTg0LDcgKzg0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgY29uc3QKIAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIGludCgpIGNvbnN0CiB7Ci0gICAgaWYgKHByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikKKyAgICBpZiAocHJpbWl0aXZl
VHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAgICAgIHJldHVybiB2YWx1ZTxpbnQ+
KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTkzLDcgKzkzLDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIGludCgpIGNvbnN0CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCgpIGNv
bnN0CiB7Ci0gICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UikKKyAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTx1bnNpZ25lZD4oKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShmbG9hdCBpKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpOdW1iZXIp
OwogICAgIG1fdmFsdWUubnVtID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihpKTsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIGZsb2F0KCkgY29uc3QKIHsK
LSAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQorICAg
IGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKICAgICAgICAgcmV0
dXJuIHZhbHVlPGZsb2F0PigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjAs
MTYgKzEyMCwxNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgZmxvYXQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKExpbmVDbGFtcFZhbHVlIGkpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRp
dmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShpLmlzUGVyY2VudGFnZSgpID8g
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFIDogQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwor
ICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKGkuaXNQZXJjZW50YWdlKCkgPyBDU1NVbml0VHlwZTo6
UGVyY2VudGFnZSA6IENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIG1fdmFsdWUubnVtID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihpLnZhbHVlKCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUNsYW1wVmFsdWUoKSBjb25zdAogewotICAgIGlm
IChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCisgICAgaWYgKHBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKQogICAgICAgICByZXR1cm4gTGlu
ZUNsYW1wVmFsdWUodmFsdWU8aW50PigpLCBMaW5lQ2xhbXA6OkxpbmVDb3VudCk7CiAKLSAgICBp
ZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICBp
ZiAocHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICBy
ZXR1cm4gTGluZUNsYW1wVmFsdWUodmFsdWU8aW50PigpLCBMaW5lQ2xhbXA6OlBlcmNlbnRhZ2Up
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzksNyArMTM5LDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVDbGFtcFZhbHVlKCkg
Y29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShSZWZsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgUmVmbGVjdGlvbkRpcmVjdGlv
bjo6QWJvdmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWJvdmU7CkBAIC0x
NzksNyArMTc5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIFJlZmxlY3Rpb25EaXJlY3Rpb24oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbHVtbkZpbGwgY29sdW1uRmlsbCkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGNvbHVtbkZpbGwpIHsKICAgICBjYXNl
IENvbHVtbkZpbGw6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKQEAgLTE5Miw3ICsxOTIsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sdW1uRmlsbCBjb2x1bW5GaWxsKQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29sdW1uRmlsbCgpIGNvbnN0CiB7
Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCkgeworICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpWYWx1ZUlE
KSB7CiAgICAgICAgIGlmIChtX3ZhbHVlLnZhbHVlSUQgPT0gQ1NTVmFsdWVCYWxhbmNlKQogICAg
ICAgICAgICAgcmV0dXJuIENvbHVtbkZpbGw6OkJhbGFuY2U7CiAgICAgICAgIGlmIChtX3ZhbHVl
LnZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvKQpAQCAtMjA1LDcgKzIwNSw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2x1bW5GaWxsKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2x1
bW5TcGFuIGNvbHVtblNwYW4pCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChj
b2x1bW5TcGFuKSB7CiAgICAgY2FzZSBDb2x1bW5TcGFuOjpBbGw6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQWxsOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2x1bW5TcGFuIGNvbHVt
blNwYW4pCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29s
dW1uU3BhbigpIGNvbnN0CiB7CiAgICAgLy8gTWFwIDEgdG8gbm9uZSBmb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLgotICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSICYmIG1fdmFsdWUubnVtID09IDEpCisgICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlciAmJiBtX3ZhbHVlLm51bSA9PSAxKQogICAgICAgICBy
ZXR1cm4gQ29sdW1uU3Bhbjo6Tm9uZTsKIAogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CkBAIC0y
NDEsNyArMjQxLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIENvbHVtblNwYW4oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFByaW50Q29sb3JBZGp1c3QgdmFsdWUpCiAgICAgOiBDU1NW
YWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgIGNhc2UgUHJpbnRDb2xvckFk
anVzdDo6RXhhY3Q6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXhhY3Q7CkBA
IC0yNzMsNyArMjczLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIFByaW50Q29sb3JBZGp1c3QoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlclN0eWxlIGUpCiAgICAgOiBDU1NW
YWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBCb3JkZXJTdHlsZTo6Tm9u
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtMzI5LDcgKzMy
OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPdXRs
aW5lSXNBdXRvKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShDb21wb3NpdGVPcGVyYXRvciBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQ29tcG9zaXRlT3BlcmF0b3I6OkNsZWFy
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNsZWFyOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb21w
b3NpdGVPcGVyYXRvcigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29udHJvbFBhcnQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIE5vQ29udHJvbFBhcnQ6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKQEAgLTYzNSw3ICs2MzUsNyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29udHJvbFBhcnQoKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEJhY2tmYWNlVmlzaWJpbGl0eSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7
Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7Cisg
ICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRj
aCAoZSkgewogICAgIGNhc2UgQmFja2ZhY2VWaXNpYmlsaXR5OjpWaXNpYmxlOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGU7CkBAIC02NjcsNyArNjY3LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJhY2tmYWNlVmlzaWJp
bGl0eSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoRmlsbEF0dGFjaG1lbnQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAg
ICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEZpbGxBdHRhY2htZW50OjpTY3JvbGxCYWNrZ3JvdW5k
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNjcm9sbDsKQEAgLTcwMyw3ICs3
MDMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRmls
bEF0dGFjaG1lbnQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEZpbGxCb3ggZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAg
ICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEZpbGxCb3g6OkJvcmRlcjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3JkZXJCb3g7CkBAIC03NDgsNyArNzQ4LDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZpbGxCb3goKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZp
bGxSZXBlYXQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAg
ICBjYXNlIEZpbGxSZXBlYXQ6OlJlcGVhdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVSZXBlYXQ7CkBAIC03ODksNyArNzg5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZpbGxSZXBlYXQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJveFBhY2sgZSkKICAgICA6
IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJveFBhY2s6OlN0
YXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0YXJ0OwpAQCAtODMwLDcg
KzgzMCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBC
b3hQYWNrKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShCb3hBbGlnbm1lbnQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAg
ICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJveEFsaWdubWVudDo6U3RyZXRjaDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdHJldGNoOwpAQCAtODc3LDcgKzg3Nyw3IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3hBbGlnbm1lbnQo
KSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEJveERlY29yYXRpb25CcmVhayBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoZSkgewogICAgIGNhc2UgQm94RGVjb3JhdGlvbkJyZWFrOjpTbGljZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTbGljZTsKQEAgLTkwOSw3ICs5MDksNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQm94RGVjb3JhdGlv
bkJyZWFrKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShFZGdlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
LSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNo
IChlKSB7CiAgICAgY2FzZSBFZGdlOjpUb3A6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlVG9wOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFZGdlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShCb3hTaXppbmcgZSkKICAgICA6IENTU1Zh
bHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBl
OjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJveFNpemluZzo6Qm9yZGVy
Qm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvcmRlckJveDsKQEAgLTk4
MSw3ICs5ODEsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgQm94U2l6aW5nKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShCb3hEaXJlY3Rpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEJveERpcmVjdGlvbjo6Tm9ybWFsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTEwMTIsNyArMTAxMiw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3hEaXJl
Y3Rpb24oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEJveExpbmVzIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dp
dGNoIChlKSB7CiAgICAgY2FzZSBCb3hMaW5lczo6U2luZ2xlOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVNpbmdsZTsKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3hMaW5lcygpIGNvbnN0CiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm94T3Jp
ZW50IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2Fz
ZSBCb3hPcmllbnQ6Okhvcml6b250YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlSG9yaXpvbnRhbDsKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3hPcmllbnQoKSBjb25zdAogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENhcHRpb25TaWRlIGUp
CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBDYXB0
aW9uU2lkZTo6TGVmdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMZWZ0OwpA
QCAtMTExNyw3ICsxMTE3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIENhcHRpb25TaWRlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDbGVhciBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQ2xlYXI6Ok5vbmU6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDbGVhcigpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ3Vy
c29yVHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAg
IGNhc2UgQ3Vyc29yVHlwZTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVBdXRvOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEN1cnNvclR5cGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEN1cnNvclZpc2liaWxpdHkgZSkK
ICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIEN1cnNv
clZpc2liaWxpdHk6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKQEAgLTEzMzQsNyArMTMzNCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBDdXJzb3JWaXNpYmlsaXR5KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShEaXNwbGF5VHlwZSBlKQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRGlzcGxheVR5
cGU6OklubGluZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbmxpbmU7CkBA
IC0xNDIzLDcgKzE0MjMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRGlzcGxheVR5cGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVtcHR5Q2VsbCBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZh
bHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRW1wdHlDZWxsOjpTaG93OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNob3c7CkBAIC0xNDU0LDcgKzE0NTQsNyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRW1wdHlDZWxs
KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShGbGV4RGlyZWN0aW9uIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dp
dGNoIChlKSB7CiAgICAgY2FzZSBGbGV4RGlyZWN0aW9uOjpSb3c6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlUm93OwpAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZsZXhEaXJlY3Rpb24oKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEFs
aWduQ29udGVudCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewog
ICAgIGNhc2UgQWxpZ25Db250ZW50OjpGbGV4U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRmxleFN0YXJ0OwpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEFsaWduQ29udGVudCgpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRmxl
eFdyYXAgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBj
YXNlIEZsZXhXcmFwOjpOb1dyYXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Tm93cmFwOwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEZsZXhXcmFwKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShGbG9hdCBlKQogICAgIDogQ1NTVmFs
dWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5
cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgRmxvYXQ6Ok5vbmU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKQEAgLTE2MjksNyArMTYyOSw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBGbG9hdCgpIGNv
bnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoTGluZUJyZWFrIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7
CiAgICAgY2FzZSBMaW5lQnJlYWs6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXV0bzsKQEAgLTE3MDMsNyArMTcwMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQnJlYWsoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpc3RTdHlsZVBvc2l0aW9u
IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBM
aXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVPdXRzaWRlOwpAQCAtMTc0Nyw3ICsxNzQ3LDcgQEAgaW5saW5lIENTU1ZhbHVlSUQgdG9D
U1NWYWx1ZUlEKExpc3RTdHlsZVR5cGUgc3R5bGUpCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGlzdFN0eWxlVHlwZSBzdHlsZSkKICAgICA6
IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpWYWx1ZUlEKTsKICAgICBtX3ZhbHVlLnZhbHVlSUQgPSB0b0NTU1ZhbHVlSUQoc3R5
bGUpOwogfQogCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlVHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFyZ2luQ29sbGFwc2Ug
ZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIE1h
cmdpbkNvbGxhcHNlOjpDb2xsYXBzZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVDb2xsYXBzZTsKQEAgLTE4MDIsNyArMTgwMiw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBNYXJnaW5Db2xsYXBzZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFycXVlZUJlaGF2
aW9yIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2Fz
ZSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlTm9uZTsKQEAgLTE4NDMsNyArMTg0Myw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBNYXJxdWVlQmVoYXZpb3IoKSBjb25zdAogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE1hcnF1ZWVEaXJlY3Rp
b24gZGlyZWN0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CiAgICAgY2FzZSBNYXJxdWVlRGlyZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZvcndhcmRzOwpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE1hcnF1ZWVEaXJlY3Rp
b24oKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKE5CU1BNb2RlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
LSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNo
IChlKSB7CiAgICAgY2FzZSBOQlNQTW9kZTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTE5MzIsNyArMTkzMiw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBOQlNQTW9kZSgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT3ZlcmZsb3cg
ZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIE92
ZXJmbG93OjpWaXNpYmxlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2li
bGU7CkBAIC0xOTg5LDcgKzE5ODksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgT3ZlcmZsb3coKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE92ZXJzY3JvbGxCZWhhdmlvciBiZWhhdmlv
cikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGJlaGF2aW9yKSB7CiAgICAg
Y2FzZSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkNvbnRhaW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQ29udGFpbjsKQEAgLTIwMjUsNyArMjAyNSw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEJyZWFrQmV0d2VlbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUF1dG87CkBAIC0yMDk2LDcgKzIwOTYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQnJlYWtCZXR3ZWVuKCkgY29uc3QKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShCcmVha0luc2lk
ZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2Ug
QnJlYWtJbnNpZGU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKQEAgLTIxMzcsNyArMjEzNyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBCcmVha0luc2lkZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUG9zaXRpb25UeXBlIGUpCiAgICAgOiBD
U1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBQb3NpdGlvblR5cGU6
OlN0YXRpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGF0aWM7CkBAIC0y
MTg0LDcgKzIxODQsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgUG9zaXRpb25UeXBlKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShSZXNpemUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFJlc2l6ZTo6Qm90aDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3RoOwpAQCAtMjIyOCw3ICsyMjI4LDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFJlc2l6ZSgpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGFi
bGVMYXlvdXRUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7
CiAgICAgY2FzZSBUYWJsZUxheW91dFR5cGU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQXV0bzsKQEAgLTIyNTksNyArMjI1OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUYWJsZUxheW91dFR5cGUoKSBjb25zdAogdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRB
bGlnbk1vZGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVN0YXJ0OwpAQCAtMjMxMCw3ICsyMzEwLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRBbGlnbkxh
c3QgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNl
IFRleHRBbGlnbkxhc3Q6OlN0YXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZVN0YXJ0OwpAQCAtMjM2Niw3ICsyMzY2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbkxhc3QoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRKdXN0aWZ5IGUpCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBUZXh0SnVz
dGlmeTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAt
MjQ1OCw3ICsyNDU4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIFRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRVbmRlcmxpbmVQb3NpdGlvbiBw
b3NpdGlvbikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7
CiAgICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG86CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0VW5kZXJsaW5lUG9zaXRpb24o
KSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKFRleHRTZWN1cml0eSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7
Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7Cisg
ICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRj
aCAoZSkgewogICAgIGNhc2UgVGV4dFNlY3VyaXR5OjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0yNTM4LDcgKzI1MzgsNyBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFNlY3VyaXR5KCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0
VHJhbnNmb3JtIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAg
ICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpDYXBpdGFsaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUNhcGl0YWxpemU7CkBAIC0yNTc5LDcgKzI1NzksNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFRyYW5zZm9ybSgpIGNvbnN0
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
RVVuaWNvZGVCaWRpIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7
CiAgICAgY2FzZSBVQk5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVO
b3JtYWw7CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVVuaWNvZGVCaWRpKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShVc2VyRHJhZyBlKQogICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgVXNlckRyYWc6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTI2NzEsNyAr
MjY3MSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBV
c2VyRHJhZygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoVXNlck1vZGlmeSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoZSkgewogICAgIGNhc2UgVXNlck1vZGlmeTo6UmVhZE9ubHk6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmVhZE9ubHk7CkBAIC0yNzA3LDcgKzI3MDcsNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVXNlck1vZGlmeSgp
IGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoVXNlclNlbGVjdCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0g
ICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAo
ZSkgewogICAgIGNhc2UgVXNlclNlbGVjdDo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb25lOwpAQCAtMjc0NSw3ICsyNzQ1LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFVzZXJTZWxlY3QoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFZlcnRpY2FsQWxp
Z24gYSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGEpIHsKICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OlRvcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVU
b3A7CkBAIC0yODEzLDcgKzI4MTMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgVmVydGljYWxBbGlnbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmlzaWJpbGl0eSBlKQogICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgVmlzaWJpbGl0eTo6
VmlzaWJsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxlOwpAQCAt
Mjg0OSw3ICsyODQ5LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIFZpc2liaWxpdHkoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdoaXRlU3BhY2UgZSkKICAgICA6IENTU1ZhbHVlKFBy
aW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1
ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFdoaXRlU3BhY2U6Ok5vcm1hbDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC0yOTA1LDcgKzI5MDUs
NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2hpdGVT
cGFjZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoV29yZEJyZWFrIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsK
KyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dp
dGNoIChlKSB7CiAgICAgY2FzZSBXb3JkQnJlYWs6Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC0yOTQ2LDcgKzI5NDYsNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV29yZEJyZWFrKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPdmVy
Zmxvd1dyYXAgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAg
ICBjYXNlIE92ZXJmbG93V3JhcDo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU5vcm1hbDsKQEAgLTI5ODIsNyArMjk4Miw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPdmVyZmxvd1dyYXAoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHREaXJlY3Rp
b24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNl
IFRleHREaXJlY3Rpb246OkxUUjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
dHI7CkBAIC0zMDEzLDcgKzMwMTMsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgVGV4dERpcmVjdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV3JpdGluZ01vZGUgZSkKICAgICA6
IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIFdyaXRpbmdNb2Rl
OjpUb3BUb0JvdHRvbToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIb3Jpem9u
dGFsVGI7CkBAIC0zMDYwLDcgKzMwNjAsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgV3JpdGluZ01vZGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRDb21iaW5lIGUpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NV
bml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBUZXh0Q29tYmlu
ZTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtMzA5
MSw3ICszMDkxLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIFRleHRDb21iaW5lKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShSdWJ5UG9zaXRpb24gcG9zaXRpb24pCiAgICAgOiBDU1NW
YWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChwb3NpdGlvbikgewogICAgIGNhc2UgUnVieVBvc2l0
aW9uOjpCZWZvcmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmVmb3JlOwpA
QCAtMzEyNyw3ICszMTI3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFJ1YnlQb3NpdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dE92ZXJmbG93IG92ZXJmbG93KQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKICAgICBjYXNlIFRl
eHRPdmVyZmxvdzo6Q2xpcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDbGlw
OwpAQCAtMzE1OCw3ICszMTU4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFRleHRPdmVyZmxvdygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZmlsbCkgewogICAgIGNhc2UgVGV4
dEVtcGhhc2lzRmlsbDo6RmlsbGVkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUZpbGxlZDsKQEAgLTMxODksNyArMzE4OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RW1waGFzaXNGaWxsKCkgY29uc3QKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0RW1waGFzaXNN
YXJrIG1hcmspCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChtYXJrKSB7CiAg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3Q6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlRG90OwpAQCAtMzI0Myw3ICszMjQzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRFbXBoYXNpc01hcmsoKSBjb25zdAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRPcmll
bnRhdGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAg
IGNhc2UgVGV4dE9yaWVudGF0aW9uOjpTaWRld2F5czoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVTaWRld2F5czsKQEAgLTMyODMsNyArMzI4Myw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0T3JpZW50YXRpb24oKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBv
aW50ZXJFdmVudHMgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsK
ICAgICBjYXNlIFBvaW50ZXJFdmVudHM6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTm9uZTsKQEAgLTMzNTksNyArMzM1OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBQb2ludGVyRXZlbnRzKCkgY29uc3QKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShLZXJuaW5nIGtl
cm5pbmcpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChrZXJuaW5nKSB7CiAg
ICAgY2FzZSBLZXJuaW5nOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUF1dG87CkBAIC0zMzk4LDcgKzMzOTgsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgS2VybmluZygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT2JqZWN0Rml0IGZpdCkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGZpdCkgewogICAgIGNhc2UgT2JqZWN0Rml0OjpG
aWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZpbGw7CkBAIC0zNDQyLDcg
KzM0NDIsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
T2JqZWN0Rml0KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmcpCiAgICAgOiBDU1NW
YWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0
VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChzbW9vdGhpbmcpIHsKICAgICBjYXNlIEZvbnRTbW9v
dGhpbmdNb2RlOjpBdXRvU21vb3RoaW5nOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUF1dG87CkBAIC0zNDg2LDcgKzM0ODYsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRm9udFNtb290aGluZ01vZGUoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZvbnRTbWFsbENh
cHMgc21hbGxDYXBzKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoc21hbGxD
YXBzKSB7CiAgICAgY2FzZSBGb250U21hbGxDYXBzOjpPZmY6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlTm9ybWFsOwpAQCAtMzUxOSw3ICszNTE5LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZvbnRTbWFsbENhcHMoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRl
eHRSZW5kZXJpbmdNb2RlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChl
KSB7CiAgICAgY2FzZSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmc6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTM1NjAsNyArMzU2MCw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0UmVuZGVy
aW5nTW9kZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoSHlwaGVucyBoeXBoZW5zKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoaHlwaGVucykgewogICAgIGNhc2UgSHlwaGVuczo6Tm9uZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtMzU5Niw3ICszNTk2LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEh5cGhlbnMoKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KExpbmVTbmFwIGdyaWRTbmFwKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0g
ICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAo
Z3JpZFNuYXApIHsKICAgICBjYXNlIExpbmVTbmFwOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vbmU7CkBAIC0zNjMyLDcgKzM2MzIsNyBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZVNuYXAoKSBjb25zdAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpbmVBbGln
biBsaW5lQWxpZ24pCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmlt
aXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChsaW5lQWxp
Z24pIHsKICAgICBjYXNlIExpbmVBbGlnbjo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb25lOwpAQCAtMzY2Myw3ICszNjYzLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVBbGlnbigpIGNvbnN0CiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoU3BlYWtBcyBlKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgU3BlYWtB
czo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAg
LTM3MDMsNyArMzcwMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBPcmRlcigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT3JkZXIgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVf
SUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAg
ICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIE9yZGVyOjpMb2dpY2FsOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUxvZ2ljYWw7CkBAIC0zNzQwLDcgKzM3NDAsNyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFNwZWFrQXM+
KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShCbGVuZE1vZGUgYmxlbmRNb2RlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoYmxlbmRNb2RlKSB7CiAgICAgY2FzZSBCbGVuZE1vZGU6Ok5vcm1hbDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC0zODUxLDcgKzM4NTEsNyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQmxlbmRNb2Rl
KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShJc29sYXRpb24gaXNvbGF0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9J
RCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAg
IHN3aXRjaCAoaXNvbGF0aW9uKSB7CiAgICAgY2FzZSBJc29sYXRpb246OkF1dG86CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTM4ODMsNyArMzg4Myw3IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJc29sYXRpb24oKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKExpbmVDYXAgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsK
ICAgICBjYXNlIEJ1dHRDYXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQnV0
dDsKQEAgLTM5MTksNyArMzkxOSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBMaW5lQ2FwKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaW5lSm9pbiBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6
OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZh
bHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgTWl0ZXJKb2luOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1pdGVyOwpAQCAtMzk1NSw3ICszOTU1LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVKb2luKCkgY29u
c3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShXaW5kUnVsZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewog
ICAgIGNhc2UgV2luZFJ1bGU6Ok5vblplcm86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlTm9uemVybzsKQEAgLTM5ODcsNyArMzk4Nyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaW5kUnVsZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQWxpZ25tZW50QmFzZWxp
bmUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNl
IEFsaWdubWVudEJhc2VsaW5lOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUF1dG87CkBAIC00MDY4LDcgKzQwNjgsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgQWxpZ25tZW50QmFzZWxpbmUoKSBjb25zdAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlckNvbGxh
cHNlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2Fz
ZSBCb3JkZXJDb2xsYXBzZTo6U2VwYXJhdGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlU2VwYXJhdGU7CkBAIC00MDk5LDcgKzQwOTksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQm9yZGVyQ29sbGFwc2UoKSBjb25zdAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlckZp
dCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZl
VW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5p
dFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2Ug
Qm9yZGVyRml0OjpCb3JkZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQm9y
ZGVyOwpAQCAtNDEzMCw3ICs0MTMwLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEJvcmRlckZpdCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5k
ZXJpbmcpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChpbWFnZVJlbmRlcmlu
ZykgewogICAgIGNhc2UgSW1hZ2VSZW5kZXJpbmc6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTQxNzgsNyArNDE3OCw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJbWFnZVJlbmRlcmluZygpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVHJh
bnNmb3JtU3R5bGUzRCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgVHJhbnNmb3JtU3R5bGUzRDo6RmxhdDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVGbGF0OwpAQCAtNDIxOCw3ICs0MjE4LDcgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRyYW5zZm9ybVN0eWxlM0QoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRy
YW5zZm9ybUJveCBib3gpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChib3gp
IHsKICAgICBjYXNlIFRyYW5zZm9ybUJveDo6U3Ryb2tlQm94OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVN0cm9rZUJveDsKQEAgLTQyNjQsNyArNDI2NCw3IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUcmFuc2Zvcm1Cb3goKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KENvbHVtbkF4aXMgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsK
ICAgICBjYXNlIENvbHVtbkF4aXM6Okhvcml6b250YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlSG9yaXpvbnRhbDsKQEAgLTQzMDAsNyArNDMwMCw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2x1bW5BeGlzKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2x1
bW5Qcm9ncmVzc2lvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAg
c2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0
UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoZSkg
ewogICAgIGNhc2UgQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CkBAIC00MzQyLDEwICs0MzQyLDEwIEBAIGlubGluZSBi
b29sIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0aW5nVG9MZW5ndGhSZXF1aXJlc05vbk51bGxT
dHlsZShpbnQgbGVuZ3RoCiAgICAgQVNTRVJUKGlzRm9udFJlbGF0aXZlTGVuZ3RoKCkpOwogICAg
IC8vIFRoaXMgbWF0Y2hlcyB0aGUgaW1wbGVtZW50YXRpb24gaW4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVMZW5ndGhEb3VibGUoKS4KICAgICBzd2l0Y2ggKHByaW1pdGl2ZVVuaXRUeXBlKCkp
IHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19FWFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfTEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2hzOgorICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkxoczoKICAgICAgICAgcmV0dXJuIGxlbmd0aENvbnZlcnNpb24gJiAoRml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJzaW9uKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzcyLDcgKzQzNzIsNyBAQCB0ZW1wbGF0ZTxpbnQg
c3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aChjb25z
dCBDU1NUb0xlbgogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEJ1ZmZlcmVkUmVuZGVyaW5nIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBCdWZmZXJlZFJlbmRlcmluZzo6QXV0bzoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNDQwOCw3ICs0NDA4LDcgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJ1ZmZlcmVkUmVu
ZGVyaW5nKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShDb2xvckludGVycG9sYXRpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbjo6QXV0bzoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNDQ0NCw3ICs0NDQ0
LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbG9y
SW50ZXJwb2xhdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sb3JSZW5kZXJpbmcgZSkKICAgICA6IENTU1ZhbHVlKFBy
aW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpD
U1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1
ZUlEKTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIENvbG9yUmVuZGVyaW5nOjpBdXRvOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CkBAIC00NDgwLDcgKzQ0ODAs
NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29sb3JS
ZW5kZXJpbmcoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKERvbWluYW50QmFzZWxpbmUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
VkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlE
KTsKICAgICBzd2l0Y2ggKGUpIHsKICAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OkF1dG86CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTQ1NjEsNyArNDU2MSw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBEb21pbmFu
dEJhc2VsaW5lKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShTaGFwZVJlbmRlcmluZyBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0
aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19W
QUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQp
OwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgU2hhcGVSZW5kZXJpbmc6OkF1dG86CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTQ2MDIsNyArNDYwMiw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBTaGFwZVJlbmRl
cmluZygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoVGV4dEFuY2hvciBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3Mp
CiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7
CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3
aXRjaCAoZSkgewogICAgIGNhc2UgVGV4dEFuY2hvcjo6U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlU3RhcnQ7CkBAIC00NjM4LDIxICs0NjM4LDIxIEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0QW5jaG9yKCkgY29uc3QK
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SKTsKKyAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6UkdCQ29sb3IpOwogICAgIG1fdmFsdWUu
Y29sb3IgPSBuZXcgQ29sb3IoY29sb3IpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTRm9udEZhbWlseSBmb250RmFtaWx5KQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWSk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5
cGUoQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHkpOwogICAgIG1fdmFsdWUuZm9udEZhbWlseSA9IG5l
dyBDU1NGb250RmFtaWx5KFdURk1vdmUoZm9udEZhbWlseSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmVjdG9yRWZmZWN0IGUp
CiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBWZWN0
b3JFZmZlY3Q6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsK
QEAgLTQ2ODMsNyArNDY4Myw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBWZWN0b3JFZmZlY3QoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE1hc2tUeXBlIGUpCiAgICAgOiBDU1NWYWx1
ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6
VmFsdWVJRCk7CiAgICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBNYXNrVHlwZTo6THVtaW5hbmNl
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx1bWluYW5jZTsKQEAgLTQ3MTQs
NyArNDcxNCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBNYXNrVHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTQm94VHlwZSBjc3NCb3gpCiAgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJ
RCk7CiAgICAgc3dpdGNoIChjc3NCb3gpIHsKICAgICBjYXNlIENTU0JveFR5cGU6Ok1hcmdpbkJv
eDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYXJnaW5Cb3g7CkBAIC00Nzcy
LDcgKzQ3NzIsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgQ1NTQm94VHlwZSgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSXRlbVBvc2l0aW9uIGl0ZW1Qb3NpdGlvbikKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1Vu
aXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRU
eXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGl0ZW1Qb3NpdGlvbikgewogICAgIGNhc2UgSXRl
bVBvc2l0aW9uOjpMZWdhY3k6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVn
YWN5OwpAQCAtNDg2Nyw3ICs0ODY3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEl0ZW1Qb3NpdGlvbigpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT3ZlcmZsb3dBbGlnbm1lbnQgb3Zl
cmZsb3dBbGlnbm1lbnQpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBz
ZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQ
cmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChvdmVy
Zmxvd0FsaWdubWVudCkgewogICAgIGNhc2UgT3ZlcmZsb3dBbGlnbm1lbnQ6OkRlZmF1bHQ6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGVmYXVsdDsKQEAgLTQ4OTgsNyArNDg5
OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPdmVy
Zmxvd0FsaWdubWVudCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29udGVudFBvc2l0aW9uIGNvbnRlbnRQb3NpdGlvbikKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGNvbnRlbnRQb3NpdGlvbikgewogICAg
IGNhc2UgQ29udGVudFBvc2l0aW9uOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTm9ybWFsOwpAQCAtNDk2OCw3ICs0OTY4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbnRlbnRQb3NpdGlvbigpIGNvbnN0CiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29udGVu
dERpc3RyaWJ1dGlvbiBjb250ZW50RGlzdHJpYnV0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0
aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19W
QUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQp
OwogICAgIHN3aXRjaCAoY29udGVudERpc3RyaWJ1dGlvbikgewogICAgIGNhc2UgQ29udGVudERp
c3RyaWJ1dGlvbjo6RGVmYXVsdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVE
ZWZhdWx0OwpAQCAtNTAyNiw3ICs1MDI2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRab29tKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9vbSB0ZXh0Wm9vbSkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBl
KENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENT
U1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHRleHRab29tKSB7CiAgICAgY2FzZSBU
ZXh0Wm9vbTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1h
bDsKQEAgLTUwNDMsNyArNTA0Myw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9vbSB0ZXh0Wm9vbSkKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUb3VjaEFjdGlvbiB0b3Vj
aEFjdGlvbikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAgIHNldFByaW1p
dGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNldFByaW1pdGl2
ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKHRvdWNoQWN0aW9u
KSB7CiAgICAgY2FzZSBUb3VjaEFjdGlvbjo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVBdXRvOwpAQCAtNTA5Miw3ICs1MDkyLDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNldDxUb3VjaEFjdGlvbj4oKSBjb25z
dAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRp
dmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZB
TFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7
CiAgICAgc3dpdGNoIChzdHJpY3RuZXNzKSB7CiAgICAgY2FzZSBTY3JvbGxTbmFwU3RyaWN0bmVz
czo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwpAQCAtNTEy
NSw3ICs1MTI1LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIFNjcm9sbFNuYXBTdHJpY3RuZXNzKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShTY3JvbGxTbmFwQXhpcyBheGlzKQogICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NT
VW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoYXhpcykgewogICAgIGNhc2UgU2Nyb2xs
U25hcEF4aXM6OlhBeGlzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVg7CkBA
IC01MTY4LDcgKzUxNjgsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgU2Nyb2xsU25hcEF4aXMoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlIHR5
cGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVV
bml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0
VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb25lOwpAQCAtNTIwNiw3ICs1MjA2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlKCkgY29u
c3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShTY3JvbGxTbmFwU3RvcCBzbmFwU3RvcCkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBz
d2l0Y2ggKHNuYXBTdG9wKSB7CiAgICAgY2FzZSBTY3JvbGxTbmFwU3RvcDo6Tm9ybWFsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTUyMzUsNyArNTIzNSw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBTY3JvbGxT
bmFwU3RvcCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoVHJhaWxpbmdXb3JkIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVF
X0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6VmFsdWVJRCk7CiAg
ICAgc3dpdGNoIChlKSB7CiAgICAgY2FzZSBUcmFpbGluZ1dvcmQ6OkF1dG86CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTUyNjksNyArNTI2OSw3IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUcmFpbGluZ1dvcmQoKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEFwcGxlUGF5QnV0dG9uU3R5bGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewotICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQp
OworICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBz
d2l0Y2ggKGUpIHsKICAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdoaXRlOwpAQCAtNTMwNiw3ICs1MzA2LDcgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEFwcGxlUGF5QnV0
dG9uU3R5bGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEFwcGxlUGF5QnV0dG9uVHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoZSkgewogICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFp
bjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQbGFpbjsKQEAgLTU0MDgsNyAr
NTQwOCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBB
cHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZvbnRWYXJpYW50UG9zaXRpb24gcG9zaXRpb24pCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1ZBTFVFX0lEKTsKKyAgICBzZXRQcmltaXRpdmVVbml0VHlwZShD
U1NVbml0VHlwZTo6VmFsdWVJRCk7CiAgICAgc3dpdGNoIChwb3NpdGlvbikgewogICAgIGNhc2Ug
Rm9udFZhcmlhbnRQb3NpdGlvbjo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU5vcm1hbDsKQEAgLTU0NDUsNyArNTQ0NSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBGb250VmFyaWFudFBvc2l0aW9uKCkgY29uc3QKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShGb250
VmFyaWFudENhcHMgY2FwcykKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewotICAg
IHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfVkFMVUVfSUQpOworICAgIHNl
dFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpWYWx1ZUlEKTsKICAgICBzd2l0Y2ggKGNh
cHMpIHsKICAgICBjYXNlIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKQEAgLTU1MDIsNyArNTUwMiw3IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBGb250VmFyaWFudENhcHMoKSBj
b25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEZvbnRWYXJpYW50QWx0ZXJuYXRlcyBhbHRlcm5hdGVzKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNT
U19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVl
SUQpOwogICAgIHN3aXRjaCAoYWx0ZXJuYXRlcykgewogICAgIGNhc2UgRm9udFZhcmlhbnRBbHRl
cm5hdGVzOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFs
OwpAQCAtNTUzNCw3ICs1NTM0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEZvbnRWYXJpYW50QWx0ZXJuYXRlcygpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRm9udE9wdGljYWxTaXpp
bmcgc2l6aW5nKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJp
bWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0
aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAoc2l6aW5nKSB7
CiAgICAgY2FzZSBGb250T3B0aWNhbFNpemluZzo6RW5hYmxlZDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwpAQCAtNTU2Niw3ICs1NTY2LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEZvbnRPcHRpY2FsU2l6aW5nKCkgY29u
c3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShGb250TG9hZGluZ0JlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19WQUxV
RV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OlZhbHVlSUQpOwog
ICAgIHN3aXRjaCAoYmVoYXZpb3IpIHsKICAgICBjYXNlIEZvbnRMb2FkaW5nQmVoYXZpb3I6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKQEAgLTU2MTMsNyAr
NTYxMyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBG
b250TG9hZGluZ0JlaGF2aW9yKCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShNYXRoU3R5bGUgbWF0aFN0eWxlKQogICAgIDogQ1NT
VmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7Ci0gICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5p
dFR5cGU6OkNTU19WQUxVRV9JRCk7CisgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5
cGU6OlZhbHVlSUQpOwogICAgIHN3aXRjaCAobWF0aFN0eWxlKSB7CiAgICAgY2FzZSBNYXRoU3R5
bGU6Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggYmZkMWFmZmFiNGM1NGI2ZTVhODcx
MzMxMjk2YTY4MjMxMDM0N2NhYS4uOGFiZjAzZGJiZjg0ZDJkYTA1MmRjODkyYTNmZDBlMGVlZjJm
NWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNTU5LDE5ICs1NTks
MTkgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVl
JiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWcKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNQ
ZXJjZW50YWdlKCkpCiAgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5k
b3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJv
eC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUiksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3Ro
KHNsaWNlcy0+dG9wKCktPmludFZhbHVlKENTU1VuaXRUeXBlOjpOdW1iZXIpLCBMZW5ndGhUeXBl
OjpGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQogICAg
ICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFsdWUo
KSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3guYm90dG9tKCkg
PSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOworICAgICAgICBib3guYm90dG9tKCkgPSBM
ZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpOdW1i
ZXIpLCBMZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNl
bnRhZ2UoKSkKICAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91
YmxlVmFsdWUoKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gu
bGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUiksIExlbmd0aFR5cGU6OkZpeGVkKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0
aChzbGljZXMtPmxlZnQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlciksIExlbmd0aFR5
cGU6OkZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc1BlcmNlbnRhZ2UoKSkKICAg
ICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZSgp
LCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5yaWdodCgpID0g
TGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIp
LCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNl
cy0+cmlnaHQoKS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlciksIExlbmd0aFR5cGU6OkZp
eGVkKTsKICAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyhib3gpOwogCiAgICAgLy8gU2V0IG91ciBm
aWxsIG1vZGUuCkBAIC01OTUsNyArNTk1LDcgQEAgTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1h
cE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSYgdmFsdWUpCiAgICAgaWYgKHNsaWNlcy0+dG9w
KCktPmlzTnVtYmVyKCkpCiAgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgp
LT5mbG9hdFZhbHVlKCksIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGlj
ZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNs
aWNlcy0+dG9wKCktPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSksIExl
bmd0aFR5cGU6OlBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50
b3AoKS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc0NhbGN1bGF0ZWRQZXJjZW50
YWdlV2l0aExlbmd0aCgpKQogICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3Ao
KS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEp
KTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRv
KQpAQCAtNjA0LDcgKzYwNCw3IEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGll
Y2VJbWFnZVF1YWQoQ1NTVmFsdWUmIHZhbHVlKQogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlz
TnVtYmVyKCkpCiAgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
ZmxvYXRWYWx1ZSgpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2Vz
LT5yaWdodCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
LCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xp
Y2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6UGVyY2VudGFnZSksIExlbmd0
aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNDYWxjdWxh
dGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShj
b252ZXJzaW9uRGF0YSkpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+dmFsdWVJRCgp
ICE9IENTU1ZhbHVlQXV0bykKQEAgLTYxMyw3ICs2MTMsNyBAQCBMZW5ndGhCb3ggQ1NTVG9TdHls
ZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlJiB2YWx1ZSkKICAgICBpZiAoc2xp
Y2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKICAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3Ro
KHNsaWNlcy0+Ym90dG9tKCktPmZsb2F0VmFsdWUoKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwog
ICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBi
b3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFsdWUoQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFKSwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZShDU1NVbml0
VHlwZTo6UGVyY2VudGFnZSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHNs
aWNlcy0+Ym90dG9tKCktPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAg
ICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5jc3NDYWxjVmFsdWUo
KS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkpOwogICAgIGVsc2UgaWYg
KHNsaWNlcy0+Ym90dG9tKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCkBAIC02MjIsNyAr
NjIyLDcgQEAgTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChD
U1NWYWx1ZSYgdmFsdWUpCiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQogICAg
ICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5mbG9hdFZhbHVlKCksIExl
bmd0aFR5cGU6OlJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPmxlZnQoKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRv
dWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSksIExlbmd0aFR5cGU6OlBlcmNl
bnQpOworICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5kb3VibGVW
YWx1ZShDU1NVbml0VHlwZTo6UGVyY2VudGFnZSksIExlbmd0aFR5cGU6OlBlcmNlbnQpOwogICAg
IGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0
aCgpKQogICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5jc3NDYWxj
VmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkpOwogICAgIGVs
c2UgaWYgKHNsaWNlcy0+bGVmdCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbml0cy5jcHAKaW5kZXggZDk2YzkxZGViMDFkZTk1ZGE2ZGRiMGU2ZjU1OWE1NDY0NTBi
NjliMS4uMDc4YjkxM2ZiM2E2NGU2MmQxODg3NWY2ZGUzZWEzYjRjNDZlOTg5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVW5pdHMuY3BwCkBAIC0yOCwzMiArMjgsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Q1NTVW5pdENhdGVnb3J5IHVuaXRDYXRlZ29yeShDU1NVbml0VHlwZSB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gQ1NTVW5pdENhdGVnb3J5OjpO
dW1iZXI7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UGVyY2VudGFnZToKICAgICAgICAgcmV0dXJuIENTU1VuaXRDYXRlZ29yeTo6
UGVyY2VudDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpROgogICAgICAgICByZXR1cm4gQ1NTVW5pdENhdGVnb3J5OjpMZW5ndGg7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19T
OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNlY29u
ZDoKICAgICAgICAgcmV0dXJuIENTU1VuaXRDYXRlZ29yeTo6VGltZTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfREVHOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJhZDoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46
CiAgICAgICAgIHJldHVybiBDU1NVbml0Q2F0ZWdvcnk6OkFuZ2xlOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19IWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6Okh6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktIejoKICAgICAgICAgcmV0
dXJuIENTU1VuaXRDYXRlZ29yeTo6RnJlcXVlbmN5OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19EUFBYOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUEk6Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0RQQ006CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRv
dHNQZXJDZW50aW1ldGVyOgogICAgICAgICByZXR1cm4gQ1NTVW5pdENhdGVnb3J5OjpSZXNvbHV0
aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBDU1NVbml0Q2F0ZWdvcnk6Ok90aGVy
OwpAQCAtNjQsMjMgKzY0LDIzIEBAIENTU1VuaXRUeXBlIGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0
ZWdvcnkoQ1NTVW5pdENhdGVnb3J5IGNhdGVnb3J5KQogewogICAgIHN3aXRjaCAoY2F0ZWdvcnkp
IHsKICAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICByZXR1cm4gQ1NT
VW5pdFR5cGU6OkNTU19OVU1CRVI7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6TnVtYmVy
OwogICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6Q1NTX1BYOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlB4OwogICAgIGNh
c2UgQ1NTVW5pdENhdGVnb3J5OjpQZXJjZW50OgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNTU19VTktOT1dOOyAvLyBDYW5ub3QgY29udmVydCBiZXR3ZWVuIG51bWJlcnMgYW5kIHBlcmNl
bnQuCisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6VW5rbm93bjsgLy8gQ2Fubm90IGNvbnZl
cnQgYmV0d2VlbiBudW1iZXJzIGFuZCBwZXJjZW50LgogICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5
OjpUaW1lOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19NUzsKKyAgICAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpNczsKICAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6QW5nbGU6Ci0g
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0RFRzsKKyAgICAgICAgcmV0dXJuIENTU1Vu
aXRUeXBlOjpEZWc7CiAgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6OkZyZXF1ZW5jeToKLSAgICAg
ICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfSFo7CisgICAgICAgIHJldHVybiBDU1NVbml0VHlw
ZTo6SHo7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkKICAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6UmVzb2x1dGlvbjoK
LSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfRFBQWDsKKyAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OlVua25vd247CiAgICAgfQogfQogCkBAIC0xMDcsNTkgKzEwNyw1OSBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDU1NVbml0Q2F0ZWdvcnkgY2F0ZWdvcnkpCiBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDU1NVbml0VHlwZSB1bml0VHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1VOS05PV046IHRzIDw8ICJ1bmtub3duIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUjogdHMgPDwgIm51bWJlciI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFOiB0cyA8PCAicGVyY2VudGFnZSI7IGJyZWFrOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19FTVM6IHRzIDw8ICJlbXMiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfRVhTOiB0cyA8PCAiZXhzIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BYOiB0cyA8PCAicHgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006
IHRzIDw8ICJjbSI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTTogdHMgPDwg
Im1tIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOiB0cyA8PCAiaW4iOyBi
cmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6IHRzIDw8ICJwdCI7IGJyZWFrOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzogdHMgPDwgInBjIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzogdHMgPDwgImRlZyI7IGJyZWFrOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19SQUQ6IHRzIDw8ICJyYWQiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfR1JBRDogdHMgPDwgImdyYWQiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfTVM6IHRzIDw8ICJtcyI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19T
OiB0cyA8PCAicyI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19IWjogdHMgPDwg
Imh6IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0tIWjogdHMgPDwgImtoeiI7
IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJT046IHRzIDw8ICJkaW1l
bnNpb24iOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HOiB0cyA8PCAi
c3RyaW5nIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VSSTogdHMgPDwgInVy
aSI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JREVOVDogdHMgPDwgImlkZW50
IjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5rbm93bjogdHMgPDwgInVua25vd24i
OyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6IHRzIDw8ICJudW1iZXIiOyBi
cmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOiB0cyA8PCAicGVyY2VudGFn
ZSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczogdHMgPDwgImVtcyI7IGJyZWFr
OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czogdHMgPDwgImV4cyI7IGJyZWFrOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlB4OiB0cyA8PCAicHgiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpDbTogdHMgPDwgImNtIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TW06IHRz
IDw8ICJtbSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkluOiB0cyA8PCAiaW4iOyBi
cmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQdDogdHMgPDwgInB0IjsgYnJlYWs7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UGM6IHRzIDw8ICJwYyI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkRlZzogdHMgPDwgImRlZyI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJh
ZDogdHMgPDwgInJhZCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6IHRzIDw8
ICJncmFkIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TXM6IHRzIDw8ICJtcyI7IGJy
ZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNlY29uZDogdHMgPDwgInMiOyBicmVhazsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpIejogdHMgPDwgImh6IjsgYnJlYWs7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6S0h6OiB0cyA8PCAia2h6IjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RGltZW5zaW9uOiB0cyA8PCAiZGltZW5zaW9uIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6U3RyaW5nOiB0cyA8PCAic3RyaW5nIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
VVJJOiB0cyA8PCAidXJpIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6IHRz
IDw8ICJpZGVudCI7IGJyZWFrOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkN1c3RvbUlkZW50OiB0
cyA8PCAiY3VzdG9tLWlkZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0FU
VFI6IHRzIDw8ICJhdHRyIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5U
RVI6IHRzIDw8ICJjb3VudGVyIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JF
Q1Q6IHRzIDw8ICJyZWN0IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNP
TE9SOiB0cyA8PCAicmdiY29sb3IiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Vlc6IHRzIDw8ICJ2dyI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDogdHMg
PDwgInZoIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46IHRzIDw8ICJ2
bWluIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6IHRzIDw8ICJ2bWF4
IjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQUFg6IHRzIDw8ICJkcHB4Ijsg
YnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RQSTogdHMgPDwgImRwaSI7IGJyZWFr
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUENNOiB0cyA8PCAiZHBjbSI7IGJyZWFrOwot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GUjogdHMgPDwgImZyIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1E6IHRzIDw8ICJxIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0xIUzogdHMgPDwgImxoIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1JMSFM6IHRzIDw8ICJybGgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UEFJUjogdHMgPDwgInBhaXIiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5J
Q09ERV9SQU5HRTogdHMgPDwgInVuaWNvZGVfcmFuZ2UiOyBicmVhazsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVFVSTjogdHMgPDwgInR1cm4iOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUkVNUzogdHMgPDwgInJlbXMiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfQ0hTOiB0cyA8PCAiY2hzIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0NPVU5URVJfTkFNRTogdHMgPDwgImNvdW50ZXJfbmFtZSI7IGJyZWFrOwotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19TSEFQRTogdHMgPDwgInNoYXBlIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1FVQUQ6IHRzIDw8ICJxdWFkIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0NBTEM6IHRzIDw8ICJjYWxjIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjogdHMgPDwgImNhbGNfcGVyY2VudGFn
ZV93aXRoX251bWJlciI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BF
UkNFTlRBR0VfV0lUSF9MRU5HVEg6IHRzIDw8ICJjYWxjX3BlcmNlbnRhZ2Vfd2l0aF9sZW5ndGgi
OyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1JTFk6IHRzIDw8ICJm
b250X2ZhbWlseSI7IGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9J
RDogdHMgPDwgInByb3BlcnR5X2lkIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1ZBTFVFX0lEOiB0cyA8PCAidmFsdWVfaWQiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUVVJUktZX0VNUzogdHMgPDwgInF1aXJreV9lbXMiOyBicmVhazsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpBdHRyOiB0cyA8PCAiYXR0ciI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNvdW50ZXI6IHRzIDw8ICJjb3VudGVyIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6UmVjdDogdHMgPDwgInJlY3QiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSR0JD
b2xvcjogdHMgPDwgInJnYmNvbG9yIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmll
d3BvcnRQZXJjZW50YWdlV2lkdGg6IHRzIDw8ICJ2dyI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDogdHMgPDwgInZoIjsgYnJlYWs7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOiB0cyA8PCAidm1pbiI7IGJy
ZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDogdHMgPDwg
InZtYXgiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWw6IHRzIDw8
ICJkcHB4IjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlckluY2g6IHRzIDw8
ICJkcGkiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjog
dHMgPDwgImRwY20iOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpGbGV4OiB0cyA8PCAi
ZnIiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROiB0cyA8PCAicSI7IGJyZWFrOwor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczogdHMgPDwgImxoIjsgYnJlYWs7CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UmxoczogdHMgPDwgInJsaCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlBhaXI6IHRzIDw8ICJwYWlyIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5p
Y29kZVJhbmdlOiB0cyA8PCAidW5pY29kZV9yYW5nZSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlR1cm46IHRzIDw8ICJ0dXJuIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UmVtczogdHMgPDwgInJlbXMiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDaHM6IHRz
IDw8ICJjaHMiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDb3VudGVyTmFtZTogdHMg
PDwgImNvdW50ZXJfbmFtZSI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNoYXBlOiB0
cyA8PCAic2hhcGUiOyBicmVhazsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpRdWFkOiB0cyA8PCAi
cXVhZCI7IGJyZWFrOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6IHRzIDw8ICJj
YWxjIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTnVtYmVyOiB0cyA8PCAiY2FsY19wZXJjZW50YWdlX3dpdGhfbnVtYmVyIjsgYnJlYWs7Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoOiB0cyA8
PCAiY2FsY19wZXJjZW50YWdlX3dpdGhfbGVuZ3RoIjsgYnJlYWs7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Rm9udEZhbWlseTogdHMgPDwgImZvbnRfZmFtaWx5IjsgYnJlYWs7CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UHJvcGVydHlJRDogdHMgPDwgInByb3BlcnR5X2lkIjsgYnJlYWs7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDogdHMgPDwgInZhbHVlX2lkIjsgYnJlYWs7CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOiB0cyA8PCAicXVpcmt5X2VtcyI7IGJyZWFrOwog
ICAgIH0KICAgICByZXR1cm4gdHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCmluZGV4IDUzYmJkMmYw
MGZiZDllMTVmYjhiODJhYzgzZDMxZDExYjdjZjJjNGMuLmVkM2Y5YmU5M2NiN2NlYzk1ZjcyZDNh
Mjc1ZDcyYzAwNzhjYTM3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCkBAIC0yOCw3NCArMjgsNzMg
QEAgY2xhc3MgVGV4dFN0cmVhbTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IE5v
IG5lZWQgdG8gaGFyZC1jb2RlIHRoZSBudW1iZXJzIGhlcmUgYW55IG1vcmUsIHNvIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbS4KLS8vIEZJWE1FOiBObyBuZWVkIHRvIHVzZSBhbGwgY2FwaXRhbHMgYW5k
IGEgQ1NTIHByZWZpeCBvbiBhbGwgdGhlc2UgbmFtZXMuIFNob3VsZCBmaXggdGhhdC4KIGVudW0g
Y2xhc3MgQ1NTVW5pdFR5cGUgOiB1aW50OF90IHsKLSAgICBDU1NfVU5LTk9XTiA9IDAsCi0gICAg
Q1NTX05VTUJFUiA9IDEsCi0gICAgQ1NTX1BFUkNFTlRBR0UgPSAyLAotICAgIENTU19FTVMgPSAz
LAotICAgIENTU19FWFMgPSA0LAotICAgIENTU19QWCA9IDUsCi0gICAgQ1NTX0NNID0gNiwKLSAg
ICBDU1NfTU0gPSA3LAotICAgIENTU19JTiA9IDgsCi0gICAgQ1NTX1BUID0gOSwKLSAgICBDU1Nf
UEMgPSAxMCwKLSAgICBDU1NfREVHID0gMTEsCi0gICAgQ1NTX1JBRCA9IDEyLAotICAgIENTU19H
UkFEID0gMTMsCi0gICAgQ1NTX01TID0gMTQsCi0gICAgQ1NTX1MgPSAxNSwKLSAgICBDU1NfSFog
PSAxNiwKLSAgICBDU1NfS0haID0gMTcsCi0gICAgQ1NTX0RJTUVOU0lPTiA9IDE4LAotICAgIENT
U19TVFJJTkcgPSAxOSwKLSAgICBDU1NfVVJJID0gMjAsCi0gICAgQ1NTX0lERU5UID0gMjEsCi0g
ICAgQ1NTX0FUVFIgPSAyMiwKLSAgICBDU1NfQ09VTlRFUiA9IDIzLAotICAgIENTU19SRUNUID0g
MjQsCi0gICAgQ1NTX1JHQkNPTE9SID0gMjUsCi0gICAgQ1NTX1ZXID0gMjYsCi0gICAgQ1NTX1ZI
ID0gMjcsCi0gICAgQ1NTX1ZNSU4gPSAyOCwKLSAgICBDU1NfVk1BWCA9IDI5LAotICAgIENTU19E
UFBYID0gMzAsCi0gICAgQ1NTX0RQSSA9IDMxLAotICAgIENTU19EUENNID0gMzIsCi0gICAgQ1NT
X0ZSID0gMzMsCi0gICAgQ1NTX1EgPSAzNCwKLSAgICBDU1NfTEhTID0gMzUsCi0gICAgQ1NTX1JM
SFMgPSAzNiwKKyAgICBVbmtub3duID0gMCwKKyAgICBOdW1iZXIgPSAxLAorICAgIFBlcmNlbnRh
Z2UgPSAyLAorICAgIEVtcyA9IDMsCisgICAgRXhzID0gNCwKKyAgICBQeCA9IDUsCisgICAgQ20g
PSA2LAorICAgIE1tID0gNywKKyAgICBJbiA9IDgsCisgICAgUHQgPSA5LAorICAgIFBjID0gMTAs
CisgICAgRGVnID0gMTEsCisgICAgUmFkID0gMTIsCisgICAgR3JhZCA9IDEzLAorICAgIE1zID0g
MTQsCisgICAgU2Vjb25kID0gMTUsCisgICAgSHogPSAxNiwKKyAgICBLSHogPSAxNywKKyAgICBE
aW1lbnNpb24gPSAxOCwKKyAgICBTdHJpbmcgPSAxOSwKKyAgICBVUkkgPSAyMCwKKyAgICBJZGVu
dCA9IDIxLAorICAgIEF0dHIgPSAyMiwKKyAgICBDb3VudGVyID0gMjMsCisgICAgUmVjdCA9IDI0
LAorICAgIFJHQkNvbG9yID0gMjUsCisgICAgVmlld3BvcnRQZXJjZW50YWdlV2lkdGggPSAyNiwK
KyAgICBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQgPSAyNywKKyAgICBWaWV3cG9ydFBlcmNlbnRh
Z2VNaW4gPSAyOCwKKyAgICBWaWV3cG9ydFBlcmNlbnRhZ2VNYXggPSAyOSwKKyAgICBEb3RzUGVy
UGl4ZWwgPSAzMCwKKyAgICBEb3RzUGVySW5jaCA9IDMxLAorICAgIERvdHNQZXJDZW50aW1ldGVy
ID0gMzIsCisgICAgRmxleCA9IDMzLAorICAgIFEgPSAzNCwKKyAgICBMaHMgPSAzNSwKKyAgICBS
bGhzID0gMzYsCiAKICAgICBDdXN0b21JZGVudCwKIAotICAgIENTU19QQUlSID0gMTAwLAotICAg
IENTU19VTklDT0RFX1JBTkdFID0gMTAyLAotICAgIENTU19UVVJOID0gMTA3LAotICAgIENTU19S
RU1TID0gMTA4LAotICAgIENTU19DSFMgPSAxMDksCisgICAgUGFpciA9IDEwMCwKKyAgICBVbmlj
b2RlUmFuZ2UgPSAxMDIsCisgICAgVHVybiA9IDEwNywKKyAgICBSZW1zID0gMTA4LAorICAgIENo
cyA9IDEwOSwKIAotICAgIENTU19DT1VOVEVSX05BTUUgPSAxMTAsCisgICAgQ291bnRlck5hbWUg
PSAxMTAsCiAKLSAgICBDU1NfU0hBUEUgPSAxMTEsCisgICAgU2hhcGUgPSAxMTEsCiAKLSAgICBD
U1NfUVVBRCA9IDExMiwKKyAgICBRdWFkID0gMTEyLAogCi0gICAgQ1NTX0NBTEMgPSAxMTMsCi0g
ICAgQ1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUiA9IDExNCwKLSAgICBDU1NfQ0FMQ19Q
RVJDRU5UQUdFX1dJVEhfTEVOR1RIID0gMTE1LAorICAgIENhbGN1bGF0ZWQgPSAxMTMsCisgICAg
Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyID0gMTE0LAorICAgIENhbGN1bGF0ZWRQZXJj
ZW50YWdlV2l0aExlbmd0aCA9IDExNSwKIAotICAgIENTU19GT05UX0ZBTUlMWSA9IDExNiwKKyAg
ICBGb250RmFtaWx5ID0gMTE2LAogCi0gICAgQ1NTX1BST1BFUlRZX0lEID0gMTE3LAotICAgIENT
U19WQUxVRV9JRCA9IDExOCwKKyAgICBQcm9wZXJ0eUlEID0gMTE3LAorICAgIFZhbHVlSUQgPSAx
MTgsCiAgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGhhbmRsZSBxdWlya3kgbWFy
Z2lucyBpbiByZWZsb3cgcm9vdHMgKGJvZHksIHRkLCBhbmQgdGgpIGxpa2UgV2luSUUuCiAgICAg
Ly8gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hlZXQgY2FuIHVzZSB0aGUgdmFsdWUg
X19xZW0gKGZvciBxdWlya3kgZW0pIGluc3RlYWQgb2YgZW0uCiAgICAgLy8gV2hlbiB0aGUgcXVp
cmt5IHZhbHVlIGlzIHVzZWQsIGlmIHlvdSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlIG1hcmdpbiB3
aWxsIGNvbGxhcHNlIGF3YXkKICAgICAvLyBpbnNpZGUgYSB0YWJsZSBjZWxsLiBUaGlzIHF1aXJr
IGlzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBzcGVjIGJ1dCBvdXIgaW1wbCBpcyBkaWZmZXJlbnQu
Ci0gICAgQ1NTX1FVSVJLWV9FTVMgPSAxMjAKKyAgICBRdWlya3lFbXMgPSAxMjAKIAogICAgIC8v
IE5vdGUgdGhhdCBDU1NWYWx1ZSBhbGxvY2F0ZXMgNyBiaXRzIGZvciBtX3ByaW1pdGl2ZVVuaXRU
eXBlLCBzbyB0aGVyZSBjYW4gYmUgbm8gdmFsdWUgaGVyZSA+IDEyNy4KIH07CkBAIC0xMTksNCAr
MTE4LDMgQEAgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENT
U1VuaXRDYXRlZ29yeSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgQ1NTVW5pdFR5cGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAKaW5kZXggZDYxM2Y2Yjg2YWNjNjgwYWQzN2ZmMGY4NTI2NTBh
NzMzN2JhOTdhNC4uY2UyOTkxMzM5NWVjYjFiZmY1YzNlZjQ4YTZmY2FiY2Q2ODI4MzFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgU3RhdGljQ1NT
VmFsdWVQb29sOjpTdGF0aWNDU1NWYWx1ZVBvb2woKQogICAgICAgICBtX2lkZW50aWZpZXJWYWx1
ZXNbaV0uY29uc3RydWN0KENTU1ZhbHVlOjpTdGF0aWNDU1NWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVJRD4oaSkpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IChtYXhpbXVtQ2Fj
aGVhYmxlSW50ZWdlclZhbHVlICsgMSk7ICsraSkgewotICAgICAgICBtX3BpeGVsVmFsdWVzW2ld
LmNvbnN0cnVjdChDU1NWYWx1ZTo6U3RhdGljQ1NTVmFsdWUsIGksIENTU1VuaXRUeXBlOjpDU1Nf
UFgpOwotICAgICAgICBtX3BlcmNlbnRWYWx1ZXNbaV0uY29uc3RydWN0KENTU1ZhbHVlOjpTdGF0
aWNDU1NWYWx1ZSwgaSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKLSAgICAgICAgbV9u
dW1iZXJWYWx1ZXNbaV0uY29uc3RydWN0KENTU1ZhbHVlOjpTdGF0aWNDU1NWYWx1ZSwgaSwgQ1NT
VW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICBtX3BpeGVsVmFsdWVzW2ldLmNvbnN0cnVj
dChDU1NWYWx1ZTo6U3RhdGljQ1NTVmFsdWUsIGksIENTU1VuaXRUeXBlOjpQeCk7CisgICAgICAg
IG1fcGVyY2VudFZhbHVlc1tpXS5jb25zdHJ1Y3QoQ1NTVmFsdWU6OlN0YXRpY0NTU1ZhbHVlLCBp
LCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgIG1fbnVtYmVyVmFsdWVzW2ldLmNv
bnN0cnVjdChDU1NWYWx1ZTo6U3RhdGljQ1NTVmFsdWUsIGksIENTU1VuaXRUeXBlOjpOdW1iZXIp
OwogICAgIH0KIH0KIApAQCAtMTIyLDExICsxMjIsMTEgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTVW5pdFR5cGUgdHlw
ZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUp
OwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB4OgogICAgICAgICByZXR1cm4gc3RhdGljQ1NTVmFsdWVQ
b29sLT5tX3BpeGVsVmFsdWVzW2ludFZhbHVlXS5nZXQoKTsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgogICAg
ICAgICByZXR1cm4gc3RhdGljQ1NTVmFsdWVQb29sLT5tX3BlcmNlbnRWYWx1ZXNbaW50VmFsdWVd
LmdldCgpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gc3RhdGljQ1NTVmFsdWVQb29sLT5tX251
bWJlclZhbHVlc1tpbnRWYWx1ZV0uZ2V0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggZTNh
NDk3NzI5M2Y1MWUyYWY4ZDViNmZhMjE2NTMyNjJlNzA2NjA5ZS4uZWYzNGM5NzkyYzg4ODBkYmNj
NjM1MmFkY2QzNGM0YmNiNmI1ZmI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Rl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0zOCw1OSArMzgsNTkgQEAgdW5z
aWduZWQgc2hvcnQgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OnByaW1pdGl2ZVR5cGUo
KSBjb25zdAogICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIHNob3VsZCByZXR1cm4gQ1NTX1VO
S05PV04gaW5zdGVhZCBvZiBoYXJkLWNvZGVkIG51bWJlcnMgbm90IG1lbnRpb25lZCBpbiB0aGUg
SURMIGZpbGUuCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkgewotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19BVFRSOiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTX0FUVFI7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTEM6ICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxMTM7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDogIHJldHVybiAxMTU7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjogIHJldHVybiAxMTQ7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAx
MDk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NfQ007Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6ICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfQ09VTlRFUjsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfQ09VTlRFUl9OQU1FOiAgICAgICAgICAgICAgICAgcmV0dXJuIDExMDsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19ERUc7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVOU0lPTjogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NfRElNRU5TSU9OOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19EUENNOiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzI7Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0RQSTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzMTsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBQWDogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDMwOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6ICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTX0VNUzsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19FWFM7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0ZPTlRfRkFNSUxZOiAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfU1RSSU5H
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GUjogICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMzM7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NfR1JBRDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
SFo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19IWjsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSURFTlQ6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19J
REVOVDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpBdHRyOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU19BVFRSOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTEzOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aDogICByZXR1cm4gMTE1OworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aE51bWJlcjogICByZXR1cm4gMTE0
OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNoczogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTA5OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTX0NNOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNvdW50
ZXI6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0NPVU5URVI7CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q291bnRlck5hbWU6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAx
MTA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NfREVHOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRpbWVuc2lvbjogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0RJTUVOU0lPTjsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcjogICAgICAgICAgICAgICAgcmV0dXJuIDMyOworICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOiAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMzE7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAzMDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFbXM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19FTVM7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
RXhzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfRVhTOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkZvbnRGYW1pbHk6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTX1NUUklORzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpGbGV4OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDMzOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0dSQUQ7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6SHo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfSFo7Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NfSURFTlQ7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3VzdG9tSWRlbnQ6ICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NfSURFTlQ7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0lOOiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfSU47Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0tIWjogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NfS0haOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6ICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMzU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfTU07Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX01TOiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfTVM7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NfTlVNQkVSOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMTAwOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzogICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1BDOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFOiAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1BFUkNFTlRB
R0U7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZX0lEOiAgICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NfSURFTlQ7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfUFQ7Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1BYOiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfUFg7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAzNDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDExMjsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzog
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDEyMDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UkFEOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19SQUQ7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1JFQ1Q6ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1Nf
UkVDVDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDEwODsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6ICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19SR0JDT0xPUjsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUkxIUzogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM2OwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19TOiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTX1M7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NIQVBFOiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxMTE7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzogICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfU1RSSU5HOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19UVVJOOiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA3OwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JBTkdFOiAgICAgICAgICAgICAgICByZXR1cm4g
MTAyOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOOiAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTX1VOS05PV047Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VSSTog
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfVVJJOwotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WQUxVRV9JRDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX0lERU5U
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDogICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTX1ZIOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTX1ZNQVg7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZNSU46ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfVk1JTjsKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19WVzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIENTU19JTjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpLSHo6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19LSFo7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6TGhzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzNTsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpNbTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19NTTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIENTU19NUzsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19OVU1CRVI7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6UGFpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMDA7Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NfUEM7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGVyY2VudGFnZTogICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NfUEVSQ0VOVEFHRTsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQcm9wZXJ0eUlEOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19JREVOVDsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpQdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENTU19QVDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQeDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU19QWDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpROiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM0OworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlF1YWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTEyOworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlF1aXJreUVtczogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MTIwOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJhZDogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTX1JBRDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU19SRUNUOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OlJlbXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA4OworICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTX1JHQkNPTE9SOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJsaHM6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMzY7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6U2Vjb25kOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfUzsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpTaGFwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDExMTsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpTdHJpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU19TVFJJTkc7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VHVybjogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxMDc7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5pY29kZVJh
bmdlOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMDI7CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6VW5rbm93bjogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NfVU5LTk9XTjsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpVUkk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENTU19VUkk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VmFsdWVJRDogICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NfSURFTlQ7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OiAgICAgICAgIHJldHVybiBDU1NfVkg7CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWF4OiAgICAgICAgICAgIHJldHVybiBD
U1NfVk1BWDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW46ICAg
ICAgICAgICAgcmV0dXJuIENTU19WTUlOOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0
UGVyY2VudGFnZVdpZHRoOiAgICAgICAgICByZXR1cm4gQ1NTX1ZXOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAyLDQzICsxMDIsNDMgQEAgRXhjZXB0aW9uT3I8Zmxv
YXQ+IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpnZXRGbG9hdFZhbHVlKHVuc2lnbmVk
IHNob3J0IHUKICAgICAvLyBGSVhNRTogU29tZSBvZiB0aGVzZSB2YWx1ZXMgZG8gbm90IG5lZWQg
dG8gYmUgZXhwb3NlZCBhcyBhIGRlc3RpbmF0aW9uIHR5cGUuIFJlbW92ZSBjYXNlcyBiZWxvdyBh
bmQgZ2l2ZSBJbnZhbGlkQWNjZXNzRXJyb3IgaW5zdGVhZC4KIAogICAgIHN3aXRjaCAodW5pdFR5
cGUpIHsKLSAgICBjYXNlIENTU19DTTogICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0Rmxv
YXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0NNKTsKLSAgICBjYXNlIENTU19ERUc6ICAgICAgICAg
ICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RFRyk7Ci0g
ICAgY2FzZSBDU1NfRElNRU5TSU9OOiAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19ESU1FTlNJT04pOwotICAgIGNhc2UgQ1NTX0VNUzogICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfRU1TKTsKLSAg
ICBjYXNlIENTU19FWFM6ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShD
U1NVbml0VHlwZTo6Q1NTX0VYUyk7Ci0gICAgY2FzZSBDU1NfR1JBRDogICAgICAgICAgcmV0dXJu
IG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19HUkFEKTsKLSAgICBjYXNl
IENTU19IWjogICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0
VHlwZTo6Q1NTX0haKTsKLSAgICBjYXNlIENTU19JTjogICAgICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0lOKTsKLSAgICBjYXNlIENTU19LSFo6
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NT
X0tIWik7Ci0gICAgY2FzZSBDU1NfTU06ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZs
b2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19NTSk7Ci0gICAgY2FzZSBDU1NfTVM6ICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19NUyk7Ci0g
ICAgY2FzZSBDU1NfTlVNQkVSOiAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgIGNhc2UgQ1NTX1BDOiAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEMpOwotICAgIGNh
c2UgQ1NTX1BFUkNFTlRBR0U6ICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgY2FzZSBDU1NfUFQ6ICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19QVCk7Ci0gICAgY2Fz
ZSBDU1NfUFg6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5p
dFR5cGU6OkNTU19QWCk7Ci0gICAgY2FzZSBDU1NfUkFEOiAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19SQUQpOwotICAgIGNhc2UgQ1NTX1M6
ICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfUyk7Ci0gICAgY2FzZSBDU1NfVkg6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZs
b2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19WSCk7Ci0gICAgY2FzZSBDU1NfVk1BWDogICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19WTUFYKTsK
LSAgICBjYXNlIENTU19WTUlOOiAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX1ZNSU4pOwotICAgIGNhc2UgQ1NTX1ZXOiAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfVlcpOworICAgIGNh
c2UgQ1NTX0NNOiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1Vu
aXRUeXBlOjpDbSk7CisgICAgY2FzZSBDU1NfREVHOiAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUt
PmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkRlZyk7CisgICAgY2FzZSBDU1NfRElNRU5TSU9O
OiAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkRpbWVuc2lv
bik7CisgICAgY2FzZSBDU1NfRU1TOiAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0
VmFsdWUoQ1NTVW5pdFR5cGU6OkVtcyk7CisgICAgY2FzZSBDU1NfRVhTOiAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkV4cyk7CisgICAgY2FzZSBD
U1NfR1JBRDogICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5
cGU6OkdyYWQpOworICAgIGNhc2UgQ1NTX0haOiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5n
ZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpIeik7CisgICAgY2FzZSBDU1NfSU46ICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkluKTsKKyAgICBj
YXNlIENTU19LSFo6ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NV
bml0VHlwZTo6S0h6KTsKKyAgICBjYXNlIENTU19NTTogICAgICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6TW0pOworICAgIGNhc2UgQ1NTX01TOiAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpNcyk7Cisg
ICAgY2FzZSBDU1NfTlVNQkVSOiAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6Ok51bWJlcik7CisgICAgY2FzZSBDU1NfUEM6ICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlBjKTsKKyAgICBjYXNlIENTU19Q
RVJDRU5UQUdFOiAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6
UGVyY2VudGFnZSk7CisgICAgY2FzZSBDU1NfUFQ6ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUt
PmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlB0KTsKKyAgICBjYXNlIENTU19QWDogICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UHgpOworICAg
IGNhc2UgQ1NTX1JBRDogICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpSYWQpOworICAgIGNhc2UgQ1NTX1M6ICAgICAgICAgICAgIHJldHVybiBtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpTZWNvbmQpOworICAgIGNhc2UgQ1NTX1ZI
OiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpW
aWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQpOworICAgIGNhc2UgQ1NTX1ZNQVg6ICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRh
Z2VNYXgpOworICAgIGNhc2UgQ1NTX1ZNSU46ICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRG
bG9hdFZhbHVlKENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNaW4pOworICAgIGNhc2Ug
Q1NTX1ZXOiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRU
eXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCk7CiAKLSAgICBjYXNlIDMwOiAgICAgICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQUFgp
OwotICAgIGNhc2UgMzE6ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfRFBJKTsKLSAgICBjYXNlIDMyOiAgICAgICAgICAgICAgICBy
ZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQQ00pOwotICAg
IGNhc2UgMzM6ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpDU1NfRlIpOwotICAgIGNhc2UgMzQ6ICAgICAgICAgICAgICAgIHJldHVybiBt
X3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUSk7Ci0gICAgY2FzZSAzNTog
ICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19MSFMpOwotICAgIGNhc2UgMzY6ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5n
ZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUkxIUyk7Ci0gICAgY2FzZSAxMDc6ICAgICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19U
VVJOKTsKLSAgICBjYXNlIDEwODogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0Rmxv
YXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1JFTVMpOwotICAgIGNhc2UgMTA5OiAgICAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfQ0hTKTsK
LSAgICBjYXNlIDExMzogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX0NBTEMpOwotICAgIGNhc2UgMTE0OiAgICAgICAgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTlVNQkVSKTsKLSAgICBjYXNlIDExNTogICAgICAgICAgICAgICByZXR1cm4gbV92
YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRI
X0xFTkdUSCk7Ci0gICAgY2FzZSAxMjA6ICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdl
dEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TKTsKKyAgICBjYXNlIDMwOiAg
ICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6
RG90c1BlclBpeGVsKTsKKyAgICBjYXNlIDMxOiAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RG90c1BlckluY2gpOworICAgIGNhc2UgMzI6
ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpEb3RzUGVyQ2VudGltZXRlcik7CisgICAgY2FzZSAzMzogICAgICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkZsZXgpOworICAgIGNhc2UgMzQ6
ICAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBl
OjpRKTsKKyAgICBjYXNlIDM1OiAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0Rmxv
YXRWYWx1ZShDU1NVbml0VHlwZTo6TGhzKTsKKyAgICBjYXNlIDM2OiAgICAgICAgICAgICAgICBy
ZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Umxocyk7CisgICAgY2Fz
ZSAxMDc6ICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5p
dFR5cGU6OlR1cm4pOworICAgIGNhc2UgMTA4OiAgICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVl
LT5nZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpSZW1zKTsKKyAgICBjYXNlIDEwOTogICAgICAg
ICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q2hzKTsK
KyAgICBjYXNlIDExMzogICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q2FsY3VsYXRlZCk7CisgICAgY2FzZSAxMTQ6ICAgICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJj
ZW50YWdlV2l0aE51bWJlcik7CisgICAgY2FzZSAxMTU6ICAgICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWUtPmdldEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aCk7CisgICAgY2FzZSAxMjA6ICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdl
dEZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlF1aXJreUVtcyk7CiAKICAgICBkZWZhdWx0OiAgICAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaAppbmRleCBh
N2U1YjhhZDBlOWJiMzk1OWI3MzJmMTA3OGNlOWMxMjUwNGU3NTU2Li42ZDJiMDgyMzVjMzY1MWMy
Zjk5YTRiMmFjODU3Y2YyYmQyNWU1ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVj
YXRlZENTU09NUkdCQ29sb3IuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+IHN0YXRpYyBSZWY8RGVwcmVjYXRlZENT
U09NUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVdyYXBwZXIoQ1NTU3R5bGVEZWNsYXJhdGlvbiYgb3du
ZXIsIE51bWJlclR5cGUgbnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiktPmNyZWF0ZURl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpLT5jcmVh
dGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKICAgICB9CiAKICAgICBE
ZXByZWNhdGVkQ1NTT01SR0JDb2xvcihDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lciwgY29uc3Qg
Q29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
dmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CmluZGV4IGE0N2IyZmU1NDlhODk0MTRhMjA3ODY0YWFiZTg5N2QwN2E1OTcyN2MuLmFlNmI3NjVl
MTJjNGM1MDFjNDNhNjBjNDlhYjgxOGJlMTQ0NjQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAo
IWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmRvdWJsZVZhbHVl
KENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiB9CiAK
IHN0YXRpYyBib29sIHplcm9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIE1lZGlhRmVhdHVyZVBy
ZWZpeCBvcCkKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgYm9vbCBldmFsdWF0ZVJlc29sdXRp
b24oQ1NTVmFsdWUqIHZhbHVlLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZXNvbHV0aW9uID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgZmxvYXQgcmVzb2x1dGlvblZhbHVlID0gcmVz
b2x1dGlvbi5pc051bWJlcigpID8gcmVzb2x1dGlvbi5mbG9hdFZhbHVlKCkgOiByZXNvbHV0aW9u
LmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19EUFBYKTsKKyAgICBmbG9hdCByZXNvbHV0aW9u
VmFsdWUgPSByZXNvbHV0aW9uLmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLmZsb2F0VmFsdWUoKSA6
IHJlc29sdXRpb24uZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsKTsKICAgICBi
b29sIHJlc3VsdCA9IGNvbXBhcmVWYWx1ZShkZXZpY2VTY2FsZUZhY3RvciwgcmVzb2x1dGlvblZh
bHVlLCBvcCk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIg
IGV2YWx1YXRlUmVzb2x1dGlvbjogIiA8PCBvcCA8PCAiICIgPDwgcmVzb2x1dGlvblZhbHVlIDw8
ICIgZGV2aWNlIHNjYWxlIGZhY3RvciAiIDw8IGRldmljZVNjYWxlRmFjdG9yIDw8ICI6ICIgPDwg
cmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwcmVzc2lvbi5jcHAKaW5kZXggY2E4MDg4MzZmMGMxODhlNjBhMjA4YTFjYmMzYjEwNzk0
MzE4ZTVhNC4uZTgyNmM2NmZhNGFhYzkyNWU3ZDNhODY1ZDllNWFhYTg2ZjI1MDYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkVmFsdWVGb3JJZGVudE1lZGlhRmVhdHVyZShj
b25zdCBBdG9tU3RyaW5nJiBmZWF0dXJlLCBjCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJl
V2l0aFZhbGlkSWRlbnQoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQogewotICAgIGlmICh2YWx1ZS5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNT
U19JREVOVCB8fCAhaXNWYWxpZFZhbHVlRm9ySWRlbnRNZWRpYUZlYXR1cmUobWVkaWFGZWF0dXJl
LCB2YWx1ZSkpCisgICAgaWYgKHZhbHVlLnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NVbml0VHlwZTo6
SWRlbnQgfHwgIWlzVmFsaWRWYWx1ZUZvcklkZW50TWVkaWFGZWF0dXJlKG1lZGlhRmVhdHVyZSwg
dmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjpvcmllbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBiMTI3Njc2
ZmFmZjRmYWQyYzY4MTk5MjI3NGJmODU1MTQ2NTBiYWE0Li5mNjdlMzQ1MGJhZDM2MjM0NmI3MzY3
YTA0NDZjMWU4ODk4YmY4Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2
ZVZhbHVlKEdseXBoT3JpZW50CiB7CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewogICAgIGNh
c2UgR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczA6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAuMGYsIENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC4wZiwgQ1NTVW5pdFR5cGU6OkRlZyk7CiAg
ICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVzOTA6Ci0gICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDkwLjBmLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDkwLjBmLCBDU1NVbml0VHlwZTo6
RGVnKTsKICAgICBjYXNlIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMxODA6Ci0gICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDE4MC4wZiwgQ1NTVW5pdFR5cGU6OkNTU19E
RUcpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxODAuMGYsIENT
U1VuaXRUeXBlOjpEZWcpOwogICAgIGNhc2UgR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczI3MDoK
LSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMjcwLjBmLCBDU1NVbml0
VHlwZTo6Q1NTX0RFRyk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KDI3MC4wZiwgQ1NTVW5pdFR5cGU6OkRlZyk7CiAgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpB
dXRvOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBAIFJl
ZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJy
ZW50Q29sb3IoU1ZHUGFpbnRUeXBlCiB7CiAgICAgaWYgKHBhaW50VHlwZSA+PSBTVkdQYWludFR5
cGU6OlVSSU5vbmUpIHsKICAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodXJsLCBDU1NVbml0VHlwZTo6Q1NTX1VSSSkpOworICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NTVW5pdFR5cGU6OlVSSSkp
OwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSkKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSkpOwogICAgICAgICBlbHNlIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRU
eXBlOjpVUklDdXJyZW50Q29sb3IpCkBAIC05NywxNSArOTcsMTUgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHkKICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CiAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNsaXBSdWxlKCkpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlGbG9vZE9wYWNpdHk6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
Uik7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmZs
b29kT3BhY2l0eSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
U3RvcE9wYWNpdHk6Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2
Z1N0eWxlLnN0b3BPcGFjaXR5KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuc3RvcE9wYWNpdHkoKSwg
Q1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xh
dGlvbjoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUu
Y29sb3JJbnRlcnBvbGF0aW9uKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9s
YXRpb25GaWx0ZXJzOgogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dmdTdHlsZS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlGaWxsT3BhY2l0eToKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3ZnU3R5bGUuZmlsbE9wYWNpdHkoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5maWxsT3BhY2l0eSgp
LCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBjYXNlIENTU1Byb3BlcnR5RmlsbFJ1bGU6CiAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmZpbGxSdWxl
KCkpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoKQEAgLTExMyw3ICsxMTMs
NyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJl
bmRlcmluZzoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5
bGUuc2hhcGVSZW5kZXJpbmcoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6
Ci0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnN0cm9r
ZU9wYWNpdHkoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5zdHJva2VPcGFjaXR5KCksIENTU1VuaXRU
eXBlOjpOdW1iZXIpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZToKICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuYWxpZ25tZW50
QmFzZWxpbmUoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CkBAIC0x
MjIsNyArMTIyLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpz
dmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHkKICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUudGV4dEFuY2hvcigpKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5TWFzazoKICAgICAgICAgaWYgKCFzdmdTdHlsZS5tYXNrZXJSZXNvdXJjZSgp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KG1ha2VTdHJpbmcoJyMnLCBzdmdTdHlsZS5tYXNrZXJSZXNvdXJjZSgpKSwgQ1NTVW5pdFR5cGU6
OkNTU19VUkkpOworICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bWFrZVN0cmluZygnIycsIHN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCkpLCBDU1NVbml0VHlwZTo6
VVJJKTsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6CiAgICAgICAg
IHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN2Z1N0eWxlLmZsb29kQ29s
b3IoKSk7CkBAIC0xMzYsMTUgKzEzNiwxNSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUu
a2VybmluZygpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyRW5kOgogICAgICAgICBpZiAo
IXN2Z1N0eWxlLm1hcmtlckVuZFJlc291cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygnIycsIHN2Z1N0eWxlLm1h
cmtlckVuZFJlc291cmNlKCkpLCBDU1NVbml0VHlwZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUu
bWFya2VyRW5kUmVzb3VyY2UoKSksIENTU1VuaXRUeXBlOjpVUkkpOwogICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgogICAgICAgICBpZiAoIXN2Z1N0eWxlLm1hcmtlck1p
ZFJlc291cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobWFrZVN0cmluZygnIycsIHN2Z1N0eWxlLm1hcmtlck1pZFJlc291cmNlKCkp
LCBDU1NVbml0VHlwZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2Uo
KSksIENTU1VuaXRUeXBlOjpVUkkpOwogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWFy
a2VyU3RhcnQ6CiAgICAgICAgIGlmICghc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1h
a2VTdHJpbmcoJyMnLCBzdmdTdHlsZS5tYXJrZXJTdGFydFJlc291cmNlKCkpLCBDU1NVbml0VHlw
ZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShtYWtlU3RyaW5nKCcjJywgc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgpKSwgQ1NTVW5p
dFR5cGU6OlVSSSk7CiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vbmUpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CiAgICAg
ICAgIHJldHVybiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihzdmdTdHlsZS5zdHJva2VQ
YWludFR5cGUoKSwgc3ZnU3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwgc3ZnU3R5bGUuc3Ryb2tlUGFp
bnRDb2xvcigpLCBzdHlsZS0+Y29sb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvY2FsYy9DU1NDYWxjQ2F0ZWdvcnlNYXBwaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9j
YWxjL0NTU0NhbGNDYXRlZ29yeU1hcHBpbmcuY3BwCmluZGV4IDFlOGM3ZDJjZWI1YTUyY2MwMzcx
Njg5MDY2NDIyMmY2OWI5ZTlmNDAuLmFjMWNhMDY3NGUxNzY4ZDNjYTVhZmExZmUzZjZkM2EzOWUx
MWVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNDYXRlZ29y
eU1hcHBpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNDYXRlZ29y
eU1hcHBpbmcuY3BwCkBAIC0zNCwzOCArMzQsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ2Fs
Y3VsYXRpb25DYXRlZ29yeSBjYWxjVW5pdENhdGVnb3J5KENTU1VuaXRUeXBlIHR5cGUpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNh
dGVnb3J5OjpOdW1iZXI7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfRVhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01N
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUFQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19ROgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JMSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVlc6
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19WTUlOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6UHg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6TW06CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UToK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UmxoczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNoczoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdw
b3J0UGVyY2VudGFnZU1heDoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxl
bmd0aDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpQZXJjZW50YWdlOgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29y
eTo6UGVyY2VudDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19SQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNh
dGVnb3J5OjpBbmdsZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1M6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TXM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6U2Vjb25kOgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6
VGltZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSFo6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0tIWjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpIejoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpLSHo6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpGcmVxdWVuY3k7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok90aGVy
OwpAQCAtNzUsMzkgKzc1LDM5IEBAIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2FsY1VuaXRDYXRlZ29y
eShDU1NVbml0VHlwZSB0eXBlKQogQ2FsY3VsYXRpb25DYXRlZ29yeSBjYWxjdWxhdGlvbkNhdGVn
b3J5Rm9yQ29tYmluYXRpb24oQ1NTVW5pdFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTVW5pdFR5
cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjsK
LSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpQeDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDbToKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpNbToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpJbjoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpQdDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQYzoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpROgogICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBl
cmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50Owot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ERUc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1JBRDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVFVSTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEZWc6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6UmFkOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkdyYWQ6CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6VHVybjoKICAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkFuZ2xl
OwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpNczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpT
ZWNvbmQ6CiAgICAgICAgIHJldHVybiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpUaW1lOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19IWjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OktIejoKICAg
ICAgICAgcmV0dXJuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkZyZXF1ZW5jeTsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVN
UzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfQ0hTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVkg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1ZNQVg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RW1zOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6UmVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNoczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBl
cmNlbnRhZ2VXaWR0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VI
ZWlnaHQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlTWluOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1heDoKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6T3RoZXI7CiAgICAgfQpAQCAtMTE2
LDc4ICsxMTYsNzggQEAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYWxjdWxhdGlvbkNhdGVnb3J5Rm9y
Q29tYmluYXRpb24oQ1NTVW5pdFR5cGUgdHlwZSkKIENTU1VuaXRUeXBlIGNhbm9uaWNhbFVuaXRU
eXBlRm9yQ2FsY3VsYXRpb25DYXRlZ29yeShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KQog
ewogICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHsKLSAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6
Ok51bWJlcjogcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOwotICAgIGNhc2UgQ2FsY3Vs
YXRpb25DYXRlZ29yeTo6TGVuZ3RoOiByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19QWDsKLSAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6IHJldHVybiBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0U7Ci0gICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpBbmdsZTogcmV0dXJu
IENTU1VuaXRUeXBlOjpDU1NfREVHOwotICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6VGlt
ZTogcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTVM7Ci0gICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVn
b3J5OjpGcmVxdWVuY3k6IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0haOworICAgIGNhc2UgQ2Fs
Y3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOiByZXR1cm4gQ1NTVW5pdFR5cGU6Ok51bWJlcjsKKyAg
ICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDogcmV0dXJuIENTU1VuaXRUeXBlOjpQ
eDsKKyAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6IHJldHVybiBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZTsKKyAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkFuZ2xlOiBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkRlZzsKKyAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlRp
bWU6IHJldHVybiBDU1NVbml0VHlwZTo6TXM7CisgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5
OjpGcmVxdWVuY3k6IHJldHVybiBDU1NVbml0VHlwZTo6SHo7CiAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpPdGhlcjoKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRO
dW1iZXI6CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TGVuZ3RoOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJl
dHVybiBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV047CisgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpV
bmtub3duOwogfQogCiBib29sIGhhc0RvdWJsZVZhbHVlKENTU1VuaXRUeXBlIHR5cGUpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0NIUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
SU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19SQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19I
WjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19ESU1FTlNJT046Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19WSDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RFBQWDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBJOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19EUENNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19GUjoKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkVtczoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q2hzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJlbXM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UHg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TW06
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6Cisg
ICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TXM6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6U2Vjb25kOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Okh6OgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OktIejoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpEaW1lbnNpb246
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpWaWV3
cG9ydFBlcmNlbnRhZ2VNYXg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RG90c1BlclBpeGVsOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkRvdHNQZXJJbmNoOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkRvdHNQZXJDZW50aW1ldGVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkZsZXg6CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6UToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpMaHM6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UmxoczoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1VOS05PV046Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NUUklORzoKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1JTFk6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1VSSToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSURFTlQ6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6VW5rbm93bjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpTdHJpbmc6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Rm9udEZhbWlseToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpVUkk6
CisgICAgY2FzZSBDU1NVbml0VHlwZTo6SWRlbnQ6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q3Vz
dG9tSWRlbnQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0FUVFI6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0NPVU5URVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1Q6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QQUlSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JBTkdFOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUU6Ci0gICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1NIQVBFOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19RVUlSS1lfRU1TOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19D
QUxDOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1C
RVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdU
SDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1ZBTFVFX0lEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkF0dHI6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q291bnRlcjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpSZWN0Ogor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlJHQkNvbG9yOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBh
aXI6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6VW5pY29kZVJhbmdlOgorICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNvdW50ZXJOYW1lOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlNoYXBlOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OlF1YWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UXVpcmt5RW1zOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNhbGN1bGF0ZWQ6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTnVtYmVyOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNh
bGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQcm9w
ZXJ0eUlEOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZhbHVlSUQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9OwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwCmluZGV4IDVjZWRkNTNhNDBi
ZjdlZGMwMDUwM2Y3ZmNmZDYyMGNhMDQ2MzA3ZjcuLmYzNGNhZmFkZjk2MGNkOGY1MmQ0MjkzNGE3
NGJlNDlhNDc5MWZkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0Nh
bGNPcGVyYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxj
T3BlcmF0aW9uTm9kZS5jcHAKQEAgLTIxOSwxMiArMjE5LDEyIEBAIHN0YXRpYyBDU1NVbml0VHlw
ZSBwcmltaXRpdmVUeXBlRm9yQ29tYmluYXRpb24oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
JiBub2RlCiAgICAgaWYgKGlzPENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU+KG5vZGUpKQogICAg
ICAgICByZXR1cm4gbm9kZS5wcmltaXRpdmVUeXBlKCk7CiAgICAgCi0gICAgcmV0dXJuIENTU1Vu
aXRUeXBlOjpDU1NfVU5LTk9XTjsKKyAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlVua25vd247CiB9
CiAKIHN0YXRpYyBDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpVbml0Q29udmVyc2lvbiBjb252
ZXJzaW9uVG9BZGRWYWx1ZXNXaXRoVHlwZXMoQ1NTVW5pdFR5cGUgZmlyc3RUeXBlLCBDU1NVbml0
VHlwZSBzZWNvbmRUeXBlKQogewotICAgIGlmIChmaXJzdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNT
U19VTktOT1dOIHx8IHNlY29uZFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQorICAg
IGlmIChmaXJzdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OlVua25vd24gfHwgc2Vjb25kVHlwZSA9PSBD
U1NVbml0VHlwZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIENTU0NhbGNQcmltaXRpdmVWYWx1
ZU5vZGU6OlVuaXRDb252ZXJzaW9uOjpJbnZhbGlkOwogCiAgICAgYXV0byBmaXJzdENhdGVnb3J5
ID0gY2FsY3VsYXRpb25DYXRlZ29yeUZvckNvbWJpbmF0aW9uKGZpcnN0VHlwZSk7CkBAIC00NjYs
MTAgKzQ2NiwxMCBAQCB2b2lkIENTU0NhbGNPcGVyYXRpb25Ob2RlOjpjb21iaW5lQ2hpbGRyZW4o
KQogICAgICAgICB1bnNpZ25lZCBsZWFkaW5nTnVtYmVyTm9kZUNvdW50ID0gMDsKICAgICAgICAg
Zm9yIChhdXRvJiBub2RlIDogbV9jaGlsZHJlbikgewogICAgICAgICAgICAgYXV0byBub2RlVHlw
ZSA9IHByaW1pdGl2ZVR5cGVGb3JDb21iaW5hdGlvbihub2RlLmdldCgpKTsKLSAgICAgICAgICAg
IGlmIChub2RlVHlwZSAhPSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikKKyAgICAgICAgICAgIGlm
IChub2RlVHlwZSAhPSBDU1NVbml0VHlwZTo6TnVtYmVyKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtdWx0aXBsaWVyICo9IG5vZGUtPmRvdWJsZVZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0g
bm9kZS0+ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgICAgICArK2xl
YWRpbmdOdW1iZXJOb2RlQ291bnQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MTQsNyArNTE0
LDcgQEAgdm9pZCBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y29tYmluZUNoaWxkcmVuKCkKIAogICAg
ICAgICBpZiAoIWRpZE11bHRpcGx5KSB7CiAgICAgICAgICAgICBpZiAobGVhZGluZ051bWJlck5v
ZGVDb3VudCkgewotICAgICAgICAgICAgICAgIGF1dG8gbXVsdGlwbGllck5vZGUgPSBDU1NDYWxj
UHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtdWx0
aXBsaWVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAgICAgIGF1dG8g
bXVsdGlwbGllck5vZGUgPSBDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVhdGUoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShtdWx0aXBsaWVyLCBDU1NVbml0VHlwZTo6TnVtYmVyKSk7CiAg
ICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKFdURk1vdmUobXVsdGlw
bGllck5vZGUpKTsKICAgICAgICAgICAgIH0KIApAQCAtNjgwLDExICs2ODAsMTEgQEAgQ1NTVW5p
dFR5cGUgQ1NTQ2FsY09wZXJhdGlvbk5vZGU6OnByaW1pdGl2ZVR5cGUoKSBjb25zdAogICAgICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikKICAgICAgICAgICAgIEFTU0VSVChjaGls
ZC0+Y2F0ZWdvcnkoKSA9PSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXIpOwogI2VuZGlmCi0g
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjsKKyAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpOdW1iZXI7CiAKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNl
bnQ6IHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjsKKyAgICAgICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6VW5rbm93bjsKIAogICAgICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkgPT0gMikgewog
ICAgICAgICAgICAgaWYgKG1fY2hpbGRyZW5bMF0tPmNhdGVnb3J5KCkgPT0gQ2FsY3VsYXRpb25D
YXRlZ29yeTo6TnVtYmVyKQpAQCAtNjk1LDcgKzY5NSw3IEBAIENTU1VuaXRUeXBlIENTU0NhbGNP
cGVyYXRpb25Ob2RlOjpwcmltaXRpdmVUeXBlKCkgY29uc3QKICAgICAgICAgQ1NTVW5pdFR5cGUg
Zmlyc3RUeXBlID0gbV9jaGlsZHJlblswXS0+cHJpbWl0aXZlVHlwZSgpOwogICAgICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikgewogICAgICAgICAgICAgaWYgKGZpcnN0VHlwZSAh
PSBjaGlsZC0+cHJpbWl0aXZlVHlwZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0
VHlwZTo6Q1NTX1VOS05PV047CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpV
bmtub3duOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmaXJzdFR5cGU7CiAgICAgfQpAQCAt
NzExLDEwICs3MTEsMTAgQEAgQ1NTVW5pdFR5cGUgQ1NTQ2FsY09wZXJhdGlvbk5vZGU6OnByaW1p
dGl2ZVR5cGUoKSBjb25zdAogICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExl
bmd0aDoKICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXI6CiAgICAg
Y2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpPdGhlcjoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRU
eXBlOjpDU1NfVU5LTk9XTjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpVbmtub3duOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNTU19VTktOT1dOOworICAgIHJldHVybiBDU1NVbml0VHlwZTo6VW5rbm93bjsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gQ1NTQ2FsY09wZXJhdGlvbk5vZGU6OmNy
ZWF0ZUNhbGNFeHByZXNzaW9uKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZl
cnNpb25EYXRhKSBjb25zdApAQCAtNzQ2LDggKzc0Niw4IEBAIGRvdWJsZSBDU1NDYWxjT3BlcmF0
aW9uTm9kZTo6ZG91YmxlVmFsdWUoQ1NTVW5pdFR5cGUgdW5pdFR5cGUpIGNvbnN0CiAKICAgICBy
ZXR1cm4gZXZhbHVhdGUobV9jaGlsZHJlbi5tYXAoWyZdIChhdXRvJiBjaGlsZCkgewogICAgICAg
ICBDU1NVbml0VHlwZSBjaGlsZFR5cGUgPSB1bml0VHlwZTsKLSAgICAgICAgaWYgKGFsbG93TnVt
YmVycyAmJiB1bml0VHlwZSAhPSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiAmJiBjaGlsZC0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgY2hp
bGRUeXBlID0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7CisgICAgICAgIGlmIChhbGxvd051bWJl
cnMgJiYgdW5pdFR5cGUgIT0gQ1NTVW5pdFR5cGU6Ok51bWJlciAmJiBjaGlsZC0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1VuaXRUeXBlOjpOdW1iZXIpCisgICAgICAgICAgICBjaGlsZFR5cGUgPSBD
U1NVbml0VHlwZTo6TnVtYmVyOwogICAgICAgICByZXR1cm4gY2hpbGQtPmRvdWJsZVZhbHVlKGNo
aWxkVHlwZSk7CiAgICAgfSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2Nh
bGMvQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvY2Fs
Yy9DU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlLmNwcAppbmRleCAyOWQwNDgzMGUwMGEwNzRkZWU0
NWE4ZmYzZTRhZDA4YmNlY2ZlNTJjLi5lMWQ3MGRhMTBmMWM3NmNmZWFmM2YyZjE2ZDkxNjcwNzRh
ZDMyMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjUHJpbWl0
aXZlVmFsdWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjUHJp
bWl0aXZlVmFsdWVOb2RlLmNwcApAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgQ1NTQ2FsY1ByaW1p
dGl2ZVZhbHVlTm9kZTo6YWRkKGNvbnN0IENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGUmIG5vZGUs
IFVuaXRDCiAgICAgY2FzZSBVbml0Q29udmVyc2lvbjo6Q2Fub25pY2FsaXplOiB7CiAgICAgICAg
IGF1dG8gdmFsdWVDYXRlZ29yeSA9IHVuaXRDYXRlZ29yeSh2YWx1ZVR5cGUpOwogICAgICAgICAv
LyBGSVhNRTogSXQncyBhd2t3YXJkIHRoYXQgY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeSgp
IGhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciBDU1NVbml0Q2F0ZWdvcnk6OlBlcmNlbnQuCi0gICAg
ICAgIGF1dG8gY2Fub25pY2FsVHlwZSA9IHZhbHVlQ2F0ZWdvcnkgPT0gQ1NTVW5pdENhdGVnb3J5
OjpQZXJjZW50ID8gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFIDogY2Fub25pY2FsVW5pdFR5
cGVGb3JDYXRlZ29yeSh2YWx1ZUNhdGVnb3J5KTsKLSAgICAgICAgQVNTRVJUKGNhbm9uaWNhbFR5
cGUgIT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKTsKKyAgICAgICAgYXV0byBjYW5vbmljYWxU
eXBlID0gdmFsdWVDYXRlZ29yeSA9PSBDU1NVbml0Q2F0ZWdvcnk6OlBlcmNlbnQgPyBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZSA6IGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkodmFsdWVDYXRl
Z29yeSk7CisgICAgICAgIEFTU0VSVChjYW5vbmljYWxUeXBlICE9IENTU1VuaXRUeXBlOjpVbmtu
b3duKTsKICAgICAgICAgZG91YmxlIGxlZnRWYWx1ZSA9IG1fdmFsdWUtPmRvdWJsZVZhbHVlKGNh
bm9uaWNhbFR5cGUpOwogICAgICAgICBkb3VibGUgcmlnaHRWYWx1ZSA9IG5vZGUuZG91YmxlVmFs
dWUoY2Fub25pY2FsVHlwZSk7CiAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKGxlZnRWYWx1ZSArIHJpZ2h0VmFsdWUsIGNhbm9uaWNhbFR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9jYWxjL0NTU0NhbGNWYWx1ZS5jcHAKaW5kZXggZDZhYWU1YTA1OWY3ZmI0MWI4MmI1
ZmExNmU2NzNlMjZkY2YzMzMzNS4uNzYyYjQ5YTkxNzM3ODkwNTZmYWViYTNiNmQwNDFlZDFlOTIx
MGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjVmFsdWUuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1Mo
Y29uc3QgTGVuZ3RoJiwgY29uc3QgUmVuZGVyU3R5bGUmCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxD
U1NDYWxjT3BlcmF0aW9uTm9kZT4gY3JlYXRlQmxlbmRIYWxmKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGZsb2F0IHByb2dyZXNzKQogewogICAgIHJldHVy
biBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y3JlYXRlKENhbGNPcGVyYXRvcjo6TXVsdGlwbHksIGNy
ZWF0ZUNTUyhsZW5ndGgsIHN0eWxlKSwKLSAgICAgICAgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9k
ZTo6Y3JlYXRlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJvZ3Jlc3MsIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKSkpOworICAgICAgICBDU1NDYWxjUHJpbWl0aXZlVmFsdWVOb2RlOjpjcmVh
dGUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwcm9ncmVzcywgQ1NTVW5pdFR5cGU6Ok51bWJl
cikpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZWY8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPj4gY3Jl
YXRlQ1NTKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4m
IG5vZGVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJl
c3Npb25Ob2RlJiBub2RlLCBjCiAgICAgc3dpdGNoIChub2RlLnR5cGUoKSkgewogICAgIGNhc2Ug
Q2FsY0V4cHJlc3Npb25Ob2RlVHlwZTo6TnVtYmVyOiB7CiAgICAgICAgIGZsb2F0IHZhbHVlID0g
ZG93bmNhc3Q8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG5vZGUpLnZhbHVlKCk7IC8vIGRvdWJsZT8K
LSAgICAgICAgcmV0dXJuIENTU0NhbGNQcmltaXRpdmVWYWx1ZU5vZGU6OmNyZWF0ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAg
ICAgICByZXR1cm4gQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZTo6Y3JlYXRlKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICB9CiAgICAg
Y2FzZSBDYWxjRXhwcmVzc2lvbk5vZGVUeXBlOjpMZW5ndGg6IHsKICAgICAgICAgYXV0byYgbGVu
Z3RoID0gZG93bmNhc3Q8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG5vZGUpLmxlbmd0aCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCmluZGV4
IGYwM2M4YzUzZjNlYzZkNTNjMzY4NWJiZDAzMGE3OWYwMzMwMGM4YWIuLjJhNmExYTg1YTRlZDZh
YTcyMzM2N2Q0Y2RmNDg5ZDIwN2I0OWZmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKQEAgLTExNywxMCArMTE3LDEwIEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsCiB7CiAgICAgaWYgKGxlbmd0aCA+IDIgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDJdLCAncCcpICYmIGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1tsZW5ndGggLSAxXSwgJ3gnKSkgewogICAgICAgICBs
ZW5ndGggLT0gMjsKLSAgICAgICAgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1NfUFg7CisgICAgICAg
IHVuaXQgPSBDU1NVbml0VHlwZTo6UHg7CiAgICAgfSBlbHNlIGlmIChsZW5ndGggPiAxICYmIGNo
YXJhY3RlcnNbbGVuZ3RoIC0gMV0gPT0gJyUnKSB7CiAgICAgICAgIGxlbmd0aCAtPSAxOwotICAg
ICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOworICAgICAgICB1bml0ID0g
Q1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U7CiAgICAgfQogCiAgICAgYXV0byBwYXJzZWROdW1iZXIg
PSBwYXJzZUNTU051bWJlcihjaGFyYWN0ZXJzLCBsZW5ndGgpOwpAQCAtMTM3LDEwICsxMzcsMTAg
QEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlQW5nbGUoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGUKIAogICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKGNoYXJhY3RlcnNbbGVuZ3RoIC0gM10sICdkJykgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDJdLCAnZScpICYmIGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoY2hhcmFjdGVyc1tsZW5ndGggLSAxXSwgJ2cnKSkgewogICAgICAgICBsZW5ndGgg
LT0gMzsKLSAgICAgICAgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1NfREVHOworICAgICAgICB1bml0
ID0gQ1NTVW5pdFR5cGU6OkRlZzsKICAgICB9IGVsc2UgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwoY2hhcmFjdGVyc1tsZW5ndGggLSAzXSwgJ3InKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0sICdhJykgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChjaGFyYWN0ZXJzW2xlbmd0aCAtIDFdLCAnZCcpKSB7CiAgICAgICAgIGxlbmd0aCAt
PSAzOwotICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19SQUQ7CisgICAgICAgIHVuaXQg
PSBDU1NVbml0VHlwZTo6UmFkOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgU3RyaW5nVgogCiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGRvdWJsZSBudW1iZXI7Ci0gICAgQ1NT
VW5pdFR5cGUgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOworICAgIENTU1VuaXRUeXBl
IHVuaXQgPSBDU1NVbml0VHlwZTo6TnVtYmVyOwogCiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkg
ewogICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBs
ZW5ndGgsIHVuaXQsIG51bWJlcikpCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
ZCwgU3RyaW5nVgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYg
KHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpIHsKKyAgICBpZiAodW5pdCA9PSBDU1NV
bml0VHlwZTo6TnVtYmVyKSB7CiAgICAgICAgIGlmIChudW1iZXIgJiYgY3NzUGFyc2VyTW9kZSAh
PSBTVkdBdHRyaWJ1dGVNb2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IHVuaXQgPSBDU1NVbml0VHlwZTo6Q1NTX1BYOworICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6
OlB4OwogICAgIH0KIAogICAgIGlmIChudW1iZXIgPCAwICYmICFhY2NlcHRzTmVnYXRpdmVOdW1i
ZXJzKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBh
cnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0CiAgICAgaWYg
KGN1cnJlbnQgPT0gZW5kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYg
KGV4cGVjdCA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiAmJiAoKmN1cnJlbnQgPT0gJy4nIHx8
ICpjdXJyZW50ID09ICclJykpCisgICAgaWYgKGV4cGVjdCA9PSBDU1NVbml0VHlwZTo6TnVtYmVy
ICYmICgqY3VycmVudCA9PSAnLicgfHwgKmN1cnJlbnQgPT0gJyUnKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKQEAgLTI5OCwxOCAr
Mjk4LDE4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlQ29sb3JJbnRPclBl
cmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0CiAgICAgICAgIGxvY2FsVmFsdWUgKz0g
cGVyY2VudGFnZTsKICAgICB9CiAKLSAgICBpZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSAmJiAqY3VycmVudCAhPSAnJScpCisgICAgaWYgKGV4cGVjdCA9PSBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZSAmJiAqY3VycmVudCAhPSAnJScpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7Ci0gICAgICAgIGV4cGVjdCA9
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgZXhwZWN0ID0gQ1NTVW5pdFR5
cGU6OlBlcmNlbnRhZ2U7CiAgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAwLjAg
KiAyNTUuMDsKICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFnZXMg
b3ZlciAxMDAlCiAgICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQogICAgICAgICAgICAgbG9j
YWxWYWx1ZSA9IDI1NTsKICAgICAgICAgY3VycmVudCsrOwogICAgIH0gZWxzZQotICAgICAgICBl
eHBlY3QgPSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjsKKyAgICAgICAgZXhwZWN0ID0gQ1NTVW5p
dFR5cGU6Ok51bWJlcjsKIAogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0hUTUxTcGFj
ZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCiAgICAgICAgIGN1cnJlbnQrKzsKQEAgLTQ2Niw3
ICs0NjYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcgogICAgICAgICAgICAgcmV0dXJuICpo
ZXhDb2xvcjsKICAgICB9CiAKLSAgICBhdXRvIGV4cGVjdCA9IENTU1VuaXRUeXBlOjpDU1NfVU5L
Tk9XTjsKKyAgICBhdXRvIGV4cGVjdCA9IENTU1VuaXRUeXBlOjpVbmtub3duOwogCiAgICAgLy8g
VHJ5IHJnYmEoKSBzeW50YXguCiAgICAgaWYgKG1pZ2h0QmVSR0JBKGNoYXJhY3RlcnMsIGxlbmd0
aCkpIHsKQEAgLTExMzYsMTMgKzExMzYsMTMgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1U
cmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2kKICAg
ICAgICAgaWYgKGRlbGltaXRlciA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVsaW1pdGVyKTsKLSAgICAgICAgQ1NTVW5pdFR5cGUgdW5pdCA9IENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSOworICAgICAgICBDU1NVbml0VHlwZSB1bml0ID0gQ1NTVW5pdFR5cGU6Ok51bWJl
cjsKICAgICAgICAgZG91YmxlIG51bWJlcjsKICAgICAgICAgaWYgKCFwYXJzZVNpbXBsZUxlbmd0
aChwb3MsIGFyZ3VtZW50TGVuZ3RoLCB1bml0LCBudW1iZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAoIW51bWJlciAmJiB1bml0ID09IENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSKQotICAgICAgICAgICAgdW5pdCA9IENTU1VuaXRUeXBlOjpDU1NfUFg7Ci0gICAgICAg
IGlmICh1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIHx8ICh1bml0ID09IENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSAmJiAodHJhbnNmb3JtVmFsdWUtPm5hbWUoKSA9PSBDU1NWYWx1
ZVRyYW5zbGF0ZVogfHwgKHRyYW5zZm9ybVZhbHVlLT5uYW1lKCkgPT0gQ1NTVmFsdWVUcmFuc2xh
dGUzZCAmJiBleHBlY3RlZENvdW50ID09IDEpKSkpCisgICAgICAgIGlmICghbnVtYmVyICYmIHVu
aXQgPT0gQ1NTVW5pdFR5cGU6Ok51bWJlcikKKyAgICAgICAgICAgIHVuaXQgPSBDU1NVbml0VHlw
ZTo6UHg7CisgICAgICAgIGlmICh1bml0ID09IENTU1VuaXRUeXBlOjpOdW1iZXIgfHwgKHVuaXQg
PT0gQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UgJiYgKHRyYW5zZm9ybVZhbHVlLT5uYW1lKCkgPT0g
Q1NTVmFsdWVUcmFuc2xhdGVaIHx8ICh0cmFuc2Zvcm1WYWx1ZS0+bmFtZSgpID09IENTU1ZhbHVl
VHJhbnNsYXRlM2QgJiYgZXhwZWN0ZWRDb3VudCA9PSAxKSkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUobnVtYmVyLCB1bml0KSk7CiAgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCAr
IDE7CkBAIC0xMTU5LDEyICsxMTU5LDEyIEBAIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQW5n
bGVBcmd1bWVudChDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgQ1NTRnVuY3RpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlbGltaXRlcik7Ci0gICAgQ1NTVW5pdFR5cGUgdW5pdCA9IENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSOworICAgIENTU1VuaXRUeXBlIHVuaXQgPSBDU1NVbml0VHlwZTo6
TnVtYmVyOwogICAgIGRvdWJsZSBudW1iZXI7CiAgICAgaWYgKCFwYXJzZVNpbXBsZUFuZ2xlKHBv
cywgYXJndW1lbnRMZW5ndGgsIHVuaXQsIG51bWJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIW51bWJlciAmJiB1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKQotICAg
ICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkNTU19ERUc7CisgICAgaWYgKCFudW1iZXIgJiYgdW5p
dCA9PSBDU1NVbml0VHlwZTo6TnVtYmVyKQorICAgICAgICB1bml0ID0gQ1NTVW5pdFR5cGU6OkRl
ZzsKIAogICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShudW1iZXIsIHVuaXQpKTsKICAgICBwb3MgKz0gYXJndW1lbnRMZW5ndGggKyAxOwpAQCAtMTE4
Myw3ICsxMTgzLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMo
Q2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmUKICAgICAgICAgYXV0byBudW1i
ZXIgPSBwYXJzZUNTU051bWJlcihwb3MsIGFyZ3VtZW50TGVuZ3RoKTsKICAgICAgICAgaWYgKCFu
dW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVl
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqbnVtYmVyLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoKm51bWJlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOwogICAgICAgICBw
b3MgKz0gYXJndW1lbnRMZW5ndGggKyAxOwogICAgICAgICAtLWV4cGVjdGVkQ291bnQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAppbmRleCBl
YTcwMzA0NGIxNzFiMzE1MTA4NGZlMjBiNmQ2OWI5MDQ1NzAwNjM3Li45ZmM2NjRlYjY4NmE3ZjBl
Njg5YmMzYWU0NjdmNWE4NzFiMjYzMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuLmNwcApAQCAtNDksOSArNDksOSBAQCBDU1NVbml0VHlwZSBjc3NQcmlt
aXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25l
ZCBsZQogICAgIGNhc2UgMToKICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkp
IHsKICAgICAgICAgY2FzZSAncSc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNT
U19ROworICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpROwogICAgICAgICBjYXNlICdz
JzoKLSAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1M7CisgICAgICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OlNlY29uZDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIDI6CkBAIC01OSw1OSArNTksNTkgQEAgQ1NTVW5pdFR5cGUgY3NzUHJpbWl0aXZlVmFs
dWVVbml0RnJvbVRyaWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgdW5zaWduZWQgbGUKICAg
ICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFd
KSkgewogICAgICAgICAgICAgY2FzZSAnaCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1Vu
aXRUeXBlOjpDU1NfQ0hTOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q2hz
OwogICAgICAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRU
eXBlOjpDU1NfQ007CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDbTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdlJzoKICAgICAg
ICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CiAgICAgICAgICAgICBjYXNl
ICdtJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19FTVM7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpFbXM7CiAgICAgICAgICAgICBjYXNlICd4
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19FWFM7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpFeHM7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBpZiAodG9BU0NJSUxv
d2VyKGRhdGFbMV0pID09ICdyJykKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNTU19GUjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkZsZXg7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnaCc6CiAgICAgICAgICAgICBpZiAodG9BU0NJ
SUxvd2VyKGRhdGFbMV0pID09ICd6JykKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OkNTU19IWjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6Okh6OwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgaWYgKHRvQVND
SUlMb3dlcihkYXRhWzFdKSA9PSAnbicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRU
eXBlOjpDU1NfSU47CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpJbjsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkubGluZUhlaWdodFVuaXRzRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NVbml0VHlwZTo6Q1NTX0xIUzsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkxoczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdtJzoKICAgICAg
ICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CiAgICAgICAgICAgICBjYXNl
ICdtJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19NTTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6Ok1tOwogICAgICAgICAgICAgY2FzZSAncyc6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfTVM7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpNczsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxv
d2VyKGRhdGFbMV0pKSB7CiAgICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19QQzsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OlBjOwogICAgICAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IENTU1VuaXRUeXBlOjpDU1NfUFQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBl
OjpQdDsKICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIHJldHVybiBDU1NV
bml0VHlwZTo6Q1NTX1BYOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UHg7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAndic6CiAg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewogICAgICAgICAgICAg
Y2FzZSAnaCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfVkg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWln
aHQ7CiAgICAgICAgICAgICBjYXNlICd3JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OkNTU19WVzsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlZpZXdw
b3J0UGVyY2VudGFnZVdpZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTEyMiwzMSArMTIyLDMxIEBAIENTU1VuaXRUeXBlIGNzc1ByaW1pdGl2ZVZh
bHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlCiAg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewogICAgICAgICAgICAg
Y2FzZSAnZSc6CiAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAn
ZycpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0RFRzsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpEZWc7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICBpZiAodG9B
U0NJSUxvd2VyKGRhdGFbMl0pID09ICdpJykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1VuaXRUeXBlOjpDU1NfRFBJOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OkRvdHNQZXJJbmNoOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnayc6CiAgICAgICAgICAgICBpZiAodG9BU0NJ
SUxvd2VyKGRhdGFbMV0pID09ICdoJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ3onKQot
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0tIWjsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OktIejsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlICdyJzoKICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7
CiAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGRhdGFbMl0pID09ICdkJykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBl
OjpDU1NfUkFEOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlJhZDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAg
ICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ20nKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19SRU1TOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OlJlbXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlICdsJzoKICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0p
ID09ICdoJyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxpbmVI
ZWlnaHRVbml0c0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRU
eXBlOjpDU1NfUkxIUzsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpS
bGhzOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICBicmVh
azsKQEAgLTE2MCwxMSArMTYwLDExIEBAIENTU1VuaXRUeXBlIGNzc1ByaW1pdGl2ZVZhbHVlVW5p
dEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgICAg
ICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKICAgICAgICAgICAgICAg
ICBjYXNlICdjJzoKICAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNd
KSA9PSAnbScpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNT
U19EUENNOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpEb3Rz
UGVyQ2VudGltZXRlcjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgY2FzZSAncCc6CiAgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsz
XSkgPT0gJ3gnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpD
U1NfRFBQWDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6RG90
c1BlclBpeGVsOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3MiwxMSArMTcyLDExIEBAIENTU1VuaXRUeXBlIGNz
c1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVu
c2lnbmVkIGxlCiAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3InICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAnYScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdkJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19HUkFEOworICAgICAgICAgICAgICAgIHJldHVybiBD
U1NVbml0VHlwZTo6R3JhZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd0JzoK
ICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3UnICYmIHRvQVNDSUlM
b3dlcihkYXRhWzJdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19UVVJOOworICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NVbml0VHlwZTo6VHVybjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlICd2JzoKICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7
CkBAIC0xODQsMTEgKzE4NCwxMSBAQCBDU1NVbml0VHlwZSBjc3NQcmltaXRpdmVWYWx1ZVVuaXRG
cm9tVHJpZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZQogICAgICAgICAg
ICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMl0pKSB7CiAgICAgICAgICAgICAgICAg
Y2FzZSAnYSc6CiAgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVszXSkg
PT0gJ3gnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1Nf
Vk1BWDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Vmlld3Bv
cnRQZXJjZW50YWdlTWF4OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlICdpJzoKICAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRh
WzNdKSA9PSAnbicpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNTU19WTUlOOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpW
aWV3cG9ydFBlcmNlbnRhZ2VNaW47CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIwMCwxMiArMjAwLDEyIEBA
IENTU1VuaXRUeXBlIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRh
dGFbMF0pKSB7CiAgICAgICAgIGNhc2UgJ18nOgogICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dl
cihkYXRhWzFdKSA9PSAnXycgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdxJyAmJiB0b0FT
Q0lJTG93ZXIoZGF0YVszXSkgPT0gJ2UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzRdKSA9PSAnbScp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlF1aXJreUVtczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gQ1NT
VW5pdFR5cGU6OkNTU19VTktOT1dOOworICAgIHJldHVybiBDU1NVbml0VHlwZTo6VW5rbm93bjsK
IH0KIAogc3RhdGljIENTU1VuaXRUeXBlIHN0cmluZ1RvVW5pdFR5cGUoU3RyaW5nVmlldyBzdHJp
bmdWaWV3KQpAQCAtMjQzLDcgKzI0Myw3IEBAIENTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bihkb3VibGUgbnVtZXJpY1ZhbHVlLCBOdW1lcmljVmFsdWVUeXBlIG51bWVyaWNWYWx1CiAgICAg
LCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKICAgICAsIG1fbnVtZXJpY1ZhbHVlVHlwZShudW1lcmlj
VmFsdWVUeXBlKQogICAgICwgbV9udW1lcmljU2lnbihzaWduKQotICAgICwgbV91bml0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpCisgICAgLCBtX3VuaXQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1VuaXRUeXBlOjpOdW1iZXIpKQogICAgICwgbV9udW1l
cmljVmFsdWUobnVtZXJpY1ZhbHVlKQogewogICAgIGluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KG9y
aWdpbmFsVGV4dCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6Y29u
dmVydFRvUGVyY2VudGFnZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7
CiAgICAgbV90eXBlID0gUGVyY2VudGFnZVRva2VuOwotICAgIG1fdW5pdCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgIG1fdW5pdCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiB9CiAKIFN0cmlu
Z1ZpZXcgQ1NTUGFyc2VyVG9rZW46Om9yaWdpbmFsVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDVjNDFjMzY3NmVh
NmQ5OTJhYjc5ZWEzYTk2OWQ2OGIxMjgyMTMxMjAuLjJiMzFhZjAzNjkwODkyODVmMGJkMGZjZDE0
NmNkN2Y3YzA2NWNhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNl
cjo6Y29uc3VtZVRyYW5zZm9ybU9yaWdpbihib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm1Pcmln
aW5YLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbiwgV1RGTW92ZShyZXN1bHRYWS0+eCksIGlt
cG9ydGFudCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2lu
WSwgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIFdURk1vdmUocmVzdWx0WFktPnkpLCBpbXBv
cnRhbnQpOwotICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblos
IENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luLCByZXN1bHRaID8gcmVzdWx0Wi5yZWxlYXNlTm9u
TnVsbCgpIDogQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgwLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKSwgaW1wb3J0YW50LCAhaGFzWik7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWiwgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIHJl
c3VsdFogPyByZXN1bHRaLnJlbGVhc2VOb25OdWxsKCkgOiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKDAsIENTU1VuaXRUeXBlOjpQeCksIGltcG9ydGFudCwgIWhhc1opOwog
ICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTE4LDcgKzkxOCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250V2VpZ2h0KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICByZXR1cm4gc3dpdGNoT24oKnJlc3VsdCwg
W10gKENTU1ZhbHVlSUQgdmFsdWVJRCkgewogICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlSUQpOwogICAgICAgICB9
LCBbXSAoZG91YmxlIHdlaWdodE51bWJlcikgewotICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUod2VpZ2h0TnVtYmVyLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSh3ZWlnaHROdW1iZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgICAg
ICB9KTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ291bnRlcihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgaW50IGRlZmF1bHRWYQogICAgICAgICBpbnQgaSA9IGRlZmF1bHRWYWx1ZTsKICAg
ICAgICAgaWYgKGF1dG8gY291bnRlclZhbHVlID0gY29uc3VtZUludGVnZXJSYXcocmFuZ2UpKQog
ICAgICAgICAgICAgaSA9ICpjb3VudGVyVmFsdWU7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChjcmVh
dGVQcmltaXRpdmVWYWx1ZVBhaXIoY291bnRlck5hbWUucmVsZWFzZU5vbk51bGwoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIFBhaXI6Oklk
ZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChj
cmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoY291bnRlck5hbWUucmVsZWFzZU5vbk51bGwoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSwgUGFpcjo6SWRl
bnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpKTsKICAgICB9IHdoaWxlICghcmFuZ2UuYXRF
bmQoKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQW5pbWF0aW9uTmFtZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKICAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UodG9rZW4udmFsdWUoKSwgIm5vbmUiKSkKICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwot
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh0b2tl
bi52YWx1ZSgpLnRvU3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodG9rZW4udmFsdWUo
KS50b1N0cmluZygpLCBDU1NVbml0VHlwZTo6U3RyaW5nKTsKICAgICB9CiAKICAgICByZXR1cm4g
Y29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKQEAgLTE4MDMsNyArMTgwMyw3IEBAIHN0YXRpYyBi
b29sIGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlCiAgICAgYXV0byBwZXJzcGVjdGl2ZSA9IGNvbnN1bWVOdW1iZXJSYXco
YXJncyk7CiAgICAgaWYgKCFwZXJzcGVjdGl2ZSB8fCAqcGVyc3BlY3RpdmUgPCAwKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKCpwZXJzcGVjdGl2ZSwgQ1NTVW5pdFR5cGU6OkNTU19QWCkpOworICAgIHRy
YW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqcGVyc3BlY3Rp
dmUsIENTU1VuaXRUeXBlOjpQeCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTYwLDcg
KzE5NjAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVHJhbnNsYXRlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgICAgICAgICAgcmV0dXJuIGxp
c3Q7CiAgICAgICAgIC8vIEFkZCB0aGUgemVybyB2YWx1ZSBmb3IgeSBpZiB3ZSBkaWQgbm90IGFs
cmVhZHkgYWRkIGEgeSB2YWx1ZS4KICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpID09IDEpCi0g
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6UHgpKTsKICAgICAgICAgbGlzdC0+YXBwZW5k
KCp6KTsKICAgICB9CiAKQEAgLTIxMjEsNyArMjEyMSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwotICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
OworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NV
bml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfQogICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogfQpAQCAtMjMy
OCw4ICsyMzI4LDggQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUF0dHIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGMKICAgICBpZiAoIWFyZ3MuYXRF
bmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIg
bW92aW5nIHRvIGEgQ1NTRnVuY3Rpb25WYWx1ZSB3aXRoIGEgY3VzdG9tLWlkZW50IHJhdGhlciB0
aGFuIGEgc3BlY2lhbCBDU1NfQVRUUiBwcmltaXRpdmUgdmFsdWUuCi0gICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoYXR0ck5hbWUsIENTU1VuaXRUeXBlOjpD
U1NfQVRUUik7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIG1vdmluZyB0byBhIENTU0Z1bmN0aW9u
VmFsdWUgd2l0aCBhIGN1c3RvbS1pZGVudCByYXRoZXIgdGhhbiBhIHNwZWNpYWwgQ1NTVW5pdFR5
cGU6OkF0dHIgcHJpbWl0aXZlIHZhbHVlLgorICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZVZhbHVlKGF0dHJOYW1lLCBDU1NVbml0VHlwZTo6QXR0cik7CiB9CiAKIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb3VudGVyQ29udGVudChDU1NQYXJzZXJUb2tl
blJhbmdlIGFyZ3MsIGJvb2wgY291bnRlcnMpCkBAIC0yMzQwLDExICsyMzQwLDExIEBAIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb3VudGVyQ29udGVudChDU1NQYXJzZXJUb2tlblJh
bmdlIGFyZ3MsIGJvb2wgY291CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFy
YXRvcjsKICAgICBpZiAoIWNvdW50ZXJzKQotICAgICAgICBzZXBhcmF0b3IgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKFN0cmluZygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CisgICAg
ICAgIHNlcGFyYXRvciA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoU3RyaW5nKCksIENTU1Vu
aXRUeXBlOjpTdHJpbmcpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykgfHwgYXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rv
a2VuKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHNlcGFyYXRvciA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
LnZhbHVlKCkudG9TdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpOworICAgICAgICBz
ZXBhcmF0b3IgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksIENTU1VuaXRUeXBlOjpTdHJpbmcpOwog
ICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlOwpAQCAtMjQw
Nyw3ICsyNDA3LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBl
cnNwZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLAogICAgIGF1dG8gcGVyc3BlY3Rp
dmUgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlKTsKICAgICBpZiAoIXBlcnNwZWN0aXZlIHx8ICpw
ZXJzcGVjdGl2ZSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKCpwZXJzcGVjdGl2ZSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7
CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKnBlcnNwZWN0aXZlLCBDU1NV
bml0VHlwZTo6UHgpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZVNj
cm9sbFNuYXBBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTMwMjEsNyArMzAy
MSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzCiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG9mZnNldDsKICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgb2Zmc2V0ID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgwLCBDU1NVbml0VHlwZTo6Q1NT
X1BYKTsKKyAgICAgICAgb2Zmc2V0ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVW
YWx1ZSgwLCBDU1NVbml0VHlwZTo6UHgpOwogICAgIGVsc2UgewogICAgICAgICBvZmZzZXQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKICAgICAgICAgaWYgKCFvZmZzZXQpCkBAIC0zNDM5
LDEwICszNDM5LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVH
cmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwKICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NW
YWx1ZU1pbkNvbnRlbnQsIENTU1ZhbHVlV2Via2l0TWluQ29udGVudCwgQ1NTVmFsdWVNYXhDb250
ZW50LCBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQsIENTU1ZhbHVlQXV0bz4odG9rZW4uaWQoKSkp
CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gRGltZW5zaW9uVG9rZW4gJiYgdG9rZW4udW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q1NTX0ZSKSB7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tl
bi51bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpGbGV4KSB7CiAgICAgICAgIGlmIChyYW5nZS5w
ZWVrKCkubnVtZXJpY1ZhbHVlKCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfRlIpOwor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NVbml0VHlwZTo6RmxleCk7CiAg
ICAgfQogICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiB9CkBAIC0zODI3LDcgKzM4MjcsNyBAQCBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQXNwZWN0UmF0aW8oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiAgICAgaWYgKChyaWdodFZhbHVlICYmICFzbGFzaFNlZW4pIHx8ICghcmln
aHRWYWx1ZSAmJiBzbGFzaFNlZW4pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
IXNsYXNoU2VlbiAmJiAhcmlnaHRWYWx1ZSkgLy8gQSBtaXNzaW5nIHJpZ2h0LWhhbmQgaXMgdHJl
YXRlZCBhcyAxLgotICAgICAgICByaWdodFZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSgxLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJpZ2h0
VmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDEsIENTU1VuaXRU
eXBlOjpOdW1iZXIpOwogICAgIGlmICghYXV0b1ZhbHVlKQogICAgICAgICBhdXRvVmFsdWUgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSk7CiAKQEAgLTQ4NDAsNyArNDg0MCw3IEBA
IGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVTeXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50
KQogICAgIAogICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9wZXJ0
eUZvbnQsIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygp
KSA/IENTU1ZhbHVlSXRhbGljIDogQ1NTVmFsdWVOb3JtYWwpKSwgaW1wb3J0YW50KTsKICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZm9udERl
c2NyaXB0aW9uLndlaWdodCgpKSksIGltcG9ydGFudCk7Ci0gICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250U2l6ZSwgQ1NTUHJvcGVydHlGb250LCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZVZhbHVlKGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIENTU1VuaXRUeXBl
OjpDU1NfUFgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNp
emUsIENTU1Byb3BlcnR5Rm9udCwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZShmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCBDU1NVbml0VHlwZTo6UHgpLCBpbXBv
cnRhbnQpOwogICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYW1pbHlMaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvbnRGYW1pbHlMaXN0LT5hcHBlbmQo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVGb250RmFtaWx5VmFsdWUoZm9udERlc2Ny
aXB0aW9uLmZhbWlseUF0KDApLCBGcm9tU3lzdGVtRm9udElEOjpZZXMpKTsKICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIENTU1Byb3BlcnR5Rm9udCwgV1RGTW92ZShmb250
RmFtaWx5TGlzdCksIGltcG9ydGFudCk7CkBAIC01MTMyLDcgKzUxMzIsNyBAQCBib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lRmxleChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChmbGV4U2hyaW5rID09IHVuc2V0VmFsdWUpCiAgICAgICAgICAgICAgICAgICAg
IGZsZXhTaHJpbmsgPSAqbnVtYmVyOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEqbnVtYmVy
KSAvLyBmbGV4IG9ubHkgYWxsb3dzIGEgYmFzaXMgb2YgMCAoc2FucyB1bml0cykgaWYgZmxleC1n
cm93IGFuZCBmbGV4LXNocmluayB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LgotICAgICAg
ICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFmbGV4QmFzaXMpIHsKQEAgLTUxNTYsMTMgKzUxNTYsMTMgQEAgYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIC8vIGlm
IHR1cm5lZCBiYWNrIG9uIGZvciBuZXN0ZWQgY29sdW1ucywgZXRjLikuIFdlIGhhdmUgbGF5b3V0
IHRlc3QgY292ZXJhZ2Ugb2YgYm90aAogICAgICAgICAvLyBzY2VuYXJpb3MuCiAgICAgICAgIGlm
ICghZmxleEJhc2lzKQotICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAgZmxl
eEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6UGVyY2Vu
dGFnZSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhHcm93LCBDU1NQcm9wZXJ0
eUZsZXgsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleEdyb3cp
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiksIGltcG9ydGFudCk7Ci0gICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlGbGV4U2hyaW5rLCBDU1NQcm9wZXJ0eUZsZXgsIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleFNocmluayksIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhHcm93LCBD
U1NQcm9wZXJ0eUZsZXgsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4o
ZmxleEdyb3cpLCBDU1NVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1Byb3BlcnR5RmxleCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4U2hyaW5rKSwgQ1NTVW5pdFR5cGU6Ok51
bWJlciksIGltcG9ydGFudCk7CiAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4QmFzaXMs
IENTU1Byb3BlcnR5RmxleCwgZmxleEJhc2lzLnJlbGVhc2VOb25OdWxsKCksIGltcG9ydGFudCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggNzM2YjJlOTI0NTVjMjFmZWRl
ZmU5MGE4NTIxZTYzODRiNzUyODMyNy4uOTM3OWU5NzhjMTllZTgxMDk0YjRjNzcwMjUzY2Q4MjRi
ZjQ4ZDdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKLSAgICAgICAgcmV0dXJuIG1fcG9vbC5jcmVhdGVW
YWx1ZShzdGQ6OnJvdW5kKHN0ZDo6bWF4KG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCBtaW5p
bXVtVmFsdWUpKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4gbV9w
b29sLmNyZWF0ZVZhbHVlKHN0ZDo6cm91bmQoc3RkOjptYXgobV9jYWxjVmFsdWUtPmRvdWJsZVZh
bHVlKCksIG1pbmltdW1WYWx1ZSkpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBzdGQ6Om9wdGlvbmFsPEludFR5cGU+IGNvbnN1
bWVJbnRlZ2VyVHlwZVJhdyhkb3VibGUgbWluaW11bVZhbHVlKQpAQCAtMTY4LDcgKzE2OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKLSAgICAgICAgcmV0dXJu
IG1fcG9vbC5jcmVhdGVWYWx1ZShtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4gbV9wb29sLmNyZWF0ZVZhbHVlKG1fY2Fs
Y1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICB9CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdygpCkBAIC0yNjMsNyArMjYz
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50VHlwZT4gc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUludGVnZXJUeXBlQ1MKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5
cGUoKSA9PSBGdW5jdGlvblRva2VuKTsKIAogICAgIGlmIChhdXRvIGludGVnZXIgPSBjb25zdW1l
SW50ZWdlclR5cGVSYXdXaXRoS25vd25Ub2tlblR5cGVGdW5jdGlvbjxJbnRUeXBlPihyYW5nZSwg
bWluaW11bVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoKmludGVnZXIs
IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFs
dWUoKmludGVnZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCkBAIC0yNzIsNyArMjcyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50VHlwZT4gc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXJUeXBlQ1MKICAgICBBU1NF
UlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbik7CiAKICAgICBpZiAoYXV0byBp
bnRlZ2VyID0gY29uc3VtZUludGVnZXJUeXBlUmF3V2l0aEtub3duVG9rZW5UeXBlTnVtYmVyPElu
dFR5cGU+KHJhbmdlLCBtaW5pbXVtVmFsdWUpKQotICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVW
YWx1ZSgqaW50ZWdlciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4g
cG9vbC5jcmVhdGVWYWx1ZSgqaW50ZWdlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXdXaXRoS25vd25Ub2tlblR5cGVJZGVudChDU1NQYXJz
ZXJUbwogCiAgICAgaWYgKGF1dG8gdmFyaWFibGUgPSBzeW1ib2xUYWJsZS5nZXQocmFuZ2UucGVl
aygpLmlkKCkpKSB7CiAgICAgICAgIHN3aXRjaCAodmFyaWFibGUtPnR5cGUpIHsKLSAgICAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjoKKyAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6
TnVtYmVyOgogICAgICAgICAgICAgaWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUgPSB2YWxpZGF0ZWRO
dW1iZXJSYXcodmFyaWFibGUtPnZhbHVlLCB2YWx1ZVJhbmdlKSkgewogICAgICAgICAgICAgICAg
IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbGlkYXRlZFZhbHVlOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXdXaXRoS25vd25Ub2tlblR5cGVJZGVudChDU1NQ
YXJzZXJUCiAKICAgICBpZiAoYXV0byB2YXJpYWJsZSA9IHN5bWJvbFRhYmxlLmdldChyYW5nZS5w
ZWVrKCkuaWQoKSkpIHsKICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+dHlwZSkgewotICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKKyAgICAgICAgY2FzZSBDU1NVbml0
VHlwZTo6UGVyY2VudGFnZToKICAgICAgICAgICAgIGlmIChhdXRvIHZhbGlkYXRlZFZhbHVlID0g
dmFsaWRhdGVkUGVyY2VudFJhdyh2YXJpYWJsZS0+dmFsdWUsIHZhbHVlUmFuZ2UpKSB7CiAgICAg
ICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGVkVmFsdWU7CkBAIC00MTYsNyArNDE2LDcgQEAgc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcmNlbnRDU1NQcmltaXRpdmVWYWx1
ZVdpdGhDYWxjV2l0aEtub3cKIAogICAgIGlmIChhdXRvIHZhbGlkYXRlZFZhbHVlID0gdmFsaWRh
dGVkUGVyY2VudFJhdyhyYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCksIHZhbHVlUmFuZ2UpKSB7
CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJl
dHVybiBwb29sLmNyZWF0ZVZhbHVlKCp2YWxpZGF0ZWRWYWx1ZSwgQ1NTVW5pdFR5cGU6OkNTU19Q
RVJDRU5UQUdFKTsKKyAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoKnZhbGlkYXRlZFZh
bHVlLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQpAQCAtNDQ4LDI3ICs0NDgsMjcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoUmF3
PiBjb25zdW1lTGVuZ3RoUmF3V2l0aEtub3duVG9rZW5UeXBlRGltZW5zaW9uKENTU1AKIAogICAg
IGF1dG8gdW5pdFR5cGUgPSB0b2tlbi51bml0VHlwZSgpOwogICAgIHN3aXRjaCAodW5pdFR5cGUp
IHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpRdWlya3lFbXM6CiAgICAgICAgIGlmIChwYXJzZXJNb2RlICE9IFVBU2hlZXRNb2Rl
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkVNUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19STEhTOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19N
TToKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSU46Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BUOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVlc6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgotICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19WTUlOOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgotICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpSZW1zOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkxoczoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpSbGhzOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNoczoKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpFeHM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHg6CisgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgY2FzZSBDU1NVbml0VHlwZTo6TW06CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6SW46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UHQ6CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6UGM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdl
V2lkdGg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0Ogor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlZpZXdwb3J0UGVyY2VudGFnZU1pbjoKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UToKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGhSYXc+
IGNvbnN1bWVMZW5ndGhSYXdXaXRoS25vd25Ub2tlblR5cGVOdW1iZXIoQ1NTUGFycwogCiAgICAg
aWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUgPSB2YWxpZGF0ZWRMZW5ndGhSYXcodG9rZW4ubnVtZXJp
Y1ZhbHVlKCksIHZhbHVlUmFuZ2UpKSB7CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJldHVybiB7IHsgQ1NTVW5pdFR5cGU6OkNTU19QWCwgKnZh
bGlkYXRlZFZhbHVlIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBDU1NVbml0VHlwZTo6UHgsICp2
YWxpZGF0ZWRWYWx1ZSB9IH07CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CkBA
IC01NDEsMTAgKzU0MSwxMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBbmdsZVJhdz4gY29uc3Vt
ZUFuZ2xlUmF3V2l0aEtub3duVG9rZW5UeXBlRGltZW5zaW9uKENTU1BhcgogCiAgICAgYXV0byB1
bml0VHlwZSA9IHJhbmdlLnBlZWsoKS51bml0VHlwZSgpOwogICAgIHN3aXRjaCAodW5pdFR5cGUp
IHsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfREVHOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19SQUQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0dSQUQ6Ci0gICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1RVUk46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlJhZDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpHcmFkOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OlR1cm46CiAgICAgICAgIHJldHVybiB7IHsgdW5pdFR5cGUsIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkgfSB9OwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4LDcgKzU1OCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEFuZ2xlUmF3PiBjb25zdW1lQW5nbGVSYXdXaXRoS25vd25Ub2tlblR5cGVOdW1iZXIoQ1NT
UGFyc2VyCiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gTnVtYmVyVG9rZW4pOwog
CiAgICAgaWYgKHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUocmFuZ2UucGVlaygpLm51bWVyaWNW
YWx1ZSgpLCBwYXJzZXJNb2RlLCB1bml0bGVzcywgdW5pdGxlc3NaZXJvKSkKLSAgICAgICAgcmV0
dXJuIHsgeyBDU1NVbml0VHlwZTo6Q1NTX0RFRywgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS5udW1lcmljVmFsdWUoKSB9IH07CisgICAgICAgIHJldHVybiB7IHsgQ1NTVW5pdFR5
cGU6OkRlZywgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUo
KSB9IH07CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtNjA4LDcgKzYwOCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVUaW1lQ1NTUHJpbWl0aXZl
VmFsdWVXaXRoQ2FsY1dpdGhLbm93blRvCiAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5n
ZTo6Tm9uTmVnYXRpdmUgJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpIDwgMCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoYXV0byB1bml0ID0gcmFuZ2UucGVlaygpLnVu
aXRUeXBlKCk7IHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19NUyB8fCB1bml0ID09IENTU1VuaXRU
eXBlOjpDU1NfUykKKyAgICBpZiAoYXV0byB1bml0ID0gcmFuZ2UucGVlaygpLnVuaXRUeXBlKCk7
IHVuaXQgPT0gQ1NTVW5pdFR5cGU6Ok1zIHx8IHVuaXQgPT0gQ1NTVW5pdFR5cGU6OlNlY29uZCkK
ICAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdW5pdCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTYyMSw3ICs2MjEsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25z
dW1lVGltZUNTU1ByaW1pdGl2ZVZhbHVlV2l0aENhbGNXaXRoS25vd25UbwogICAgIGlmICh1bml0
bGVzcyA9PSBVbml0bGVzc1F1aXJrOjpBbGxvdyAmJiBzaG91bGRBY2NlcHRVbml0bGVzc1ZhbHVl
KHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWUoKSwgcGFyc2VyTW9kZSwgdW5pdGxlc3MsIFVuaXRs
ZXNzWmVyb1F1aXJrOjpBbGxvdykpIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUgJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpIDwgMCkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1
ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NV
bml0VHlwZTo6Q1NTX01TKTsKKyAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUocmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTVW5pdFR5cGU6
Ok1zKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC02MzIsMTAgKzYzMiwxMCBA
QCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUmVzb2x1dGlvbkNTU1By
aW1pdGl2ZVZhbHVlV2l0aEtub3duVG9rZQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlw
ZSgpID09IERpbWVuc2lvblRva2VuKTsKIAotICAgIGlmIChhdXRvIHVuaXQgPSByYW5nZS5wZWVr
KCkudW5pdFR5cGUoKTsgdW5pdCA9PSBDU1NVbml0VHlwZTo6Q1NTX0RQUFggfHwgdW5pdCA9PSBD
U1NVbml0VHlwZTo6Q1NTX0RQSSB8fCB1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfRFBDTSkKKyAg
ICBpZiAoYXV0byB1bml0ID0gcmFuZ2UucGVlaygpLnVuaXRUeXBlKCk7IHVuaXQgPT0gQ1NTVW5p
dFR5cGU6OkRvdHNQZXJQaXhlbCB8fCB1bml0ID09IENTU1VuaXRUeXBlOjpEb3RzUGVySW5jaCB8
fCB1bml0ID09IENTU1VuaXRUeXBlOjpEb3RzUGVyQ2VudGltZXRlcikKICAgICAgICAgcmV0dXJu
IHBvb2wuY3JlYXRlVmFsdWUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSwgdW5pdCk7CiAgICAgaWYgKGFsbG93WCA9PSBBbGxvd1hSZXNvbHV0aW9uVW5p
dDo6QWxsb3cgJiYgcmFuZ2UucGVlaygpLnVuaXRTdHJpbmcoKSA9PSAieCIpCi0gICAgICAgIHJl
dHVybiBwb29sLmNyZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
bnVtZXJpY1ZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfRFBQWCk7CisgICAgICAgIHJldHVybiBw
b29sLmNyZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJp
Y1ZhbHVlKCksIENTU1VuaXRUeXBlOjpEb3RzUGVyUGl4ZWwpOwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC0xMDk0LDE0ICsxMDk0LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gY29uc3VtZUFuZ2xlUmF3T3JOdW1iZXJSYXdBbGxvd2luZ1N5bWJvbFRhYmxlSWRlbnQoCiAg
ICAgY2FzZSBJZGVudFRva2VuOgogICAgICAgICBpZiAoYXV0byB2YXJpYWJsZSA9IHN5bWJvbFRh
YmxlLmdldCh0b2tlbi5pZCgpKSkgewogICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+dHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0RFRzoKLSAgICAgICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6Ci0gICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfR1JBRDoKLSAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19UVVJOOgorICAg
ICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6RGVnOgorICAgICAgICAgICAgY2FzZSBDU1NVbml0
VHlwZTo6UmFkOgorICAgICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6R3JhZDoKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlR1cm46CiAgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKHZhcmlhYmxlLT50eXBlLCB2YXJpYWJsZS0+dmFsdWUp
OwogCi0gICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgorICAgICAgICAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgogICAgICAgICAgICAgICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
LT52YWx1ZTsKIApAQCAtMTE4NSwxNCArMTE4NSwxNCBAQCBzdGF0aWMgYXV0byBjb25zdW1lTnVt
YmVyUmF3T3JQZXJjZW50UmF3QWxsb3dpbmdTeW1ib2xUYWJsZUlkZW50KENTU1BhcnNlclRva2Vu
UgogICAgIGNhc2UgSWRlbnRUb2tlbjoKICAgICAgICAgaWYgKGF1dG8gdmFyaWFibGUgPSBzeW1i
b2xUYWJsZS5nZXQocmFuZ2UucGVlaygpLmlkKCkpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHZh
cmlhYmxlLT50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VO
VEFHRToKKyAgICAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U6CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gdmFsaWRhdGVkVmFsdWUgPSB2YWxpZGF0ZWRQZXJjZW50UmF3KHZh
cmlhYmxlLT52YWx1ZSwgdmFsdWVSYW5nZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHBlcmNlbnRUcmFuZm9ybWVyKCp2YWxpZGF0ZWRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSOgorICAgICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6TnVtYmVyOgogICAgICAg
ICAgICAgICAgIGlmIChhdXRvIHZhbGlkYXRlZFZhbHVlID0gdmFsaWRhdGVkTnVtYmVyUmF3KHZh
cmlhYmxlLT52YWx1ZSwgdmFsdWVSYW5nZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bWJlclRyYW5mb3JtZXIoKnZhbGlkYXRlZFZhbHVlKTsKQEAgLTEyNzEsNyArMTI3MSw3IEBA
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVG
b250V2VpZ2h0TnVtYmVyV29ya2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
VmFsdWVQb29sJiBwb29sKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2Vp
Z2h0TnVtYmVyUmF3KHJhbmdlKSkKLSAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoKnJl
c3VsdCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICByZXR1cm4gcG9vbC5jcmVh
dGVWYWx1ZSgqcmVzdWx0LCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtMTMyMCw3ICsxMzIwLDcgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lU3RyaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShyYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgQ1NTVW5pdFR5
cGU6OkNTU19TVFJJTkcpOworICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0
cmluZygpLCBDU1NVbml0VHlwZTo6U3RyaW5nKTsKIH0KIAogU3RyaW5nVmlldyBjb25zdW1lVXJs
QXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMTM1MCw3ICsxMzUw
LDcgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVXJsKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogICAgIFN0cmluZ1ZpZXcgdXJsID0gY29uc3VtZVVybEFzU3RyaW5nVmll
dyhyYW5nZSk7CiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodXJsLnRv
U3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh1cmwudG9TdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OlVS
SSk7CiB9CiAKIHN0YXRpYyBDb2xvciBjb25zdW1lT3JpZ2luQ29sb3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKQEAgLTE0NjYsMTAg
KzE0NjYsMTAgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMKICAgICBhdXRvIG9yaWdpbkNvbG9y
QXNTUkdCID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxTUkdCQTxmbG9hdD4+KCk7CiAK
ICAgICBDU1NDYWxjU3ltYm9sVGFibGUgc3ltYm9sVGFibGUgewotICAgICAgICB7IENTU1ZhbHVl
UiwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzU1JHQi5yZWQgKiAx
MDAuMCB9LAotICAgICAgICB7IENTU1ZhbHVlRywgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdF
LCBvcmlnaW5Db2xvckFzU1JHQi5ncmVlbiAqIDEwMC4wIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVC
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNTUkdCLmJsdWUgKiAx
MDAuMCB9LAotICAgICAgICB7IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VO
VEFHRSwgb3JpZ2luQ29sb3JBc1NSR0IuYWxwaGEgKiAxMDAuMCB9CisgICAgICAgIHsgQ1NTVmFs
dWVSLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc1NSR0IucmVkICogMTAw
LjAgfSwKKyAgICAgICAgeyBDU1NWYWx1ZUcsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmln
aW5Db2xvckFzU1JHQi5ncmVlbiAqIDEwMC4wIH0sCisgICAgICAgIHsgQ1NTVmFsdWVCLCBDU1NV
bml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc1NSR0IuYmx1ZSAqIDEwMC4wIH0sCisg
ICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNv
bG9yQXNTUkdCLmFscGhhICogMTAwLjAgfQogICAgIH07CiAKICAgICBhdXRvIHJlZCA9IGNvbnN1
bWVSZWxhdGl2ZVJHQkNvbXBvbmVudChhcmdzLCBzeW1ib2xUYWJsZSk7CkBAIC0xNTk0LDEwICsx
NTk0LDEwIEBAIHN0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzCiAgICAgYXV0byBvcmlnaW5Db2xvckFz
SFNMID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxIU0xBPGZsb2F0Pj4oKTsKIAogICAg
IENTU0NhbGNTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFsdWVILCBD
U1NVbml0VHlwZTo6Q1NTX0RFRywgb3JpZ2luQ29sb3JBc0hTTC5odWUgfSwKLSAgICAgICAgeyBD
U1NWYWx1ZVMsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc0hTTC5z
YXR1cmF0aW9uIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVMLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNF
TlRBR0UsIG9yaWdpbkNvbG9yQXNIU0wubGlnaHRuZXNzIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVB
bHBoYSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzSFNMLmFscGhh
ICogMTAwLjAgfQorICAgICAgICB7IENTU1ZhbHVlSCwgQ1NTVW5pdFR5cGU6OkRlZywgb3JpZ2lu
Q29sb3JBc0hTTC5odWUgfSwKKyAgICAgICAgeyBDU1NWYWx1ZVMsIENTU1VuaXRUeXBlOjpQZXJj
ZW50YWdlLCBvcmlnaW5Db2xvckFzSFNMLnNhdHVyYXRpb24gfSwKKyAgICAgICAgeyBDU1NWYWx1
ZUwsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xvckFzSFNMLmxpZ2h0bmVzcyB9
LAorICAgICAgICB7IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmln
aW5Db2xvckFzSFNMLmFscGhhICogMTAwLjAgfQogICAgIH07CiAKICAgICBhdXRvIGh1ZSA9IGNv
bnN1bWVBbmdsZVJhd09yTnVtYmVyUmF3QWxsb3dpbmdTeW1ib2xUYWJsZUlkZW50KGFyZ3MsIHN5
bWJvbFRhYmxlLCBjb250ZXh0Lm1vZGUpOwpAQCAtMTczMywxMCArMTczMywxMCBAQCBzdGF0aWMg
Q29sb3IgcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgY29uc3QgQ1NTUGFycwogICAgIGF1dG8gb3JpZ2luQ29sb3JBc0hXQiA9IG9yaWdpbkNvbG9y
LnRvQ29sb3JUeXBlTG9zc3k8SFdCQTxmbG9hdD4+KCk7CiAKICAgICBDU1NDYWxjU3ltYm9sVGFi
bGUgc3ltYm9sVGFibGUgewotICAgICAgICB7IENTU1ZhbHVlSCwgQ1NTVW5pdFR5cGU6OkNTU19E
RUcsIG9yaWdpbkNvbG9yQXNIV0IuaHVlIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVXLCBDU1NVbml0
VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNIV0Iud2hpdGVuZXNzIH0sCi0gICAg
ICAgIHsgQ1NTVmFsdWVCLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9y
QXNIV0IuYmxhY2tuZXNzIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzSFdCLmFscGhhICogMTAwLjAgfQorICAgICAg
ICB7IENTU1ZhbHVlSCwgQ1NTVW5pdFR5cGU6OkRlZywgb3JpZ2luQ29sb3JBc0hXQi5odWUgfSwK
KyAgICAgICAgeyBDU1NWYWx1ZVcsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5Db2xv
ckFzSFdCLndoaXRlbmVzcyB9LAorICAgICAgICB7IENTU1ZhbHVlQiwgQ1NTVW5pdFR5cGU6OlBl
cmNlbnRhZ2UsIG9yaWdpbkNvbG9yQXNIV0IuYmxhY2tuZXNzIH0sCisgICAgICAgIHsgQ1NTVmFs
dWVBbHBoYSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNvbG9yQXNIV0IuYWxwaGEg
KiAxMDAuMCB9CiAgICAgfTsKIAogICAgIGF1dG8gaHVlQ29uc3VtZXIgPSBbJnN5bWJvbFRhYmxl
LCAmY29udGV4dF0oYXV0byYgYXJncykgeyByZXR1cm4gY29uc3VtZUFuZ2xlUmF3T3JOdW1iZXJS
YXdBbGxvd2luZ1N5bWJvbFRhYmxlSWRlbnQoYXJncywgc3ltYm9sVGFibGUsIGNvbnRleHQubW9k
ZSk7IH07CkBAIC0xODA4LDEwICsxODA4LDEwIEBAIHN0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZl
TGFiUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzCiAg
ICAgYXV0byBvcmlnaW5Db2xvckFzTGFiID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxM
YWI8ZmxvYXQ+PigpOwogCiAgICAgQ1NTQ2FsY1N5bWJvbFRhYmxlIHN5bWJvbFRhYmxlIHsKLSAg
ICAgICAgeyBDU1NWYWx1ZUwsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29s
b3JBc0xhYi5saWdodG5lc3MgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUEsIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSLCBvcmlnaW5Db2xvckFzTGFiLmEgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUIsIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSLCBvcmlnaW5Db2xvckFzTGFiLmIgfSwKLSAgICAgICAgeyBD
U1NWYWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNM
YWIuYWxwaGEgKiAxMDAuMCB9CisgICAgICAgIHsgQ1NTVmFsdWVMLCBDU1NVbml0VHlwZTo6UGVy
Y2VudGFnZSwgb3JpZ2luQ29sb3JBc0xhYi5saWdodG5lc3MgfSwKKyAgICAgICAgeyBDU1NWYWx1
ZUEsIENTU1VuaXRUeXBlOjpOdW1iZXIsIG9yaWdpbkNvbG9yQXNMYWIuYSB9LAorICAgICAgICB7
IENTU1ZhbHVlQiwgQ1NTVW5pdFR5cGU6Ok51bWJlciwgb3JpZ2luQ29sb3JBc0xhYi5iIH0sCisg
ICAgICAgIHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNv
bG9yQXNMYWIuYWxwaGEgKiAxMDAuMCB9CiAgICAgfTsKIAogICAgIGF1dG8gbGlnaHRuZXNzQ29u
c3VtZXIgPSBbJnN5bWJvbFRhYmxlXShhdXRvJiBhcmdzKSB7IHJldHVybiBjb25zdW1lUGVyY2Vu
dEFsbG93aW5nU3ltYm9sVGFibGVJZGVudChhcmdzLCBzeW1ib2xUYWJsZSk7IH07CkBAIC0xODg1
LDEwICsxODg1LDEwIEBAIHN0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlTENIUGFyYW1ldGVycyhD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzCiAgICAgYXV0byBvcmlnaW5D
b2xvckFzTENIID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxMQ0hBPGZsb2F0Pj4oKTsK
IAogICAgIENTU0NhbGNTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZSB7Ci0gICAgICAgIHsgQ1NTVmFs
dWVMLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UsIG9yaWdpbkNvbG9yQXNMQ0gubGlnaHRu
ZXNzIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVDLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiwgb3Jp
Z2luQ29sb3JBc0xDSC5jaHJvbWEgfSwKLSAgICAgICAgeyBDU1NWYWx1ZUgsIENTU1VuaXRUeXBl
OjpDU1NfREVHLCBvcmlnaW5Db2xvckFzTENILmh1ZSB9LAotICAgICAgICB7IENTU1ZhbHVlQWxw
aGEsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc0xDSC5hbHBoYSAq
IDEwMC4wIH0KKyAgICAgICAgeyBDU1NWYWx1ZUwsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBv
cmlnaW5Db2xvckFzTENILmxpZ2h0bmVzcyB9LAorICAgICAgICB7IENTU1ZhbHVlQywgQ1NTVW5p
dFR5cGU6Ok51bWJlciwgb3JpZ2luQ29sb3JBc0xDSC5jaHJvbWEgfSwKKyAgICAgICAgeyBDU1NW
YWx1ZUgsIENTU1VuaXRUeXBlOjpEZWcsIG9yaWdpbkNvbG9yQXNMQ0guaHVlIH0sCisgICAgICAg
IHsgQ1NTVmFsdWVBbHBoYSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UsIG9yaWdpbkNvbG9yQXNM
Q0guYWxwaGEgKiAxMDAuMCB9CiAgICAgfTsKIAogICAgIGF1dG8gbGlnaHRuZXNzQ29uc3VtZXIg
PSBbJnN5bWJvbFRhYmxlXShhdXRvJiBhcmdzKSB7IHJldHVybiBjb25zdW1lUGVyY2VudEFsbG93
aW5nU3ltYm9sVGFibGVJZGVudChhcmdzLCBzeW1ib2xUYWJsZSk7IH07CkBAIC0xOTYxLDEwICsx
OTYxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIENvbG9yIHBhcnNl
UmVsYXRpdmVDb2xvckZ1bmN0aW9uRm9yUkdCVHlwZXMoCiAgICAgYXV0byBvcmlnaW5Db2xvckFz
Q29sb3JUeXBlID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCk7CiAK
ICAgICBDU1NDYWxjU3ltYm9sVGFibGUgc3ltYm9sVGFibGUgewotICAgICAgICB7IENTU1ZhbHVl
UiwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzQ29sb3JUeXBlLnJl
ZCAqIDEwMC4wIH0sCi0gICAgICAgIHsgQ1NTVmFsdWVHLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNF
TlRBR0UsIG9yaWdpbkNvbG9yQXNDb2xvclR5cGUuZ3JlZW4gKiAxMDAuMCB9LAotICAgICAgICB7
IENTU1ZhbHVlQiwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCBvcmlnaW5Db2xvckFzQ29s
b3JUeXBlLmJsdWUgKiAxMDAuMCB9LAotICAgICAgICB7IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3JpZ2luQ29sb3JBc0NvbG9yVHlwZS5hbHBoYSAqIDEwMC4w
IH0KKyAgICAgICAgeyBDU1NWYWx1ZVIsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlLCBvcmlnaW5D
b2xvckFzQ29sb3JUeXBlLnJlZCAqIDEwMC4wIH0sCisgICAgICAgIHsgQ1NTVmFsdWVHLCBDU1NV
bml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc0NvbG9yVHlwZS5ncmVlbiAqIDEwMC4w
IH0sCisgICAgICAgIHsgQ1NTVmFsdWVCLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2lu
Q29sb3JBc0NvbG9yVHlwZS5ibHVlICogMTAwLjAgfSwKKyAgICAgICAgeyBDU1NWYWx1ZUFscGhh
LCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29sb3JBc0NvbG9yVHlwZS5hbHBoYSAq
IDEwMC4wIH0KICAgICB9OwogCiAgICAgYXV0byBjb25zdW1lUkdCID0gWyZzeW1ib2xUYWJsZV0o
YXV0byYgYXJncykgeyByZXR1cm4gY29uc3VtZU51bWJlclJhd09yUGVyY2VudERpdmlkZWRCeTEw
MFJhd0FsbG93aW5nU3ltYm9sVGFibGVJZGVudChhcmdzLCBzeW1ib2xUYWJsZSwgVmFsdWVSYW5n
ZTo6QWxsKTsgfTsKQEAgLTIwMjIsMTAgKzIwMjIsMTAgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVs
YXRpdmVDb2xvckZ1bmN0aW9uRm9yWFlaUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmcKICAgICBhdXRvIG9yaWdpbkNvbG9yQXNYWVogPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxv
c3N5PFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4+KCk7CiAKICAgICBDU1NDYWxjU3ltYm9s
VGFibGUgc3ltYm9sVGFibGUgewotICAgICAgICB7IENTU1ZhbHVlWCwgQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIsIG9yaWdpbkNvbG9yQXNYWVoueCB9LAotICAgICAgICB7IENTU1ZhbHVlWSwgQ1NT
VW5pdFR5cGU6OkNTU19OVU1CRVIsIG9yaWdpbkNvbG9yQXNYWVoueSB9LAotICAgICAgICB7IENT
U1ZhbHVlWiwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIsIG9yaWdpbkNvbG9yQXNYWVoueiB9LAot
ICAgICAgICB7IENTU1ZhbHVlQWxwaGEsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSwgb3Jp
Z2luQ29sb3JBc1hZWi5hbHBoYSAqIDEwMC4wIH0KKyAgICAgICAgeyBDU1NWYWx1ZVgsIENTU1Vu
aXRUeXBlOjpOdW1iZXIsIG9yaWdpbkNvbG9yQXNYWVoueCB9LAorICAgICAgICB7IENTU1ZhbHVl
WSwgQ1NTVW5pdFR5cGU6Ok51bWJlciwgb3JpZ2luQ29sb3JBc1hZWi55IH0sCisgICAgICAgIHsg
Q1NTVmFsdWVaLCBDU1NVbml0VHlwZTo6TnVtYmVyLCBvcmlnaW5Db2xvckFzWFlaLnogfSwKKyAg
ICAgICAgeyBDU1NWYWx1ZUFscGhhLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSwgb3JpZ2luQ29s
b3JBc1hZWi5hbHBoYSAqIDEwMC4wIH0KICAgICB9OwogCiAgICAgYXV0byBjb25zdW1lWFlaID0g
WyZzeW1ib2xUYWJsZV0oYXV0byYgYXJncykgeyByZXR1cm4gY29uc3VtZU51bWJlckFsbG93aW5n
U3ltYm9sVGFibGVJZGVudChhcmdzLCBzeW1ib2xUYWJsZSk7IH07CkBAIC0yNzcxLDExICsyNzcx
LDExIEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVk
R3JhZGllbnRQb2ludChDU1NQYXJzZXJUb2tlblJhCiB7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7CiAgICAgICAgIGlmICgoaG9yaXpvbnRhbCAmJiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVMZWZ0PihhcmdzKSkgfHwgKCFob3Jpem9udGFsICYmIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZVRvcD4oYXJncykpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoMC4sIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7
CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1
ZSgwLiwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBpZiAoKGhvcml6b250YWwg
JiYgY29uc3VtZUlkZW50PENTU1ZhbHVlUmlnaHQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYg
Y29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tPihhcmdzKSkpCi0gICAgICAgICAgICByZXR1cm4g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgxMDAuLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUoMTAwLiwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAg
ICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQ2VudGVyPihhcmdzKSkKLSAgICAgICAgICAgIHJl
dHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDUwLiwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKDUwLiwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByZXN1bHQgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlOjpBbGwpOwpAQCAtMjgx
Myw3ICsyODEzLDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9y
U3RvcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3IKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBzdG9wLnBvc2l0aW9uID0gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVWYWx1ZShwb3NpdGlvbiwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwor
ICAgIHN0b3AucG9zaXRpb24gPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVl
KHBvc2l0aW9uLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICBzdG9wLmNvbG9yID0gY29uc3Vt
ZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xvcihhcmdzLCBjb250ZXh0KTsKICAgICByZXR1cm4g
c3RvcC5jb2xvciAmJiBhcmdzLmF0RW5kKCk7CiB9CkBAIC0zMTU2LDcgKzMxNTYsNyBAQCBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ3Jvc3NGYWRlKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcgogICAgIGF1dG8gcGVyY2VudGFnZSA9IGNvbnN1bWVOdW1iZXJS
YXdPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcoYXJncyk7CiAgICAgaWYgKCFwZXJjZW50YWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBlcmNlbnRhZ2VWYWx1ZSA9IENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoY2xhbXBUbzxkb3VibGU+KCpwZXJjZW50
YWdlLCAwLCAxKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgIGF1dG8gcGVyY2VudGFn
ZVZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShjbGFtcFRvPGRv
dWJsZT4oKnBlcmNlbnRhZ2UsIDAsIDEpLCBDU1NVbml0VHlwZTo6TnVtYmVyKTsKICAgICByZXR1
cm4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZShmcm9tSW1hZ2VWYWx1ZS5yZWxlYXNlTm9uTnVs
bCgpLCB0b0ltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShwZXJjZW50YWdlVmFs
dWUpLCBwcmVmaXhlZCk7CiB9CiAKQEAgLTM0MDYsNyArMzQwNiw3IEBAIHN0YXRpYyBSZWZQdHI8
Q1NTRnVuY3Rpb25WYWx1ZT4gY29uc3VtZUZpbHRlckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlCiAgICAgICAgICAgICAgICAgYm9vbCBpc1BlcmNlbnRhZ2UgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnBhcnNlZFZhbHVlKS5pc1BlcmNlbnRhZ2UoKTsKICAgICAgICAg
ICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2VudGFnZSA/IDEwMC4wIDogMS4wOwog
ICAgICAgICAgICAgICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnBhcnNlZFZh
bHVlKS5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkKLSAgICAgICAgICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1heEFsbG93ZWQsIGlzUGVyY2Vu
dGFnZSA/IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSA6IENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG1heEFsbG93ZWQsIGlzUGVyY2VudGFnZSA/IENTU1VuaXRUeXBlOjpQZXJjZW50
YWdlIDogQ1NTVW5pdFR5cGU6Ok51bWJlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyV29ya2VyU2FmZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyV29ya2VyU2FmZS5jcHAKaW5kZXggYzllN2NjMTU3MjE4NjIwYjM2ZDBkMGI2ZTJiNmZi
YWE4NGM4MDc2Ny4uOTk1NzkxY2M4ODVjMDEwMWQyOWIzMDczMzMzODA5NTE2MDg2ZjI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtl
clNhZmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJXb3JrZXJTYWZlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIFJlZlB0cjxDU1NGb250U3R5bGVS
YW5nZVZhbHVlPiBjb25zdW1lRm9udFN0eWxlUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsCiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90IGFsbG93IHRoZSB1
bml0bGVzcyB6ZXJvLgogICAgIGlmIChhdXRvIGZpcnN0QW5nbGUgPSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVBbmdsZVdvcmtlclNhZmUocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHBv
b2wsIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6VW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OlVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdykpIHsKLSAgICAg
ICAgYXV0byBmaXJzdEFuZ2xlSW5EZWdyZWVzID0gZmlyc3RBbmdsZS0+ZG91YmxlVmFsdWUoQ1NT
VW5pdFR5cGU6OkNTU19ERUcpOworICAgICAgICBhdXRvIGZpcnN0QW5nbGVJbkRlZ3JlZXMgPSBm
aXJzdEFuZ2xlLT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6RGVnKTsKICAgICAgICAgaWYgKCFD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmlzRm9udFN0eWxlQW5nbGVJblJhbmdlKGZpcnN0QW5n
bGVJbkRlZ3JlZXMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChy
YW5nZS5hdEVuZCgpKSB7CkBAIC0zMDQsNyArMzA0LDcgQEAgUmVmUHRyPENTU0ZvbnRTdHlsZVJh
bmdlVmFsdWU+IGNvbnN1bWVGb250U3R5bGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwKICAgICAgICAgYXV0byBzZWNvbmRBbmdsZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Y29uc3VtZUFuZ2xlV29ya2VyU2FmZShyYW5nZSwgY3NzUGFyc2VyTW9kZSwgcG9vbCwgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpVbml0bGVzc1F1aXJrOjpGb3JiaWQsIENTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6VW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKICAgICAgICAgaWYgKCFzZWNv
bmRBbmdsZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvIHNlY29u
ZEFuZ2xlSW5EZWdyZWVzID0gc2Vjb25kQW5nbGUtPmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpD
U1NfREVHKTsKKyAgICAgICAgYXV0byBzZWNvbmRBbmdsZUluRGVncmVlcyA9IHNlY29uZEFuZ2xl
LT5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6RGVnKTsKICAgICAgICAgaWYgKCFDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmlzRm9udFN0eWxlQW5nbGVJblJhbmdlKHNlY29uZEFuZ2xlSW5EZWdy
ZWVzKSB8fCBmaXJzdEFuZ2xlSW5EZWdyZWVzID4gc2Vjb25kQW5nbGVJbkRlZ3JlZXMpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgYXV0byByZXN1bHQgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAppbmRleCA4NzZjOTliZDJlODA3OTgzNzhmOTU4NzMxZDQy
MzRhMjQ4ZjZiNmI4Li42MmQwYjRhNjIwMmY1ZjM1NzI0NjM2ZjhkYmMyZjc4MzNkNDBkZGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKQEAg
LTE5Nyw3ICsxOTcsNyBAQCB2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlQ29sb24o
Q1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlcgogCiB2b2lkIE1lZGlhUXVl
cnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFsdWUoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0g
ICAgaWYgKHR5cGUgPT0gRGltZW5zaW9uVG9rZW4gJiYgdG9rZW4udW5pdFR5cGUoKSA9PSBDU1NV
bml0VHlwZTo6Q1NTX1VOS05PV04pIHsKKyAgICBpZiAodHlwZSA9PSBEaW1lbnNpb25Ub2tlbiAm
JiB0b2tlbi51bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpVbmtub3duKSB7CiAgICAgICAgIHJh
bmdlLmNvbnN1bWUoKTsKICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwogICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmli
dXRlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQ
YXJzZXIuY3BwCmluZGV4IDY0OGI0OWEzOWY1OWFiZTg3N2MxYmE4NDlmMTU5Yzg4Mzg1MWE0ZmYu
LjI1ZDgwYTc2ZDI5ZWExY2I4ZmQ1ZmFhMWViZThjM2RmNWMzMjg2MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIGZsb2F0IFNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRlTGVuZ3RoKGRvdWJs
ZSB2YWx1ZSwgQ1NTVW5pdFR5cGUgdHlwZSwgY29uc3QKICAgICAvLyB0aGUgcG9pbnRlciB0byBp
dCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB1bml0IGV2YWx1YXRpb24uIFRoaXMgaXMgYWNjZXB0
aWJsZSBiZWNhdXNlIHRoZSBzdHlsZSBhbHdheXMgY29tZXMgZnJvbSB0aGUKICAgICAvLyBSZW5k
ZXJWaWV3LCB3aGljaCBoYXMgaXRzIGZvbnQgaW5mb3JtYXRpb24gaGFyZGNvZGVkIGluIHJlc29s
dmVGb3JEb2N1bWVudCgpIHRvIGJlIC13ZWJraXQtc3RhbmRhcmQsIHdob3NlIG9wZXJhdGlvbnMK
ICAgICAvLyBkb24ndCByZXF1aXJlIGEgZm9udCBzZWxlY3Rvci4KLSAgICBpZiAodHlwZSA9PSBD
U1NVbml0VHlwZTo6Q1NTX0VYUyB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpDU1NfQ0hTKSB7Cisg
ICAgaWYgKHR5cGUgPT0gQ1NTVW5pdFR5cGU6OkV4cyB8fCB0eXBlID09IENTU1VuaXRUeXBlOjpD
aHMpIHsKICAgICAgICAgUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yID0gc3R5bGUu
Zm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKICAgICAgICAgc3R5bGUuZm9udENhc2NhZGUo
KS51cGRhdGUobnVsbHB0cik7CiAgICAgICAgIGZsb2F0IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwgdHlwZSwgdmFs
dWUpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHVuc2lnbmVkIFNpemVzQXR0cmlidXRlUGFyc2VyOjpl
ZmZlY3RpdmVTaXplRGVmYXVsdFZhbHVlKCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVy
biBjbGFtcFRvPGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhE
b3VibGUoeyAmc3R5bGUsICZzdHlsZSwgcmVuZGVyZXItPnBhcmVudFN0eWxlKCksIHJlbmRlcmVy
IH0sIENTU1VuaXRUeXBlOjpDU1NfVlcsIDEwMC4wKSk7CisgICAgcmV0dXJuIGNsYW1wVG88Zmxv
YXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSh7ICZzdHls
ZSwgJnN0eWxlLCByZW5kZXJlci0+cGFyZW50U3R5bGUoKSwgcmVuZGVyZXIgfSwgQ1NTVW5pdFR5
cGU6OlZpZXdwb3J0UGVyY2VudGFnZVdpZHRoLCAxMDAuMCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9TdHlsZVBy
b3BlcnR5TWFwUmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vU3R5bGVQ
cm9wZXJ0eU1hcFJlYWRPbmx5LmNwcAppbmRleCAyYjYyYjgxNWI0ODljNGQ1ZjNiMWUyYzRmZmVj
ODRlN2MxMTBiYjg4Li5iZmUwMWY4YmQ3ZTJhYTRlOWE1OWE5OWY4MTY2NGY5MGRmMzEwMmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9TdHlsZVByb3BlcnR5TWFwUmVh
ZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1N0eWxlUHJvcGVydHlN
YXBSZWFkT25seS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVmUHRyPENTU1N0eWxlVmFsdWU+IFN0
eWxlUHJvcGVydHlNYXBSZWFkT25seTo6cmVpZnlWYWx1ZShDU1NWYWx1ZSogdmFsdWUsIERvY3UK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogUHJvcGVybHkgcmVpZnkg
YWxsIGxlbmd0aCB2YWx1ZXMuCi0gICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUp
ICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NVbml0VHlwZTo6Q1NTX1BYKQorICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTVW5pdFR5cGU6OlB4KQogICAgICAgICByZXR1cm4gQ1NTVW5pdFZhbHVlOjpjcmVh
dGUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUoKSwgInB4
Iik7CiAKICAgICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4oKnZhbHVlKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggNTIzN2NmYzBmOTU3NWQ0ZWNh
YWQzYjlhYTZhOTMzOGVjMDZjZGQ4Yy4uODk0OTMzMmMxYWQyYjk4YTUyZmRmODAxOTlmYTVmYTgz
YWI5NWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0
aXZlRm9udFN0eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICBjdXJy
ZW50Rm9udFNpemUgPSBjb21wdXRlZEZvbnRTaXplKG5vZGUuZ2V0KCkpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChjdXJyZW50Rm9udFNpemUgIT0gZGVzaXJlZEZvbnRTaXplKSB7Ci0gICAgICAg
ICAgICBpbmxpbmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShkZXNpcmVkRm9udFNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUFgpLCBmYWxzZSk7CisgICAgICAgICAgICBpbmxpbmVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVW
YWx1ZShkZXNpcmVkRm9udFNpemUsIENTU1VuaXRUeXBlOjpQeCksIGZhbHNlKTsKICAgICAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUoKmVsZW1lbnQsIHN0eWxlQXR0ciwgaW5saW5lU3R5bGUtPmFz
VGV4dCgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5saW5lU3R5bGUtPmlzRW1wdHkoKSkg
ewpAQCAtMTQ4Niw3ICsxNDg2LDcgQEAgZmxvYXQgQXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVk
Rm9udFNpemUoTm9kZSogbm9kZSkKICAgICBhdXRvIHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcihub2RlKS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnZhbHVlKS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHJl
dHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5mbG9hdFZhbHVlKENTU1Vu
aXRUeXBlOjpQeCk7CiB9CiAKIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmpvaW5DaGlsZFRleHRO
b2RlcyhOb2RlKiBub2RlLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBl
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggMWIwMzY4YWYx
ZDAyOTVjMTc3OTdhNGNhZTQ5YzE5MGJjNzY4MTQ0Yi4uZjY1MDMxZmMwODVhYmZjYjU0ZmNmZjg2
YmRmZjdkZTcwMmQ2YTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cApAQCAtMTkwOSw3ICsxOTA5LDcgQEAgc3RhdGljIGJvb2wgaXNDU1NWYWx1ZUxlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUpCiBpbnQgbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9j
dW1lbnQmIGRvY3VtZW50LCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvb2wgc2hvdWxkVXNl
Rml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXplTW9kZSBtb2RlKQogewogICAgIGlm
IChpc0NTU1ZhbHVlTGVuZ3RoKHZhbHVlKSkgewotICAgICAgICBpbnQgcGl4ZWxGb250U2l6ZSA9
IHZhbHVlLT5pbnRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgaW50IHBpeGVs
Rm9udFNpemUgPSB2YWx1ZS0+aW50VmFsdWUoQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgaW50
IGxlZ2FjeUZvbnRTaXplID0gU3R5bGU6OmxlZ2FjeUZvbnRTaXplRm9yUGl4ZWxTaXplKHBpeGVs
Rm9udFNpemUsIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplLCBkb2N1bWVudCk7CiAgICAg
ICAgIC8vIFVzZSBsZWdhY3kgZm9udCBzaXplIG9ubHkgaWYgcGl4ZWwgdmFsdWUgbWF0Y2hlcyBl
eGFjdGx5IHRvIHRoYXQgb2YgbGVnYWN5IGZvbnQgc2l6ZS4KICAgICAgICAgaW50IGNzc1ByaW1p
dGl2ZUVxdWl2YWxlbnQgPSBsZWdhY3lGb250U2l6ZSAtIDEgKyBDU1NWYWx1ZVhTbWFsbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKaW5kZXgg
YTljYTBhMWFiNmEyMzEzOGViN2UzZGUyN2IxZGM1MWI3NTkzYjUzNy4uNGQ2ZDk0YTU4NmNlYmQ4
MWJjZjk0OWU5N2YwNzkzOTFmNWE1MmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTcxLDEwICs3MSwxMCBAQCBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gRm9udENoYW5nZXM6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpIGNv
bnN0CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICpt
X2JvbGQgPyBDU1NWYWx1ZUJvbGQgOiBDU1NWYWx1ZU5vcm1hbCk7CiAKICAgICBpZiAobV9mb250
U2l6ZSkKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgqbV9mb250U2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19QWCkp
OworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKCptX2ZvbnRTaXplLCBDU1NVbml0VHlwZTo6UHgpKTsKIAogICAg
IGlmIChtX2ZvbnRTaXplRGVsdGEpCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEsIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgqbV9mb250
U2l6ZURlbHRhLCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEsIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZSgqbV9mb250U2l6ZURlbHRhLCBDU1NVbml0VHlwZTo6UHgpKTsKIAogICAgIHJldHVybiBz
dHlsZTsKIH0KQEAgLTg2LDkgKzg2LDkgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNz
c1ZhbHVlTGlzdEZvclNoYWRvdyhjb25zdCBGb250U2hhZG93JiBzaGFkb3cpCiAKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBhdXRvIHdpZHRo
ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgQ1NTVW5p
dFR5cGU6OkNTU19QWCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc2hhZG93Lm9mZnNldC5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgYXV0
byBibHVyUmFkaXVzID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5ibHVyUmFkaXVz
LCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBhdXRvIHdpZHRoID0gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OlB4KTsKKyAgICBh
dXRvIGhlaWdodCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFkb3cub2Zmc2V0LmhlaWdo
dCgpLCBDU1NVbml0VHlwZTo6UHgpOworICAgIGF1dG8gYmx1clJhZGl1cyA9IGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzaGFkb3cuYmx1clJhZGl1cywgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICBh
dXRvIGNvbG9yID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5jb2xvcik7CiAgICAg
bGlzdC0+cHJlcGVuZChDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKFdURk1vdmUod2lkdGgpLCBXVEZN
b3ZlKGhlaWdodCksIFdURk1vdmUoYmx1clJhZGl1cyksIHsgfSwgeyB9LCBXVEZNb3ZlKGNvbG9y
KSkpOwogICAgIHJldHVybiBsaXN0LnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDRmNDRiYTg1NDEwYTE2YTk5NGUyNWNhMDZlODg1
NGM2YTJkN2RiZTYuLjk4ZjQ3NGQxZWI1ZGQ2YzNiZGY5NTg5YmZmMjc1YzAzYzYwZDlhMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTU1
NCw4ICs1NTQsOCBAQCBzdGF0aWMgYm9vbCBzdHJpbmdGcm9tQ1NTVmFsdWUoQ1NTVmFsdWUmIHZh
bHVlLCBTdHJpbmcmIHJlc3VsdCkKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewogICAgICAgICAvLyBGSVhNRTogVXNlIGlzU3RyaW5nVHlwZShDU1NVbml0VHlwZSk/CiAg
ICAgICAgIENTU1VuaXRUeXBlIHByaW1pdGl2ZVR5cGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVR5cGUg
PT0gQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcgfHwgcHJpbWl0aXZlVHlwZSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX1VSSQotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVHlwZSA9PSBDU1NVbml0VHlwZTo6
Q1NTX0lERU5UIHx8IHByaW1pdGl2ZVR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19BVFRSKSB7Cisg
ICAgICAgIGlmIChwcmltaXRpdmVUeXBlID09IENTU1VuaXRUeXBlOjpTdHJpbmcgfHwgcHJpbWl0
aXZlVHlwZSA9PSBDU1NVbml0VHlwZTo6VVJJCisgICAgICAgICAgICB8fCBwcmltaXRpdmVUeXBl
ID09IENTU1VuaXRUeXBlOjpJZGVudCB8fCBwcmltaXRpdmVUeXBlID09IENTU1VuaXRUeXBlOjpB
dHRyKSB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS5jc3NUZXh0KCk7
CiAgICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzdHJpbmdWYWx1ZTsKQEAgLTY5MSwyNiArNjkxLDI2IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBmbG9hdFZhbHVlRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlJiBw
cmltaXRpdmVWYWx1CiB7CiAgICAgLy8gRklYTUU6IFVzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZVZhbHVlLgogICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpKSB7
Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgotICAgICAgICByZXN1bHQgPSBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OlB4OgorICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpQeCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19QVDoKLSAgICAgICAgcmVzdWx0ID0gNCAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoQ1NTVW5pdFR5cGU6OkNTU19QVCkgLyAzOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OlB0Ogor
ICAgICAgICByZXN1bHQgPSA0ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlw
ZTo6UHQpIC8gMzsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1BDOgotICAgICAgICByZXN1bHQgPSAxNiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19QQyk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CisgICAgICAg
IHJlc3VsdCA9IDE2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UGMp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0g
ICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlw
ZTo6Q1NTX1BDKSAvIDIuNTQ7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q206CisgICAgICAgIHJl
c3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6UGMpIC8g
Mi41NDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01N
OgotICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTVW5p
dFR5cGU6OkNTU19QQykgLyAyNS40OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgorICAgICAg
ICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OlBj
KSAvIDI1LjQ7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19ROgotICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NT
VW5pdFR5cGU6OkNTU19QQykgLyAoMjUuNCAqIDQuMCk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
UToKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1Vu
aXRUeXBlOjpQYykgLyAoMjUuNCAqIDQuMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVW
YWx1ZS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfSU4pOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkluOgorICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUo
Q1NTVW5pdFR5cGU6OkluKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA4
MDExMzBhNzdkNzcwYzIyZjE0ZDU1MzgyZmZjYmE2ZmVlZDU4MjQwLi5hODA2YTY4YTFjZTExNDg1
NTg2NDUxOTMzMDUxMmU5M2NhMGUxYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHVuc2lnbmVkIEhUTUxFbGVtZW50OjpwYXJzZUJvcmRlcldp
ZHRoQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogCiB2b2lkIEhUTUxF
bGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewotICAgIGFkZFByb3BlcnR5VG9Q
cmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgcGFy
c2VCb3JkZXJXaWR0aEF0dHJpYnV0ZSh2YWx1ZSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAg
IGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCwgcGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZSh2YWx1ZSksIENTU1VuaXRUeXBl
OjpQeCk7CiAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKIH0KIApAQCAtNjM4LDggKzYz
OCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWln
aHRBdHRyaWJ1dGVzVG9TdHlsZShTdHJpbmdWaWV3CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcmF0aW9MaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAg
IHJhdGlvTGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUo
ZGltZW5zaW9uV2lkdGgtPm51bWJlciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKTsKLSAgICBy
YXRpb0xpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGRp
bWVuc2lvbkhlaWdodC0+bnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOworICAgIHJh
dGlvTGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZGlt
ZW5zaW9uV2lkdGgtPm51bWJlciwgQ1NTVW5pdFR5cGU6Ok51bWJlcikpOworICAgIHJhdGlvTGlz
dC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZGltZW5zaW9u
SGVpZ2h0LT5udW1iZXIsIENTU1VuaXRUeXBlOjpOdW1iZXIpKTsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlzdC0+YXBwZW5kKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
bykpOwogICAgIGxpc3QtPmFwcGVuZChyYXRpb0xpc3QpOwpAQCAtMTAyMywxMyArMTAyMywxMyBA
QCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydAogICAgICAgICByZXR1cm47CiAgICAgaWYgKGRpbWVu
c2lvblZhbHVlLT50eXBlID09IEhUTUxEaW1lbnNpb246OlR5cGU6OlBlcmNlbnRhZ2UpIHsKICAg
ICAgICAgaWYgKGFsbG93UGVyY2VudGFnZSA9PSBBbGxvd1BlcmNlbnRhZ2U6OlllcykKLSAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgcHJvcGVy
dHlJRCwgZGltZW5zaW9uVmFsdWUtPm51bWJlciwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdF
KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHls
ZSwgcHJvcGVydHlJRCwgZGltZW5zaW9uVmFsdWUtPm51bWJlciwgQ1NTVW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh1c2VDU1NQWCA9PSBVc2VD
U1NQWEFzVW5pdFR5cGU6OlllcykKLSAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGlu
dFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBDU1NVbml0
VHlwZTo6UHgpOwogICAgIGVsc2UKLSAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCBkaW1lbnNpb25WYWx1ZS0+bnVtYmVyLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgZGltZW5zaW9uVmFsdWUtPm51bWJlciwgQ1NT
VW5pdFR5cGU6Ok51bWJlcik7CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNC9z
Z21sL2R0ZC5odG1sI0xlbmd0aCwgaW5jbHVkaW5nIHBpeGVsIGFuZCBwZXJjZW50YWdlIHZhbHVl
cy4KQEAgLTE1MDAsOCArMTUwMCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIGxpbmVCb3VuZHMgPSByb3RhdGVkQm91bmRp
bmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24obGluZVF1YWQsIDAuMDEpOwotICAgICAg
ICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IGxpbmVCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICAgICAg
bGluZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
bGluZUJvdW5kcy5zaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAg
bGluZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBs
aW5lQm91bmRzLnNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OlB4KTsKKyAgICAgICAgbGluZUNv
bnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgbGluZUJv
dW5kcy5zaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBsaW5lQ29udGFp
bmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3Ry
aW5nKAogICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsCiAgICAgICAgICAgICBzdGQ6OnJvdW5k
KGxpbmVCb3VuZHMuY2VudGVyLngoKSAtIChsaW5lQm91bmRzLnNpemUud2lkdGgoKSAvIDIpKSwg
InB4LCAiX3MsCkBAIC0xNTkxLDggKzE1OTEsOCBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbWUgdXAgd2l0aCBhIHdheSB0byBjb2FsZXNj
ZSB0aGUgYm91bmRpbmcgcXVhZHMgaW50byBvbmUgb3IgbW9yZSByb3RhdGVkIHJlY3RzIHdpdGgg
dGhlIHNhbWUgYW5nbGUgb2Ygcm90YXRpb24uCiAgICAgICAgIGF1dG8gdGFyZ2V0UXVhZCA9IGNv
bnZlcnRUb0NvbnRhaW5lckNvb3JkaW5hdGVzKGRhdGFEZXRlY3Rvci5ub3JtYWxpemVkUXVhZHMu
Zmlyc3QoKSk7CiAgICAgICAgIGF1dG8gdGFyZ2V0Qm91bmRzID0gcm90YXRlZEJvdW5kaW5nUmVj
dFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9uKHRhcmdldFF1YWQsIDAuMDEpOwotICAgICAgICBk
YXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0g
ICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUhlaWdodCwgdGFyZ2V0Qm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpD
U1NfUFgpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSwgQ1NTVW5p
dFR5cGU6OlB4KTsKKyAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCB0YXJnZXRCb3VuZHMuc2l6ZS5oZWlnaHQoKSwg
Q1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKAogICAgICAg
ICAgICAgInRyYW5zbGF0ZSgiX3MsCiAgICAgICAgICAgICBzdGQ6OnJvdW5kKHRhcmdldEJvdW5k
cy5jZW50ZXIueCgpIC0gKHRhcmdldEJvdW5kcy5zaXplLndpZHRoKCkgLyAyKSksICJweCwgIl9z
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggY2VmNmQyYmE3
MzgwNWU2YTAzYzBmNzhiNjFhNDQ5YzFlNWVjMzQ0My4uNjUwMmY3MzRkZWNlYTA4MmUyNTYwYTY2
Yzc2NmMxYmI5MmYwYTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6Y29sbGVjdFByZXNl
bnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYg
KG5hbWUgPT0gaGlkZGVuQXR0cikgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJ5ZXMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgInRydWUiKSkgewotICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCAwLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlIZWlnaHQsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAg
ICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eVdpZHRoLCAwLCBDU1NVbml0VHlwZTo6UHgpOworICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgMCwgQ1NTVW5p
dFR5cGU6OlB4KTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSwgc3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKaW5kZXggYzM3
ZTNiMWNmODBiYjc0MjA4NTIyNmM4MzVkYWMwNjdmNmUzODNlNC4uOWJkZjUwZWE5YjNlZTg0MWIx
NzRhNWIzYWJkNmVlNWUwNTNhZGUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSFJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQu
Y3BwCkBAIC02NCwxOCArNjQsMTggQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0UHJlc2Vu
dGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogewogICAgIGlm
IChuYW1lID09IGFsaWduQXR0cikgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJsZWZ0IikpIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAwLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25h
bEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAwLCBDU1NVbml0VHlwZTo6
UHgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9IGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicmlnaHQiKSkgewog
ICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmln
aHQsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAwLCBD
U1NVbml0VHlwZTo6UHgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkUHJvcGVy
dHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQs
IENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxI
aW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlm
IChhdXRvIHZhbHVlSW50ZWdlciA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpOyB2YWx1ZUludGVn
ZXIgJiYgISp2YWx1ZUludGVnZXIpCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0
aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIDEsIENTU1VuaXRUeXBlOjpD
U1NfUFgpOworICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCAxLCBDU1NVbml0VHlwZTo6UHgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlX
aWR0aCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb2xvckF0dHIpIHsKQEAgLTkz
LDkgKzkzLDkgQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50
c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBzaXplQXR0cikgewogICAgICAgICBpbnQgc2l6ZSA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUp
LnZhbHVlX29yKDApOwogICAgICAgICBpZiAoc2l6ZSA8PSAxKQotICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVdpZHRoLCAwLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIGFkZFByb3Bl
cnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgMCwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhl
aWdodCwgc2l6ZSAtIDIsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwg
c2l6ZSAtIDIsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVt
ZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwg
c3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRl
eCBhY2U5NjNlN2QwMzc2YjMwMGQ2OGYxOGU2NGMyZDIxNWY2MWRhMWMwLi5hODMxN2E0MjVlM2I2
NjAyM2FhNjY0NjIxODFmNzc5OTUyZWNlNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50
Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YQogICAgICAgICAvLyBhIHByZXNlbnRhdGlvbmFsIGhpbnQgdGhhdCB0aGUgYm9yZGVyIHNob3Vs
ZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8uCiAgICAgICAgIGlmICghcGFyc2VIVE1MSW50ZWdlcih2
YWx1ZSkudmFsdWVfb3IoMCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxs
cyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KLSAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgMCwgQ1NTVW5p
dFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxI
aW50U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIDAsIENTU1VuaXRUeXBlOjpQ
eCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6
OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHls
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2ZDY5ZjA3
ZDY1MGZmMDgwYmQ2MjY5M2Y2MzI4YzdhZGYwMmMxZTYxLi5lYjFlYTFlNjU5ZTFhOTEwODlkMGVl
N2ZlODAwOWQ1YzJkMTllZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTIxMDIsMTQgKzIxMDIsMTQgQEAgc3RhdGljIFJlZjxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPiBhdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkTWFza0ltYWdlKCkKIHsKICAgICBDU1NHcmFk
aWVudENvbG9yU3RvcCBmaXJzdFN0b3A7CiAgICAgZmlyc3RTdG9wLmNvbG9yID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVDb2xvclZhbHVlKENvbG9yOjpibGFjayk7Ci0gICAgZmly
c3RTdG9wLnBvc2l0aW9uID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSg1
MCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICBmaXJzdFN0b3AucG9zaXRpb24g
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDUwLCBDU1NVbml0VHlwZTo6
UGVyY2VudGFnZSk7CiAKICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzZWNvbmRTdG9wOwogICAg
IHNlY29uZFN0b3AuY29sb3IgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUNvbG9y
VmFsdWUoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHNlY29uZFN0b3AucG9zaXRpb24g
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDEwMCwgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFKTsKKyAgICBzZWNvbmRTdG9wLnBvc2l0aW9uID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgxMDAsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsK
IAogICAgIGF1dG8gZ3JhZGllbnQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUoQ1NT
R3JhZGllbnRSZXBlYXQ6Ok5vblJlcGVhdGluZywgQ1NTR3JhZGllbnRUeXBlOjpDU1NMaW5lYXJH
cmFkaWVudCk7Ci0gICAgZ3JhZGllbnQtPnNldEFuZ2xlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlVmFsdWUoOTAsIENTU1VuaXRUeXBlOjpDU1NfREVHKSk7CisgICAgZ3JhZGllbnQt
PnNldEFuZ2xlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoOTAsIENTU1Vu
aXRUeXBlOjpEZWcpKTsKICAgICBncmFkaWVudC0+YWRkU3RvcChXVEZNb3ZlKGZpcnN0U3RvcCkp
OwogICAgIGdyYWRpZW50LT5hZGRTdG9wKFdURk1vdmUoc2Vjb25kU3RvcCkpOwogICAgIGdyYWRp
ZW50LT5kb25lQWRkaW5nU3RvcHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwCmluZGV4IDIyOTU0YzU2ODYxYTEyYzEwYTA2MDRjYTIwMzlmODljYzI2ODkxMmIuLmRk
NGYxMzg2NjU5YjMxNTA1OWQ0YzgyNDM3ZmZiODEwYTlmMmQxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB2b2lk
IHNldFZhbHVlQ2xhc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEhUTUxNZXRlckVsZW1lbnQ6Okdh
dWdlUmVnaW9uIGdhCiAKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6ZGlkRWxlbWVudFN0YXRlQ2hh
bmdlKCkKIHsKLSAgICBtX3ZhbHVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgsIHZhbHVlUmF0aW8oKSoxMDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgbV92YWx1ZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1
ZVJhdGlvKCkqMTAwLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgc2V0VmFsdWVDbGFz
cygqbV92YWx1ZSwgZ2F1Z2VSZWdpb24oKSk7CiAKICAgICBpZiAoUmVuZGVyTWV0ZXIqIHJlbmRl
ciA9IHJlbmRlck1ldGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAppbmRleCBjNmMzNmFlNjdmNTAzOTcxMzZkNzBmYzFmMWJlMzAwYTRiMmNmNjM4Li41YWRkZDlj
MmQ0MWE0MDQyZWIyZTE5NjI5ZjNiNGJmOTMxMWU0MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEhUTUxUYWJsZUVs
ZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbQogICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKICAgICAgICAgYWRkSFRN
TExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCB2YWx1ZSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBib3JkZXJBdHRyKSAKLSAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRh
dGlvbmFsSGludFN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBwYXJzZUJvcmRl
cldpZHRoQXR0cmlidXRlKHZhbHVlKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgIGFk
ZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJXaWR0aCwgcGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZSh2YWx1ZSksIENTU1VuaXRUeXBlOjpQ
eCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBib3JkZXJjb2xvckF0dHIpIHsKICAgICAgICAgaWYg
KCF2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCB2YWx1ZSk7CkBAIC00OTQsMTIgKzQ5NCwxMiBAQCBS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKSBjb25zdAogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJD
b2xvciwgY3NzVmFsdWVQb29sLmNyZWF0ZUluaGVyaXRlZFZhbHVlKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNvbGlkQm9yZGVyczoKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSgxLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoMSwgQ1NTVW5pdFR5cGU6OlB4KSk7
CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU29saWQpKTsKICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJbmhlcml0ZWRWYWx1ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnNldEJv
cmRlcnM6Ci0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlcldpZHRo
LCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoMSwgQ1NTVW5pdFR5cGU6OkNTU19QWCkpOworICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKDEsIENTU1VuaXRUeXBlOjpQeCkpOwogICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZUluc2V0KSk7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBjc3NWYWx1ZVBvb2wuY3JlYXRlSW5oZXJpdGVkVmFsdWUo
KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTA5LDcgKzUwOSw3IEBAIFJlZjxTdHlsZVByb3BlcnRp
ZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpIGNvbnN0CiAgICAg
fQogCiAgICAgaWYgKG1fcGFkZGluZykKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5UGFkZGluZywgY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKG1fcGFkZGluZywgQ1NTVW5p
dFR5cGU6OkNTU19QWCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlQ
YWRkaW5nLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9wYWRkaW5nLCBDU1NVbml0VHlwZTo6
UHgpKTsKIAogICAgIHJldHVybiBzdHlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0
aW9uTWVzc2FnZS5jcHAKaW5kZXggY2ZlYjA0M2YzY2YyMGY2N2ZiNmZiMDJhYzEyZDQxZGU3OGYz
MGVlYS4uODkwOTM2NDllM2RmNDUzNDc0ODYzMGU0NzgzYjE1ZjQ3ZWMzNjU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTE2OCwxMyArMTY4LDEzIEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmFkanVzdEJ1YmJsZVBvc2l0aW9uKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wLCBob3N0WSArIGhvc3RSZWN0LmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
KyAgICBtX2J1YmJsZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgaG9z
dFkgKyBob3N0UmVjdC5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OlB4KTsKICAgICAvLyBUaGUgJ2xl
ZnQnIHZhbHVlIG9mIDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy4KICAgICBjb25z
dCBpbnQgYnViYmxlQXJyb3dUb3BPZmZzZXQgPSAzMjsKICAgICBkb3VibGUgYnViYmxlWCA9IGhv
c3RYOwogICAgIGlmIChob3N0UmVjdC53aWR0aCgpIC8gMiA8IGJ1YmJsZUFycm93VG9wT2Zmc2V0
KQogICAgICAgICBidWJibGVYID0gc3RkOjptYXgoaG9zdFggKyBob3N0UmVjdC53aWR0aCgpIC8g
MiAtIGJ1YmJsZUFycm93VG9wT2Zmc2V0LCAwLjApOwotICAgIG1fYnViYmxlLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgYnViYmxlWCwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0
LCBidWJibGVYLCBDU1NVbml0VHlwZTo6UHgpOwogfQogCiB2b2lkIFZhbGlkYXRpb25NZXNzYWdl
OjpidWlsZEJ1YmJsZVRyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZUVkaXRFbGVtZW50LmNwcAppbmRleCBkZGNhYjdkMDM0OWQzYmE3YjI4MTZlMDUwZWVl
ODhiYmUxZGUzNzFlLi43NzUzYjMyMDVkNjNjYWZlODQ1ODZlNTk0ODgwMzU1NGM5MzU5MDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50
LmNwcApAQCAtMTc3LDkgKzE3Nyw5IEBAIHZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRM
aXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAvLyBwcmV2ZW50IHNlbGVjdGVkIGZpZWxk
cyBmcm9tIGFwcGVhcmluZyBzcXVpc2hlZC4gVG8gZml4LCBwdWxsIGZpZWxkcyBjbG9zZXIKICAg
ICAvLyB0b2dldGhlciBieSBhcHBseWluZyBhIG5lZ2F0aXZlIG1hcmdpbi4KICAgICBpZiAodGV4
dC5zdGFydHNXaXRoKCcgJykpCi0gICAgICAgIGVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVTdGFydCwgLTEsIENTU1VuaXRUeXBlOjpDU1NfUFgp
OworICAgICAgICBlbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFy
Z2luSW5saW5lU3RhcnQsIC0xLCBDU1NVbml0VHlwZTo6UHgpOwogICAgIGlmICh0ZXh0LmVuZHNX
aXRoKCcgJykpCi0gICAgICAgIGVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXJnaW5JbmxpbmVFbmQsIC0xLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAg
ZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVu
ZCwgLTEsIENTU1VuaXRUeXBlOjpQeCk7CiAKICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUobV9lZGl0RWxlbWVudC5kb2N1bWVudCgpLCB0ZXh0KSk7CiAgICAgbV9lZGl0RWxl
bWVudC5maWVsZHNXcmFwcGVyRWxlbWVudCgpLmFwcGVuZENoaWxkKGVsZW1lbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAppbmRleCBlY2U4ZjRjYzRmY2I2NTYxYzRm
MDc5MTY1M2FiZTBkMTU3MWEyOWNkLi5jODkxOTU2YTgxMzk3MDVkNGI1M2NkZTBiZTc0ZDk1N2I5
NzliMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtMjcy
LDcgKzI3Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlVGV4dFN0cm9rZVN0eWxlKCkKIAogICAgIC8vIEZJWE1FOiBmaW5kIGEgd2F5IHRvIHNl
dCB0aGlzIHByb3BlcnR5IGluIHRoZSBzdHlsZXNoZWV0IGxpa2UgdGhlIG90aGVyIHVzZXIgc3R5
bGUgcHJlZmVyZW5jZXMsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTg3ND4uCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmVuc3VyZUNh
cHRpb25QcmVmZXJlbmNlcygpLmNhcHRpb25TdHJva2VXaWR0aEZvckZvbnQobV9mb250U2l6ZSwg
bGFuZ3VhZ2UsIHN0cm9rZVdpZHRoLCBpbXBvcnRhbnQpKQotICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoLCBDU1NVbml0VHlw
ZTo6Q1NTX1BYLCBpbXBvcnRhbnQpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5U3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoLCBDU1NVbml0VHlwZTo6UHgsIGltcG9y
dGFudCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JZk5lZWRlZCgpCkBAIC0zMTksMTAgKzMxOSwx
MCBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRl
eHRUcmFja1N0eWxlKCkKIHsKICAgICBpZiAobV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbikgewog
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9zaXRpb24sIENTU1Zh
bHVlQWJzb2x1dGUpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQs
IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgp
OwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgMCwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3AsIDAsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lk
dGgoKSwgQ1NTVW5pdFR5cGU6OlB4KTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUhlaWdodCwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSwgQ1NT
VW5pdFR5cGU6OlB4KTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxlZnQsIDAsIENTU1VuaXRUeXBlOjpQeCk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlUb3AsIDAsIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwCmluZGV4IGY1NzRmMDc0N2QxOWFiMDhiMTBhNDVmMzE5ZTc4NDNhYTI0
YjI2YTAuLmVjNGFmNDY5NTlmMjlhYTEwMGQ2OGNhYTkzZWQ1MTU4ZWNmYWU5MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNw
cApAQCAtODYsNyArODYsNyBAQCBQcm9ncmVzc1ZhbHVlRWxlbWVudDo6UHJvZ3Jlc3NWYWx1ZUVs
ZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFByb2dyZXNzVmFsdWVFbGVtZW50Ojpz
ZXRXaWR0aFBlcmNlbnRhZ2UoZG91YmxlIHdpZHRoKQogewotICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgd2lkdGgsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFH
RSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aCwg
Q1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogfQogCiBSZWY8UHJvZ3Jlc3NJbm5lckVsZW1lbnQ+
IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKaW5kZXggOTMzNDcyMjZlOTZmMjE5N2M1ZjU2ZWQ3MjYxMTQ2NjliYjEwYTdmNy4uZDg3
MDNiZWJjNTIzZGI0NjczZmVlYzJjNmY2MzVjMGQxMWQzNDExZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGMKICAgICAgICAgLy8gU2V0
ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAgLy8gc3R5bGUgdG8g
Y2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBh
IGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBmb3IgdGhlIHJvb3QgZWxl
bWVudCBzdHlsZSwgdGhlIHBhcmVudCBlbGVtZW50IHN0eWxlLCBhbmQgdGhlIHJlbmRlciB2aWV3
LgotICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NT
VW5pdFR5cGU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoMSwgQ1NTVW5pdFR5cGU6OkVtcyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBl
bVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3
U3R5bGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0
IH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAppbmRleCA4NDM5NzU5Zjg1MTM1ZjNk
NGYwYTg2NzE2MzhmOTNjZmE1NTk3Y2RhLi40ZDRhN2ZjMzU0Zjg4ZTM4M2ZhODQ0M2M3NDU3MWQ4
MmZhMmViNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAtNDYsOCArNDYsOCBAQCBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
TGF5b3V0UwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBz
aXplLndpZHRoKCkgPyBDU1NWYWx1ZUlubGluZUJsb2NrIDogQ1NTVmFsdWVCbG9jaywgZmFsc2Up
OwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBD
U1NWYWx1ZVRvcCwgZmFsc2UpOwogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlWaXNpYmlsaXR5LCBDU1NWYWx1ZUhpZGRlbiwgdHJ1ZSk7Ci0gICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1Nf
UFgpOwotICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHNpemUu
aGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlXaWR0aCwgc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6UHgpOworICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHNpemUuaGVpZ2h0KCks
IENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIGF1dG8gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3Bw
CmluZGV4IDVlNThjNzk3NGMzOTFiOGZkNWFhZTMwNWY1NGQ5MWFlOWNkMDZjMTYuLmNjNzViZjRk
NWVkNGMxZjUxNjZiM2I3ZmJlMGNhZjI3ZTI5MWEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcApAQCAtODgsMTEgKzg4LDExIEBA
IHZvaWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyhj
b25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiAgICAgQ1NTVmFsdWVJRCBhbGlnbm1lbnQgPSBjdWUt
PmdldENTU0FsaWdubWVudCgpOwogICAgIGZsb2F0IHNpemUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
Y3VlLT5nZXRDU1NTaXplKCkpOwogICAgIGlmIChjdWUtPnVzZURlZmF1bHRQb3NpdGlvbigpKSB7
Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCb3R0b20sIDAsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCAxLjAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCb3R0b20sIDAsIENTU1Vu
aXRUeXBlOjpQeCk7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIDEuMCwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNf
Y2FzdDxmbG9hdD4odGV4dFBvc2l0aW9uKSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
LSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGxpbmVQb3NpdGlvbiksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNfY2Fz
dDxmbG9hdD4odGV4dFBvc2l0aW9uKSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNfY2FzdDxmbG9h
dD4obGluZVBvc2l0aW9uKSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogCiAgICAgICAgIGRv
dWJsZSBhdXRob3JGb250U2l6ZSA9IHZpZGVvU2l6ZS5oZWlnaHQoKSAqIGN1ZS0+YmFzZUZvbnRT
aXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KCkgLyAxMDAuMDsKICAgICAgICAgaWYgKCFhdXRob3JG
b250U2l6ZSkKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0Jv
eEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiAg
ICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gZm9udFNpemVGcm9tQ2FwdGlvblVzZXJQcmVmcygp
IC8gYXV0aG9yRm9udFNpemU7CiAgICAgICAgIGRvdWJsZSBuZXdDdWVTaXplID0gc3RkOjptaW4o
c2l6ZSAqIG11bHRpcGxpZXIsIDEwMC4wKTsKICAgICAgICAgaWYgKGN1ZS0+Z2V0V3JpdGluZ0Rp
cmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkgewotICAgICAgICAgICAgc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAg
ICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0g
Q1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNfY2FzdDxkb3VibGU+
KHRleHRQb3NpdGlvbiAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENT
U1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4odGV4dFBvc2l0
aW9uIC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5cGU6
OlBlcmNlbnRhZ2UpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgbmV3Q3VlU2l6ZSwgIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCAgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAg
ICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NTVmFsdWVNaWRkbGUgfHwgYWxpZ25tZW50ID09
IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVyICE9IDEuMCkKLSAgICAgICAgICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNfY2FzdDxkb3VibGU+
KGxpbmVQb3NpdGlvbiAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENT
U1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihsaW5lUG9zaXRp
b24gLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6
UGVyY2VudGFnZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMywxMCArMTIzLDEwIEBAIHZv
aWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpCiAKICAgICBpZiAoY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1jb250ZW50Iik7Ci0gICAgICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdo
dCwgIm1pbi1jb250ZW50Iik7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXhIZWlnaHQsIG1heFNpemUsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Cisg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIG1heFNp
emUsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICB9CiAKICAgICBpZiAoY3VlLT5mb3Jl
Z3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBUZXh0VHJh
Y2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZShpbnQgZm9udFNpemUsIGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSwgYm8KICAgICBkb3VibGUgc2l6ZSA9IHZpZGVvU2l6ZS5oZWlnaHQoKSAqIGJhc2VG
b250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpIC8gMTAwOwogICAgIGlmIChmb250U2l6ZU11
bHRpcGxpZXIoKSkKICAgICAgICAgc2l6ZSAqPSBmb250U2l6ZU11bHRpcGxpZXIoKSAvIDEwMDsK
LSAgICBkaXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRTaXplLCBscm91bmQoc2l6ZSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGRp
c3BsYXlUcmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFNpemUsIGxyb3VuZChzaXplKSwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogYm9vbCBUZXh0VHJh
Y2tDdWVHZW5lcmljOjpjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYgb3RoZXJU
ZXh0VHJhY2tDdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXgg
YTVhYjk3NGMyNDZkOGMwYjc3YzEyNWI3ZWExNzNhZjk4MWEwYzIzNy4uNWM3NjcyY2UzZGVlZTM4
ODkzMzQxNWQwY2RiOWI3NTc4OTI4NTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVy
dGllcyhjb25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiAgICAgYXV0byBwb3NpdGlvbiA9IGN1ZS0+
Z2V0Q1NTUG9zaXRpb24oKTsKIAogICAgIC8vIHRoZSAndG9wJyBwcm9wZXJ0eSBtdXN0IGJlIHNl
dCB0byB0b3AsCi0gICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgcG9z
aXRpb24uc2Vjb25kLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uLnNlY29uZCwgQ1NTVW5pdFR5
cGU6OlBlcmNlbnRhZ2UpOwogCiAgICAgLy8gdGhlICdsZWZ0JyBwcm9wZXJ0eSBtdXN0IGJlIHNl
dCB0byBsZWZ0CiAgICAgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgp
KQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgcG9zaXRp
b24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAgICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBwb3NpdGlvbi5maXJzdCwgQ1NTVW5pdFR5
cGU6OlBlcmNlbnRhZ2UpOwogICAgIGVsc2UgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSB2ZXJ0aWNh
bEdyb3dpbmdSaWdodEtleXdvcmQoKSkgewogICAgICAgICAvLyBGSVhNRTogV2h5IHVzZSBjYWxj
IHRvIGRvIHRoZSBtYXRoIGluc3RlYWQgb2YgZG9pbmcgdGhlIHN1YnRyYWN0aW9uIGhlcmU/CiAg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5n
KCJjYWxjKC0iLCB2aWRlb1NpemUud2lkdGgoKSwgInB4IC0gIiwgY3VlLT5nZXRDU1NTaXplKCks
ICJweCkiKSk7CkBAIC0yMTMsMTkgKzIxMywxOSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQ
cm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBkb3VibGUgbmV3Q3VlU2l6
ZSA9IHN0ZDo6bWluKGN1ZS0+Z2V0Q1NTU2l6ZSgpICogbXVsdGlwbGllciwgMTAwLjApOwogICAg
IC8vIHRoZSAnd2lkdGgnIHByb3BlcnR5IG11c3QgYmUgc2V0IHRvIHdpZHRoLCBhbmQgdGhlICdo
ZWlnaHQnIHByb3BlcnR5ICBtdXN0IGJlIHNldCB0byBoZWlnaHQKICAgICBpZiAoY3VlLT52ZXJ0
aWNhbCgpID09IGhvcml6b250YWxLZXl3b3JkKCkpIHsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BF
UkNFTlRBR0UpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lk
dGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgQ1NTVmFsdWVBdXRvKTsKICAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbldpZHRoLCAibWluLWNvbnRl
bnQiKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRo
LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIG1heFNpemUsIENTU1VuaXRUeXBl
OjpQZXJjZW50YWdlKTsKICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NTVmFsdWVNaWRkbGUg
fHwgYWxpZ25tZW50ID09IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVyICE9IDEuMCkKLSAg
ICAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNf
Y2FzdDxkb3VibGU+KHBvc2l0aW9uLmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1Np
emUoKSkgLyAyKSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uLmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwg
Q1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgbmV3Q3VlU2l6ZSwgQ1NT
VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUhlaWdodCwgbmV3Q3VlU2l6ZSwgQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2Up
OwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluSGVpZ2h0LCAi
bWluLWNvbnRlbnQiKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwg
Q1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NW
YWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIg
IT0gMS4wKQotICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRv
cCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1
ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAg
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6
ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgfQogCiAgICAgLy8gVGhl
ICd0ZXh0LWFsaWduJyBwcm9wZXJ0eSBvbiB0aGUgKHJvb3QpIExpc3Qgb2YgV2ViVlRUIE5vZGUg
T2JqZWN0cyBtdXN0CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94
PiBWVFRDdWU6OmdldERpc3BsYXlUcmVlKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSwgaW50IGZv
bgogICAgIH0KIAogICAgIGlmIChtX2ZvbnRTaXplKQotICAgICAgICBkaXNwbGF5VHJlZS0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBtX2ZvbnRTaXplLCBDU1NV
bml0VHlwZTo6Q1NTX1BYLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOworICAgICAgICBkaXNwbGF5
VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBtX2ZvbnRT
aXplLCBDU1NVbml0VHlwZTo6UHgsIG1fZm9udFNpemVJc0ltcG9ydGFudCk7CiAKICAgICBtX2Rp
c3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUUmVnaW9uLmNwcAppbmRleCBhMTk5YmIwODk5YWUzYWExOTA1MmU4MTdiMzE1MzNkNjdhYzZi
ZWIwLi45ZTFmNWQwMDI0M2RlZThkOTZkZDVmYjAyM2QxZWFiMWQxODg5ODVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBW
VFRSZWdpb246OmRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCkKICAgICAgICAgZmxvYXQgaGVp
Z2h0ID0gY2hpbGRCb3R0b20gLSBjaGlsZFRvcDsKIAogICAgICAgICBtX2N1cnJlbnRUb3AgLT0g
c3RkOjptaW4oaGVpZ2h0LCBjaGlsZEJvdHRvbSAtIHJlZ2lvbkJvdHRvbSk7Ci0gICAgICAgIG1f
Y3VlQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBtX2N1
cnJlbnRUb3AsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBtX2N1ZUNvbnRhaW5lci0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NV
bml0VHlwZTo6UHgpOwogCiAgICAgICAgIHN0YXJ0VGltZXIoKTsKICAgICAgICAgYnJlYWs7CkBA
IC0zMzUsNyArMzM1LDcgQEAgdm9pZCBWVFRSZWdpb246OndpbGxSZW1vdmVUZXh0VHJhY2tDdWVC
b3goVlRUQ3VlQm94KiBib3gpCiAgICAgbV9jdWVDb250YWluZXItPmNsYXNzTGlzdCgpLnJlbW92
ZSh0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpKTsKIAogICAgIG1fY3VycmVu
dFRvcCArPSBib3hIZWlnaHQ7Ci0gICAgbV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlUb3AsIG1fY3VycmVudFRvcCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7
CisgICAgbV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlU
b3AsIG1fY3VycmVudFRvcCwgQ1NTVW5pdFR5cGU6OlB4KTsKIH0KIAogSFRNTERpdkVsZW1lbnQm
IFZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUoKQpAQCAtMzYzLDI3ICszNjMsMjcgQEAgdm9pZCBW
VFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSgpCiAKICAgICAvLyBMZXQgcmVnaW9u
V2lkdGggYmUgdGhlIHRleHQgdHJhY2sgcmVnaW9uIHdpZHRoLgogICAgIC8vIExldCB3aWR0aCBi
ZSAncmVnaW9uV2lkdGggdncnICgndncnIGlzIGEgQ1NTIHVuaXQpCi0gICAgbV9yZWdpb25EaXNw
bGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBtX3dpZHRo
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgIG1fcmVnaW9uRGlzcGxheVRyZWUt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgbV93aWR0aCwgQ1NTVW5p
dFR5cGU6OlBlcmNlbnRhZ2UpOwogCiAgICAgLy8gTGV0IGxpbmVIZWlnaHQgYmUgJzAuMDUzM3Zo
JyAoJ3ZoJyBpcyBhIENTUyB1bml0KSBhbmQgcmVnaW9uSGVpZ2h0IGJlCiAgICAgLy8gdGhlIHRl
eHQgdHJhY2sgcmVnaW9uIGhlaWdodC4gTGV0IGhlaWdodCBiZSAnbGluZUhlaWdodCcgbXVsdGlw
bGllZAogICAgIC8vIGJ5IHJlZ2lvbkhlaWdodC4KICAgICBkb3VibGUgaGVpZ2h0ID0gbGluZUhl
aWdodCAqIG1fbGluZXM7Ci0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgaGVpZ2h0LCBDU1NVbml0VHlwZTo6Q1NTX1ZIKTsK
KyAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5SGVpZ2h0LCBoZWlnaHQsIENTU1VuaXRUeXBlOjpWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQp
OwogCiAgICAgLy8gTGV0IHZpZXdwb3J0QW5jaG9yWCBiZSB0aGUgeCBkaW1lbnNpb24gb2YgdGhl
IHRleHQgdHJhY2sgcmVnaW9uIHZpZXdwb3J0CiAgICAgLy8gYW5jaG9yIGFuZCByZWdpb25BbmNo
b3JYIGJlIHRoZSB4IGRpbWVuc2lvbiBvZiB0aGUgdGV4dCB0cmFjayByZWdpb24KICAgICAvLyBh
bmNob3IuIExldCBsZWZ0T2Zmc2V0IGJlIHJlZ2lvbkFuY2hvclggbXVsdGlwbGllZCBieSB3aWR0
aCBkaXZpZGVkIGJ5CiAgICAgLy8gMTAwLjAuIExldCBsZWZ0IGJlIGxlZnRPZmZzZXQgc3VidHJh
Y3RlZCBmcm9tICd2aWV3cG9ydEFuY2hvclggdncnLgogICAgIGRvdWJsZSBsZWZ0T2Zmc2V0ID0g
bV9yZWdpb25BbmNob3IueCgpICogbV93aWR0aCAvIDEwMDsKLSAgICBtX3JlZ2lvbkRpc3BsYXlU
cmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgbV92aWV3cG9ydEFu
Y2hvci54KCkgLSBsZWZ0T2Zmc2V0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAg
IG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlM
ZWZ0LCBtX3ZpZXdwb3J0QW5jaG9yLngoKSAtIGxlZnRPZmZzZXQsIENTU1VuaXRUeXBlOjpQZXJj
ZW50YWdlKTsKIAogICAgIC8vIExldCB2aWV3cG9ydEFuY2hvclkgYmUgdGhlIHkgZGltZW5zaW9u
IG9mIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiB2aWV3cG9ydAogICAgIC8vIGFuY2hvciBhbmQgcmVn
aW9uQW5jaG9yWSBiZSB0aGUgeSBkaW1lbnNpb24gb2YgdGhlIHRleHQgdHJhY2sgcmVnaW9uCiAg
ICAgLy8gYW5jaG9yLiBMZXQgdG9wT2Zmc2V0IGJlIHJlZ2lvbkFuY2hvclkgbXVsdGlwbGllZCBi
eSBoZWlnaHQgZGl2aWRlZCBieQogICAgIC8vIDEwMC4wLiBMZXQgdG9wIGJlIHRvcE9mZnNldCBz
dWJ0cmFjdGVkIGZyb20gJ3ZpZXdwb3J0QW5jaG9yWSB2aCcuCiAgICAgZG91YmxlIHRvcE9mZnNl
dCA9IG1fcmVnaW9uQW5jaG9yLnkoKSAqIGhlaWdodCAvIDEwMDsKLSAgICBtX3JlZ2lvbkRpc3Bs
YXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBtX3ZpZXdwb3J0
QW5jaG9yLnkoKSAtIHRvcE9mZnNldCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAg
ICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VG9wLCBtX3ZpZXdwb3J0QW5jaG9yLnkoKSAtIHRvcE9mZnNldCwgQ1NTVW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOwogCiAgICAgLy8gVGhlIGN1ZSBjb250YWluZXIgaXMgdXNlZCB0byB3cmFwIHRoZSBj
dWVzIGFuZCBpdCBpcyB0aGUgb2JqZWN0IHdoaWNoIGlzCiAgICAgLy8gZ3JhZHVhbGx5IHNjcm9s
bGVkIG91dCBhcyBtdWx0aXBsZSBjdWVzIGFyZSBhcHBlbmRlZCB0byB0aGUgcmVnaW9uLgpAQCAt
MzkyLDcgKzM5Miw3IEBAIHZvaWQgVlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUo
KQogICAgICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNldWRvKHRleHRUcmFja0N1ZUNvbnRhaW5l
clNoYWRvd1BzZXVkb0lkKCkpOwogICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRD
aGlsZCgqbV9jdWVDb250YWluZXIpOwogICAgIH0KLSAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgMC4wZiwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgbV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUb3AsIDAuMGYsIENTU1VuaXRUeXBlOjpQeCk7CiAKICAgICAvLyA3LjUgRXZlcnkgV2ViVlRU
IHJlZ2lvbiBvYmplY3QgaXMgaW5pdGlhbGlzZWQgd2l0aCB0aGUgZm9sbG93aW5nIENTUwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRmZWU4NmVjOGE1MjEwMDM5
ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIuLjQxZWQyMjE0ZDRmNDQxNzg5MWFjYzVmMThmOWE2MWM3
ZDNlNTE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xNDQ1
LDcgKzE0NDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogICAgICAgICBhdXRvIGltYWdl
ID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7CiAgICAgICAgIGltYWdlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBB
dG9tU3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbVN0
cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgaW1hZ2UtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgMTAwLCBDU1NVbml0VHlwZTo6Q1NTX1BF
UkNFTlRBR0UpOworICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU1heFdpZHRoLCAxMDAsIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlKTsKICAgICAgICAgaW1h
Z2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNl
cmlhbGl6YXRpb25Gb3JDU1MoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMykpKTsK
ICAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKTsKICAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmNwcAppbmRleCAwYzk2MzJlMmZmM2E0OWEwZjI2M2ViZmJmMzlmMWY4NzA5YmIy
ZjAzLi5kNGQzZDVkNmY5YWU2YzM2OTY5OWUzYmQxYWRhN2QwNGJkNjlmM2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0Qm94RXh0ZW50
IFByaW50Q29udGV4dDo6Y29tcHV0ZWRQYWdlTWFyZ2luKEZsb2F0Qm94RXh0ZW50IHByaW50TWFy
Z2luKQogICAgIC8vIEZJWE1FIEN1cnJlbnRseSBubyBwc2V1ZG8gY2xhc3MgaXMgc3VwcG9ydGVk
LgogICAgIGF1dG8gc3R5bGUgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5zdHlsZVNjb3BlKCkucmVz
b2x2ZXIoKS5zdHlsZUZvclBhZ2UoMCk7CiAKLSAgICBmbG9hdCBwaXhlbFRvUG9pbnRTY2FsZUZh
Y3RvciA9IDEgLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNT
Y2FsZUZhY3RvcihDU1NVbml0VHlwZTo6Q1NTX1BUKTsKKyAgICBmbG9hdCBwaXhlbFRvUG9pbnRT
Y2FsZUZhY3RvciA9IDEgLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2Fs
VW5pdHNTY2FsZUZhY3RvcihDU1NVbml0VHlwZTo6UHQpOwogICAgIHJldHVybiB7IHN0eWxlLT5t
YXJnaW5Ub3AoKS5pc0F1dG8oKSA/IHByaW50TWFyZ2luLnRvcCgpIDogc3R5bGUtPm1hcmdpblRv
cCgpLnZhbHVlKCkgKiBwaXhlbFRvUG9pbnRTY2FsZUZhY3RvciwKICAgICAgICAgc3R5bGUtPm1h
cmdpblJpZ2h0KCkuaXNBdXRvKCkgPyBwcmludE1hcmdpbi5yaWdodCgpIDogc3R5bGUtPm1hcmdp
blJpZ2h0KCkudmFsdWUoKSAqIHBpeGVsVG9Qb2ludFNjYWxlRmFjdG9yLAogICAgICAgICBzdHls
ZS0+bWFyZ2luQm90dG9tKCkuaXNBdXRvKCkgPyBwcmludE1hcmdpbi5ib3R0b20oKSA6IHN0eWxl
LT5tYXJnaW5Cb3R0b20oKS52YWx1ZSgpICogcGl4ZWxUb1BvaW50U2NhbGVGYWN0b3IsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1ZTZkM2JlZmI3MTE2ZTgy
MjMyMDEyMDYzZTg1NzdjOWU2Mjg3MWI3Li44Njg1NDhmOWY1NTkyZjYyNGVkZDZhNmQxYzg5ZTk4
MjQ3ZWY2Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTI3MTcsMjMgKzI3MTcsMjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVzaXplKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0LCBjb25zdCBMYXlvdXRTaXplJiBvbGRPZmYKICAgICBpZiAocmVz
aXplICE9IFJlc2l6ZTo6VmVydGljYWwgJiYgZGlmZmVyZW5jZS53aWR0aCgpKSB7CiAgICAgICAg
IGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgICAg
IC8vIE1ha2UgaW1wbGljaXQgbWFyZ2lucyBmcm9tIHRoZSB0aGVtZSBleHBsaWNpdCAoc2VlIDxo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3PikuCi0gICAgICAgICAg
ICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgcmVuZGVyZXItPm1hcmdpbkxlZnQoKSAvIHpvb21GYWN0b3IsIENTU1VuaXRUeXBlOjpD
U1NfUFgpOwotICAgICAgICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCByZW5kZXJlci0+bWFyZ2luUmlnaHQoKSAvIHpvb21G
YWN0b3IsIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICAgICAgc3R5bGVkRWxlbWVudC0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIHJlbmRlcmVyLT5t
YXJnaW5MZWZ0KCkgLyB6b29tRmFjdG9yLCBDU1NVbml0VHlwZTo6UHgpOworICAgICAgICAgICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0LCByZW5kZXJlci0+bWFyZ2luUmlnaHQoKSAvIHpvb21GYWN0b3IsIENTU1VuaXRUeXBlOjpQ
eCk7CiAgICAgICAgIH0KICAgICAgICAgTGF5b3V0VW5pdCBiYXNlV2lkdGggPSByZW5kZXJlci0+
d2lkdGgoKSAtIChpc0JveFNpemluZ0JvcmRlciA/IDBfbHUgOiByZW5kZXJlci0+aG9yaXpvbnRh
bEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CiAgICAgICAgIGJhc2VXaWR0aCA9IGJhc2VXaWR0
aCAvIHpvb21GYWN0b3I7Ci0gICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgcm91bmRUb0ludChiYXNlV2lkdGggKyBkaWZmZXJlbmNl
LndpZHRoKCkpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgc3R5bGVkRWxlbWVudC0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCByb3VuZFRvSW50KGJhc2VX
aWR0aCArIGRpZmZlcmVuY2Uud2lkdGgoKSksIENTU1VuaXRUeXBlOjpQeCk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc2l6ZSAhPSBSZXNpemU6Okhvcml6b250YWwgJiYgZGlmZmVyZW5jZS5oZWlnaHQo
KSkgewogICAgICAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKmVsZW1lbnQpKSB7
CiAgICAgICAgICAgICAvLyBNYWtlIGltcGxpY2l0IG1hcmdpbnMgZnJvbSB0aGUgdGhlbWUgZXhw
bGljaXQgKHNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0Nz4p
LgotICAgICAgICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmdpblRvcCwgcmVuZGVyZXItPm1hcmdpblRvcCgpIC8gem9vbUZhY3RvciwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCByZW5kZXJlci0+bWFyZ2luQm90
dG9tKCkgLyB6b29tRmFjdG9yLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHN0
eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Ub3As
IHJlbmRlcmVyLT5tYXJnaW5Ub3AoKSAvIHpvb21GYWN0b3IsIENTU1VuaXRUeXBlOjpQeCk7Cisg
ICAgICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWFyZ2luQm90dG9tLCByZW5kZXJlci0+bWFyZ2luQm90dG9tKCkgLyB6b29tRmFjdG9yLCBD
U1NVbml0VHlwZTo6UHgpOwogICAgICAgICB9CiAgICAgICAgIExheW91dFVuaXQgYmFzZUhlaWdo
dCA9IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChpc0JveFNpemluZ0JvcmRlciA/IDBfbHUgOiByZW5k
ZXJlci0+dmVydGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkpOwogICAgICAgICBiYXNlSGVp
Z2h0ID0gYmFzZUhlaWdodCAvIHpvb21GYWN0b3I7Ci0gICAgICAgIHN0eWxlZEVsZW1lbnQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHJvdW5kVG9JbnQoYmFzZUhl
aWdodCArIGRpZmZlcmVuY2UuaGVpZ2h0KCkpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAg
ICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdo
dCwgcm91bmRUb0ludChiYXNlSGVpZ2h0ICsgZGlmZmVyZW5jZS5oZWlnaHQoKSksIENTU1VuaXRU
eXBlOjpQeCk7CiAgICAgfQogCiAgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMTM2ZDAwNWM5OWU3NmFl
Mjg1ZmVkN2JjMWE0ZmU5NzllYjcyNDcxMC4uNjJkNWU0ZGE0YmYxYTRkMTAzZTAyODU1ZWEyYTcz
ZWY4MDZkNmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTczLDcgKzU3Myw3IEBAIExlbmd0aEJveCBSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRl
cm5hbFBhZGRpbmdCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiB7CiAgICAgZmxv
YXQgcGFkZGluZyA9IE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyOwogICAgIGlmIChzZXR0aW5n
cy5pT1NGb3JtQ29udHJvbFJlZnJlc2hFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBlbVNpemUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwor
ICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NV
bml0VHlwZTo6RW1zKTsKICAgICAgICAgcGFkZGluZyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxm
bG9hdD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0KSk7CiAgICAgfQogCkBAIC02MjIsNyArNjIyLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5
bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9u
UGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50
KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBh
dXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NVbml0VHlwZTo6
Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAu
NSwgQ1NTVW5pdFR5cGU6OkVtcyk7CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGlzIGVsZW1lbnQn
cyBwYXJlbnQgc3R5bGUgdG8gY2FsY3VsYXRlIGBlbWAgdW5pdHMsIHNvIGl0J3Mgb2theSB0byBw
YXNzIG51bGxwdHIgZm9yIGl0IGhlcmUuCiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0
ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBkb2N1bWVudC5y
ZW5kZXJTdHlsZSgpLCBudWxscHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIGRvY3VtZW50LmZy
YW1lKCkgPyBkb2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpIDogMS4pKTsKICAgICBz
dHlsZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwpAQCAt
MTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KiBlbGVtZW4KICAgICAvLyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5
bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWln
aHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBl
bGVtZW50IHN0eWxlLAogICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBzdHlsZSwgYW5kIHRoZSBy
ZW5kZXIgdmlldy4KLSAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MS4wLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkVtcyk7CiAgICAgaW50IHBpeGVscyA9
IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0
eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCkpOwogICAg
IHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAK
QEAgLTI1ODUsNyArMjU4NSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RC
dXR0b25EZWNvcmF0aW9uc1dpdGhGb3JtQ29udHJvbFJlZnJlc2goY29uc3QKICAgICAgICAgZ2x5
cGhQYXRoLmFkZEJlemllckN1cnZlVG8oeyAyOS40MTc5ZiwgNzEuOGYgfSwgeyAzMC41NDFmLCA3
Mi4zODY3ZiB9LCB7IDMxLjg1OTNmLCA3Mi4zODY3IH0pOwogICAgIH0KIAotICAgIGF1dG8gZW1T
aXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1VuaXRUeXBlOjpDU1NfRU1T
KTsKKyAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NV
bml0VHlwZTo6RW1zKTsKICAgICBhdXRvIGVtUGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3Ro
PGZsb2F0PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICBhdXRvIGdseXBoU2NhbGUgPSAw
LjY1ZiAqIGVtUGl4ZWxzIC8gZ2x5cGhTaXplLndpZHRoKCk7CiAgICAgZ2x5cGhTaXplID0gZ2x5
cGhTY2FsZSAqIGdseXBoU2l6ZTsKQEAgLTI2MTYsNyArMjYxNiw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVJT1M6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnRTdHlsZShSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvCiAKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRh
KCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpOwog
Ci0gICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNlYXJjaEZpZWxk
RGVjb3JhdGlvbkVtU2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXpl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzZWFyY2hGaWVsZERlY29yYXRpb25FbVNpemUs
IENTU1VuaXRUeXBlOjpFbXMpOwogICAgIGF1dG8gc2l6ZSA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0
aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBM
ZW5ndGhUeXBlOjpGaXhlZCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgKaW5kZXggNDA0ZmZhYzA4OGI1YWRlMTRjMDI0NmM0NTQxYTk3ZjI5N2EwYTZm
OC4uNzYzMTcxNWU3NDhmNTU2NzBhYjcwMjQ5MjYwMjFkNTM5M2FiNTU3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTIwMCw3ICsyMDAsNyBA
QCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoY29uc3QgQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5n
dGgoKSkgewogICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgbGVuZ3RoLnNldEhhc1F1aXJr
KHByaW1pdGl2ZVZhbHVlLnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJL
WV9FTVMpOworICAgICAgICBsZW5ndGguc2V0SGFzUXVpcmsocHJpbWl0aXZlVmFsdWUucHJpbWl0
aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpRdWlya3lFbXMpOwogICAgICAgICByZXR1cm4gbGVu
Z3RoOwogICAgIH0KIApAQCAtNDIzLDcgKzQyMyw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVy
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIFQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dE51bWJlcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWU8VD4oQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlPFQ+KENTU1VuaXRUeXBlOjpOdW1iZXIpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtNDM5LDcgKzQzOSw3IEBAIGlubGluZSBzaG9ydCBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhCdWlsZGVyU3RhdGUmLCBjCiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb0xpbWl0KQog
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnZhbHVlPHNob3J0
PihDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnZh
bHVlPHNob3J0PihDU1NVbml0VHlwZTo6TnVtYmVyKTsKIH0KIAogdGVtcGxhdGU8Q1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eT4KQEAgLTYwNyw3ICs2MDcsNyBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRo
T3BlcmF0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoQnVpbGRlclN0YXRl
JgogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlw
ZTo6Q1NTX1VSSSkgeworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgp
ID09IENTU1VuaXRUeXBlOjpVUkkpIHsKICAgICAgICAgICAgIFN0cmluZyBjc3NVUkxWYWx1ZSA9
IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBTdHJpbmcgZnJhZ21l
bnQgPSBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY3Nz
VVJMVmFsdWUsIGJ1aWxkZXJTdGF0ZS5kb2N1bWVudCgpKTsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBJdCBkb2Vzbid0IHdvcmsgd2l0aCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcyAoc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMpCkBAIC03OTQsNyArNzk0
LDcgQEAgaW5saW5lIGZsb2F0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lk
dGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICAgICAgICAgIHJlc3VsdCAqPSAzOwog
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUaGlj
aykKICAgICAgICAgICAgIHJlc3VsdCAqPSA1OwotICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGVtc1ZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NVbml0VHlw
ZTo6Q1NTX0VNUykpOworICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtc1ZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NVbml0VHlwZTo6RW1zKSk7CiAgICAg
ICAgIHdpZHRoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihidWlsZGVyU3RhdGUsIGVt
c1ZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN0eWxlRnJvbVYKICAgICAgICAgcmV0dXJuIGl0YWxpY1ZhbHVlKCk7CiAgICAg
QVNTRVJUKHZhbHVlSUQgPT0gQ1NTVmFsdWVPYmxpcXVlKTsKICAgICBpZiAoYXV0byogb2JsaXF1
ZVZhbHVlID0gZm9udFN0eWxlVmFsdWUub2JsaXF1ZVZhbHVlLmdldCgpKQotICAgICAgICByZXR1
cm4gRm9udFNlbGVjdGlvblZhbHVlKG9ibGlxdWVWYWx1ZS0+dmFsdWU8ZmxvYXQ+KENTU1VuaXRU
eXBlOjpDU1NfREVHKSk7CisgICAgICAgIHJldHVybiBGb250U2VsZWN0aW9uVmFsdWUob2JsaXF1
ZVZhbHVlLT52YWx1ZTxmbG9hdD4oQ1NTVW5pdFR5cGU6OkRlZykpOwogICAgIHJldHVybiBpdGFs
aWNWYWx1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
CmluZGV4IDQzOTQ1YzVlZGVlMTQzNTI3MGViNTNmZTZmMDc0ODdiYTBiMTY2M2IuLjY2NzNkOGVm
Njk0NjVhNWUwNzZiNjA2N2YyZGZiZDJhYWVjNjE4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0yNDksMTIgKzI0OSwxMiBAQCBpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlWm9vbShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Q1NTVmFsdWUmCiB9CiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDdXN0b206Om1tTGVuZ3RoKGRvdWJs
ZSBtbSkKIHsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobW0sIENTU1VuaXRUeXBlOjpDU1NfTU0pKTsKKyAgICBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1VuaXRUeXBl
OjpNbSkpOwogICAgIHJldHVybiB2YWx1ZS5nZXQoKS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KIGlubGluZSBMZW5ndGggQnVpbGRlckN1c3Rv
bTo6aW5jaExlbmd0aChkb3VibGUgaW5jaCkKIHsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaW5jaCwgQ1NTVW5pdFR5cGU6OkNTU19J
TikpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpbmNoLCBDU1NVbml0VHlwZTo6SW4pKTsKICAgICByZXR1cm4gdmFsdWUuZ2V0KCku
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiB9CiBi
b29sIEJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUq
IHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3Ro
JiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCkBAIC0zNzQsNyArMzc0LDcgQEAgaW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbihCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwKICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlU25hcCkKICAgICAgICAgICAgIHNuYXAgPSBJbWFnZVJlc29sdXRpb25TbmFwOjpQ
aXhlbHM7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc29sdXRpb24gPSBwcmltaXRpdmVW
YWx1ZS5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQUFgpOworICAgICAgICAgICAgcmVz
b2x1dGlvbiA9IHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpEb3RzUGVy
UGl4ZWwpOwogICAgIH0KICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRp
b25Tb3VyY2Uoc291cmNlKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29s
dXRpb25TbmFwKHNuYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKaW5kZXgg
MzkwNjEzMzJjYzJmZWE2OWEyZTliOTRhNWU5NDkwMDBkNjk4YmQ4Ny4uMmE1NzBkN2RkZWQ1ZmQ2
MjU5Y2NhY2MxMTMxYTA2MGJjNTZkMmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCkBAIC0xMDAsMjcgKzEwMCwyNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5cGUgcGFyc2VMZW5ndGhUeXBlKFN0cgogc3Rh
dGljIGlubGluZSBTVkdMZW5ndGhUeXBlIHByaW1pdGl2ZVR5cGVUb0xlbmd0aFR5cGUoQ1NTVW5p
dFR5cGUgcHJpbWl0aXZlVHlwZSkKIHsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUpIHsKLSAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpV
bmtub3duOgogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok51bWJlcjoK
ICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6Ok51bWJlcjsKLSAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRToKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpQZXJjZW50YWdlOgog
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfRU1TOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkVtczoKICAgICAgICAgcmV0
dXJuIFNWR0xlbmd0aFR5cGU6OkVtczsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkV4czoKICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6
OkV4czsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6UHg6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQaXhlbHM7Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX0NNOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNtOgogICAgICAgICBy
ZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6Q2VudGltZXRlcnM7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX01NOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6Ok1tOgogICAgICAgICByZXR1cm4gU1ZHTGVu
Z3RoVHlwZTo6TWlsbGltZXRlcnM7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkluOgogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SW5j
aGVzOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QVDoKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpQdDoKICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBvaW50czsKLSAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUEM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6UGM6CiAgICAgICAgIHJl
dHVybiBTVkdMZW5ndGhUeXBlOjpQaWNhczsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKQEAgLTEzMywzMSArMTMzLDMxIEBAIHN0YXRpYyBpbmxp
bmUgQ1NTVW5pdFR5cGUgbGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZShTVkdMZW5ndGhUeXBlIGxl
bmd0aFR5cGUpCiB7CiAgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7CiAgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpVbmtub3duOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dO
OworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlVua25vd247CiAgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpOdW1iZXI6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUjsK
KyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpOdW1iZXI7CiAgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQZXJjZW50YWdlOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5U
QUdFOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OlBlcmNlbnRhZ2U7CiAgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpFbXM6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0VNUzsK
KyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpFbXM7CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpFeHM6Ci0gICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0VYUzsKKyAgICAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpFeHM7CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQaXhlbHM6Ci0g
ICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX1BYOworICAgICAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OlB4OwogICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q2VudGltZXRlcnM6Ci0gICAgICAg
IHJldHVybiBDU1NVbml0VHlwZTo6Q1NTX0NNOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6
OkNtOwogICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWlsbGltZXRlcnM6Ci0gICAgICAgIHJldHVy
biBDU1NVbml0VHlwZTo6Q1NTX01NOworICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6Ok1tOwog
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6SW5jaGVzOgotICAgICAgICByZXR1cm4gQ1NTVW5pdFR5
cGU6OkNTU19JTjsKKyAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpJbjsKICAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6OlBvaW50czoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUFQ7
CisgICAgICAgIHJldHVybiBDU1NVbml0VHlwZTo6UHQ7CiAgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpQaWNhczoKLSAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUEM7CisgICAgICAgIHJl
dHVybiBDU1NVbml0VHlwZTo6UGM7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjsKKyAgICByZXR1cm4gQ1NTVW5p
dFR5cGU6OlVua25vd247CiB9CiAKIFNWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShTVkdM
ZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KaW5kZXggYzg4NGQ4Y2RiYzIxNDk2YWJiYzFiNGQ5YzhmZWRjZjJhOTEz
MDI3Zi4uNjMwNTg5Mzk4ZWVjNWJkYmM3YjY3ZWU2ZTE2MDU5NGE5ODM3NDBhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KQEAgLTEwMiwxMSArMTAyLDExIEBAIHZvaWQgUERGUGx1Z2luQW5ub3Rh
dGlvbjo6dXBkYXRlR2VvbWV0cnkoKQogICAgIE5TUmVjdCBhbm5vdGF0aW9uUmVjdCA9IE5TUmVj
dEZyb21DR1JlY3QoW21fcGRmTGF5ZXJDb250cm9sbGVyIGJvdW5kc0ZvckFubm90YXRpb246bV9h
bm5vdGF0aW9uLmdldCgpXSk7CiAKICAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgc3R5bGVkRWxlbWVu
dC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBhbm5vdGF0aW9uUmVj
dC5zaXplLndpZHRoLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICBzdHlsZWRFbGVtZW50LT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBhbm5vdGF0aW9uUmVjdC5z
aXplLmhlaWdodCwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBhbm5vdGF0aW9uUmVjdC5zaXpl
LndpZHRoLCBDU1NVbml0VHlwZTo6UHgpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIGFubm90YXRpb25SZWN0LnNpemUuaGVpZ2h0
LCBDU1NVbml0VHlwZTo6UHgpOwogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKG1fcGRmTGF5
ZXJDb250cm9sbGVyLnNjcm9sbFBvc2l0aW9uKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgYW5ub3RhdGlvblJlY3Qub3JpZ2luLngg
LSBzY3JvbGxQb3NpdGlvbi54KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwotICAgIHN0eWxlZEVs
ZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGRvY3VtZW50U2l6
ZS5oZWlnaHQoKSAtIGFubm90YXRpb25SZWN0Lm9yaWdpbi55IC0gYW5ub3RhdGlvblJlY3Quc2l6
ZS5oZWlnaHQgLSBzY3JvbGxQb3NpdGlvbi55KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAg
IHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBh
bm5vdGF0aW9uUmVjdC5vcmlnaW4ueCAtIHNjcm9sbFBvc2l0aW9uLngoKSwgQ1NTVW5pdFR5cGU6
OlB4KTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wLCBkb2N1bWVudFNpemUuaGVpZ2h0KCkgLSBhbm5vdGF0aW9uUmVjdC5vcmlnaW4ueSAt
IGFubm90YXRpb25SZWN0LnNpemUuaGVpZ2h0IC0gc2Nyb2xsUG9zaXRpb24ueSgpLCBDU1NVbml0
VHlwZTo6UHgpOwogfQogCiBib29sIFBERlBsdWdpbkFubm90YXRpb246OmhhbmRsZUV2ZW50KEV2
ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggN2U5ZGVk
OGU5MzhhNDJhOTE0NTBiOGFmYmViNjZmZjFkM2M2YTVmZC4uN2JkZjVkODFmMjZjMjJhNjM2ZGI3
NDgwMGYyZWI0MjM4M2Q4NjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0K
QEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjp1cGRhdGVH
ZW9tZXRyeSgpCiAgICAgUERGUGx1Z2luQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKTsKIAog
ICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVt
ZW50Kj4oZWxlbWVudCgpKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGNob2ljZUFubm90YXRpb24oKS5mb250LnBvaW50U2l6
ZSAqIHBkZkxheWVyQ29udHJvbGxlcigpLmNvbnRlbnRTY2FsZUZhY3RvciwgQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBjaG9pY2VBbm5vdGF0aW9uKCkuZm9udC5wb2ludFNpemUgKiBwZGZM
YXllckNvbnRyb2xsZXIoKS5jb250ZW50U2NhbGVGYWN0b3IsIENTU1VuaXRUeXBlOjpQeCk7CiB9
CiAKIHZvaWQgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbQppbmRleCA3NDk1ZTA0MzZjNDA3NDNmNGNlZGZiZTZlYmM2NjA0OGY2
OTg1NzUxLi5hMjJmZjZiZTNlZTg3NWQzYmQzYTYzN2ZkYjM4OWNlZWU5YmVkMTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFu
bm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQogICAgIFBERlBsdWdpbkFubm90YXRp
b246OnVwZGF0ZUdlb21ldHJ5KCk7CiAKICAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgc3R5bGVkRWxl
bWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCB0ZXh0QW5u
b3RhdGlvbigpLmZvbnQucG9pbnRTaXplICogcGRmTGF5ZXJDb250cm9sbGVyKCkuY29udGVudFNj
YWxlRmFjdG9yLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIHRleHRBbm5vdGF0aW9uKCku
Zm9udC5wb2ludFNpemUgKiBwZGZMYXllckNvbnRyb2xsZXIoKS5jb250ZW50U2NhbGVGYWN0b3Is
IENTU1VuaXRUeXBlOjpQeCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNv
bW1pdCgpCg==
</data>
<flag name="review"
          id="459745"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>