<?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>206214</bug_id>
          
          <creation_ts>2020-01-13 22:32:38 -0800</creation_ts>
          <short_desc>[bmalloc] IsoHeap&apos;s initial setup should be small</short_desc>
          <delta_ts>2020-01-17 11:14:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1606252</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-13 22:32:38 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606253</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-13 22:33:01 -0800</bug_when>
    <thetext>I think we can improve Membuster via this change (based on the tracked data).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606791</commentid>
    <comment_count>2</comment_count>
      <attachid>387753</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-14 21:37:29 -0800</bug_when>
    <thetext>Created attachment 387753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606792</commentid>
    <comment_count>3</comment_count>
      <attachid>387754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-14 21:45:10 -0800</bug_when>
    <thetext>Created attachment 387754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606840</commentid>
    <comment_count>4</comment_count>
      <attachid>387763</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 01:13:37 -0800</bug_when>
    <thetext>Created attachment 387763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606842</commentid>
    <comment_count>5</comment_count>
      <attachid>387765</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 01:44:17 -0800</bug_when>
    <thetext>Created attachment 387765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606844</commentid>
    <comment_count>6</comment_count>
      <attachid>387766</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 01:58:39 -0800</bug_when>
    <thetext>Created attachment 387766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607149</commentid>
    <comment_count>7</comment_count>
      <attachid>387841</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 13:50:44 -0800</bug_when>
    <thetext>Created attachment 387841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607189</commentid>
    <comment_count>8</comment_count>
      <attachid>387854</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 15:06:45 -0800</bug_when>
    <thetext>Created attachment 387854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607201</commentid>
    <comment_count>9</comment_count>
      <attachid>387856</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-15 15:29:17 -0800</bug_when>
    <thetext>Created attachment 387856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607536</commentid>
    <comment_count>10</comment_count>
      <attachid>387856</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-01-16 10:37:23 -0800</bug_when>
    <thetext>Comment on attachment 387856
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607651</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-16 14:05:13 -0800</bug_when>
    <thetext>Committed r254708: &lt;https://trac.webkit.org/changeset/254708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607653</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-16 14:06:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/58657110&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608107</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-17 11:14:23 -0800</bug_when>
    <thetext>This broke an API test, tracking in https://bugs.webkit.org/show_bug.cgi?id=206432</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387753</attachid>
            <date>2020-01-14 21:37:29 -0800</date>
            <delta_ts>2020-01-14 21:45:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200114213729.patch</filename>
            <type>text/plain</type>
            <size>82051</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMzljYmY1YzJlYTJhOGE1
NWUyMTBlMGI1NGMyMGI5ZTc0MTNhMjk5Ny4uYTMwNzRlZmU0YTU5NmMyZTUzNGIyODE4NTdmMDA1
ZWE0ODY1NDk0OCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMS0xNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlu
bGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6ZnJlZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAq
IGJtYWxsb2MvSXNvU2hhcmVkSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVh
cDo6SXNvU2hhcmVkSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5l
cy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpmcmVlKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1RMUy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnku
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRW50cnkuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRW50cnk6Oklz
b1RMU0VudHJ5KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5Lmg6CisgICAgICAgICog
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlZmF1bHRJ
c29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkpOgorICAgICAgICAoYm1h
bGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkp
OiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OnNjYXZlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvVExTOjphbGxvY2F0ZUltcGwpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxv
Y2F0ZUZhc3QpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZVNsb3cpOgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RM
U0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFsbG9jL1BhY2tlZC5oOiBBZGRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6OlBhY2tlZDo6UGFja2VkKToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6c2V0KToKKyAgICAgICAgKGJt
YWxsb2M6OlBhY2tlZDo6b3BlcmF0b3I9KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6ZXhj
aGFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzd2FwKToKKyAgICAgICAgKGJtYWxs
b2M6OmFsaWdub2YpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjpleGNoYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OnN3YXApOgorICAgICAgICAo
Ym1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjp1bndyYXApOgorICAgICAgICAqIGJtYWxsb2MvU2Nh
dmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5jcHA6CisgICAgICAgIChibWFsbG9j
Ojpab25lOjpab25lKToKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuaDoKKwogMjAyMC0wMS0wOSAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxs
b2NdIEV4dHJhY3QgY29uc3RhbnRzIGZyb20gSGVhcCBhbmQgc2hhcmUgaXQgYW1vbmcgSGVhcHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9ibWFs
bG9jL0NNYWtlTGlzdHMudHh0CmluZGV4IDMwZGJjMzQ1YjQ5MjVmZTExZjZmM2Q2Nzc0ZTJjZjk3
ZmNkNmQ1ZTMuLjZjNmI3YTUwNWY5ZjEwYzdlYWFiNWU3YTM0NzkyNjVkMTJlNzhhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9ibWFsbG9j
L0NNYWtlTGlzdHMudHh0CkBAIC0xMTIsNiArMTEyLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hF
QURFUlMKICAgICBibWFsbG9jL011dGV4LmgKICAgICBibWFsbG9jL09iamVjdC5oCiAgICAgYm1h
bGxvYy9PYmplY3RUeXBlLmgKKyAgICBibWFsbG9jL1BhY2tlZC5oCiAgICAgYm1hbGxvYy9QZXJI
ZWFwS2luZC5oCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNzLmgKICAgICBibWFsbG9jL1BlclRocmVh
ZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjE3M2E5N2RjODU4OTNlN2ZiYTkwZTYyN2E4OTYzZGE2NjFjYmE1MS4uM2I4NWU3
N2ZmYjgzYTU0MGU2OGY0MzMzZjY3NTJhZWI4M2VkZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwLDYgKzE0MCw3IEBA
CiAJCUFEMTRBRDJBMjAyNTI5QzcwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDE0QUQyODIwMjUyOUIwMDA4
OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tICovOyB9OwogCQlERThCMTNCMzIxQ0M1RDlGMDBBNjNG
Q0QgLyogQlZNVGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzFFNzQ4MDIyMzhDQTVDMDA1
RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclBy
b2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyog
UGFja2VkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNBNDEzQzkyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E0MTNDODIyNjA2
MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwMjIyNUQyQzAxMDBBMEUwQzMg
LyogSXNvU2hhcmVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNGMjQ0MDEyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwNDIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNv
U2hhcmVkUGFnZS5jcHAgKi87IH07CkBAIC0yOTUsNiArMjk2LDcgQEAKIAkJQUQxNEFEMjgyMDI1
MjlCMDAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFByb2Nlc3NDaGVjay5tbTsgcGF0aCA9IGJtYWxsb2MvUHJvY2Vzc0No
ZWNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERThCMTNCMjIxQ0M1RDlGMDBB
NjNGQ0QgLyogQlZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCVk1UYWdzLmg7IHBhdGggPSBibWFs
bG9jL0JWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxRTc0N0YyMjM4
Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU3RhdGljUGVyUHJvY2Vzcy5oOyBwYXRoID0gYm1hbGxvYy9TdGF0aWNQZXJQ
cm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjhEODRDMjNDRUIzODkw
MDU0NUIxOCAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFj
a2VkLmg7IHBhdGggPSBibWFsbG9jL1BhY2tlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0E0MTNDODIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZUlubGluZXMuaDsg
cGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNGMjQ0MDEyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZS5oOyBwYXRoID0g
Ym1hbGxvYy9Jc29TaGFyZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RjI0NDAzMjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuY3BwOyBwYXRoID0gYm1hbGxv
Yy9Jc29TaGFyZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMiw2
ICs1MzQsNyBAQAogCQkJCTE0Qzg5OTJBMUNDNDg1RTcwMDI3QTA1NyAvKiBNYXAuaCAqLywKIAkJ
CQkxNDNDQjgxQTE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguY3BwICovLAogCQkJCTE0M0NCODFC
MTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5oICovLAorCQkJCUUzMjhEODRDMjNDRUIzODkwMDU0
NUIxOCAvKiBQYWNrZWQuaCAqLywKIAkJCQkwRjVCRjE0ODFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVy
SGVhcEtpbmQuaCAqLywKIAkJCQkwRjI2QTdBNDIwNTQ4MzBEMDA5MEExNDEgLyogUGVyUHJvY2Vz
cy5jcHAgKi8sCiAJCQkJMTQ0NDZBMDcxN0E2MUZBNDAwRjlFQTFEIC8qIFBlclByb2Nlc3MuaCAq
LywKQEAgLTY0OCw2ICs2NTEsNyBAQAogCQkJCTE0M0NCODFEMTkwMjJCQzkwMEIxNkE0NSAvKiBN
dXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTMxOEY0OEQwRjAwOTUwNzAyIC8qIE9i
amVjdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAv
KiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAv
KiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUw
NzAyIC8qIFBlclByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUw
MDk1MDcwMiAvKiBQZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxn
b3JpdGhtLmgKaW5kZXggYjM4N2VkYWFjYzhiODI4NTNjYWJiZDgzMDg1NzMyMjdlYzM5YzczOS4u
YzFiMDAxMjlmOGRlMjNjZjk0MTUyMTRhYWFmYjE1N2U0ZTUyNTMzZiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCkBAIC0xOTMsNiArMTkzLDMxIEBAIGJvb2wgZmluZEJpdEluV29yZChU
IHdvcmQsIHNpemVfdCYgaW5kZXgsIHNpemVfdCBlbmRJbmRleCwgYm9vbCB2YWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHVuc2ln
bmVkIGN0ekNvbnN0ZXhwcihUIHZhbHVlKQoreworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRT
aXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7CisKKyAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0
ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgICBVVCB1VmFsdWUgPSB2YWx1ZTsKKworICAg
IHVuc2lnbmVkIHplcm9Db3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJp
dFNpemU7IGkrKykgeworICAgICAgICBpZiAodVZhbHVlICYgMSkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIHplcm9Db3VudCsrOworICAgICAgICB1VmFsdWUgPj49IDE7CisgICAgfQor
ICAgIHJldHVybiB6ZXJvQ291bnQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4
cHIgdW5zaWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCit7CisgICAgcmV0dXJu
IGN0ekNvbnN0ZXhwcih0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYg
Ly8gQWxnb3JpdGhtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRm
b3JtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCmluZGV4IDZjNGY3MDJh
ZTEyNmVmMWFiZTc4MmQzNWRmNDhhMDY2Mjk1MDlmNjQuLjNmYmUwZDRiOThmMTk2NWNkNjJjMTRj
NTY2NjY2ZjliNWY0YzFhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBs
YXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMjMw
LDYgKzIzMCw0NSBAQAogCiAjZW5kaWYgLyogQVJNICovCiAKKworI2lmIEJDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKKy8qIF9fTFA2NF9fIGlzIG5vdCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mg
c2luY2UgaXQgdXNlcyBMTFA2NC4gVXNpbmcgX19TSVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIu
ICovCisjaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDgKKyNkZWZpbmUgQkNQVV9BRERSRVNTNjQg
MQorI2VsaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDQKKyNkZWZpbmUgQkNQVV9BRERSRVNTMzIg
MQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIKKyNlbmRpZgorI2Vs
c2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKwor
I2lmIEJDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09S
REVSX0JJR19FTkRJQU5fXworI2RlZmluZSBCQ1BVX0JJR19FTkRJQU4gMQorI2VsaWYgX19CWVRF
X09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKyNkZWZpbmUgQkNQVV9MSVRUTEVf
RU5ESUFOIDEKKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfUERQX0VORElBTl9fCisj
ZGVmaW5lIEJDUFVfTUlERExFX0VORElBTiAxCisjZWxzZQorI2Vycm9yICJVbmtub3duIGVuZGlh
biIKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxs
b2MiCisjZW5kaWYKKworI2lmIEJDUFUoQUREUkVTUzY0KQorI2lmIEJPUyhEQVJXSU4pICYmIEJD
UFUoQVJNNjQpCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCAzNgorI2Vsc2UK
Ky8qIFdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGVmZmVjdGl2ZSBhZGRyZXNzIHdpZHRoIGlzIDw9
IDQ4IGluIDY0Yml0IGFyY2hpdGVjdHVyZXMgKGUuZy4gTmFOIGJveGluZykuICovCisjZGVmaW5l
IEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCA0OAorI2VuZGlmCisjZWxzZQorI2RlZmluZSBC
T1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggMzIKKyNlbmRpZgorCiAjZGVmaW5lIEJBVFRSSUJV
VEVfUFJJTlRGKGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykgX19hdHRyaWJ1
dGVfXygoX19mb3JtYXRfXyhwcmludGYsIGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3Vt
ZW50cykpKQogCiAjaWYgQlBMQVRGT1JNKE1BQykgfHwgQlBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXggN2E2NjdhN2RkNmI1ZTgxY2U2NDc5
MTFlODhmYjE2OTFlODQ2ZGYxOS4uMmM5ZjViNDU4MGFkMTRmYzg2MGIxNmZmNWE2OTljNmEwM2Vl
MzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoRGVidWdIZWFwKTsKIAogI2lmIEJP
UyhEQVJXSU4pCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAg
ICAgOiBtX3pvbmUobWFsbG9jX2NyZWF0ZV96b25lKDAsIDApKQogICAgICwgbV9wYWdlU2l6ZSh2
bVBhZ2VTaXplKCkpCiB7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGVidWdIZWFwOjpkdW1wKCkK
IAogI2Vsc2UKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
CitEZWJ1Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAg
ICA6IG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdI
ZWFwLmgKaW5kZXggOTU4YTIyMDkwYTQxNDA3Y2U2MDhiZGQ0YTFmYTEyYjhmZmJhNTEwYi4uOWRi
ODU1MjNiZWU3NzNhZjE4YTE2Yjk4MDViMTA5M2JlOTExYzZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlYnVnSGVhcC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICAgICAK
IGNsYXNzIERlYnVnSGVhcCA6IHByaXZhdGUgU3RhdGljUGVyUHJvY2VzczxEZWJ1Z0hlYXA+IHsK
IHB1YmxpYzoKLSAgICBEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIERl
YnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgdm9pZCog
bWFsbG9jKHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CiAgICAgdm9pZCogbWVtYWxpZ24oc2l6ZV90
IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlZmVycmVkVHJpZ2dlci5oCmluZGV4IGIyNzZhMmMwZTA2ZTNhZjczNzIwYjdjN2FjZjc0NjRl
ZjRkMTMwYjcuLjI5ZmIxOTc2OWVkYjlkZGIwYjRjMWU2ZDA3NmRkNWE1OTM2NTM0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaApAQCAtMjYsNiArMjYsOCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJc29QYWdlVHJpZ2dlci5oIgorI2luY2x1ZGUgIk11
dGV4LmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtMzcs
MTAgKzM5LDEwIEBAIGNsYXNzIERlZmVycmVkVHJpZ2dlciB7CiAgICAgRGVmZXJyZWRUcmlnZ2Vy
KCkgeyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgZGlk
QmVjb21lKElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci0gICAgdm9pZCBoYW5kbGVEZWZlcnJhbChJc29QYWdlPENvbmZp
Zz4mKTsKKyAgICB2b2lkIGhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Jl
ZW5EZWZlcnJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlZmVycmVkVHJpZ2dlcklubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJy
ZWRUcmlnZ2VySW5saW5lcy5oCmluZGV4IDA5Y2ZjODU3N2ZhYWY4MTJiMWZjZjlhMzQ0NTNiNGNi
ZDBiY2RlMzYuLjcxZWE3MjY4YmIxY2YyYzdhZGI0YWU2MDM3ZjM2NDJmYTBjNzI3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCkBAIC0z
MiwyMiArMzIsMjIgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTxJc29QYWdlVHJp
Z2dlciB0cmlnZ2VyPgogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBEZWZlcnJlZFRy
aWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERl
ZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIGlmIChwYWdlLmlz
SW5Vc2VGb3JBbGxvY2F0aW9uKCkpCiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gdHJ1ZTsK
ICAgICBlbHNlCi0gICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0cmln
Z2VyKTsKKyAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFnZSwg
dHJpZ2dlcik7CiB9CiAKIHRlbXBsYXRlPElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6aGFuZGxl
RGVmZXJyYWwoSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJp
Z2dlcj46OmhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tl
ciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIFJFTEVBU0VfQkFTU0VSVCghcGFnZS5p
c0luVXNlRm9yQWxsb2NhdGlvbigpKTsKICAgICAKICAgICBpZiAobV9oYXNCZWVuRGVmZXJyZWQp
IHsKLSAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUoJnBhZ2UsIHRyaWdnZXIpOwor
ICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZShsb2NrZXIsICZwYWdlLCB0cmlnZ2Vy
KTsKICAgICAgICAgbV9oYXNCZWVuRGVmZXJyZWQgPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCmluZGV4IDI1NzRiMjM5ZjNhMGZkYzY0OTE3ODZk
MzlkMzU3MDE0ZWIxMjA3NzkuLjg3N2E2YzI5ZTVmN2QzOGM5ZmJlMjFhMjFmNzUwNDBhYjY5MTdk
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RhdGljIGJvb2wgaXNOYW5vTWFsbG9jRW5hYmxlZCgpCiAKIERFRklORV9TVEFUSUNf
UEVSX1BST0NFU1NfU1RPUkFHRShFbnZpcm9ubWVudCk7CiAKLUVudmlyb25tZW50OjpFbnZpcm9u
bWVudChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0Vudmlyb25tZW50OjpFbnZpcm9ubWVudChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVk
KGNvbXB1dGVJc0RlYnVnSGVhcEVuYWJsZWQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52
aXJvbm1lbnQuaAppbmRleCBhNTYyNTZlYmNhOGU5ZDRmY2U5ZGI0MzUyZGUyMGEyNzJmNzM0OTVj
Li43YjI4ZGU5MjczZTAzNGRiNGY2NzlhMDI1YTliMjkwYWJmZmUwYmYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9FbnZpcm9ubWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBibWFsbG9j
IHsKIAogY2xhc3MgRW52aXJvbm1lbnQgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxFbnZpcm9u
bWVudD4gewogcHVibGljOgotICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOworICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOwogICAgIAogICAgIGJvb2wgaXNEZWJ1Z0hlYXBFbmFibGVkKCkgeyByZXR1cm4g
bV9pc0RlYnVnSGVhcEVuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcApp
bmRleCAzY2NhMmQ1NGU2NjNkNTQyMjA1NTAxMDk3MWZkOTNlN2VmYmE3MTExLi40MjAxOTU5ZjYw
YmU2MjEwNTJiMTMwZDNlOTY3NWI5ZmIwMDczNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2Fj
YWdlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ2FsbGJhY2sgewogbmFtZXNwYWNlIGJt
YWxsb2MgewogCiBzdHJ1Y3QgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyA6IHB1YmxpYyBTdGF0
aWNQZXJQcm9jZXNzPFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M+IHsKLSAgICBQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2tzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KKyAgICBQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2tzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KICAg
ICAKICAgICBWZWN0b3I8R2lnYWNhZ2U6OkNhbGxiYWNrPiBjYWxsYmFja3M7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5jcHAKaW5kZXggMTE4OWI4Nzc4NDQ3NWUwN2UzYWZiY2EwOWIzMzEwYjMxYmRj
MTUwMS4uM2FhZTQzYTIxN2FlM2IxZDFkY2NhZDBlNzE1ZmRjNDFmODM5NjVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHNpemVfdCBIZWFwOjpnaWdhY2FnZVNp
emUoKQogICAgIHJldHVybiBHaWdhY2FnZTo6c2l6ZShnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9
CiAKLXNpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikK
K3NpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikKIHsKICAgICByZXR1cm4gbV9mcmVlYWJsZU1lbW9yeTsKIH0KQEAgLTkxLDE0ICs5MSwxNCBA
QCBzaXplX3QgSGVhcDo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAK
LXZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCit2b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKQogewogICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwog
ICAgIG1faGFzUGVuZGluZ0RlY29tbWl0cyA9IGZhbHNlOwogICAgIG1fY29uZGl0aW9uLm5vdGlm
eV9hbGwoKTsKIH0KIAotdm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
KQordm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewog
ICAgIG1fZm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CiAgICAgbV9mcmVl
YWJsZU1lbW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwpAQCAtMTE0LDkgKzExNCw5
IEBAIHZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCi12b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1
bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiAjZWxz
ZQotdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxr
RGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQordm9pZCBI
ZWFwOjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVj
b21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQogI2VuZGlmCiB7
CiAgICAgZm9yIChhdXRvJiBsaXN0IDogbV9mcmVlUGFnZXMpIHsKQEAgLTE2OSw3ICsxNjksNyBA
QCB2b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtE
ZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpegogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQotdm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxr
RGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIHZvaWQqIG5ld0hpZ2hXYXRlck1hcmsgPSBu
dWxscHRyOwogICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuaAppbmRleCBkYjMyNDUzNjg3ZmI1NmU2MDAwODNiZWUxMGJhNTRmMDgyYzNk
NjkzLi41OWM3NWYyN2I5Yzc5ODUwMGRkZGRmYjVhM2I2MzRiY2M4ZDJjMWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaApAQCAtNzYsMTQgKzc2LDE0IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgc2hy
aW5rTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7
CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7Ci0gICAgdm9p
ZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CisgICAg
dm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CiAjZWxzZQotICAgIHZvaWQgc2NhdmVuZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOwogI2VuZGlmCi0gICAg
dm9pZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6
ZV90JiBmcmVlZCwgc2l6ZV90IGdvYWwpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBn
b2FsKTsKIAotICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKICAgICBzaXplX3QgZm9vdHByaW50KCk7CiAKICAgICB2b2lkIGV4dGVybmFsRGVjb21t
aXQodm9pZCogcHRyLCBzaXplX3QpOwpAQCAtOTEsMTAgKzkxLDEwIEBAIGNsYXNzIEhlYXAgewog
ICAgIHZvaWQgZXh0ZXJuYWxDb21taXQodm9pZCogcHRyLCBzaXplX3QpOwogICAgIHZvaWQgZXh0
ZXJuYWxDb21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBwdHIsIHNpemVfdCk7
CiAKLSAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKKyAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOworICAg
IHZvaWQgZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBM
YXJnZVJhbmdlJiwgQnVsa0RlY29tbWl0Jik7CiAKICAgICBzdHJ1Y3QgTGFyZ2VPYmplY3RIYXNo
IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCoga2V5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKaW5kZXggNTZiNjdiMzY0OTQwYmM4MTc2OTRlZDA5
YmM0ZDY1NjA4ODBhNzU3NS4uZDVjMGMyZTJhZGUyNzM0YzNmMGQyMjk2MWJiOTQ2ZWNiYzU0Yzc5
NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0yOSw3ICsy
OSw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19T
VE9SQUdFKEhlYXBDb25zdGFudHMpOwogCi1IZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsg
dm1QYWdlU2l6ZVBoeXNpY2FsKCkgfQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNp
emVQaHlzaWNhbCA+PSBzbWFsbFBhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcENvbnN0YW50cy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29u
c3RhbnRzLmgKaW5kZXggNWE3MzU3MzlhNjUyNGQ2NzQwNGI0NzMzZDRkOWQ0ZGNhZDRhNTNjMC4u
ODRiNDAxOWRmNTc0MzY2YTM5YjE3M2NhZDkwYzk4MjAzZjFjOTgxOCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGJtYWxs
b2MgewogCiBjbGFzcyBIZWFwQ29uc3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SGVh
cENvbnN0YW50cz4gewogcHVibGljOgotICAgIEhlYXBDb25zdGFudHMoc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOworICAgIEhlYXBDb25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOwogICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7CiAKICAgICBpbmxpbmUgc2l6ZV90
IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGFzc2Vz
W3NpemVDbGFzc107IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxs
b2NhdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oCmluZGV4IGEw
ZjcwODBjYmIxYzIxNzE3NTdjM2Q2ZGY3NDc1MmVmNTFiZDhkMTcuLjNiYTA4YWEyYjY4YjJjNDM4
ODMwMDBiZjIxNDQxMjFlY2ZjZjQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0
b3IuaApAQCAtNDAsMTMgKzQwLDEyIEBAIGNsYXNzIElzb0FsbG9jYXRvciB7CiAgICAgSXNvQWxs
b2NhdG9yKElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICB+SXNvQWxsb2NhdG9yKCk7CiAgICAg
Ci0gICAgdm9pZCogYWxsb2NhdGUoYm9vbCBhYm9ydE9uRmFpbHVyZSk7Ci0gICAgdm9pZCBzY2F2
ZW5nZSgpOworICAgIHZvaWQqIGFsbG9jYXRlKElzb0hlYXBJbXBsPENvbmZpZz4mLCBib29sIGFi
b3J0T25GYWlsdXJlKTsKKyAgICB2b2lkIHNjYXZlbmdlKElzb0hlYXBJbXBsPENvbmZpZz4mKTsK
ICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1
cmUpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhJc29IZWFwSW1wbDxDb25maWc+JiwgYm9vbCBh
Ym9ydE9uRmFpbHVyZSk7CiAgICAgCi0gICAgSXNvSGVhcEltcGw8Q29uZmlnPiogbV9oZWFwIHsg
bnVsbHB0ciB9OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CiAgICAgSXNvUGFnZTxDb25maWc+
KiBtX2N1cnJlbnRQYWdlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggNTQ1NWZmZGNmMmQwMzIwZjMzZjM2YzczMTFm
OTYyZWY3Yzc4MjQ3YS4uOGQ3YTRmYzA4NmNjYzg3MTUxYWQ0N2UwZmE1ZjgzMmZhZmUwZTQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTM0
LDggKzM0LDcgQEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotSXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25m
aWc+JiBoZWFwKQotICAgIDogbV9oZWFwKCZoZWFwKQorSXNvQWxsb2NhdG9yPENvbmZpZz46Oklz
b0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+JikKIHsKIH0KIApAQCAtNDUsMzYgKzQ0LDM2
IEBAIElzb0FsbG9jYXRvcjxDb25maWc+Ojp+SXNvQWxsb2NhdG9yKCkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgotdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlKGJv
b2wgYWJvcnRPbkZhaWx1cmUpCit2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUo
SXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHZvaWQqIHJlc3VsdCA9
IG1fZnJlZUxpc3QuYWxsb2NhdGU8Q29uZmlnPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsK
LSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3coYWJvcnRPbkZhaWx1cmUpOworICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyhoZWFwLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgICAg
IH0pOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxv
Y2F0ZWQgJXAgb2Ygc2l6ZSAldVxuIiwgbV9oZWFwLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0U2l6
ZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IGFsbG9jYXRlZCAlcCBvZiBzaXplICV1
XG4iLCAmaGVhcCwgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUJOT19JTkxJTkUgdm9pZCogSXNv
QWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQorQk5P
X0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KElzb0hlYXBJ
bXBsPENvbmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIobV9oZWFwLT5sb2NrKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOwogCi0gICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlv
bk1vZGUgPSBtX2hlYXAtPnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CisgICAgQWxsb2NhdGlvbk1v
ZGUgYWxsb2NhdGlvbk1vZGUgPSBoZWFwLnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgaWYg
KGFsbG9jYXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpTaGFyZWQpIHsKICAgICAgICAgaWYg
KG1fY3VycmVudFBhZ2UpIHsKLSAgICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0
aW5nKG1fZnJlZUxpc3QpOworICAgICAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRp
bmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsKICAgICAgICAgICAgIG1fY3VycmVudFBhZ2UgPSBudWxs
cHRyOwogICAgICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX2hlYXAtPmFsbG9jYXRlRnJvbVNoYXJlZChsb2NrZXIsIGFib3J0T25GYWlsdXJl
KTsKKyAgICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGVGcm9tU2hhcmVkKGxvY2tlciwgYWJvcnRP
bkZhaWx1cmUpOwogICAgIH0KIAogICAgIEJBU1NFUlQoYWxsb2NhdGlvbk1vZGUgPT0gQWxsb2Nh
dGlvbk1vZGU6OkZhc3QpOwogICAgIAotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVz
dWx0ID0gbV9oZWFwLT50YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0
PENvbmZpZz4gcmVzdWx0ID0gaGVhcC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIGlm
IChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OlN1Y2Nlc3MpIHsKICAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKHJlc3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2luZDo6T3V0T2ZNZW1vcnkp
OwogICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIWFib3J0T25GYWlsdXJlKTsKQEAgLTgyLDcgKzgx
LDcgQEAgQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93
KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgfQogICAgIAogICAgIGlmIChtX2N1cnJlbnRQYWdl
KQotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0KTsKKyAg
ICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsK
ICAgICAKICAgICBtX2N1cnJlbnRQYWdlID0gcmVzdWx0LnBhZ2U7CiAgICAgbV9mcmVlTGlzdCA9
IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOwpAQCAtOTEsMTEgKzkwLDExIEBAIEJO
T19JTkxJTkUgdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFi
b3J0T25GYWlsdXJlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0Fs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSgpCit2b2lkIElzb0FsbG9jYXRvcjxDb25maWc+Ojpz
Y2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogewogICAgIGlmIChtX2N1cnJlbnRQ
YWdlKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG1faGVhcC0+bG9j
ayk7Ci0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOwor
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOworICAgICAg
ICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAg
ICAgICBtX2N1cnJlbnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5l
cy5oCmluZGV4IDIzZjMyYTNkODliMjVkMmM1N2UxYTM4MmJkZTAyNjg4NWE0ZTNkOWQuLjAzMmZi
NzcxOWFhYmIwMzhiMzgyMjk0NzM5MGJkNDg4YTg0N2ZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaApAQCAtNzYsNyArNzYsNyBAQCBCTk9f
SU5MSU5FIHZvaWQgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UoKQogICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKCptX2xvY2spOwogICAgIAogICAgIGZvciAodm9pZCog
cHRyIDogbV9vYmplY3RMb2cpCi0gICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIp
LT5mcmVlKHB0cik7CisgICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVl
KGxvY2tlciwgcHRyKTsKICAgICBtX29iamVjdExvZy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCBiYWZlYjNlZTAzMDU5ZTg3ZjliMDVkNzczN2E2
YjI1OTBmZmViZGY3Li5lNzJiMmQxNjEyMWI3M2FmMzFlMGZkN2MxMzJhNWM5NGFmZGRmN2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJCaXRzLmgiCiAjaW5jbHVkZSAiRWxpZ2liaWxpdHlSZXN1bHQuaCIKICNpbmNsdWRl
ICJJc29QYWdlLmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAK
IG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgSXNvRGlyZWN0b3J5
QmFzZSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlQmFzZSB7CiAgICAgCiAgICAgSXNvSGVhcElt
cGw8Q29uZmlnPiYgaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJ
c29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgPSAwOwogICAgIAogcHJvdGVjdGVkOgog
ICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVhcDsKQEAgLTY0LDkgKzY1LDkgQEAgY2xhc3Mg
SXNvRGlyZWN0b3J5IDogcHVibGljIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiB7CiAgICAgCiAg
ICAgLy8gRmluZCB0aGUgZmlyc3QgcGFnZSB0aGF0IGlzIGVsaWdpYmxlIGZvciBhbGxvY2F0aW9u
IGFuZCByZXR1cm4gaXQuIE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubwogICAgIC8vIHN1
Y2ggdGhpbmcuIE1heSBhbGxvY2F0ZSBhIG5ldyBwYWdlIGlmIHdlIGhhdmUgYW4gdW5jb21taXR0
ZWQgcGFnZS4KLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxl
KCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCi0gICAgdm9pZCBkaWRCZWNvbWUoSXNv
UGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQmVj
b21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29Q
YWdlVHJpZ2dlcikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBmcm9t
IGEgYnVsayBkZWNvbW1pdCBmdW5jdGlvbiBpbiB0aGUgU2NhdmVuZ2VyLCBzbyBubyBsb2NrcyBh
cmUgaGVsZC4gVGhpcyBmdW5jdGlvbgogICAgIC8vIG5lZWRzIHRvIGdldCB0aGUgaGVhcCBsb2Nr
LgpAQCAtNzQsMjMgKzc1LDIzIEBAIGNsYXNzIElzb0RpcmVjdG9yeSA6IHB1YmxpYyBJc29EaXJl
Y3RvcnlCYXNlPENvbmZpZz4gewogICAgIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgZW1wdHkg
YW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1dCB0aGVtIGludG8gdGhlIHZlY3Rvci4gVGhpcyBh
bHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFnZXMgYXMgYmVpbmcgZGVjb21taXR0ZWQuIEl0J3Mg
dGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUgYWN0dWFsIGRlY29tbWl0dGluZy4KLSAgICB2b2lk
IHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2Uo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYp
OwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0
ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYpOwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAg
IHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFj
aENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMm
KTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzY2F2ZW5nZVBhZ2Uoc2l6ZV90LCBWZWN0b3I8
RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlUGFnZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAor
ICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjxJc29QYWdlPENvbmZpZz4sIElzb1BhZ2U8
Q29uZmlnPjo6cGFnZVNpemU+LCBudW1QYWdlcz4gbV9wYWdlcyB7IH07CiAgICAgLy8gTk9URTog
SSBzdXBwb3NlIHRoYXQgdGhpcyBjb3VsZCBiZSB0d28gYml0dmVjdG9ycy4gQnV0IGZyb20gd29y
a2luZyBvbiB0aGUgR0MsIEkgZm91bmQgdGhhdCB0aGUKICAgICAvLyBudW1iZXIgb2YgYml0dmVj
dG9ycyBkb2VzIG5vdCBtYXR0ZXIgYXMgbXVjaCBhcyB3aGV0aGVyIG9yIG5vdCB0aGV5IG1ha2Ug
aW50dWl0aXZlIHNlbnNlLgogICAgIEJpdHM8bnVtUGFnZXM+IG1fZWxpZ2libGU7CiAgICAgQml0
czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBCaXRzPG51bVBhZ2VzPiBtX2NvbW1pdHRlZDsKLSAg
ICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmlnPiosIG51bVBhZ2VzPiBtX3BhZ2VzOwogICAgIHVu
c2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07CiAjaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQogICAgIHVuc2lnbmVkIG1faGlnaFdhdGVybWFyayB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKaW5kZXggMGIxYTFlYzA1
YTA3NDE0MDA0MmJiNzZlNzRiMTA4ZmZlYjVmOWIyNy4uODU1NDJkZjk4NTI0NThlMzVlNDBjMDk5
ZGJlMzIyY2I4OWM3NDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29E
aXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3Rv
cnlJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcs
IHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgogSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVt
UGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKICAgICA6IElz
b0RpcmVjdG9yeUJhc2U8Q29uZmlnPihoZWFwKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IG51
bVBhZ2VzOyBpLS07KQotICAgICAgICBtX3BhZ2VzW2ldID0gbnVsbHB0cjsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLUVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtl
Rmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxD
b25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCiB7CiAgICAgdW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUg
fCB+bV9jb21taXR0ZWQpLmZpbmRCaXQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1
ZSk7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKQEAgLTU5
LDcgKzU3LDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKICAgICBTY2F2ZW5nZXImIHNjYXZl
bmdlciA9ICpTY2F2ZW5nZXI6OmdldCgpOwogICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmco
KTsKICAgICAKLSAgICBJc29QYWdlPENvbmZpZz4qIHBhZ2UgPSBtX3BhZ2VzW3BhZ2VJbmRleF07
CisgICAgSXNvUGFnZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdlSW5kZXhdLmdldCgpOwog
ICAgIAogICAgIGlmICghbV9jb21taXR0ZWRbcGFnZUluZGV4XSkgewogICAgICAgICBzY2F2ZW5n
ZXIuc2NoZWR1bGVJZlVuZGVyTWVtb3J5UHJlc3N1cmUoSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsK
QEAgLTkzLDcgKzkxLDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8
Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiBw
YWdlLCBJc29QYWdlVHJpZ2dlciB0cmlnZ2VyKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBs
b2NrZXIsIElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHVuc2lnbmVk
IHBhZ2VJbmRleCA9IHBhZ2UtPmluZGV4KCk7CkBAIC0xMDMsNyArMTAxLDcgQEAgdm9pZCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShJc29QYWdlPENvbmZp
Zz4qIHBhZ2UsIElzb1AKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBi
ZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdl
SW5kZXhdID0gdHJ1ZTsKICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0
ZDo6bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHBhZ2VJbmRleCk7Ci0gICAgICAg
IHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCh0aGlzKTsKKyAgICAg
ICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGxvY2tlciwgdGhp
cyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAg
ICAgICAgaWYgKHZlcmJvc2UpCkBAIC0xMjUsMjggKzEyMywyOCBAQCB2b2lkIElzb0RpcmVjdG9y
eTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQodW5zaWduZWQgaW5kZXgpCiAg
ICAgLy8gc3lzY2FsbCBpdHNlbGYgKHdoaWNoIGhhcyB0byBkbyBtYW55IGhhcmQgdGhpbmdzKS4K
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5tX2hlYXAubG9jayk7CiAg
ICAgQkFTU0VSVCghIW1fY29tbWl0dGVkW2luZGV4XSk7Ci0gICAgdGhpcy0+bV9oZWFwLmlzTm9M
b25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAg
ICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNbaW5kZXhdLmdldCgpLCBJ
c29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVkW2luZGV4XSA9IGZhbHNlOwog
ICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2li
bGVPckRlY29tbWl0dGVkLCBpbmRleCk7Ci0gICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdp
YmxlT3JEZWNvbW1pdGVkKHRoaXMpOwotICAgIHRoaXMtPm1faGVhcC5kaWREZWNvbW1pdChtX3Bh
Z2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQobG9ja2VyLCB0aGlzKTsKKyAgICB0aGlzLT5tX2hl
YXAuZGlkRGVjb21taXQobV9wYWdlc1tpbmRleF0uZ2V0KCksIElzb1BhZ2VCYXNlOjpwYWdlU2l6
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFn
ZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQ
YWdlKHNpemVfdCBpbmRleCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2
b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcGFn
ZSBpcyBub3cgb2ZmIGxpbWl0cy4KICAgICBtX2VtcHR5W2luZGV4XSA9IGZhbHNlOwogICAgIG1f
ZWxpZ2libGVbaW5kZXhdID0gZmFsc2U7Ci0gICAgZGVjb21taXRzLnB1c2goRGVmZXJyZWREZWNv
bW1pdCh0aGlzLCBtX3BhZ2VzW2luZGV4XSwgaW5kZXgpKTsKKyAgICBkZWNvbW1pdHMucHVzaChE
ZWZlcnJlZERlY29tbWl0KHRoaXMsIG1fcGFnZXNbaW5kZXhdLmdldCgpLCBpbmRleCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9p
ZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1w
dHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKLSAgICAgICAgICAgIHNjYXZlbmdlUGFnZShpbmRleCwgZGVjb21taXRzKTsKKyAgICAg
ICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1pdHMpOwogICAgICAgICB9
KTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgbV9oaWdoV2F0ZXJtYXJrID0gMDsK
QEAgLTE1NSwxMiArMTUzLDEyIEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVt
UGFnZXM+OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlCiAKICNpZiBCVVNF
KFBBUlRJQUxfU0NBVkVOR0UpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBh
c3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46
OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21t
aXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVj
dG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2Nv
bW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAg
ICAgICAgICAgIGlmIChpbmRleCA+IG1faGlnaFdhdGVybWFyaykKLSAgICAgICAgICAgICAgICBz
Y2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0cyk7CisgICAgICAgICAgICAgICAgc2NhdmVuZ2VQ
YWdlKGxvY2tlciwgaW5kZXgsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAgIG1faGlnaFdh
dGVybWFyayA9IDA7CiB9CkBAIC0xNjgsMTEgKzE2NiwxMSBAQCB2b2lkIElzb0RpcmVjdG9yeTxD
b25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERl
ZmVycgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2Vz
PgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFz
c2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9p
ZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQ
YWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQogewog
ICAgIG1fY29tbWl0dGVkLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7Ci0gICAgICAgICAgICBmdW5jKCptX3BhZ2VzW2luZGV4XSk7CisgICAgICAgICAgICBmdW5j
KCoobV9wYWdlc1tpbmRleF0uZ2V0KCkpKTsKICAgICAgICAgfSk7CiB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCmluZGV4IDY5NmQyMmU1N2Y2MjIzZjliOTI5NDJh
YjJmMmUwYjA5YWFiZDlhODMuLmRkMDg5YTFhYmQ1MjFmZWI0ZDE5Mzc2YmY2Y2NlNzM4N2RlYjU3
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCkBAIC0zMSw3ICszMSw4
IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1w
bEJhc2UoKQorSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2UoTXV0ZXgmIGxvY2spCisg
ICAgOiBsb2NrKGxvY2spCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvSGVhcEltcGwuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaApp
bmRleCAwOTUxMWUyNTdmYmZiZjdjYzA0YjM5NzhjMWVmZTBiZjJiMzRjMmRkLi40YzhlZmVmNDBj
M2RjMzdiY2I1M2U2MjVjODAwYmIzZTZjODNhNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29I
ZWFwSW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSXNvQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiSXNvRGlyZWN0b3J5UGFnZS5oIgogI2luY2x1ZGUgIklzb1RMU0FsbG9jYXRvckVu
dHJ5LmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgi
CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTUxLDI3ICs1Miw0OCBAQCBjbGFzcyBCRVhQT1JU
IElzb0hlYXBJbXBsQmFzZSB7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHZpcnR1
YWwgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
KSA9IDA7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpID0gMDsK
LSAgICB2aXJ0dWFsIHNpemVfdCBmb290cHJpbnQoKSA9IDA7CiAgICAgCiAgICAgdm9pZCBzY2F2
ZW5nZU5vdygpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFNjYXZlbmdpbmcoVmVjdG9yPERlZmVy
cmVkRGVjb21taXQ+Jik7CiAKKyAgICB2b2lkIGRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBi
eXRlcyk7CisgICAgdm9pZCBkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisK
KyAgICB2b2lkIGlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZv
aWQgaXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKworICAgIHNp
emVfdCBmcmVlYWJsZU1lbW9yeSgpOworICAgIHNpemVfdCBmb290cHJpbnQoKTsKKwogICAgIHZv
aWQgYWRkVG9BbGxJc29IZWFwcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSXNvSGVhcEltcGxCYXNl
KCk7CisgICAgSXNvSGVhcEltcGxCYXNlKE11dGV4Jik7CiAKICAgICBmcmllbmQgY2xhc3MgSXNv
U2hhcmVkUGFnZTsKICAgICBmcmllbmQgY2xhc3MgQWxsSXNvSGVhcHM7CiAgICAgCitwdWJsaWM6
CisgICAgLy8gSXQncyBhbG1vc3QgYWx3YXlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0
byBncmFiIHRoZSBsb2NrLiBUaGlzIGxvY2sgY29tZXMgZnJvbSB0aGUKKyAgICAvLyAoKlBlclBy
b2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46
OmdldCgpKS0+bG9jay4gVGhhdCdzIHByZXR0eSB3ZWlyZCwgYW5kIHdlIGRvbid0CisgICAgLy8g
dHJ5IHRvIGRpc2d1aXNlIHRoZSBmYWN0IHRoYXQgaXQncyB3ZWlyZC4gV2Ugb25seSBkbyB0aGF0
IGJlY2F1c2UgaGVhcHMgaW4gdGhlIHNhbWUgc2l6ZSBjbGFzcworICAgIC8vIHNoYXJlIHRoZSBz
YW1lIGRlYWxsb2NhdG9yIGxvZywgc28gaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZW0gdG8gYWxzbyBz
aGFyZSB0aGUgc2FtZSBsb2NrIHRvCisgICAgLy8gYW1vcnRpemUgbG9jayBhY3F1aXNpdGlvbiBj
b3N0cy4KKyAgICBNdXRleCYgbG9jazsKK3Byb3RlY3RlZDoKICAgICBJc29IZWFwSW1wbEJhc2Uq
IG1fbmV4dCB7IG51bGxwdHIgfTsKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1l
X3BvaW50IG1fbGFzdFNsb3dQYXRoVGltZTsKLSAgICBzdGQ6OmFycmF5PHZvaWQqLCBtYXhBbGxv
Y2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7IH07CisgICAgc2l6ZV90IG1fZm9vdHBy
aW50IHsgMCB9OworICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsgMCB9OworI2lmIEVOQUJM
RV9QSFlTSUNBTF9QQUdFX01BUAorICAgIFBoeXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1h
cDsKKyNlbmRpZgorICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjx1aW50OF90LCBibWFs
bG9jOjphbGlnbm1lbnQ+LCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7
IH07Citwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZkFsbG9jYXRpb25zRnJvbVNo
YXJlZEluT25lQ3ljbGUgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdmFpbGFibGVTaGFyZWQgeyBt
YXhBbGxvY2F0aW9uRnJvbVNoYXJlZE1hc2sgfTsKICAgICBBbGxvY2F0aW9uTW9kZSBtX2FsbG9j
YXRpb25Nb2RlIHsgQWxsb2NhdGlvbk1vZGU6OkluaXQgfTsKLSAgICAKKyAgICBib29sIG1faXNJ
bmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyB0cnVlIH07CiAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YobV9hdmFpbGFibGVTaGFyZWQpICogOCA+PSBtYXhBbGxvY2F0aW9uRnJv
bVNoYXJlZCwgIiIpOwogfTsKIApAQCAtODMsMjEgKzEwNSwxNyBAQCBjbGFzcyBJc29IZWFwSW1w
bCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogcHVibGljOgogICAgIElzb0hlYXBJ
bXBsKCk7CiAgICAgCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGln
aWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIC8vIENhbGxiYWNrcyBm
cm9tIGRpcmVjdG9yeS4KLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElz
b0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7Ci0gICAgdm9p
ZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29E
aXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiopOworICAgIHZvaWQgZGlkQmVjb21lRWxp
Z2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVj
dG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRC
ZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwg
SXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4q
KTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92
ZXJyaWRlOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2b2lkIHNjYXZlbmdlVG9I
aWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2VuZGlm
CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoKSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBm
b290cHJpbnQoKSBvdmVycmlkZTsKLSAgICAKICAgICB1bnNpZ25lZCBhbGxvY2F0b3JPZmZzZXQo
KTsKICAgICB1bnNpZ25lZCBkZWFsbG9jYXRvck9mZnNldCgpOwogCkBAIC0xMDYsNDYgKzEyNCwy
NyBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2Ugewog
ICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYpOworICAg
IHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29u
c3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBm
b3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAg
IAogICAgIC8vIFRoaXMgaXMgb25seSBhY2N1cmF0ZSB3aGVuIGFsbCB0aHJlYWRzIGFyZSBzY2F2
ZW5nZWQuIE90aGVyd2lzZSBpdCB3aWxsIG92ZXJlc3RpbWF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYpOwotCi0g
ICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotICAgIHZvaWQgZGlk
RGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotCi0gICAgdm9pZCBpc05vd0ZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lkIGlzTm9Mb25nZXJGcmVlYWJs
ZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogCiAgICAgQWxsb2Nh
dGlvbk1vZGUgdXBkYXRlQWxsb2NhdGlvbk1vZGUoKTsKICAgICB2b2lkKiBhbGxvY2F0ZUZyb21T
aGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUp
OwotICAgIAotICAgIC8vIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2li
aWxpdHkgdG8gZ3JhYiB0aGUgbG9jay4gVGhpcyBsb2NrIGNvbWVzIGZyb20gdGhlCi0gICAgLy8g
KCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29u
ZmlnPj4+OjpnZXQoKSktPmxvY2suIFRoYXQncyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAot
ICAgIC8vIHRyeSB0byBkaXNndWlzZSB0aGUgZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkg
ZG8gdGhhdCBiZWNhdXNlIGhlYXBzIGluIHRoZSBzYW1lIHNpemUgY2xhc3MKLSAgICAvLyBzaGFy
ZSB0aGUgc2FtZSBkZWFsbG9jYXRvciBsb2csIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRv
IGFsc28gc2hhcmUgdGhlIHNhbWUgbG9jayB0bwotICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlz
aXRpb24gY29zdHMuCi0gICAgTXV0ZXgmIGxvY2s7CiAKIHByaXZhdGU6CiAgICAgSXNvRGlyZWN0
b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4gbV9pbmxpbmVEaXJlY3Rvcnk7
Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX2hlYWREaXJlY3RvcnkgeyBudWxscHRy
IH07Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX3RhaWxEaXJlY3RvcnkgeyBudWxs
cHRyIH07Ci0gICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9OwotICAgIHNpemVfdCBtX2ZyZWVh
YmxlTWVtb3J5IHsgMCB9OwotI2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAotICAgIFBoeXNp
Y2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1hcDsKLSNlbmRpZgogICAgIHVuc2lnbmVkIG1fbmV4
dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0IHRoZSBo
aWdoIHdhdGVyIG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRlZCBpbiB0
aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1bnNpZ25l
ZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07Ci0gICAgCi0gICAgYm9vbCBtX2lzSW5s
aW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OwotICAgIElzb0RpcmVj
dG9yeVBhZ2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5IHsg
bnVsbHB0ciB9OwotICAgIAorCisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmln
Pj4gbV9oZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OworICAgIFBhY2tlZFB0cjxJc29EaXJlY3Rv
cnlQYWdlPENvbmZpZz4+IG1fdGFpbERpcmVjdG9yeSB7IG51bGxwdHIgfTsKKyAgICBQYWNrZWRQ
dHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3RvcnkgeyBudWxscHRyIH07CisKICAgICBJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNBbGxv
Y2F0b3JFbnRyeTxDb25maWc+PiBtX2FsbG9jYXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCmluZGV4IDJhNGZiMjg0MzZiMzU4ZTk2YTE3MDFi
OTEzMzc1YTUzM2VkZGFlZDAuLjk0ZWIzZjRjMTRmOGU2ZjdjYjQ3ZjViMDNjMzJjODk5OGQ1NjFh
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaApAQCAt
MzQsNjQgKzM0LDcwIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnPgogSXNvSGVhcEltcGw8Q29uZmlnPjo6SXNvSGVhcEltcGwoKQotICAgIDogbG9jaygo
KlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25m
aWc+Pj46OmdldCgpKS0+bG9jaykKKyAgICA6IElzb0hlYXBJbXBsQmFzZSgoKlBlclByb2Nlc3M8
SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgp
KS0+bG9jaykKICAgICAsIG1faW5saW5lRGlyZWN0b3J5KCp0aGlzKQogICAgICwgbV9hbGxvY2F0
b3IoKnRoaXMpCiB7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUoKQor
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIpCiB7CiAgICAgaWYg
KG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQpIHsKLSAgICAgICAgRWxp
Z2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBtX2lubGluZURpcmVjdG9yeS50YWtlRmly
c3RFbGlnaWJsZSgpOworICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9
IG1faW5saW5lRGlyZWN0b3J5LnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CiAgICAgICAgIGlm
IChyZXN1bHQua2luZCA9PSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpCiAgICAgICAgICAgICBtX2lz
SW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkID0gZmFsc2U7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9m
aXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5KSB7Ci0gICAgICAgIC8vIElmIG5vdGhp
bmcgaXMgZWxpZ2libGUsIGl0IGNhbiBvbmx5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rv
cmllcy4gSXQgd291bGRuJ3QgYmUgdGhlIGVuZAotICAgICAgICAvLyBvZiB0aGUgd29ybGQgaWYg
d2UgYnJva2UgdGhpcyBpbnZhcmlhbnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0IGRpZEJlY29t
ZUVsaWdpYmxlT3JEZWNvbW1pdGVkKCkgd291bGQgbmVlZAotICAgICAgICAvLyBhIG51bGwgY2hl
Y2suCi0gICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5KTsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3RvcnkpOwotICAgIH0KLSAgICAKLSAgICBmb3Ig
KDsgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5OyBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnktPm5leHQpIHsKLSAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxp
Z2libGUoKTsKLSAgICAgICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVs
bCkgewotICAgICAgICAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gc3RkOjptYXgobV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrLCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnktPmluZGV4KCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB7CisgICAgICAg
IGF1dG8qIGN1cnNvciA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5nZXQo
KTsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIC8vIElmIG5vdGhpbmcgaXMg
ZWxpZ2libGUsIGl0IGNhbiBvbmx5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rvcmllcy4g
SXQgd291bGRuJ3QgYmUgdGhlIGVuZAorICAgICAgICAgICAgLy8gb2YgdGhlIHdvcmxkIGlmIHdl
IGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBkaWRCZWNvbWVF
bGlnaWJsZU9yRGVjb21taXRlZCgpIHdvdWxkIG5lZWQKKyAgICAgICAgICAgIC8vIGEgbnVsbCBj
aGVjay4KKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5LmdldCgp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5LmdldCgpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoOyBjdXJzb3I7IGN1cnNvciA9IGN1
cnNvci0+bmV4dCkgeworICAgICAgICAgICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4g
cmVzdWx0ID0gY3Vyc29yLT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5n
ZXQoKSA9PSBjdXJzb3IpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGln
aWJpbGl0eUtpbmQ6OkZ1bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3RvcnlIaWdo
V2F0ZXJtYXJrID0gc3RkOjptYXgobV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrLCBjdXJzb3ItPmlu
ZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3RvcnkgPSBjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9maXJzdEVsaWdp
YmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICBhdXRvKiBuZXdEaXJlY3RvcnkgPSBuZXcgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
KCp0aGlzLCBtX25leHREaXJlY3RvcnlQYWdlSW5kZXgrKyk7Ci0gICAgaWYgKG1faGVhZERpcmVj
dG9yeSkgeworICAgIGlmIChtX2hlYWREaXJlY3RvcnkuZ2V0KCkpIHsKICAgICAgICAgbV90YWls
RGlyZWN0b3J5LT5uZXh0ID0gbmV3RGlyZWN0b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3Rvcnkg
PSBuZXdEaXJlY3Rvcnk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFt
X3RhaWxEaXJlY3RvcnkpOworICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9y
eS5nZXQoKSk7CiAgICAgICAgIG1faGVhZERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICAg
ICAgbV90YWlsRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgIH0KICAgICBtX2RpcmVjdG9y
eUhpZ2hXYXRlcm1hcmsgPSBuZXdEaXJlY3RvcnktPmluZGV4KCk7CiAgICAgbV9maXJzdEVsaWdp
YmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwotICAgIEVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbmV3RGlyZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVs
aWdpYmxlKCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJl
Y3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKICAgICBSRUxFQVNFX0JB
U1NFUlQocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBs
PENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25m
aWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJ
bXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGly
ZWN0b3J5PiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChkaXJlY3RvcnkgPT0g
Jm1faW5saW5lRGlyZWN0b3J5KTsKICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRl
Y29tbWl0dGVkID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJ
c29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0
b3J5KQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywg
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKIHsKICAgICBS
RUxFQVNFX0JBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5KTsKICAg
ICBhdXRvKiBkaXJlY3RvcnlQYWdlID0gSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9y
KGRpcmVjdG9yeSk7CkBAIC0xMDQsOCArMTEwLDkgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICBmb3JFYWNoRGly
ZWN0b3J5KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoYXV0byYgZGlyZWN0b3J5KSB7
Ci0gICAgICAgICAgICBkaXJlY3Rvcnkuc2NhdmVuZ2UoZGVjb21taXRzKTsKKyAgICAgICAgICAg
IGRpcmVjdG9yeS5zY2F2ZW5nZShsb2NrZXIsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAg
IG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IDA7CiB9CkBAIC0xMTYsMTcgKzEyMywxNiBAQCB2
b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYgZGVjbwogewogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9j
a2VyKHRoaXMtPmxvY2spOwogICAgIGlmICghbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrKQotICAg
ICAgICBtX2lubGluZURpcmVjdG9yeS5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhkZWNvbW1pdHMp
OwotICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0
b3J5OyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkgeworICAgICAgICBtX2lubGluZURpcmVjdG9y
eS5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CisgICAgZm9yIChJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBh
Z2U7IHBhZ2UgPSBwYWdlLT5uZXh0KSB7CiAgICAgICAgIGlmIChwYWdlLT5pbmRleCgpID49IG1f
ZGlyZWN0b3J5SGlnaFdhdGVybWFyaykKLSAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQuc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoZGVjb21taXRzKTsKKyAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQu
c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobG9ja2VyLCBkZWNvbW1pdHMpOwogICAgIH0KICAgICBt
X2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSAwOwogfQogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+OjpmcmVlYWJsZU1lbW9yeSgp
CitpbmxpbmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6ZnJlZWFibGVNZW1vcnkoKQogewogICAg
IHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTQ2LDggKzE1MiwxMCBAQCB1bnNpZ25l
ZCBJc29IZWFwSW1wbDxDb25maWc+OjpkZWFsbG9jYXRvck9mZnNldCgpCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+CiB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1MaXZlT2JqZWN0
cygpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3JFYWNoTGl2ZU9iamVjdCgKKyAgICAgICAg
bG9ja2VyLAogICAgICAgICBbJl0gKHZvaWQqKSB7CiAgICAgICAgICAgICByZXN1bHQrKzsKICAg
ICAgICAgfSk7CkBAIC0xNTcsOCArMTY1LDEwIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZp
Zz46Om51bUxpdmVPYmplY3RzKCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVk
IElzb0hlYXBJbXBsPENvbmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKCkKIHsKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOwogICAgIGZvckVhY2hDb21taXR0ZWRQYWdlKAorICAgICAgICBsb2NrZXIsCiAgICAgICAg
IFsmXSAoSXNvUGFnZTxDb25maWc+JikgewogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAg
IH0pOwpAQCAtMTY3LDQwICsxNzcsNDEgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
bnVtQ29tbWl0dGVkUGFnZXMoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoRGlyZWN0
b3J5KGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hE
aXJlY3RvcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiB7CiAgICAgZnVuYyhtX2lubGluZURpcmVjdG9yeSk7Ci0gICAgZm9yIChJc29EaXJlY3RvcnlQ
YWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5u
ZXh0KQorICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGly
ZWN0b3J5LmdldCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkKICAgICAgICAgZnVuYyhwYWdl
LT5wYXlsb2FkKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENv
bW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBjb25zdCBG
dW5jJiBmdW5jKQogewogICAgIGZvckVhY2hEaXJlY3RvcnkoCisgICAgICAgIGxvY2tlciwKICAg
ICAgICAgWyZdIChhdXRvJiBkaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JF
YWNoQ29tbWl0dGVkUGFnZShmdW5jKTsKKyAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JFYWNoQ29t
bWl0dGVkUGFnZShsb2NrZXIsIGZ1bmMpOwogICAgICAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8
Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVh
cEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYgbG9ja2VyLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZvckVhY2hDb21taXR0ZWRQ
YWdlKAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoSXNvUGFnZTxDb25maWc+JiBwYWdl
KSB7Ci0gICAgICAgICAgICBwYWdlLmZvckVhY2hMaXZlT2JqZWN0KGZ1bmMpOworICAgICAgICAg
ICAgcGFnZS5mb3JFYWNoTGl2ZU9iamVjdChsb2NrZXIsIGZ1bmMpOwogICAgICAgICB9KTsKICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJl
ZDsgKytpbmRleCkgewotICAgICAgICB2b2lkKiBwb2ludGVyID0gbV9zaGFyZWRDZWxsc1tpbmRl
eF07CisgICAgICAgIHZvaWQqIHBvaW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKTsK
ICAgICAgICAgaWYgKHBvaW50ZXIgJiYgIShtX2F2YWlsYWJsZVNoYXJlZCAmICgxVSA8PCBpbmRl
eCkpKQogICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLXNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQoKQor
aW5saW5lIHNpemVfdCBJc29IZWFwSW1wbEJhc2U6OmZvb3RwcmludCgpCiB7CiAjaWYgRU5BQkxF
X1BIWVNJQ0FMX1BBR0VfTUFQCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1fZm9vdHByaW50ID09IG1f
cGh5c2ljYWxQYWdlTWFwLmZvb3RwcmludCgpKTsKQEAgLTIwOCw4ICsyMTksNyBAQCBzaXplX3Qg
SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmln
Pjo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVh
cEltcGxCYXNlOjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVO
VVNFRF9QQVJBTShwdHIpOwogICAgIG1fZm9vdHByaW50ICs9IGJ5dGVzOwpAQCAtMjE4LDggKzIy
OCw3IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90IGJ5dGVzKQogI2VuZGlmCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMp
CitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2Zvb3RwcmludCAt
PSBieXRlczsKQEAgLTIyOCwxNSArMjM3LDEzIEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojppc05vd0ZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNl
Ojppc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURf
UEFSQU0ocHRyKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IGJ5dGVzOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmlzTm9Mb25nZXJG
cmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJbXBs
QmFzZTo6aXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAg
IEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IGJ5dGVzOwpAQCAt
MzAxLDcgKzMwOCw3IEBAIHZvaWQqIElzb0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRlRnJvbVNo
YXJlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vCiAgICAgdW5zaWduZWQgaW5k
ZXhQbHVzT25lID0gX19idWlsdGluX2ZmcyhtX2F2YWlsYWJsZVNoYXJlZCk7CiAgICAgQkFTU0VS
VChpbmRleFBsdXNPbmUpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhQbHVzT25lIC0gMTsK
LSAgICB2b2lkKiByZXN1bHQgPSBtX3NoYXJlZENlbGxzW2luZGV4XTsKKyAgICB2b2lkKiByZXN1
bHQgPSBtX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2Nh
dGVkICVwIGZyb20gc2hhcmVkIGFnYWluIG9mIHNpemUgJXVcbiIsIHRoaXMsIHJlc3VsdCwgQ29u
ZmlnOjpvYmplY3RTaXplKTsKQEAgLTMxNCw3ICszMjEsNyBAQCB2b2lkKiBJc29IZWFwSW1wbDxD
b25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IGJvbwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVwIGZyb20g
c2hhcmVkIG9mIHNpemUgJXVcbiIsIHRoaXMsIHJlc3VsdCwgQ29uZmlnOjpvYmplY3RTaXplKTsK
ICAgICAgICAgQkFTU0VSVChpbmRleCA8IElzb0hlYXBJbXBsQmFzZTo6bWF4QWxsb2NhdGlvbkZy
b21TaGFyZWQpOwogICAgICAgICAqaW5kZXhTbG90Rm9yPENvbmZpZz4ocmVzdWx0KSA9IGluZGV4
OwotICAgICAgICBtX3NoYXJlZENlbGxzW2luZGV4XSA9IHJlc3VsdDsKKyAgICAgICAgbV9zaGFy
ZWRDZWxsc1tpbmRleF0gPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHJlc3VsdCk7CiAgICAgfQog
ICAgIEJBU1NFUlQocmVzdWx0KTsKICAgICBtX2F2YWlsYWJsZVNoYXJlZCAmPSB+KDFVIDw8IGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKaW5kZXggNTQyNWI4OGE2Nzg5MjJkODhjMmM1
OGQ3NTBjYTI5MjZhYWYzNDAwOC4uZjNlZjA3NjFjYWMwZmFkMGUxMzU2N2IzZmMzNTQ3MDJhNzQ4
NjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNs
dWRlICJCaXRzLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiRnJl
ZUxpc3QuaCIKKyNpbmNsdWRlICJNdXRleC5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVk
ZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtNzEsMTkgKzczLDE5IEBAIGNs
YXNzIElzb1BhZ2UgOiBwdWJsaWMgSXNvUGFnZUJhc2UgewogCiAgICAgdW5zaWduZWQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAgICAgCi0gICAgdm9pZCBmcmVlKHZvaWQqKTsK
KyAgICB2b2lkIGZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHZvaWQqKTsKIAog
ICAgIC8vIENhbGxlZCBhZnRlciB0aGlzIHBhZ2UgaXMgYWxyZWFkeSBzZWxlY3RlZCBmb3IgYWxs
b2NhdGlvbi4KICAgICBGcmVlTGlzdCBzdGFydEFsbG9jYXRpbmcoKTsKICAgICAKICAgICAvLyBD
YWxsZWQgYWZ0ZXIgdGhlIGFsbG9jYXRvciBwaWNrcyBhbm90aGVyIHBhZ2UgdG8gcmVwbGFjZSB0
aGlzIG9uZS4KLSAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKEZyZWVMaXN0IGZyZWVMaXN0KTsKKyAg
ICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBGcmVl
TGlzdCBmcmVlTGlzdCk7CiAKICAgICBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4mIGRpcmVjdG9y
eSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5OyB9CiAgICAgYm9vbCBpc0luVXNlRm9yQWxsb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNJblVzZUZvckFsbG9jYXRpb247IH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3Qg
RnVuYyYpOworICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICBJc29IZWFwSW1wbDxDb25maWc+JiBo
ZWFwKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJ
bmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXgg
ZjM3YjM0OTMyNzc5MDZjMTgyZDk5MWZhZmZjZWE5ZGZkNjc4MmY0My4uYTViNzcxMmFjYjAzYTFj
ZTY5MTM3YWMwNTA2OWI2ZDBmZTJlZmEwNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFn
ZUlubGluZXMuaApAQCAtNjUsMTQgKzY1LDE0IEBAIElzb1BhZ2U8Q29uZmlnPiogSXNvUGFnZTxD
b25maWc+OjpwYWdlRm9yKHZvaWQqIHB0cikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
Pgotdm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQordm9pZCBJc29Q
YWdlPENvbmZpZz46OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCB2
b2lkKiBwYXNzZWRQdHIpCiB7CiAgICAgQkFTU0VSVCghbV9pc1NoYXJlZCk7CiAgICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3NlZFB0cikgLSByZWludGVycHJldF9j
YXN0PGNoYXIqPih0aGlzKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG9mZnNldCAvIENvbmZpZzo6
b2JqZWN0U2l6ZTsKICAgICAKICAgICBpZiAoIW1fZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQpIHsK
LSAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAg
bV9lbGlnaWJpbGl0eVRyaWdnZXIuZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgICAgICBt
X2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKHZvaWQqIHBhc3NlZFB0cikKICAgICB1
bnNpZ25lZCBuZXdXb3JkID0gbV9hbGxvY0JpdHNbd29yZEluZGV4XSAmPSB+KDEgPDwgYml0SW5k
ZXgpOwogICAgIGlmICghbmV3V29yZCkgewogICAgICAgICBpZiAoIS0tbV9udW1Ob25FbXB0eVdv
cmRzKQotICAgICAgICAgICAgbV9lbXB0eVRyaWdnZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fZW1wdHlUcmlnZ2VyLmRpZEJlY29tZShsb2NrZXIsICp0aGlzKTsKICAgICB9CiB9
CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxs
b2NhdGluZygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvUGFnZTxD
b25maWc+OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCkKK3ZvaWQgSXNvUGFnZTxD
b25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2Nr
ZXIsIEZyZWVMaXN0IGZyZWVMaXN0KQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB2b2lkIElzb1BhZ2U8Q29u
ZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpCiAgICAgCiAgICAgZnJlZUxp
c3QuZm9yRWFjaDxDb25maWc+KAogICAgICAgICBbJl0gKHZvaWQqIHB0cikgewotICAgICAgICAg
ICAgZnJlZShwdHIpOworICAgICAgICAgICAgZnJlZShsb2NrZXIsIHB0cik7CiAgICAgICAgIH0p
OwogCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1faXNJblVzZUZvckFsbG9jYXRpb24pOwogICAgIG1f
aXNJblVzZUZvckFsbG9jYXRpb24gPSBmYWxzZTsKIAotICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2Vy
LmhhbmRsZURlZmVycmFsKCp0aGlzKTsKLSAgICBtX2VtcHR5VHJpZ2dlci5oYW5kbGVEZWZlcnJh
bCgqdGhpcyk7CisgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9ja2Vy
LCAqdGhpcyk7CisgICAgbV9lbXB0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9ja2VyLCAqdGhp
cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYg
ZnVuYykKK3ZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmb3IgKHVuc2ln
bmVkIHdvcmRJbmRleCA9IDA7IHdvcmRJbmRleCA8IGJpdHNBcnJheUxlbmd0aChudW1PYmplY3Rz
KTsgKyt3b3JkSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgd29yZCA9IG1fYWxsb2NCaXRzW3dv
cmRJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhl
YXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCmluZGV4IGM5ZDA0
ZWU5MzEzNjk1OWQzMjNkYjU4MGQyMDM2YjlhZWJjMjIxYTMuLjVlYTUxZTVkMWZkZGVlZmY2Zjhk
NTZmZDdjOTA3ZmU0MmJkZDE0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVh
cC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFZhcmlhZGljQnVtcEFsbG9jYXRvciB7CiAKIGNs
YXNzIElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29TaGFyZWRIZWFw
PiB7CiBwdWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikK
KyAgICBJc29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIHsK
ICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgSXNvU2hhcmVkSGVhcCA6IHB1YmxpYyBT
dGF0aWNQZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+IHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZTx1bnNpZ25lZD4KLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSk7
CisgICAgdm9pZCogYWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBi
b29sIGFib3J0T25GYWlsdXJlKTsKIAogICAgIElzb1NoYXJlZFBhZ2UqIG1fY3VycmVudFBhZ2Ug
eyBudWxscHRyIH07CiAgICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIG1fYWxsb2NhdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCmluZGV4IGQ5Zjdm
MTE2NmM1YWQwNmYwNGQ4MTIxYzQ5ODgyMjdiZGZkMDFkMDQuLmZjNzk1OGVjNGQ4ODQ0MWFiNTY1
MjhiMjlmMmE5NmI3NzY5NjJjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1No
YXJlZEhlYXBJbmxpbmVzLmgKQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkKiBJc29TaGFyZWRIZWFw
OjphbGxvY2F0ZU5ldyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBvYmplY3RTaXplID0gY29tcHV0ZU9iamVjdFNpemVGb3JTaGFyZWRDZWxsKHBhc3NlZE9iamVj
dFNpemUpOwogICAgIHJldHVybiBtX2FsbG9jYXRvci50ZW1wbGF0ZSBhbGxvY2F0ZTxvYmplY3RT
aXplPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxv
Y2F0ZVNsb3c8cGFzc2VkT2JqZWN0U2l6ZT4oYWJvcnRPbkZhaWx1cmUpOworICAgICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvdzxwYXNzZWRPYmplY3RTaXplPihsb2NrZXIsIGFib3J0T25GYWls
dXJlKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE9iamVjdFNp
emU+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyhib29sIGFi
b3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNs
b3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBib29sIGFib3J0T25GYWls
dXJlKQogewogICAgIFNjYXZlbmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6Z2V0KCk7CiAg
ICAgc2NhdmVuZ2VyLmRpZFN0YXJ0R3Jvd2luZygpOwpAQCAtNzMsNyArNzMsNyBAQCBCTk9fSU5M
SU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJl
KQogICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnRQYWdlKQotICAgICAgICBtX2N1cnJlbnRQYWdl
LT5zdG9wQWxsb2NhdGluZygpOworICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGlu
Zyhsb2NrZXIpOwogCiAgICAgbV9jdXJyZW50UGFnZSA9IHBhZ2U7CiAgICAgbV9hbGxvY2F0b3Ig
PSBtX2N1cnJlbnRQYWdlLT5zdGFydEFsbG9jYXRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29TaGFyZWRQYWdlLmgKaW5kZXggYTllMTM3ZTQxNDE4ODU2NGQwNTgwNDQ5MGI1NDM3YTUwMGU1
NzBiYi4uMjNkMWM3Nzg5YzU1Nzc0YmYyMGNhZjE0ZjMyZDI0NzgyOTA1NmE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSXNv
U2hhcmVkUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+Jiwgdm9pZCopOwogICAgIFZhcmlhZGljQnVt
cEFsbG9jYXRvciBzdGFydEFsbG9jYXRpbmcoKTsKLSAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7
CisgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CiAKIHByaXZhdGU6CiAgICAgSXNvU2hhcmVkUGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKaW5kZXggYzQyMTZiNTFkYWM5ZDFlOTVjMzAzNWQ2
NjE2ZmEzZTdjZTU5MDdhOS4uOTg0MjFhYzdiMmNjNmU2Mjg1MGU3MDY1NzNjNDMwODYyNzBlYTU1
NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaApA
QCAtNDIsNyArNDIsNyBAQCB2b2lkIElzb1NoYXJlZFBhZ2U6OmZyZWUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZAogICAgIC8vIElzb0RlYWxs
b2NhdG9yOjpkZWFsbG9jYXRlIGlzIGNhbGxlZCBmcm9tIGRlbGV0ZSBvcGVyYXRvci4gVGhpcyBp
cyBkaXNwYXRjaGVkIGJ5IHZ0YWJsZSBpZiB2aXJ0dWFsIGRlc3RydWN0b3IgZXhpc3RzLgogICAg
IC8vIElmIHZwdHIgaXMgcmVwbGFjZWQgdG8gdGhlIG90aGVyIHZwdHIsIHdlIG1heSBhY2NpZGVu
dGFsbHkgY2hhaW4gdGhpcyBwb2ludGVyIHRvIHRoZSBpbmNvcnJlY3QgSGVhcEltcGxCYXNlLCB3
aGljaCB0b3RhbGx5IGJyZWFrcyB0aGUgSXNvSGVhcCdzIGdvYWwuCiAgICAgLy8gVG8gaGFyZGVu
IHRoYXQsIHdlIHZhbGlkYXRlIHRoYXQgdGhpcyBwb2ludGVyIGlzIGFjdHVhbGx5IGFsbG9jYXRl
ZCBmb3IgYSBzcGVjaWZpYyBIZWFwSW1wbEJhc2UgaGVyZSBieSBjaGVja2luZyB3aGV0aGVyIHRo
aXMgcG9pbnRlciBpcyBsaXN0ZWQgaW4gSGVhcEltcGxCYXNlJ3Mgc2hhcmVkIGNlbGxzLgotICAg
IFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XSA9PSBwdHIpOwor
ICAgIFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKSA9
PSBwdHIpOwogICAgIGhlYXBJbXBsLm1fYXZhaWxhYmxlU2hhcmVkIHw9ICgxVSA8PCBpbmRleCk7
CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIFZhcmlhZGljQnVtcEFsbG9jYXRvciBJc29T
aGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoKQogICAgIHJldHVybiBWYXJpYWRpY0J1bXBBbGxv
Y2F0b3IocGF5bG9hZEVuZCwgcmVtYWluaW5nKTsKIH0KIAotaW5saW5lIHZvaWQgSXNvU2hhcmVk
UGFnZTo6c3RvcEFsbG9jYXRpbmcoKQoraW5saW5lIHZvaWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFs
bG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKaW5k
ZXggZGUyODY3ZTc4ZGUxY2EyNTYzMGMzNmQxODIyODMzZjE3ZmEwN2VmMy4uYmFiYmIzMDQ1Yjhh
NTA2ZTgyODMxMDJlYjZjM2M0Y2ViOWVkMjliMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oCkBA
IC02MCw4ICs2MCw4IEBAIGNsYXNzIElzb1RMUyB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZUltcGwoYXBpOjpJ
c29IZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQqIGFsbG9jYXRlRmFzdCh1bnNpZ25lZCBvZmZzZXQs
IGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlw
ZW5hbWUgVHlwZT4KKyAgICB2b2lkKiBhbGxvY2F0ZUZhc3QoYXBpOjpJc29IZWFwPFR5cGU+Jiwg
dW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CiAgICAgc3RhdGljIHZvaWQqIGFsbG9j
YXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaAppbmRleCAzNWRiODcx
NDdiNDkyMDY2YTI4ZWZmZDU3M2RmNzM2ZjcwODExMzlmLi5lMWQ4YWFjYWZlMmZmYWJkYTc0ODAz
ZTliNzA2YjBiZjU2ZGU5ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0FsbG9jYXRvckVudHJ5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNB
bGxvY2F0b3JFbnRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIElzb1RMU0FsbG9jYXRvckVu
dHJ5IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29BbGxvY2F0b3I8Q29uZmln
CiAgICAgSXNvVExTQWxsb2NhdG9yRW50cnkoSXNvSGVhcEltcGw8Q29uZmlnPiYpOwogCiAgICAg
dm9pZCBjb25zdHJ1Y3Qodm9pZCogZHN0KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2NhdmVuZ2Uo
dm9pZCogZW50cnkpIG92ZXJyaWRlOwogICAgIAogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1f
aGVhcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9j
YXRvckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0
b3JFbnRyeUlubGluZXMuaAppbmRleCAxYWUxZTZhNWFjYTQ5MGUwNTIyNzExNGY1ZTRlMjA1ZmQ0
OTRmZjQzLi4zZTU1N2FkMTc3Yjg2ZGQ4YmU2YzA3Zjc0M2M5YTE4ZWQ2ZTNlMDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVz
LmgKQEAgLTQ2LDUgKzQ2LDExIEBAIHZvaWQgSXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6
Y29uc3RydWN0KHZvaWQqIGRzdCkKICAgICBuZXcgKGRzdCkgSXNvQWxsb2NhdG9yPENvbmZpZz4o
bV9oZWFwKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgordm9pZCBJc29UTFNBbGxv
Y2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2b2lkKiBlbnRyeSkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2UobV9oZWFwKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCmluZGV4IDczODRjZTBkMmFiYjQzZmZiNTZhNjc4OGY0
NzUxMGI2NGYyNjRmNGQuLmEwZGJjMzAzNzQ0Mjg3MGVkMDg5YWE5MjBiZDRiZmFhZDk3ZWRiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRy
eS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5o
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIElzb1RMU0RlYWxsb2NhdG9yRW50cnkgZmluYWwgOiBw
dWJsaWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0RlYWxsb2NhdG9yPENvCiAgICAgSXNvVExTRGVh
bGxvY2F0b3JFbnRyeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAKICAgICB2b2lk
IGNvbnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2F2ZW5nZSh2b2lk
KiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVz
LmgKaW5kZXggY2JkNWY5ZGY3ZWZiNzRjMzEyMjM5NzgxNWNhMzkxMjA2MjljZDQzZi4uYzk1MzQy
ODBjZThkNWExOGIwMjY4YmQwNzgwN2Q3ZWJiN2MyMmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaApAQCAtNDMs
NSArNDMsMTEgQEAgdm9pZCBJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz46OmNvbnN0cnVj
dCh2b2lkKiBlbnRyeSkKICAgICBuZXcgKGVudHJ5KSBJc29EZWFsbG9jYXRvcjxDb25maWc+KGxv
Y2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Cit2b2lkIElzb1RMU0RlYWxsb2Nh
dG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9pZCogZW50cnkpCit7CisgICAgc3RhdGljX2Nh
c3Q8SXNvRGVhbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2UoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0VudHJ5LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3Bw
CmluZGV4IGNiMDNiZGUyODk1N2UyY2JmYTEwYWZhZDg5NDI4YmIzZWE2ZmFmNzMuLjgzMGE1MTFi
Zjk5ZGVjZDhiZjY0NGEzZmRlMzhiMzBjYWM2NzA4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTRW50cnkuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7
CiAKLUlzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6
ZSkKLSAgICA6IG1fb2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9hbGlnbm1lbnQoYWxpZ25tZW50
KQotICAgICwgbV9zaXplKHNpemUpCitJc29UTFNFbnRyeTo6SXNvVExTRW50cnkoc2l6ZV90IHNp
emUpCisgICAgOiBtX3NpemUoc2l6ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNF
bnRyeS5oCmluZGV4IDc0ZjQ0OWJmYTI4YTQwMWZiMDQzODhjYmNlNTE0MzZlODY4ZmQ2MTQuLmE0
NzhlNmEzMmRlMTA2YWNjN2UzOTBhZTJhYjJmZTkwZjEwYjc0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0VudHJ5LmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQkVYUE9SVCBJc29UTFNF
bnRyeSB7CiAgICAgdmlydHVhbCB+SXNvVExTRW50cnkoKTsKICAgICAKICAgICBzaXplX3Qgb2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICBzaXplX3QgYWxpZ25tZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9hbGlnbm1lbnQ7IH0KKyAgICBzaXplX3QgYWxpZ25tZW50KCkgY29u
c3QgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0ICsgbV9zaXplOyB9CiAgICAgCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEJFWFBPUlQgSXNv
VExTRW50cnkgewogICAgIHZvaWQgd2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExTRW50cnkqLCBjb25z
dCBGdW5jJik7CiAKIHByb3RlY3RlZDoKLSAgICBJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSk7CisgICAgSXNvVExTRW50cnkoc2l6ZV90IHNpemUpOwogICAgIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXNvVExTOwpAQCAtODYsMTUgKzg2LDE0IEBAIGNsYXNz
IEJFWFBPUlQgSXNvVExTRW50cnkgewogCiAgICAgSXNvVExTRW50cnkqIG1fbmV4dCB7IG51bGxw
dHIgfTsKICAgICAKLSAgICBzaXplX3QgbV9vZmZzZXQ7IC8vIENvbXB1dGVkIGluIGNvbnN0cnVj
dG9yLgotICAgIHNpemVfdCBtX2FsaWdubWVudDsKLSAgICBzaXplX3QgbV9zaXplOworICAgIHVu
c2lnbmVkIG1fb2Zmc2V0IHsgVUlOVF9NQVggfTsgLy8gQ29tcHV0ZWQgaW4gY29uc3RydWN0b3Iu
CisgICAgdW5zaWduZWQgbV9zaXplOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBl
PgogY2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDogcHVibGljIElzb1RMU0VudHJ5IHsKIHB1Ymxp
YzoKLSAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCk7CisgICAgfkRlZmF1bHRJc29UTFNFbnRyeSgp
ID0gZGVmYXVsdDsKICAgICAKIHByb3RlY3RlZDoKICAgICBEZWZhdWx0SXNvVExTRW50cnkoKTsK
QEAgLTEwNiw4ICsxMDUsNiBAQCBjbGFzcyBEZWZhdWx0SXNvVExTRW50cnkgOiBwdWJsaWMgSXNv
VExTRW50cnkgewogICAgIC8vIExpa2V3aXNlLCB0aGlzIGlzIHNlcGFyYXRlIGZyb20gc2NhdmVu
Z2luZy4gV2hlbiB0aGUgVExTIGlzIHNodXR0aW5nIGRvd24sIHdlIHdpbGwgYmUgYXNrZWQgdG8K
ICAgICAvLyBzY2F2ZW5nZSBhbmQgdGhlbiB3ZSB3aWxsIGJlIGFza2VkIHRvIGRlc3RydWN0Lgog
ICAgIHZvaWQgZGVzdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzY2F2
ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaAppbmRleCA2ZjYx
NWY5NTBjZGJmMGFhMDYzMTM1OTFkMzgzYzhjMjRjMjhmM2IzLi5jMmE3MjdlMGYzNWY2YWM0MzAx
Y2IzYWE0OWVkYmE5NWNmMTBhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0VudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
RW50cnlJbmxpbmVzLmgKQEAgLTQzLDEzICs0MywxMCBAQCB2b2lkIElzb1RMU0VudHJ5Ojp3YWxr
VXBUb0luY2x1c2l2ZShJc29UTFNFbnRyeSogbGFzdCwgY29uc3QgRnVuYyYgZnVuYykKIAogdGVt
cGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgogRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46
OkRlZmF1bHRJc29UTFNFbnRyeSgpCi0gICAgOiBJc29UTFNFbnRyeShhbGlnbm9mKEVudHJ5VHlw
ZSksIHNpemVvZihFbnRyeVR5cGUpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5
cGU+Ci1EZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJc29UTFNFbnRyeSgp
CisgICAgOiBJc29UTFNFbnRyeShzaXplb2YoRW50cnlUeXBlKSkKIHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihFbnRyeVR5cGUpIDw9IFVJTlQzMl9NQVgpOworICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKHZvaWQqKSA9PSBhbGlnbm9mKEVudHJ5VHlwZSksICJCZWNhdXNlIElzb1RMU0VudHJ5
IGluY2x1ZGVzIHZ0YWJsZSwgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIHRvIHRoZSBwb2ludGVyIik7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KQEAgLTY3LDEyICs2NCw1IEBAIHZv
aWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OmRlc3RydWN0KHZvaWQqIHBhc3NlZEVu
dHJ5KQogICAgIGVudHJ5LT5+RW50cnlUeXBlKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVu
dHJ5VHlwZT4KLXZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OnNjYXZlbmdlKHZv
aWQqIHBhc3NlZEVudHJ5KQotewotICAgIEVudHJ5VHlwZSogZW50cnkgPSBzdGF0aWNfY2FzdDxF
bnRyeVR5cGUqPihwYXNzZWRFbnRyeSk7Ci0gICAgZW50cnktPnNjYXZlbmdlKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMu
aAppbmRleCAxZWFiMjcxYzQwY2E3OWEzZGRlZmZiZmQyNWUwZTc0ODY4YTRkMzE5Li4wZDRiMjAx
OTRlMGNkZWQyMDg4YzllNzRjNzI4NzQ4NjQ1YTM0MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0lubGluZXMuaApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIElzb1RMUzo6c2NhdmVuZ2Uo
YXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25l
ZCBvZmZzZXQgPSBoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYgKG9mZnNldCA8IHRs
cy0+bV9leHRlbnQpCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPHR5cGVu
YW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmlnPio+KHRscy0+bV9kYXRhICsgb2Zmc2V0KS0+
c2NhdmVuZ2UoKTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29BbGxvY2F0b3I8dHlwZW5h
bWUgYXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQpLT5z
Y2F2ZW5nZShoYW5kbGUuaW1wbCgpKTsKICAgICBvZmZzZXQgPSBoYW5kbGUuZGVhbGxvY2F0b3JP
ZmZzZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxzLT5tX2V4dGVudCkKICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxJc29EZWFsbG9jYXRvcjx0eXBlbmFtZSBhcGk6Oklzb0hlYXA8VHlwZT46OkNv
bmZpZz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZlbmdlKCk7CkBAIC03NCwxMyArNzQs
MTMgQEAgdm9pZCogSXNvVExTOjphbGxvY2F0ZUltcGwoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5k
bGUsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgSXNvVExTKiB0bHMgPSBnZXQoKTsKICAgICBp
ZiAoIXRscyB8fCBvZmZzZXQgPj0gdGxzLT5tX2V4dGVudCkKICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlU2xvdzxDb25maWc+KGhhbmRsZSwgYWJvcnRPbkZhaWx1cmUpOwotICAgIHJldHVybiB0bHMt
PmFsbG9jYXRlRmFzdDxDb25maWc+KG9mZnNldCwgYWJvcnRPbkZhaWx1cmUpOworICAgIHJldHVy
biB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhhbmRsZSwgb2Zmc2V0LCBhYm9ydE9uRmFpbHVy
ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQqIElzb1RMUzo6YWxsb2Nh
dGVGYXN0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KK3ZvaWQqIElzb1RMUzo6YWxsb2NhdGVGYXN0
KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB1bnNpZ25lZCBvZmZzZXQsIGJvb2wgYWJvcnRP
bkZhaWx1cmUpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENv
bmZpZz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShhYm9ydE9uRmFpbHVyZSk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBv
ZmZzZXQpLT5hbGxvY2F0ZShoYW5kbGUuaW1wbCgpLCBhYm9ydE9uRmFpbHVyZSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KQEAgLTEwOCw3ICsxMDgsNyBA
QCBCTk9fSU5MSU5FIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVTbG93KGFwaTo6SXNvSGVhcDxUeXBl
PiYgaGFuZGxlLCBib29sIGFib3J0T25GYQogICAgIAogICAgIElzb1RMUyogdGxzID0gZW5zdXJl
SGVhcEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAKLSAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZh
c3Q8Q29uZmlnPihoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25GYWlsdXJlKTsKKyAg
ICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUsIGhhbmRsZS5hbGxvY2F0
b3JPZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWcsIHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0xheW91dC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAK
aW5kZXggNGIzMzVlYTUxOWQ0NWU4ZjE2YjJhOGQ5MDllMTMwNDYxOWQ1NzQ4NC4uMGJhZTYwNzcw
MWU0OTBjN2FlMmE5ZjQwZTdlOTE3Y2VjZmIxNzMyNSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTTGF5b3V0LmNwcApAQCAtNDQsNyArNDQsOSBAQCB2b2lkIElzb1RMU0xheW91dDo6YWRk
KElzb1RMU0VudHJ5KiBlbnRyeSkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tpbmco
YWRkaW5nTXV0ZXgpOwogICAgIGlmIChtX2hlYWQpIHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJU
KG1fdGFpbCk7Ci0gICAgICAgIGVudHJ5LT5tX29mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Yo
ZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4
dGVudCgpKTsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG9mZnNldCA8IFVJTlRfTUFYKTsKKyAg
ICAgICAgZW50cnktPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBzdGQ6OmF0b21pY190aHJl
YWRfZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCk7CiAgICAgICAgIG1fdGFpbC0+bV9u
ZXh0ID0gZW50cnk7CiAgICAgICAgIG1fdGFpbCA9IGVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2Vk
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGI0YzRlZDdiZWJkY2E4NmU3MWQ4M2MyMjJlNmRjMWNhYTA0ZDAyNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmgKQEAgLTAs
MCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxnb3JpdGhtLmgiCisjaW5jbHVkZSAi
U3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBibWFsbG9jIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlwZSA9IHRydWU7CisKKyAgICBQYWNrZWQoKQor
ICAgICAgICA6IFBhY2tlZChUIHsgfSkKKyAgICB7CisgICAgfQorCisgICAgUGFja2VkKGNvbnN0
IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1
ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBUIGdldCgpIGNvbnN0CisgICAgeworICAgICAg
ICBUIHZhbHVlOworICAgICAgICBtZW1jcHkoJnZhbHVlLCBtX3N0b3JhZ2UuZGF0YSgpLCBzaXpl
b2YoVCkpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgdm9pZCBzZXQoY29u
c3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgJnZh
bHVlLCBzaXplb2YoVCkpOworICAgIH0KKworICAgIFBhY2tlZDxUPiYgb3BlcmF0b3I9KGNvbnN0
IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYg
bmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gZ2V0KCk7CisgICAgICAgIHNl
dChzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwor
ICAgIH0KKworICAgIHZvaWQgc3dhcChQYWNrZWQmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9z
dG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5
cGU+PgorICAgIHZvaWQgc3dhcChPdGhlciYgb3RoZXIpCisgICAgeworICAgICAgICBUIHQxID0g
Z2V0KCk7CisgICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAg
ICAgICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAg
eworICAgICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAg
ICAgICBzZXQodDEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IHNpemVvZihUKT4gbV9zdG9yYWdlOworfTsKKworLy8gUGFja2VkQWxpZ25lZFB0ciBjYW4gdGFr
ZSBhbGlnbm1lbnQgcGFyYW1ldGVyIHRvby4gUGFja2VkQWxpZ25lZFB0ciBvbmx5IHVzZXMgdGhp
cyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaWYgaXQgaXMgcHJvZml0YWJsZTogd2UgdXNlCisvLyBh
bGlnbm1lbnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiByZWR1Y2UgdGhlIHNpemUgb2Yg
dGhlIHN0b3JhZ2UuIFNpbmNlIHRoZSBwb2ludGVyIHdpZHRoIGlzIDM2IGJpdHMgYW5kIEpTQ2Vs
bHMgYXJlIGFsaWduZWQgdG8gMTYgYnl0ZXMsCisvLyB3ZSBjYW4gdXNlIDQgYml0cyBpbiBEYXJ3
aW4gQVJNNjQsIHdlIGNhbiBjb21wYWN0IGNlbGwgcG9pbnRlciBpbnRvIDQgYnl0ZXMgKDMyIGJp
dHMpLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGFsaWdubWVudCA9IGFsaWdub2YoVCk+
CitjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KGlz
UG93ZXJPZlR3byhhbGlnbm1lbnQpLCAiQWxpZ25tZW50IG5lZWRzIHRvIGJlIHBvd2VyLW9mLXR3
byIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUgPSB0cnVlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxl
ID0gZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihhbGlnbm1lbnQpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hpZnQgPSByb3VuZFVw
VG9NdWx0aXBsZU9mPDgsIHVpbnRwdHJfdD4oQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAv
IDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1l
bnRTaGlmdCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8OCwgdWludHB0cl90PihCT1NfRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEggLSBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUpIC8gODsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPSBzdG9y
YWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0aEFsaWdubWVudFNo
aWZ0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplID0g
aXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPyBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFi
bGUgOiAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemUgPSBzdG9y
YWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdDsKKworICAgIGNvbnN0ZXhwciBQYWNrZWRBbGlnbmVk
UHRyKCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4
cHIgUGFja2VkQWxpZ25lZFB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgOiBtX3N0b3JhZ2Uo
KQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWRBbGlnbmVkUHRyKFQqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgLy8gRklYTUU6IFBhY2tlZFB0cjw+IGNhbiBsb2FkIG1lbW9yeSB3aXRoIG9uZSBt
b3YgYnkgY2hlY2tpbmcgcGFnZSBib3VuZGFyeS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzc1NAorICAgICAgICB1aW50cHRyX3QgdmFsdWUg
PSAwOworI2lmIEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5KCZ2YWx1ZSwgbV9z
dG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAgbWVtY3B5KGJpdHdp
c2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUp
LCBtX3N0b3JhZ2UuZGF0YSgpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGlz
QWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQorICAgICAgICAgICAgdmFsdWUgPDw9IGFsaWdubWVu
dFNoaWZ0U2l6ZTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4odmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgc2V0KFQqIHBhc3NlZFZhbHVlKQorICAgIHsKKyAgICAgICAgdWludHB0
cl90IHZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGFzc2VkVmFsdWUpOworICAgICAg
ICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCisgICAgICAgICAgICB2YWx1ZSA+Pj0g
YWxpZ25tZW50U2hpZnRTaXplOworI2lmIEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVt
Y3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAg
ICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIHNldChudWxscHRyKTsK
KyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAg
ICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9u
IG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBv
dGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFsaWduZWRQdHI6OipV
bnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkg
Y29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9zdG9yYWdlIDogbnVs
bHB0cjsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBnZXQo
KTsgfQorCisgICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsK
KyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxV
PihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCisgICAgdm9p
ZCBzd2FwKHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IH0KKworICAgIHZvaWQgc3dhcChQYWNr
ZWRBbGlnbmVkUHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZS5zd2FwKG90aGVy
Lm1fc3RvcmFnZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KKyAgICB2b2lkIHN3
YXAoT3RoZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAg
VCogdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0
KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCogdDIpCisgICAgeworICAgICAgICBUKiB0
MSA9IGdldCgpOworICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAgICAgc2V0KHQxKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTx1aW50OF90LCBzdG9yYWdlU2l6ZT4g
bV9zdG9yYWdlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZDxUKj4g
OiBwdWJsaWMgUGFja2VkQWxpZ25lZFB0cjxULCAxPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IFBhY2tlZEFsaWduZWRQdHI8VCwgMT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRQdHIgPSBQYWNrZWQ8VCo+OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFBhY2tlZFB0clRyYWl0cyB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gUGFja2VkUHRyVHJhaXRzPFU+Owor
CisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQYWNrZWRQdHI8VD47CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVPiBzdGF0aWMgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVl
KSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlcj4gc3RhdGljIHZvaWQgc3dhcChQYWNrZWRQdHI8VD4mIGEsIE90aGVyJiBiKSB7
IGEuc3dhcChiKTsgfQorCisgICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYg
cHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAppbmRleCBlYjE1YjMxZjEzNThkMmFhYmM3
NDI5ZjI2ZDM1YjNmNzk1OTA4MmM4Li42MGYwNjc2YmYzMDZhNjJmYmMyMjJiYTczYzJiMDM1YTlj
MWRjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQnVsa0RlY29tbWl0LmgiCiAjaW5jbHVkZSAiRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSXNvSGVhcEltcGxJbmxpbmVzLmgiCiAjaWYg
Qk9TKERBUldJTikKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxtYWNo
L2hvc3RfaW5mby5oPgpAQCAtNjcsNyArNjgsNyBAQCBzdHJ1Y3QgUHJpbnRUaW1lIHsKIAogREVG
SU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKFNjYXZlbmdlcik7CiAKLVNjYXZlbmdlcjo6
U2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorU2NhdmVuZ2VyOjpTY2F2ZW5nZXIo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgQkFTU0VSVCghRW52aXJvbm1l
bnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZl
bmdlci5oCmluZGV4IGY0ODkzNGI1MTFiNmU2YzE4ZDg5NmQ1ZDU5MzQxNTliZjUzZTk5MGMuLjcy
OGE3NWUzYmRmZGExOTY5Y2EwNTg1MGU2NTE5ZTI0MDkyOGI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TY2F2ZW5nZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNs
YXNzIFNjYXZlbmdlciA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFNjYXZlbmdlcj4gewogcHVi
bGljOgotICAgIEJFWFBPUlQgU2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAg
ICBCRVhQT1JUIFNjYXZlbmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAg
CiAgICAgflNjYXZlbmdlcigpID0gZGVsZXRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAu
Y3BwCmluZGV4IDVjOGUyOGEwNTA5MzFhMTQ1M2IyZTNhOTkyY2YyZjgyOTVlYzlmZWYuLmFkZjIx
NjcxZWJkODdhOWZkNjU3OGE0NWNhNjE2MDAyZjVjNzU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZN
SGVhcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBERUZJTkVf
U1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoVk1IZWFwKTsKIAotVk1IZWFwOjpWTUhlYXAoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCitWTUhlYXA6OlZNSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9W
TUhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKaW5kZXggNDdhMTEzZGJm
MjczNjQxMTQxMjg4YWI2YzRlNTA1ZWFlNWJiNWMxMS4uNjhmMGFiZTZhZDU5YTBlNDk4YTQwOWJj
MTUwOGNjOTA1ZjFlMDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhl
YXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHR5cGVkZWYgZW51bSB7IFN5bmMsIEFzeW5jIH0gU2NhdmVuZ2VNb2RlOwogCiBjbGFzcyBW
TUhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxWTUhlYXA+IHsKIHB1YmxpYzoKLSAgICBW
TUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIFZNSGVhcChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdl
Q2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNw
cAppbmRleCBmMTFiNTE3ZDJmNTdiNWNkZDE3YjRiYjVhYWM2MGFiZWY5OWU3NTQyLi4wYmI4Mjk2
OTJhYzc4MjAyMjIwNTI2NTMwMDM4OWZjYjY5NDZjOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1pvbmUuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgY29uc3QgbWFsbG9jX2ludHJvc3BlY3Rpb25f
dCB6b25lSW50cm9zcGVjdCA9IHsKICAgICAuc3RhdGlzdGljcyA9IGJtYWxsb2M6OnN0YXRpc3Rp
Y3MKIH07CiAKLVpvbmU6OlpvbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitab25lOjpab25l
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIG1hbGxvY196b25lX3Q6OnNp
emUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAgbWFsbG9jX3pvbmVfdDo6em9uZV9uYW1lID0g
IldlYktpdCBNYWxsb2MiOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25l
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAppbmRleCAwMDlkNzIyN2YyMzg3N2Vm
MWVhNjgyYzAyODJjZDZlZmFmOGU2ZDU3Li5mNWQ2NDk1YTQxZTJlY2MwY2VkZTFjNTM1ZTUzMjE1
NGMwMDM1ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBa
b25lIDogcHVibGljIG1hbGxvY196b25lX3QgewogICAgIC8vIEVub3VnaCBjYXBhY2l0eSB0byB0
cmFjayBhIDY0R0IgaGVhcCwgc28gcHJvYmFibHkgZW5vdWdoIGZvciBhbnl0aGluZy4KICAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDIwNDg7CiAKLSAgICBab25lKHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBab25lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKICAgICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9hZGRyZXNzX3QpOwog
CiAgICAgdm9pZCBhZGRSYW5nZShSYW5nZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387754</attachid>
            <date>2020-01-14 21:45:10 -0800</date>
            <delta_ts>2020-01-15 01:13:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200114214509.patch</filename>
            <type>text/plain</type>
            <size>82047</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMzljYmY1YzJlYTJhOGE1
NWUyMTBlMGI1NGMyMGI5ZTc0MTNhMjk5Ny4uYTMwNzRlZmU0YTU5NmMyZTUzNGIyODE4NTdmMDA1
ZWE0ODY1NDk0OCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMS0xNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlu
bGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6ZnJlZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAq
IGJtYWxsb2MvSXNvU2hhcmVkSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVh
cDo6SXNvU2hhcmVkSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5l
cy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpmcmVlKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1RMUy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnku
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRW50cnkuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRW50cnk6Oklz
b1RMU0VudHJ5KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5Lmg6CisgICAgICAgICog
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlZmF1bHRJ
c29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkpOgorICAgICAgICAoYm1h
bGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkp
OiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OnNjYXZlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvVExTOjphbGxvY2F0ZUltcGwpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxv
Y2F0ZUZhc3QpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZVNsb3cpOgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RM
U0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFsbG9jL1BhY2tlZC5oOiBBZGRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6OlBhY2tlZDo6UGFja2VkKToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6c2V0KToKKyAgICAgICAgKGJt
YWxsb2M6OlBhY2tlZDo6b3BlcmF0b3I9KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6ZXhj
aGFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzd2FwKToKKyAgICAgICAgKGJtYWxs
b2M6OmFsaWdub2YpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjpleGNoYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OnN3YXApOgorICAgICAgICAo
Ym1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjp1bndyYXApOgorICAgICAgICAqIGJtYWxsb2MvU2Nh
dmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5jcHA6CisgICAgICAgIChibWFsbG9j
Ojpab25lOjpab25lKToKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuaDoKKwogMjAyMC0wMS0wOSAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxs
b2NdIEV4dHJhY3QgY29uc3RhbnRzIGZyb20gSGVhcCBhbmQgc2hhcmUgaXQgYW1vbmcgSGVhcHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9ibWFs
bG9jL0NNYWtlTGlzdHMudHh0CmluZGV4IDMwZGJjMzQ1YjQ5MjVmZTExZjZmM2Q2Nzc0ZTJjZjk3
ZmNkNmQ1ZTMuLjZjNmI3YTUwNWY5ZjEwYzdlYWFiNWU3YTM0NzkyNjVkMTJlNzhhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9ibWFsbG9j
L0NNYWtlTGlzdHMudHh0CkBAIC0xMTIsNiArMTEyLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hF
QURFUlMKICAgICBibWFsbG9jL011dGV4LmgKICAgICBibWFsbG9jL09iamVjdC5oCiAgICAgYm1h
bGxvYy9PYmplY3RUeXBlLmgKKyAgICBibWFsbG9jL1BhY2tlZC5oCiAgICAgYm1hbGxvYy9QZXJI
ZWFwS2luZC5oCiAgICAgYm1hbGxvYy9QZXJQcm9jZXNzLmgKICAgICBibWFsbG9jL1BlclRocmVh
ZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjE3M2E5N2RjODU4OTNlN2ZiYTkwZTYyN2E4OTYzZGE2NjFjYmE1MS4uM2I4NWU3
N2ZmYjgzYTU0MGU2OGY0MzMzZjY3NTJhZWI4M2VkZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwLDYgKzE0MCw3IEBA
CiAJCUFEMTRBRDJBMjAyNTI5QzcwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDE0QUQyODIwMjUyOUIwMDA4
OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tICovOyB9OwogCQlERThCMTNCMzIxQ0M1RDlGMDBBNjNG
Q0QgLyogQlZNVGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzFFNzQ4MDIyMzhDQTVDMDA1
RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxRTc0N0YyMjM4Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclBy
b2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyog
UGFja2VkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNBNDEzQzkyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E0MTNDODIyNjA2
MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwMjIyNUQyQzAxMDBBMEUwQzMg
LyogSXNvU2hhcmVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNGMjQ0MDEyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyNDQwNDIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNv
U2hhcmVkUGFnZS5jcHAgKi87IH07CkBAIC0yOTUsNiArMjk2LDcgQEAKIAkJQUQxNEFEMjgyMDI1
MjlCMDAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFByb2Nlc3NDaGVjay5tbTsgcGF0aCA9IGJtYWxsb2MvUHJvY2Vzc0No
ZWNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERThCMTNCMjIxQ0M1RDlGMDBB
NjNGQ0QgLyogQlZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCVk1UYWdzLmg7IHBhdGggPSBibWFs
bG9jL0JWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxRTc0N0YyMjM4
Q0E1QjAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU3RhdGljUGVyUHJvY2Vzcy5oOyBwYXRoID0gYm1hbGxvYy9TdGF0aWNQZXJQ
cm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjhEODRDMjNDRUIzODkw
MDU0NUIxOCAvKiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFj
a2VkLmg7IHBhdGggPSBibWFsbG9jL1BhY2tlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0E0MTNDODIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZUlubGluZXMuaDsg
cGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNGMjQ0MDEyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkUGFnZS5oOyBwYXRoID0g
Ym1hbGxvYy9Jc29TaGFyZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RjI0NDAzMjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuY3BwOyBwYXRoID0gYm1hbGxv
Yy9Jc29TaGFyZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMiw2
ICs1MzQsNyBAQAogCQkJCTE0Qzg5OTJBMUNDNDg1RTcwMDI3QTA1NyAvKiBNYXAuaCAqLywKIAkJ
CQkxNDNDQjgxQTE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguY3BwICovLAogCQkJCTE0M0NCODFC
MTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5oICovLAorCQkJCUUzMjhEODRDMjNDRUIzODkwMDU0
NUIxOCAvKiBQYWNrZWQuaCAqLywKIAkJCQkwRjVCRjE0ODFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVy
SGVhcEtpbmQuaCAqLywKIAkJCQkwRjI2QTdBNDIwNTQ4MzBEMDA5MEExNDEgLyogUGVyUHJvY2Vz
cy5jcHAgKi8sCiAJCQkJMTQ0NDZBMDcxN0E2MUZBNDAwRjlFQTFEIC8qIFBlclByb2Nlc3MuaCAq
LywKQEAgLTY0OCw2ICs2NTEsNyBAQAogCQkJCTE0M0NCODFEMTkwMjJCQzkwMEIxNkE0NSAvKiBN
dXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTMxOEY0OEQwRjAwOTUwNzAyIC8qIE9i
amVjdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAv
KiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAv
KiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUw
NzAyIC8qIFBlclByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUw
MDk1MDcwMiAvKiBQZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxn
b3JpdGhtLmgKaW5kZXggYjM4N2VkYWFjYzhiODI4NTNjYWJiZDgzMDg1NzMyMjdlYzM5YzczOS4u
YzFiMDAxMjlmOGRlMjNjZjk0MTUyMTRhYWFmYjE1N2U0ZTUyNTMzZiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCkBAIC0xOTMsNiArMTkzLDMxIEBAIGJvb2wgZmluZEJpdEluV29yZChU
IHdvcmQsIHNpemVfdCYgaW5kZXgsIHNpemVfdCBlbmRJbmRleCwgYm9vbCB2YWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHVuc2ln
bmVkIGN0ekNvbnN0ZXhwcihUIHZhbHVlKQoreworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRT
aXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7CisKKyAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0
ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgICBVVCB1VmFsdWUgPSB2YWx1ZTsKKworICAg
IHVuc2lnbmVkIHplcm9Db3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJp
dFNpemU7IGkrKykgeworICAgICAgICBpZiAodVZhbHVlICYgMSkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIHplcm9Db3VudCsrOworICAgICAgICB1VmFsdWUgPj49IDE7CisgICAgfQor
ICAgIHJldHVybiB6ZXJvQ291bnQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4
cHIgdW5zaWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCit7CisgICAgcmV0dXJu
IGN0ekNvbnN0ZXhwcih0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYg
Ly8gQWxnb3JpdGhtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRm
b3JtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCmluZGV4IDZjNGY3MDJh
ZTEyNmVmMWFiZTc4MmQzNWRmNDhhMDY2Mjk1MDlmNjQuLjNmYmUwZDRiOThmMTk2NWNkNjJjMTRj
NTY2NjY2ZjliNWY0YzFhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBs
YXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMjMw
LDYgKzIzMCw0NSBAQAogCiAjZW5kaWYgLyogQVJNICovCiAKKworI2lmIEJDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKKy8qIF9fTFA2NF9fIGlzIG5vdCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mg
c2luY2UgaXQgdXNlcyBMTFA2NC4gVXNpbmcgX19TSVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIu
ICovCisjaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDgKKyNkZWZpbmUgQkNQVV9BRERSRVNTNjQg
MQorI2VsaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDQKKyNkZWZpbmUgQkNQVV9BRERSRVNTMzIg
MQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIKKyNlbmRpZgorI2Vs
c2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKwor
I2lmIEJDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09S
REVSX0JJR19FTkRJQU5fXworI2RlZmluZSBCQ1BVX0JJR19FTkRJQU4gMQorI2VsaWYgX19CWVRF
X09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKyNkZWZpbmUgQkNQVV9MSVRUTEVf
RU5ESUFOIDEKKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfUERQX0VORElBTl9fCisj
ZGVmaW5lIEJDUFVfTUlERExFX0VORElBTiAxCisjZWxzZQorI2Vycm9yICJVbmtub3duIGVuZGlh
biIKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxs
b2MiCisjZW5kaWYKKworI2lmIEJDUFUoQUREUkVTUzY0KQorI2lmIEJPUyhEQVJXSU4pICYmIEJD
UFUoQVJNNjQpCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCAzNgorI2Vsc2UK
Ky8qIFdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGVmZmVjdGl2ZSBhZGRyZXNzIHdpZHRoIGlzIDw9
IDQ4IGluIDY0Yml0IGFyY2hpdGVjdHVyZXMgKGUuZy4gTmFOIGJveGluZykuICovCisjZGVmaW5l
IEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCA0OAorI2VuZGlmCisjZWxzZQorI2RlZmluZSBC
T1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggMzIKKyNlbmRpZgorCiAjZGVmaW5lIEJBVFRSSUJV
VEVfUFJJTlRGKGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykgX19hdHRyaWJ1
dGVfXygoX19mb3JtYXRfXyhwcmludGYsIGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3Vt
ZW50cykpKQogCiAjaWYgQlBMQVRGT1JNKE1BQykgfHwgQlBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXggN2E2NjdhN2RkNmI1ZTgxY2U2NDc5
MTFlODhmYjE2OTFlODQ2ZGYxOS4uMmM5ZjViNDU4MGFkMTRmYzg2MGIxNmZmNWE2OTljNmEwM2Vl
MzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoRGVidWdIZWFwKTsKIAogI2lmIEJP
UyhEQVJXSU4pCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAg
ICAgOiBtX3pvbmUobWFsbG9jX2NyZWF0ZV96b25lKDAsIDApKQogICAgICwgbV9wYWdlU2l6ZSh2
bVBhZ2VTaXplKCkpCiB7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGVidWdIZWFwOjpkdW1wKCkK
IAogI2Vsc2UKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
CitEZWJ1Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAg
ICA6IG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdI
ZWFwLmgKaW5kZXggOTU4YTIyMDkwYTQxNDA3Y2U2MDhiZGQ0YTFmYTEyYjhmZmJhNTEwYi4uOWRi
ODU1MjNiZWU3NzNhZjE4YTE2Yjk4MDViMTA5M2JlOTExYzZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlYnVnSGVhcC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICAgICAK
IGNsYXNzIERlYnVnSGVhcCA6IHByaXZhdGUgU3RhdGljUGVyUHJvY2VzczxEZWJ1Z0hlYXA+IHsK
IHB1YmxpYzoKLSAgICBEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIERl
YnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgdm9pZCog
bWFsbG9jKHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CiAgICAgdm9pZCogbWVtYWxpZ24oc2l6ZV90
IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlZmVycmVkVHJpZ2dlci5oCmluZGV4IGIyNzZhMmMwZTA2ZTNhZjczNzIwYjdjN2FjZjc0NjRl
ZjRkMTMwYjcuLjI5ZmIxOTc2OWVkYjlkZGIwYjRjMWU2ZDA3NmRkNWE1OTM2NTM0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaApAQCAtMjYsNiArMjYsOCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJc29QYWdlVHJpZ2dlci5oIgorI2luY2x1ZGUgIk11
dGV4LmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtMzcs
MTAgKzM5LDEwIEBAIGNsYXNzIERlZmVycmVkVHJpZ2dlciB7CiAgICAgRGVmZXJyZWRUcmlnZ2Vy
KCkgeyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgZGlk
QmVjb21lKElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci0gICAgdm9pZCBoYW5kbGVEZWZlcnJhbChJc29QYWdlPENvbmZp
Zz4mKTsKKyAgICB2b2lkIGhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Jl
ZW5EZWZlcnJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlZmVycmVkVHJpZ2dlcklubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJy
ZWRUcmlnZ2VySW5saW5lcy5oCmluZGV4IDA5Y2ZjODU3N2ZhYWY4MTJiMWZjZjlhMzQ0NTNiNGNi
ZDBiY2RlMzYuLjcxZWE3MjY4YmIxY2YyYzdhZGI0YWU2MDM3ZjM2NDJmYTBjNzI3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCkBAIC0z
MiwyMiArMzIsMjIgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTxJc29QYWdlVHJp
Z2dlciB0cmlnZ2VyPgogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBEZWZlcnJlZFRy
aWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERl
ZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIGlmIChwYWdlLmlz
SW5Vc2VGb3JBbGxvY2F0aW9uKCkpCiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gdHJ1ZTsK
ICAgICBlbHNlCi0gICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0cmln
Z2VyKTsKKyAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFnZSwg
dHJpZ2dlcik7CiB9CiAKIHRlbXBsYXRlPElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6aGFuZGxl
RGVmZXJyYWwoSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJp
Z2dlcj46OmhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tl
ciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIFJFTEVBU0VfQkFTU0VSVCghcGFnZS5p
c0luVXNlRm9yQWxsb2NhdGlvbigpKTsKICAgICAKICAgICBpZiAobV9oYXNCZWVuRGVmZXJyZWQp
IHsKLSAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUoJnBhZ2UsIHRyaWdnZXIpOwor
ICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZShsb2NrZXIsICZwYWdlLCB0cmlnZ2Vy
KTsKICAgICAgICAgbV9oYXNCZWVuRGVmZXJyZWQgPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCmluZGV4IDI1NzRiMjM5ZjNhMGZkYzY0OTE3ODZk
MzlkMzU3MDE0ZWIxMjA3NzkuLjg3N2E2YzI5ZTVmN2QzOGM5ZmJlMjFhMjFmNzUwNDBhYjY5MTdk
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RhdGljIGJvb2wgaXNOYW5vTWFsbG9jRW5hYmxlZCgpCiAKIERFRklORV9TVEFUSUNf
UEVSX1BST0NFU1NfU1RPUkFHRShFbnZpcm9ubWVudCk7CiAKLUVudmlyb25tZW50OjpFbnZpcm9u
bWVudChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0Vudmlyb25tZW50OjpFbnZpcm9ubWVudChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVk
KGNvbXB1dGVJc0RlYnVnSGVhcEVuYWJsZWQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52
aXJvbm1lbnQuaAppbmRleCBhNTYyNTZlYmNhOGU5ZDRmY2U5ZGI0MzUyZGUyMGEyNzJmNzM0OTVj
Li43YjI4ZGU5MjczZTAzNGRiNGY2NzlhMDI1YTliMjkwYWJmZmUwYmYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9FbnZpcm9ubWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBibWFsbG9j
IHsKIAogY2xhc3MgRW52aXJvbm1lbnQgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxFbnZpcm9u
bWVudD4gewogcHVibGljOgotICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOworICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOwogICAgIAogICAgIGJvb2wgaXNEZWJ1Z0hlYXBFbmFibGVkKCkgeyByZXR1cm4g
bV9pc0RlYnVnSGVhcEVuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcApp
bmRleCAzY2NhMmQ1NGU2NjNkNTQyMjA1NTAxMDk3MWZkOTNlN2VmYmE3MTExLi40MjAxOTU5ZjYw
YmU2MjEwNTJiMTMwZDNlOTY3NWI5ZmIwMDczNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2Fj
YWdlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ2FsbGJhY2sgewogbmFtZXNwYWNlIGJt
YWxsb2MgewogCiBzdHJ1Y3QgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyA6IHB1YmxpYyBTdGF0
aWNQZXJQcm9jZXNzPFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M+IHsKLSAgICBQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2tzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KKyAgICBQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2tzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KICAg
ICAKICAgICBWZWN0b3I8R2lnYWNhZ2U6OkNhbGxiYWNrPiBjYWxsYmFja3M7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5jcHAKaW5kZXggMTE4OWI4Nzc4NDQ3NWUwN2UzYWZiY2EwOWIzMzEwYjMxYmRj
MTUwMS4uM2FhZTQzYTIxN2FlM2IxZDFkY2NhZDBlNzE1ZmRjNDFmODM5NjVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHNpemVfdCBIZWFwOjpnaWdhY2FnZVNp
emUoKQogICAgIHJldHVybiBHaWdhY2FnZTo6c2l6ZShnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9
CiAKLXNpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikK
K3NpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikKIHsKICAgICByZXR1cm4gbV9mcmVlYWJsZU1lbW9yeTsKIH0KQEAgLTkxLDE0ICs5MSwxNCBA
QCBzaXplX3QgSGVhcDo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAK
LXZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCit2b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKQogewogICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwog
ICAgIG1faGFzUGVuZGluZ0RlY29tbWl0cyA9IGZhbHNlOwogICAgIG1fY29uZGl0aW9uLm5vdGlm
eV9hbGwoKTsKIH0KIAotdm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
KQordm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewog
ICAgIG1fZm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CiAgICAgbV9mcmVl
YWJsZU1lbW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwpAQCAtMTE0LDkgKzExNCw5
IEBAIHZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCi12b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1
bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiAjZWxz
ZQotdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxr
RGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQordm9pZCBI
ZWFwOjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVj
b21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQogI2VuZGlmCiB7
CiAgICAgZm9yIChhdXRvJiBsaXN0IDogbV9mcmVlUGFnZXMpIHsKQEAgLTE2OSw3ICsxNjksNyBA
QCB2b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtE
ZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpegogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQotdm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxr
RGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIHZvaWQqIG5ld0hpZ2hXYXRlck1hcmsgPSBu
dWxscHRyOwogICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuaAppbmRleCBkYjMyNDUzNjg3ZmI1NmU2MDAwODNiZWUxMGJhNTRmMDgyYzNk
NjkzLi41OWM3NWYyN2I5Yzc5ODUwMGRkZGRmYjVhM2I2MzRiY2M4ZDJjMWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaApAQCAtNzYsMTQgKzc2LDE0IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgc2hy
aW5rTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7
CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7Ci0gICAgdm9p
ZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CisgICAg
dm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CiAjZWxzZQotICAgIHZvaWQgc2NhdmVuZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOwogI2VuZGlmCi0gICAg
dm9pZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6
ZV90JiBmcmVlZCwgc2l6ZV90IGdvYWwpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBn
b2FsKTsKIAotICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKICAgICBzaXplX3QgZm9vdHByaW50KCk7CiAKICAgICB2b2lkIGV4dGVybmFsRGVjb21t
aXQodm9pZCogcHRyLCBzaXplX3QpOwpAQCAtOTEsMTAgKzkxLDEwIEBAIGNsYXNzIEhlYXAgewog
ICAgIHZvaWQgZXh0ZXJuYWxDb21taXQodm9pZCogcHRyLCBzaXplX3QpOwogICAgIHZvaWQgZXh0
ZXJuYWxDb21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBwdHIsIHNpemVfdCk7
CiAKLSAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKTsKKyAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOworICAg
IHZvaWQgZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBM
YXJnZVJhbmdlJiwgQnVsa0RlY29tbWl0Jik7CiAKICAgICBzdHJ1Y3QgTGFyZ2VPYmplY3RIYXNo
IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCoga2V5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKaW5kZXggNTZiNjdiMzY0OTQwYmM4MTc2OTRlZDA5
YmM0ZDY1NjA4ODBhNzU3NS4uZDVjMGMyZTJhZGUyNzM0YzNmMGQyMjk2MWJiOTQ2ZWNiYzU0Yzc5
NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0yOSw3ICsy
OSw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19T
VE9SQUdFKEhlYXBDb25zdGFudHMpOwogCi1IZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsg
dm1QYWdlU2l6ZVBoeXNpY2FsKCkgfQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNp
emVQaHlzaWNhbCA+PSBzbWFsbFBhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcENvbnN0YW50cy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29u
c3RhbnRzLmgKaW5kZXggNWE3MzU3MzlhNjUyNGQ2NzQwNGI0NzMzZDRkOWQ0ZGNhZDRhNTNjMC4u
ODRiNDAxOWRmNTc0MzY2YTM5YjE3M2NhZDkwYzk4MjAzZjFjOTgxOCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGJtYWxs
b2MgewogCiBjbGFzcyBIZWFwQ29uc3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SGVh
cENvbnN0YW50cz4gewogcHVibGljOgotICAgIEhlYXBDb25zdGFudHMoc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOworICAgIEhlYXBDb25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOwogICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7CiAKICAgICBpbmxpbmUgc2l6ZV90
IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGFzc2Vz
W3NpemVDbGFzc107IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxs
b2NhdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oCmluZGV4IGEw
ZjcwODBjYmIxYzIxNzE3NTdjM2Q2ZGY3NDc1MmVmNTFiZDhkMTcuLjNiYTA4YWEyYjY4YjJjNDM4
ODMwMDBiZjIxNDQxMjFlY2ZjZjQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0
b3IuaApAQCAtNDAsMTMgKzQwLDEyIEBAIGNsYXNzIElzb0FsbG9jYXRvciB7CiAgICAgSXNvQWxs
b2NhdG9yKElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICB+SXNvQWxsb2NhdG9yKCk7CiAgICAg
Ci0gICAgdm9pZCogYWxsb2NhdGUoYm9vbCBhYm9ydE9uRmFpbHVyZSk7Ci0gICAgdm9pZCBzY2F2
ZW5nZSgpOworICAgIHZvaWQqIGFsbG9jYXRlKElzb0hlYXBJbXBsPENvbmZpZz4mLCBib29sIGFi
b3J0T25GYWlsdXJlKTsKKyAgICB2b2lkIHNjYXZlbmdlKElzb0hlYXBJbXBsPENvbmZpZz4mKTsK
ICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1
cmUpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhJc29IZWFwSW1wbDxDb25maWc+JiwgYm9vbCBh
Ym9ydE9uRmFpbHVyZSk7CiAgICAgCi0gICAgSXNvSGVhcEltcGw8Q29uZmlnPiogbV9oZWFwIHsg
bnVsbHB0ciB9OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CiAgICAgSXNvUGFnZTxDb25maWc+
KiBtX2N1cnJlbnRQYWdlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggNTQ1NWZmZGNmMmQwMzIwZjMzZjM2YzczMTFm
OTYyZWY3Yzc4MjQ3YS4uOGQ3YTRmYzA4NmNjYzg3MTUxYWQ0N2UwZmE1ZjgzMmZhZmUwZTQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTM0
LDggKzM0LDcgQEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotSXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25m
aWc+JiBoZWFwKQotICAgIDogbV9oZWFwKCZoZWFwKQorSXNvQWxsb2NhdG9yPENvbmZpZz46Oklz
b0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+JikKIHsKIH0KIApAQCAtNDUsMzYgKzQ0LDM2
IEBAIElzb0FsbG9jYXRvcjxDb25maWc+Ojp+SXNvQWxsb2NhdG9yKCkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgotdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlKGJv
b2wgYWJvcnRPbkZhaWx1cmUpCit2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUo
SXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHZvaWQqIHJlc3VsdCA9
IG1fZnJlZUxpc3QuYWxsb2NhdGU8Q29uZmlnPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsK
LSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3coYWJvcnRPbkZhaWx1cmUpOworICAgICAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyhoZWFwLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgICAg
IH0pOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxv
Y2F0ZWQgJXAgb2Ygc2l6ZSAldVxuIiwgbV9oZWFwLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0U2l6
ZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IGFsbG9jYXRlZCAlcCBvZiBzaXplICV1
XG4iLCAmaGVhcCwgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUJOT19JTkxJTkUgdm9pZCogSXNv
QWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQorQk5P
X0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KElzb0hlYXBJ
bXBsPENvbmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIobV9oZWFwLT5sb2NrKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOwogCi0gICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlv
bk1vZGUgPSBtX2hlYXAtPnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CisgICAgQWxsb2NhdGlvbk1v
ZGUgYWxsb2NhdGlvbk1vZGUgPSBoZWFwLnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgaWYg
KGFsbG9jYXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpTaGFyZWQpIHsKICAgICAgICAgaWYg
KG1fY3VycmVudFBhZ2UpIHsKLSAgICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0
aW5nKG1fZnJlZUxpc3QpOworICAgICAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRp
bmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsKICAgICAgICAgICAgIG1fY3VycmVudFBhZ2UgPSBudWxs
cHRyOwogICAgICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX2hlYXAtPmFsbG9jYXRlRnJvbVNoYXJlZChsb2NrZXIsIGFib3J0T25GYWlsdXJl
KTsKKyAgICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGVGcm9tU2hhcmVkKGxvY2tlciwgYWJvcnRP
bkZhaWx1cmUpOwogICAgIH0KIAogICAgIEJBU1NFUlQoYWxsb2NhdGlvbk1vZGUgPT0gQWxsb2Nh
dGlvbk1vZGU6OkZhc3QpOwogICAgIAotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVz
dWx0ID0gbV9oZWFwLT50YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0
PENvbmZpZz4gcmVzdWx0ID0gaGVhcC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIGlm
IChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OlN1Y2Nlc3MpIHsKICAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKHJlc3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2luZDo6T3V0T2ZNZW1vcnkp
OwogICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIWFib3J0T25GYWlsdXJlKTsKQEAgLTgyLDcgKzgx
LDcgQEAgQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93
KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgfQogICAgIAogICAgIGlmIChtX2N1cnJlbnRQYWdl
KQotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0KTsKKyAg
ICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsK
ICAgICAKICAgICBtX2N1cnJlbnRQYWdlID0gcmVzdWx0LnBhZ2U7CiAgICAgbV9mcmVlTGlzdCA9
IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOwpAQCAtOTEsMTEgKzkwLDExIEBAIEJO
T19JTkxJTkUgdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFi
b3J0T25GYWlsdXJlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0Fs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSgpCit2b2lkIElzb0FsbG9jYXRvcjxDb25maWc+Ojpz
Y2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogewogICAgIGlmIChtX2N1cnJlbnRQ
YWdlKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG1faGVhcC0+bG9j
ayk7Ci0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOwor
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOworICAgICAg
ICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAg
ICAgICBtX2N1cnJlbnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5l
cy5oCmluZGV4IDIzZjMyYTNkODliMjVkMmM1N2UxYTM4MmJkZTAyNjg4NWE0ZTNkOWQuLjAzMmZi
NzcxOWFhYmIwMzhiMzgyMjk0NzM5MGJkNDg4YTg0N2ZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaApAQCAtNzYsNyArNzYsNyBAQCBCTk9f
SU5MSU5FIHZvaWQgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UoKQogICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKCptX2xvY2spOwogICAgIAogICAgIGZvciAodm9pZCog
cHRyIDogbV9vYmplY3RMb2cpCi0gICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIp
LT5mcmVlKHB0cik7CisgICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVl
KGxvY2tlciwgcHRyKTsKICAgICBtX29iamVjdExvZy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCBiYWZlYjNlZTAzMDU5ZTg3ZjliMDVkNzczN2E2
YjI1OTBmZmViZGY3Li5lNzJiMmQxNjEyMWI3M2FmMzFlMGZkN2MxMzJhNWM5NGFmZGRmN2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJCaXRzLmgiCiAjaW5jbHVkZSAiRWxpZ2liaWxpdHlSZXN1bHQuaCIKICNpbmNsdWRl
ICJJc29QYWdlLmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAK
IG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgSXNvRGlyZWN0b3J5
QmFzZSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlQmFzZSB7CiAgICAgCiAgICAgSXNvSGVhcElt
cGw8Q29uZmlnPiYgaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJ
c29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgPSAwOwogICAgIAogcHJvdGVjdGVkOgog
ICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVhcDsKQEAgLTY0LDkgKzY1LDkgQEAgY2xhc3Mg
SXNvRGlyZWN0b3J5IDogcHVibGljIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiB7CiAgICAgCiAg
ICAgLy8gRmluZCB0aGUgZmlyc3QgcGFnZSB0aGF0IGlzIGVsaWdpYmxlIGZvciBhbGxvY2F0aW9u
IGFuZCByZXR1cm4gaXQuIE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubwogICAgIC8vIHN1
Y2ggdGhpbmcuIE1heSBhbGxvY2F0ZSBhIG5ldyBwYWdlIGlmIHdlIGhhdmUgYW4gdW5jb21taXR0
ZWQgcGFnZS4KLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxl
KCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCi0gICAgdm9pZCBkaWRCZWNvbWUoSXNv
UGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQmVj
b21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29Q
YWdlVHJpZ2dlcikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBmcm9t
IGEgYnVsayBkZWNvbW1pdCBmdW5jdGlvbiBpbiB0aGUgU2NhdmVuZ2VyLCBzbyBubyBsb2NrcyBh
cmUgaGVsZC4gVGhpcyBmdW5jdGlvbgogICAgIC8vIG5lZWRzIHRvIGdldCB0aGUgaGVhcCBsb2Nr
LgpAQCAtNzQsMjMgKzc1LDIzIEBAIGNsYXNzIElzb0RpcmVjdG9yeSA6IHB1YmxpYyBJc29EaXJl
Y3RvcnlCYXNlPENvbmZpZz4gewogICAgIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgZW1wdHkg
YW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1dCB0aGVtIGludG8gdGhlIHZlY3Rvci4gVGhpcyBh
bHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFnZXMgYXMgYmVpbmcgZGVjb21taXR0ZWQuIEl0J3Mg
dGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUgYWN0dWFsIGRlY29tbWl0dGluZy4KLSAgICB2b2lk
IHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2Uo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYp
OwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0
ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYpOwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAg
IHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFj
aENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMm
KTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzY2F2ZW5nZVBhZ2Uoc2l6ZV90LCBWZWN0b3I8
RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlUGFnZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAor
ICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjxJc29QYWdlPENvbmZpZz4sIElzb1BhZ2U8
Q29uZmlnPjo6cGFnZVNpemU+LCBudW1QYWdlcz4gbV9wYWdlcyB7IH07CiAgICAgLy8gTk9URTog
SSBzdXBwb3NlIHRoYXQgdGhpcyBjb3VsZCBiZSB0d28gYml0dmVjdG9ycy4gQnV0IGZyb20gd29y
a2luZyBvbiB0aGUgR0MsIEkgZm91bmQgdGhhdCB0aGUKICAgICAvLyBudW1iZXIgb2YgYml0dmVj
dG9ycyBkb2VzIG5vdCBtYXR0ZXIgYXMgbXVjaCBhcyB3aGV0aGVyIG9yIG5vdCB0aGV5IG1ha2Ug
aW50dWl0aXZlIHNlbnNlLgogICAgIEJpdHM8bnVtUGFnZXM+IG1fZWxpZ2libGU7CiAgICAgQml0
czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBCaXRzPG51bVBhZ2VzPiBtX2NvbW1pdHRlZDsKLSAg
ICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmlnPiosIG51bVBhZ2VzPiBtX3BhZ2VzOwogICAgIHVu
c2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07CiAjaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQogICAgIHVuc2lnbmVkIG1faGlnaFdhdGVybWFyayB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKaW5kZXggMGIxYTFlYzA1
YTA3NDE0MDA0MmJiNzZlNzRiMTA4ZmZlYjVmOWIyNy4uODU1NDJkZjk4NTI0NThlMzVlNDBjMDk5
ZGJlMzIyY2I4OWM3NDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29E
aXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3Rv
cnlJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcs
IHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgogSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVt
UGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKICAgICA6IElz
b0RpcmVjdG9yeUJhc2U8Q29uZmlnPihoZWFwKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IG51
bVBhZ2VzOyBpLS07KQotICAgICAgICBtX3BhZ2VzW2ldID0gbnVsbHB0cjsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLUVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtl
Rmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxD
b25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCiB7CiAgICAgdW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUg
fCB+bV9jb21taXR0ZWQpLmZpbmRCaXQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1
ZSk7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKQEAgLTU5
LDcgKzU3LDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKICAgICBTY2F2ZW5nZXImIHNjYXZl
bmdlciA9ICpTY2F2ZW5nZXI6OmdldCgpOwogICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmco
KTsKICAgICAKLSAgICBJc29QYWdlPENvbmZpZz4qIHBhZ2UgPSBtX3BhZ2VzW3BhZ2VJbmRleF07
CisgICAgSXNvUGFnZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdlSW5kZXhdLmdldCgpOwog
ICAgIAogICAgIGlmICghbV9jb21taXR0ZWRbcGFnZUluZGV4XSkgewogICAgICAgICBzY2F2ZW5n
ZXIuc2NoZWR1bGVJZlVuZGVyTWVtb3J5UHJlc3N1cmUoSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsK
QEAgLTkzLDcgKzkxLDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8
Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiBw
YWdlLCBJc29QYWdlVHJpZ2dlciB0cmlnZ2VyKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBs
b2NrZXIsIElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHVuc2lnbmVk
IHBhZ2VJbmRleCA9IHBhZ2UtPmluZGV4KCk7CkBAIC0xMDMsNyArMTAxLDcgQEAgdm9pZCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShJc29QYWdlPENvbmZp
Zz4qIHBhZ2UsIElzb1AKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBi
ZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdl
SW5kZXhdID0gdHJ1ZTsKICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0
ZDo6bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHBhZ2VJbmRleCk7Ci0gICAgICAg
IHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCh0aGlzKTsKKyAgICAg
ICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGxvY2tlciwgdGhp
cyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAg
ICAgICAgaWYgKHZlcmJvc2UpCkBAIC0xMjUsMjggKzEyMywyOCBAQCB2b2lkIElzb0RpcmVjdG9y
eTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQodW5zaWduZWQgaW5kZXgpCiAg
ICAgLy8gc3lzY2FsbCBpdHNlbGYgKHdoaWNoIGhhcyB0byBkbyBtYW55IGhhcmQgdGhpbmdzKS4K
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5tX2hlYXAubG9jayk7CiAg
ICAgQkFTU0VSVCghIW1fY29tbWl0dGVkW2luZGV4XSk7Ci0gICAgdGhpcy0+bV9oZWFwLmlzTm9M
b25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAg
ICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNbaW5kZXhdLmdldCgpLCBJ
c29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVkW2luZGV4XSA9IGZhbHNlOwog
ICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2li
bGVPckRlY29tbWl0dGVkLCBpbmRleCk7Ci0gICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdp
YmxlT3JEZWNvbW1pdGVkKHRoaXMpOwotICAgIHRoaXMtPm1faGVhcC5kaWREZWNvbW1pdChtX3Bh
Z2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQobG9ja2VyLCB0aGlzKTsKKyAgICB0aGlzLT5tX2hl
YXAuZGlkRGVjb21taXQobV9wYWdlc1tpbmRleF0uZ2V0KCksIElzb1BhZ2VCYXNlOjpwYWdlU2l6
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFn
ZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQ
YWdlKHNpemVfdCBpbmRleCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2
b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcGFn
ZSBpcyBub3cgb2ZmIGxpbWl0cy4KICAgICBtX2VtcHR5W2luZGV4XSA9IGZhbHNlOwogICAgIG1f
ZWxpZ2libGVbaW5kZXhdID0gZmFsc2U7Ci0gICAgZGVjb21taXRzLnB1c2goRGVmZXJyZWREZWNv
bW1pdCh0aGlzLCBtX3BhZ2VzW2luZGV4XSwgaW5kZXgpKTsKKyAgICBkZWNvbW1pdHMucHVzaChE
ZWZlcnJlZERlY29tbWl0KHRoaXMsIG1fcGFnZXNbaW5kZXhdLmdldCgpLCBpbmRleCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9p
ZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1w
dHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKLSAgICAgICAgICAgIHNjYXZlbmdlUGFnZShpbmRleCwgZGVjb21taXRzKTsKKyAgICAg
ICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1pdHMpOwogICAgICAgICB9
KTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgbV9oaWdoV2F0ZXJtYXJrID0gMDsK
QEAgLTE1NSwxMiArMTUzLDEyIEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVt
UGFnZXM+OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlCiAKICNpZiBCVVNF
KFBBUlRJQUxfU0NBVkVOR0UpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBh
c3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46
OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21t
aXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVj
dG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2Nv
bW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAg
ICAgICAgICAgIGlmIChpbmRleCA+IG1faGlnaFdhdGVybWFyaykKLSAgICAgICAgICAgICAgICBz
Y2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0cyk7CisgICAgICAgICAgICAgICAgc2NhdmVuZ2VQ
YWdlKGxvY2tlciwgaW5kZXgsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAgIG1faGlnaFdh
dGVybWFyayA9IDA7CiB9CkBAIC0xNjgsMTEgKzE2NiwxMSBAQCB2b2lkIElzb0RpcmVjdG9yeTxD
b25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERl
ZmVycgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2Vz
PgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFz
c2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9p
ZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQ
YWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQogewog
ICAgIG1fY29tbWl0dGVkLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7Ci0gICAgICAgICAgICBmdW5jKCptX3BhZ2VzW2luZGV4XSk7CisgICAgICAgICAgICBmdW5j
KCoobV9wYWdlc1tpbmRleF0uZ2V0KCkpKTsKICAgICAgICAgfSk7CiB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCmluZGV4IDY5NmQyMmU1N2Y2MjIzZjliOTI5NDJh
YjJmMmUwYjA5YWFiZDlhODMuLmRkMDg5YTFhYmQ1MjFmZWI0ZDE5Mzc2YmY2Y2NlNzM4N2RlYjU3
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCkBAIC0zMSw3ICszMSw4
IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1w
bEJhc2UoKQorSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2UoTXV0ZXgmIGxvY2spCisg
ICAgOiBsb2NrKGxvY2spCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvSGVhcEltcGwuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaApp
bmRleCAwOTUxMWUyNTdmYmZiZjdjYzA0YjM5NzhjMWVmZTBiZjJiMzRjMmRkLi4wYmFhODA4ODg2
Yjc3NjU3ZGI5MzExMzQxZmMyZGZjMmM1YmU1NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29I
ZWFwSW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSXNvQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiSXNvRGlyZWN0b3J5UGFnZS5oIgogI2luY2x1ZGUgIklzb1RMU0FsbG9jYXRvckVu
dHJ5LmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgi
CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTUxLDI3ICs1Miw0OCBAQCBjbGFzcyBCRVhQT1JU
IElzb0hlYXBJbXBsQmFzZSB7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHZpcnR1
YWwgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
KSA9IDA7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpID0gMDsK
LSAgICB2aXJ0dWFsIHNpemVfdCBmb290cHJpbnQoKSA9IDA7CiAgICAgCiAgICAgdm9pZCBzY2F2
ZW5nZU5vdygpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFNjYXZlbmdpbmcoVmVjdG9yPERlZmVy
cmVkRGVjb21taXQ+Jik7CiAKKyAgICB2b2lkIGRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBi
eXRlcyk7CisgICAgdm9pZCBkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisK
KyAgICB2b2lkIGlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZv
aWQgaXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKworICAgIHNp
emVfdCBmcmVlYWJsZU1lbW9yeSgpOworICAgIHNpemVfdCBmb290cHJpbnQoKTsKKwogICAgIHZv
aWQgYWRkVG9BbGxJc29IZWFwcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSXNvSGVhcEltcGxCYXNl
KCk7CisgICAgSXNvSGVhcEltcGxCYXNlKE11dGV4Jik7CiAKICAgICBmcmllbmQgY2xhc3MgSXNv
U2hhcmVkUGFnZTsKICAgICBmcmllbmQgY2xhc3MgQWxsSXNvSGVhcHM7CiAgICAgCitwdWJsaWM6
CisgICAgLy8gSXQncyBhbG1vc3QgYWx3YXlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0
byBncmFiIHRoZSBsb2NrLiBUaGlzIGxvY2sgY29tZXMgZnJvbSB0aGUKKyAgICAvLyAoKlBlclBy
b2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46
OmdldCgpKS0+bG9jay4gVGhhdCdzIHByZXR0eSB3ZWlyZCwgYW5kIHdlIGRvbid0CisgICAgLy8g
dHJ5IHRvIGRpc2d1aXNlIHRoZSBmYWN0IHRoYXQgaXQncyB3ZWlyZC4gV2Ugb25seSBkbyB0aGF0
IGJlY2F1c2UgaGVhcHMgaW4gdGhlIHNhbWUgc2l6ZSBjbGFzcworICAgIC8vIHNoYXJlIHRoZSBz
YW1lIGRlYWxsb2NhdG9yIGxvZywgc28gaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZW0gdG8gYWxzbyBz
aGFyZSB0aGUgc2FtZSBsb2NrIHRvCisgICAgLy8gYW1vcnRpemUgbG9jayBhY3F1aXNpdGlvbiBj
b3N0cy4KKyAgICBNdXRleCYgbG9jazsKK3Byb3RlY3RlZDoKICAgICBJc29IZWFwSW1wbEJhc2Uq
IG1fbmV4dCB7IG51bGxwdHIgfTsKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1l
X3BvaW50IG1fbGFzdFNsb3dQYXRoVGltZTsKLSAgICBzdGQ6OmFycmF5PHZvaWQqLCBtYXhBbGxv
Y2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7IH07CisgICAgc2l6ZV90IG1fZm9vdHBy
aW50IHsgMCB9OworICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsgMCB9OworI2lmIEVOQUJM
RV9QSFlTSUNBTF9QQUdFX01BUAorICAgIFBoeXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1h
cDsKKyNlbmRpZgorICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjx1aW50OF90LCBibWFs
bG9jOjphbGlnbm1lbnQ+LCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7
IH07Citwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZkFsbG9jYXRpb25zRnJvbVNo
YXJlZEluT25lQ3ljbGUgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdmFpbGFibGVTaGFyZWQgeyBt
YXhBbGxvY2F0aW9uRnJvbVNoYXJlZE1hc2sgfTsKICAgICBBbGxvY2F0aW9uTW9kZSBtX2FsbG9j
YXRpb25Nb2RlIHsgQWxsb2NhdGlvbk1vZGU6OkluaXQgfTsKLSAgICAKKyAgICBib29sIG1faXNJ
bmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyB0cnVlIH07CiAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YobV9hdmFpbGFibGVTaGFyZWQpICogOCA+PSBtYXhBbGxvY2F0aW9uRnJv
bVNoYXJlZCwgIiIpOwogfTsKIApAQCAtODMsMjEgKzEwNSwxNyBAQCBjbGFzcyBJc29IZWFwSW1w
bCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogcHVibGljOgogICAgIElzb0hlYXBJ
bXBsKCk7CiAgICAgCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGln
aWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIC8vIENhbGxiYWNrcyBm
cm9tIGRpcmVjdG9yeS4KLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElz
b0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7Ci0gICAgdm9p
ZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29E
aXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiopOworICAgIHZvaWQgZGlkQmVjb21lRWxp
Z2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVj
dG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRC
ZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwg
SXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4q
KTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92
ZXJyaWRlOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2b2lkIHNjYXZlbmdlVG9I
aWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2VuZGlm
CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoKSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBm
b290cHJpbnQoKSBvdmVycmlkZTsKLSAgICAKICAgICB1bnNpZ25lZCBhbGxvY2F0b3JPZmZzZXQo
KTsKICAgICB1bnNpZ25lZCBkZWFsbG9jYXRvck9mZnNldCgpOwogCkBAIC0xMDYsNDYgKzEyNCwy
NSBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2Ugewog
ICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYpOworICAg
IHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29u
c3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBm
b3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAg
IAogICAgIC8vIFRoaXMgaXMgb25seSBhY2N1cmF0ZSB3aGVuIGFsbCB0aHJlYWRzIGFyZSBzY2F2
ZW5nZWQuIE90aGVyd2lzZSBpdCB3aWxsIG92ZXJlc3RpbWF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYpOwotCi0g
ICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotICAgIHZvaWQgZGlk
RGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotCi0gICAgdm9pZCBpc05vd0ZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lkIGlzTm9Mb25nZXJGcmVlYWJs
ZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogCiAgICAgQWxsb2Nh
dGlvbk1vZGUgdXBkYXRlQWxsb2NhdGlvbk1vZGUoKTsKICAgICB2b2lkKiBhbGxvY2F0ZUZyb21T
aGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUp
OwotICAgIAotICAgIC8vIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2li
aWxpdHkgdG8gZ3JhYiB0aGUgbG9jay4gVGhpcyBsb2NrIGNvbWVzIGZyb20gdGhlCi0gICAgLy8g
KCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29u
ZmlnPj4+OjpnZXQoKSktPmxvY2suIFRoYXQncyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAot
ICAgIC8vIHRyeSB0byBkaXNndWlzZSB0aGUgZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkg
ZG8gdGhhdCBiZWNhdXNlIGhlYXBzIGluIHRoZSBzYW1lIHNpemUgY2xhc3MKLSAgICAvLyBzaGFy
ZSB0aGUgc2FtZSBkZWFsbG9jYXRvciBsb2csIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRv
IGFsc28gc2hhcmUgdGhlIHNhbWUgbG9jayB0bwotICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlz
aXRpb24gY29zdHMuCi0gICAgTXV0ZXgmIGxvY2s7CiAKIHByaXZhdGU6CisgICAgUGFja2VkUHRy
PElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4gbV9oZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9Owor
ICAgIFBhY2tlZFB0cjxJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4+IG1fdGFpbERpcmVjdG9yeSB7
IG51bGxwdHIgfTsKKyAgICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX2Zp
cnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgeyBudWxscHRyIH07CiAgICAgSXNvRGly
ZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4gbV9pbmxpbmVEaXJlY3Rv
cnk7Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX2hlYWREaXJlY3RvcnkgeyBudWxs
cHRyIH07Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX3RhaWxEaXJlY3RvcnkgeyBu
dWxscHRyIH07Ci0gICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9OwotICAgIHNpemVfdCBtX2Zy
ZWVhYmxlTWVtb3J5IHsgMCB9OwotI2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAotICAgIFBo
eXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1hcDsKLSNlbmRpZgogICAgIHVuc2lnbmVkIG1f
bmV4dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0IHRo
ZSBoaWdoIHdhdGVyIG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRlZCBp
biB0aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1bnNp
Z25lZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07Ci0gICAgCi0gICAgYm9vbCBtX2lz
SW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OwotICAgIElzb0Rp
cmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5
IHsgbnVsbHB0ciB9OwotICAgIAogICAgIElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0FsbG9jYXRv
ckVudHJ5PENvbmZpZz4+IG1fYWxsb2NhdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKaW5kZXggMmE0ZmIyODQzNmIzNThlOTZhMTcwMWI5MTMz
NzVhNTMzZWRkYWVkMC4uOTRlYjNmNGMxNGY4ZTZmN2NiNDdmNWIwM2MzMmM4OTk4ZDU2MWE2MSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCkBAIC0zNCw2
NCArMzQsNzAgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+CiBJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFwSW1wbCgpCi0gICAgOiBsb2NrKCgqUGVy
UHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+
Pjo6Z2V0KCkpLT5sb2NrKQorICAgIDogSXNvSGVhcEltcGxCYXNlKCgqUGVyUHJvY2VzczxJc29U
TFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5s
b2NrKQogICAgICwgbV9pbmxpbmVEaXJlY3RvcnkoKnRoaXMpCiAgICAgLCBtX2FsbG9jYXRvcigq
dGhpcykKIHsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCitFbGln
aWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdp
YmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlcikKIHsKICAgICBpZiAobV9p
c0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCkgewotICAgICAgICBFbGlnaWJp
bGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0b3J5LnRha2VGaXJzdEVs
aWdpYmxlKCk7CisgICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9p
bmxpbmVEaXJlY3RvcnkudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKICAgICAgICAgaWYgKHJl
c3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkKICAgICAgICAgICAgIG1faXNJbmxp
bmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZpcnN0
RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkpIHsKLSAgICAgICAgLy8gSWYgbm90aGluZyBp
cyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVz
LiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCi0gICAgICAgIC8vIG9mIHRoZSB3b3JsZCBpZiB3ZSBi
cm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRoYXQgZGlkQmVjb21lRWxp
Z2libGVPckRlY29tbWl0ZWQoKSB3b3VsZCBuZWVkCi0gICAgICAgIC8vIGEgbnVsbCBjaGVjay4K
LSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3RvcnkpOwotICAgICAgICBSRUxF
QVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7Ci0gICAgfQotICAgIAotICAgIGZvciAoOyBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnk7IG1fZmlyc3RFbGlnaWJsZU9yRGVj
b21taXRlZERpcmVjdG9yeSA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+
bmV4dCkgewotICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJs
ZSgpOwotICAgICAgICBpZiAocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKSB7
Ci0gICAgICAgICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVj
dG9yeUhpZ2hXYXRlcm1hcmssIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+
aW5kZXgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHsKKyAgICAgICAgYXV0
byogY3Vyc29yID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgpOwor
ICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAgICAgLy8gSWYgbm90aGluZyBpcyBlbGln
aWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVzLiBJdCB3
b3VsZG4ndCBiZSB0aGUgZW5kCisgICAgICAgICAgICAvLyBvZiB0aGUgd29ybGQgaWYgd2UgYnJv
a2UgdGhpcyBpbnZhcmlhbnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0IGRpZEJlY29tZUVsaWdp
YmxlT3JEZWNvbW1pdGVkKCkgd291bGQgbmVlZAorICAgICAgICAgICAgLy8gYSBudWxsIGNoZWNr
LgorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3RvcnkuZ2V0KCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3RvcnkuZ2V0KCkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICg7IGN1cnNvcjsgY3Vyc29yID0gY3Vyc29y
LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1
bHQgPSBjdXJzb3ItPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgp
ID09IGN1cnNvcik7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmls
aXR5S2luZDo6RnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRl
cm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIGN1cnNvci0+aW5kZXgo
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVj
dG9yeSA9IGN1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogICAgIAog
ICAgIGF1dG8qIG5ld0RpcmVjdG9yeSA9IG5ldyBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4oKnRo
aXMsIG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCsrKTsKLSAgICBpZiAobV9oZWFkRGlyZWN0b3J5
KSB7CisgICAgaWYgKG1faGVhZERpcmVjdG9yeS5nZXQoKSkgewogICAgICAgICBtX3RhaWxEaXJl
Y3RvcnktPm5leHQgPSBuZXdEaXJlY3Rvcnk7CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5l
d0RpcmVjdG9yeTsKICAgICB9IGVsc2UgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFp
bERpcmVjdG9yeSk7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5Lmdl
dCgpKTsKICAgICAgICAgbV9oZWFkRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgICAgICBt
X3RhaWxEaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgfQogICAgIG1fZGlyZWN0b3J5SGln
aFdhdGVybWFyayA9IG5ld0RpcmVjdG9yeS0+aW5kZXgoKTsKICAgICBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7Ci0gICAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2li
bGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG5ld0RpcmVjdG9y
eS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIFJFTEVBU0VfQkFTU0VS
VChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29u
ZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywg
bnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4qIGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8
Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rv
cnk+KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGRpcmVjdG9yeSA9PSAmbV9p
bmxpbmVEaXJlY3RvcnkpOwogICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21t
aXR0ZWQgPSB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hl
YXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9y
eTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+KiBkaXJlY3Rvcnkp
Cit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVk
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29E
aXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0b3J5KQogewogICAgIFJFTEVB
U0VfQkFTU0VSVChtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkpOwogICAgIGF1
dG8qIGRpcmVjdG9yeVBhZ2UgPSBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoZGly
ZWN0b3J5KTsKQEAgLTEwNCw4ICsxMTAsOSBAQCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNj
YXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAgIGZvckVhY2hEaXJlY3Rv
cnkoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChhdXRvJiBkaXJlY3RvcnkpIHsKLSAg
ICAgICAgICAgIGRpcmVjdG9yeS5zY2F2ZW5nZShkZWNvbW1pdHMpOworICAgICAgICAgICAgZGly
ZWN0b3J5LnNjYXZlbmdlKGxvY2tlciwgZGVjb21taXRzKTsKICAgICAgICAgfSk7CiAgICAgbV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gMDsKIH0KQEAgLTExNiwxNyArMTIzLDE2IEBAIHZvaWQg
SXNvSGVhcEltcGw8Q29uZmlnPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVy
cmVkRGVjb21taXQ+JiBkZWNvCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIo
dGhpcy0+bG9jayk7CiAgICAgaWYgKCFtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmspCi0gICAgICAg
IG1faW5saW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGRlY29tbWl0cyk7Ci0g
ICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rvcnk7
IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KSB7CisgICAgICAgIG1faW5saW5lRGlyZWN0b3J5LnNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRzKTsKKyAgICBmb3IgKElzb0Rp
cmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVjdG9yeS5nZXQoKTsgcGFnZTsg
cGFnZSA9IHBhZ2UtPm5leHQpIHsKICAgICAgICAgaWYgKHBhZ2UtPmluZGV4KCkgPj0gbV9kaXJl
Y3RvcnlIaWdoV2F0ZXJtYXJrKQotICAgICAgICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2ZW5nZVRv
SGlnaFdhdGVybWFyayhkZWNvbW1pdHMpOworICAgICAgICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2
ZW5nZVRvSGlnaFdhdGVybWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CiAgICAgfQogICAgIG1fZGly
ZWN0b3J5SGlnaFdhdGVybWFyayA9IDA7CiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnPgotc2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVhYmxlTWVtb3J5KCkKK2lu
bGluZSBzaXplX3QgSXNvSGVhcEltcGxCYXNlOjpmcmVlYWJsZU1lbW9yeSgpCiB7CiAgICAgcmV0
dXJuIG1fZnJlZWFibGVNZW1vcnk7CiB9CkBAIC0xNDYsOCArMTUyLDEwIEBAIHVuc2lnbmVkIElz
b0hlYXBJbXBsPENvbmZpZz46OmRlYWxsb2NhdG9yT2Zmc2V0KCkKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46Om51bUxpdmVPYmplY3RzKCkK
IHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBsb2Nr
ZXIsCiAgICAgICAgIFsmXSAodm9pZCopIHsKICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAg
ICB9KTsKQEAgLTE1Nyw4ICsxNjUsMTAgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
bnVtTGl2ZU9iamVjdHMoKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdW5zaWduZWQgSXNv
SGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQogeworICAgIHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZd
IChJc29QYWdlPENvbmZpZz4mKSB7CiAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfSk7
CkBAIC0xNjcsNDAgKzE3Nyw0MSBAQCB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1D
b21taXR0ZWRQYWdlcygpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3Rvcnko
Y29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVj
dG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsK
ICAgICBmdW5jKG1faW5saW5lRGlyZWN0b3J5KTsKLSAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8
Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVjdG9yeTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQp
CisgICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rv
cnkuZ2V0KCk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KQogICAgICAgICBmdW5jKHBhZ2UtPnBh
eWxvYWQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShj
b25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CiAgICAgZm9yRWFjaERpcmVjdG9yeSgKKyAgICAgICAgbG9ja2VyLAogICAgICAg
ICBbJl0gKGF1dG8mIGRpcmVjdG9yeSkgewotICAgICAgICAgICAgZGlyZWN0b3J5LmZvckVhY2hD
b21taXR0ZWRQYWdlKGZ1bmMpOworICAgICAgICAgICAgZGlyZWN0b3J5LmZvckVhY2hDb21taXR0
ZWRQYWdlKGxvY2tlciwgZnVuYyk7CiAgICAgICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25m
aWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1w
bDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2Uo
CisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChJc29QYWdlPENvbmZpZz4mIHBhZ2UpIHsK
LSAgICAgICAgICAgIHBhZ2UuZm9yRWFjaExpdmVPYmplY3QoZnVuYyk7CisgICAgICAgICAgICBw
YWdlLmZvckVhY2hMaXZlT2JqZWN0KGxvY2tlciwgZnVuYyk7CiAgICAgICAgIH0pOwogICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkOyAr
K2luZGV4KSB7Ci0gICAgICAgIHZvaWQqIHBvaW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XTsK
KyAgICAgICAgdm9pZCogcG9pbnRlciA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpOwogICAg
ICAgICBpZiAocG9pbnRlciAmJiAhKG1fYXZhaWxhYmxlU2hhcmVkICYgKDFVIDw8IGluZGV4KSkp
CiAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgotc2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZvb3RwcmludCgpCitpbmxp
bmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6Zm9vdHByaW50KCkKIHsKICNpZiBFTkFCTEVfUEhZ
U0lDQUxfUEFHRV9NQVAKICAgICBSRUxFQVNFX0JBU1NFUlQobV9mb290cHJpbnQgPT0gbV9waHlz
aWNhbFBhZ2VNYXAuZm9vdHByaW50KCkpOwpAQCAtMjA4LDggKzIxOSw3IEBAIHNpemVfdCBJc29I
ZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQoKQogICAgIHJldHVybiBtX2Zvb3RwcmludDsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpk
aWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFwSW1w
bEJhc2U6OmRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKIHsKICAgICBCVU5VU0VE
X1BBUkFNKHB0cik7CiAgICAgbV9mb290cHJpbnQgKz0gYnl0ZXM7CkBAIC0yMTgsOCArMjI4LDcg
QEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3Qg
Ynl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29I
ZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lu
bGluZSB2b2lkIElzb0hlYXBJbXBsQmFzZTo6ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3Qg
Ynl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZm9vdHByaW50IC09IGJ5
dGVzOwpAQCAtMjI4LDE1ICsyMzcsMTMgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRE
ZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKICNlbmRpZgogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmlzTm93RnJlZWFibGUo
dm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6Omlz
Tm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJB
TShwdHIpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gYnl0ZXM7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6aXNOb0xvbmdlckZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNl
Ojppc05vTG9uZ2VyRnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVO
VVNFRF9QQVJBTShwdHIpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gYnl0ZXM7CkBAIC0zMDEs
NyArMzA4LDcgQEAgdm9pZCogSXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVGcm9tU2hhcmVk
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib28KICAgICB1bnNpZ25lZCBpbmRleFBs
dXNPbmUgPSBfX2J1aWx0aW5fZmZzKG1fYXZhaWxhYmxlU2hhcmVkKTsKICAgICBCQVNTRVJUKGlu
ZGV4UGx1c09uZSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleFBsdXNPbmUgLSAxOwotICAg
IHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdOworICAgIHZvaWQqIHJlc3VsdCA9
IG1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQg
JXAgZnJvbSBzaGFyZWQgYWdhaW4gb2Ygc2l6ZSAldVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6
Om9iamVjdFNpemUpOwpAQCAtMzE0LDcgKzMyMSw3IEBAIHZvaWQqIElzb0hlYXBJbXBsPENvbmZp
Zz46OmFsbG9jYXRlRnJvbVNoYXJlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9v
CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFy
ZWQgb2Ygc2l6ZSAldVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAg
ICAgICBCQVNTRVJUKGluZGV4IDwgSXNvSGVhcEltcGxCYXNlOjptYXhBbGxvY2F0aW9uRnJvbVNo
YXJlZCk7CiAgICAgICAgICppbmRleFNsb3RGb3I8Q29uZmlnPihyZXN1bHQpID0gaW5kZXg7Ci0g
ICAgICAgIG1fc2hhcmVkQ2VsbHNbaW5kZXhdID0gcmVzdWx0OworICAgICAgICBtX3NoYXJlZENl
bGxzW2luZGV4XSA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4ocmVzdWx0KTsKICAgICB9CiAgICAg
QkFTU0VSVChyZXN1bHQpOwogICAgIG1fYXZhaWxhYmxlU2hhcmVkICY9IH4oMVUgPDwgaW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaAppbmRleCA1NDI1Yjg4YTY3ODkyMmQ4OGMyYzU4ZDc1
MGNhMjkyNmFhZjM0MDA4Li5mM2VmMDc2MWNhYzBmYWQwZTEzNTY3YjNmYzM1NDcwMmE3NDg2NDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUg
IkJpdHMuaCIKICNpbmNsdWRlICJEZWZlcnJlZFRyaWdnZXIuaCIKICNpbmNsdWRlICJGcmVlTGlz
dC5oIgorI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxt
dXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03MSwxOSArNzMsMTkgQEAgY2xhc3Mg
SXNvUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAKICAgICB1bnNpZ25lZCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICAKLSAgICB2b2lkIGZyZWUodm9pZCopOworICAg
IHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgdm9pZCopOwogCiAgICAg
Ly8gQ2FsbGVkIGFmdGVyIHRoaXMgcGFnZSBpcyBhbHJlYWR5IHNlbGVjdGVkIGZvciBhbGxvY2F0
aW9uLgogICAgIEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZygpOwogICAgIAogICAgIC8vIENhbGxl
ZCBhZnRlciB0aGUgYWxsb2NhdG9yIHBpY2tzIGFub3RoZXIgcGFnZSB0byByZXBsYWNlIHRoaXMg
b25lLgotICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpOworICAgIHZv
aWQgc3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEZyZWVMaXN0
IGZyZWVMaXN0KTsKIAogICAgIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgZGlyZWN0b3J5KCkg
eyByZXR1cm4gbV9kaXJlY3Rvcnk7IH0KICAgICBib29sIGlzSW5Vc2VGb3JBbGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luVXNlRm9yQWxsb2NhdGlvbjsgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBGdW5j
Jik7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAo
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGlu
ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAppbmRleCBmMzdi
MzQ5MzI3NzkwNmMxODJkOTkxZmFmZmNlYTlkZmQ2NzgyZjQzLi5hNWI3NzEyYWNiMDNhMWNlNjkx
MzdhYzA1MDY5YjZkMGZlMmVmYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1BhZ2VJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5s
aW5lcy5oCkBAIC02NSwxNCArNjUsMTQgQEAgSXNvUGFnZTxDb25maWc+KiBJc29QYWdlPENvbmZp
Zz46OnBhZ2VGb3Iodm9pZCogcHRyKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12
b2lkIElzb1BhZ2U8Q29uZmlnPjo6ZnJlZSh2b2lkKiBwYXNzZWRQdHIpCit2b2lkIElzb1BhZ2U8
Q29uZmlnPjo6ZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIHZvaWQq
IHBhc3NlZFB0cikKIHsKICAgICBCQVNTRVJUKCFtX2lzU2hhcmVkKTsKICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocGFzc2VkUHRyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHRoaXMpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gb2Zmc2V0IC8gQ29uZmlnOjpvYmpl
Y3RTaXplOwogICAgIAogICAgIGlmICghbV9lbGlnaWJpbGl0eUhhc0JlZW5Ob3RlZCkgewotICAg
ICAgICBtX2VsaWdpYmlsaXR5VHJpZ2dlci5kaWRCZWNvbWUoKnRoaXMpOworICAgICAgICBtX2Vs
aWdpYmlsaXR5VHJpZ2dlci5kaWRCZWNvbWUobG9ja2VyLCAqdGhpcyk7CiAgICAgICAgIG1fZWxp
Z2liaWxpdHlIYXNCZWVuTm90ZWQgPSB0cnVlOwogICAgIH0KICAgICAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQogICAgIHVuc2ln
bmVkIG5ld1dvcmQgPSBtX2FsbG9jQml0c1t3b3JkSW5kZXhdICY9IH4oMSA8PCBiaXRJbmRleCk7
CiAgICAgaWYgKCFuZXdXb3JkKSB7CiAgICAgICAgIGlmICghLS1tX251bU5vbkVtcHR5V29yZHMp
Ci0gICAgICAgICAgICBtX2VtcHR5VHJpZ2dlci5kaWRCZWNvbWUoKnRoaXMpOworICAgICAgICAg
ICAgbV9lbXB0eVRyaWdnZXIuZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgIH0KIH0KIApA
QCAtMjA4LDcgKzIwOCw3IEBAIEZyZWVMaXN0IElzb1BhZ2U8Q29uZmlnPjo6c3RhcnRBbGxvY2F0
aW5nKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZp
Zz46OnN0b3BBbGxvY2F0aW5nKEZyZWVMaXN0IGZyZWVMaXN0KQordm9pZCBJc29QYWdlPENvbmZp
Zz46OnN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwg
RnJlZUxpc3QgZnJlZUxpc3QpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKICAgICAKQEAgLTIxNywxOSArMjE3LDE5IEBAIHZvaWQgSXNvUGFnZTxDb25maWc+
OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCkKICAgICAKICAgICBmcmVlTGlzdC5m
b3JFYWNoPENvbmZpZz4oCiAgICAgICAgIFsmXSAodm9pZCogcHRyKSB7Ci0gICAgICAgICAgICBm
cmVlKHB0cik7CisgICAgICAgICAgICBmcmVlKGxvY2tlciwgcHRyKTsKICAgICAgICAgfSk7CiAK
ICAgICBSRUxFQVNFX0JBU1NFUlQobV9pc0luVXNlRm9yQWxsb2NhdGlvbik7CiAgICAgbV9pc0lu
VXNlRm9yQWxsb2NhdGlvbiA9IGZhbHNlOwogCi0gICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuaGFu
ZGxlRGVmZXJyYWwoKnRoaXMpOwotICAgIG1fZW1wdHlUcmlnZ2VyLmhhbmRsZURlZmVycmFsKCp0
aGlzKTsKKyAgICBtX2VsaWdpYmlsaXR5VHJpZ2dlci5oYW5kbGVEZWZlcnJhbChsb2NrZXIsICp0
aGlzKTsKKyAgICBtX2VtcHR5VHJpZ2dlci5oYW5kbGVEZWZlcnJhbChsb2NrZXIsICp0aGlzKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LXZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBGdW5jJiBmdW5j
KQordm9pZCBJc29QYWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZvciAodW5zaWduZWQg
d29yZEluZGV4ID0gMDsgd29yZEluZGV4IDwgYml0c0FycmF5TGVuZ3RoKG51bU9iamVjdHMpOyAr
K3dvcmRJbmRleCkgewogICAgICAgICB1bnNpZ25lZCB3b3JkID0gbV9hbGxvY0JpdHNbd29yZElu
ZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmgKaW5kZXggYzlkMDRlZTkz
MTM2OTU5ZDMyM2RiNTgwZDIwMzZiOWFlYmMyMjFhMy4uNWVhNTFlNWQxZmRkZWVmZjZmOGQ1NmZk
N2M5MDdmZTQyYmRkMTQzNSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29T
aGFyZWRIZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmgK
QEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIHsKIAogY2xhc3Mg
SXNvU2hhcmVkSGVhcCA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+IHsK
IHB1YmxpYzoKLSAgICBJc29TaGFyZWRIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorICAg
IElzb1NoYXJlZEhlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgewogICAg
IH0KIApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBJc29TaGFyZWRIZWFwIDogcHVibGljIFN0YXRp
Y1BlclByb2Nlc3M8SXNvU2hhcmVkSGVhcD4gewogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHVu
c2lnbmVkPgotICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKTsKKyAg
ICB2b2lkKiBhbGxvY2F0ZVNsb3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wg
YWJvcnRPbkZhaWx1cmUpOwogCiAgICAgSXNvU2hhcmVkUGFnZSogbV9jdXJyZW50UGFnZSB7IG51
bGxwdHIgfTsKICAgICBWYXJpYWRpY0J1bXBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKaW5kZXggZDlmN2YxMTY2
YzVhZDA2ZjA0ZDgxMjFjNDk4ODIyN2JkZmQwMWQwNC4uZmM3OTU4ZWM0ZDg4NDQxYWI1NjUyOGIy
OWYyYTk2Yjc3Njk2MmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29T
aGFyZWRIZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVk
SGVhcElubGluZXMuaApAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFs
bG9jYXRlTmV3KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG9i
amVjdFNpemUgPSBjb21wdXRlT2JqZWN0U2l6ZUZvclNoYXJlZENlbGwocGFzc2VkT2JqZWN0U2l6
ZSk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdG9yLnRlbXBsYXRlIGFsbG9jYXRlPG9iamVjdFNpemU+
KAogICAgICAgICBbJl0gKCkgLT4gdm9pZCogewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
U2xvdzxwYXNzZWRPYmplY3RTaXplPihhYm9ydE9uRmFpbHVyZSk7CisgICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGVTbG93PHBhc3NlZE9iamVjdFNpemU+KGxvY2tlciwgYWJvcnRPbkZhaWx1cmUp
OwogICAgICAgICB9KTsKIH0KIAogdGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkT2JqZWN0U2l6ZT4K
LUJOT19JTkxJTkUgdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGJvb2wgYWJvcnRP
bkZhaWx1cmUpCitCTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyhj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGJvb2wgYWJvcnRPbkZhaWx1cmUp
CiB7CiAgICAgU2NhdmVuZ2VyJiBzY2F2ZW5nZXIgPSAqU2NhdmVuZ2VyOjpnZXQoKTsKICAgICBz
Y2F2ZW5nZXIuZGlkU3RhcnRHcm93aW5nKCk7CkBAIC03Myw3ICs3Myw3IEBAIEJOT19JTkxJTkUg
dm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAg
ICAgfQogCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0
b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKGxv
Y2tlcik7CiAKICAgICBtX2N1cnJlbnRQYWdlID0gcGFnZTsKICAgICBtX2FsbG9jYXRvciA9IG1f
Y3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1No
YXJlZFBhZ2UuaAppbmRleCBhOWUxMzdlNDE0MTg4NTY0ZDA1ODA0NDkwYjU0MzdhNTAwZTU3MGJi
Li4yM2QxYzc3ODljNTU3NzRiZjIwY2FmMTRmMzJkMjQ3ODI5MDU2YTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJc29TaGFy
ZWRQYWdlIDogcHVibGljIElzb1BhZ2VCYXNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWcsIHR5cGVuYW1lIFR5cGU+CiAgICAgdm9pZCBmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBhcGk6Oklzb0hlYXA8VHlwZT4mLCB2b2lkKik7CiAgICAgVmFyaWFkaWNCdW1wQWxs
b2NhdG9yIHN0YXJ0QWxsb2NhdGluZygpOwotICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKKyAg
ICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKIAog
cHJpdmF0ZToKICAgICBJc29TaGFyZWRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkUGFnZUlubGluZXMuaAppbmRleCBjNDIxNmI1MWRhYzlkMWU5NWMzMDM1ZDY2MTZm
YTNlN2NlNTkwN2E5Li45ODQyMWFjN2IyY2M2ZTYyODUwZTcwNjU3M2M0MzA4NjI3MGVhNTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCkBAIC00
Miw3ICs0Miw3IEBAIHZvaWQgSXNvU2hhcmVkUGFnZTo6ZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kCiAgICAgLy8gSXNvRGVhbGxvY2F0
b3I6OmRlYWxsb2NhdGUgaXMgY2FsbGVkIGZyb20gZGVsZXRlIG9wZXJhdG9yLiBUaGlzIGlzIGRp
c3BhdGNoZWQgYnkgdnRhYmxlIGlmIHZpcnR1YWwgZGVzdHJ1Y3RvciBleGlzdHMuCiAgICAgLy8g
SWYgdnB0ciBpcyByZXBsYWNlZCB0byB0aGUgb3RoZXIgdnB0ciwgd2UgbWF5IGFjY2lkZW50YWxs
eSBjaGFpbiB0aGlzIHBvaW50ZXIgdG8gdGhlIGluY29ycmVjdCBIZWFwSW1wbEJhc2UsIHdoaWNo
IHRvdGFsbHkgYnJlYWtzIHRoZSBJc29IZWFwJ3MgZ29hbC4KICAgICAvLyBUbyBoYXJkZW4gdGhh
dCwgd2UgdmFsaWRhdGUgdGhhdCB0aGlzIHBvaW50ZXIgaXMgYWN0dWFsbHkgYWxsb2NhdGVkIGZv
ciBhIHNwZWNpZmljIEhlYXBJbXBsQmFzZSBoZXJlIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhpcyBw
b2ludGVyIGlzIGxpc3RlZCBpbiBIZWFwSW1wbEJhc2UncyBzaGFyZWQgY2VsbHMuCi0gICAgUkVM
RUFTRV9CQVNTRVJUKGhlYXBJbXBsLm1fc2hhcmVkQ2VsbHNbaW5kZXhdID09IHB0cik7CisgICAg
UkVMRUFTRV9CQVNTRVJUKGhlYXBJbXBsLm1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpID09IHB0
cik7CiAgICAgaGVhcEltcGwubV9hdmFpbGFibGVTaGFyZWQgfD0gKDFVIDw8IGluZGV4KTsKIH0K
IApAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIElzb1NoYXJl
ZFBhZ2U6OnN0YXJ0QWxsb2NhdGluZygpCiAgICAgcmV0dXJuIFZhcmlhZGljQnVtcEFsbG9jYXRv
cihwYXlsb2FkRW5kLCByZW1haW5pbmcpOwogfQogCi1pbmxpbmUgdm9pZCBJc29TaGFyZWRQYWdl
OjpzdG9wQWxsb2NhdGluZygpCitpbmxpbmUgdm9pZCBJc29TaGFyZWRQYWdlOjpzdG9wQWxsb2Nh
dGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMUy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaAppbmRleCBk
ZTI4NjdlNzhkZTFjYTI1NjMwYzM2ZDE4MjI4MzNmMTdmYTA3ZWYzLi5iYWJiYjMwNDViOGE1MDZl
ODI4MzEwMmViNmMzYzRjZWI5ZWQyOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMUy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKQEAgLTYw
LDggKzYwLDggQEAgY2xhc3MgSXNvVExTIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcs
IHR5cGVuYW1lIFR5cGU+CiAgICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlSW1wbChhcGk6Oklzb0hl
YXA8VHlwZT4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+Ci0gICAgdm9pZCogYWxsb2NhdGVGYXN0KHVuc2lnbmVkIG9mZnNldCwgYm9v
bCBhYm9ydE9uRmFpbHVyZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFt
ZSBUeXBlPgorICAgIHZvaWQqIGFsbG9jYXRlRmFzdChhcGk6Oklzb0hlYXA8VHlwZT4mLCB1bnNp
Z25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGVT
bG93KGFwaTo6SXNvSGVhcDxUeXBlPiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCmluZGV4IDM1ZGI4NzE0N2I0
OTIwNjZhMjhlZmZkNTczZGY3MzZmNzA4MTEzOWYuLmUxZDhhYWNhZmUyZmZhYmRhNzQ4MDNlOWI3
MDZiMGJmNTZkZTlkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
QWxsb2NhdG9yRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9j
YXRvckVudHJ5LmgKQEAgLTQyLDYgKzQyLDggQEAgY2xhc3MgSXNvVExTQWxsb2NhdG9yRW50cnkg
ZmluYWwgOiBwdWJsaWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0FsbG9jYXRvcjxDb25maWcKICAg
ICBJc29UTFNBbGxvY2F0b3JFbnRyeShJc29IZWFwSW1wbDxDb25maWc+Jik7CiAKICAgICB2b2lk
IGNvbnN0cnVjdCh2b2lkKiBkc3QpIG92ZXJyaWRlOworCisgICAgdm9pZCBzY2F2ZW5nZSh2b2lk
KiBlbnRyeSkgb3ZlcnJpZGU7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgbV9oZWFw
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9y
RW50cnlJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVu
dHJ5SW5saW5lcy5oCmluZGV4IDFhZTFlNmE1YWNhNDkwZTA1MjI3MTE0ZjVlNGUyMDVmZDQ5NGZm
NDMuLjNlNTU3YWQxNzdiODZkZDhiZTZjMDdmNzQzYzlhMThlZDZlM2UwMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaApA
QCAtNDYsNSArNDYsMTEgQEAgdm9pZCBJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+Ojpjb25z
dHJ1Y3Qodm9pZCogZHN0KQogICAgIG5ldyAoZHN0KSBJc29BbGxvY2F0b3I8Q29uZmlnPihtX2hl
YXApOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Cit2b2lkIElzb1RMU0FsbG9jYXRv
ckVudHJ5PENvbmZpZz46OnNjYXZlbmdlKHZvaWQqIGVudHJ5KQoreworICAgIHN0YXRpY19jYXN0
PElzb0FsbG9jYXRvcjxDb25maWc+Kj4oZW50cnkpLT5zY2F2ZW5nZShtX2hlYXApOworfQorCiB9
IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFNEZWFsbG9jYXRvckVudHJ5LmgKaW5kZXggNzM4NGNlMGQyYWJiNDNmZmI1NmE2Nzg4ZjQ3NTEw
YjY0ZjI2NGY0ZC4uYTBkYmMzMDM3NDQyODcwZWQwODlhYTkyMGJkNGJmYWFkOTdlZGI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5LmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5LmgKQEAg
LTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSXNvVExTRGVhbGxvY2F0b3JFbnRyeSBmaW5hbCA6IHB1Ymxp
YyBEZWZhdWx0SXNvVExTRW50cnk8SXNvRGVhbGxvY2F0b3I8Q28KICAgICBJc29UTFNEZWFsbG9j
YXRvckVudHJ5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKIAogICAgIHZvaWQgY29u
c3RydWN0KHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjYXZlbmdlKHZvaWQqIGVu
dHJ5KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaApp
bmRleCBjYmQ1ZjlkZjdlZmI3NGMzMTIyMzk3ODE1Y2EzOTEyMDYyOWNkNDNmLi5jOTUzNDI4MGNl
OGQ1YTE4YjAyNjhiZDA3ODA3ZDdlYmI3YzIyZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oCkBAIC00Myw1ICs0
MywxMSBAQCB2b2lkIElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6Y29uc3RydWN0KHZv
aWQqIGVudHJ5KQogICAgIG5ldyAoZW50cnkpIElzb0RlYWxsb2NhdG9yPENvbmZpZz4obG9jayk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KK3ZvaWQgSXNvVExTRGVhbGxvY2F0b3JF
bnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2b2lkKiBlbnRyeSkKK3sKKyAgICBzdGF0aWNfY2FzdDxJ
c29EZWFsbG9jYXRvcjxDb25maWc+Kj4oZW50cnkpLT5zY2F2ZW5nZSgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBibWFsbG9jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnkuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5jcHAKaW5k
ZXggY2IwM2JkZTI4OTU3ZTJjYmZhMTBhZmFkODk0MjhiYjNlYTZmYWY3My4uODMwYTUxMWJmOTlk
ZWNkOGJmNjQ0YTNmZGUzOGIzMGNhYzY3MDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNFbnRyeS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFNFbnRyeS5jcHAKQEAgLTMxLDEwICszMSw4IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAot
SXNvVExTRW50cnk6Oklzb1RMU0VudHJ5KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQot
ICAgIDogbV9vZmZzZXQoVUlOVF9NQVgpCi0gICAgLCBtX2FsaWdubWVudChhbGlnbm1lbnQpCi0g
ICAgLCBtX3NpemUoc2l6ZSkKK0lzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShzaXplX3Qgc2l6ZSkK
KyAgICA6IG1fc2l6ZShzaXplKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0VudHJ5LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5
LmgKaW5kZXggNzRmNDQ5YmZhMjhhNDAxZmIwNDM4OGNiY2U1MTQzNmU4NjhmZDYxNC4uYTQ3OGU2
YTMyZGUxMDZhY2M3ZTM5MGFlMmFiMmZlOTBmMTBiNzQxMCAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTRW50cnkuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBCRVhQT1JUIElzb1RMU0VudHJ5
IHsKICAgICB2aXJ0dWFsIH5Jc29UTFNFbnRyeSgpOwogICAgIAogICAgIHNpemVfdCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQotICAgIHNpemVfdCBhbGlnbm1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2FsaWdubWVudDsgfQorICAgIHNpemVfdCBhbGlnbm1lbnQoKSBjb25zdCB7
IHJldHVybiBzaXplb2Yodm9pZCopOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KICAgICBzaXplX3QgZXh0ZW50KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQg
KyBtX3NpemU7IH0KICAgICAKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQkVYUE9SVCBJc29UTFNF
bnRyeSB7CiAgICAgdm9pZCB3YWxrVXBUb0luY2x1c2l2ZShJc29UTFNFbnRyeSosIGNvbnN0IEZ1
bmMmKTsKIAogcHJvdGVjdGVkOgotICAgIElzb1RMU0VudHJ5KHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCBzaXplKTsKKyAgICBJc29UTFNFbnRyeShzaXplX3Qgc2l6ZSk7CiAgICAgCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBJc29UTFM7CkBAIC04NiwxNSArODYsMTQgQEAgY2xhc3MgQkVY
UE9SVCBJc29UTFNFbnRyeSB7CiAKICAgICBJc29UTFNFbnRyeSogbV9uZXh0IHsgbnVsbHB0ciB9
OwogICAgIAotICAgIHNpemVfdCBtX29mZnNldDsgLy8gQ29tcHV0ZWQgaW4gY29uc3RydWN0b3Iu
Ci0gICAgc2l6ZV90IG1fYWxpZ25tZW50OwotICAgIHNpemVfdCBtX3NpemU7CisgICAgdW5zaWdu
ZWQgbV9vZmZzZXQgeyBVSU5UX01BWCB9OyAvLyBDb21wdXRlZCBpbiBjb25zdHJ1Y3Rvci4KKyAg
ICB1bnNpZ25lZCBtX3NpemU7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5cGU+CiBj
bGFzcyBEZWZhdWx0SXNvVExTRW50cnkgOiBwdWJsaWMgSXNvVExTRW50cnkgewogcHVibGljOgot
ICAgIH5EZWZhdWx0SXNvVExTRW50cnkoKTsKKyAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCkgPSBk
ZWZhdWx0OwogICAgIAogcHJvdGVjdGVkOgogICAgIERlZmF1bHRJc29UTFNFbnRyeSgpOwpAQCAt
MTA2LDggKzEwNSw2IEBAIGNsYXNzIERlZmF1bHRJc29UTFNFbnRyeSA6IHB1YmxpYyBJc29UTFNF
bnRyeSB7CiAgICAgLy8gTGlrZXdpc2UsIHRoaXMgaXMgc2VwYXJhdGUgZnJvbSBzY2F2ZW5naW5n
LiBXaGVuIHRoZSBUTFMgaXMgc2h1dHRpbmcgZG93biwgd2Ugd2lsbCBiZSBhc2tlZCB0bwogICAg
IC8vIHNjYXZlbmdlIGFuZCB0aGVuIHdlIHdpbGwgYmUgYXNrZWQgdG8gZGVzdHJ1Y3QuCiAgICAg
dm9pZCBkZXN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNjYXZlbmdl
KHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnlJbmxpbmVzLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oCmluZGV4IDZmNjE1Zjk1
MGNkYmYwYWEwNjMxMzU5MWQzODNjOGMyNGMyOGYzYjMuLmMyYTcyN2UwZjM1ZjZhYzQzMDFjYjNh
YTQ5ZWRiYTk1Y2YxMGE3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRy
eUlubGluZXMuaApAQCAtNDMsMTMgKzQzLDEwIEBAIHZvaWQgSXNvVExTRW50cnk6OndhbGtVcFRv
SW5jbHVzaXZlKElzb1RMU0VudHJ5KiBsYXN0LCBjb25zdCBGdW5jJiBmdW5jKQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbnRyeVR5cGU+CiBEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6RGVm
YXVsdElzb1RMU0VudHJ5KCkKLSAgICA6IElzb1RMU0VudHJ5KGFsaWdub2YoRW50cnlUeXBlKSwg
c2l6ZW9mKEVudHJ5VHlwZSkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4K
LURlZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5cGU+Ojp+RGVmYXVsdElzb1RMU0VudHJ5KCkKKyAg
ICA6IElzb1RMU0VudHJ5KHNpemVvZihFbnRyeVR5cGUpKQogeworICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEVudHJ5VHlwZSkgPD0gVUlOVDMyX01BWCk7CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2Yodm9pZCopID09IGFsaWdub2YoRW50cnlUeXBlKSwgIkJlY2F1c2UgSXNvVExTRW50cnkgaW5j
bHVkZXMgdnRhYmxlLCBpdCBzaG91bGQgYmUgdGhlIHNhbWUgdG8gdGhlIHBvaW50ZXIiKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgpAQCAtNjcsMTIgKzY0LDUgQEAgdm9pZCBE
ZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6ZGVzdHJ1Y3Qodm9pZCogcGFzc2VkRW50cnkp
CiAgICAgZW50cnktPn5FbnRyeVR5cGUoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlU
eXBlPgotdm9pZCBEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6c2NhdmVuZ2Uodm9pZCog
cGFzc2VkRW50cnkpCi17Ci0gICAgRW50cnlUeXBlKiBlbnRyeSA9IHN0YXRpY19jYXN0PEVudHJ5
VHlwZSo+KHBhc3NlZEVudHJ5KTsKLSAgICBlbnRyeS0+c2NhdmVuZ2UoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0lubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTSW5saW5lcy5oCmlu
ZGV4IDFlYWIyNzFjNDBjYTc5YTNkZGVmZmJmZDI1ZTBlNzQ4NjhhNGQzMTkuLjBkNGIyMDE5NGUw
Y2RlZDIwODhjOWU3NGM3Mjg3NDg2NDVhMzQxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvVExTSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTSW5saW5lcy5oCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSXNvVExTOjpzY2F2ZW5nZShhcGk6
Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IGhhbmRsZS5hbGxvY2F0b3JPZmZzZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxzLT5t
X2V4dGVudCkKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29BbGxvY2F0b3I8dHlwZW5hbWUg
YXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQpLT5zY2F2
ZW5nZSgpOworICAgICAgICByZWludGVycHJldF9jYXN0PElzb0FsbG9jYXRvcjx0eXBlbmFtZSBh
cGk6Oklzb0hlYXA8VHlwZT46OkNvbmZpZz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZl
bmdlKGhhbmRsZS5pbXBsKCkpOwogICAgIG9mZnNldCA9IGhhbmRsZS5kZWFsbG9jYXRvck9mZnNl
dCgpOwogICAgIGlmIChvZmZzZXQgPCB0bHMtPm1fZXh0ZW50KQogICAgICAgICByZWludGVycHJl
dF9jYXN0PElzb0RlYWxsb2NhdG9yPHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmln
Pio+KHRscy0+bV9kYXRhICsgb2Zmc2V0KS0+c2NhdmVuZ2UoKTsKQEAgLTc0LDEzICs3NCwxMyBA
QCB2b2lkKiBJc29UTFM6OmFsbG9jYXRlSW1wbChhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwg
Ym9vbCBhYm9ydE9uRmFpbHVyZSkKICAgICBJc29UTFMqIHRscyA9IGdldCgpOwogICAgIGlmICgh
dGxzIHx8IG9mZnNldCA+PSB0bHMtPm1fZXh0ZW50KQogICAgICAgICByZXR1cm4gYWxsb2NhdGVT
bG93PENvbmZpZz4oaGFuZGxlLCBhYm9ydE9uRmFpbHVyZSk7Ci0gICAgcmV0dXJuIHRscy0+YWxs
b2NhdGVGYXN0PENvbmZpZz4ob2Zmc2V0LCBhYm9ydE9uRmFpbHVyZSk7CisgICAgcmV0dXJuIHRs
cy0+YWxsb2NhdGVGYXN0PENvbmZpZz4oaGFuZGxlLCBvZmZzZXQsIGFib3J0T25GYWlsdXJlKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCogSXNvVExTOjphbGxvY2F0ZUZh
c3QodW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKQordGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgordm9pZCogSXNvVExTOjphbGxvY2F0ZUZhc3QoYXBp
OjpJc29IZWFwPFR5cGU+JiBoYW5kbGUsIHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFp
bHVyZSkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJc29BbGxvY2F0b3I8Q29uZmln
Pio+KG1fZGF0YSArIG9mZnNldCktPmFsbG9jYXRlKGFib3J0T25GYWlsdXJlKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KG1fZGF0YSArIG9mZnNl
dCktPmFsbG9jYXRlKGhhbmRsZS5pbXBsKCksIGFib3J0T25GYWlsdXJlKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgpAQCAtMTA4LDcgKzEwOCw3IEBAIEJO
T19JTkxJTkUgdm9pZCogSXNvVExTOjphbGxvY2F0ZVNsb3coYXBpOjpJc29IZWFwPFR5cGU+JiBo
YW5kbGUsIGJvb2wgYWJvcnRPbkZhCiAgICAgCiAgICAgSXNvVExTKiB0bHMgPSBlbnN1cmVIZWFw
QW5kRW50cmllcyhoYW5kbGUpOwogICAgIAotICAgIHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxD
b25maWc+KGhhbmRsZS5hbGxvY2F0b3JPZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOworICAgIHJl
dHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhhbmRsZSwgaGFuZGxlLmFsbG9jYXRvck9m
ZnNldCgpLCBhYm9ydE9uRmFpbHVyZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywg
dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
TGF5b3V0LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcAppbmRl
eCA0YjMzNWVhNTE5ZDQ1ZThmMTZiMmE4ZDkwOWUxMzA0NjE5ZDU3NDg0Li4wYmFlNjA3NzAxZTQ5
MGM3YWUyYTlmNDBlN2U5MTdjZWNmYjE3MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0xheW91dC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFNMYXlvdXQuY3BwCkBAIC00NCw3ICs0NCw5IEBAIHZvaWQgSXNvVExTTGF5b3V0OjphZGQoSXNv
VExTRW50cnkqIGVudHJ5KQogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2luZyhhZGRp
bmdNdXRleCk7CiAgICAgaWYgKG1faGVhZCkgewogICAgICAgICBSRUxFQVNFX0JBU1NFUlQobV90
YWlsKTsKLSAgICAgICAgZW50cnktPm1fb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZihlbnRy
eS0+YWxpZ25tZW50KCksIG1fdGFpbC0+ZXh0ZW50KCkpOworICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gcm91bmRVcFRvTXVsdGlwbGVPZihlbnRyeS0+YWxpZ25tZW50KCksIG1fdGFpbC0+ZXh0ZW50
KCkpOworICAgICAgICBSRUxFQVNFX0JBU1NFUlQob2Zmc2V0IDwgVUlOVF9NQVgpOworICAgICAg
ICBlbnRyeS0+bV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHN0ZDo6YXRvbWljX3RocmVhZF9m
ZW5jZShzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KTsKICAgICAgICAgbV90YWlsLT5tX25leHQg
PSBlbnRyeTsKICAgICAgICAgbV90YWlsID0gZW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1BhY2tlZC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYjRjNGVkN2JlYmRjYTg2ZTcxZDgzYzIyMmU2ZGMxY2FhMDRkMDI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaApAQCAtMCwwICsx
LDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBbGdvcml0aG0uaCIKKyNpbmNsdWRlICJTdGRM
aWJFeHRyYXMuaCIKKyNpbmNsdWRlIDxhcnJheT4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgUGFja2VkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNQYWNrZWRUeXBlID0gdHJ1ZTsKKworICAgIFBhY2tlZCgpCisgICAg
ICAgIDogUGFja2VkKFQgeyB9KQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWQoY29uc3QgVCYg
dmFsdWUpCisgICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgJnZhbHVlLCBz
aXplb2YoVCkpOworICAgIH0KKworICAgIFQgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFQg
dmFsdWU7CisgICAgICAgIG1lbWNweSgmdmFsdWUsIG1fc3RvcmFnZS5kYXRhKCksIHNpemVvZihU
KSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIHNldChjb25zdCBU
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgpLCAmdmFsdWUs
IHNpemVvZihUKSk7CisgICAgfQorCisgICAgUGFja2VkPFQ+JiBvcGVyYXRvcj0oY29uc3QgVCYg
dmFsdWUpCisgICAgeworICAgICAgICBzZXQodmFsdWUpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgVT4KKyAgICBUIGV4Y2hhbmdlKFUmJiBuZXdW
YWx1ZSkKKyAgICB7CisgICAgICAgIFQgb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0
ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAg
fQorCisgICAgdm9pZCBzd2FwKFBhY2tlZCYgb3RoZXIpCisgICAgeworICAgICAgICBtX3N0b3Jh
Z2Uuc3dhcChvdGhlci5tX3N0b3JhZ2UpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUGFja2VkVHlwZT4+
CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKKyAgICB7CisgICAgICAgIFQgdDEgPSBnZXQo
KTsKKyAgICAgICAgVCB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAg
ICBvdGhlci5zZXQodDEpOworICAgIH0KKworICAgIHZvaWQgc3dhcChUJiB0MikKKyAgICB7Cisg
ICAgICAgIFQgdDEgPSBnZXQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAg
IHNldCh0MSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgc2l6
ZW9mKFQpPiBtX3N0b3JhZ2U7Cit9OworCisvLyBQYWNrZWRBbGlnbmVkUHRyIGNhbiB0YWtlIGFs
aWdubWVudCBwYXJhbWV0ZXIgdG9vLiBQYWNrZWRBbGlnbmVkUHRyIG9ubHkgdXNlcyB0aGlzIGFs
aWdubWVudCBpbmZvcm1hdGlvbiBpZiBpdCBpcyBwcm9maXRhYmxlOiB3ZSB1c2UKKy8vIGFsaWdu
bWVudCBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gd2UgY2FuIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUg
c3RvcmFnZS4gU2luY2UgdGhlIHBvaW50ZXIgd2lkdGggaXMgMzYgYml0cyBhbmQgSlNDZWxscyBh
cmUgYWxpZ25lZCB0byAxNiBieXRlcywKKy8vIHdlIGNhbiB1c2UgNCBiaXRzIGluIERhcndpbiBB
Uk02NCwgd2UgY2FuIGNvbXBhY3QgY2VsbCBwb2ludGVyIGludG8gNCBieXRlcyAoMzIgYml0cyku
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgYWxpZ25tZW50ID0gYWxpZ25vZihUKT4KK2Ns
YXNzIFBhY2tlZEFsaWduZWRQdHIgeworcHVibGljOgorICAgIHN0YXRpY19hc3NlcnQoaXNQb3dl
ck9mVHdvKGFsaWdubWVudCksICJBbGlnbm1lbnQgbmVlZHMgdG8gYmUgcG93ZXItb2YtdHdvIik7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlwZSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUgPSBn
ZXRMU0JTZXROb25aZXJvQ29uc3RleHByKGFsaWdubWVudCk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA9IHJvdW5kVXBUb011
bHRpcGxlT2Y8OCwgdWludHB0cl90PihCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC8gODsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXplV2l0aEFsaWdubWVudFNo
aWZ0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjw4LCB1aW50cHRyX3Q+KEJPU19FRkZFQ1RJVkVfQURE
UkVTU19XSURUSCAtIGFsaWdubWVudFNoaWZ0U2l6ZUlmUHJvZml0YWJsZSkgLyA4OworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSA9IHN0b3JhZ2VT
aXplV2l0aG91dEFsaWdubWVudFNoaWZ0ID4gc3RvcmFnZVNpemVXaXRoQWxpZ25tZW50U2hpZnQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhbGlnbm1lbnRTaGlmdFNpemUgPSBpc0Fs
aWdubWVudFNoaWZ0UHJvZml0YWJsZSA/IGFsaWdubWVudFNoaWZ0U2l6ZUlmUHJvZml0YWJsZSA6
IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzdG9yYWdlU2l6ZSA9IHN0b3JhZ2VT
aXplV2l0aEFsaWdubWVudFNoaWZ0OworCisgICAgY29uc3RleHByIFBhY2tlZEFsaWduZWRQdHIo
KQorICAgICAgICA6IG1fc3RvcmFnZSgpCisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBQ
YWNrZWRBbGlnbmVkUHRyKHN0ZDo6bnVsbHB0cl90KQorICAgICAgICA6IG1fc3RvcmFnZSgpCisg
ICAgeworICAgIH0KKworICAgIFBhY2tlZEFsaWduZWRQdHIoVCogdmFsdWUpCisgICAgeworICAg
ICAgICBzZXQodmFsdWUpOworICAgIH0KKworICAgIFQqIGdldCgpIGNvbnN0CisgICAgeworICAg
ICAgICAvLyBGSVhNRTogUGFja2VkUHRyPD4gY2FuIGxvYWQgbWVtb3J5IHdpdGggb25lIG1vdiBi
eSBjaGVja2luZyBwYWdlIGJvdW5kYXJ5LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3NzU0CisgICAgICAgIHVpbnRwdHJfdCB2YWx1ZSA9IDA7
CisjaWYgQkNQVShMSVRUTEVfRU5ESUFOKQorICAgICAgICBtZW1jcHkoJnZhbHVlLCBtX3N0b3Jh
Z2UuZGF0YSgpLCBzdG9yYWdlU2l6ZSk7CisjZWxzZQorICAgICAgICBtZW1jcHkoYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPigmdmFsdWUpICsgKHNpemVvZih2b2lkKikgLSBzdG9yYWdlU2l6ZSksIG1f
c3RvcmFnZS5kYXRhKCksIHN0b3JhZ2VTaXplKTsKKyNlbmRpZgorICAgICAgICBpZiAoaXNBbGln
bm1lbnRTaGlmdFByb2ZpdGFibGUpCisgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50U2hp
ZnRTaXplOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBzZXQoVCogcGFzc2VkVmFsdWUpCisgICAgeworICAgICAgICB1aW50cHRyX3Qg
dmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYXNzZWRWYWx1ZSk7CisgICAgICAgIGlm
IChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkKKyAgICAgICAgICAgIHZhbHVlID4+PSBhbGln
bm1lbnRTaGlmdFNpemU7CisjaWYgQkNQVShMSVRUTEVfRU5ESUFOKQorICAgICAgICBtZW1jcHko
bV9zdG9yYWdlLmRhdGEoKSwgJnZhbHVlLCBzdG9yYWdlU2l6ZSk7CisjZWxzZQorICAgICAgICBt
ZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpICsg
KHNpemVvZih2b2lkKikgLSBzdG9yYWdlU2l6ZSksIHN0b3JhZ2VTaXplKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgc2V0KG51bGxwdHIpOworICAg
IH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQorICAgIFQm
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3Bl
cmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVy
IGludGVnZXIgdHlwZXMuCisgICAgdHlwZWRlZiBUKiAoUGFja2VkQWxpZ25lZFB0cjo6KlVuc3Bl
Y2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25z
dCB7IHJldHVybiBnZXQoKSA/ICZQYWNrZWRBbGlnbmVkUHRyOjptX3N0b3JhZ2UgOiBudWxscHRy
OyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9
CisKKyAgICBQYWNrZWRBbGlnbmVkUHRyJiBvcGVyYXRvcj0oVCogdmFsdWUpCisgICAgeworICAg
ICAgICBzZXQodmFsdWUpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVt
cGxhdGU8Y2xhc3MgVT4KKyAgICBUKiBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAg
ICAgICBUKiBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5l
d1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN3
YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQorCisgICAgdm9pZCBzd2FwKFBhY2tlZEFs
aWduZWRQdHImIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9z
dG9yYWdlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+PgorICAgIHZvaWQgc3dhcChP
dGhlciYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBUKiB0
MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5zZXQodDEp
OworICAgIH0KKworICAgIHZvaWQgc3dhcChUKiB0MikKKyAgICB7CisgICAgICAgIFQqIHQxID0g
Z2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQodDEpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHN0b3JhZ2VTaXplPiBtX3N0
b3JhZ2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgUGFja2VkPFQqPiA6IHB1
YmxpYyBQYWNrZWRBbGlnbmVkUHRyPFQsIDE+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
UGFja2VkQWxpZ25lZFB0cjxULCAxPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFBhY2tlZFB0ciA9IFBhY2tlZDxUKj47CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUGFja2VkUHRyVHJhaXRzIHsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB1c2luZyBSZWJpbmRUcmFpdHMgPSBQYWNrZWRQdHJUcmFpdHM8VT47CisKKyAg
ICB1c2luZyBTdG9yYWdlVHlwZSA9IFBhY2tlZFB0cjxUPjsKKworICAgIHRlbXBsYXRlPGNsYXNz
IFU+IHN0YXRpYyBUKiBleGNoYW5nZShTdG9yYWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsg
cmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1ZSk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyPiBzdGF0aWMgdm9pZCBzd2FwKFBhY2tlZFB0cjxUPiYgYSwgT3RoZXImIGIpIHsgYS5z
d2FwKGIpOyB9CisKKyAgICBzdGF0aWMgVCogdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiBwdHIp
IHsgcmV0dXJuIHB0ci5nZXQoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCmluZGV4IGViMTViMzFmMTM1OGQyYWFiYzc0Mjlm
MjZkMzViM2Y3OTU5MDgyYzguLjYwZjA2NzZiZjMwNmE2MmZiYzIyMmJhNzNjMmIwMzVhOWMxZGM0
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJCdWxrRGVjb21taXQuaCIKICNpbmNsdWRlICJFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJc29IZWFwSW1wbElubGluZXMuaCIKICNpZiBCT1Mo
REFSV0lOKQogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG1hY2gvaG9z
dF9pbmZvLmg+CkBAIC02Nyw3ICs2OCw3IEBAIHN0cnVjdCBQcmludFRpbWUgewogCiBERUZJTkVf
U1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoU2NhdmVuZ2VyKTsKIAotU2NhdmVuZ2VyOjpTY2F2
ZW5nZXIoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitTY2F2ZW5nZXI6OlNjYXZlbmdlcihjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICBCQVNTRVJUKCFFbnZpcm9ubWVudDo6
Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9TY2F2ZW5nZXIuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2Vy
LmgKaW5kZXggZjQ4OTM0YjUxMWI2ZTZjMThkODk2ZDVkNTkzNDE1OWJmNTNlOTkwYy4uNzI4YTc1
ZTNiZGZkYTE5NjljYTA1ODUwZTY1MTllMjQwOTI4YjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nj
YXZlbmdlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3Mg
U2NhdmVuZ2VyIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8U2NhdmVuZ2VyPiB7CiBwdWJsaWM6
Ci0gICAgQkVYUE9SVCBTY2F2ZW5nZXIoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEJF
WFBPUlQgU2NhdmVuZ2VyKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAKICAg
ICB+U2NhdmVuZ2VyKCkgPSBkZWxldGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZNSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAK
aW5kZXggNWM4ZTI4YTA1MDkzMWExNDUzYjJlM2E5OTJjZjJmODI5NWVjOWZlZi4uYWRmMjE2NzFl
YmQ4N2E5ZmQ2NTc4YTQ1Y2E2MTYwMDJmNWM3NTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9WTUhlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFw
LmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIERFRklORV9TVEFU
SUNfUEVSX1BST0NFU1NfU1RPUkFHRShWTUhlYXApOwogCi1WTUhlYXA6OlZNSGVhcChzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JikKK1ZNSGVhcDo6Vk1IZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVh
cC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAppbmRleCA0N2ExMTNkYmYyNzM2
NDExNDEyODhhYjZjNGU1MDVlYWU1YmI1YzExLi42OGYwYWJlNmFkNTlhMGU0OThhNDA5YmMxNTA4
Y2M5MDVmMWUwNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
dHlwZWRlZiBlbnVtIHsgU3luYywgQXN5bmMgfSBTY2F2ZW5nZU1vZGU7CiAKIGNsYXNzIFZNSGVh
cCA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFZNSGVhcD4gewogcHVibGljOgotICAgIFZNSGVh
cChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgVk1IZWFwKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKICAgICAKICAgICBMYXJnZVJhbmdlIHRyeUFsbG9jYXRlTGFyZ2VDaHVu
ayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvWm9uZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCmlu
ZGV4IGYxMWI1MTdkMmY1N2I1Y2RkMTdiNGJiNWFhYzYwYWJlZjk5ZTc1NDIuLjBiYjgyOTY5MmFj
NzgyMDIyMjA1MjY1MzAwMzg5ZmNiNjk0NmM5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvWm9uZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBjb25zdCBtYWxsb2NfaW50cm9zcGVjdGlvbl90IHpv
bmVJbnRyb3NwZWN0ID0gewogICAgIC5zdGF0aXN0aWNzID0gYm1hbGxvYzo6c3RhdGlzdGljcwog
fTsKIAotWm9uZTo6Wm9uZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK1pvbmU6OlpvbmUoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgbWFsbG9jX3pvbmVfdDo6c2l6ZSA9
ICZibWFsbG9jOjp6b25lU2l6ZTsKICAgICBtYWxsb2Nfem9uZV90Ojp6b25lX25hbWUgPSAiV2Vi
S2l0IE1hbGxvYyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5oCmluZGV4IDAwOWQ3MjI3ZjIzODc3ZWYxZWE2
ODJjMDI4MmNkNmVmYWY4ZTZkNTcuLmY1ZDY0OTVhNDFlMmVjYzBjZWRlMWM1MzVlNTMyMTU0YzAw
MzVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFpvbmUg
OiBwdWJsaWMgbWFsbG9jX3pvbmVfdCB7CiAgICAgLy8gRW5vdWdoIGNhcGFjaXR5IHRvIHRyYWNr
IGEgNjRHQiBoZWFwLCBzbyBwcm9iYWJseSBlbm91Z2ggZm9yIGFueXRoaW5nLgogICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGNhcGFjaXR5ID0gMjA0ODsKIAotICAgIFpvbmUoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOworICAgIFpvbmUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
OwogICAgIFpvbmUodGFza190LCBtZW1vcnlfcmVhZGVyX3QsIHZtX2FkZHJlc3NfdCk7CiAKICAg
ICB2b2lkIGFkZFJhbmdlKFJhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387763</attachid>
            <date>2020-01-15 01:13:37 -0800</date>
            <delta_ts>2020-01-15 01:44:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115011336.patch</filename>
            <type>text/plain</type>
            <size>85963</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uN2ZmMGY0Mjk1MzdmMTVlZWRlNzNiYWI2ZTNmNDBm
NDg1YzBlMDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlu
bGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6ZnJlZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAq
IGJtYWxsb2MvSXNvU2hhcmVkSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVh
cDo6SXNvU2hhcmVkSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5l
cy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpmcmVlKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1RMUy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnku
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRW50cnkuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRW50cnk6Oklz
b1RMU0VudHJ5KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5Lmg6CisgICAgICAgICog
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlZmF1bHRJ
c29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkpOgorICAgICAgICAoYm1h
bGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkp
OiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OnNjYXZlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvVExTOjphbGxvY2F0ZUltcGwpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxv
Y2F0ZUZhc3QpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZVNsb3cpOgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RM
U0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFsbG9jL1BhY2tlZC5oOiBBZGRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6OlBhY2tlZDo6UGFja2VkKToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6c2V0KToKKyAgICAgICAgKGJt
YWxsb2M6OlBhY2tlZDo6b3BlcmF0b3I9KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6ZXhj
aGFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzd2FwKToKKyAgICAgICAgKGJtYWxs
b2M6OmFsaWdub2YpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjpleGNoYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OnN3YXApOgorICAgICAgICAo
Ym1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjp1bndyYXApOgorICAgICAgICAqIGJtYWxsb2MvU2Nh
dmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5jcHA6CisgICAgICAgIChibWFsbG9j
Ojpab25lOjpab25lKToKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuaDoKKwogMjAyMC0wMS0xNCAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxs
b2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9yIHNwZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBj
b21waWxlIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggMzBkYmMzNDViNDkyNWZlMTFmNmYz
ZDY3NzRlMmNmOTdmY2Q2ZDVlMy4uNmM2YjdhNTA1ZjlmMTBjN2VhYWI1ZTdhMzQ3OTI2NWQxMmU3
OGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTExMiw2ICsxMTIsNyBAQCBzZXQoYm1hbGxv
Y19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxsb2MvTXV0ZXguaAogICAgIGJtYWxsb2MvT2JqZWN0
LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaAorICAgIGJtYWxsb2MvUGFja2VkLmgKICAgICBi
bWFsbG9jL1BlckhlYXBLaW5kLmgKICAgICBibWFsbG9jL1BlclByb2Nlc3MuaAogICAgIGJtYWxs
b2MvUGVyVGhyZWFkLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiMTczYTk3ZGM4NTg5M2U3ZmJhOTBlNjI3YTg5NjNkYTY2MWNi
YTUxLi4zYjg1ZTc3ZmZiODNhNTQwZTY4ZjQzMzNmNjc1MmFlYjgzZWRlODIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAs
NiArMTQwLDcgQEAKIAkJQUQxNEFEMkEyMDI1MjlDNzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMTRBRDI4
MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gKi87IH07CiAJCURFOEIxM0IzMjFD
QzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMUU3NDgw
MjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyog
U3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjhEODRDMjNDRUIzODkw
MDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E0MTNDOTIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRjI0NDAyMjI1RDJD
MDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVk
UGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzRjI0NDA0MjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAzMjI1RDJDNzYwMEEw
RTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTI5NSw2ICsyOTYsNyBAQAogCQlB
RDE0QUQyODIwMjUyOUIwMDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvY2Vzc0NoZWNrLm1tOyBwYXRoID0gYm1hbGxv
Yy9Qcm9jZXNzQ2hlY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFOEIxM0Iy
MjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJWTVRhZ3MuaDsg
cGF0aCA9IGJtYWxsb2MvQlZNVGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTdGF0aWNQZXJQcm9jZXNzLmg7IHBhdGggPSBibWFsbG9j
L1N0YXRpY1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyOEQ4
NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQYWNrZWQuaDsgcGF0aCA9IGJtYWxsb2MvUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdl
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdl
SW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hh
cmVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdl
Lmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSXNvU2hhcmVkUGFnZS5jcHA7IHBh
dGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTMyLDYgKzUzNCw3IEBACiAJCQkJMTRDODk5MkExQ0M0ODVFNzAwMjdBMDU3IC8qIE1h
cC5oICovLAogCQkJCTE0M0NCODFBMTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5jcHAgKi8sCiAJ
CQkJMTQzQ0I4MUIxOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmggKi8sCisJCQkJRTMyOEQ4NEMy
M0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovLAogCQkJCTBGNUJGMTQ4MUYyMkE4RDgwMDI5
RDkxRCAvKiBQZXJIZWFwS2luZC5oICovLAogCQkJCTBGMjZBN0E0MjA1NDgzMEQwMDkwQTE0MSAv
KiBQZXJQcm9jZXNzLmNwcCAqLywKIAkJCQkxNDQ0NkEwNzE3QTYxRkE0MDBGOUVBMUQgLyogUGVy
UHJvY2Vzcy5oICovLApAQCAtNjQ4LDYgKzY1MSw3IEBACiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAw
QjE2QTQ1IC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRCRTExRjFDQTM0NjUyMDA5
OUM4QzAgLyogT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MzE4RjQ4RDBGMDA5
NTA3MDIgLyogT2JqZWN0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOEQ4NEQyM0NFQjM4
OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNDkxRjIyQThE
ODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQjE4
RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4
Q0MxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9BbGdvcml0aG0uaAppbmRleCA5MGEyNTVhZGI3ZTcxMjJmOTBhZGM2MmFlMDYzZDUw
NTYwMzI4YjcyLi4xNGE1MGQ1YjdlNTFhYmEyNDllYTYyNGQ0MmNhYTg4ZjMwZDFmMGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTE5Myw2ICsxOTMsMzEgQEAgYm9vbCBmaW5k
Qml0SW5Xb3JkKFQgd29yZCwgc2l6ZV90JiBpbmRleCwgc2l6ZV90IGVuZEluZGV4LCBib29sIHZh
bHVlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25z
dGV4cHIgdW5zaWduZWQgY3R6Q29uc3RleHByKFQgdmFsdWUpCit7CisgICAgY29uc3RleHByIHVu
c2lnbmVkIGJpdFNpemUgPSBzaXplb2YoVCkgKiBDSEFSX0JJVDsKKworICAgIHVzaW5nIFVUID0g
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlOworICAgIFVUIHVWYWx1ZSA9IHZh
bHVlOworCisgICAgdW5zaWduZWQgemVyb0NvdW50ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYml0U2l6ZTsgaSsrKSB7CisgICAgICAgIGlmICh1VmFsdWUgJiAxKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgemVyb0NvdW50Kys7CisgICAgICAgIHVWYWx1ZSA+Pj0g
MTsKKyAgICB9CisgICAgcmV0dXJuIHplcm9Db3VudDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NvbnN0ZXhwciB1bnNpZ25lZCBnZXRMU0JTZXROb25aZXJvQ29uc3RleHByKFQgdCkKK3sK
KyAgICByZXR1cm4gY3R6Q29uc3RleHByKHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CiAKICNlbmRpZiAvLyBBbGdvcml0aG1faApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9CUGxhdGZvcm0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKaW5k
ZXggYWZlOWUyMDM0OWZiYTAxNzkyMjAwMTc3NmJiN2QyY2QyMzUyMzIxNy4uZDc4NGNmMWJlZDBm
MjVlYjZmODAxN2NhNjY1MWZhNDU2MTgwZGU4YSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9CUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9y
bS5oCkBAIC0yMzAsNiArMjMwLDQ1IEBACiAKICNlbmRpZiAvKiBBUk0gKi8KIAorCisjaWYgQkNP
TVBJTEVSKEdDQ19DT01QQVRJQkxFKQorLyogX19MUDY0X18gaXMgbm90IGRlZmluZWQgb24gNjRi
aXQgV2luZG93cyBzaW5jZSBpdCB1c2VzIExMUDY0LiBVc2luZyBfX1NJWkVPRl9QT0lOVEVSX18g
aXMgc2ltcGxlci4gKi8KKyNpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gOAorI2RlZmluZSBCQ1BV
X0FERFJFU1M2NCAxCisjZWxpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gNAorI2RlZmluZSBCQ1BV
X0FERFJFU1MzMiAxCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBwb2ludGVyIHdpZHRoIgor
I2VuZGlmCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBjb21waWxlciBmb3IgYm1hbGxvYyIK
KyNlbmRpZgorCisjaWYgQkNPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorI2lmIF9fQllURV9PUkRF
Ul9fID09IF9fT1JERVJfQklHX0VORElBTl9fCisjZGVmaW5lIEJDUFVfQklHX0VORElBTiAxCisj
ZWxpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXworI2RlZmluZSBC
Q1BVX0xJVFRMRV9FTkRJQU4gMQorI2VsaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9QRFBf
RU5ESUFOX18KKyNkZWZpbmUgQkNQVV9NSURETEVfRU5ESUFOIDEKKyNlbHNlCisjZXJyb3IgIlVu
a25vd24gZW5kaWFuIgorI2VuZGlmCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBjb21waWxl
ciBmb3IgYm1hbGxvYyIKKyNlbmRpZgorCisjaWYgQkNQVShBRERSRVNTNjQpCisjaWYgQk9TKERB
UldJTikgJiYgQkNQVShBUk02NCkKKyNkZWZpbmUgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRI
IDM2CisjZWxzZQorLyogV2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgZWZmZWN0aXZlIGFkZHJlc3Mg
d2lkdGggaXMgPD0gNDggaW4gNjRiaXQgYXJjaGl0ZWN0dXJlcyAoZS5nLiBOYU4gYm94aW5nKS4g
Ki8KKyNkZWZpbmUgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDQ4CisjZW5kaWYKKyNlbHNl
CisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCAzMgorI2VuZGlmCisKICNkZWZp
bmUgQkFUVFJJQlVURV9QUklOVEYoZm9ybWF0U3RyaW5nQXJndW1lbnQsIGV4dHJhQXJndW1lbnRz
KSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgZm9ybWF0U3RyaW5nQXJndW1lbnQs
IGV4dHJhQXJndW1lbnRzKSkpCiAKICNpZiBCUExBVEZPUk0oTUFDKSB8fCBCUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNw
cCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcAppbmRleCA3YTY2N2E3ZGQ2
YjVlODFjZTY0NzkxMWU4OGZiMTY5MWU4NDZkZjE5Li4yYzlmNWI0NTgwYWQxNGZjODYwYjE2ZmY1
YTY5OWM2YTAzZWUzNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVn
SGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShEZWJ1Z0hlYXAp
OwogCiAjaWYgQk9TKERBUldJTikKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpCitEZWJ1Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKICAgICA6IG1fem9uZShtYWxsb2NfY3JlYXRlX3pvbmUoMCwgMCkpCiAgICAgLCBt
X3BhZ2VTaXplKHZtUGFnZVNpemUoKSkKIHsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEZWJ1Z0hl
YXA6OmR1bXAoKQogCiAjZWxzZQogCi1EZWJ1Z0hlYXA6OkRlYnVnSGVhcChzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JikKK0RlYnVnSGVhcDo6RGVidWdIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKQogICAgIDogbV9wYWdlU2l6ZSh2bVBhZ2VTaXplKCkpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWJ1Z0hlYXAuaAppbmRleCA5NThhMjIwOTBhNDE0MDdjZTYwOGJkZDRhMWZhMTJiOGZm
YmE1MTBiLi45ZGI4NTUyM2JlZTc3M2FmMThhMTZiOTgwNWIxMDkzYmU5MTFjNmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIGJtYWxs
b2MgewogICAgIAogY2xhc3MgRGVidWdIZWFwIDogcHJpdmF0ZSBTdGF0aWNQZXJQcm9jZXNzPERl
YnVnSGVhcD4gewogcHVibGljOgotICAgIERlYnVnSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgRGVidWdIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAK
ICAgICB2b2lkKiBtYWxsb2Moc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKICAgICB2b2lkKiBtZW1h
bGlnbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIEZhaWx1cmVBY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKaW5kZXggYjI3NmEyYzBlMDZlM2FmNzM3MjBi
N2M3YWNmNzQ2NGVmNGQxMzBiNy4uMjlmYjE5NzY5ZWRiOWRkYjBiNGMxZTZkMDc2ZGQ1YTU5MzY1
MzQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oCkBAIC0yNiw2
ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklzb1BhZ2VUcmlnZ2VyLmgiCisj
aW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCkBAIC0zNywxMCArMzksMTAgQEAgY2xhc3MgRGVmZXJyZWRUcmlnZ2VyIHsKICAgICBEZWZl
cnJlZFRyaWdnZXIoKSB7IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci0g
ICAgdm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+Jik7CisgICAgdm9pZCBkaWRCZWNvbWUo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiYpOwogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLSAgICB2b2lkIGhhbmRsZURlZmVycmFsKElz
b1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgaGFuZGxlRGVmZXJyYWwoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiYpOwogICAgIAogcHJpdmF0ZToKICAgICBi
b29sIG1faGFzQmVlbkRlZmVycmVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmgKaW5kZXggMDljZmM4NTc3ZmFhZjgxMmIxZmNm
OWEzNDQ1M2I0Y2JkMGJjZGUzNi4uNzFlYTcyNjhiYjFjZjJjN2FkYjRhZTYwMzdmMzY0MmZhMGM3
MjdmNSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxp
bmVzLmgKQEAgLTMyLDIyICszMiwyMiBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRl
PElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lk
IERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiYgcGFn
ZSkKK3ZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBJc29QYWdlPENvbmZpZz4mIHBhZ2UpCiB7CiAgICAg
aWYgKHBhZ2UuaXNJblVzZUZvckFsbG9jYXRpb24oKSkKICAgICAgICAgbV9oYXNCZWVuRGVmZXJy
ZWQgPSB0cnVlOwogICAgIGVsc2UKLSAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUo
JnBhZ2UsIHRyaWdnZXIpOworICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZShsb2Nr
ZXIsICZwYWdlLCB0cmlnZ2VyKTsKIH0KIAogdGVtcGxhdGU8SXNvUGFnZVRyaWdnZXIgdHJpZ2dl
cj4KIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdn
ZXI+OjpoYW5kbGVEZWZlcnJhbChJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVk
VHJpZ2dlcjx0cmlnZ2VyPjo6aGFuZGxlRGVmZXJyYWwoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYgbG9ja2VyLCBJc29QYWdlPENvbmZpZz4mIHBhZ2UpCiB7CiAgICAgUkVMRUFTRV9CQVNT
RVJUKCFwYWdlLmlzSW5Vc2VGb3JBbGxvY2F0aW9uKCkpOwogICAgIAogICAgIGlmIChtX2hhc0Jl
ZW5EZWZlcnJlZCkgewotICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZSgmcGFnZSwg
dHJpZ2dlcik7CisgICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKGxvY2tlciwgJnBh
Z2UsIHRyaWdnZXIpOwogICAgICAgICBtX2hhc0JlZW5EZWZlcnJlZCA9IGZhbHNlOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKaW5kZXggMjU3NGIyMzlmM2Ew
ZmRjNjQ5MTc4NmQzOWQzNTcwMTRlYjEyMDc3OS4uODc3YTZjMjllNWY3ZDM4YzlmYmUyMWEyMWY3
NTA0MGFiNjkxN2Q1NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9u
bWVudC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKQEAg
LTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgYm9vbCBpc05hbm9NYWxsb2NFbmFibGVkKCkKIAogREVG
SU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEVudmlyb25tZW50KTsKIAotRW52aXJvbm1l
bnQ6OkVudmlyb25tZW50KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRW52aXJvbm1lbnQ6OkVu
dmlyb25tZW50KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIDogbV9pc0RlYnVn
SGVhcEVuYWJsZWQoY29tcHV0ZUlzRGVidWdIZWFwRW5hYmxlZCgpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9FbnZpcm9ubWVudC5oCmluZGV4IGE1NjI1NmViY2E4ZTlkNGZjZTlkYjQzNTJkZTIw
YTI3MmY3MzQ5NWMuLjdiMjhkZTkyNzNlMDM0ZGI0ZjY3OWEwMjVhOWIyOTBhYmZmZTBiZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIGJtYWxsb2MgewogCiBjbGFzcyBFbnZpcm9ubWVudCA6IHB1YmxpYyBTdGF0aWNQZXJQcm9j
ZXNzPEVudmlyb25tZW50PiB7CiBwdWJsaWM6Ci0gICAgQkVYUE9SVCBFbnZpcm9ubWVudChzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQkVYUE9SVCBFbnZpcm9ubWVudChjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgYm9vbCBpc0RlYnVnSGVhcEVuYWJsZWQo
KSB7IHJldHVybiBtX2lzRGVidWdIZWFwRW5hYmxlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCmluZGV4IDNjY2EyZDU0ZTY2M2Q1NDIyMDU1MDEwOTcxZmQ5M2U3ZWZiYTcxMTEu
LjQyMDE5NTlmNjBiZTYyMTA1MmIxMzBkM2U5Njc1YjlmYjAwNzM0M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBDYWxsYmFjayB7CiBu
YW1lc3BhY2UgYm1hbGxvYyB7CiAKIHN0cnVjdCBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzIDog
cHVibGljIFN0YXRpY1BlclByb2Nlc3M8UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcz4gewotICAg
IFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3Moc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpIHsgfQor
ICAgIFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpIHsgfQogICAgIAogICAgIFZlY3RvcjxHaWdhY2FnZTo6Q2FsbGJhY2s+IGNhbGxiYWNrczsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCAxMTg5Yjg3Nzg0NDc1ZTA3ZTNhZmJjYTA5
YjMzMTBiMzFiZGMxNTAxLi4zYWFlNDNhMjE3YWUzYjFkMWRjY2FkMGU3MTVmZGM0MWY4Mzk2NWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc2l6ZV90IEhlYXA6
OmdpZ2FjYWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZCht
X2tpbmQpKTsKIH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQorc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKQogewogICAgIHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtOTEs
MTQgKzkxLDE0IEBAIHNpemVfdCBIZWFwOjpmb290cHJpbnQoKQogICAgIHJldHVybiBtX2Zvb3Rw
cmludDsKIH0KIAotdm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JikKK3ZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgbV9sYXJnZUZyZWUubWFya0FsbEFzRWxp
Z2liaWxlKCk7CiAgICAgbV9oYXNQZW5kaW5nRGVjb21taXRzID0gZmFsc2U7CiAgICAgbV9jb25k
aXRpb24ubm90aWZ5X2FsbCgpOwogfQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYg
ZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21t
aXR0ZXIpCiB7CiAgICAgbV9mb290cHJpbnQgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsK
ICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0x
MTQsOSArMTE0LDkgQEAgdm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGUKIH0KIAogI2lmIEJVU0UoUEFS
VElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2Uo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1p
dHRlcikKICNlbHNlCi12b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1p
dHMpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMp
CiAjZW5kaWYKIHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX2ZyZWVQYWdlcykgewpAQCAtMTY5
LDcgKzE2OSw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6CiB9CiAKICNpZiBCVVNFKFBBUlRJ
QUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhl
YXA6OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgdm9pZCogbmV3SGlnaFdh
dGVyTWFyayA9IG51bGxwdHI7CiAgICAgZm9yIChMYXJnZVJhbmdlJiByYW5nZSA6IG1fbGFyZ2VG
cmVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCmluZGV4IGRiMzI0NTM2ODdmYjU2ZTYwMDA4M2JlZTEw
YmE1NGYwODJjM2Q2OTMuLjU5Yzc1ZjI3YjljNzk4NTAwZGRkZGZiNWEzYjYzNGJjYzhkMmMxYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oCkBAIC03NiwxNCArNzYsMTQgQEAgY2xhc3MgSGVhcCB7CiAg
ICAgdm9pZCBzaHJpbmtMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIGNvbnN0IFJhbmdl
Jiwgc2l6ZV90KTsKIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNjYXZl
bmdlVG9IaWdoV2F0ZXJtYXJrKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQm
KTsKLSAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21t
aXQmKTsKKyAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQmKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQmKTsKICNlbHNlCi0gICAgdm9pZCBz
Y2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBk
ZWZlcnJlZERlY29tbWl0cyk7CisgICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0cyk7CiAj
ZW5kaWYKLSAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVj
b21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CisgICAgdm9pZCBzY2F2ZW5nZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBmcmVl
ZCwgc2l6ZV90IGdvYWwpOwogCi0gICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKKyAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOwogICAgIHNpemVfdCBmb290cHJpbnQoKTsKIAogICAgIHZvaWQgZXh0
ZXJuYWxEZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCk7CkBAIC05MSwxMCArOTEsMTAgQEAgY2xh
c3MgSGVhcCB7CiAgICAgdm9pZCBleHRlcm5hbENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCk7CiAg
ICAgdm9pZCBleHRlcm5hbENvbW1pdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQqIHB0
ciwgc2l6ZV90KTsKIAotICAgIHZvaWQgbWFya0FsbExhcmdlQXNFbGlnaWJpbGUoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOworICAgIHZvaWQgbWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGVjb21taXRM
YXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiwgQnVsa0RlY29t
bWl0Jik7CisgICAgdm9pZCBkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKIAogICAgIHN0cnVjdCBMYXJn
ZU9iamVjdEhhc2ggewogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaCh2b2lkKiBrZXkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAppbmRleCBmY2E5ZmNmNzhkNzMz
ZjM4YmJiZjkyZjcxMjVjZTA5NjI1ZmY1YTI1Li5mMzg0YTU0YzZhOGZiZmQ1OTdjNDQ4YjEwNmU0
N2Y5MzQzYjk1MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBERUZJTkVfU1RBVElDX1BF
Ul9QUk9DRVNTX1NUT1JBR0UoSGVhcENvbnN0YW50cyk7CiAKLUhlYXBDb25zdGFudHM6OkhlYXBD
b25zdGFudHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitIZWFwQ29uc3RhbnRzOjpIZWFwQ29u
c3RhbnRzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIDogbV92bVBhZ2VTaXpl
UGh5c2ljYWwgeyB2bVBhZ2VTaXplUGh5c2ljYWwoKSB9CiB7CiAgICAgUkVMRUFTRV9CQVNTRVJU
KG1fdm1QYWdlU2l6ZVBoeXNpY2FsID49IHNtYWxsUGFnZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXBDb25zdGFudHMuaAppbmRleCAwNGU3M2QwY2M4MDA1NDVlNzAzMjFiMmNhNDUzYTRm
YWVlYjFhMDI2Li4wZWJjOTUwZTlkNjJmNDljZmJlYWJjODllOWU0Y2IxNGY5Y2FkMDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIEhlYXBDb25zdGFudHMgOiBwdWJsaWMgU3RhdGljUGVy
UHJvY2VzczxIZWFwQ29uc3RhbnRzPiB7CiBwdWJsaWM6Ci0gICAgSGVhcENvbnN0YW50cyhzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgSGVhcENvbnN0YW50cyhjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+Jik7CiAgICAgfkhlYXBDb25zdGFudHMoKSA9IGRlbGV0ZTsKIAogICAgIGlu
bGluZSBzaXplX3QgcGFnZUNsYXNzKHNpemVfdCBzaXplQ2xhc3MpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUNsYXNzZXNbc2l6ZUNsYXNzXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29BbGxvY2F0b3IuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9y
LmgKaW5kZXggYTBmNzA4MGNiYjFjMjE3MTc1N2MzZDZkZjc0NzUyZWY1MWJkOGQxNy4uM2JhMDhh
YTJiNjhiMmM0Mzg4MzAwMGJmMjE0NDEyMWVjZmNmNDEwNyAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0FsbG9jYXRvci5oCkBAIC00MCwxMyArNDAsMTIgQEAgY2xhc3MgSXNvQWxsb2NhdG9yIHsK
ICAgICBJc29BbGxvY2F0b3IoSXNvSGVhcEltcGw8Q29uZmlnPiYpOwogICAgIH5Jc29BbGxvY2F0
b3IoKTsKICAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShib29sIGFib3J0T25GYWlsdXJlKTsKLSAg
ICB2b2lkIHNjYXZlbmdlKCk7CisgICAgdm9pZCogYWxsb2NhdGUoSXNvSGVhcEltcGw8Q29uZmln
PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHZvaWQgc2NhdmVuZ2UoSXNvSGVhcEltcGw8
Q29uZmlnPiYpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coYm9vbCBh
Ym9ydE9uRmFpbHVyZSk7CisgICAgdm9pZCogYWxsb2NhdGVTbG93KElzb0hlYXBJbXBsPENvbmZp
Zz4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAKLSAgICBJc29IZWFwSW1wbDxDb25maWc+
KiBtX2hlYXAgeyBudWxscHRyIH07CiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKICAgICBJc29Q
YWdlPENvbmZpZz4qIG1fY3VycmVudFBhZ2UgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvcklubGluZXMuaAppbmRleCA1NDU1ZmZkY2YyZDAzMjBm
MzNmMzZjNzMxMWY5NjJlZjdjNzgyNDdhLi44ZDdhNGZjMDg2Y2NjODcxNTFhZDQ3ZTBmYTVmODMy
ZmFmZTBlNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRv
cklubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvcklubGlu
ZXMuaApAQCAtMzQsOCArMzQsNyBAQAogbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWc+Ci1Jc29BbGxvY2F0b3I8Q29uZmlnPjo6SXNvQWxsb2NhdG9yKElzb0hl
YXBJbXBsPENvbmZpZz4mIGhlYXApCi0gICAgOiBtX2hlYXAoJmhlYXApCitJc29BbGxvY2F0b3I8
Q29uZmlnPjo6SXNvQWxsb2NhdG9yKElzb0hlYXBJbXBsPENvbmZpZz4mKQogewogfQogCkBAIC00
NSwzNiArNDQsMzYgQEAgSXNvQWxsb2NhdG9yPENvbmZpZz46On5Jc29BbGxvY2F0b3IoKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6
YWxsb2NhdGUoYm9vbCBhYm9ydE9uRmFpbHVyZSkKK3ZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+
OjphbGxvY2F0ZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwLCBib29sIGFib3J0T25GYWlsdXJl
KQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgdm9p
ZCogcmVzdWx0ID0gbV9mcmVlTGlzdC5hbGxvY2F0ZTxDb25maWc+KAogICAgICAgICBbJl0gKCkg
LT4gdm9pZCogewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyhhYm9ydE9uRmFpbHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93KGhlYXAsIGFib3J0T25GYWlsdXJl
KTsKICAgICAgICAgfSk7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXA6IGFsbG9jYXRlZCAlcCBvZiBzaXplICV1XG4iLCBtX2hlYXAsIHJlc3VsdCwgQ29uZmln
OjpvYmplY3RTaXplKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVw
IG9mIHNpemUgJXVcbiIsICZoZWFwLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0U2l6ZSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotQk5PX0lOTElO
RSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZh
aWx1cmUpCitCTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZVNs
b3coSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtX2hlYXAtPmxvY2spOworICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGhlYXAubG9jayk7CiAKLSAgICBBbGxvY2F0aW9uTW9k
ZSBhbGxvY2F0aW9uTW9kZSA9IG1faGVhcC0+dXBkYXRlQWxsb2NhdGlvbk1vZGUoKTsKKyAgICBB
bGxvY2F0aW9uTW9kZSBhbGxvY2F0aW9uTW9kZSA9IGhlYXAudXBkYXRlQWxsb2NhdGlvbk1vZGUo
KTsKICAgICBpZiAoYWxsb2NhdGlvbk1vZGUgPT0gQWxsb2NhdGlvbk1vZGU6OlNoYXJlZCkgewog
ICAgICAgICBpZiAobV9jdXJyZW50UGFnZSkgewotICAgICAgICAgICAgbV9jdXJyZW50UGFnZS0+
c3RvcEFsbG9jYXRpbmcobV9mcmVlTGlzdCk7CisgICAgICAgICAgICBtX2N1cnJlbnRQYWdlLT5z
dG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgICAgICAgICAgbV9jdXJyZW50
UGFnZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2ZyZWVMaXN0LmNsZWFyKCk7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG1faGVhcC0+YWxsb2NhdGVGcm9tU2hhcmVkKGxvY2tlciwgYWJv
cnRPbkZhaWx1cmUpOworICAgICAgICByZXR1cm4gaGVhcC5hbGxvY2F0ZUZyb21TaGFyZWQobG9j
a2VyLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgfQogCiAgICAgQkFTU0VSVChhbGxvY2F0aW9uTW9k
ZSA9PSBBbGxvY2F0aW9uTW9kZTo6RmFzdCk7CiAgICAgCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8
Q29uZmlnPiByZXN1bHQgPSBtX2hlYXAtPnRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxpZ2li
aWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBoZWFwLnRha2VGaXJzdEVsaWdpYmxlKGxvY2tl
cik7CiAgICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6U3VjY2Vzcykgewog
ICAgICAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0LmtpbmQgPT0gRWxpZ2liaWxpdHlLaW5kOjpP
dXRPZk1lbW9yeSk7CiAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghYWJvcnRPbkZhaWx1cmUpOwpA
QCAtODIsNyArODEsNyBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+Ojph
bGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSkKICAgICB9CiAgICAgCiAgICAgaWYgKG1f
Y3VycmVudFBhZ2UpCi0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJl
ZUxpc3QpOworICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1f
ZnJlZUxpc3QpOwogICAgIAogICAgIG1fY3VycmVudFBhZ2UgPSByZXN1bHQucGFnZTsKICAgICBt
X2ZyZWVMaXN0ID0gbV9jdXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKCk7CkBAIC05MSwxMSAr
OTAsMTEgQEAgQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVT
bG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4K
LXZvaWQgSXNvQWxsb2NhdG9yPENvbmZpZz46OnNjYXZlbmdlKCkKK3ZvaWQgSXNvQWxsb2NhdG9y
PENvbmZpZz46OnNjYXZlbmdlKElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXApCiB7CiAgICAgaWYg
KG1fY3VycmVudFBhZ2UpIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIo
bV9oZWFwLT5sb2NrKTsKLSAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobV9m
cmVlTGlzdCk7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGhlYXAubG9j
ayk7CisgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKGxvY2tlciwgbV9mcmVl
TGlzdCk7CiAgICAgICAgIG1fY3VycmVudFBhZ2UgPSBudWxscHRyOwogICAgICAgICBtX2ZyZWVM
aXN0LmNsZWFyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29EZWFsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxv
Y2F0b3JJbmxpbmVzLmgKaW5kZXggMjNmMzJhM2Q4OWIyNWQyYzU3ZTFhMzgyYmRlMDI2ODg1YTRl
M2Q5ZC4uMDMyZmI3NzE5YWFiYjAzOGIzODIyOTQ3MzkwYmQ0ODhhODQ3ZmJjYSAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oCkBAIC03Niw3ICs3
Niw3IEBAIEJOT19JTkxJTkUgdm9pZCBJc29EZWFsbG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSgp
CiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoKm1fbG9jayk7CiAgICAgCiAgICAg
Zm9yICh2b2lkKiBwdHIgOiBtX29iamVjdExvZykKLSAgICAgICAgSXNvUGFnZTxDb25maWc+Ojpw
YWdlRm9yKHB0ciktPmZyZWUocHRyKTsKKyAgICAgICAgSXNvUGFnZTxDb25maWc+OjpwYWdlRm9y
KHB0ciktPmZyZWUobG9ja2VyLCBwdHIpOwogICAgIG1fb2JqZWN0TG9nLmNsZWFyKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCmluZGV4IGJhZmViM2VlMDMwNTllODdm
OWIwNWQ3NzM3YTZiMjU5MGZmZWJkZjcuLmU3MmIyZDE2MTIxYjczYWYzMWUwZmQ3YzEzMmE1Yzk0
YWZkZGY3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkJpdHMuaCIKICNpbmNsdWRlICJFbGlnaWJpbGl0eVJlc3VsdC5o
IgogI2luY2x1ZGUgIklzb1BhZ2UuaCIKKyNpbmNsdWRlICJQYWNrZWQuaCIKICNpbmNsdWRlICJW
ZWN0b3IuaCIKIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBJ
c29EaXJlY3RvcnlCYXNlIDogcHVibGljIElzb0RpcmVjdG9yeUJhc2VCYXNlIHsKICAgICAKICAg
ICBJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZShJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dl
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSA9IDA7CiAgICAgCiBw
cm90ZWN0ZWQ6CiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgbV9oZWFwOwpAQCAtNjQsOSArNjUs
OSBAQCBjbGFzcyBJc29EaXJlY3RvcnkgOiBwdWJsaWMgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+
IHsKICAgICAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBwYWdlIHRoYXQgaXMgZWxpZ2libGUgZm9y
IGFsbG9jYXRpb24gYW5kIHJldHVybiBpdC4gTWF5IHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5v
CiAgICAgLy8gc3VjaCB0aGluZy4gTWF5IGFsbG9jYXRlIGEgbmV3IHBhZ2UgaWYgd2UgaGF2ZSBh
biB1bmNvbW1pdHRlZCBwYWdlLgotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZp
cnN0RWxpZ2libGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVs
aWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAKLSAgICB2b2lkIGRp
ZEJlY29tZShJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29u
ZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBUaGlzIGdldHMg
Y2FsbGVkIGZyb20gYSBidWxrIGRlY29tbWl0IGZ1bmN0aW9uIGluIHRoZSBTY2F2ZW5nZXIsIHNv
IG5vIGxvY2tzIGFyZSBoZWxkLiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8gbmVlZHMgdG8gZ2V0IHRo
ZSBoZWFwIGxvY2suCkBAIC03NCwyMyArNzUsMjMgQEAgY2xhc3MgSXNvRGlyZWN0b3J5IDogcHVi
bGljIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiB7CiAgICAgCiAgICAgLy8gSXRlcmF0ZSBvdmVy
IGFsbCBlbXB0eSBhbmQgY29tbWl0dGVkIHBhZ2VzLCBhbmQgcHV0IHRoZW0gaW50byB0aGUgdmVj
dG9yLiBUaGlzIGFsc28gcmVjb3JkcyB0aGUKICAgICAvLyBwYWdlcyBhcyBiZWluZyBkZWNvbW1p
dHRlZC4gSXQncyB0aGUgY2FsbGVyJ3Mgam9iIHRvIGRvIHRoZSBhY3R1YWwgZGVjb21taXR0aW5n
LgotICAgIHZvaWQgc2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CisgICAgdm9p
ZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgVmVjdG9yPERlZmVycmVk
RGVjb21taXQ+Jik7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CisgICAgdm9pZCBz
Y2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgVmVj
dG9yPERlZmVycmVkRGVjb21taXQ+Jik7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJik7CisgICAg
dm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwg
Y29uc3QgRnVuYyYpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHNjYXZlbmdlUGFnZShzaXpl
X3QsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2VQYWdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3QsIFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYpOwogCisgICAgc3RkOjphcnJheTxQYWNrZWRBbGlnbmVkUHRyPElzb1BhZ2U8Q29uZmln
PiwgSXNvUGFnZTxDb25maWc+OjpwYWdlU2l6ZT4sIG51bVBhZ2VzPiBtX3BhZ2VzIHsgfTsKICAg
ICAvLyBOT1RFOiBJIHN1cHBvc2UgdGhhdCB0aGlzIGNvdWxkIGJlIHR3byBiaXR2ZWN0b3JzLiBC
dXQgZnJvbSB3b3JraW5nIG9uIHRoZSBHQywgSSBmb3VuZCB0aGF0IHRoZQogICAgIC8vIG51bWJl
ciBvZiBiaXR2ZWN0b3JzIGRvZXMgbm90IG1hdHRlciBhcyBtdWNoIGFzIHdoZXRoZXIgb3Igbm90
IHRoZXkgbWFrZSBpbnR1aXRpdmUgc2Vuc2UuCiAgICAgQml0czxudW1QYWdlcz4gbV9lbGlnaWJs
ZTsKICAgICBCaXRzPG51bVBhZ2VzPiBtX2VtcHR5OwogICAgIEJpdHM8bnVtUGFnZXM+IG1fY29t
bWl0dGVkOwotICAgIHN0ZDo6YXJyYXk8SXNvUGFnZTxDb25maWc+KiwgbnVtUGFnZXM+IG1fcGFn
ZXM7CiAgICAgdW5zaWduZWQgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCB7IDAgfTsKICNp
ZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgdW5zaWduZWQgbV9oaWdoV2F0ZXJtYXJrIHsg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxp
bmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaAppbmRl
eCAwYjFhMWVjMDVhMDc0MTQwMDQyYmI3NmU3NGIxMDhmZmViNWY5YjI3Li44NTU0MmRmOTg1MjQ1
OGUzNWU0MGMwOTlkYmUzMjJjYjg5Yzc0MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0RpcmVjdG9yeUlubGluZXMuaApAQCAtMzksMTIgKzM5LDEwIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+CiBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46Oklzb0RpcmVjdG9yeShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFw
KQogICAgIDogSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+KGhlYXApCiB7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gbnVtUGFnZXM7IGktLTspCi0gICAgICAgIG1fcGFnZXNbaV0gPSBudWxscHRyOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgot
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKCkKK0VsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNv
RGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICB1bnNpZ25lZCBwYWdlSW5kZXggPSAo
bV9lbGlnaWJsZSB8IH5tX2NvbW1pdHRlZCkuZmluZEJpdChtX2ZpcnN0RWxpZ2libGVPckRlY29t
bWl0dGVkLCB0cnVlKTsKICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkID0gcGFnZUlu
ZGV4OwpAQCAtNTksNyArNTcsNyBAQCBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVj
dG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libAogICAgIFNjYXZl
bmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6Z2V0KCk7CiAgICAgc2NhdmVuZ2VyLmRpZFN0
YXJ0R3Jvd2luZygpOwogICAgIAotICAgIElzb1BhZ2U8Q29uZmlnPiogcGFnZSA9IG1fcGFnZXNb
cGFnZUluZGV4XTsKKyAgICBJc29QYWdlPENvbmZpZz4qIHBhZ2UgPSBtX3BhZ2VzW3BhZ2VJbmRl
eF0uZ2V0KCk7CiAgICAgCiAgICAgaWYgKCFtX2NvbW1pdHRlZFtwYWdlSW5kZXhdKSB7CiAgICAg
ICAgIHNjYXZlbmdlci5zY2hlZHVsZUlmVW5kZXJNZW1vcnlQcmVzc3VyZShJc29QYWdlQmFzZTo6
cGFnZVNpemUpOwpAQCAtOTMsNyArOTEsNyBAQCBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElz
b0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9p
ZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShJc29QYWdl
PENvbmZpZz4qIHBhZ2UsIElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXIpCit2b2lkIElzb0RpcmVjdG9y
eTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+KiBwYWdlLCBJc29QYWdlVHJpZ2dlciB0
cmlnZ2VyKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAg
ICAgdW5zaWduZWQgcGFnZUluZGV4ID0gcGFnZS0+aW5kZXgoKTsKQEAgLTEwMyw3ICsxMDEsNyBA
QCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkQmVjb21lKElz
b1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUAogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIl
cDogJXAgZGlkIGJlY29tZSBlbGlnaWJsZS5cbiIsIHRoaXMsIHBhZ2UpOwogICAgICAgICBtX2Vs
aWdpYmxlW3BhZ2VJbmRleF0gPSB0cnVlOwogICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29t
bWl0dGVkID0gc3RkOjptaW4obV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgcGFnZUluZGV4
KTsKLSAgICAgICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKHRo
aXMpOworICAgICAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQo
bG9ja2VyLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXNvUGFnZVRyaWdnZXI6
OkVtcHR5OgogICAgICAgICBpZiAodmVyYm9zZSkKQEAgLTEyNSwyOCArMTIzLDI4IEBAIHZvaWQg
SXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWREZWNvbW1pdCh1bnNpZ25l
ZCBpbmRleCkKICAgICAvLyBzeXNjYWxsIGl0c2VsZiAod2hpY2ggaGFzIHRvIGRvIG1hbnkgaGFy
ZCB0aGluZ3MpLgogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPm1faGVh
cC5sb2NrKTsKICAgICBCQVNTRVJUKCEhbV9jb21taXR0ZWRbaW5kZXhdKTsKLSAgICB0aGlzLT5t
X2hlYXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFn
ZVNpemUpOworICAgIHRoaXMtPm1faGVhcC5pc05vTG9uZ2VyRnJlZWFibGUobV9wYWdlc1tpbmRl
eF0uZ2V0KCksIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CiAgICAgbV9jb21taXR0ZWRbaW5kZXhd
ID0gZmFsc2U7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6bWluKG1f
Zmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIGluZGV4KTsKLSAgICB0aGlzLT5tX2hlYXAuZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7Ci0gICAgdGhpcy0+bV9oZWFwLmRpZERl
Y29tbWl0KG1fcGFnZXNbaW5kZXhdLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOworICAgIHRoaXMt
Pm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChsb2NrZXIsIHRoaXMpOworICAg
IHRoaXMtPm1faGVhcC5kaWREZWNvbW1pdChtX3BhZ2VzW2luZGV4XS5nZXQoKSwgSXNvUGFnZUJh
c2U6OnBhZ2VTaXplKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBw
YXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+
OjpzY2F2ZW5nZVBhZ2Uoc2l6ZV90IGluZGV4LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRl
Y29tbWl0cykKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2
ZW5nZVBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHNpemVfdCBpbmRleCwgVmVj
dG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhpcyBwYWdlIGlzIG5vdyBvZmYgbGltaXRzLgogICAgIG1fZW1wdHlbaW5kZXhdID0gZmFs
c2U7CiAgICAgbV9lbGlnaWJsZVtpbmRleF0gPSBmYWxzZTsKLSAgICBkZWNvbW1pdHMucHVzaChE
ZWZlcnJlZERlY29tbWl0KHRoaXMsIG1fcGFnZXNbaW5kZXhdLCBpbmRleCkpOworICAgIGRlY29t
bWl0cy5wdXNoKERlZmVycmVkRGVjb21taXQodGhpcywgbV9wYWdlc1tpbmRleF0uZ2V0KCksIGlu
ZGV4KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVt
UGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVu
Z2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVjdG9y
eTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYgbG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsK
ICAgICAobV9lbXB0eSAmIG1fY29tbWl0dGVkKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0g
KHNpemVfdCBpbmRleCkgewotICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGluZGV4LCBkZWNvbW1p
dHMpOworICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGxvY2tlciwgaW5kZXgsIGRlY29tbWl0cyk7
CiAgICAgICAgIH0pOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICBtX2hpZ2hXYXRl
cm1hcmsgPSAwOwpAQCAtMTU1LDEyICsxNTMsMTIgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGUK
IAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywg
dW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2Vz
Pjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICAobV9l
bXB0eSAmIG1fY29tbWl0dGVkKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBp
bmRleCkgewogICAgICAgICAgICAgaWYgKGluZGV4ID4gbV9oaWdoV2F0ZXJtYXJrKQotICAgICAg
ICAgICAgICAgIHNjYXZlbmdlUGFnZShpbmRleCwgZGVjb21taXRzKTsKKyAgICAgICAgICAgICAg
ICBzY2F2ZW5nZVBhZ2UobG9ja2VyLCBpbmRleCwgZGVjb21taXRzKTsKICAgICAgICAgfSk7CiAg
ICAgbV9oaWdoV2F0ZXJtYXJrID0gMDsKIH0KQEAgLTE2OCwxMSArMTY2LDExIEBAIHZvaWQgSXNv
RGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFy
ayhWZWN0b3I8RGVmZXJyCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFz
c2VkTnVtUGFnZXM+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29EaXJlY3Rvcnk8
Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IEZ1bmMm
IGZ1bmMpCit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6Zm9yRWFj
aENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CiAgICAgbV9jb21taXR0ZWQuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChz
aXplX3QgaW5kZXgpIHsKLSAgICAgICAgICAgIGZ1bmMoKm1fcGFnZXNbaW5kZXhdKTsKKyAgICAg
ICAgICAgIGZ1bmMoKihtX3BhZ2VzW2luZGV4XS5nZXQoKSkpOwogICAgICAgICB9KTsKIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHAKaW5kZXggNjk2ZDIyZTU3ZjYy
MjNmOWI5Mjk0MmFiMmYyZTBiMDlhYWJkOWE4My4uZGQwODlhMWFiZDUyMWZlYjRkMTkzNzZiZjZj
Y2U3Mzg3ZGViNTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
SW1wbC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHAKQEAg
LTMxLDcgKzMxLDggQEAKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi1Jc29IZWFwSW1wbEJhc2U6
Oklzb0hlYXBJbXBsQmFzZSgpCitJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZShNdXRl
eCYgbG9jaykKKyAgICA6IGxvY2sobG9jaykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29I
ZWFwSW1wbC5oCmluZGV4IDA5NTExZTI1N2ZiZmJmN2NjMDRiMzk3OGMxZWZlMGJmMmIzNGMyZGQu
LjBiYWE4MDg4ODZiNzc2NTdkYjkzMTEzNDFmYzJkZmMyYzViZTU0ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXBJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJc29BbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJJc29EaXJlY3RvcnlQYWdlLmgiCiAjaW5jbHVkZSAiSXNvVExT
QWxsb2NhdG9yRW50cnkuaCIKKyNpbmNsdWRlICJQYWNrZWQuaCIKICNpbmNsdWRlICJQaHlzaWNh
bFBhZ2VNYXAuaCIKIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtNTEsMjcgKzUyLDQ4IEBAIGNs
YXNzIEJFWFBPUlQgSXNvSGVhcEltcGxCYXNlIHsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
CiAgICAgdmlydHVhbCB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgc2l6ZV90IGZyZWVhYmxlTWVt
b3J5KCkgPSAwOwotICAgIHZpcnR1YWwgc2l6ZV90IGZvb3RwcmludCgpID0gMDsKICAgICAKICAg
ICB2b2lkIHNjYXZlbmdlTm93KCk7CiAgICAgc3RhdGljIHZvaWQgZmluaXNoU2NhdmVuZ2luZyhW
ZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAorICAgIHZvaWQgZGlkQ29tbWl0KHZvaWQqIHB0
ciwgc2l6ZV90IGJ5dGVzKTsKKyAgICB2b2lkIGRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90
IGJ5dGVzKTsKKworICAgIHZvaWQgaXNOb3dGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRl
cyk7CisgICAgdm9pZCBpc05vTG9uZ2VyRnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMp
OworCisgICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KCk7CisgICAgc2l6ZV90IGZvb3RwcmludCgp
OworCiAgICAgdm9pZCBhZGRUb0FsbElzb0hlYXBzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBJc29I
ZWFwSW1wbEJhc2UoKTsKKyAgICBJc29IZWFwSW1wbEJhc2UoTXV0ZXgmKTsKIAogICAgIGZyaWVu
ZCBjbGFzcyBJc29TaGFyZWRQYWdlOwogICAgIGZyaWVuZCBjbGFzcyBBbGxJc29IZWFwczsKICAg
ICAKK3B1YmxpYzoKKyAgICAvLyBJdCdzIGFsbW9zdCBhbHdheXMgdGhlIGNhbGxlcidzIHJlc3Bv
bnNpYmlsaXR5IHRvIGdyYWIgdGhlIGxvY2suIFRoaXMgbG9jayBjb21lcyBmcm9tIHRoZQorICAg
IC8vICgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5
PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrLiBUaGF0J3MgcHJldHR5IHdlaXJkLCBhbmQgd2UgZG9u
J3QKKyAgICAvLyB0cnkgdG8gZGlzZ3Vpc2UgdGhlIGZhY3QgdGhhdCBpdCdzIHdlaXJkLiBXZSBv
bmx5IGRvIHRoYXQgYmVjYXVzZSBoZWFwcyBpbiB0aGUgc2FtZSBzaXplIGNsYXNzCisgICAgLy8g
c2hhcmUgdGhlIHNhbWUgZGVhbGxvY2F0b3IgbG9nLCBzbyBpdCBtYWtlcyBzZW5zZSBmb3IgdGhl
bSB0byBhbHNvIHNoYXJlIHRoZSBzYW1lIGxvY2sgdG8KKyAgICAvLyBhbW9ydGl6ZSBsb2NrIGFj
cXVpc2l0aW9uIGNvc3RzLgorICAgIE11dGV4JiBsb2NrOworcHJvdGVjdGVkOgogICAgIElzb0hl
YXBJbXBsQmFzZSogbV9uZXh0IHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlf
Y2xvY2s6OnRpbWVfcG9pbnQgbV9sYXN0U2xvd1BhdGhUaW1lOwotICAgIHN0ZDo6YXJyYXk8dm9p
ZCosIG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkPiBtX3NoYXJlZENlbGxzIHsgfTsKKyAgICBzaXpl
X3QgbV9mb290cHJpbnQgeyAwIH07CisgICAgc2l6ZV90IG1fZnJlZWFibGVNZW1vcnkgeyAwIH07
CisjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQCisgICAgUGh5c2ljYWxQYWdlTWFwIG1fcGh5
c2ljYWxQYWdlTWFwOworI2VuZGlmCisgICAgc3RkOjphcnJheTxQYWNrZWRBbGlnbmVkUHRyPHVp
bnQ4X3QsIGJtYWxsb2M6OmFsaWdubWVudD4sIG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkPiBtX3No
YXJlZENlbGxzIHsgfTsKK3Byb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX251bWJlck9mQWxsb2Nh
dGlvbnNGcm9tU2hhcmVkSW5PbmVDeWNsZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2F2YWlsYWJs
ZVNoYXJlZCB7IG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkTWFzayB9OwogICAgIEFsbG9jYXRpb25N
b2RlIG1fYWxsb2NhdGlvbk1vZGUgeyBBbGxvY2F0aW9uTW9kZTo6SW5pdCB9OwotICAgIAorICAg
IGJvb2wgbV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCB7IHRydWUgfTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX2F2YWlsYWJsZVNoYXJlZCkgKiA4ID49IG1heEFs
bG9jYXRpb25Gcm9tU2hhcmVkLCAiIik7CiB9OwogCkBAIC04MywyMSArMTA1LDE3IEBAIGNsYXNz
IElzb0hlYXBJbXBsIGZpbmFsIDogcHVibGljIElzb0hlYXBJbXBsQmFzZSB7CiBwdWJsaWM6CiAg
ICAgSXNvSGVhcEltcGwoKTsKICAgICAKLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRh
a2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmly
c3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgLy8g
Q2FsbGJhY2tzIGZyb20gZGlyZWN0b3J5LgotICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRl
Y29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4q
KTsKLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxD
b25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+Kik7CisgICAgdm9pZCBk
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4qKTsKKyAg
ICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46
Om51bVBhZ2VzPiopOwogICAgIAogICAgIHZvaWQgc2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVj
b21taXQ+Jikgb3ZlcnJpZGU7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHZvaWQg
c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpIG92ZXJyaWRlOwotCi0g
ICAgc2l6ZV90IGZvb3RwcmludCgpIG92ZXJyaWRlOwotICAgIAogICAgIHVuc2lnbmVkIGFsbG9j
YXRvck9mZnNldCgpOwogICAgIHVuc2lnbmVkIGRlYWxsb2NhdG9yT2Zmc2V0KCk7CiAKQEAgLTEw
Niw0NiArMTI0LDI1IEBAIGNsYXNzIElzb0hlYXBJbXBsIGZpbmFsIDogcHVibGljIElzb0hlYXBJ
bXBsQmFzZSB7CiAgICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBG
dW5jJik7CisgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBjb25zdCBGdW5jJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LSAgICB2b2lkIGZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZv
ckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBG
dW5jJik7CiAgICAgCiAgICAgLy8gVGhpcyBpcyBvbmx5IGFjY3VyYXRlIHdoZW4gYWxsIHRocmVh
ZHMgYXJlIHNjYXZlbmdlZC4gT3RoZXJ3aXNlIGl0IHdpbGwgb3ZlcmVzdGltYXRlLgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBG
dW5jJik7Ci0KLSAgICB2b2lkIGRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7Ci0g
ICAgdm9pZCBkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7Ci0KLSAgICB2b2lk
IGlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotICAgIHZvaWQgaXNOb0xv
bmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKyAgICB2b2lkIGZvckVhY2hM
aXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CiAK
ICAgICBBbGxvY2F0aW9uTW9kZSB1cGRhdGVBbGxvY2F0aW9uTW9kZSgpOwogICAgIHZvaWQqIGFs
bG9jYXRlRnJvbVNoYXJlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vbCBhYm9y
dE9uRmFpbHVyZSk7Ci0gICAgCi0gICAgLy8gSXQncyBhbG1vc3QgYWx3YXlzIHRoZSBjYWxsZXIn
cyByZXNwb25zaWJpbGl0eSB0byBncmFiIHRoZSBsb2NrLiBUaGlzIGxvY2sgY29tZXMgZnJvbSB0
aGUKLSAgICAvLyAoKlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0
b3JFbnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9jay4gVGhhdCdzIHByZXR0eSB3ZWlyZCwgYW5k
IHdlIGRvbid0Ci0gICAgLy8gdHJ5IHRvIGRpc2d1aXNlIHRoZSBmYWN0IHRoYXQgaXQncyB3ZWly
ZC4gV2Ugb25seSBkbyB0aGF0IGJlY2F1c2UgaGVhcHMgaW4gdGhlIHNhbWUgc2l6ZSBjbGFzcwot
ICAgIC8vIHNoYXJlIHRoZSBzYW1lIGRlYWxsb2NhdG9yIGxvZywgc28gaXQgbWFrZXMgc2Vuc2Ug
Zm9yIHRoZW0gdG8gYWxzbyBzaGFyZSB0aGUgc2FtZSBsb2NrIHRvCi0gICAgLy8gYW1vcnRpemUg
bG9jayBhY3F1aXNpdGlvbiBjb3N0cy4KLSAgICBNdXRleCYgbG9jazsKIAogcHJpdmF0ZToKKyAg
ICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX2hlYWREaXJlY3RvcnkgeyBu
dWxscHRyIH07CisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4gbV90YWls
RGlyZWN0b3J5IHsgbnVsbHB0ciB9OworICAgIFBhY2tlZFB0cjxJc29EaXJlY3RvcnlQYWdlPENv
bmZpZz4+IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSB7IG51bGxwdHIgfTsK
ICAgICBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiBtX2lu
bGluZURpcmVjdG9yeTsKLSAgICBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIG1faGVhZERpcmVj
dG9yeSB7IG51bGxwdHIgfTsKLSAgICBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIG1fdGFpbERp
cmVjdG9yeSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9mb290cHJpbnQgeyAwIH07Ci0gICAg
c2l6ZV90IG1fZnJlZWFibGVNZW1vcnkgeyAwIH07Ci0jaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0Vf
TUFQCi0gICAgUGh5c2ljYWxQYWdlTWFwIG1fcGh5c2ljYWxQYWdlTWFwOwotI2VuZGlmCiAgICAg
dW5zaWduZWQgbV9uZXh0RGlyZWN0b3J5UGFnZUluZGV4IHsgMSB9OyAvLyBXZSBzdGFydCBhdCAx
IHNvIHRoYXQgdGhlIGhpZ2ggd2F0ZXIgbWFyayBiZWluZyB6ZXJvIG1lYW5zIHdlJ3ZlIG9ubHkg
YWxsb2NhdGVkIGluIHRoZSBpbmxpbmUgZGlyZWN0b3J5IHNpbmNlIHRoZSBsYXN0IHNjYXZlbmdl
LgogICAgIHVuc2lnbmVkIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayB7IDAgfTsKLSAgICAKLSAg
ICBib29sIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyB0cnVlIH07
Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0
ZWREaXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAgCiAgICAgSXNvVExTRW50cnlIb2xkZXI8SXNv
VExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPj4gbV9hbGxvY2F0b3I7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAppbmRleCAyYTRmYjI4NDM2YjM1OGU5
NmExNzAxYjkxMzM3NWE1MzNlZGRhZWQwLi45NGViM2Y0YzE0ZjhlNmY3Y2I0N2Y1YjAzYzMyYzg5
OThkNTYxYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBs
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVz
LmgKQEAgLTM0LDY0ICszNCw3MCBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KIElzb0hlYXBJbXBsPENvbmZpZz46Oklzb0hlYXBJbXBsKCkKLSAgICA6
IGxvY2soKCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50
cnk8Q29uZmlnPj4+OjpnZXQoKSktPmxvY2spCisgICAgOiBJc29IZWFwSW1wbEJhc2UoKCpQZXJQ
cm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPj4+
OjpnZXQoKSktPmxvY2spCiAgICAgLCBtX2lubGluZURpcmVjdG9yeSgqdGhpcykKICAgICAsIG1f
YWxsb2NhdG9yKCp0aGlzKQogewogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci1FbGln
aWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdp
YmxlKCkKK0VsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFr
ZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyKQogewog
ICAgIGlmIChtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkKSB7Ci0gICAg
ICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9pbmxpbmVEaXJlY3Rvcnku
dGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBy
ZXN1bHQgPSBtX2lubGluZURpcmVjdG9yeS50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAg
ICAgICBpZiAocmVzdWx0LmtpbmQgPT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKQogICAgICAgICAg
ICAgbV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IGZhbHNlOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBp
ZiAoIW1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSkgewotICAgICAgICAvLyBJ
ZiBub3RoaW5nIGlzIGVsaWdpYmxlLCBpdCBjYW4gb25seSBiZSBiZWNhdXNlIHdlIGhhdmUgbm8g
ZGlyZWN0b3JpZXMuIEl0IHdvdWxkbid0IGJlIHRoZSBlbmQKLSAgICAgICAgLy8gb2YgdGhlIHdv
cmxkIGlmIHdlIGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBk
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCgpIHdvdWxkIG5lZWQKLSAgICAgICAgLy8gYSBu
dWxsIGNoZWNrLgotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1faGVhZERpcmVjdG9yeSk7Ci0g
ICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5KTsKLSAgICB9Ci0gICAgCi0g
ICAgZm9yICg7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeTsgbV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVk
RGlyZWN0b3J5LT5uZXh0KSB7Ci0gICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVz
dWx0ID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LT5wYXlsb2FkLnRha2VG
aXJzdEVsaWdpYmxlKCk7Ci0gICAgICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtp
bmQ6OkZ1bGwpIHsKLSAgICAgICAgICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IHN0ZDo6
bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVk
RGlyZWN0b3J5LT5pbmRleCgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgewor
ICAgICAgICBhdXRvKiBjdXJzb3IgPSBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnkuZ2V0KCk7CisgICAgICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgICAgICAvLyBJZiBub3Ro
aW5nIGlzIGVsaWdpYmxlLCBpdCBjYW4gb25seSBiZSBiZWNhdXNlIHdlIGhhdmUgbm8gZGlyZWN0
b3JpZXMuIEl0IHdvdWxkbid0IGJlIHRoZSBlbmQKKyAgICAgICAgICAgIC8vIG9mIHRoZSB3b3Js
ZCBpZiB3ZSBicm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRoYXQgZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoKSB3b3VsZCBuZWVkCisgICAgICAgICAgICAvLyBh
IG51bGwgY2hlY2suCisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1faGVhZERpcmVjdG9y
eS5nZXQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeS5n
ZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKDsgY3Vyc29yOyBjdXJz
b3IgPSBjdXJzb3ItPm5leHQpIHsKKyAgICAgICAgICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxD
b25maWc+IHJlc3VsdCA9IGN1cnNvci0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIp
OworICAgICAgICAgICAgICAgIEFTU0VSVChtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJl
Y3RvcnkuZ2V0KCkgPT0gY3Vyc29yKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmtpbmQg
IT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0
b3J5SGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaywgY3Vy
c29yLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNv
bW1pdGVkRGlyZWN0b3J5ID0gY3Vyc29yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgYXV0byogbmV3RGlyZWN0b3J5ID0gbmV3IElzb0RpcmVjdG9yeVBhZ2U8
Q29uZmlnPigqdGhpcywgbV9uZXh0RGlyZWN0b3J5UGFnZUluZGV4KyspOwotICAgIGlmIChtX2hl
YWREaXJlY3RvcnkpIHsKKyAgICBpZiAobV9oZWFkRGlyZWN0b3J5LmdldCgpKSB7CiAgICAgICAg
IG1fdGFpbERpcmVjdG9yeS0+bmV4dCA9IG5ld0RpcmVjdG9yeTsKICAgICAgICAgbV90YWlsRGly
ZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJFTEVBU0VfQkFT
U0VSVCghbV90YWlsRGlyZWN0b3J5KTsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxE
aXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBtX2hlYWREaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7
CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICB9CiAgICAgbV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gbmV3RGlyZWN0b3J5LT5pbmRleCgpOwogICAgIG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKLSAgICBFbGln
aWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG5ld0RpcmVjdG9yeS0+cGF5bG9hZC50YWtl
Rmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0g
bmV3RGlyZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CiAgICAgUkVM
RUFTRV9CQVNTRVJUKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVsbCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29I
ZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rv
cnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0b3J5KQordm9pZCBJ
c29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklu
bGluZURpcmVjdG9yeT4qIGRpcmVjdG9yeSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoZGlyZWN0
b3J5ID09ICZtX2lubGluZURpcmVjdG9yeSk7CiAgICAgbV9pc0lubGluZURpcmVjdG9yeUVsaWdp
YmxlT3JEZWNvbW1pdHRlZCA9IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4K
LXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQo
SXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4q
IGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVP
ckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxD
b25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+KiBkaXJlY3RvcnkpCiB7
CiAgICAgUkVMRUFTRV9CQVNTRVJUKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9y
eSk7CiAgICAgYXV0byogZGlyZWN0b3J5UGFnZSA9IElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6
cGFnZUZvcihkaXJlY3RvcnkpOwpAQCAtMTA0LDggKzExMCw5IEBAIHZvaWQgSXNvSGVhcEltcGw8
Q29uZmlnPjo6c2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7
CiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgZm9y
RWFjaERpcmVjdG9yeSgKKyAgICAgICAgbG9ja2VyLAogICAgICAgICBbJl0gKGF1dG8mIGRpcmVj
dG9yeSkgewotICAgICAgICAgICAgZGlyZWN0b3J5LnNjYXZlbmdlKGRlY29tbWl0cyk7CisgICAg
ICAgICAgICBkaXJlY3Rvcnkuc2NhdmVuZ2UobG9ja2VyLCBkZWNvbW1pdHMpOwogICAgICAgICB9
KTsKICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSAwOwogfQpAQCAtMTE2LDE3ICsxMjMs
MTYgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhW
ZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY28KIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICBpZiAoIW1fZGlyZWN0b3J5SGlnaFdhdGVybWFy
aykKLSAgICAgICAgbV9pbmxpbmVEaXJlY3Rvcnkuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoZGVj
b21taXRzKTsKLSAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVh
ZERpcmVjdG9yeTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpIHsKKyAgICAgICAgbV9pbmxpbmVE
aXJlY3Rvcnkuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobG9ja2VyLCBkZWNvbW1pdHMpOworICAg
IGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0b3J5Lmdl
dCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkgewogICAgICAgICBpZiAocGFnZS0+aW5kZXgo
KSA+PSBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmspCi0gICAgICAgICAgICBwYWdlLT5wYXlsb2Fk
LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGRlY29tbWl0cyk7CisgICAgICAgICAgICBwYWdlLT5w
YXlsb2FkLnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRzKTsKICAgICB9
CiAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gMDsKIH0KICNlbmRpZgogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci1zaXplX3QgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZnJlZWFibGVN
ZW1vcnkoKQoraW5saW5lIHNpemVfdCBJc29IZWFwSW1wbEJhc2U6OmZyZWVhYmxlTWVtb3J5KCkK
IHsKICAgICByZXR1cm4gbV9mcmVlYWJsZU1lbW9yeTsKIH0KQEAgLTE0Niw4ICsxNTIsMTAgQEAg
dW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGVhbGxvY2F0b3JPZmZzZXQoKQogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgogdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2
ZU9iamVjdHMoKQogeworICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxv
Y2spOwogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yRWFjaExpdmVPYmplY3QoCisg
ICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKikgewogICAgICAgICAgICAgcmVzdWx0
Kys7CiAgICAgICAgIH0pOwpAQCAtMTU3LDggKzE2NSwxMCBAQCB1bnNpZ25lZCBJc29IZWFwSW1w
bDxDb25maWc+OjpudW1MaXZlT2JqZWN0cygpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB1
bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1Db21taXR0ZWRQYWdlcygpCiB7CisgICAg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKICAgICBmb3JFYWNoQ29tbWl0dGVkUGFnZSgKKyAgICAgICAgbG9ja2VyLAog
ICAgICAgICBbJl0gKElzb1BhZ2U8Q29uZmlnPiYpIHsKICAgICAgICAgICAgIHJlc3VsdCsrOwog
ICAgICAgICB9KTsKQEAgLTE2Nyw0MCArMTc3LDQxIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKCkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFj
aERpcmVjdG9yeShjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpm
b3JFYWNoRGlyZWN0b3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGZ1bmMobV9pbmxpbmVEaXJlY3RvcnkpOwotICAgIGZvciAoSXNvRGly
ZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0b3J5OyBwYWdlOyBwYWdlID0g
cGFnZS0+bmV4dCkKKyAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1f
aGVhZERpcmVjdG9yeS5nZXQoKTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpCiAgICAgICAgIGZ1
bmMocGFnZS0+cGF5bG9hZCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hDb21t
aXR0ZWRQYWdlKGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZv
ckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwg
Y29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmb3JFYWNoRGlyZWN0b3J5KAorICAgICAgICBsb2Nr
ZXIsCiAgICAgICAgIFsmXSAoYXV0byYgZGlyZWN0b3J5KSB7Ci0gICAgICAgICAgICBkaXJlY3Rv
cnkuZm9yRWFjaENvbW1pdHRlZFBhZ2UoZnVuYyk7CisgICAgICAgICAgICBkaXJlY3RvcnkuZm9y
RWFjaENvbW1pdHRlZFBhZ2UobG9ja2VyLCBmdW5jKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hl
YXBJbXBsPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lk
IElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvY2tlciwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmb3JFYWNoQ29t
bWl0dGVkUGFnZSgKKyAgICAgICAgbG9ja2VyLAogICAgICAgICBbJl0gKElzb1BhZ2U8Q29uZmln
PiYgcGFnZSkgewotICAgICAgICAgICAgcGFnZS5mb3JFYWNoTGl2ZU9iamVjdChmdW5jKTsKKyAg
ICAgICAgICAgIHBhZ2UuZm9yRWFjaExpdmVPYmplY3QobG9ja2VyLCBmdW5jKTsKICAgICAgICAg
fSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWF4QWxsb2NhdGlvbkZy
b21TaGFyZWQ7ICsraW5kZXgpIHsKLSAgICAgICAgdm9pZCogcG9pbnRlciA9IG1fc2hhcmVkQ2Vs
bHNbaW5kZXhdOworICAgICAgICB2b2lkKiBwb2ludGVyID0gbV9zaGFyZWRDZWxsc1tpbmRleF0u
Z2V0KCk7CiAgICAgICAgIGlmIChwb2ludGVyICYmICEobV9hdmFpbGFibGVTaGFyZWQgJiAoMVUg
PDwgaW5kZXgpKSkKICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWc+Ci1zaXplX3QgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9vdHBy
aW50KCkKK2lubGluZSBzaXplX3QgSXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQoKQogewogI2lm
IEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAogICAgIFJFTEVBU0VfQkFTU0VSVChtX2Zvb3Rwcmlu
dCA9PSBtX3BoeXNpY2FsUGFnZU1hcC5mb290cHJpbnQoKSk7CkBAIC0yMDgsOCArMjE5LDcgQEAg
c2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZvb3RwcmludCgpCiAgICAgcmV0dXJuIG1fZm9v
dHByaW50OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBs
PENvbmZpZz46OmRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lk
IElzb0hlYXBJbXBsQmFzZTo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewog
ICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2Zvb3RwcmludCArPSBieXRlczsKQEAgLTIx
OCw4ICsyMjgsNyBAQCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZENvbW1pdCh2b2lkKiBw
dHIsIHNpemVfdCBieXRlcykKICNlbmRpZgogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+
Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90
IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNlOjpkaWREZWNvbW1pdCh2b2lkKiBw
dHIsIHNpemVfdCBieXRlcykKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAgICAgbV9mb290
cHJpbnQgLT0gYnl0ZXM7CkBAIC0yMjgsMTUgKzIzNywxMyBAQCB2b2lkIElzb0hlYXBJbXBsPENv
bmZpZz46OmRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogI2VuZGlmCiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6aXNO
b3dGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJ
bXBsQmFzZTo6aXNOb3dGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKIHsKICAgICBC
VU5VU0VEX1BBUkFNKHB0cik7CiAgICAgbV9mcmVlYWJsZU1lbW9yeSArPSBieXRlczsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojppc05v
TG9uZ2VyRnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29I
ZWFwSW1wbEJhc2U6OmlzTm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykK
IHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAgICAgbV9mcmVlYWJsZU1lbW9yeSAtPSBieXRl
czsKQEAgLTMwMSw3ICszMDgsNyBAQCB2b2lkKiBJc29IZWFwSW1wbDxDb25maWc+OjphbGxvY2F0
ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvbwogICAgIHVuc2ln
bmVkIGluZGV4UGx1c09uZSA9IF9fYnVpbHRpbl9mZnMobV9hdmFpbGFibGVTaGFyZWQpOwogICAg
IEJBU1NFUlQoaW5kZXhQbHVzT25lKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4UGx1c09u
ZSAtIDE7Ci0gICAgdm9pZCogcmVzdWx0ID0gbV9zaGFyZWRDZWxsc1tpbmRleF07CisgICAgdm9p
ZCogcmVzdWx0ID0gbV9zaGFyZWRDZWxsc1tpbmRleF0uZ2V0KCk7CiAgICAgaWYgKHJlc3VsdCkg
ewogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6
IGFsbG9jYXRlZCAlcCBmcm9tIHNoYXJlZCBhZ2FpbiBvZiBzaXplICV1XG4iLCB0aGlzLCByZXN1
bHQsIENvbmZpZzo6b2JqZWN0U2l6ZSk7CkBAIC0zMTQsNyArMzIxLDcgQEAgdm9pZCogSXNvSGVh
cEltcGw8Q29uZmlnPjo6YWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBib28KICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IGFsbG9jYXRlZCAl
cCBmcm9tIHNoYXJlZCBvZiBzaXplICV1XG4iLCB0aGlzLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0
U2l6ZSk7CiAgICAgICAgIEJBU1NFUlQoaW5kZXggPCBJc29IZWFwSW1wbEJhc2U6Om1heEFsbG9j
YXRpb25Gcm9tU2hhcmVkKTsKICAgICAgICAgKmluZGV4U2xvdEZvcjxDb25maWc+KHJlc3VsdCkg
PSBpbmRleDsKLSAgICAgICAgbV9zaGFyZWRDZWxsc1tpbmRleF0gPSByZXN1bHQ7CisgICAgICAg
IG1fc2hhcmVkQ2VsbHNbaW5kZXhdID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihyZXN1bHQpOwog
ICAgIH0KICAgICBCQVNTRVJUKHJlc3VsdCk7CiAgICAgbV9hdmFpbGFibGVTaGFyZWQgJj0gfigx
VSA8PCBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2Uu
aCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5oCmluZGV4IDU0MjViODhhNjc4OTIy
ZDg4YzJjNThkNzUwY2EyOTI2YWFmMzQwMDguLmYzZWYwNzYxY2FjMGZhZDBlMTM1NjdiM2ZjMzU0
NzAyYTc0ODY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAjaW5jbHVkZSAiQml0cy5oIgogI2luY2x1ZGUgIkRlZmVycmVkVHJpZ2dlci5oIgogI2luY2x1
ZGUgIkZyZWVMaXN0LmgiCisjaW5jbHVkZSAiTXV0ZXguaCIKICNpbmNsdWRlIDxjbGltaXRzPgor
I2luY2x1ZGUgPG11dGV4PgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTcxLDE5ICs3Mywx
OSBAQCBjbGFzcyBJc29QYWdlIDogcHVibGljIElzb1BhZ2VCYXNlIHsKIAogICAgIHVuc2lnbmVk
IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIAotICAgIHZvaWQgZnJlZSh2
b2lkKik7CisgICAgdm9pZCBmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCB2b2lk
Kik7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhpcyBwYWdlIGlzIGFscmVhZHkgc2VsZWN0ZWQg
Zm9yIGFsbG9jYXRpb24uCiAgICAgRnJlZUxpc3Qgc3RhcnRBbGxvY2F0aW5nKCk7CiAgICAgCiAg
ICAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBhbGxvY2F0b3IgcGlja3MgYW5vdGhlciBwYWdlIHRvIHJl
cGxhY2UgdGhpcyBvbmUuCi0gICAgdm9pZCBzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlz
dCk7CisgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgRnJlZUxpc3QgZnJlZUxpc3QpOwogCiAgICAgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+JiBk
aXJlY3RvcnkoKSB7IHJldHVybiBtX2RpcmVjdG9yeTsgfQogICAgIGJvb2wgaXNJblVzZUZvckFs
bG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uOyB9CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0
KGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29u
ZmlnPiYgaGVhcCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29QYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5o
CmluZGV4IGYzN2IzNDkzMjc3OTA2YzE4MmQ5OTFmYWZmY2VhOWRmZDY3ODJmNDMuLmE1Yjc3MTJh
Y2IwM2ExY2U2OTEzN2FjMDUwNjliNmQwZmUyZWZhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTY1LDE0ICs2NSwxNCBAQCBJc29QYWdlPENvbmZpZz4qIElz
b1BhZ2U8Q29uZmlnPjo6cGFnZUZvcih2b2lkKiBwdHIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZz4KLXZvaWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKHZvaWQqIHBhc3NlZFB0cikKK3Zv
aWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2tlciwgdm9pZCogcGFzc2VkUHRyKQogewogICAgIEJBU1NFUlQoIW1faXNTaGFyZWQpOwogICAg
IHVuc2lnbmVkIG9mZnNldCA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQdHIpIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4odGhpcyk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBvZmZzZXQgLyBD
b25maWc6Om9iamVjdFNpemU7CiAgICAgCiAgICAgaWYgKCFtX2VsaWdpYmlsaXR5SGFzQmVlbk5v
dGVkKSB7Ci0gICAgICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmRpZEJlY29tZSgqdGhpcyk7Cisg
ICAgICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmRpZEJlY29tZShsb2NrZXIsICp0aGlzKTsKICAg
ICAgICAgbV9lbGlnaWJpbGl0eUhhc0JlZW5Ob3RlZCA9IHRydWU7CiAgICAgfQogICAgIApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIElzb1BhZ2U8Q29uZmlnPjo6ZnJlZSh2b2lkKiBwYXNzZWRQdHIp
CiAgICAgdW5zaWduZWQgbmV3V29yZCA9IG1fYWxsb2NCaXRzW3dvcmRJbmRleF0gJj0gfigxIDw8
IGJpdEluZGV4KTsKICAgICBpZiAoIW5ld1dvcmQpIHsKICAgICAgICAgaWYgKCEtLW1fbnVtTm9u
RW1wdHlXb3JkcykKLSAgICAgICAgICAgIG1fZW1wdHlUcmlnZ2VyLmRpZEJlY29tZSgqdGhpcyk7
CisgICAgICAgICAgICBtX2VtcHR5VHJpZ2dlci5kaWRCZWNvbWUobG9ja2VyLCAqdGhpcyk7CiAg
ICAgfQogfQogCkBAIC0yMDgsNyArMjA4LDcgQEAgRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+Ojpz
dGFydEFsbG9jYXRpbmcoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElz
b1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpCit2b2lkIElz
b1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYgbG9ja2VyLCBGcmVlTGlzdCBmcmVlTGlzdCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIApAQCAtMjE3LDE5ICsyMTcsMTkgQEAgdm9pZCBJc29Q
YWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKEZyZWVMaXN0IGZyZWVMaXN0KQogICAgIAogICAg
IGZyZWVMaXN0LmZvckVhY2g8Q29uZmlnPigKICAgICAgICAgWyZdICh2b2lkKiBwdHIpIHsKLSAg
ICAgICAgICAgIGZyZWUocHRyKTsKKyAgICAgICAgICAgIGZyZWUobG9ja2VyLCBwdHIpOwogICAg
ICAgICB9KTsKIAogICAgIFJFTEVBU0VfQkFTU0VSVChtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uKTsK
ICAgICBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uID0gZmFsc2U7CiAKLSAgICBtX2VsaWdpYmlsaXR5
VHJpZ2dlci5oYW5kbGVEZWZlcnJhbCgqdGhpcyk7Ci0gICAgbV9lbXB0eVRyaWdnZXIuaGFuZGxl
RGVmZXJyYWwoKnRoaXMpOworICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmhhbmRsZURlZmVycmFs
KGxvY2tlciwgKnRoaXMpOworICAgIG1fZW1wdHlUcmlnZ2VyLmhhbmRsZURlZmVycmFsKGxvY2tl
ciwgKnRoaXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotdm9pZCBJc29QYWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KGNvbnN0
IEZ1bmMmIGZ1bmMpCit2b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCB3b3JkSW5kZXggPSAwOyB3b3JkSW5kZXggPCBiaXRzQXJyYXlMZW5ndGgobnVt
T2JqZWN0cyk7ICsrd29yZEluZGV4KSB7CiAgICAgICAgIHVuc2lnbmVkIHdvcmQgPSBtX2FsbG9j
Qml0c1t3b3JkSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29T
aGFyZWRIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaAppbmRl
eCBjOWQwNGVlOTMxMzY5NTlkMzIzZGI1ODBkMjAzNmI5YWViYzIyMWEzLi41ZWE1MWU1ZDFmZGRl
ZWZmNmY4ZDU2ZmQ3YzkwN2ZlNDJiZGQxNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1NoYXJlZEhlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1No
YXJlZEhlYXAuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBWYXJpYWRpY0J1bXBBbGxvY2F0b3Ig
ewogCiBjbGFzcyBJc29TaGFyZWRIZWFwIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SXNvU2hh
cmVkSGVhcD4gewogcHVibGljOgotICAgIElzb1NoYXJlZEhlYXAoc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYpCisgICAgSXNvU2hhcmVkSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikK
ICAgICB7CiAgICAgfQogCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIElzb1NoYXJlZEhlYXAgOiBw
dWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29TaGFyZWRIZWFwPiB7CiAKIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dW5zaWduZWQ+Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZh
aWx1cmUpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAKICAgICBJc29TaGFyZWRQYWdlKiBtX2N1cnJl
bnRQYWdlIHsgbnVsbHB0ciB9OwogICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBtX2FsbG9jYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGlu
ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaAppbmRl
eCBkOWY3ZjExNjZjNWFkMDZmMDRkODEyMWM0OTg4MjI3YmRmZDAxZDA0Li5mYzc5NThlYzRkODg0
NDFhYjU2NTI4YjI5ZjJhOTZiNzc2OTYyYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCkBAIC01NSwxMiArNTUsMTIgQEAgdm9pZCogSXNvU2hh
cmVkSGVhcDo6YWxsb2NhdGVOZXcoYm9vbCBhYm9ydE9uRmFpbHVyZSkKICAgICBjb25zdGV4cHIg
dW5zaWduZWQgb2JqZWN0U2l6ZSA9IGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVkQ2VsbChwYXNz
ZWRPYmplY3RTaXplKTsKICAgICByZXR1cm4gbV9hbGxvY2F0b3IudGVtcGxhdGUgYWxsb2NhdGU8
b2JqZWN0U2l6ZT4oCiAgICAgICAgIFsmXSAoKSAtPiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGVTbG93PHBhc3NlZE9iamVjdFNpemU+KGFib3J0T25GYWlsdXJlKTsKKyAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3c8cGFzc2VkT2JqZWN0U2l6ZT4obG9ja2VyLCBhYm9y
dE9uRmFpbHVyZSk7CiAgICAgICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWRP
YmplY3RTaXplPgotQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNsb3co
Ym9vbCBhYm9ydE9uRmFpbHVyZSkKK0JOT19JTkxJTkUgdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxs
b2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgYm9vbCBhYm9y
dE9uRmFpbHVyZSkKIHsKICAgICBTY2F2ZW5nZXImIHNjYXZlbmdlciA9ICpTY2F2ZW5nZXI6Omdl
dCgpOwogICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmcoKTsKQEAgLTczLDcgKzczLDcgQEAg
Qk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9u
RmFpbHVyZSkKICAgICB9CiAKICAgICBpZiAobV9jdXJyZW50UGFnZSkKLSAgICAgICAgbV9jdXJy
ZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcoKTsKKyAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFs
bG9jYXRpbmcobG9ja2VyKTsKIAogICAgIG1fY3VycmVudFBhZ2UgPSBwYWdlOwogICAgIG1fYWxs
b2NhdG9yID0gbV9jdXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvU2hhcmVkUGFnZS5oCmluZGV4IGE5ZTEzN2U0MTQxODg1NjRkMDU4MDQ0OTBiNTQz
N2E1MDBlNTcwYmIuLjIzZDFjNzc4OWM1NTc3NGJmMjBjYWYxNGYzMmQyNDc4MjkwNTZhNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIElzb1NoYXJlZFBhZ2UgOiBwdWJsaWMgSXNvUGFnZUJhc2UgewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICB2b2lkIGZyZWUoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsKICAgICBWYXJp
YWRpY0J1bXBBbGxvY2F0b3Igc3RhcnRBbGxvY2F0aW5nKCk7Ci0gICAgdm9pZCBzdG9wQWxsb2Nh
dGluZygpOworICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYpOwogCiBwcml2YXRlOgogICAgIElzb1NoYXJlZFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCmluZGV4IGM0MjE2YjUxZGFjOWQxZTk1
YzMwMzVkNjYxNmZhM2U3Y2U1OTA3YTkuLjk4NDIxYWM3YjJjYzZlNjI4NTBlNzA2NTczYzQzMDg2
MjcwZWE1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFn
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxp
bmVzLmgKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBJc29TaGFyZWRQYWdlOjpmcmVlKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmQKICAgICAvLyBJ
c29EZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZSBpcyBjYWxsZWQgZnJvbSBkZWxldGUgb3BlcmF0b3Iu
IFRoaXMgaXMgZGlzcGF0Y2hlZCBieSB2dGFibGUgaWYgdmlydHVhbCBkZXN0cnVjdG9yIGV4aXN0
cy4KICAgICAvLyBJZiB2cHRyIGlzIHJlcGxhY2VkIHRvIHRoZSBvdGhlciB2cHRyLCB3ZSBtYXkg
YWNjaWRlbnRhbGx5IGNoYWluIHRoaXMgcG9pbnRlciB0byB0aGUgaW5jb3JyZWN0IEhlYXBJbXBs
QmFzZSwgd2hpY2ggdG90YWxseSBicmVha3MgdGhlIElzb0hlYXAncyBnb2FsLgogICAgIC8vIFRv
IGhhcmRlbiB0aGF0LCB3ZSB2YWxpZGF0ZSB0aGF0IHRoaXMgcG9pbnRlciBpcyBhY3R1YWxseSBh
bGxvY2F0ZWQgZm9yIGEgc3BlY2lmaWMgSGVhcEltcGxCYXNlIGhlcmUgYnkgY2hlY2tpbmcgd2hl
dGhlciB0aGlzIHBvaW50ZXIgaXMgbGlzdGVkIGluIEhlYXBJbXBsQmFzZSdzIHNoYXJlZCBjZWxs
cy4KLSAgICBSRUxFQVNFX0JBU1NFUlQoaGVhcEltcGwubV9zaGFyZWRDZWxsc1tpbmRleF0gPT0g
cHRyKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoaGVhcEltcGwubV9zaGFyZWRDZWxsc1tpbmRleF0u
Z2V0KCkgPT0gcHRyKTsKICAgICBoZWFwSW1wbC5tX2F2YWlsYWJsZVNoYXJlZCB8PSAoMVUgPDwg
aW5kZXgpOwogfQogCkBAIC02MSw3ICs2MSw3IEBAIGlubGluZSBWYXJpYWRpY0J1bXBBbGxvY2F0
b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKCkKICAgICByZXR1cm4gVmFyaWFkaWNC
dW1wQWxsb2NhdG9yKHBheWxvYWRFbmQsIHJlbWFpbmluZyk7CiB9CiAKLWlubGluZSB2b2lkIElz
b1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKCkKK2lubGluZSB2b2lkIElzb1NoYXJlZFBhZ2U6
OnN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RM
Uy5oCmluZGV4IGRlMjg2N2U3OGRlMWNhMjU2MzBjMzZkMTgyMjgzM2YxN2ZhMDdlZjMuLmJhYmJi
MzA0NWI4YTUwNmU4MjgzMTAyZWI2YzNjNGNlYjllZDI5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFMuaApAQCAtNjAsOCArNjAsOCBAQCBjbGFzcyBJc29UTFMgewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGVJbXBs
KGFwaTo6SXNvSGVhcDxUeXBlPiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwogICAgIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLSAgICB2b2lkKiBhbGxvY2F0ZUZhc3QodW5zaWduZWQg
b2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWcsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCogYWxsb2NhdGVGYXN0KGFwaTo6SXNvSGVhcDxU
eXBlPiYsIHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRpYyB2b2lk
KiBhbGxvY2F0ZVNsb3coYXBpOjpJc29IZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5LmgKaW5kZXgg
MzVkYjg3MTQ3YjQ5MjA2NmEyOGVmZmQ1NzNkZjczNmY3MDgxMTM5Zi4uZTFkOGFhY2FmZTJmZmFi
ZGE3NDgwM2U5YjcwNmIwYmY1NmRlOWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTQWxsb2NhdG9yRW50cnkuaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBJc29UTFNBbGxv
Y2F0b3JFbnRyeSBmaW5hbCA6IHB1YmxpYyBEZWZhdWx0SXNvVExTRW50cnk8SXNvQWxsb2NhdG9y
PENvbmZpZwogICAgIElzb1RMU0FsbG9jYXRvckVudHJ5KElzb0hlYXBJbXBsPENvbmZpZz4mKTsK
IAogICAgIHZvaWQgY29uc3RydWN0KHZvaWQqIGRzdCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNj
YXZlbmdlKHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKICAgICAKICAgICBJc29IZWFwSW1wbDxDb25m
aWc+JiBtX2hlYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
QWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKaW5kZXggMWFlMWU2YTVhY2E0OTBlMDUyMjcxMTRmNWU0
ZTIwNWZkNDk0ZmY0My4uM2U1NTdhZDE3N2I4NmRkOGJlNmMwN2Y3NDNjOWExOGVkNmUzZTAxNSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5
SW5saW5lcy5oCkBAIC00Niw1ICs0NiwxMSBAQCB2b2lkIElzb1RMU0FsbG9jYXRvckVudHJ5PENv
bmZpZz46OmNvbnN0cnVjdCh2b2lkKiBkc3QpCiAgICAgbmV3IChkc3QpIElzb0FsbG9jYXRvcjxD
b25maWc+KG1faGVhcCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KK3ZvaWQgSXNv
VExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9pZCogZW50cnkpCit7CisgICAg
c3RhdGljX2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4qPihlbnRyeSktPnNjYXZlbmdlKG1faGVh
cCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5LmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaAppbmRleCA3Mzg0Y2UwZDJhYmI0M2ZmYjU2
YTY3ODhmNDc1MTBiNjRmMjY0ZjRkLi5hMGRiYzMwMzc0NDI4NzBlZDA4OWFhOTIwYmQ0YmZhYWQ5
N2VkYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2Nh
dG9yRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9y
RW50cnkuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJc29UTFNEZWFsbG9jYXRvckVudHJ5IGZp
bmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29EZWFsbG9jYXRvcjxDbwogICAgIElz
b1RMU0RlYWxsb2NhdG9yRW50cnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogCiAg
ICAgdm9pZCBjb25zdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJyaWRlOworICAgIHZvaWQgc2NhdmVu
Z2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5
SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5
SW5saW5lcy5oCmluZGV4IGNiZDVmOWRmN2VmYjc0YzMxMjIzOTc4MTVjYTM5MTIwNjI5Y2Q0M2Yu
LmM5NTM0MjgwY2U4ZDVhMThiMDI2OGJkMDc4MDdkN2ViYjdjMjJlNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgK
QEAgLTQzLDUgKzQzLDExIEBAIHZvaWQgSXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Ojpj
b25zdHJ1Y3Qodm9pZCogZW50cnkpCiAgICAgbmV3IChlbnRyeSkgSXNvRGVhbGxvY2F0b3I8Q29u
ZmlnPihsb2NrKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgordm9pZCBJc29UTFNE
ZWFsbG9jYXRvckVudHJ5PENvbmZpZz46OnNjYXZlbmdlKHZvaWQqIGVudHJ5KQoreworICAgIHN0
YXRpY19jYXN0PElzb0RlYWxsb2NhdG9yPENvbmZpZz4qPihlbnRyeSktPnNjYXZlbmdlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNFbnRyeS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0Vu
dHJ5LmNwcAppbmRleCBjYjAzYmRlMjg5NTdlMmNiZmExMGFmYWQ4OTQyOGJiM2VhNmZhZjczLi44
MzBhNTExYmY5OWRlY2Q4YmY2NDRhM2ZkZTM4YjMwY2FjNjcwODI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0VudHJ5LmNwcApAQCAtMzEsMTAgKzMxLDggQEAKIAogbmFtZXNwYWNlIGJt
YWxsb2MgewogCi1Jc29UTFNFbnRyeTo6SXNvVExTRW50cnkoc2l6ZV90IGFsaWdubWVudCwgc2l6
ZV90IHNpemUpCi0gICAgOiBtX29mZnNldChVSU5UX01BWCkKLSAgICAsIG1fYWxpZ25tZW50KGFs
aWdubWVudCkKLSAgICAsIG1fc2l6ZShzaXplKQorSXNvVExTRW50cnk6Oklzb1RMU0VudHJ5KHNp
emVfdCBzaXplKQorICAgIDogbV9zaXplKHNpemUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTRW50cnkuaAppbmRleCA3NGY0NDliZmEyOGE0MDFmYjA0Mzg4Y2JjZTUxNDM2ZTg2OGZk
NjE0Li5hNDc4ZTZhMzJkZTEwNmFjYzdlMzkwYWUyYWIyZmU5MGYxMGI3NDEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIEJFWFBPUlQg
SXNvVExTRW50cnkgewogICAgIHZpcnR1YWwgfklzb1RMU0VudHJ5KCk7CiAgICAgCiAgICAgc2l6
ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgc2l6ZV90IGFsaWdu
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50OyB9CisgICAgc2l6ZV90IGFsaWdubWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVfdCBleHRlbnQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldCArIG1fc2l6ZTsgfQogICAgIApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBCRVhQ
T1JUIElzb1RMU0VudHJ5IHsKICAgICB2b2lkIHdhbGtVcFRvSW5jbHVzaXZlKElzb1RMU0VudHJ5
KiwgY29uc3QgRnVuYyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSXNvVExTRW50cnkoc2l6ZV90IGFs
aWdubWVudCwgc2l6ZV90IHNpemUpOworICAgIElzb1RMU0VudHJ5KHNpemVfdCBzaXplKTsKICAg
ICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElzb1RMUzsKQEAgLTg2LDE1ICs4NiwxNCBA
QCBjbGFzcyBCRVhQT1JUIElzb1RMU0VudHJ5IHsKIAogICAgIElzb1RMU0VudHJ5KiBtX25leHQg
eyBudWxscHRyIH07CiAgICAgCi0gICAgc2l6ZV90IG1fb2Zmc2V0OyAvLyBDb21wdXRlZCBpbiBj
b25zdHJ1Y3Rvci4KLSAgICBzaXplX3QgbV9hbGlnbm1lbnQ7Ci0gICAgc2l6ZV90IG1fc2l6ZTsK
KyAgICB1bnNpZ25lZCBtX29mZnNldCB7IFVJTlRfTUFYIH07IC8vIENvbXB1dGVkIGluIGNvbnN0
cnVjdG9yLgorICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVu
dHJ5VHlwZT4KIGNsYXNzIERlZmF1bHRJc29UTFNFbnRyeSA6IHB1YmxpYyBJc29UTFNFbnRyeSB7
CiBwdWJsaWM6Ci0gICAgfkRlZmF1bHRJc29UTFNFbnRyeSgpOworICAgIH5EZWZhdWx0SXNvVExT
RW50cnkoKSA9IGRlZmF1bHQ7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgRGVmYXVsdElzb1RMU0Vu
dHJ5KCk7CkBAIC0xMDYsOCArMTA1LDYgQEAgY2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDogcHVi
bGljIElzb1RMU0VudHJ5IHsKICAgICAvLyBMaWtld2lzZSwgdGhpcyBpcyBzZXBhcmF0ZSBmcm9t
IHNjYXZlbmdpbmcuIFdoZW4gdGhlIFRMUyBpcyBzaHV0dGluZyBkb3duLCB3ZSB3aWxsIGJlIGFz
a2VkIHRvCiAgICAgLy8gc2NhdmVuZ2UgYW5kIHRoZW4gd2Ugd2lsbCBiZSBhc2tlZCB0byBkZXN0
cnVjdC4KICAgICB2b2lkIGRlc3RydWN0KHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKLQotICAgIHZv
aWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlu
bGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnlJbmxpbmVzLmgKaW5k
ZXggNmY2MTVmOTUwY2RiZjBhYTA2MzEzNTkxZDM4M2M4YzI0YzI4ZjNiMy4uYzJhNzI3ZTBmMzVm
NmFjNDMwMWNiM2FhNDllZGJhOTVjZjEwYTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0VudHJ5SW5saW5lcy5oCkBAIC00MywxMyArNDMsMTAgQEAgdm9pZCBJc29UTFNFbnRy
eTo6d2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExTRW50cnkqIGxhc3QsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KIERlZmF1bHRJc29UTFNFbnRyeTxFbnRy
eVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkoKQotICAgIDogSXNvVExTRW50cnkoYWxpZ25vZihF
bnRyeVR5cGUpLCBzaXplb2YoRW50cnlUeXBlKSkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RW50cnlUeXBlPgotRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46On5EZWZhdWx0SXNvVExT
RW50cnkoKQorICAgIDogSXNvVExTRW50cnkoc2l6ZW9mKEVudHJ5VHlwZSkpCiB7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoRW50cnlUeXBlKSA8PSBVSU5UMzJfTUFYKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZih2b2lkKikgPT0gYWxpZ25vZihFbnRyeVR5cGUpLCAiQmVjYXVzZSBJc29U
TFNFbnRyeSBpbmNsdWRlcyB2dGFibGUsIGl0IHNob3VsZCBiZSB0aGUgc2FtZSB0byB0aGUgcG9p
bnRlciIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5cGU+CkBAIC02NywxMiArNjQs
NSBAQCB2b2lkIERlZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5cGU+OjpkZXN0cnVjdCh2b2lkKiBw
YXNzZWRFbnRyeSkKICAgICBlbnRyeS0+fkVudHJ5VHlwZSgpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBFbnRyeVR5cGU+Ci12b2lkIERlZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5cGU+OjpzY2F2
ZW5nZSh2b2lkKiBwYXNzZWRFbnRyeSkKLXsKLSAgICBFbnRyeVR5cGUqIGVudHJ5ID0gc3RhdGlj
X2Nhc3Q8RW50cnlUeXBlKj4ocGFzc2VkRW50cnkpOwotICAgIGVudHJ5LT5zY2F2ZW5nZSgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvVExTSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJ
bmxpbmVzLmgKaW5kZXggMWVhYjI3MWM0MGNhNzlhM2RkZWZmYmZkMjVlMGU3NDg2OGE0ZDMxOS4u
MGQ0YjIwMTk0ZTBjZGVkMjA4OGM5ZTc0YzcyODc0ODY0NWEzNDFmMSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNJbmxpbmVzLmgKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBJc29UTFM6OnNj
YXZlbmdlKGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlKQogICAgICAgICByZXR1cm47CiAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gaGFuZGxlLmFsbG9jYXRvck9mZnNldCgpOwogICAgIGlmIChvZmZz
ZXQgPCB0bHMtPm1fZXh0ZW50KQotICAgICAgICByZWludGVycHJldF9jYXN0PElzb0FsbG9jYXRv
cjx0eXBlbmFtZSBhcGk6Oklzb0hlYXA8VHlwZT46OkNvbmZpZz4qPih0bHMtPm1fZGF0YSArIG9m
ZnNldCktPnNjYXZlbmdlKCk7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9y
PHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmlnPio+KHRscy0+bV9kYXRhICsgb2Zm
c2V0KS0+c2NhdmVuZ2UoaGFuZGxlLmltcGwoKSk7CiAgICAgb2Zmc2V0ID0gaGFuZGxlLmRlYWxs
b2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYgKG9mZnNldCA8IHRscy0+bV9leHRlbnQpCiAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGVhbGxvY2F0b3I8dHlwZW5hbWUgYXBpOjpJc29IZWFwPFR5
cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQpLT5zY2F2ZW5nZSgpOwpAQCAtNzQs
MTMgKzc0LDEzIEBAIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVJbXBsKGFwaTo6SXNvSGVhcDxUeXBl
PiYgaGFuZGxlLCBib29sIGFib3J0T25GYWlsdXJlKQogICAgIElzb1RMUyogdGxzID0gZ2V0KCk7
CiAgICAgaWYgKCF0bHMgfHwgb2Zmc2V0ID49IHRscy0+bV9leHRlbnQpCiAgICAgICAgIHJldHVy
biBhbGxvY2F0ZVNsb3c8Q29uZmlnPihoYW5kbGUsIGFib3J0T25GYWlsdXJlKTsKLSAgICByZXR1
cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihvZmZzZXQsIGFib3J0T25GYWlsdXJlKTsKKyAg
ICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUsIG9mZnNldCwgYWJvcnRP
bkZhaWx1cmUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkKiBJc29UTFM6
OmFsbG9jYXRlRmFzdCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+Cit2b2lkKiBJc29UTFM6OmFsbG9j
YXRlRmFzdChhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwgdW5zaWduZWQgb2Zmc2V0LCBib29s
IGFib3J0T25GYWlsdXJlKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElzb0FsbG9j
YXRvcjxDb25maWc+Kj4obV9kYXRhICsgb2Zmc2V0KS0+YWxsb2NhdGUoYWJvcnRPbkZhaWx1cmUp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElzb0FsbG9jYXRvcjxDb25maWc+Kj4obV9k
YXRhICsgb2Zmc2V0KS0+YWxsb2NhdGUoaGFuZGxlLmltcGwoKSwgYWJvcnRPbkZhaWx1cmUpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CkBAIC0xMDgsNyAr
MTA4LDcgQEAgQk5PX0lOTElORSB2b2lkKiBJc29UTFM6OmFsbG9jYXRlU2xvdyhhcGk6Oklzb0hl
YXA8VHlwZT4mIGhhbmRsZSwgYm9vbCBhYm9ydE9uRmEKICAgICAKICAgICBJc29UTFMqIHRscyA9
IGVuc3VyZUhlYXBBbmRFbnRyaWVzKGhhbmRsZSk7CiAgICAgCi0gICAgcmV0dXJuIHRscy0+YWxs
b2NhdGVGYXN0PENvbmZpZz4oaGFuZGxlLmFsbG9jYXRvck9mZnNldCgpLCBhYm9ydE9uRmFpbHVy
ZSk7CisgICAgcmV0dXJuIHRscy0+YWxsb2NhdGVGYXN0PENvbmZpZz4oaGFuZGxlLCBoYW5kbGUu
YWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25GYWlsdXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNMYXlvdXQuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlv
dXQuY3BwCmluZGV4IDRiMzM1ZWE1MTlkNDVlOGYxNmIyYThkOTA5ZTEzMDQ2MTlkNTc0ODQuLjBi
YWU2MDc3MDFlNDkwYzdhZTJhOWY0MGU3ZTkxN2NlY2ZiMTczMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0xheW91dC5jcHAKQEAgLTQ0LDcgKzQ0LDkgQEAgdm9pZCBJc29UTFNMYXlv
dXQ6OmFkZChJc29UTFNFbnRyeSogZW50cnkpCiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBs
b2NraW5nKGFkZGluZ011dGV4KTsKICAgICBpZiAobV9oZWFkKSB7CiAgICAgICAgIFJFTEVBU0Vf
QkFTU0VSVChtX3RhaWwpOwotICAgICAgICBlbnRyeS0+bV9vZmZzZXQgPSByb3VuZFVwVG9NdWx0
aXBsZU9mKGVudHJ5LT5hbGlnbm1lbnQoKSwgbV90YWlsLT5leHRlbnQoKSk7CisgICAgICAgIHNp
emVfdCBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGVudHJ5LT5hbGlnbm1lbnQoKSwgbV90
YWlsLT5leHRlbnQoKSk7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChvZmZzZXQgPCBVSU5UX01B
WCk7CisgICAgICAgIGVudHJ5LT5tX29mZnNldCA9IG9mZnNldDsKICAgICAgICAgc3RkOjphdG9t
aWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpOwogICAgICAgICBtX3Rh
aWwtPm1fbmV4dCA9IGVudHJ5OwogICAgICAgICBtX3RhaWwgPSBlbnRyeTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1BhY2tlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNGM0ZWQ3YmViZGNhODZlNzFkODNjMjIyZTZkYzFjYWEw
NGQwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhY2tlZC5o
CkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsZ29yaXRobS5oIgorI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGFycmF5PgorCituYW1lc3BhY2UgYm1h
bGxvYyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBQYWNrZWQgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUgPSB0cnVlOworCisgICAgUGFj
a2VkKCkKKyAgICAgICAgOiBQYWNrZWQoVCB7IH0pCisgICAgeworICAgIH0KKworICAgIFBhY2tl
ZChjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgp
LCAmdmFsdWUsIHNpemVvZihUKSk7CisgICAgfQorCisgICAgVCBnZXQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgbWVtY3B5KCZ2YWx1ZSwgbV9zdG9yYWdlLmRhdGEo
KSwgc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHZvaWQg
c2V0KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRh
KCksICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBQYWNrZWQ8VD4mIG9wZXJhdG9y
PShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldCh2YWx1ZSk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQgZXhjaGFu
Z2UoVSYmIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IGdldCgpOworICAg
ICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRW
YWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoUGFja2VkJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQ
YWNrZWRUeXBlPj4KKyAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQorICAgIHsKKyAgICAgICAg
VCB0MSA9IGdldCgpOworICAgICAgICBUIHQyID0gb3RoZXIuZ2V0KCk7CisgICAgICAgIHNldCh0
Mik7CisgICAgICAgIG90aGVyLnNldCh0MSk7CisgICAgfQorCisgICAgdm9pZCBzd2FwKFQmIHQy
KQorICAgIHsKKyAgICAgICAgVCB0MSA9IGdldCgpOworICAgICAgICBzdGQ6OnN3YXAodDEsIHQy
KTsKKyAgICAgICAgc2V0KHQxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTx1
aW50OF90LCBzaXplb2YoVCk+IG1fc3RvcmFnZTsKK307CisKKy8vIFBhY2tlZEFsaWduZWRQdHIg
Y2FuIHRha2UgYWxpZ25tZW50IHBhcmFtZXRlciB0b28uIFBhY2tlZEFsaWduZWRQdHIgb25seSB1
c2VzIHRoaXMgYWxpZ25tZW50IGluZm9ybWF0aW9uIGlmIGl0IGlzIHByb2ZpdGFibGU6IHdlIHVz
ZQorLy8gYWxpZ25tZW50IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBjYW4gcmVkdWNlIHRoZSBz
aXplIG9mIHRoZSBzdG9yYWdlLiBTaW5jZSB0aGUgcG9pbnRlciB3aWR0aCBpcyAzNiBiaXRzIGFu
ZCBKU0NlbGxzIGFyZSBhbGlnbmVkIHRvIDE2IGJ5dGVzLAorLy8gd2UgY2FuIHVzZSA0IGJpdHMg
aW4gRGFyd2luIEFSTTY0LCB3ZSBjYW4gY29tcGFjdCBjZWxsIHBvaW50ZXIgaW50byA0IGJ5dGVz
ICgzMiBiaXRzKS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBhbGlnbm1lbnQgPSBhbGln
bm9mKFQpPgorY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fz
c2VydChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSwgIkFsaWdubWVudCBuZWVkcyB0byBiZSBwb3dl
ci1vZi10d28iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYWNrZWRUeXBlID0gdHJ1
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFsaWdubWVudFNoaWZ0U2l6ZUlmUHJv
Zml0YWJsZSA9IGdldExTQlNldE5vblplcm9Db25zdGV4cHIoYWxpZ25tZW50KTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXplV2l0aG91dEFsaWdubWVudFNoaWZ0ID0g
cm91bmRVcFRvTXVsdGlwbGVPZjw4LCB1aW50cHRyX3Q+KEJPU19FRkZFQ1RJVkVfQUREUkVTU19X
SURUSCkgLyA4OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemVXaXRo
QWxpZ25tZW50U2hpZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDgsIHVpbnRwdHJfdD4oQk9TX0VG
RkVDVElWRV9BRERSRVNTX1dJRFRIIC0gYWxpZ25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxlKSAv
IDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxl
ID0gc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hpZnQgPiBzdG9yYWdlU2l6ZVdpdGhBbGln
bm1lbnRTaGlmdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFsaWdubWVudFNoaWZ0
U2l6ZSA9IGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlID8gYWxpZ25tZW50U2hpZnRTaXplSWZQ
cm9maXRhYmxlIDogMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXpl
ID0gc3RvcmFnZVNpemVXaXRoQWxpZ25tZW50U2hpZnQ7CisKKyAgICBjb25zdGV4cHIgUGFja2Vk
QWxpZ25lZFB0cigpCisgICAgICAgIDogbV9zdG9yYWdlKCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3RleHByIFBhY2tlZEFsaWduZWRQdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIDogbV9z
dG9yYWdlKCkKKyAgICB7CisgICAgfQorCisgICAgUGFja2VkQWxpZ25lZFB0cihUKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHNldCh2YWx1ZSk7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBQYWNrZWRQdHI8PiBjYW4gbG9hZCBtZW1vcnkgd2l0
aCBvbmUgbW92IGJ5IGNoZWNraW5nIHBhZ2UgYm91bmRhcnkuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc3NTQKKyAgICAgICAgdWludHB0cl90
IHZhbHVlID0gMDsKKyNpZiBCQ1BVKExJVFRMRV9FTkRJQU4pCisgICAgICAgIG1lbWNweSgmdmFs
dWUsIG1fc3RvcmFnZS5kYXRhKCksIHN0b3JhZ2VTaXplKTsKKyNlbHNlCisgICAgICAgIG1lbWNw
eShiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSkgKyAoc2l6ZW9mKHZvaWQqKSAtIHN0b3Jh
Z2VTaXplKSwgbV9zdG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNpemUpOworI2VuZGlmCisgICAgICAg
IGlmIChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkKKyAgICAgICAgICAgIHZhbHVlIDw8PSBh
bGlnbm1lbnRTaGlmdFNpemU7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldChUKiBwYXNzZWRWYWx1ZSkKKyAgICB7CisgICAgICAg
IHVpbnRwdHJfdCB2YWx1ZSA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBhc3NlZFZhbHVlKTsK
KyAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQorICAgICAgICAgICAgdmFs
dWUgPj49IGFsaWdubWVudFNoaWZ0U2l6ZTsKKyNpZiBCQ1BVKExJVFRMRV9FTkRJQU4pCisgICAg
ICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgpLCAmdmFsdWUsIHN0b3JhZ2VTaXplKTsKKyNlbHNl
CisgICAgICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgpLCBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KCZ2YWx1ZSkgKyAoc2l6ZW9mKHZvaWQqKSAtIHN0b3JhZ2VTaXplKSwgc3RvcmFnZVNpemUpOwor
I2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBzZXQobnVs
bHB0cik7CisgICAgfQorCisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
OyB9CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIC8vIFRoaXMgY29u
dmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBu
b3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIChQYWNrZWRBbGlnbmVk
UHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gJlBhY2tlZEFsaWduZWRQdHI6Om1fc3RvcmFn
ZSA6IG51bGxwdHI7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gZ2V0KCk7IH0KKworICAgIFBhY2tlZEFsaWduZWRQdHImIG9wZXJhdG9yPShUKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHNldCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQqIGV4Y2hhbmdlKFUmJiBuZXdWYWx1ZSkK
KyAgICB7CisgICAgICAgIFQqIG9sZFZhbHVlID0gZ2V0KCk7CisgICAgICAgIHNldChzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgIH0KKwor
ICAgIHZvaWQgc3dhcChzdGQ6Om51bGxwdHJfdCkgeyBjbGVhcigpOyB9CisKKyAgICB2b2lkIHN3
YXAoUGFja2VkQWxpZ25lZFB0ciYgb3RoZXIpCisgICAgeworICAgICAgICBtX3N0b3JhZ2Uuc3dh
cChvdGhlci5tX3N0b3JhZ2UpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVy
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUGFja2VkVHlwZT4+CisgICAg
dm9pZCBzd2FwKE90aGVyJiBvdGhlcikKKyAgICB7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7Cisg
ICAgICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7CisgICAgICAgIHNldCh0Mik7CisgICAgICAgIG90
aGVyLnNldCh0MSk7CisgICAgfQorCisgICAgdm9pZCBzd2FwKFQqIHQyKQorICAgIHsKKyAgICAg
ICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIHNl
dCh0MSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgc3RvcmFn
ZVNpemU+IG1fc3RvcmFnZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBQYWNr
ZWQ8VCo+IDogcHVibGljIFBhY2tlZEFsaWduZWRQdHI8VCwgMT4geworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBQYWNrZWRBbGlnbmVkUHRyPFQsIDE+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgUGFja2VkUHRyID0gUGFja2VkPFQq
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBQYWNrZWRQdHJUcmFpdHMgeworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IHVzaW5nIFJlYmluZFRyYWl0cyA9IFBhY2tlZFB0clRyYWl0
czxVPjsKKworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUGFja2VkUHRyPFQ+OworCisgICAgdGVt
cGxhdGU8Y2xhc3MgVT4gc3RhdGljIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIsIFUmJiBu
ZXdWYWx1ZSkgeyByZXR1cm4gcHRyLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXI+IHN0YXRpYyB2b2lkIHN3YXAoUGFja2VkUHRyPFQ+JiBhLCBPdGhl
ciYgYikgeyBhLnN3YXAoYik7IH0KKworICAgIHN0YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFn
ZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKaW5kZXggZWIxNWIzMWYxMzU4
ZDJhYWJjNzQyOWYyNmQzNWIzZjc5NTkwODJjOC4uNjBmMDY3NmJmMzA2YTYyZmJjMjIyYmE3M2My
YjAzNWE5YzFkYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5n
ZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5oIgogI2luY2x1ZGUgIkVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIklzb0hlYXBJbXBsSW5saW5lcy5o
IgogI2lmIEJPUyhEQVJXSU4pCiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9y
dCA8bWFjaC9ob3N0X2luZm8uaD4KQEAgLTY3LDcgKzY4LDcgQEAgc3RydWN0IFByaW50VGltZSB7
CiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShTY2F2ZW5nZXIpOwogCi1TY2F2
ZW5nZXI6OlNjYXZlbmdlcihzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK1NjYXZlbmdlcjo6U2Nh
dmVuZ2VyKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIEJBU1NFUlQoIUVu
dmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TY2F2ZW5nZXIuaAppbmRleCBmNDg5MzRiNTExYjZlNmMxOGQ4OTZkNWQ1OTM0MTU5YmY1M2U5
OTBjLi43MjhhNzVlM2JkZmRhMTk2OWNhMDU4NTBlNjUxOWUyNDA5MjhiNGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5oCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2NhdmVuZ2VyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCiBjbGFzcyBTY2F2ZW5nZXIgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxTY2F2ZW5nZXI+
IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIFNjYXZlbmdlcihzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgQkVYUE9SVCBTY2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
OwogICAgIAogICAgIH5TY2F2ZW5nZXIoKSA9IGRlbGV0ZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Vk1IZWFwLmNwcAppbmRleCA1YzhlMjhhMDUwOTMxYTE0NTNiMmUzYTk5MmNmMmY4Mjk1ZWM5ZmVm
Li5hZGYyMTY3MWViZDg3YTlmZDY1NzhhNDVjYTYxNjAwMmY1Yzc1N2FkIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
REVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKFZNSGVhcCk7CiAKLVZNSGVhcDo6Vk1I
ZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorVk1IZWFwOjpWTUhlYXAoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvVk1IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCmluZGV4IDQ3
YTExM2RiZjI3MzY0MTE0MTI4OGFiNmM0ZTUwNWVhZTViYjVjMTEuLjY4ZjBhYmU2YWQ1OWEwZTQ5
OGE0MDliYzE1MDhjYzkwNWYxZTA3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvVk1IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaApAQCAtNDcs
NyArNDcsNyBAQCB0eXBlZGVmIGVudW0geyBTeW5jLCBBc3luYyB9IFNjYXZlbmdlTW9kZTsKIAog
Y2xhc3MgVk1IZWFwIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8Vk1IZWFwPiB7CiBwdWJsaWM6
Ci0gICAgVk1IZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBWTUhlYXAoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIExhcmdlUmFuZ2UgdHJ5QWxsb2Nh
dGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Wm9uZS5jcHAKaW5kZXggZjExYjUxN2QyZjU3YjVjZGQxN2I0YmI1YWFjNjBhYmVmOTllNzU0Mi4u
MGJiODI5NjkyYWM3ODIwMjIyMDUyNjUzMDAzODlmY2I2OTQ2YzkxZiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1pvbmUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGNvbnN0IG1hbGxvY19pbnRyb3Nw
ZWN0aW9uX3Qgem9uZUludHJvc3BlY3QgPSB7CiAgICAgLnN0YXRpc3RpY3MgPSBibWFsbG9jOjpz
dGF0aXN0aWNzCiB9OwogCi1ab25lOjpab25lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorWm9u
ZTo6Wm9uZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICBtYWxsb2Nfem9u
ZV90OjpzaXplID0gJmJtYWxsb2M6OnpvbmVTaXplOwogICAgIG1hbGxvY196b25lX3Q6OnpvbmVf
bmFtZSA9ICJXZWJLaXQgTWFsbG9jIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvWm9uZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmgKaW5kZXggMDA5ZDcyMjdm
MjM4NzdlZjFlYTY4MmMwMjgyY2Q2ZWZhZjhlNmQ1Ny4uZjVkNjQ5NWE0MWUyZWNjMGNlZGUxYzUz
NWU1MzIxNTRjMDAzNWQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25l
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgWm9uZSA6IHB1YmxpYyBtYWxsb2Nfem9uZV90IHsKICAgICAvLyBFbm91Z2ggY2FwYWNp
dHkgdG8gdHJhY2sgYSA2NEdCIGhlYXAsIHNvIHByb2JhYmx5IGVub3VnaCBmb3IgYW55dGhpbmcu
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgY2FwYWNpdHkgPSAyMDQ4OwogCi0gICAgWm9u
ZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgWm9uZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+Jik7CiAgICAgWm9uZSh0YXNrX3QsIG1lbW9yeV9yZWFkZXJfdCwgdm1fYWRkcmVz
c190KTsKIAogICAgIHZvaWQgYWRkUmFuZ2UoUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDczYWY4NWMzM2U1ZTVjYWE3ZmVmMzQxMjRk
YzZhOWFkMTk2ZmZmOWUuLjVlMjdjMWY1ODVhZTJiOTUzZDllZjEyN2E4YmE1MzE4ZWQ5YjBjMDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtibWFsbG9jXSBJc29IZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUg
c21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcDoKKyAgICAgICAgKGFz
c2VydEhhc09iamVjdHMpOgorICAgICAgICAoYXNzZXJ0SGFzT25seU9iamVjdHMpOgorICAgICAg
ICAoYXNzZXJ0Q2xlYW4pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDEtMTQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNTQ0ODAsIHIyNTQ0OTYsIGFuZCByMjU0NTE3LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKaW5kZXggNDI2M2YxMWIz
NjBjZTBiYzJmZDYwNTg1MjY2NjcyNGMwODg0MWU4MS4uNDZkYTU5ZTY2YTc4NDdiZTYzOTJhYWQ1
M2M1YmJlYjI5ODFhMmZiZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvYm1hbGxvYy9Jc29IZWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9ibWFsbG9jL0lzb0hlYXAuY3BwCkBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy
dEhhc09iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2lu
dGVycykKICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICBpbXBsLmZvckVhY2hMaXZl
T2JqZWN0KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9pZCogb2JqZWN0KSB7CiAg
ICAgICAgICAgICBwb2ludGVycy5lcmFzZShvYmplY3QpOwogICAgICAgICB9KTsKQEAgLTk2LDYg
Kzk3LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT25seU9iamVjdHMoSXNvSGVhcDxoZWFwVHlw
ZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGUKICAgICBhdXRvJiBpbXBsID0gaGVhcC5p
bXBsKCk7CiAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5s
b2NrKTsKICAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBsb2NrZXIsCiAgICAg
ICAgIFsmXSAodm9pZCogb2JqZWN0KSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocG9pbnRlcnMu
ZXJhc2Uob2JqZWN0KSwgMVUpOwogICAgICAgICB9KTsKQEAgLTEwOCwxNSArMTEwLDExIEBAIHN0
YXRpYyB2b2lkIGFzc2VydENsZWFuKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwKQogICAgIHNjYXZl
bmdlVGhpc1RocmVhZCgpOwogICAgIGlmICghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVh
cEVuYWJsZWQoKSkgewogICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGlt
cGwubG9jayk7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC5udW1MaXZlT2JqZWN0cygp
KTsKLSAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC5udW1MaXZlT2JqZWN0cygp
KTsKICAgICB9CiAgICAgaGVhcC5zY2F2ZW5nZSgpOwogICAgIGlmICghRW52aXJvbm1lbnQ6Omdl
dCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewogICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5p
bXBsKCk7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGlt
cGwubG9jayk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkp
OwogICAgIH0KIH0KQEAgLTE4NywxOSArMTg1LDEyIEBAIFRFU1QoYm1hbGxvYywgSXNvRmxpcEZs
b3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlKQogICAgICAgICBwdHJzW2ldID0gbnVs
bHB0cjsKICAgICB9CiAgICAgaGVhcC5zY2F2ZW5nZSgpOwotICAgIHVuc2lnbmVkIG51bUNvbW1p
dHRlZFBhZ2VzQmVmb3JlOwogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGltcGwubG9jayk7
Ci0gICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdl
cygpOwotICAgIH0KKyAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwu
bnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0
cnNldChwdHJzKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07
KQogICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOwotICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAg
ICAgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlLCBpbXBsLm51bUNvbW1pdHRl
ZFBhZ2VzKCkpOwotICAgIH0KKyAgICBFWFBFQ1RfRVEobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUs
IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQog
ICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKICAgICBhc3NlcnRDbGVhbihoZWFwKTsKQEAg
LTIyMiwxNyArMjEzLDExIEBAIFRFU1QoYm1hbGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFn
ZXNTY2F2ZW5nZUluTWlkZGxlMjg4KQogICAgIGhlYXAuc2NhdmVuZ2UoKTsKICAgICB1bnNpZ25l
ZCBudW1Db21taXR0ZWRQYWdlc0JlZm9yZTsKICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7
Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihp
bXBsLmxvY2spOwotICAgICAgICBudW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29t
bWl0dGVkUGFnZXMoKTsKLSAgICB9CisgICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZv
cmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgYXNzZXJ0SGFzT25seU9iamVjdHMo
aGVhcCwgdG9wdHJzZXQocHRycykpOwogICAgIGZvciAodW5zaWduZWQgaSA9IHB0cnMuc2l6ZSgp
IC8gMjsgaS0tOykKICAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGltcGwu
bG9jayk7Ci0gICAgICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5u
dW1Db21taXR0ZWRQYWdlcygpKTsKLSAgICB9CisgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRlZFBh
Z2VzQmVmb3JlLCBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwogICAgIGZvciAodm9pZCogcHRy
IDogcHRycykKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CiAgICAgYXNzZXJ0Q2xlYW4o
aGVhcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387765</attachid>
            <date>2020-01-15 01:44:17 -0800</date>
            <delta_ts>2020-01-15 01:58:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115014416.patch</filename>
            <type>text/plain</type>
            <size>86097</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uN2ZmMGY0Mjk1MzdmMTVlZWRlNzNiYWI2ZTNmNDBm
NDg1YzBlMDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlu
bGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6ZnJlZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAq
IGJtYWxsb2MvSXNvU2hhcmVkSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVh
cDo6SXNvU2hhcmVkSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5l
cy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpmcmVlKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBi
bWFsbG9jL0lzb1RMUy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnku
aDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRW50cnkuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRW50cnk6Oklz
b1RMU0VudHJ5KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5Lmg6CisgICAgICAgICog
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlZmF1bHRJ
c29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkpOgorICAgICAgICAoYm1h
bGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkp
OiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OnNjYXZlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvVExTOjphbGxvY2F0ZUltcGwpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxv
Y2F0ZUZhc3QpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZVNsb3cpOgorICAg
ICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RM
U0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFsbG9jL1BhY2tlZC5oOiBBZGRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6OlBhY2tlZDo6UGFja2VkKToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6c2V0KToKKyAgICAgICAgKGJt
YWxsb2M6OlBhY2tlZDo6b3BlcmF0b3I9KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6ZXhj
aGFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzd2FwKToKKyAgICAgICAgKGJtYWxs
b2M6OmFsaWdub2YpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjpleGNoYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OnN3YXApOgorICAgICAgICAo
Ym1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjp1bndyYXApOgorICAgICAgICAqIGJtYWxsb2MvU2Nh
dmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAg
ICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5jcHA6CisgICAgICAgIChibWFsbG9j
Ojpab25lOjpab25lKToKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuaDoKKwogMjAyMC0wMS0xNCAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxs
b2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9yIHNwZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBj
b21waWxlIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggMzBkYmMzNDViNDkyNWZlMTFmNmYz
ZDY3NzRlMmNmOTdmY2Q2ZDVlMy4uNmM2YjdhNTA1ZjlmMTBjN2VhYWI1ZTdhMzQ3OTI2NWQxMmU3
OGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTExMiw2ICsxMTIsNyBAQCBzZXQoYm1hbGxv
Y19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxsb2MvTXV0ZXguaAogICAgIGJtYWxsb2MvT2JqZWN0
LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaAorICAgIGJtYWxsb2MvUGFja2VkLmgKICAgICBi
bWFsbG9jL1BlckhlYXBLaW5kLmgKICAgICBibWFsbG9jL1BlclByb2Nlc3MuaAogICAgIGJtYWxs
b2MvUGVyVGhyZWFkLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiMTczYTk3ZGM4NTg5M2U3ZmJhOTBlNjI3YTg5NjNkYTY2MWNi
YTUxLi4zYjg1ZTc3ZmZiODNhNTQwZTY4ZjQzMzNmNjc1MmFlYjgzZWRlODIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAs
NiArMTQwLDcgQEAKIAkJQUQxNEFEMkEyMDI1MjlDNzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMTRBRDI4
MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gKi87IH07CiAJCURFOEIxM0IzMjFD
QzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMUU3NDgw
MjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyog
U3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjhEODRDMjNDRUIzODkw
MDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0E0MTNDOTIyNjA2MTE0MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRjI0NDAyMjI1RDJD
MDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVk
UGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzRjI0NDA0MjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAzMjI1RDJDNzYwMEEw
RTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTI5NSw2ICsyOTYsNyBAQAogCQlB
RDE0QUQyODIwMjUyOUIwMDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvY2Vzc0NoZWNrLm1tOyBwYXRoID0gYm1hbGxv
Yy9Qcm9jZXNzQ2hlY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFOEIxM0Iy
MjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJWTVRhZ3MuaDsg
cGF0aCA9IGJtYWxsb2MvQlZNVGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTdGF0aWNQZXJQcm9jZXNzLmg7IHBhdGggPSBibWFsbG9j
L1N0YXRpY1BlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyOEQ4
NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQYWNrZWQuaDsgcGF0aCA9IGJtYWxsb2MvUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdl
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdl
SW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hh
cmVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdl
Lmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSXNvU2hhcmVkUGFnZS5jcHA7IHBh
dGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTMyLDYgKzUzNCw3IEBACiAJCQkJMTRDODk5MkExQ0M0ODVFNzAwMjdBMDU3IC8qIE1h
cC5oICovLAogCQkJCTE0M0NCODFBMTkwMjJCQzkwMEIxNkE0NSAvKiBNdXRleC5jcHAgKi8sCiAJ
CQkJMTQzQ0I4MUIxOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmggKi8sCisJCQkJRTMyOEQ4NEMy
M0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovLAogCQkJCTBGNUJGMTQ4MUYyMkE4RDgwMDI5
RDkxRCAvKiBQZXJIZWFwS2luZC5oICovLAogCQkJCTBGMjZBN0E0MjA1NDgzMEQwMDkwQTE0MSAv
KiBQZXJQcm9jZXNzLmNwcCAqLywKIAkJCQkxNDQ0NkEwNzE3QTYxRkE0MDBGOUVBMUQgLyogUGVy
UHJvY2Vzcy5oICovLApAQCAtNjQ4LDYgKzY1MSw3IEBACiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAw
QjE2QTQ1IC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRCRTExRjFDQTM0NjUyMDA5
OUM4QzAgLyogT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MzE4RjQ4RDBGMDA5
NTA3MDIgLyogT2JqZWN0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOEQ4NEQyM0NFQjM4
OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNDkxRjIyQThE
ODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQjE4
RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4
Q0MxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9BbGdvcml0aG0uaAppbmRleCA5MGEyNTVhZGI3ZTcxMjJmOTBhZGM2MmFlMDYzZDUw
NTYwMzI4YjcyLi5kMjJmM2NlMDU0NDk1ZDAyYzBjNTQ5MzNkZDE4YTcxZjg3MDcwMGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkJBc3NlcnQuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2xpbWl0cz4KICNp
bmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8bGltaXRzPgpA
QCAtMTkzLDYgKzE5NCwzMSBAQCBib29sIGZpbmRCaXRJbldvcmQoVCB3b3JkLCBzaXplX3QmIGlu
ZGV4LCBzaXplX3QgZW5kSW5kZXgsIGJvb2wgdmFsdWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciB1bnNpZ25lZCBjdHpDb25zdGV4cHIo
VCB2YWx1ZSkKK3sKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAq
IENIQVJfQklUOworCisgICAgdXNpbmcgVVQgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8
VD46OnR5cGU7CisgICAgVVQgdVZhbHVlID0gdmFsdWU7CisKKyAgICB1bnNpZ25lZCB6ZXJvQ291
bnQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiaXRTaXplOyBpKyspIHsKKyAg
ICAgICAgaWYgKHVWYWx1ZSAmIDEpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB6ZXJv
Q291bnQrKzsKKyAgICAgICAgdVZhbHVlID4+PSAxOworICAgIH0KKyAgICByZXR1cm4gemVyb0Nv
dW50OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIHVuc2lnbmVkIGdldExT
QlNldE5vblplcm9Db25zdGV4cHIoVCB0KQoreworICAgIHJldHVybiBjdHpDb25zdGV4cHIodCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaAppbmRleCBhZmU5ZTIwMzQ5ZmJhMDE3OTIyMDAxNzc2
YmI3ZDJjZDIzNTIzMjE3Li5kNzg0Y2YxYmVkMGYyNWViNmY4MDE3Y2E2NjUxZmE0NTYxODBkZThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKQEAgLTIzMCw2ICsyMzAsNDUgQEAKIAog
I2VuZGlmIC8qIEFSTSAqLwogCisKKyNpZiBCQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisvKiBf
X0xQNjRfXyBpcyBub3QgZGVmaW5lZCBvbiA2NGJpdCBXaW5kb3dzIHNpbmNlIGl0IHVzZXMgTExQ
NjQuIFVzaW5nIF9fU0laRU9GX1BPSU5URVJfXyBpcyBzaW1wbGVyLiAqLworI2lmIF9fU0laRU9G
X1BPSU5URVJfXyA9PSA4CisjZGVmaW5lIEJDUFVfQUREUkVTUzY0IDEKKyNlbGlmIF9fU0laRU9G
X1BPSU5URVJfXyA9PSA0CisjZGVmaW5lIEJDUFVfQUREUkVTUzMyIDEKKyNlbHNlCisjZXJyb3Ig
IlVuc3VwcG9ydGVkIHBvaW50ZXIgd2lkdGgiCisjZW5kaWYKKyNlbHNlCisjZXJyb3IgIlVuc3Vw
cG9ydGVkIGNvbXBpbGVyIGZvciBibWFsbG9jIgorI2VuZGlmCisKKyNpZiBCQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCisjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18K
KyNkZWZpbmUgQkNQVV9CSUdfRU5ESUFOIDEKKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9fT1JE
RVJfTElUVExFX0VORElBTl9fCisjZGVmaW5lIEJDUFVfTElUVExFX0VORElBTiAxCisjZWxpZiBf
X0JZVEVfT1JERVJfXyA9PSBfX09SREVSX1BEUF9FTkRJQU5fXworI2RlZmluZSBCQ1BVX01JRERM
RV9FTkRJQU4gMQorI2Vsc2UKKyNlcnJvciAiVW5rbm93biBlbmRpYW4iCisjZW5kaWYKKyNlbHNl
CisjZXJyb3IgIlVuc3VwcG9ydGVkIGNvbXBpbGVyIGZvciBibWFsbG9jIgorI2VuZGlmCisKKyNp
ZiBCQ1BVKEFERFJFU1M2NCkKKyNpZiBCT1MoREFSV0lOKSAmJiBCQ1BVKEFSTTY0KQorI2RlZmlu
ZSBCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggMzYKKyNlbHNlCisvKiBXZSBzdHJvbmdseSBh
c3N1bWUgdGhhdCBlZmZlY3RpdmUgYWRkcmVzcyB3aWR0aCBpcyA8PSA0OCBpbiA2NGJpdCBhcmNo
aXRlY3R1cmVzIChlLmcuIE5hTiBib3hpbmcpLiAqLworI2RlZmluZSBCT1NfRUZGRUNUSVZFX0FE
RFJFU1NfV0lEVEggNDgKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgQk9TX0VGRkVDVElWRV9BRERS
RVNTX1dJRFRIIDMyCisjZW5kaWYKKwogI2RlZmluZSBCQVRUUklCVVRFX1BSSU5URihmb3JtYXRT
dHJpbmdBcmd1bWVudCwgZXh0cmFBcmd1bWVudHMpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o
cHJpbnRmLCBmb3JtYXRTdHJpbmdBcmd1bWVudCwgZXh0cmFBcmd1bWVudHMpKSkKIAogI2lmIEJQ
TEFURk9STShNQUMpIHx8IEJQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCmluZGV4IDdhNjY3YTdkZDZiNWU4MWNlNjQ3OTExZTg4ZmIxNjkxZTg0NmRm
MTkuLjJjOWY1YjQ1ODBhZDE0ZmM4NjBiMTZmZjVhNjk5YzZhMDNlZTM2NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgREVGSU5FX1NUQVRJQ19Q
RVJfUFJPQ0VTU19TVE9SQUdFKERlYnVnSGVhcCk7CiAKICNpZiBCT1MoREFSV0lOKQogCi1EZWJ1
Z0hlYXA6OkRlYnVnSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0RlYnVnSGVhcDo6RGVi
dWdIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIDogbV96b25lKG1hbGxv
Y19jcmVhdGVfem9uZSgwLCAwKSkKICAgICAsIG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewpA
QCAtODgsNyArODgsNyBAQCB2b2lkIERlYnVnSGVhcDo6ZHVtcCgpCiAKICNlbHNlCiAKLURlYnVn
SGVhcDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1
Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBtX3BhZ2VTaXplKHZt
UGFnZVNpemUoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVi
dWdIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCmluZGV4IDk1OGEy
MjA5MGE0MTQwN2NlNjA4YmRkNGExZmExMmI4ZmZiYTUxMGIuLjlkYjg1NTIzYmVlNzczYWYxOGEx
NmI5ODA1YjEwOTNiZTkxMWM2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVidWdIZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaApAQCAt
NDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAgICAgCiBjbGFzcyBEZWJ1Z0hlYXAg
OiBwcml2YXRlIFN0YXRpY1BlclByb2Nlc3M8RGVidWdIZWFwPiB7CiBwdWJsaWM6Ci0gICAgRGVi
dWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBEZWJ1Z0hlYXAoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIHZvaWQqIG1hbGxvYyhzaXplX3QsIEZh
aWx1cmVBY3Rpb24pOwogICAgIHZvaWQqIG1lbWFsaWduKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCwgRmFpbHVyZUFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
ZmVycmVkVHJpZ2dlci5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIu
aAppbmRleCBiMjc2YTJjMGUwNmUzYWY3MzcyMGI3YzdhY2Y3NDY0ZWY0ZDEzMGI3Li4yOWZiMTk3
NjllZGI5ZGRiMGI0YzFlNmQwNzZkZDVhNTkzNjUzNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VyLmgKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSXNvUGFnZVRyaWdnZXIuaCIKKyNpbmNsdWRlICJNdXRleC5oIgorI2luY2x1ZGUg
PG11dGV4PgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTM3LDEwICszOSwxMCBAQCBjbGFz
cyBEZWZlcnJlZFRyaWdnZXIgewogICAgIERlZmVycmVkVHJpZ2dlcigpIHsgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLSAgICB2b2lkIGRpZEJlY29tZShJc29QYWdlPENv
bmZpZz4mKTsKKyAgICB2b2lkIGRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgSXNvUGFnZTxDb25maWc+Jik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
PgotICAgIHZvaWQgaGFuZGxlRGVmZXJyYWwoSXNvUGFnZTxDb25maWc+Jik7CisgICAgdm9pZCBo
YW5kbGVEZWZlcnJhbChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25m
aWc+Jik7CiAgICAgCiBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNCZWVuRGVmZXJyZWQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJ
bmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMu
aAppbmRleCAwOWNmYzg1NzdmYWFmODEyYjFmY2Y5YTM0NDUzYjRjYmQwYmNkZTM2Li43MWVhNzI2
OGJiMWNmMmM3YWRiNGFlNjAzN2YzNjQyZmEwYzcyN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMuaApAQCAtMzIsMjIgKzMyLDIyIEBAIG5h
bWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8SXNvUGFnZVRyaWdnZXIgdHJpZ2dlcj4KIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+Ojpk
aWRCZWNvbWUoSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJp
Z2dlcj46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElz
b1BhZ2U8Q29uZmlnPiYgcGFnZSkKIHsKICAgICBpZiAocGFnZS5pc0luVXNlRm9yQWxsb2NhdGlv
bigpKQogICAgICAgICBtX2hhc0JlZW5EZWZlcnJlZCA9IHRydWU7CiAgICAgZWxzZQotICAgICAg
ICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZSgmcGFnZSwgdHJpZ2dlcik7CisgICAgICAgIHBh
Z2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKGxvY2tlciwgJnBhZ2UsIHRyaWdnZXIpOwogfQogCiB0
ZW1wbGF0ZTxJc29QYWdlVHJpZ2dlciB0cmlnZ2VyPgogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
Pgotdm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmhhbmRsZURlZmVycmFsKElzb1BhZ2U8
Q29uZmlnPiYgcGFnZSkKK3ZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZl
cnJhbChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmln
PiYgcGFnZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoIXBhZ2UuaXNJblVzZUZvckFsbG9jYXRp
b24oKSk7CiAgICAgCiAgICAgaWYgKG1faGFzQmVlbkRlZmVycmVkKSB7Ci0gICAgICAgIHBhZ2Uu
ZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0cmlnZ2VyKTsKKyAgICAgICAgcGFnZS5kaXJl
Y3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFnZSwgdHJpZ2dlcik7CiAgICAgICAgIG1faGFz
QmVlbkRlZmVycmVkID0gZmFsc2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmly
b25tZW50LmNwcAppbmRleCAyNTc0YjIzOWYzYTBmZGM2NDkxNzg2ZDM5ZDM1NzAxNGViMTIwNzc5
Li44NzdhNmMyOWU1ZjdkMzhjOWZiZTIxYTIxZjc1MDQwYWI2OTE3ZDU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBib29s
IGlzTmFub01hbGxvY0VuYWJsZWQoKQogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JB
R0UoRW52aXJvbm1lbnQpOwogCi1FbnZpcm9ubWVudDo6RW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpCitFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpCiAgICAgOiBtX2lzRGVidWdIZWFwRW5hYmxlZChjb21wdXRlSXNEZWJ1Z0hl
YXBFbmFibGVkKCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vu
dmlyb25tZW50LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKaW5kZXgg
YTU2MjU2ZWJjYThlOWQ0ZmNlOWRiNDM1MmRlMjBhMjcyZjczNDk1Yy4uN2IyOGRlOTI3M2UwMzRk
YjRmNjc5YTAyNWE5YjI5MGFiZmZlMGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9FbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1l
bnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIEVudmly
b25tZW50IDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8RW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoK
LSAgICBCRVhQT1JUIEVudmlyb25tZW50KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBC
RVhQT1JUIEVudmlyb25tZW50KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAK
ICAgICBib29sIGlzRGVidWdIZWFwRW5hYmxlZCgpIHsgcmV0dXJuIG1faXNEZWJ1Z0hlYXBFbmFi
bGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3Bw
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKaW5kZXggM2NjYTJkNTRlNjYz
ZDU0MjIwNTUwMTA5NzFmZDkzZTdlZmJhNzExMS4uNDIwMTk1OWY2MGJlNjIxMDUyYjEzMGQzZTk2
NzViOWZiMDA3MzQzYSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2Fn
ZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgc3RydWN0IENhbGxiYWNrIHsKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogc3RydWN0
IFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2tzPiB7Ci0gICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyhz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikgeyB9CisgICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNr
cyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikgeyB9CiAgICAgCiAgICAgVmVjdG9yPEdp
Z2FjYWdlOjpDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCmlu
ZGV4IDExODliODc3ODQ0NzVlMDdlM2FmYmNhMDliMzMxMGIzMWJkYzE1MDEuLjNhYWU0M2EyMTdh
ZTNiMWQxZGNjYWQwZTcxNWZkYzQxZjgzOTY1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcApA
QCAtODEsNyArODEsNyBAQCBzaXplX3QgSGVhcDo6Z2lnYWNhZ2VTaXplKCkKICAgICByZXR1cm4g
R2lnYWNhZ2U6OnNpemUoZ2lnYWNhZ2VLaW5kKG1fa2luZCkpOwogfQogCi1zaXplX3QgSGVhcDo6
ZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitzaXplX3QgSGVhcDo6ZnJl
ZWFibGVNZW1vcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgcmV0dXJu
IG1fZnJlZWFibGVNZW1vcnk7CiB9CkBAIC05MSwxNCArOTEsMTQgQEAgc2l6ZV90IEhlYXA6OmZv
b3RwcmludCgpCiAgICAgcmV0dXJuIG1fZm9vdHByaW50OwogfQogCi12b2lkIEhlYXA6Om1hcmtB
bGxMYXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQordm9pZCBIZWFwOjpt
YXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsK
ICAgICBtX2xhcmdlRnJlZS5tYXJrQWxsQXNFbGlnaWJpbGUoKTsKICAgICBtX2hhc1BlbmRpbmdE
ZWNvbW1pdHMgPSBmYWxzZTsKICAgICBtX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCk7CiB9CiAKLXZv
aWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJn
ZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6ZGVj
b21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdl
JiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKIHsKICAgICBtX2Zvb3RwcmludCAt
PSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcmFu
Z2UudG90YWxQaHlzaWNhbFNpemUoKTsKQEAgLTExNCw5ICsxMTQsOSBAQCB2b2lkIEhlYXA6OmRl
Y29tbWl0TGFyZ2VSYW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFu
Z2UsIEJ1bGtEZQogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpz
Y2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29t
bWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogI2Vsc2UKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1p
dHRlciwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0cykKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRl
ciwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0cykKICNlbmRpZgogewogICAgIGZvciAoYXV0byYg
bGlzdCA6IG1fZnJlZVBhZ2VzKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBIZWFwOjpzY2F2
ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0
dGVyLCBzaXoKIH0KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2VUb0hpZ2hXYXRlcm1hcmsoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0Rl
Y29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmso
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1p
dHRlcikKIHsKICAgICB2b2lkKiBuZXdIaWdoV2F0ZXJNYXJrID0gbnVsbHB0cjsKICAgICBmb3Ig
KExhcmdlUmFuZ2UmIHJhbmdlIDogbV9sYXJnZUZyZWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5k
ZXggZGIzMjQ1MzY4N2ZiNTZlNjAwMDgzYmVlMTBiYTU0ZjA4MmMzZDY5My4uNTljNzVmMjdiOWM3
OTg1MDBkZGRkZmI1YTNiNjM0YmNjOGQyYzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKQEAgLTc2
LDE0ICs3NiwxNCBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIHNocmlua0xhcmdlKHN0ZDo6dW5p
cXVlX2xvY2s8TXV0ZXg+JiwgY29uc3QgUmFuZ2UmLCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYpOwotICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYp
OworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtE
ZWNvbW1pdCYpOwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lk
IHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQmLCBz
aXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVf
dCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CiAKLSAgICBzaXpl
X3QgZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIHNpemVfdCBm
cmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgc2l6ZV90
IGZvb3RwcmludCgpOwogCiAgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90KTsKQEAgLTkxLDEwICs5MSwxMCBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIGV4dGVybmFs
Q29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKICAgICB2b2lkIGV4dGVybmFsQ29tbWl0KHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCogcHRyLCBzaXplX3QpOwogCi0gICAgdm9pZCBtYXJr
QWxsTGFyZ2VBc0VsaWdpYmlsZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgdm9pZCBt
YXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKKyAgICB2b2lkIGRlY29tbWl0TGFy
Z2VSYW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIEJ1bGtE
ZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdlT2JqZWN0SGFzaCB7CiAgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuY3BwCmluZGV4IGZjYTlmY2Y3OGQ3MzNmMzhiYmJmOTJmNzEyNWNlMDk2MjVmZjVhMjUu
LmYzODRhNTRjNmE4ZmJmZDU5N2M0NDhiMTA2ZTQ3ZjkzNDNiOTUyN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShIZWFwQ29uc3Rh
bnRzKTsKIAotSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JikKK0hlYXBDb25zdGFudHM6OkhlYXBDb25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpCiAgICAgOiBtX3ZtUGFnZVNpemVQaHlzaWNhbCB7IHZtUGFnZVNpemVQaHlzaWNh
bCgpIH0KIHsKICAgICBSRUxFQVNFX0JBU1NFUlQobV92bVBhZ2VTaXplUGh5c2ljYWwgPj0gc21h
bGxQYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCmluZGV4IDA0
ZTczZDBjYzgwMDU0NWU3MDMyMWIyY2E0NTNhNGZhZWViMWEwMjYuLjBlYmM5NTBlOWQ2MmY0OWNm
YmVhYmM4OWU5ZTRjYjE0ZjljYWQwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcENvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0
YW50cy5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgSGVh
cENvbnN0YW50cyA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPEhlYXBDb25zdGFudHM+IHsKIHB1
YmxpYzoKLSAgICBIZWFwQ29uc3RhbnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBI
ZWFwQ29uc3RhbnRzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICB+SGVhcENv
bnN0YW50cygpID0gZGVsZXRlOwogCiAgICAgaW5saW5lIHNpemVfdCBwYWdlQ2xhc3Moc2l6ZV90
IHNpemVDbGFzcykgY29uc3QgeyByZXR1cm4gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3IuaAppbmRleCBhMGY3MDgwY2JiMWMyMTcxNzU3
YzNkNmRmNzQ3NTJlZjUxYmQ4ZDE3Li4zYmEwOGFhMmI2OGIyYzQzODgzMDAwYmYyMTQ0MTIxZWNm
Y2Y0MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9yLmgKQEAgLTQwLDEzICs0
MCwxMiBAQCBjbGFzcyBJc29BbGxvY2F0b3IgewogICAgIElzb0FsbG9jYXRvcihJc29IZWFwSW1w
bDxDb25maWc+Jik7CiAgICAgfklzb0FsbG9jYXRvcigpOwogICAgIAotICAgIHZvaWQqIGFsbG9j
YXRlKGJvb2wgYWJvcnRPbkZhaWx1cmUpOwotICAgIHZvaWQgc2NhdmVuZ2UoKTsKKyAgICB2b2lk
KiBhbGxvY2F0ZShJc29IZWFwSW1wbDxDb25maWc+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7Cisg
ICAgdm9pZCBzY2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+Jik7CiAgICAgCiBwcml2YXRlOgot
ICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB2b2lkKiBh
bGxvY2F0ZVNsb3coSXNvSGVhcEltcGw8Q29uZmlnPiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwog
ICAgIAotICAgIElzb0hlYXBJbXBsPENvbmZpZz4qIG1faGVhcCB7IG51bGxwdHIgfTsKICAgICBG
cmVlTGlzdCBtX2ZyZWVMaXN0OwogICAgIElzb1BhZ2U8Q29uZmlnPiogbV9jdXJyZW50UGFnZSB7
IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Fs
bG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5s
aW5lcy5oCmluZGV4IDU0NTVmZmRjZjJkMDMyMGYzM2YzNmM3MzExZjk2MmVmN2M3ODI0N2EuLjhk
N2E0ZmMwODZjY2M4NzE1MWFkNDdlMGZhNWY4MzJmYWZlMGU0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zNCw4ICszNCw3IEBACiBuYW1l
c3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUlzb0FsbG9jYXRv
cjxDb25maWc+OjpJc29BbGxvY2F0b3IoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKLSAgICA6
IG1faGVhcCgmaGVhcCkKK0lzb0FsbG9jYXRvcjxDb25maWc+OjpJc29BbGxvY2F0b3IoSXNvSGVh
cEltcGw8Q29uZmlnPiYpCiB7CiB9CiAKQEAgLTQ1LDM2ICs0NCwzNiBAQCBJc29BbGxvY2F0b3I8
Q29uZmlnPjo6fklzb0FsbG9jYXRvcigpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4K
LXZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZShib29sIGFib3J0T25GYWlsdXJl
KQordm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlKElzb0hlYXBJbXBsPENvbmZp
Zz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICB2b2lkKiByZXN1bHQgPSBtX2ZyZWVMaXN0LmFsbG9j
YXRlPENvbmZpZz4oCiAgICAgICAgIFsmXSAoKSAtPiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGVTbG93KGFib3J0T25GYWlsdXJlKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxv
Y2F0ZVNsb3coaGVhcCwgYWJvcnRPbkZhaWx1cmUpOwogICAgICAgICB9KTsKICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVwIG9mIHNpemUg
JXVcbiIsIG1faGVhcCwgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOworICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgb2Ygc2l6ZSAldVxuIiwgJmhlYXAsIHJlc3Vs
dCwgQ29uZmlnOjpvYmplY3RTaXplKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+
OjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSkKK0JOT19JTkxJTkUgdm9pZCogSXNv
QWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhJc29IZWFwSW1wbDxDb25maWc+JiBoZWFw
LCBib29sIGFib3J0T25GYWlsdXJlKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9j
a2VyKG1faGVhcC0+bG9jayk7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaGVh
cC5sb2NrKTsKIAotICAgIEFsbG9jYXRpb25Nb2RlIGFsbG9jYXRpb25Nb2RlID0gbV9oZWFwLT51
cGRhdGVBbGxvY2F0aW9uTW9kZSgpOworICAgIEFsbG9jYXRpb25Nb2RlIGFsbG9jYXRpb25Nb2Rl
ID0gaGVhcC51cGRhdGVBbGxvY2F0aW9uTW9kZSgpOwogICAgIGlmIChhbGxvY2F0aW9uTW9kZSA9
PSBBbGxvY2F0aW9uTW9kZTo6U2hhcmVkKSB7CiAgICAgICAgIGlmIChtX2N1cnJlbnRQYWdlKSB7
Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0KTsK
KyAgICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKGxvY2tlciwgbV9mcmVl
TGlzdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgICAg
IG1fZnJlZUxpc3QuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9oZWFwLT5h
bGxvY2F0ZUZyb21TaGFyZWQobG9ja2VyLCBhYm9ydE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVy
biBoZWFwLmFsbG9jYXRlRnJvbVNoYXJlZChsb2NrZXIsIGFib3J0T25GYWlsdXJlKTsKICAgICB9
CiAKICAgICBCQVNTRVJUKGFsbG9jYXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpGYXN0KTsK
ICAgICAKLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faGVhcC0+dGFr
ZUZpcnN0RWxpZ2libGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9
IGhlYXAudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKICAgICBpZiAocmVzdWx0LmtpbmQgIT0g
RWxpZ2liaWxpdHlLaW5kOjpTdWNjZXNzKSB7CiAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1
bHQua2luZCA9PSBFbGlnaWJpbGl0eUtpbmQ6Ok91dE9mTWVtb3J5KTsKICAgICAgICAgUkVMRUFT
RV9CQVNTRVJUKCFhYm9ydE9uRmFpbHVyZSk7CkBAIC04Miw3ICs4MSw3IEBAIEJOT19JTkxJTkUg
dm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWls
dXJlKQogICAgIH0KICAgICAKICAgICBpZiAobV9jdXJyZW50UGFnZSkKLSAgICAgICAgbV9jdXJy
ZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobV9mcmVlTGlzdCk7CisgICAgICAgIG1fY3VycmVudFBh
Z2UtPnN0b3BBbGxvY2F0aW5nKGxvY2tlciwgbV9mcmVlTGlzdCk7CiAgICAgCiAgICAgbV9jdXJy
ZW50UGFnZSA9IHJlc3VsdC5wYWdlOwogICAgIG1fZnJlZUxpc3QgPSBtX2N1cnJlbnRQYWdlLT5z
dGFydEFsbG9jYXRpbmcoKTsKQEAgLTkxLDExICs5MCwxMSBAQCBCTk9fSU5MSU5FIHZvaWQqIElz
b0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29BbGxvY2F0b3I8Q29uZmlnPjo6
c2NhdmVuZ2UoKQordm9pZCBJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UoSXNvSGVhcElt
cGw8Q29uZmlnPiYgaGVhcCkKIHsKICAgICBpZiAobV9jdXJyZW50UGFnZSkgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtX2hlYXAtPmxvY2spOwotICAgICAgICBtX2N1
cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0KTsKKyAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIoaGVhcC5sb2NrKTsKKyAgICAgICAgbV9jdXJyZW50UGFnZS0+
c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsKICAgICAgICAgbV9jdXJyZW50UGFn
ZSA9IG51bGxwdHI7CiAgICAgICAgIG1fZnJlZUxpc3QuY2xlYXIoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaAppbmRleCAyM2YzMmEz
ZDg5YjI1ZDJjNTdlMWEzODJiZGUwMjY4ODVhNGUzZDlkLi4wMzJmYjc3MTlhYWJiMDM4YjM4MjI5
NDczOTBiZDQ4OGE4NDdmYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0RlYWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVh
bGxvY2F0b3JJbmxpbmVzLmgKQEAgLTc2LDcgKzc2LDcgQEAgQk5PX0lOTElORSB2b2lkIElzb0Rl
YWxsb2NhdG9yPENvbmZpZz46OnNjYXZlbmdlKCkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcigqbV9sb2NrKTsKICAgICAKICAgICBmb3IgKHZvaWQqIHB0ciA6IG1fb2JqZWN0TG9n
KQotICAgICAgICBJc29QYWdlPENvbmZpZz46OnBhZ2VGb3IocHRyKS0+ZnJlZShwdHIpOworICAg
ICAgICBJc29QYWdlPENvbmZpZz46OnBhZ2VGb3IocHRyKS0+ZnJlZShsb2NrZXIsIHB0cik7CiAg
ICAgbV9vYmplY3RMb2cuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0
b3J5LmgKaW5kZXggYmFmZWIzZWUwMzA1OWU4N2Y5YjA1ZDc3MzdhNmIyNTkwZmZlYmRmNy4uZTcy
YjJkMTYxMjFiNzNhZjMxZTBmZDdjMTMyYTVjOTRhZmRkZjdmYyAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0RpcmVjdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQml0cy5oIgog
I2luY2x1ZGUgIkVsaWdpYmlsaXR5UmVzdWx0LmgiCiAjaW5jbHVkZSAiSXNvUGFnZS5oIgorI2lu
Y2x1ZGUgIlBhY2tlZC5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgYm1hbGxv
YyB7CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIElzb0RpcmVjdG9yeUJhc2UgOiBwdWJsaWMgSXNv
RGlyZWN0b3J5QmFzZUJhc2UgewogICAgIAogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAo
KSB7IHJldHVybiBtX2hlYXA7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKElz
b1BhZ2U8Q29uZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+Kiwg
SXNvUGFnZVRyaWdnZXIpID0gMDsKICAgICAKIHByb3RlY3RlZDoKICAgICBJc29IZWFwSW1wbDxD
b25maWc+JiBtX2hlYXA7CkBAIC02NCw5ICs2NSw5IEBAIGNsYXNzIElzb0RpcmVjdG9yeSA6IHB1
YmxpYyBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4gewogICAgIAogICAgIC8vIEZpbmQgdGhlIGZp
cnN0IHBhZ2UgdGhhdCBpcyBlbGlnaWJsZSBmb3IgYWxsb2NhdGlvbiBhbmQgcmV0dXJuIGl0LiBN
YXkgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8KICAgICAvLyBzdWNoIHRoaW5nLiBNYXkgYWxs
b2NhdGUgYSBuZXcgcGFnZSBpZiB3ZSBoYXZlIGFuIHVuY29tbWl0dGVkIHBhZ2UuCi0gICAgRWxp
Z2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOwogICAgIAotICAgIHZvaWQgZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiosIElz
b1BhZ2VUcmlnZ2VyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEJlY29tZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJy
aWRlOwogICAgIAogICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgZnJvbSBhIGJ1bGsgZGVjb21taXQg
ZnVuY3Rpb24gaW4gdGhlIFNjYXZlbmdlciwgc28gbm8gbG9ja3MgYXJlIGhlbGQuIFRoaXMgZnVu
Y3Rpb24KICAgICAvLyBuZWVkcyB0byBnZXQgdGhlIGhlYXAgbG9jay4KQEAgLTc0LDIzICs3NSwy
MyBAQCBjbGFzcyBJc29EaXJlY3RvcnkgOiBwdWJsaWMgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+
IHsKICAgICAKICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGVtcHR5IGFuZCBjb21taXR0ZWQgcGFn
ZXMsIGFuZCBwdXQgdGhlbSBpbnRvIHRoZSB2ZWN0b3IuIFRoaXMgYWxzbyByZWNvcmRzIHRoZQog
ICAgIC8vIHBhZ2VzIGFzIGJlaW5nIGRlY29tbWl0dGVkLiBJdCdzIHRoZSBjYWxsZXIncyBqb2Ig
dG8gZG8gdGhlIGFjdHVhbCBkZWNvbW1pdHRpbmcuCi0gICAgdm9pZCBzY2F2ZW5nZShWZWN0b3I8
RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKICNpZiBCVVNFKFBBUlRJ
QUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKICNl
bmRpZgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb21t
aXR0ZWRQYWdlKGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hDb21taXR0ZWRQYWdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CiAgICAgCiBwcml2YXRl
OgotICAgIHZvaWQgc2NhdmVuZ2VQYWdlKHNpemVfdCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
Jik7CisgICAgdm9pZCBzY2F2ZW5nZVBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IHNpemVfdCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CiAKKyAgICBzdGQ6OmFycmF5PFBh
Y2tlZEFsaWduZWRQdHI8SXNvUGFnZTxDb25maWc+LCBJc29QYWdlPENvbmZpZz46OnBhZ2VTaXpl
PiwgbnVtUGFnZXM+IG1fcGFnZXMgeyB9OwogICAgIC8vIE5PVEU6IEkgc3VwcG9zZSB0aGF0IHRo
aXMgY291bGQgYmUgdHdvIGJpdHZlY3RvcnMuIEJ1dCBmcm9tIHdvcmtpbmcgb24gdGhlIEdDLCBJ
IGZvdW5kIHRoYXQgdGhlCiAgICAgLy8gbnVtYmVyIG9mIGJpdHZlY3RvcnMgZG9lcyBub3QgbWF0
dGVyIGFzIG11Y2ggYXMgd2hldGhlciBvciBub3QgdGhleSBtYWtlIGludHVpdGl2ZSBzZW5zZS4K
ICAgICBCaXRzPG51bVBhZ2VzPiBtX2VsaWdpYmxlOwogICAgIEJpdHM8bnVtUGFnZXM+IG1fZW1w
dHk7CiAgICAgQml0czxudW1QYWdlcz4gbV9jb21taXR0ZWQ7Ci0gICAgc3RkOjphcnJheTxJc29Q
YWdlPENvbmZpZz4qLCBudW1QYWdlcz4gbV9wYWdlczsKICAgICB1bnNpZ25lZCBtX2ZpcnN0RWxp
Z2libGVPckRlY29tbWl0dGVkIHsgMCB9OwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAg
ICB1bnNpZ25lZCBtX2hpZ2hXYXRlcm1hcmsgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDBiMWExZWMwNWEwNzQxNDAwNDJiYjc2ZTc0
YjEwOGZmZWI1ZjliMjcuLjg1NTQyZGY5ODUyNDU4ZTM1ZTQwYzA5OWRiZTMyMmNiODljNzQzMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCkBAIC0z
OSwxMiArMzksMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWRO
dW1QYWdlcz4KIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0
b3J5KElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXApCiAgICAgOiBJc29EaXJlY3RvcnlCYXNlPENv
bmZpZz4oaGVhcCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYWdlczsgaS0tOykKLSAg
ICAgICAgbV9wYWdlc1tpXSA9IG51bGxwdHI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
ZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci1FbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElz
b0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoKQor
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQog
ewogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5m
aW5kQml0KG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHRydWUpOwogICAgIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSBwYWdlSW5kZXg7CkBAIC01OSw3ICs1Nyw3IEBAIEVsaWdp
YmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+
Ojp0YWtlRmlyc3RFbGlnaWJsCiAgICAgU2NhdmVuZ2VyJiBzY2F2ZW5nZXIgPSAqU2NhdmVuZ2Vy
OjpnZXQoKTsKICAgICBzY2F2ZW5nZXIuZGlkU3RhcnRHcm93aW5nKCk7CiAgICAgCi0gICAgSXNv
UGFnZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdlSW5kZXhdOworICAgIElzb1BhZ2U8Q29u
ZmlnPiogcGFnZSA9IG1fcGFnZXNbcGFnZUluZGV4XS5nZXQoKTsKICAgICAKICAgICBpZiAoIW1f
Y29tbWl0dGVkW3BhZ2VJbmRleF0pIHsKICAgICAgICAgc2NhdmVuZ2VyLnNjaGVkdWxlSWZVbmRl
ck1lbW9yeVByZXNzdXJlKElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CkBAIC05Myw3ICs5MSw3IEBA
IEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVt
UGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywg
dW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6ZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdn
ZXIgdHJpZ2dlcikKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpk
aWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBJc29QYWdlPENv
bmZpZz4qIHBhZ2UsIElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBwYWdlSW5kZXggPSBwYWdl
LT5pbmRleCgpOwpAQCAtMTAzLDcgKzEwMSw3IEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywg
cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiBwYWdlLCBJc29QCiAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlcCBkaWQgYmVjb21lIGVsaWdpYmxlLlxu
IiwgdGhpcywgcGFnZSk7CiAgICAgICAgIG1fZWxpZ2libGVbcGFnZUluZGV4XSA9IHRydWU7CiAg
ICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxp
Z2libGVPckRlY29tbWl0dGVkLCBwYWdlSW5kZXgpOwotICAgICAgICB0aGlzLT5tX2hlYXAuZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7CisgICAgICAgIHRoaXMtPm1faGVhcC5k
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChsb2NrZXIsIHRoaXMpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJc29QYWdlVHJpZ2dlcjo6RW1wdHk6CiAgICAgICAgIGlmICh2ZXJib3Nl
KQpAQCAtMTI1LDI4ICsxMjMsMjggQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWRO
dW1QYWdlcz46OmRpZERlY29tbWl0KHVuc2lnbmVkIGluZGV4KQogICAgIC8vIHN5c2NhbGwgaXRz
ZWxmICh3aGljaCBoYXMgdG8gZG8gbWFueSBoYXJkIHRoaW5ncykuCiAgICAgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bV9oZWFwLmxvY2spOwogICAgIEJBU1NFUlQoISFtX2Nv
bW1pdHRlZFtpbmRleF0pOwotICAgIHRoaXMtPm1faGVhcC5pc05vTG9uZ2VyRnJlZWFibGUobV9w
YWdlc1tpbmRleF0sIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CisgICAgdGhpcy0+bV9oZWFwLmlz
Tm9Mb25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4XS5nZXQoKSwgSXNvUGFnZUJhc2U6OnBhZ2VT
aXplKTsKICAgICBtX2NvbW1pdHRlZFtpbmRleF0gPSBmYWxzZTsKICAgICBtX2ZpcnN0RWxpZ2li
bGVPckRlY29tbWl0dGVkID0gc3RkOjptaW4obV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwg
aW5kZXgpOwotICAgIHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCh0
aGlzKTsKLSAgICB0aGlzLT5tX2hlYXAuZGlkRGVjb21taXQobV9wYWdlc1tpbmRleF0sIElzb1Bh
Z2VCYXNlOjpwYWdlU2l6ZSk7CisgICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JE
ZWNvbW1pdGVkKGxvY2tlciwgdGhpcyk7CisgICAgdGhpcy0+bV9oZWFwLmRpZERlY29tbWl0KG1f
cGFnZXNbaW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlUGFnZShzaXplX3QgaW5kZXgs
IFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8
Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+Jiwgc2l6ZV90IGluZGV4LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29t
bWl0cykKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGlzIHBhZ2UgaXMgbm93IG9mZiBsaW1p
dHMuCiAgICAgbV9lbXB0eVtpbmRleF0gPSBmYWxzZTsKICAgICBtX2VsaWdpYmxlW2luZGV4XSA9
IGZhbHNlOwotICAgIGRlY29tbWl0cy5wdXNoKERlZmVycmVkRGVjb21taXQodGhpcywgbV9wYWdl
c1tpbmRleF0sIGluZGV4KSk7CisgICAgZGVjb21taXRzLnB1c2goRGVmZXJyZWREZWNvbW1pdCh0
aGlzLCBtX3BhZ2VzW2luZGV4XS5nZXQoKSwgaW5kZXgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
IGRlY29tbWl0cykKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpz
Y2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIFZlY3RvcjxEZWZl
cnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIChtX2VtcHR5ICYgbV9jb21taXR0ZWQp
LmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgICAg
ICBzY2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0cyk7CisgICAgICAgICAgICBzY2F2ZW5nZVBh
Z2UobG9ja2VyLCBpbmRleCwgZGVjb21taXRzKTsKICAgICAgICAgfSk7CiAjaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQogICAgIG1faGlnaFdhdGVybWFyayA9IDA7CkBAIC0xNTUsMTIgKzE1Mywx
MiBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2Uo
VmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZv
aWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKK3ZvaWQgSXNvRGly
ZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYgZGVjb21taXRzKQogewogICAgIChtX2VtcHR5ICYgbV9jb21taXR0ZWQpLmZvckVhY2hT
ZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBpZiAoaW5k
ZXggPiBtX2hpZ2hXYXRlcm1hcmspCi0gICAgICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGluZGV4
LCBkZWNvbW1pdHMpOworICAgICAgICAgICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIsIGluZGV4
LCBkZWNvbW1pdHMpOwogICAgICAgICB9KTsKICAgICBtX2hpZ2hXYXRlcm1hcmsgPSAwOwogfQpA
QCAtMTY4LDExICsxNjYsMTEgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnIKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6Zm9y
RWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBtX2NvbW1pdHRlZC5m
b3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewotICAgICAgICAgICAg
ZnVuYygqbV9wYWdlc1tpbmRleF0pOworICAgICAgICAgICAgZnVuYygqKG1fcGFnZXNbaW5kZXhd
LmdldCgpKSk7CiAgICAgICAgIH0pOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hl
YXBJbXBsLmNwcAppbmRleCA2OTZkMjJlNTdmNjIyM2Y5YjkyOTQyYWIyZjJlMGIwOWFhYmQ5YTgz
Li5kZDA4OWExYWJkNTIxZmViNGQxOTM3NmJmNmNjZTczODdkZWI1NzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcApAQCAtMzEsNyArMzEsOCBAQAogCiBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKLUlzb0hlYXBJbXBsQmFzZTo6SXNvSGVhcEltcGxCYXNlKCkKK0lzb0hlYXBJ
bXBsQmFzZTo6SXNvSGVhcEltcGxCYXNlKE11dGV4JiBsb2NrKQorICAgIDogbG9jayhsb2NrKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKaW5kZXggMDk1MTFlMjU3ZmJm
YmY3Y2MwNGIzOTc4YzFlZmUwYmYyYjM0YzJkZC4uMGJhYTgwODg4NmI3NzY1N2RiOTMxMTM0MWZj
MmRmYzJjNWJlNTRlZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
SW1wbC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIklzb0FsbG9jYXRvci5oIgogI2luY2x1ZGUgIklzb0RpcmVj
dG9yeVBhZ2UuaCIKICNpbmNsdWRlICJJc29UTFNBbGxvY2F0b3JFbnRyeS5oIgorI2luY2x1ZGUg
IlBhY2tlZC5oIgogI2luY2x1ZGUgIlBoeXNpY2FsUGFnZU1hcC5oIgogCiBuYW1lc3BhY2UgYm1h
bGxvYyB7CkBAIC01MSwyNyArNTIsNDggQEAgY2xhc3MgQkVYUE9SVCBJc29IZWFwSW1wbEJhc2Ug
ewogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2aXJ0dWFsIHZvaWQgc2NhdmVuZ2VU
b0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JikgPSAwOwogI2VuZGlmCi0g
ICAgdmlydHVhbCBzaXplX3QgZnJlZWFibGVNZW1vcnkoKSA9IDA7Ci0gICAgdmlydHVhbCBzaXpl
X3QgZm9vdHByaW50KCkgPSAwOwogICAgIAogICAgIHZvaWQgc2NhdmVuZ2VOb3coKTsKICAgICBz
dGF0aWMgdm9pZCBmaW5pc2hTY2F2ZW5naW5nKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwog
CisgICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQg
ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworCisgICAgdm9pZCBpc05vd0Zy
ZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKyAgICB2b2lkIGlzTm9Mb25nZXJGcmVl
YWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisKKyAgICBzaXplX3QgZnJlZWFibGVNZW1v
cnkoKTsKKyAgICBzaXplX3QgZm9vdHByaW50KCk7CisKICAgICB2b2lkIGFkZFRvQWxsSXNvSGVh
cHMoKTsKIAogcHJvdGVjdGVkOgotICAgIElzb0hlYXBJbXBsQmFzZSgpOworICAgIElzb0hlYXBJ
bXBsQmFzZShNdXRleCYpOwogCiAgICAgZnJpZW5kIGNsYXNzIElzb1NoYXJlZFBhZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIEFsbElzb0hlYXBzOwogICAgIAorcHVibGljOgorICAgIC8vIEl0J3MgYWxt
b3N0IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZ3JhYiB0aGUgbG9jay4g
VGhpcyBsb2NrIGNvbWVzIGZyb20gdGhlCisgICAgLy8gKCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5
SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPj4+OjpnZXQoKSktPmxvY2suIFRo
YXQncyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAorICAgIC8vIHRyeSB0byBkaXNndWlzZSB0
aGUgZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkgZG8gdGhhdCBiZWNhdXNlIGhlYXBzIGlu
IHRoZSBzYW1lIHNpemUgY2xhc3MKKyAgICAvLyBzaGFyZSB0aGUgc2FtZSBkZWFsbG9jYXRvciBs
b2csIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRvIGFsc28gc2hhcmUgdGhlIHNhbWUgbG9j
ayB0bworICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlzaXRpb24gY29zdHMuCisgICAgTXV0ZXgm
IGxvY2s7Citwcm90ZWN0ZWQ6CiAgICAgSXNvSGVhcEltcGxCYXNlKiBtX25leHQgeyBudWxscHRy
IH07CiAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX2xhc3RTbG93
UGF0aFRpbWU7Ci0gICAgc3RkOjphcnJheTx2b2lkKiwgbWF4QWxsb2NhdGlvbkZyb21TaGFyZWQ+
IG1fc2hhcmVkQ2VsbHMgeyB9OworICAgIHNpemVfdCBtX2Zvb3RwcmludCB7IDAgfTsKKyAgICBz
aXplX3QgbV9mcmVlYWJsZU1lbW9yeSB7IDAgfTsKKyNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9N
QVAKKyAgICBQaHlzaWNhbFBhZ2VNYXAgbV9waHlzaWNhbFBhZ2VNYXA7CisjZW5kaWYKKyAgICBz
dGQ6OmFycmF5PFBhY2tlZEFsaWduZWRQdHI8dWludDhfdCwgYm1hbGxvYzo6YWxpZ25tZW50Piwg
bWF4QWxsb2NhdGlvbkZyb21TaGFyZWQ+IG1fc2hhcmVkQ2VsbHMgeyB9OworcHJvdGVjdGVkOgog
ICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBbGxvY2F0aW9uc0Zyb21TaGFyZWRJbk9uZUN5Y2xlIHsg
MCB9OwogICAgIHVuc2lnbmVkIG1fYXZhaWxhYmxlU2hhcmVkIHsgbWF4QWxsb2NhdGlvbkZyb21T
aGFyZWRNYXNrIH07CiAgICAgQWxsb2NhdGlvbk1vZGUgbV9hbGxvY2F0aW9uTW9kZSB7IEFsbG9j
YXRpb25Nb2RlOjpJbml0IH07Ci0gICAgCisgICAgYm9vbCBtX2lzSW5saW5lRGlyZWN0b3J5RWxp
Z2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OwogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKG1f
YXZhaWxhYmxlU2hhcmVkKSAqIDggPj0gbWF4QWxsb2NhdGlvbkZyb21TaGFyZWQsICIiKTsKIH07
CiAKQEAgLTgzLDIxICsxMDUsMTcgQEAgY2xhc3MgSXNvSGVhcEltcGwgZmluYWwgOiBwdWJsaWMg
SXNvSGVhcEltcGxCYXNlIHsKIHB1YmxpYzoKICAgICBJc29IZWFwSW1wbCgpOwogICAgIAotICAg
IEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICBFbGln
aWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKICAgICAKICAgICAvLyBDYWxsYmFja3MgZnJvbSBkaXJlY3RvcnkuCi0g
ICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmln
LCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiopOwotICAgIHZvaWQgZGlkQmVjb21lRWxpZ2li
bGVPckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25m
aWc+OjpudW1QYWdlcz4qKTsKKyAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVk
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1Q
YWdlc0luSW5saW5lRGlyZWN0b3J5PiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRl
Y29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25m
aWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+Kik7CiAgICAgCiAgICAgdm9p
ZCBzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKSBvdmVycmlkZTsKICNpZiBCVVNF
KFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0
b3I8RGVmZXJyZWREZWNvbW1pdD4mKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgc2l6ZV90IGZy
ZWVhYmxlTWVtb3J5KCkgb3ZlcnJpZGU7Ci0KLSAgICBzaXplX3QgZm9vdHByaW50KCkgb3ZlcnJp
ZGU7Ci0gICAgCiAgICAgdW5zaWduZWQgYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQg
ZGVhbGxvY2F0b3JPZmZzZXQoKTsKIApAQCAtMTA2LDQ2ICsxMjQsMjUgQEAgY2xhc3MgSXNvSGVh
cEltcGwgZmluYWwgOiBwdWJsaWMgSXNvSGVhcEltcGxCYXNlIHsKICAgICB1bnNpZ25lZCBudW1D
b21taXR0ZWRQYWdlcygpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAg
dm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hEaXJl
Y3RvcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICAvLyBUaGlzIGlz
IG9ubHkgYWNjdXJhdGUgd2hlbiBhbGwgdGhyZWFkcyBhcmUgc2NhdmVuZ2VkLiBPdGhlcndpc2Ug
aXQgd2lsbCBvdmVyZXN0aW1hdGUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmKTsKLQotICAgIHZvaWQgZGlkQ29tbWl0
KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lkIGRpZERlY29tbWl0KHZvaWQqIHB0
ciwgc2l6ZV90IGJ5dGVzKTsKLQotICAgIHZvaWQgaXNOb3dGcmVlYWJsZSh2b2lkKiBwdHIsIHNp
emVfdCBieXRlcyk7Ci0gICAgdm9pZCBpc05vTG9uZ2VyRnJlZWFibGUodm9pZCogcHRyLCBzaXpl
X3QgYnl0ZXMpOworICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKIAogICAgIEFsbG9jYXRpb25Nb2RlIHVwZGF0ZUFs
bG9jYXRpb25Nb2RlKCk7CiAgICAgdm9pZCogYWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKLSAgICAKLSAgICAvLyBJ
dCdzIGFsbW9zdCBhbHdheXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGdyYWIgdGhl
IGxvY2suIFRoaXMgbG9jayBjb21lcyBmcm9tIHRoZQotICAgIC8vICgqUGVyUHJvY2VzczxJc29U
TFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5s
b2NrLiBUaGF0J3MgcHJldHR5IHdlaXJkLCBhbmQgd2UgZG9uJ3QKLSAgICAvLyB0cnkgdG8gZGlz
Z3Vpc2UgdGhlIGZhY3QgdGhhdCBpdCdzIHdlaXJkLiBXZSBvbmx5IGRvIHRoYXQgYmVjYXVzZSBo
ZWFwcyBpbiB0aGUgc2FtZSBzaXplIGNsYXNzCi0gICAgLy8gc2hhcmUgdGhlIHNhbWUgZGVhbGxv
Y2F0b3IgbG9nLCBzbyBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlbSB0byBhbHNvIHNoYXJlIHRoZSBz
YW1lIGxvY2sgdG8KLSAgICAvLyBhbW9ydGl6ZSBsb2NrIGFjcXVpc2l0aW9uIGNvc3RzLgotICAg
IE11dGV4JiBsb2NrOwogCiBwcml2YXRlOgorICAgIFBhY2tlZFB0cjxJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz4+IG1faGVhZERpcmVjdG9yeSB7IG51bGxwdHIgfTsKKyAgICBQYWNrZWRQdHI8SXNv
RGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX3RhaWxEaXJlY3RvcnkgeyBudWxscHRyIH07CisgICAg
UGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4gbV9maXJzdEVsaWdpYmxlT3JEZWNv
bW1pdGVkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwogICAgIElzb0RpcmVjdG9yeTxDb25maWcsIG51
bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+IG1faW5saW5lRGlyZWN0b3J5OwotICAgIElzb0RpcmVj
dG9yeVBhZ2U8Q29uZmlnPiogbV9oZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIElzb0Rp
cmVjdG9yeVBhZ2U8Q29uZmlnPiogbV90YWlsRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIHNp
emVfdCBtX2Zvb3RwcmludCB7IDAgfTsKLSAgICBzaXplX3QgbV9mcmVlYWJsZU1lbW9yeSB7IDAg
fTsKLSNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKLSAgICBQaHlzaWNhbFBhZ2VNYXAgbV9w
aHlzaWNhbFBhZ2VNYXA7Ci0jZW5kaWYKICAgICB1bnNpZ25lZCBtX25leHREaXJlY3RvcnlQYWdl
SW5kZXggeyAxIH07IC8vIFdlIHN0YXJ0IGF0IDEgc28gdGhhdCB0aGUgaGlnaCB3YXRlciBtYXJr
IGJlaW5nIHplcm8gbWVhbnMgd2UndmUgb25seSBhbGxvY2F0ZWQgaW4gdGhlIGlubGluZSBkaXJl
Y3Rvcnkgc2luY2UgdGhlIGxhc3Qgc2NhdmVuZ2UuCiAgICAgdW5zaWduZWQgbV9kaXJlY3RvcnlI
aWdoV2F0ZXJtYXJrIHsgMCB9OwotICAgIAotICAgIGJvb2wgbV9pc0lubGluZURpcmVjdG9yeUVs
aWdpYmxlT3JEZWNvbW1pdHRlZCB7IHRydWUgfTsKLSAgICBJc29EaXJlY3RvcnlQYWdlPENvbmZp
Zz4qIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSB7IG51bGxwdHIgfTsKLSAg
ICAKICAgICBJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+PiBt
X2FsbG9jYXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5s
aW5lcy5oCmluZGV4IDJhNGZiMjg0MzZiMzU4ZTk2YTE3MDFiOTEzMzc1YTUzM2VkZGFlZDAuLjk0
ZWIzZjRjMTRmOGU2ZjdjYjQ3ZjViMDNjMzJjODk5OGQ1NjFhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaApAQCAtMzQsNjQgKzM0LDcwIEBAIG5hbWVz
cGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvSGVhcEltcGw8
Q29uZmlnPjo6SXNvSGVhcEltcGwoKQotICAgIDogbG9jaygoKlBlclByb2Nlc3M8SXNvVExTRW50
cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9jaykK
KyAgICA6IElzb0hlYXBJbXBsQmFzZSgoKlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNv
VExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9jaykKICAgICAsIG1faW5s
aW5lRGlyZWN0b3J5KCp0aGlzKQogICAgICwgbV9hbGxvY2F0b3IoKnRoaXMpCiB7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVh
cEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUoKQorRWxpZ2liaWxpdHlSZXN1bHQ8Q29u
ZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIpCiB7CiAgICAgaWYgKG1faXNJbmxpbmVEaXJlY3RvcnlF
bGlnaWJsZU9yRGVjb21taXR0ZWQpIHsKLSAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmln
PiByZXN1bHQgPSBtX2lubGluZURpcmVjdG9yeS50YWtlRmlyc3RFbGlnaWJsZSgpOworICAgICAg
ICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0b3J5LnRh
a2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CiAgICAgICAgIGlmIChyZXN1bHQua2luZCA9PSBFbGln
aWJpbGl0eUtpbmQ6OkZ1bGwpCiAgICAgICAgICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2li
bGVPckRlY29tbWl0dGVkID0gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1p
dGVkRGlyZWN0b3J5KSB7Ci0gICAgICAgIC8vIElmIG5vdGhpbmcgaXMgZWxpZ2libGUsIGl0IGNh
biBvbmx5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rvcmllcy4gSXQgd291bGRuJ3QgYmUg
dGhlIGVuZAotICAgICAgICAvLyBvZiB0aGUgd29ybGQgaWYgd2UgYnJva2UgdGhpcyBpbnZhcmlh
bnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0IGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVk
KCkgd291bGQgbmVlZAotICAgICAgICAvLyBhIG51bGwgY2hlY2suCi0gICAgICAgIFJFTEVBU0Vf
QkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5KTsKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX3Rh
aWxEaXJlY3RvcnkpOwotICAgIH0KLSAgICAKLSAgICBmb3IgKDsgbV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdGVkRGlyZWN0b3J5OyBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnkg
PSBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnktPm5leHQpIHsKLSAgICAgICAg
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBtX2ZpcnN0RWxpZ2libGVPckRlY29t
bWl0ZWREaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUoKTsKLSAgICAgICAgaWYg
KHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkgewotICAgICAgICAgICAgbV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gc3RkOjptYXgobV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJr
LCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnktPmluZGV4KCkpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB7CisgICAgICAgIGF1dG8qIGN1cnNvciA9IG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5nZXQoKTsKKyAgICAgICAgaWYgKCFjdXJz
b3IpIHsKKyAgICAgICAgICAgIC8vIElmIG5vdGhpbmcgaXMgZWxpZ2libGUsIGl0IGNhbiBvbmx5
IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rvcmllcy4gSXQgd291bGRuJ3QgYmUgdGhlIGVu
ZAorICAgICAgICAgICAgLy8gb2YgdGhlIHdvcmxkIGlmIHdlIGJyb2tlIHRoaXMgaW52YXJpYW50
LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCgp
IHdvdWxkIG5lZWQKKyAgICAgICAgICAgIC8vIGEgbnVsbCBjaGVjay4KKyAgICAgICAgICAgIFJF
TEVBU0VfQkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGZvciAoOyBjdXJzb3I7IGN1cnNvciA9IGN1cnNvci0+bmV4dCkgeworICAgICAg
ICAgICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gY3Vyc29yLT5wYXls
b2FkLnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1f
Zmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5nZXQoKSA9PSBjdXJzb3IpOworICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gc3RkOjptYXgo
bV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrLCBjdXJzb3ItPmluZGV4KCkpOworICAgICAgICAgICAg
ICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgPSBjdXJzb3I7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0
b3J5ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBhdXRvKiBuZXdEaXJl
Y3RvcnkgPSBuZXcgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KCp0aGlzLCBtX25leHREaXJlY3Rv
cnlQYWdlSW5kZXgrKyk7Ci0gICAgaWYgKG1faGVhZERpcmVjdG9yeSkgeworICAgIGlmIChtX2hl
YWREaXJlY3RvcnkuZ2V0KCkpIHsKICAgICAgICAgbV90YWlsRGlyZWN0b3J5LT5uZXh0ID0gbmV3
RGlyZWN0b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3RvcnkpOworICAg
ICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIG1f
aGVhZERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICAgICAgbV90YWlsRGlyZWN0b3J5ID0g
bmV3RGlyZWN0b3J5OwogICAgIH0KICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBuZXdE
aXJlY3RvcnktPmluZGV4KCk7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0
b3J5ID0gbmV3RGlyZWN0b3J5OwotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0
ID0gbmV3RGlyZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxpZ2li
aWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQudGFrZUZp
cnN0RWxpZ2libGUobG9ja2VyKTsKICAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0LmtpbmQgIT0g
RWxpZ2liaWxpdHlLaW5kOjpGdWxsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVs
aWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVE
aXJlY3Rvcnk+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29t
ZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0b3J5KQog
ewogICAgIFJFTEVBU0VfQkFTU0VSVChkaXJlY3RvcnkgPT0gJm1faW5saW5lRGlyZWN0b3J5KTsK
ICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkID0gdHJ1ZTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpk
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJl
Y3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0b3J5KQordm9pZCBJc29IZWFwSW1w
bDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25m
aWc+OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQobV9maXJz
dEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5KTsKICAgICBhdXRvKiBkaXJlY3RvcnlQYWdl
ID0gSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9yKGRpcmVjdG9yeSk7CkBAIC0xMDQs
OCArMTEwLDkgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZShWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICBmb3JFYWNoRGlyZWN0b3J5KAorICAgICAgICBsb2Nr
ZXIsCiAgICAgICAgIFsmXSAoYXV0byYgZGlyZWN0b3J5KSB7Ci0gICAgICAgICAgICBkaXJlY3Rv
cnkuc2NhdmVuZ2UoZGVjb21taXRzKTsKKyAgICAgICAgICAgIGRpcmVjdG9yeS5zY2F2ZW5nZShs
b2NrZXIsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVy
bWFyayA9IDA7CiB9CkBAIC0xMTYsMTcgKzEyMywxNiBAQCB2b2lkIElzb0hlYXBJbXBsPENvbmZp
Zz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVj
bwogewogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAg
IGlmICghbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrKQotICAgICAgICBtX2lubGluZURpcmVjdG9y
eS5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhkZWNvbW1pdHMpOwotICAgIGZvciAoSXNvRGlyZWN0
b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0b3J5OyBwYWdlOyBwYWdlID0gcGFn
ZS0+bmV4dCkgeworICAgICAgICBtX2lubGluZURpcmVjdG9yeS5zY2F2ZW5nZVRvSGlnaFdhdGVy
bWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CisgICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZp
Zz4qIHBhZ2UgPSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0
KSB7CiAgICAgICAgIGlmIChwYWdlLT5pbmRleCgpID49IG1fZGlyZWN0b3J5SGlnaFdhdGVybWFy
aykKLSAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoZGVj
b21taXRzKTsKKyAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1h
cmsobG9ja2VyLCBkZWNvbW1pdHMpOwogICAgIH0KICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1h
cmsgPSAwOwogfQogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXNpemVfdCBJ
c29IZWFwSW1wbDxDb25maWc+OjpmcmVlYWJsZU1lbW9yeSgpCitpbmxpbmUgc2l6ZV90IElzb0hl
YXBJbXBsQmFzZTo6ZnJlZWFibGVNZW1vcnkoKQogewogICAgIHJldHVybiBtX2ZyZWVhYmxlTWVt
b3J5OwogfQpAQCAtMTQ2LDggKzE1MiwxMCBAQCB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+
OjpkZWFsbG9jYXRvck9mZnNldCgpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB1bnNpZ25l
ZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1MaXZlT2JqZWN0cygpCiB7CisgICAgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKICAgICBmb3JFYWNoTGl2ZU9iamVjdCgKKyAgICAgICAgbG9ja2VyLAogICAgICAgICBbJl0g
KHZvaWQqKSB7CiAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfSk7CkBAIC0xNTcsOCAr
MTY1LDEwIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46Om51bUxpdmVPYmplY3RzKCkK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46
Om51bUNvbW1pdHRlZFBhZ2VzKCkKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tl
cih0aGlzLT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvckVhY2hDb21t
aXR0ZWRQYWdlKAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoSXNvUGFnZTxDb25maWc+
JikgewogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0pOwpAQCAtMTY3LDQwICsxNzcs
NDEgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9p
ZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmMmIGZ1bmMp
Cit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZnVuYyhtX2lubGlu
ZURpcmVjdG9yeSk7Ci0gICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBt
X2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KQorICAgIGZvciAoSXNvRGly
ZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0b3J5LmdldCgpOyBwYWdlOyBw
YWdlID0gcGFnZS0+bmV4dCkKICAgICAgICAgZnVuYyhwYWdlLT5wYXlsb2FkKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYgZnVuYykK
K3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZv
ckVhY2hEaXJlY3RvcnkoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChhdXRvJiBkaXJl
Y3RvcnkpIHsKLSAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JFYWNoQ29tbWl0dGVkUGFnZShmdW5j
KTsKKyAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JFYWNoQ29tbWl0dGVkUGFnZShsb2NrZXIsIGZ1
bmMpOwogICAgICAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVP
YmplY3QoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFj
aExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBjb25zdCBG
dW5jJiBmdW5jKQogewogICAgIGZvckVhY2hDb21taXR0ZWRQYWdlKAorICAgICAgICBsb2NrZXIs
CiAgICAgICAgIFsmXSAoSXNvUGFnZTxDb25maWc+JiBwYWdlKSB7Ci0gICAgICAgICAgICBwYWdl
LmZvckVhY2hMaXZlT2JqZWN0KGZ1bmMpOworICAgICAgICAgICAgcGFnZS5mb3JFYWNoTGl2ZU9i
amVjdChsb2NrZXIsIGZ1bmMpOwogICAgICAgICB9KTsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZDsgKytpbmRleCkgewotICAgICAg
ICB2b2lkKiBwb2ludGVyID0gbV9zaGFyZWRDZWxsc1tpbmRleF07CisgICAgICAgIHZvaWQqIHBv
aW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKTsKICAgICAgICAgaWYgKHBvaW50ZXIg
JiYgIShtX2F2YWlsYWJsZVNoYXJlZCAmICgxVSA8PCBpbmRleCkpKQogICAgICAgICAgICAgZnVu
Yyhwb2ludGVyKTsKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXNpemVf
dCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQoKQoraW5saW5lIHNpemVfdCBJc29IZWFw
SW1wbEJhc2U6OmZvb3RwcmludCgpCiB7CiAjaWYgRU5BQkxFX1BIWVNJQ0FMX1BBR0VfTUFQCiAg
ICAgUkVMRUFTRV9CQVNTRVJUKG1fZm9vdHByaW50ID09IG1fcGh5c2ljYWxQYWdlTWFwLmZvb3Rw
cmludCgpKTsKQEAgLTIwOCw4ICsyMTksNyBAQCBzaXplX3QgSXNvSGVhcEltcGw8Q29uZmlnPjo6
Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQ29tbWl0KHZvaWQqIHB0
ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNlOjpkaWRDb21taXQo
dm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAg
IG1fZm9vdHByaW50ICs9IGJ5dGVzOwpAQCAtMjE4LDggKzIyOCw3IEBAIHZvaWQgSXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogI2VuZGlmCiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFw
SW1wbEJhc2U6OmRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIEJV
TlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2Zvb3RwcmludCAtPSBieXRlczsKQEAgLTIyOCwxNSAr
MjM3LDEzIEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkRGVjb21taXQodm9pZCogcHRy
LCBzaXplX3QgYnl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
dm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojppc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90
IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNlOjppc05vd0ZyZWVhYmxlKHZvaWQq
IHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2Zy
ZWVhYmxlTWVtb3J5ICs9IGJ5dGVzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12
b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmlzTm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIsIHNp
emVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJbXBsQmFzZTo6aXNOb0xvbmdlckZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsK
ICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IGJ5dGVzOwpAQCAtMzAxLDcgKzMwOCw3IEBAIHZvaWQq
IElzb0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRlRnJvbVNoYXJlZChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgYm9vCiAgICAgdW5zaWduZWQgaW5kZXhQbHVzT25lID0gX19idWlsdGlu
X2ZmcyhtX2F2YWlsYWJsZVNoYXJlZCk7CiAgICAgQkFTU0VSVChpbmRleFBsdXNPbmUpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gaW5kZXhQbHVzT25lIC0gMTsKLSAgICB2b2lkKiByZXN1bHQgPSBt
X3NoYXJlZENlbGxzW2luZGV4XTsKKyAgICB2b2lkKiByZXN1bHQgPSBtX3NoYXJlZENlbGxzW2lu
ZGV4XS5nZXQoKTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVwIGZyb20gc2hhcmVkIGFn
YWluIG9mIHNpemUgJXVcbiIsIHRoaXMsIHJlc3VsdCwgQ29uZmlnOjpvYmplY3RTaXplKTsKQEAg
LTMxNCw3ICszMjEsNyBAQCB2b2lkKiBJc29IZWFwSW1wbDxDb25maWc+OjphbGxvY2F0ZUZyb21T
aGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvbwogICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVwIGZyb20gc2hhcmVkIG9mIHNpemUgJXVcbiIs
IHRoaXMsIHJlc3VsdCwgQ29uZmlnOjpvYmplY3RTaXplKTsKICAgICAgICAgQkFTU0VSVChpbmRl
eCA8IElzb0hlYXBJbXBsQmFzZTo6bWF4QWxsb2NhdGlvbkZyb21TaGFyZWQpOwogICAgICAgICAq
aW5kZXhTbG90Rm9yPENvbmZpZz4ocmVzdWx0KSA9IGluZGV4OwotICAgICAgICBtX3NoYXJlZENl
bGxzW2luZGV4XSA9IHJlc3VsdDsKKyAgICAgICAgbV9zaGFyZWRDZWxsc1tpbmRleF0gPSBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHJlc3VsdCk7CiAgICAgfQogICAgIEJBU1NFUlQocmVzdWx0KTsK
ICAgICBtX2F2YWlsYWJsZVNoYXJlZCAmPSB+KDFVIDw8IGluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29QYWdlLmgKaW5kZXggNTQyNWI4OGE2Nzg5MjJkODhjMmM1OGQ3NTBjYTI5MjZhYWYzNDAwOC4u
ZjIwNDZlMDMwN2M4NTZlNzEyYWFjNzkwMzExZTM4ZTk2N2YwNzlmYSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29QYWdlLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJCaXRzLmgiCiAjaW5jbHVk
ZSAiRGVmZXJyZWRUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKKyNpbmNsdWRlICJN
dXRleC5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFj
ZSBibWFsbG9jIHsKIApAQCAtNzEsMTkgKzczLDE5IEBAIGNsYXNzIElzb1BhZ2UgOiBwdWJsaWMg
SXNvUGFnZUJhc2UgewogCiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9CiAgICAgCi0gICAgdm9pZCBmcmVlKHZvaWQqKTsKKyAgICB2b2lkIGZyZWUoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHZvaWQqKTsKIAogICAgIC8vIENhbGxlZCBhZnRlciB0
aGlzIHBhZ2UgaXMgYWxyZWFkeSBzZWxlY3RlZCBmb3IgYWxsb2NhdGlvbi4KICAgICBGcmVlTGlz
dCBzdGFydEFsbG9jYXRpbmcoKTsKICAgICAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGFsbG9j
YXRvciBwaWNrcyBhbm90aGVyIHBhZ2UgdG8gcmVwbGFjZSB0aGlzIG9uZS4KLSAgICB2b2lkIHN0
b3BBbGxvY2F0aW5nKEZyZWVMaXN0IGZyZWVMaXN0KTsKKyAgICB2b2lkIHN0b3BBbGxvY2F0aW5n
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBGcmVlTGlzdCk7CiAKICAgICBJc29EaXJl
Y3RvcnlCYXNlPENvbmZpZz4mIGRpcmVjdG9yeSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5OyB9CiAg
ICAgYm9vbCBpc0luVXNlRm9yQWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJblVzZUZv
ckFsbG9jYXRpb247IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZv
aWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaExpdmVP
YmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAK
ICAgICBJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggZjM3YjM0OTMyNzc5MDZjMTgyZDk5MWZhZmZjZWE5
ZGZkNjc4MmY0My4uYTViNzcxMmFjYjAzYTFjZTY5MTM3YWMwNTA2OWI2ZDBmZTJlZmEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtNjUsMTQgKzY1LDE0IEBA
IElzb1BhZ2U8Q29uZmlnPiogSXNvUGFnZTxDb25maWc+OjpwYWdlRm9yKHZvaWQqIHB0cikKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUo
dm9pZCogcGFzc2VkUHRyKQordm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIpCiB7CiAgICAgQkFTU0VS
VCghbV9pc1NoYXJlZCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KHBhc3NlZFB0cikgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKICAgICB1bnNpZ25l
ZCBpbmRleCA9IG9mZnNldCAvIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAKICAgICBpZiAoIW1f
ZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQpIHsKLSAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIu
ZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuZGlkQmVjb21l
KGxvY2tlciwgKnRoaXMpOwogICAgICAgICBtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkID0gdHJ1
ZTsKICAgICB9CiAgICAgCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSXNvUGFnZTxDb25maWc+Ojpm
cmVlKHZvaWQqIHBhc3NlZFB0cikKICAgICB1bnNpZ25lZCBuZXdXb3JkID0gbV9hbGxvY0JpdHNb
d29yZEluZGV4XSAmPSB+KDEgPDwgYml0SW5kZXgpOwogICAgIGlmICghbmV3V29yZCkgewogICAg
ICAgICBpZiAoIS0tbV9udW1Ob25FbXB0eVdvcmRzKQotICAgICAgICAgICAgbV9lbXB0eVRyaWdn
ZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAgICAgIG1fZW1wdHlUcmlnZ2VyLmRpZEJlY29t
ZShsb2NrZXIsICp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlz
dCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZygpCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXZvaWQgSXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlz
dCBmcmVlTGlzdCkKK3ZvaWQgSXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIEZyZWVMaXN0IGZyZWVMaXN0KQogewogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMTcsMTkg
KzIxNywxOSBAQCB2b2lkIElzb1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3Qg
ZnJlZUxpc3QpCiAgICAgCiAgICAgZnJlZUxpc3QuZm9yRWFjaDxDb25maWc+KAogICAgICAgICBb
Jl0gKHZvaWQqIHB0cikgewotICAgICAgICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgZnJl
ZShsb2NrZXIsIHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1faXNJ
blVzZUZvckFsbG9jYXRpb24pOwogICAgIG1faXNJblVzZUZvckFsbG9jYXRpb24gPSBmYWxzZTsK
IAotICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmhhbmRsZURlZmVycmFsKCp0aGlzKTsKLSAgICBt
X2VtcHR5VHJpZ2dlci5oYW5kbGVEZWZlcnJhbCgqdGhpcyk7CisgICAgbV9lbGlnaWJpbGl0eVRy
aWdnZXIuaGFuZGxlRGVmZXJyYWwobG9ja2VyLCAqdGhpcyk7CisgICAgbV9lbXB0eVRyaWdnZXIu
aGFuZGxlRGVmZXJyYWwobG9ja2VyLCAqdGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9y
RWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvUGFnZTxDb25maWc+Ojpm
b3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVu
YyYgZnVuYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIHdvcmRJbmRleCA9IDA7IHdvcmRJbmRleCA8
IGJpdHNBcnJheUxlbmd0aChudW1PYmplY3RzKTsgKyt3b3JkSW5kZXgpIHsKICAgICAgICAgdW5z
aWduZWQgd29yZCA9IG1fYWxsb2NCaXRzW3dvcmRJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkSGVhcC5oCmluZGV4IGM5ZDA0ZWU5MzEzNjk1OWQzMjNkYjU4MGQyMDM2YjlhZWJj
MjIxYTMuLjVlYTUxZTVkMWZkZGVlZmY2ZjhkNTZmZDdjOTA3ZmU0MmJkZDE0MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFZh
cmlhZGljQnVtcEFsbG9jYXRvciB7CiAKIGNsYXNzIElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3Rh
dGljUGVyUHJvY2VzczxJc29TaGFyZWRIZWFwPiB7CiBwdWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVh
cChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKKyAgICBJc29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKQogICAgIHsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xh
c3MgSXNvU2hhcmVkSGVhcCA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+
IHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZD4KLSAgICB2b2lkKiBhbGxvY2F0
ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSk7CisgICAgdm9pZCogYWxsb2NhdGVTbG93KGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKIAogICAgIElz
b1NoYXJlZFBhZ2UqIG1fY3VycmVudFBhZ2UgeyBudWxscHRyIH07CiAgICAgVmFyaWFkaWNCdW1w
QWxsb2NhdG9yIG1fYWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFy
ZWRIZWFwSW5saW5lcy5oCmluZGV4IGQ5ZjdmMTE2NmM1YWQwNmYwNGQ4MTIxYzQ5ODgyMjdiZGZk
MDFkMDQuLmZjNzk1OGVjNGQ4ODQ0MWFiNTY1MjhiMjlmMmE5NmI3NzY5NjJjN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKQEAgLTU1LDEyICs1
NSwxMiBAQCB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZU5ldyhib29sIGFib3J0T25GYWls
dXJlKQogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBvYmplY3RTaXplID0gY29tcHV0ZU9iamVjdFNp
emVGb3JTaGFyZWRDZWxsKHBhc3NlZE9iamVjdFNpemUpOwogICAgIHJldHVybiBtX2FsbG9jYXRv
ci50ZW1wbGF0ZSBhbGxvY2F0ZTxvYmplY3RTaXplPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQq
IHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3c8cGFzc2VkT2JqZWN0U2l6ZT4oYWJv
cnRPbkZhaWx1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdzxwYXNzZWRPYmpl
Y3RTaXplPihsb2NrZXIsIGFib3J0T25GYWlsdXJlKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBs
YXRlPHVuc2lnbmVkIHBhc3NlZE9iamVjdFNpemU+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJl
ZEhlYXA6OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lk
KiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNsb3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYgbG9ja2VyLCBib29sIGFib3J0T25GYWlsdXJlKQogewogICAgIFNjYXZlbmdlciYgc2NhdmVu
Z2VyID0gKlNjYXZlbmdlcjo6Z2V0KCk7CiAgICAgc2NhdmVuZ2VyLmRpZFN0YXJ0R3Jvd2luZygp
OwpAQCAtNzMsNyArNzMsNyBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9j
YXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnRQ
YWdlKQotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZygpOworICAgICAgICBt
X2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIpOwogCiAgICAgbV9jdXJyZW50UGFn
ZSA9IHBhZ2U7CiAgICAgbV9hbGxvY2F0b3IgPSBtX2N1cnJlbnRQYWdlLT5zdGFydEFsbG9jYXRp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZS5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmgKaW5kZXggYTllMTM3ZTQx
NDE4ODU2NGQwNTgwNDQ5MGI1NDM3YTUwMGU1NzBiYi4uMjNkMWM3Nzg5YzU1Nzc0YmYyMGNhZjE0
ZjMyZDI0NzgyOTA1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29T
aGFyZWRQYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmgK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSXNvU2hhcmVkUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFz
ZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHZv
aWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+
Jiwgdm9pZCopOwogICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBzdGFydEFsbG9jYXRpbmcoKTsK
LSAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7CisgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAKIHByaXZhdGU6CiAgICAgSXNvU2hhcmVkUGFn
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxp
bmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKaW5k
ZXggYzQyMTZiNTFkYWM5ZDFlOTVjMzAzNWQ2NjE2ZmEzZTdjZTU5MDdhOS4uOTg0MjFhYzdiMmNj
NmU2Mjg1MGU3MDY1NzNjNDMwODYyNzBlYTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIElzb1NoYXJl
ZFBhZ2U6OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxU
eXBlPiYgaGFuZAogICAgIC8vIElzb0RlYWxsb2NhdG9yOjpkZWFsbG9jYXRlIGlzIGNhbGxlZCBm
cm9tIGRlbGV0ZSBvcGVyYXRvci4gVGhpcyBpcyBkaXNwYXRjaGVkIGJ5IHZ0YWJsZSBpZiB2aXJ0
dWFsIGRlc3RydWN0b3IgZXhpc3RzLgogICAgIC8vIElmIHZwdHIgaXMgcmVwbGFjZWQgdG8gdGhl
IG90aGVyIHZwdHIsIHdlIG1heSBhY2NpZGVudGFsbHkgY2hhaW4gdGhpcyBwb2ludGVyIHRvIHRo
ZSBpbmNvcnJlY3QgSGVhcEltcGxCYXNlLCB3aGljaCB0b3RhbGx5IGJyZWFrcyB0aGUgSXNvSGVh
cCdzIGdvYWwuCiAgICAgLy8gVG8gaGFyZGVuIHRoYXQsIHdlIHZhbGlkYXRlIHRoYXQgdGhpcyBw
b2ludGVyIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBmb3IgYSBzcGVjaWZpYyBIZWFwSW1wbEJhc2Ug
aGVyZSBieSBjaGVja2luZyB3aGV0aGVyIHRoaXMgcG9pbnRlciBpcyBsaXN0ZWQgaW4gSGVhcElt
cGxCYXNlJ3Mgc2hhcmVkIGNlbGxzLgotICAgIFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5tX3No
YXJlZENlbGxzW2luZGV4XSA9PSBwdHIpOworICAgIFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5t
X3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKSA9PSBwdHIpOwogICAgIGhlYXBJbXBsLm1fYXZhaWxh
YmxlU2hhcmVkIHw9ICgxVSA8PCBpbmRleCk7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5l
IFZhcmlhZGljQnVtcEFsbG9jYXRvciBJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoKQog
ICAgIHJldHVybiBWYXJpYWRpY0J1bXBBbGxvY2F0b3IocGF5bG9hZEVuZCwgcmVtYWluaW5nKTsK
IH0KIAotaW5saW5lIHZvaWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcoKQoraW5saW5l
IHZvaWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKaW5kZXggZGUyODY3ZTc4ZGUxY2EyNTYzMGMzNmQxODIy
ODMzZjE3ZmEwN2VmMy4uYmFiYmIzMDQ1YjhhNTA2ZTgyODMxMDJlYjZjM2M0Y2ViOWVkMjliMiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oCkBAIC02MCw4ICs2MCw4IEBAIGNsYXNzIElzb1RMUyB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRp
YyB2b2lkKiBhbGxvY2F0ZUltcGwoYXBpOjpJc29IZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFp
bHVyZSk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQqIGFs
bG9jYXRlRmFzdCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkKiBhbGxvY2F0
ZUZhc3QoYXBpOjpJc29IZWFwPFR5cGU+JiwgdW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25G
YWlsdXJlKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5
cGU+CiAgICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mLCBi
b29sIGFib3J0T25GYWlsdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTQWxsb2NhdG9yRW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxs
b2NhdG9yRW50cnkuaAppbmRleCAzNWRiODcxNDdiNDkyMDY2YTI4ZWZmZDU3M2RmNzM2ZjcwODEx
MzlmLi5lMWQ4YWFjYWZlMmZmYWJkYTc0ODAzZTliNzA2YjBiZjU2ZGU5ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5LmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCkBAIC00Miw2ICs0Miw4
IEBAIGNsYXNzIElzb1RMU0FsbG9jYXRvckVudHJ5IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29U
TFNFbnRyeTxJc29BbGxvY2F0b3I8Q29uZmlnCiAgICAgSXNvVExTQWxsb2NhdG9yRW50cnkoSXNv
SGVhcEltcGw8Q29uZmlnPiYpOwogCiAgICAgdm9pZCBjb25zdHJ1Y3Qodm9pZCogZHN0KSBvdmVy
cmlkZTsKKworICAgIHZvaWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogICAgIAog
ICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVhcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaAppbmRleCAxYWUxZTZh
NWFjYTQ5MGUwNTIyNzExNGY1ZTRlMjA1ZmQ0OTRmZjQzLi4zZTU1N2FkMTc3Yjg2ZGQ4YmU2YzA3
Zjc0M2M5YTE4ZWQ2ZTNlMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKQEAgLTQ2LDUgKzQ2LDExIEBAIHZvaWQgSXNv
VExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6Y29uc3RydWN0KHZvaWQqIGRzdCkKICAgICBuZXcg
KGRzdCkgSXNvQWxsb2NhdG9yPENvbmZpZz4obV9oZWFwKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgordm9pZCBJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2
b2lkKiBlbnRyeSkKK3sKKyAgICBzdGF0aWNfY2FzdDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KGVu
dHJ5KS0+c2NhdmVuZ2UobV9oZWFwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnku
aCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCmluZGV4
IDczODRjZTBkMmFiYjQzZmZiNTZhNjc4OGY0NzUxMGI2NGYyNjRmNGQuLmEwZGJjMzAzNzQ0Mjg3
MGVkMDg5YWE5MjBiZDRiZmFhZDk3ZWRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIElzb1RM
U0RlYWxsb2NhdG9yRW50cnkgZmluYWwgOiBwdWJsaWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0Rl
YWxsb2NhdG9yPENvCiAgICAgSXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+Jik7CiAKICAgICB2b2lkIGNvbnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKaW5kZXggY2JkNWY5ZGY3ZWZiNzRjMzEyMjM5
NzgxNWNhMzkxMjA2MjljZDQzZi4uYzk1MzQyODBjZThkNWExOGIwMjY4YmQwNzgwN2Q3ZWJiN2My
MmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRv
ckVudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeUlubGluZXMuaApAQCAtNDMsNSArNDMsMTEgQEAgdm9pZCBJc29UTFNEZWFsbG9j
YXRvckVudHJ5PENvbmZpZz46OmNvbnN0cnVjdCh2b2lkKiBlbnRyeSkKICAgICBuZXcgKGVudHJ5
KSBJc29EZWFsbG9jYXRvcjxDb25maWc+KGxvY2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b25maWc+Cit2b2lkIElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9p
ZCogZW50cnkpCit7CisgICAgc3RhdGljX2Nhc3Q8SXNvRGVhbGxvY2F0b3I8Q29uZmlnPio+KGVu
dHJ5KS0+c2NhdmVuZ2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCmluZGV4IGNiMDNiZGUyODk1N2UyY2JmYTEwYWZh
ZDg5NDI4YmIzZWE2ZmFmNzMuLjgzMGE1MTFiZjk5ZGVjZDhiZjY0NGEzZmRlMzhiMzBjYWM2NzA4
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCkBAIC0zMSwxMCArMzEs
OCBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLUlzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShz
aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fb2Zmc2V0KFVJTlRfTUFYKQot
ICAgICwgbV9hbGlnbm1lbnQoYWxpZ25tZW50KQotICAgICwgbV9zaXplKHNpemUpCitJc29UTFNF
bnRyeTo6SXNvVExTRW50cnkoc2l6ZV90IHNpemUpCisgICAgOiBtX3NpemUoc2l6ZSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oCmluZGV4IDc0ZjQ0OWJmYTI4YTQwMWZi
MDQzODhjYmNlNTE0MzZlODY4ZmQ2MTQuLmE0NzhlNmEzMmRlMTA2YWNjN2UzOTBhZTJhYjJmZTkw
ZjEwYjc0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnku
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmgKQEAgLTY1LDcgKzY1
LDcgQEAgY2xhc3MgQkVYUE9SVCBJc29UTFNFbnRyeSB7CiAgICAgdmlydHVhbCB+SXNvVExTRW50
cnkoKTsKICAgICAKICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KLSAgICBzaXplX3QgYWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbm1lbnQ7IH0K
KyAgICBzaXplX3QgYWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGV4
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0ICsgbV9zaXplOyB9CiAgICAgCkBAIC03OCw3
ICs3OCw3IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExTRW50cnkgewogICAgIHZvaWQgd2Fsa1VwVG9J
bmNsdXNpdmUoSXNvVExTRW50cnkqLCBjb25zdCBGdW5jJik7CiAKIHByb3RlY3RlZDoKLSAgICBJ
c29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CisgICAgSXNvVExTRW50
cnkoc2l6ZV90IHNpemUpOwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXNvVExT
OwpAQCAtODYsMTUgKzg2LDE0IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExTRW50cnkgewogCiAgICAg
SXNvVExTRW50cnkqIG1fbmV4dCB7IG51bGxwdHIgfTsKICAgICAKLSAgICBzaXplX3QgbV9vZmZz
ZXQ7IC8vIENvbXB1dGVkIGluIGNvbnN0cnVjdG9yLgotICAgIHNpemVfdCBtX2FsaWdubWVudDsK
LSAgICBzaXplX3QgbV9zaXplOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgVUlOVF9NQVggfTsg
Ly8gQ29tcHV0ZWQgaW4gY29uc3RydWN0b3IuCisgICAgdW5zaWduZWQgbV9zaXplOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgogY2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDog
cHVibGljIElzb1RMU0VudHJ5IHsKIHB1YmxpYzoKLSAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCk7
CisgICAgfkRlZmF1bHRJc29UTFNFbnRyeSgpID0gZGVmYXVsdDsKICAgICAKIHByb3RlY3RlZDoK
ICAgICBEZWZhdWx0SXNvVExTRW50cnkoKTsKQEAgLTEwNiw4ICsxMDUsNiBAQCBjbGFzcyBEZWZh
dWx0SXNvVExTRW50cnkgOiBwdWJsaWMgSXNvVExTRW50cnkgewogICAgIC8vIExpa2V3aXNlLCB0
aGlzIGlzIHNlcGFyYXRlIGZyb20gc2NhdmVuZ2luZy4gV2hlbiB0aGUgVExTIGlzIHNodXR0aW5n
IGRvd24sIHdlIHdpbGwgYmUgYXNrZWQgdG8KICAgICAvLyBzY2F2ZW5nZSBhbmQgdGhlbiB3ZSB3
aWxsIGJlIGFza2VkIHRvIGRlc3RydWN0LgogICAgIHZvaWQgZGVzdHJ1Y3Qodm9pZCogZW50cnkp
IG92ZXJyaWRlOwotCi0gICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29U
TFNFbnRyeUlubGluZXMuaAppbmRleCA2ZjYxNWY5NTBjZGJmMGFhMDYzMTM1OTFkMzgzYzhjMjRj
MjhmM2IzLi5jMmE3MjdlMGYzNWY2YWM0MzAxY2IzYWE0OWVkYmE5NWNmMTBhN2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnlJbmxpbmVzLmgKQEAgLTQzLDEzICs0Mywx
MCBAQCB2b2lkIElzb1RMU0VudHJ5Ojp3YWxrVXBUb0luY2x1c2l2ZShJc29UTFNFbnRyeSogbGFz
dCwgY29uc3QgRnVuYyYgZnVuYykKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgogRGVm
YXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OkRlZmF1bHRJc29UTFNFbnRyeSgpCi0gICAgOiBJ
c29UTFNFbnRyeShhbGlnbm9mKEVudHJ5VHlwZSksIHNpemVvZihFbnRyeVR5cGUpKQotewotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5cGU+Ci1EZWZhdWx0SXNvVExTRW50cnk8RW50cnlU
eXBlPjo6fkRlZmF1bHRJc29UTFNFbnRyeSgpCisgICAgOiBJc29UTFNFbnRyeShzaXplb2YoRW50
cnlUeXBlKSkKIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFbnRyeVR5cGUpIDw9IFVJTlQz
Ml9NQVgpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHZvaWQqKSA9PSBhbGlnbm9mKEVudHJ5
VHlwZSksICJCZWNhdXNlIElzb1RMU0VudHJ5IGluY2x1ZGVzIHZ0YWJsZSwgaXQgc2hvdWxkIGJl
IHRoZSBzYW1lIHRvIHRoZSBwb2ludGVyIik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5
VHlwZT4KQEAgLTY3LDEyICs2NCw1IEBAIHZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OmRlc3RydWN0KHZvaWQqIHBhc3NlZEVudHJ5KQogICAgIGVudHJ5LT5+RW50cnlUeXBlKCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KLXZvaWQgRGVmYXVsdElzb1RMU0Vu
dHJ5PEVudHJ5VHlwZT46OnNjYXZlbmdlKHZvaWQqIHBhc3NlZEVudHJ5KQotewotICAgIEVudHJ5
VHlwZSogZW50cnkgPSBzdGF0aWNfY2FzdDxFbnRyeVR5cGUqPihwYXNzZWRFbnRyeSk7Ci0gICAg
ZW50cnktPnNjYXZlbmdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAppbmRleCAxZWFiMjcxYzQwY2E3OWEzZGRlZmZi
ZmQyNWUwZTc0ODY4YTRkMzE5Li4wZDRiMjAxOTRlMGNkZWQyMDg4YzllNzRjNzI4NzQ4NjQ1YTM0
MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaApAQCAtNjAsNyArNjAs
NyBAQCB2b2lkIElzb1RMUzo6c2NhdmVuZ2UoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiAg
ICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBoYW5kbGUuYWxsb2NhdG9yT2Zm
c2V0KCk7CiAgICAgaWYgKG9mZnNldCA8IHRscy0+bV9leHRlbnQpCi0gICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmln
Pio+KHRscy0+bV9kYXRhICsgb2Zmc2V0KS0+c2NhdmVuZ2UoKTsKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxJc29BbGxvY2F0b3I8dHlwZW5hbWUgYXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+
Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQpLT5zY2F2ZW5nZShoYW5kbGUuaW1wbCgpKTsKICAgICBv
ZmZzZXQgPSBoYW5kbGUuZGVhbGxvY2F0b3JPZmZzZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxz
LT5tX2V4dGVudCkKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29EZWFsbG9jYXRvcjx0eXBl
bmFtZSBhcGk6Oklzb0hlYXA8VHlwZT46OkNvbmZpZz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCkt
PnNjYXZlbmdlKCk7CkBAIC03NCwxMyArNzQsMTMgQEAgdm9pZCogSXNvVExTOjphbGxvY2F0ZUlt
cGwoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAg
SXNvVExTKiB0bHMgPSBnZXQoKTsKICAgICBpZiAoIXRscyB8fCBvZmZzZXQgPj0gdGxzLT5tX2V4
dGVudCkKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdzxDb25maWc+KGhhbmRsZSwgYWJvcnRP
bkZhaWx1cmUpOwotICAgIHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KG9mZnNldCwg
YWJvcnRPbkZhaWx1cmUpOworICAgIHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhh
bmRsZSwgb2Zmc2V0LCBhYm9ydE9uRmFpbHVyZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENv
bmZpZz4KLXZvaWQqIElzb1RMUzo6YWxsb2NhdGVGYXN0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBh
Ym9ydE9uRmFpbHVyZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4K
K3ZvaWQqIElzb1RMUzo6YWxsb2NhdGVGYXN0KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB1
bnNpZ25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxv
Y2F0ZShhYm9ydE9uRmFpbHVyZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxs
b2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShoYW5kbGUuaW1wbCgp
LCBhYm9ydE9uRmFpbHVyZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5h
bWUgVHlwZT4KQEAgLTEwOCw3ICsxMDgsNyBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb1RMUzo6YWxs
b2NhdGVTbG93KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCBib29sIGFib3J0T25GYQogICAg
IAogICAgIElzb1RMUyogdGxzID0gZW5zdXJlSGVhcEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAK
LSAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUuYWxsb2NhdG9yT2Zm
c2V0KCksIGFib3J0T25GYWlsdXJlKTsKKyAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29u
ZmlnPihoYW5kbGUsIGhhbmRsZS5hbGxvY2F0b3JPZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAKaW5kZXggNGIzMzVlYTUxOWQ0NWU4ZjE2YjJhOGQ5
MDllMTMwNDYxOWQ1NzQ4NC4uMGJhZTYwNzcwMWU0OTBjN2FlMmE5ZjQwZTdlOTE3Y2VjZmIxNzMy
NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcApAQCAtNDQsNyArNDQs
OSBAQCB2b2lkIElzb1RMU0xheW91dDo6YWRkKElzb1RMU0VudHJ5KiBlbnRyeSkKICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tpbmcoYWRkaW5nTXV0ZXgpOwogICAgIGlmIChtX2hlYWQp
IHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG1fdGFpbCk7Ci0gICAgICAgIGVudHJ5LT5tX29m
ZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4
dGVudCgpKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50
cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAgICAgUkVMRUFTRV9CQVNT
RVJUKG9mZnNldCA8IFVJTlRfTUFYKTsKKyAgICAgICAgZW50cnktPm1fb2Zmc2V0ID0gb2Zmc2V0
OwogICAgICAgICBzdGQ6OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2Vx
X2NzdCk7CiAgICAgICAgIG1fdGFpbC0+bV9uZXh0ID0gZW50cnk7CiAgICAgICAgIG1fdGFpbCA9
IGVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI0YzRlZDdiZWJkY2E4
NmU3MWQ4M2MyMjJlNmRjMWNhYTA0ZDAyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvUGFja2VkLmgKQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQWxnb3JpdGhtLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSA8YXJy
YXk+CisKK25hbWVzcGFjZSBibWFsbG9jIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNz
IFBhY2tlZCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlw
ZSA9IHRydWU7CisKKyAgICBQYWNrZWQoKQorICAgICAgICA6IFBhY2tlZChUIHsgfSkKKyAgICB7
CisgICAgfQorCisgICAgUGFja2VkKGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbWVt
Y3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBU
IGdldCgpIGNvbnN0CisgICAgeworICAgICAgICBUIHZhbHVlOworICAgICAgICBtZW1jcHkoJnZh
bHVlLCBtX3N0b3JhZ2UuZGF0YSgpLCBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgfQorCisgICAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBt
ZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgJnZhbHVlLCBzaXplb2YoVCkpOworICAgIH0KKworICAg
IFBhY2tlZDxUPiYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9s
ZFZhbHVlID0gZ2V0KCk7CisgICAgICAgIHNldChzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsK
KyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgIH0KKworICAgIHZvaWQgc3dhcChQYWNrZWQm
IG90aGVyKQorICAgIHsKKyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+PgorICAgIHZvaWQgc3dhcChPdGhlciYgb3Ro
ZXIpCisgICAgeworICAgICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIFQgdDIgPSBvdGhlci5n
ZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisK
KyAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAgeworICAgICAgICBUIHQxID0gZ2V0KCk7CisgICAg
ICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQodDEpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHNpemVvZihUKT4gbV9zdG9yYWdlOworfTsKKwor
Ly8gUGFja2VkQWxpZ25lZFB0ciBjYW4gdGFrZSBhbGlnbm1lbnQgcGFyYW1ldGVyIHRvby4gUGFj
a2VkQWxpZ25lZFB0ciBvbmx5IHVzZXMgdGhpcyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaWYgaXQg
aXMgcHJvZml0YWJsZTogd2UgdXNlCisvLyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gb25seSB3aGVu
IHdlIGNhbiByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHN0b3JhZ2UuIFNpbmNlIHRoZSBwb2ludGVy
IHdpZHRoIGlzIDM2IGJpdHMgYW5kIEpTQ2VsbHMgYXJlIGFsaWduZWQgdG8gMTYgYnl0ZXMsCisv
LyB3ZSBjYW4gdXNlIDQgYml0cyBpbiBEYXJ3aW4gQVJNNjQsIHdlIGNhbiBjb21wYWN0IGNlbGwg
cG9pbnRlciBpbnRvIDQgYnl0ZXMgKDMyIGJpdHMpLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGFsaWdubWVudCA9IGFsaWdub2YoVCk+CitjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpLCAiQWxpZ25t
ZW50IG5lZWRzIHRvIGJlIHBvd2VyLW9mLXR3byIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1BhY2tlZFR5cGUgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxp
Z25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxlID0gZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihh
bGlnbm1lbnQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemVXaXRo
b3V0QWxpZ25tZW50U2hpZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDgsIHVpbnRwdHJfdD4oQk9T
X0VGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAvIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8
OCwgdWludHB0cl90PihCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggLSBhbGlnbm1lbnRTaGlm
dFNpemVJZlByb2ZpdGFibGUpIC8gODsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBbGln
bm1lbnRTaGlmdFByb2ZpdGFibGUgPSBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA+
IHN0b3JhZ2VTaXplV2l0aEFsaWdubWVudFNoaWZ0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgYWxpZ25tZW50U2hpZnRTaXplID0gaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPyBh
bGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUgOiAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgc3RvcmFnZVNpemUgPSBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdDsKKwor
ICAgIGNvbnN0ZXhwciBQYWNrZWRBbGlnbmVkUHRyKCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgUGFja2VkQWxpZ25lZFB0cihzdGQ6Om51bGxw
dHJfdCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWRB
bGlnbmVkUHRyKFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICB9CisK
KyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFBhY2tlZFB0cjw+
IGNhbiBsb2FkIG1lbW9yeSB3aXRoIG9uZSBtb3YgYnkgY2hlY2tpbmcgcGFnZSBib3VuZGFyeS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzc1
NAorICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSAwOworI2lmIEJDUFUoTElUVExFX0VORElBTikK
KyAgICAgICAgbWVtY3B5KCZ2YWx1ZSwgbV9zdG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNpemUpOwor
I2Vsc2UKKyAgICAgICAgbWVtY3B5KGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChz
aXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBtX3N0b3JhZ2UuZGF0YSgpLCBzdG9yYWdlU2l6
ZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQorICAg
ICAgICAgICAgdmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxUKj4odmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc2V0KFQqIHBhc3NlZFZh
bHVlKQorICAgIHsKKyAgICAgICAgdWludHB0cl90IHZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4ocGFzc2VkVmFsdWUpOworICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFi
bGUpCisgICAgICAgICAgICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXplOworI2lmIEJDUFUo
TElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwg
c3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJp
dHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNp
emUpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAg
ICB7CisgICAgICAgIHNldChudWxscHRyKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqZ2V0KCk7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsg
fQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252
ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVk
ZWYgVCogKFBhY2tlZEFsaWduZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVy
YXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmUGFja2Vk
QWxpZ25lZFB0cjo6bV9zdG9yYWdlIDogbnVsbHB0cjsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQorCisgICAgUGFja2VkQWxpZ25lZFB0ciYg
b3BlcmF0b3I9KFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCogZXhj
aGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsK
KyAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4g
b2xkVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBzd2FwKHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFy
KCk7IH0KKworICAgIHZvaWQgc3dhcChQYWNrZWRBbGlnbmVkUHRyJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6
aXNQYWNrZWRUeXBlPj4KKyAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQorICAgIHsKKyAgICAg
ICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAg
c2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAo
VCogdDIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBzdGQ6OnN3YXAo
dDEsIHQyKTsKKyAgICAgICAgc2V0KHQxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjph
cnJheTx1aW50OF90LCBzdG9yYWdlU2l6ZT4gbV9zdG9yYWdlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK2NsYXNzIFBhY2tlZDxUKj4gOiBwdWJsaWMgUGFja2VkQWxpZ25lZFB0cjxULCAx
PiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFBhY2tlZEFsaWduZWRQdHI8VCwgMT47Cisg
ICAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQ
YWNrZWRQdHIgPSBQYWNrZWQ8VCo+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFBh
Y2tlZFB0clRyYWl0cyB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdXNpbmcgUmViaW5kVHJh
aXRzID0gUGFja2VkUHRyVHJhaXRzPFU+OworCisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQYWNr
ZWRQdHI8VD47CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgVCogZXhjaGFuZ2UoU3Rv
cmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFs
dWUpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4gc3RhdGljIHZvaWQgc3dhcChQ
YWNrZWRQdHI8VD4mIGEsIE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQorCisgICAgc3RhdGljIFQq
IHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNw
cAppbmRleCBlYjE1YjMxZjEzNThkMmFhYmM3NDI5ZjI2ZDM1YjNmNzk1OTA4MmM4Li42MGYwNjc2
YmYzMDZhNjJmYmMyMjJiYTczYzJiMDM1YTljMWRjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
Y2F2ZW5nZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQnVsa0RlY29tbWl0Lmgi
CiAjaW5jbHVkZSAiRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
SXNvSGVhcEltcGxJbmxpbmVzLmgiCiAjaWYgQk9TKERBUldJTikKICNpbXBvcnQgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxtYWNoL2hvc3RfaW5mby5oPgpAQCAtNjcsNyArNjgsNyBA
QCBzdHJ1Y3QgUHJpbnRUaW1lIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdF
KFNjYXZlbmdlcik7CiAKLVNjYXZlbmdlcjo6U2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKQorU2NhdmVuZ2VyOjpTY2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
CiB7CiAgICAgQkFTU0VSVCghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5oCmluZGV4IGY0ODkzNGI1MTFiNmU2YzE4
ZDg5NmQ1ZDU5MzQxNTliZjUzZTk5MGMuLjcyOGE3NWUzYmRmZGExOTY5Y2EwNTg1MGU2NTE5ZTI0
MDkyOGI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaApAQCAtNDIsNyArNDIsNyBA
QCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIFNjYXZlbmdlciA6IHB1YmxpYyBTdGF0aWNQ
ZXJQcm9jZXNzPFNjYXZlbmdlcj4gewogcHVibGljOgotICAgIEJFWFBPUlQgU2NhdmVuZ2VyKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBCRVhQT1JUIFNjYXZlbmdlcihjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgflNjYXZlbmdlcigpID0gZGVsZXRlOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCmluZGV4IDVjOGUyOGEwNTA5MzFhMTQ1M2Iy
ZTNhOTkyY2YyZjgyOTVlYzlmZWYuLmFkZjIxNjcxZWJkODdhOWZkNjU3OGE0NWNhNjE2MDAyZjVj
NzU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIGJtYWxsb2MgewogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoVk1I
ZWFwKTsKIAotVk1IZWFwOjpWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitWTUhlYXA6
OlZNSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvVk1IZWFwLmgKaW5kZXggNDdhMTEzZGJmMjczNjQxMTQxMjg4YWI2YzRlNTA1ZWFlNWJiNWMx
MS4uNjhmMGFiZTZhZDU5YTBlNDk4YTQwOWJjMTUwOGNjOTA1ZjFlMDc4MSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNSGVhcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgZW51bSB7IFN5bmMsIEFzeW5j
IH0gU2NhdmVuZ2VNb2RlOwogCiBjbGFzcyBWTUhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2Vz
czxWTUhlYXA+IHsKIHB1YmxpYzoKLSAgICBWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
OworICAgIFZNSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAg
TGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAppbmRleCBmMTFiNTE3ZDJmNTdiNWNkZDE3YjRi
YjVhYWM2MGFiZWY5OWU3NTQyLi4wYmI4Mjk2OTJhYzc4MjAyMjIwNTI2NTMwMDM4OWZjYjY5NDZj
OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMg
Y29uc3QgbWFsbG9jX2ludHJvc3BlY3Rpb25fdCB6b25lSW50cm9zcGVjdCA9IHsKICAgICAuc3Rh
dGlzdGljcyA9IGJtYWxsb2M6OnN0YXRpc3RpY3MKIH07CiAKLVpvbmU6OlpvbmUoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCitab25lOjpab25lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQogewogICAgIG1hbGxvY196b25lX3Q6OnNpemUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAg
bWFsbG9jX3pvbmVfdDo6em9uZV9uYW1lID0gIldlYktpdCBNYWxsb2MiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pv
bmUuaAppbmRleCAwMDlkNzIyN2YyMzg3N2VmMWVhNjgyYzAyODJjZDZlZmFmOGU2ZDU3Li5mNWQ2
NDk1YTQxZTJlY2MwY2VkZTFjNTM1ZTUzMjE1NGMwMDM1ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1pvbmUuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBab25lIDogcHVibGljIG1hbGxvY196b25lX3Qgewog
ICAgIC8vIEVub3VnaCBjYXBhY2l0eSB0byB0cmFjayBhIDY0R0IgaGVhcCwgc28gcHJvYmFibHkg
ZW5vdWdoIGZvciBhbnl0aGluZy4KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0
eSA9IDIwNDg7CiAKLSAgICBab25lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBab25l
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICBab25lKHRhc2tfdCwgbWVtb3J5
X3JlYWRlcl90LCB2bV9hZGRyZXNzX3QpOwogCiAgICAgdm9pZCBhZGRSYW5nZShSYW5nZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzNhZjg1
YzMzZTVlNWNhYTdmZWYzNDEyNGRjNmE5YWQxOTZmZmY5ZS4uNWUyN2MxZjU4NWFlMmI5NTNkOWVm
MTI3YThiYTUzMThlZDliMGMwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTE1ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIElzb0hlYXAncyBpbml0
aWFsIHNldHVwIHNob3VsZCBiZSBzbWFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hl
YXAuY3BwOgorICAgICAgICAoYXNzZXJ0SGFzT2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRIYXNP
bmx5T2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRDbGVhbik6CisgICAgICAgIChURVNUKToKKwog
MjAyMC0wMS0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NDQ4MCwgcjI1NDQ5NiwgYW5kIHIyNTQ1
MTcuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lz
b0hlYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFw
LmNwcAppbmRleCA0MjYzZjExYjM2MGNlMGJjMmZkNjA1ODUyNjY2NzI0YzA4ODQxZTgxLi40NmRh
NTllNjZhNzg0N2JlNjM5MmFhZDUzYzViYmViMjk4MWEyZmJlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKQEAgLTgwLDYgKzgwLDcg
QEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwg
c3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsK
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwog
ICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZd
ICh2b2lkKiBvYmplY3QpIHsKICAgICAgICAgICAgIHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7CiAg
ICAgICAgIH0pOwpAQCAtOTYsNiArOTcsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2Jq
ZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZQogICAg
IGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6
TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisg
ICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKICAgICAgICAgICAg
IEVYUEVDVF9FUShwb2ludGVycy5lcmFzZShvYmplY3QpLCAxVSk7CiAgICAgICAgIH0pOwpAQCAt
MTA4LDE1ICsxMTAsMTEgQEAgc3RhdGljIHZvaWQgYXNzZXJ0Q2xlYW4oSXNvSGVhcDxoZWFwVHlw
ZT4mIGhlYXApCiAgICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVu
dDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxs
b2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShp
bXBsLm51bUxpdmVPYmplY3RzKCkpOwotICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShp
bXBsLm51bUxpdmVPYmplY3RzKCkpOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7CiAgICAg
aWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAg
IGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxs
b2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwu
bnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgfQogfQpAQCAtMTg3LDE5ICsxODUsMTIgQEAgVEVT
VChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCiAg
ICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7Ci0g
ICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7CiAgICAgYXV0byYgaW1wbCA9IGhl
YXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4
PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPSBp
bXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIG51bUNvbW1pdHRl
ZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOwogICAgIGFzc2VydEhhc09u
bHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBw
dHJzLnNpemUoKSAvIDI7IGktLTspCiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2Nh
dGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxv
Y2tlcihpbXBsLmxvY2spOwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29tbWl0dGVkUGFnZXNCZWZv
cmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQorICAgIEVYUEVDVF9FUShudW1D
b21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKICAgICBmb3Ig
KHZvaWQqIHB0ciA6IHB0cnMpCiAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwogICAgIGFz
c2VydENsZWFuKGhlYXApOwpAQCAtMjIyLDE3ICsyMTMsMTEgQEAgVEVTVChibWFsbG9jLCBJc29G
bGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgpCiAgICAgaGVhcC5zY2F2
ZW5nZSgpOwogICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOwogICAgIGF1dG8m
IGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFs
bG9jOjpNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIG51bUNvbW1pdHRlZFBhZ2Vz
QmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOwotICAgIH0KKyAgICB1bnNpZ25lZCBu
dW1Db21taXR0ZWRQYWdlc0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICBh
c3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gcHRycy5zaXplKCkgLyAyOyBpLS07KQogICAgICAgICBwdHJzLnB1c2hfYmFjayho
ZWFwLmFsbG9jYXRlKCkpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6
Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRl
ZFBhZ2VzQmVmb3JlLCBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KKyAgICBFWFBF
Q1RfRVEobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7
CiAgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQogICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRy
KTsKICAgICBhc3NlcnRDbGVhbihoZWFwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387766</attachid>
            <date>2020-01-15 01:58:39 -0800</date>
            <delta_ts>2020-01-15 13:50:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115015838.patch</filename>
            <type>text/plain</type>
            <size>88248</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uOTljNTEzZDExZTQ5ZWVhMWExZGM4ZWU5ZWY2ZDRi
OTA0YjkzYzRkOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZUJh
c2U6Oklzb1BhZ2VCYXNlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6Cisg
ICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OmZyZWUpOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChibWFsbG9jOjpJc29Q
YWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1No
YXJlZEhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6Oklzb1NoYXJlZEhl
YXApOgorICAgICAgICAqIGJtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlTmV3KToKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFy
ZWRQYWdlLmg6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFnZTo6ZnJlZSk6CisgICAgICAgIChibWFsbG9jOjpJ
c29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hh
cmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTLmg6Cisg
ICAgICAgICogYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJtYWxs
b2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29U
TFNBbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9J
c29UTFNEZWFsbG9jYXRvckVudHJ5Lmg6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNEZWFsbG9j
YXRvckVudHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRGVhbGxvY2F0b3JF
bnRyeTxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNFbnRyeS5j
cHA6CisgICAgICAgIChibWFsbG9jOjpJc29UTFNFbnRyeTo6SXNvVExTRW50cnkpOgorICAgICAg
ICAqIGJtYWxsb2MvSXNvVExTRW50cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5
SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlw
ZT46OkRlZmF1bHRJc29UTFNFbnRyeSk6CisgICAgICAgIChibWFsbG9jOjpEZWZhdWx0SXNvVExT
RW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJc29UTFNFbnRyeSk6IERlbGV0ZWQuCisgICAgICAg
IChibWFsbG9jOjpEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6c2NhdmVuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxv
Yzo6SXNvVExTOjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRl
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRlRmFzdCk6CisgICAgICAg
IChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRlU2xvdyk6CisgICAgICAgICogYm1hbGxvYy9Jc29U
TFNMYXlvdXQuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTTGF5b3V0OjphZGQpOgorICAg
ICAgICAqIGJtYWxsb2MvUGFja2VkLmg6IEFkZGVkLgorICAgICAgICAoYm1hbGxvYzo6UGFja2Vk
OjpQYWNrZWQpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpnZXQgY29uc3QpOgorICAgICAg
ICAoYm1hbGxvYzo6UGFja2VkOjpzZXQpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpvcGVy
YXRvcj0pOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpleGNoYW5nZSk6CisgICAgICAgIChi
bWFsbG9jOjpQYWNrZWQ6OnN3YXApOgorICAgICAgICAoYm1hbGxvYzo6YWxpZ25vZik6CisgICAg
ICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OmV4Y2hhbmdlKToKKyAgICAgICAgKGJtYWxs
b2M6OlBhY2tlZFB0clRyYWl0czo6c3dhcCk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJU
cmFpdHM6OnVud3JhcCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2ZW5nZXIuY3BwOgorICAgICAg
ICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpTY2F2ZW5nZXIpOgorICAgICAgICAqIGJtYWxsb2MvU2Nh
dmVuZ2VyLmg6CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAuY3BwOgorICAgICAgICAoYm1hbGxv
Yzo6Vk1IZWFwOjpWTUhlYXApOgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmg6CisgICAgICAg
ICogYm1hbGxvYy9ab25lLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlpvbmU6OlpvbmUpOgorICAg
ICAgICAqIGJtYWxsb2MvWm9uZS5oOgorCiAyMDIwLTAxLTE0ICBCYXN1a2UgU3V6dWtpICA8YmFz
dWtlLnN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbYm1hbGxvY10gQ2FsY3VsYXRlIExpbmVN
ZXRhZGF0YSBmb3Igc3BlY2lmaWMgVk0gcGFnZSBzaXplIGluIGNvbXBpbGUgdGltZQpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9DTWFr
ZUxpc3RzLnR4dAppbmRleCAzMGRiYzM0NWI0OTI1ZmUxMWY2ZjNkNjc3NGUyY2Y5N2ZjZDZkNWUz
Li42YzZiN2E1MDVmOWYxMGM3ZWFhYjVlN2EzNDc5MjY1ZDEyZTc4YTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxp
c3RzLnR4dApAQCAtMTEyLDYgKzExMiw3IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAg
ICAgYm1hbGxvYy9NdXRleC5oCiAgICAgYm1hbGxvYy9PYmplY3QuaAogICAgIGJtYWxsb2MvT2Jq
ZWN0VHlwZS5oCisgICAgYm1hbGxvYy9QYWNrZWQuaAogICAgIGJtYWxsb2MvUGVySGVhcEtpbmQu
aAogICAgIGJtYWxsb2MvUGVyUHJvY2Vzcy5oCiAgICAgYm1hbGxvYy9QZXJUaHJlYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGIxNzNhOTdkYzg1ODkzZTdmYmE5MGU2MjdhODk2M2RhNjYxY2JhNTEuLjNiODVlNzdmZmI4M2E1
NDBlNjhmNDMzM2Y2NzUyYWViODNlZGU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQlBRDE0
QUQyQTIwMjUyOUM3MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQxNEFEMjgyMDI1MjlCMDAwODkwRTNCIC8q
IFByb2Nlc3NDaGVjay5tbSAqLzsgfTsKIAkJREU4QjEzQjMyMUNDNUQ5RjAwQTYzRkNEIC8qIEJW
TVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERF
OEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxRTc0ODAyMjM4Q0E1QzAwNUQwODRBIC8q
IFN0YXRpY1BlclByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOEQ4
NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQTQx
M0M5MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDEzQzgyMjYwNjExNDAwMzdG
NDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGMjQ0MDIyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1No
YXJlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGMjQ0MDQyMjVEMkM3NjAw
QTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBh
Z2UuY3BwICovOyB9OwpAQCAtMjk1LDYgKzI5Niw3IEBACiAJCUFEMTRBRDI4MjAyNTI5QjAwMDg5
MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBQcm9jZXNzQ2hlY2subW07IHBhdGggPSBibWFsbG9jL1Byb2Nlc3NDaGVjay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8q
IEJWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQlZNVGFncy5oOyBwYXRoID0gYm1hbGxvYy9CVk1U
YWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMUU3NDdGMjIzOENBNUIwMDVE
MDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFN0YXRpY1BlclByb2Nlc3MuaDsgcGF0aCA9IGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTgg
LyogUGFja2VkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhY2tlZC5oOyBw
YXRoID0gYm1hbGxvYy9QYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNB
NDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHBhdGggPSBi
bWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2Mv
SXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMzIy
NUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmNwcDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hh
cmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzIsNiArNTM0LDcg
QEAKIAkJCQkxNEM4OTkyQTFDQzQ4NUU3MDAyN0EwNTcgLyogTWFwLmggKi8sCiAJCQkJMTQzQ0I4
MUExOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmNwcCAqLywKIAkJCQkxNDNDQjgxQjE5MDIyQkM5
MDBCMTZBNDUgLyogTXV0ZXguaCAqLywKKwkJCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyog
UGFja2VkLmggKi8sCiAJCQkJMEY1QkYxNDgxRjIyQThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5k
LmggKi8sCiAJCQkJMEYyNkE3QTQyMDU0ODMwRDAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwICov
LAogCQkJCTE0NDQ2QTA3MTdBNjFGQTQwMEY5RUExRCAvKiBQZXJQcm9jZXNzLmggKi8sCkBAIC02
NDgsNiArNjUxLDcgQEAKIAkJCQkxNDNDQjgxRDE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguaCBp
biBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFGMUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkzMThGNDhEMEYwMDk1MDcwMiAvKiBPYmplY3RUeXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2Vk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVh
cEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQ
ZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIg
LyogUGVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5o
CmluZGV4IDkwYTI1NWFkYjdlNzEyMmY5MGFkYzYyYWUwNjNkNTA1NjAzMjhiNzIuLmQyMmYzY2Uw
NTQ0OTVkMDJjMGM1NDkzM2RkMThhNzFmODcwNzAwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdv
cml0aG0uaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAj
aW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0xOTMsNiArMTk0LDMxIEBA
IGJvb2wgZmluZEJpdEluV29yZChUIHdvcmQsIHNpemVfdCYgaW5kZXgsIHNpemVfdCBlbmRJbmRl
eCwgYm9vbCB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY29uc3RleHByIHVuc2lnbmVkIGN0ekNvbnN0ZXhwcihUIHZhbHVlKQoreworICAgIGNv
bnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7CisKKyAgICB1
c2luZyBVVCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgICBVVCB1
VmFsdWUgPSB2YWx1ZTsKKworICAgIHVuc2lnbmVkIHplcm9Db3VudCA9IDA7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJpdFNpemU7IGkrKykgeworICAgICAgICBpZiAodVZhbHVlICYg
MSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHplcm9Db3VudCsrOworICAgICAgICB1
VmFsdWUgPj49IDE7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgdW5zaWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhw
cihUIHQpCit7CisgICAgcmV0dXJuIGN0ekNvbnN0ZXhwcih0KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gQWxnb3JpdGhtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0
Zm9ybS5oCmluZGV4IGFmZTllMjAzNDlmYmEwMTc5MjIwMDE3NzZiYjdkMmNkMjM1MjMyMTcuLmQ3
ODRjZjFiZWQwZjI1ZWI2ZjgwMTdjYTY2NTFmYTQ1NjE4MGRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9CUGxhdGZvcm0uaApAQCAtMjMwLDYgKzIzMCw0NSBAQAogCiAjZW5kaWYgLyogQVJNICovCiAK
KworI2lmIEJDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKy8qIF9fTFA2NF9fIGlzIG5vdCBkZWZp
bmVkIG9uIDY0Yml0IFdpbmRvd3Mgc2luY2UgaXQgdXNlcyBMTFA2NC4gVXNpbmcgX19TSVpFT0Zf
UE9JTlRFUl9fIGlzIHNpbXBsZXIuICovCisjaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDgKKyNk
ZWZpbmUgQkNQVV9BRERSRVNTNjQgMQorI2VsaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDQKKyNk
ZWZpbmUgQkNQVV9BRERSRVNTMzIgMQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRl
ciB3aWR0aCIKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9y
IGJtYWxsb2MiCisjZW5kaWYKKworI2lmIEJDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiBf
X0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXworI2RlZmluZSBCQ1BVX0JJR19F
TkRJQU4gMQorI2VsaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18K
KyNkZWZpbmUgQkNQVV9MSVRUTEVfRU5ESUFOIDEKKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9f
T1JERVJfUERQX0VORElBTl9fCisjZGVmaW5lIEJDUFVfTUlERExFX0VORElBTiAxCisjZWxzZQor
I2Vycm9yICJVbmtub3duIGVuZGlhbiIKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0
ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKworI2lmIEJDUFUoQUREUkVTUzY0KQor
I2lmIEJPUyhEQVJXSU4pICYmIEJDUFUoQVJNNjQpCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQURE
UkVTU19XSURUSCAzNgorI2Vsc2UKKy8qIFdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGVmZmVjdGl2
ZSBhZGRyZXNzIHdpZHRoIGlzIDw9IDQ4IGluIDY0Yml0IGFyY2hpdGVjdHVyZXMgKGUuZy4gTmFO
IGJveGluZykuICovCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCA0OAorI2Vu
ZGlmCisjZWxzZQorI2RlZmluZSBCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggMzIKKyNlbmRp
ZgorCiAjZGVmaW5lIEJBVFRSSUJVVEVfUFJJTlRGKGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRy
YUFyZ3VtZW50cykgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIGZvcm1hdFN0cmlu
Z0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykpKQogCiAjaWYgQlBMQVRGT1JNKE1BQykgfHwgQlBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
YnVnSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXgg
N2E2NjdhN2RkNmI1ZTgxY2U2NDc5MTFlODhmYjE2OTFlODQ2ZGYxOS4uMmM5ZjViNDU4MGFkMTRm
Yzg2MGIxNmZmNWE2OTljNmEwM2VlMzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWJ1Z0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFw
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0Uo
RGVidWdIZWFwKTsKIAogI2lmIEJPUyhEQVJXSU4pCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBtX3pvbmUobWFsbG9jX2NyZWF0ZV96b25lKDAsIDAp
KQogICAgICwgbV9wYWdlU2l6ZSh2bVBhZ2VTaXplKCkpCiB7CkBAIC04OCw3ICs4OCw3IEBAIHZv
aWQgRGVidWdIZWFwOjpkdW1wKCkKIAogI2Vsc2UKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCitEZWJ1Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKaW5kZXggOTU4YTIyMDkwYTQxNDA3Y2U2MDhiZGQ0
YTFmYTEyYjhmZmJhNTEwYi4uOWRiODU1MjNiZWU3NzNhZjE4YTE2Yjk4MDViMTA5M2JlOTExYzZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBibWFsbG9jIHsKICAgICAKIGNsYXNzIERlYnVnSGVhcCA6IHByaXZhdGUgU3RhdGljUGVy
UHJvY2VzczxEZWJ1Z0hlYXA+IHsKIHB1YmxpYzoKLSAgICBEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpOworICAgIERlYnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CiAgICAgCiAgICAgdm9pZCogbWFsbG9jKHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CiAgICAg
dm9pZCogbWVtYWxpZ24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oCmluZGV4IGIyNzZhMmMwZTA2
ZTNhZjczNzIwYjdjN2FjZjc0NjRlZjRkMTMwYjcuLjI5ZmIxOTc2OWVkYjlkZGIwYjRjMWU2ZDA3
NmRkNWE1OTM2NTM0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJy
ZWRUcmlnZ2VyLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIu
aApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJc29QYWdlVHJp
Z2dlci5oIgorI2luY2x1ZGUgIk11dGV4LmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFj
ZSBibWFsbG9jIHsKIApAQCAtMzcsMTAgKzM5LDEwIEBAIGNsYXNzIERlZmVycmVkVHJpZ2dlciB7
CiAgICAgRGVmZXJyZWRUcmlnZ2VyKCkgeyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnPgotICAgIHZvaWQgZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQg
ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4m
KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci0gICAgdm9pZCBoYW5kbGVE
ZWZlcnJhbChJc29QYWdlPENvbmZpZz4mKTsKKyAgICB2b2lkIGhhbmRsZURlZmVycmFsKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0JlZW5EZWZlcnJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCmluZGV4IDA5Y2ZjODU3N2Zh
YWY4MTJiMWZjZjlhMzQ0NTNiNGNiZDBiY2RlMzYuLjcxZWE3MjY4YmIxY2YyYzdhZGI0YWU2MDM3
ZjM2NDJmYTBjNzI3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJy
ZWRUcmlnZ2VySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRU
cmlnZ2VySW5saW5lcy5oCkBAIC0zMiwyMiArMzIsMjIgQEAgbmFtZXNwYWNlIGJtYWxsb2Mgewog
CiB0ZW1wbGF0ZTxJc29QYWdlVHJpZ2dlciB0cmlnZ2VyPgogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotdm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShJc29QYWdlPENv
bmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdl
KQogewogICAgIGlmIChwYWdlLmlzSW5Vc2VGb3JBbGxvY2F0aW9uKCkpCiAgICAgICAgIG1faGFz
QmVlbkRlZmVycmVkID0gdHJ1ZTsKICAgICBlbHNlCi0gICAgICAgIHBhZ2UuZGlyZWN0b3J5KCku
ZGlkQmVjb21lKCZwYWdlLCB0cmlnZ2VyKTsKKyAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRC
ZWNvbWUobG9ja2VyLCAmcGFnZSwgdHJpZ2dlcik7CiB9CiAKIHRlbXBsYXRlPElzb1BhZ2VUcmln
Z2VyIHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIERlZmVycmVkVHJp
Z2dlcjx0cmlnZ2VyPjo6aGFuZGxlRGVmZXJyYWwoSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9p
ZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIFJF
TEVBU0VfQkFTU0VSVCghcGFnZS5pc0luVXNlRm9yQWxsb2NhdGlvbigpKTsKICAgICAKICAgICBp
ZiAobV9oYXNCZWVuRGVmZXJyZWQpIHsKLSAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNv
bWUoJnBhZ2UsIHRyaWdnZXIpOworICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZShs
b2NrZXIsICZwYWdlLCB0cmlnZ2VyKTsKICAgICAgICAgbV9oYXNCZWVuRGVmZXJyZWQgPSBmYWxz
ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25t
ZW50LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCmluZGV4IDI1
NzRiMjM5ZjNhMGZkYzY0OTE3ODZkMzlkMzU3MDE0ZWIxMjA3NzkuLjg3N2E2YzI5ZTVmN2QzOGM5
ZmJlMjFhMjFmNzUwNDBhYjY5MTdkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1l
bnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIGJvb2wgaXNOYW5vTWFsbG9jRW5hYmxl
ZCgpCiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShFbnZpcm9ubWVudCk7CiAK
LUVudmlyb25tZW50OjpFbnZpcm9ubWVudChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0Vudmly
b25tZW50OjpFbnZpcm9ubWVudChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6
IG1faXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1dGVJc0RlYnVnSGVhcEVuYWJsZWQoKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaAppbmRleCBhNTYyNTZlYmNhOGU5ZDRmY2U5
ZGI0MzUyZGUyMGEyNzJmNzM0OTVjLi43YjI4ZGU5MjczZTAzNGRiNGY2NzlhMDI1YTliMjkwYWJm
ZmUwYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5oCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgRW52aXJvbm1lbnQgOiBwdWJsaWMgU3Rh
dGljUGVyUHJvY2VzczxFbnZpcm9ubWVudD4gewogcHVibGljOgotICAgIEJFWFBPUlQgRW52aXJv
bm1lbnQoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEJFWFBPUlQgRW52aXJvbm1lbnQo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIGJvb2wgaXNEZWJ1Z0hl
YXBFbmFibGVkKCkgeyByZXR1cm4gbV9pc0RlYnVnSGVhcEVuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlLmNwcAppbmRleCAzY2NhMmQ1NGU2NjNkNTQyMjA1NTAxMDk3MWZkOTNl
N2VmYmE3MTExLi40MjAxOTU5ZjYwYmU2MjEwNTJiMTMwZDNlOTY3NWI5ZmIwMDczNDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ2Fs
bGJhY2sgewogbmFtZXNwYWNlIGJtYWxsb2MgewogCiBzdHJ1Y3QgUHJpbWl0aXZlRGlzYWJsZUNh
bGxiYWNrcyA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFByaW1pdGl2ZURpc2FibGVDYWxsYmFj
a3M+IHsKLSAgICBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzKHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mKSB7IH0KKyAgICBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKSB7IH0KICAgICAKICAgICBWZWN0b3I8R2lnYWNhZ2U6OkNhbGxiYWNrPiBj
YWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNw
cCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKaW5kZXggMTE4OWI4Nzc4NDQ3NWUw
N2UzYWZiY2EwOWIzMzEwYjMxYmRjMTUwMS4uM2FhZTQzYTIxN2FlM2IxZDFkY2NhZDBlNzE1ZmRj
NDFmODM5NjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHNp
emVfdCBIZWFwOjpnaWdhY2FnZVNpemUoKQogICAgIHJldHVybiBHaWdhY2FnZTo6c2l6ZShnaWdh
Y2FnZUtpbmQobV9raW5kKSk7CiB9CiAKLXNpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK3NpemVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICByZXR1cm4gbV9mcmVlYWJsZU1lbW9yeTsK
IH0KQEAgLTkxLDE0ICs5MSwxNCBAQCBzaXplX3QgSGVhcDo6Zm9vdHByaW50KCkKICAgICByZXR1
cm4gbV9mb290cHJpbnQ7CiB9CiAKLXZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUo
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCit2b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2li
aWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIG1fbGFyZ2VGcmVlLm1h
cmtBbGxBc0VsaWdpYmlsZSgpOwogICAgIG1faGFzUGVuZGluZ0RlY29tbWl0cyA9IGZhbHNlOwog
ICAgIG1fY29uZGl0aW9uLm5vdGlmeV9hbGwoKTsKIH0KIAotdm9pZCBIZWFwOjpkZWNvbW1pdExh
cmdlUmFuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxr
RGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21t
aXQmIGRlY29tbWl0dGVyKQogewogICAgIG1fZm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2lj
YWxTaXplKCk7CiAgICAgbV9mcmVlYWJsZU1lbW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6
ZSgpOwpAQCAtMTE0LDkgKzExNCw5IEBAIHZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlCiB9CiAKICNp
ZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6
OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIpCiAjZWxzZQotdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVy
cmVkRGVjb21taXRzKQordm9pZCBIZWFwOjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVk
RGVjb21taXRzKQogI2VuZGlmCiB7CiAgICAgZm9yIChhdXRvJiBsaXN0IDogbV9mcmVlUGFnZXMp
IHsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIsIHNpegogfQogCiAjaWYg
QlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFy
ayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
KQordm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIHZvaWQq
IG5ld0hpZ2hXYXRlck1hcmsgPSBudWxscHRyOwogICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2Ug
OiBtX2xhcmdlRnJlZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBkYjMyNDUzNjg3ZmI1NmU2
MDAwODNiZWUxMGJhNTRmMDgyYzNkNjkzLi41OWM3NWYyN2I5Yzc5ODUwMGRkZGRmYjVhM2I2MzRi
Y2M4ZDJjMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtNzYsMTQgKzc2LDE0IEBAIGNsYXNz
IEhlYXAgewogICAgIHZvaWQgc2hyaW5rTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBj
b25zdCBSYW5nZSYsIHNpemVfdCk7CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAg
dm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVs
a0RlY29tbWl0Jik7Ci0gICAgdm9pZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwg
QnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5n
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CiAjZWxzZQot
ICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYs
IHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpOwogI2VuZGlmCi0gICAgdm9pZCBzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBmcmVlZCwgc2l6ZV90IGdvYWwpOworICAgIHZvaWQg
c2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNp
emVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKIAotICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICBzaXplX3QgZm9vdHByaW50KCk7CiAKICAg
ICB2b2lkIGV4dGVybmFsRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QpOwpAQCAtOTEsMTAgKzkx
LDEwIEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgZXh0ZXJuYWxDb21taXQodm9pZCogcHRyLCBz
aXplX3QpOwogICAgIHZvaWQgZXh0ZXJuYWxDb21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4m
LCB2b2lkKiBwdHIsIHNpemVfdCk7CiAKLSAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxl
KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2li
aWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGRlY29tbWl0TGFyZ2VSYW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYs
IEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiwgQnVsa0RlY29tbWl0Jik7CiAKICAgICBz
dHJ1Y3QgTGFyZ2VPYmplY3RIYXNoIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9p
ZCoga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKaW5kZXggZmNh
OWZjZjc4ZDczM2YzOGJiYmY5MmY3MTI1Y2UwOTYyNWZmNWEyNS4uZjM4NGE1NGM2YThmYmZkNTk3
YzQ0OGIxMDZlNDdmOTM0M2I5NTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5F
X1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEhlYXBDb25zdGFudHMpOwogCi1IZWFwQ29uc3Rh
bnRzOjpIZWFwQ29uc3RhbnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorSGVhcENvbnN0YW50
czo6SGVhcENvbnN0YW50cyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1f
dm1QYWdlU2l6ZVBoeXNpY2FsIHsgdm1QYWdlU2l6ZVBoeXNpY2FsKCkgfQogewogICAgIFJFTEVB
U0VfQkFTU0VSVChtX3ZtUGFnZVNpemVQaHlzaWNhbCA+PSBzbWFsbFBhZ2VTaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKaW5kZXggMDRlNzNkMGNjODAwNTQ1ZTcwMzIx
YjJjYTQ1M2E0ZmFlZWIxYTAyNi4uMGViYzk1MGU5ZDYyZjQ5Y2ZiZWFiYzg5ZTllNGNiMTRmOWNh
ZDA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBIZWFwQ29uc3RhbnRzIDogcHVibGlj
IFN0YXRpY1BlclByb2Nlc3M8SGVhcENvbnN0YW50cz4gewogcHVibGljOgotICAgIEhlYXBDb25z
dGFudHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEhlYXBDb25zdGFudHMoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7
CiAKICAgICBpbmxpbmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VDbGFzc2VzW3NpemVDbGFzc107IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0FsbG9jYXRvci5oCmluZGV4IGEwZjcwODBjYmIxYzIxNzE3NTdjM2Q2ZGY3NDc1MmVmNTFiZDhk
MTcuLjNiYTA4YWEyYjY4YjJjNDM4ODMwMDBiZjIxNDQxMjFlY2ZjZjQxMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29BbGxvY2F0b3IuaApAQCAtNDAsMTMgKzQwLDEyIEBAIGNsYXNzIElzb0Fs
bG9jYXRvciB7CiAgICAgSXNvQWxsb2NhdG9yKElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICB+
SXNvQWxsb2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoYm9vbCBhYm9ydE9uRmFp
bHVyZSk7Ci0gICAgdm9pZCBzY2F2ZW5nZSgpOworICAgIHZvaWQqIGFsbG9jYXRlKElzb0hlYXBJ
bXBsPENvbmZpZz4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB2b2lkIHNjYXZlbmdlKElz
b0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCogYWxsb2NhdGVT
bG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhJc29IZWFw
SW1wbDxDb25maWc+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCi0gICAgSXNvSGVhcElt
cGw8Q29uZmlnPiogbV9oZWFwIHsgbnVsbHB0ciB9OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7
CiAgICAgSXNvUGFnZTxDb25maWc+KiBtX2N1cnJlbnRQYWdlIHsgbnVsbHB0ciB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggNTQ1NWZm
ZGNmMmQwMzIwZjMzZjM2YzczMTFmOTYyZWY3Yzc4MjQ3YS4uZDc5ZjQyNDEzZDc5NTExMzc2ZDE3
ZWU3OTAzODMzMzc2M2JhYzQwMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxv
Y2F0b3JJbmxpbmVzLmgKQEAgLTM0LDggKzM0LDcgQEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotSXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9j
YXRvcihJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQotICAgIDogbV9oZWFwKCZoZWFwKQorSXNv
QWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+JikKIHsK
IH0KIApAQCAtNDUsMzYgKzQ0LDM2IEBAIElzb0FsbG9jYXRvcjxDb25maWc+Ojp+SXNvQWxsb2Nh
dG9yKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCogSXNvQWxsb2NhdG9y
PENvbmZpZz46OmFsbG9jYXRlKGJvb2wgYWJvcnRPbkZhaWx1cmUpCit2b2lkKiBJc29BbGxvY2F0
b3I8Q29uZmlnPjo6YWxsb2NhdGUoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9y
dE9uRmFpbHVyZSkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogICAgIHZvaWQqIHJlc3VsdCA9IG1fZnJlZUxpc3QuYWxsb2NhdGU8Q29uZmlnPigKICAgICAg
ICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3coYWJv
cnRPbkZhaWx1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyhoZWFwLCBhYm9y
dE9uRmFpbHVyZSk7CiAgICAgICAgIH0pOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgb2Ygc2l6ZSAldVxuIiwgbV9oZWFwLCByZXN1
bHQsIENvbmZpZzo6b2JqZWN0U2l6ZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IGFs
bG9jYXRlZCAlcCBvZiBzaXplICV1XG4iLCAmaGVhcCwgcmVzdWx0LCBDb25maWc6Om9iamVjdFNp
emUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4K
LUJOT19JTkxJTkUgdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29s
IGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6
YWxsb2NhdGVTbG93KElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1
cmUpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIobV9oZWFwLT5sb2NrKTsK
KyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOwogCi0gICAgQWxs
b2NhdGlvbk1vZGUgYWxsb2NhdGlvbk1vZGUgPSBtX2hlYXAtPnVwZGF0ZUFsbG9jYXRpb25Nb2Rl
KCk7CisgICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlvbk1vZGUgPSBoZWFwLnVwZGF0ZUFsbG9j
YXRpb25Nb2RlKCk7CiAgICAgaWYgKGFsbG9jYXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpT
aGFyZWQpIHsKICAgICAgICAgaWYgKG1fY3VycmVudFBhZ2UpIHsKLSAgICAgICAgICAgIG1fY3Vy
cmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAgICAgICAgbV9jdXJy
ZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsKICAgICAgICAgICAg
IG1fY3VycmVudFBhZ2UgPSBudWxscHRyOwogICAgICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2hlYXAtPmFsbG9jYXRlRnJvbVNoYXJlZChs
b2NrZXIsIGFib3J0T25GYWlsdXJlKTsKKyAgICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGVGcm9t
U2hhcmVkKGxvY2tlciwgYWJvcnRPbkZhaWx1cmUpOwogICAgIH0KIAogICAgIEJBU1NFUlQoYWxs
b2NhdGlvbk1vZGUgPT0gQWxsb2NhdGlvbk1vZGU6OkZhc3QpOwogICAgIAotICAgIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9oZWFwLT50YWtlRmlyc3RFbGlnaWJsZSgpOwor
ICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gaGVhcC50YWtlRmlyc3RFbGln
aWJsZShsb2NrZXIpOwogICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OlN1
Y2Nlc3MpIHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKHJlc3VsdC5raW5kID09IEVsaWdpYmls
aXR5S2luZDo6T3V0T2ZNZW1vcnkpOwogICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIWFib3J0T25G
YWlsdXJlKTsKQEAgLTgyLDIwICs4MSwyMCBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRv
cjxDb25maWc+OjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSkKICAgICB9CiAgICAg
CiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxv
Y2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGlu
Zyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgIAogICAgIG1fY3VycmVudFBhZ2UgPSByZXN1bHQu
cGFnZTsKLSAgICBtX2ZyZWVMaXN0ID0gbV9jdXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKCk7
CisgICAgbV9mcmVlTGlzdCA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZyhsb2NrZXIp
OwogICAgIAogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlPENvbmZpZz4oW10gKCkgeyBC
Q1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIElzb0FsbG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSgpCit2b2lkIElzb0FsbG9j
YXRvcjxDb25maWc+OjpzY2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogewogICAg
IGlmIChtX2N1cnJlbnRQYWdlKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9j
a2VyKG1faGVhcC0+bG9jayk7Ci0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5n
KG1fZnJlZUxpc3QpOworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFw
LmxvY2spOworICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1f
ZnJlZUxpc3QpOwogICAgICAgICBtX2N1cnJlbnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9m
cmVlTGlzdC5jbGVhcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Rl
YWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDIzZjMyYTNkODliMjVkMmM1N2UxYTM4MmJkZTAyNjg4
NWE0ZTNkOWQuLjAzMmZiNzcxOWFhYmIwMzhiMzgyMjk0NzM5MGJkNDg4YTg0N2ZiY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaApAQCAtNzYs
NyArNzYsNyBAQCBCTk9fSU5MSU5FIHZvaWQgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVu
Z2UoKQogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKCptX2xvY2spOwogICAgIAog
ICAgIGZvciAodm9pZCogcHRyIDogbV9vYmplY3RMb2cpCi0gICAgICAgIElzb1BhZ2U8Q29uZmln
Pjo6cGFnZUZvcihwdHIpLT5mcmVlKHB0cik7CisgICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFn
ZUZvcihwdHIpLT5mcmVlKGxvY2tlciwgcHRyKTsKICAgICBtX29iamVjdExvZy5jbGVhcigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCBiYWZlYjNlZTAzMDU5
ZTg3ZjliMDVkNzczN2E2YjI1OTBmZmViZGY3Li5lNzJiMmQxNjEyMWI3M2FmMzFlMGZkN2MxMzJh
NWM5NGFmZGRmN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVj
dG9yeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRzLmgiCiAjaW5jbHVkZSAiRWxpZ2liaWxpdHlSZXN1
bHQuaCIKICNpbmNsdWRlICJJc29QYWdlLmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVk
ZSAiVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTQ5LDcgKzUwLDcgQEAgY2xh
c3MgSXNvRGlyZWN0b3J5QmFzZSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlQmFzZSB7CiAgICAg
CiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRy
aWdnZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgPSAwOwogICAg
IAogcHJvdGVjdGVkOgogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVhcDsKQEAgLTY0LDkg
KzY1LDkgQEAgY2xhc3MgSXNvRGlyZWN0b3J5IDogcHVibGljIElzb0RpcmVjdG9yeUJhc2U8Q29u
ZmlnPiB7CiAgICAgCiAgICAgLy8gRmluZCB0aGUgZmlyc3QgcGFnZSB0aGF0IGlzIGVsaWdpYmxl
IGZvciBhbGxvY2F0aW9uIGFuZCByZXR1cm4gaXQuIE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBp
cyBubwogICAgIC8vIHN1Y2ggdGhpbmcuIE1heSBhbGxvY2F0ZSBhIG5ldyBwYWdlIGlmIHdlIGhh
dmUgYW4gdW5jb21taXR0ZWQgcGFnZS4KLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRh
a2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmly
c3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCi0gICAgdm9p
ZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdl
PENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gVGhpcyBn
ZXRzIGNhbGxlZCBmcm9tIGEgYnVsayBkZWNvbW1pdCBmdW5jdGlvbiBpbiB0aGUgU2NhdmVuZ2Vy
LCBzbyBubyBsb2NrcyBhcmUgaGVsZC4gVGhpcyBmdW5jdGlvbgogICAgIC8vIG5lZWRzIHRvIGdl
dCB0aGUgaGVhcCBsb2NrLgpAQCAtNzQsMjMgKzc1LDIzIEBAIGNsYXNzIElzb0RpcmVjdG9yeSA6
IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4gewogICAgIAogICAgIC8vIEl0ZXJhdGUg
b3ZlciBhbGwgZW1wdHkgYW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1dCB0aGVtIGludG8gdGhl
IHZlY3Rvci4gVGhpcyBhbHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFnZXMgYXMgYmVpbmcgZGVj
b21taXR0ZWQuIEl0J3MgdGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUgYWN0dWFsIGRlY29tbWl0
dGluZy4KLSAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAg
IHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZl
cnJlZERlY29tbWl0PiYpOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZv
aWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYpOwor
ICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzY2F2ZW5nZVBhZ2Uo
c2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlUGFn
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWRE
ZWNvbW1pdD4mKTsKIAorICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjxJc29QYWdlPENv
bmZpZz4sIElzb1BhZ2U8Q29uZmlnPjo6cGFnZVNpemU+LCBudW1QYWdlcz4gbV9wYWdlcyB7IH07
CiAgICAgLy8gTk9URTogSSBzdXBwb3NlIHRoYXQgdGhpcyBjb3VsZCBiZSB0d28gYml0dmVjdG9y
cy4gQnV0IGZyb20gd29ya2luZyBvbiB0aGUgR0MsIEkgZm91bmQgdGhhdCB0aGUKICAgICAvLyBu
dW1iZXIgb2YgYml0dmVjdG9ycyBkb2VzIG5vdCBtYXR0ZXIgYXMgbXVjaCBhcyB3aGV0aGVyIG9y
IG5vdCB0aGV5IG1ha2UgaW50dWl0aXZlIHNlbnNlLgogICAgIEJpdHM8bnVtUGFnZXM+IG1fZWxp
Z2libGU7CiAgICAgQml0czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBCaXRzPG51bVBhZ2VzPiBt
X2NvbW1pdHRlZDsKLSAgICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmlnPiosIG51bVBhZ2VzPiBt
X3BhZ2VzOwogICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07
CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHVuc2lnbmVkIG1faGlnaFdhdGVybWFy
ayB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5
SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgK
aW5kZXggMGIxYTFlYzA1YTA3NDE0MDA0MmJiNzZlNzRiMTA4ZmZlYjVmOWIyNy4uODU1NDJkZjk4
NTI0NThlMzVlNDBjMDk5ZGJlMzIyY2I4OWM3NDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwxMCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgogSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmlnPiYg
aGVhcCkKICAgICA6IElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPihoZWFwKQogewotICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bVBhZ2VzOyBpLS07KQotICAgICAgICBtX3BhZ2VzW2ldID0gbnVsbHB0
cjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdl
cz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2Vk
TnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+
IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgdW5zaWduZWQgcGFnZUluZGV4
ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZpbmRCaXQobV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdHRlZCwgdHJ1ZSk7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBh
Z2VJbmRleDsKQEAgLTU5LDcgKzU3LDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKICAgICBT
Y2F2ZW5nZXImIHNjYXZlbmdlciA9ICpTY2F2ZW5nZXI6OmdldCgpOwogICAgIHNjYXZlbmdlci5k
aWRTdGFydEdyb3dpbmcoKTsKICAgICAKLSAgICBJc29QYWdlPENvbmZpZz4qIHBhZ2UgPSBtX3Bh
Z2VzW3BhZ2VJbmRleF07CisgICAgSXNvUGFnZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdl
SW5kZXhdLmdldCgpOwogICAgIAogICAgIGlmICghbV9jb21taXR0ZWRbcGFnZUluZGV4XSkgewog
ICAgICAgICBzY2F2ZW5nZXIuc2NoZWR1bGVJZlVuZGVyTWVtb3J5UHJlc3N1cmUoSXNvUGFnZUJh
c2U6OnBhZ2VTaXplKTsKQEAgLTkzLDcgKzkxLDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmln
PiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4K
LXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNv
UGFnZTxDb25maWc+KiBwYWdlLCBJc29QYWdlVHJpZ2dlciB0cmlnZ2VyKQordm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdn
ZXIgdHJpZ2dlcikKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IHBhZ2UtPmluZGV4KCk7CkBAIC0xMDMsNyArMTAx
LDcgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29t
ZShJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1AKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXA6ICVwIGRpZCBiZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAg
bV9lbGlnaWJsZVtwYWdlSW5kZXhdID0gdHJ1ZTsKICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdHRlZCA9IHN0ZDo6bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHBhZ2VJ
bmRleCk7Ci0gICAgICAgIHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRl
ZCh0aGlzKTsKKyAgICAgICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1p
dGVkKGxvY2tlciwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmln
Z2VyOjpFbXB0eToKICAgICAgICAgaWYgKHZlcmJvc2UpCkBAIC0xMjUsMjggKzEyMywyOCBAQCB2
b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQodW5z
aWduZWQgaW5kZXgpCiAgICAgLy8gc3lzY2FsbCBpdHNlbGYgKHdoaWNoIGhhcyB0byBkbyBtYW55
IGhhcmQgdGhpbmdzKS4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5t
X2hlYXAubG9jayk7CiAgICAgQkFTU0VSVCghIW1fY29tbWl0dGVkW2luZGV4XSk7Ci0gICAgdGhp
cy0+bV9oZWFwLmlzTm9Mb25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6
OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNb
aW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVkW2lu
ZGV4XSA9IGZhbHNlOwogICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6Om1p
bihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBpbmRleCk7Ci0gICAgdGhpcy0+bV9oZWFw
LmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKHRoaXMpOwotICAgIHRoaXMtPm1faGVhcC5k
aWREZWNvbW1pdChtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0
aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQobG9ja2VyLCB0aGlzKTsK
KyAgICB0aGlzLT5tX2hlYXAuZGlkRGVjb21taXQobV9wYWdlc1tpbmRleF0uZ2V0KCksIElzb1Bh
Z2VCYXNlOjpwYWdlU2l6ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWdu
ZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBh
Z2VzPjo6c2NhdmVuZ2VQYWdlKHNpemVfdCBpbmRleCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6
c2NhdmVuZ2VQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBzaXplX3QgaW5kZXgs
IFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoaXMgcGFnZSBpcyBub3cgb2ZmIGxpbWl0cy4KICAgICBtX2VtcHR5W2luZGV4XSA9
IGZhbHNlOwogICAgIG1fZWxpZ2libGVbaW5kZXhdID0gZmFsc2U7Ci0gICAgZGVjb21taXRzLnB1
c2goRGVmZXJyZWREZWNvbW1pdCh0aGlzLCBtX3BhZ2VzW2luZGV4XSwgaW5kZXgpKTsKKyAgICBk
ZWNvbW1pdHMucHVzaChEZWZlcnJlZERlY29tbWl0KHRoaXMsIG1fcGFnZXNbaW5kZXhdLmdldCgp
LCBpbmRleCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3Nl
ZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMp
CiB7CiAgICAgKG1fZW1wdHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAg
WyZdIChzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgICAgIHNjYXZlbmdlUGFnZShpbmRleCwgZGVj
b21taXRzKTsKKyAgICAgICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1p
dHMpOwogICAgICAgICB9KTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgbV9oaWdo
V2F0ZXJtYXJrID0gMDsKQEAgLTE1NSwxMiArMTUzLDEyIEBAIHZvaWQgSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
IGRlCiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERl
Y29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAg
KG1fZW1wdHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXpl
X3QgaW5kZXgpIHsKICAgICAgICAgICAgIGlmIChpbmRleCA+IG1faGlnaFdhdGVybWFyaykKLSAg
ICAgICAgICAgICAgICBzY2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0cyk7CisgICAgICAgICAg
ICAgICAgc2NhdmVuZ2VQYWdlKGxvY2tlciwgaW5kZXgsIGRlY29tbWl0cyk7CiAgICAgICAgIH0p
OwogICAgIG1faGlnaFdhdGVybWFyayA9IDA7CiB9CkBAIC0xNjgsMTEgKzE2NiwxMSBAQCB2b2lk
IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRl
cm1hcmsoVmVjdG9yPERlZmVycgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVk
IHBhc3NlZE51bVBhZ2VzPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBG
dW5jJiBmdW5jKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZv
ckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBG
dW5jJiBmdW5jKQogewogICAgIG1fY29tbWl0dGVkLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsm
XSAoc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgICAgICBmdW5jKCptX3BhZ2VzW2luZGV4XSk7Cisg
ICAgICAgICAgICBmdW5jKCoobV9wYWdlc1tpbmRleF0uZ2V0KCkpKTsKICAgICAgICAgfSk7CiB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNw
cCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCmluZGV4IDY5NmQyMmU1
N2Y2MjIzZjliOTI5NDJhYjJmMmUwYjA5YWFiZDlhODMuLmRkMDg5YTFhYmQ1MjFmZWI0ZDE5Mzc2
YmY2Y2NlNzM4N2RlYjU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcEltcGwuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3Bw
CkBAIC0zMSw3ICszMSw4IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotSXNvSGVhcEltcGxC
YXNlOjpJc29IZWFwSW1wbEJhc2UoKQorSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2Uo
TXV0ZXgmIGxvY2spCisgICAgOiBsb2NrKGxvY2spCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvSGVhcEltcGwuaAppbmRleCAwOTUxMWUyNTdmYmZiZjdjYzA0YjM5NzhjMWVmZTBiZjJiMzRj
MmRkLi4wYmFhODA4ODg2Yjc3NjU3ZGI5MzExMzQxZmMyZGZjMmM1YmU1NGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSXNv
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSXNvRGlyZWN0b3J5UGFnZS5oIgogI2luY2x1ZGUgIklz
b1RMU0FsbG9jYXRvckVudHJ5LmgiCisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiUGh5
c2ljYWxQYWdlTWFwLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTUxLDI3ICs1Miw0OCBA
QCBjbGFzcyBCRVhQT1JUIElzb0hlYXBJbXBsQmFzZSB7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZF
TkdFKQogICAgIHZpcnR1YWwgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mKSA9IDA7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHNpemVfdCBmcmVlYWJs
ZU1lbW9yeSgpID0gMDsKLSAgICB2aXJ0dWFsIHNpemVfdCBmb290cHJpbnQoKSA9IDA7CiAgICAg
CiAgICAgdm9pZCBzY2F2ZW5nZU5vdygpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFNjYXZlbmdp
bmcoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CiAKKyAgICB2b2lkIGRpZENvbW1pdCh2b2lk
KiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNp
emVfdCBieXRlcyk7CisKKyAgICB2b2lkIGlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3Qg
Ynl0ZXMpOworICAgIHZvaWQgaXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5
dGVzKTsKKworICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpOworICAgIHNpemVfdCBmb290cHJp
bnQoKTsKKwogICAgIHZvaWQgYWRkVG9BbGxJc29IZWFwcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
SXNvSGVhcEltcGxCYXNlKCk7CisgICAgSXNvSGVhcEltcGxCYXNlKE11dGV4Jik7CiAKICAgICBm
cmllbmQgY2xhc3MgSXNvU2hhcmVkUGFnZTsKICAgICBmcmllbmQgY2xhc3MgQWxsSXNvSGVhcHM7
CiAgICAgCitwdWJsaWM6CisgICAgLy8gSXQncyBhbG1vc3QgYWx3YXlzIHRoZSBjYWxsZXIncyBy
ZXNwb25zaWJpbGl0eSB0byBncmFiIHRoZSBsb2NrLiBUaGlzIGxvY2sgY29tZXMgZnJvbSB0aGUK
KyAgICAvLyAoKlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JF
bnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9jay4gVGhhdCdzIHByZXR0eSB3ZWlyZCwgYW5kIHdl
IGRvbid0CisgICAgLy8gdHJ5IHRvIGRpc2d1aXNlIHRoZSBmYWN0IHRoYXQgaXQncyB3ZWlyZC4g
V2Ugb25seSBkbyB0aGF0IGJlY2F1c2UgaGVhcHMgaW4gdGhlIHNhbWUgc2l6ZSBjbGFzcworICAg
IC8vIHNoYXJlIHRoZSBzYW1lIGRlYWxsb2NhdG9yIGxvZywgc28gaXQgbWFrZXMgc2Vuc2UgZm9y
IHRoZW0gdG8gYWxzbyBzaGFyZSB0aGUgc2FtZSBsb2NrIHRvCisgICAgLy8gYW1vcnRpemUgbG9j
ayBhY3F1aXNpdGlvbiBjb3N0cy4KKyAgICBNdXRleCYgbG9jazsKK3Byb3RlY3RlZDoKICAgICBJ
c29IZWFwSW1wbEJhc2UqIG1fbmV4dCB7IG51bGxwdHIgfTsKICAgICBzdGQ6OmNocm9ubzo6c3Rl
YWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1fbGFzdFNsb3dQYXRoVGltZTsKLSAgICBzdGQ6OmFycmF5
PHZvaWQqLCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7IH07CisgICAg
c2l6ZV90IG1fZm9vdHByaW50IHsgMCB9OworICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsg
MCB9OworI2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAorICAgIFBoeXNpY2FsUGFnZU1hcCBt
X3BoeXNpY2FsUGFnZU1hcDsKKyNlbmRpZgorICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0
cjx1aW50OF90LCBibWFsbG9jOjphbGlnbm1lbnQ+LCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4g
bV9zaGFyZWRDZWxscyB7IH07Citwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZkFs
bG9jYXRpb25zRnJvbVNoYXJlZEluT25lQ3ljbGUgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdmFp
bGFibGVTaGFyZWQgeyBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZE1hc2sgfTsKICAgICBBbGxvY2F0
aW9uTW9kZSBtX2FsbG9jYXRpb25Nb2RlIHsgQWxsb2NhdGlvbk1vZGU6OkluaXQgfTsKLSAgICAK
KyAgICBib29sIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyB0cnVl
IH07CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YobV9hdmFpbGFibGVTaGFyZWQpICogOCA+PSBt
YXhBbGxvY2F0aW9uRnJvbVNoYXJlZCwgIiIpOwogfTsKIApAQCAtODMsMjEgKzEwNSwxNyBAQCBj
bGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogcHVibGlj
OgogICAgIElzb0hlYXBJbXBsKCk7CiAgICAgCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmln
PiB0YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFr
ZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAg
IC8vIENhbGxiYWNrcyBmcm9tIGRpcmVjdG9yeS4KLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxl
T3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rv
cnk+Kik7Ci0gICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rv
cnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiopOworICAgIHZv
aWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7
CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25m
aWc+OjpudW1QYWdlcz4qKTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2
b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoKSBvdmVycmlkZTsK
LQotICAgIHNpemVfdCBmb290cHJpbnQoKSBvdmVycmlkZTsKLSAgICAKICAgICB1bnNpZ25lZCBh
bGxvY2F0b3JPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBkZWFsbG9jYXRvck9mZnNldCgpOwogCkBA
IC0xMDYsNDYgKzEyNCwyNSBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29I
ZWFwSW1wbEJhc2UgewogICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hEaXJlY3RvcnkoY29u
c3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJik7CisgICAgdm9p
ZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29u
c3QgRnVuYyYpOwogICAgIAogICAgIC8vIFRoaXMgaXMgb25seSBhY2N1cmF0ZSB3aGVuIGFsbCB0
aHJlYWRzIGFyZSBzY2F2ZW5nZWQuIE90aGVyd2lzZSBpdCB3aWxsIG92ZXJlc3RpbWF0ZS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29u
c3QgRnVuYyYpOwotCi0gICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMp
OwotICAgIHZvaWQgZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotCi0gICAg
dm9pZCBpc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lkIGlz
Tm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBmb3JF
YWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYp
OwogCiAgICAgQWxsb2NhdGlvbk1vZGUgdXBkYXRlQWxsb2NhdGlvbk1vZGUoKTsKICAgICB2b2lk
KiBhbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wg
YWJvcnRPbkZhaWx1cmUpOwotICAgIAotICAgIC8vIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgY2Fs
bGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZ3JhYiB0aGUgbG9jay4gVGhpcyBsb2NrIGNvbWVzIGZy
b20gdGhlCi0gICAgLy8gKCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxs
b2NhdG9yRW50cnk8Q29uZmlnPj4+OjpnZXQoKSktPmxvY2suIFRoYXQncyBwcmV0dHkgd2VpcmQs
IGFuZCB3ZSBkb24ndAotICAgIC8vIHRyeSB0byBkaXNndWlzZSB0aGUgZmFjdCB0aGF0IGl0J3Mg
d2VpcmQuIFdlIG9ubHkgZG8gdGhhdCBiZWNhdXNlIGhlYXBzIGluIHRoZSBzYW1lIHNpemUgY2xh
c3MKLSAgICAvLyBzaGFyZSB0aGUgc2FtZSBkZWFsbG9jYXRvciBsb2csIHNvIGl0IG1ha2VzIHNl
bnNlIGZvciB0aGVtIHRvIGFsc28gc2hhcmUgdGhlIHNhbWUgbG9jayB0bwotICAgIC8vIGFtb3J0
aXplIGxvY2sgYWNxdWlzaXRpb24gY29zdHMuCi0gICAgTXV0ZXgmIGxvY2s7CiAKIHByaXZhdGU6
CisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4gbV9oZWFkRGlyZWN0b3J5
IHsgbnVsbHB0ciB9OworICAgIFBhY2tlZFB0cjxJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4+IG1f
dGFpbERpcmVjdG9yeSB7IG51bGxwdHIgfTsKKyAgICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+PiBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgeyBudWxscHRy
IH07CiAgICAgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4g
bV9pbmxpbmVEaXJlY3Rvcnk7Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX2hlYWRE
aXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX3Rh
aWxEaXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9Owot
ICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsgMCB9OwotI2lmIEVOQUJMRV9QSFlTSUNBTF9Q
QUdFX01BUAotICAgIFBoeXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1hcDsKLSNlbmRpZgog
ICAgIHVuc2lnbmVkIG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQg
YXQgMSBzbyB0aGF0IHRoZSBoaWdoIHdhdGVyIG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBv
bmx5IGFsbG9jYXRlZCBpbiB0aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2
ZW5nZS4KICAgICB1bnNpZ25lZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07Ci0gICAg
Ci0gICAgYm9vbCBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1
ZSB9OwotICAgIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNv
bW1pdGVkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIAogICAgIElzb1RMU0VudHJ5SG9sZGVy
PElzb1RMU0FsbG9jYXRvckVudHJ5PENvbmZpZz4+IG1fYWxsb2NhdG9yOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKaW5kZXggMmE0ZmIyODQzNmIz
NThlOTZhMTcwMWI5MTMzNzVhNTMzZWRkYWVkMC4uOTRlYjNmNGMxNGY4ZTZmN2NiNDdmNWIwM2Mz
MmM4OTk4ZDU2MWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
SW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5s
aW5lcy5oCkBAIC0zNCw2NCArMzQsNzAgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+CiBJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFwSW1wbCgpCi0g
ICAgOiBsb2NrKCgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRv
ckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrKQorICAgIDogSXNvSGVhcEltcGxCYXNlKCgq
UGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZp
Zz4+Pjo6Z2V0KCkpLT5sb2NrKQogICAgICwgbV9pbmxpbmVEaXJlY3RvcnkoKnRoaXMpCiAgICAg
LCBtX2FsbG9jYXRvcigqdGhpcykKIHsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46
OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlcikK
IHsKICAgICBpZiAobV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCkgewot
ICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0
b3J5LnRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZp
Zz4gcmVzdWx0ID0gbV9pbmxpbmVEaXJlY3RvcnkudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsK
ICAgICAgICAgaWYgKHJlc3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkKICAgICAg
ICAgICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBmYWxzZTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0g
ICAgaWYgKCFtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkpIHsKLSAgICAgICAg
Ly8gSWYgbm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZl
IG5vIGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCi0gICAgICAgIC8vIG9mIHRo
ZSB3b3JsZCBpZiB3ZSBicm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRo
YXQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoKSB3b3VsZCBuZWVkCi0gICAgICAgIC8v
IGEgbnVsbCBjaGVjay4KLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3Rvcnkp
OwotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7Ci0gICAgfQotICAg
IAotICAgIGZvciAoOyBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rvcnk7IG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21t
aXRlZERpcmVjdG9yeS0+bmV4dCkgewotICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+
IHJlc3VsdCA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+cGF5bG9hZC50
YWtlRmlyc3RFbGlnaWJsZSgpOwotICAgICAgICBpZiAocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxp
dHlLaW5kOjpGdWxsKSB7Ci0gICAgICAgICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBz
dGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21t
aXRlZERpcmVjdG9yeS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IHsKKyAgICAgICAgYXV0byogY3Vyc29yID0gbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGly
ZWN0b3J5LmdldCgpOworICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAgICAgLy8gSWYg
bm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5vIGRp
cmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCisgICAgICAgICAgICAvLyBvZiB0aGUg
d29ybGQgaWYgd2UgYnJva2UgdGhpcyBpbnZhcmlhbnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0
IGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKCkgd291bGQgbmVlZAorICAgICAgICAgICAg
Ly8gYSBudWxsIGNoZWNrLgorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJl
Y3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3Rv
cnkuZ2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICg7IGN1cnNvcjsg
Y3Vyc29yID0gY3Vyc29yLT5uZXh0KSB7CisgICAgICAgICAgICAgICAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiByZXN1bHQgPSBjdXJzb3ItPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUobG9j
a2VyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVk
RGlyZWN0b3J5LmdldCgpID09IGN1cnNvcik7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5r
aW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtX2Rp
cmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmss
IGN1cnNvci0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9y
RGVjb21taXRlZERpcmVjdG9yeSA9IGN1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIGF1dG8qIG5ld0RpcmVjdG9yeSA9IG5ldyBJc29EaXJlY3RvcnlQ
YWdlPENvbmZpZz4oKnRoaXMsIG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCsrKTsKLSAgICBpZiAo
bV9oZWFkRGlyZWN0b3J5KSB7CisgICAgaWYgKG1faGVhZERpcmVjdG9yeS5nZXQoKSkgewogICAg
ICAgICBtX3RhaWxEaXJlY3RvcnktPm5leHQgPSBuZXdEaXJlY3Rvcnk7CiAgICAgICAgIG1fdGFp
bERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICB9IGVsc2UgewotICAgICAgICBSRUxFQVNF
X0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90
YWlsRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgbV9oZWFkRGlyZWN0b3J5ID0gbmV3RGlyZWN0
b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgfQogICAg
IG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IG5ld0RpcmVjdG9yeS0+aW5kZXgoKTsKICAgICBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7Ci0gICAg
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQu
dGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3Vs
dCA9IG5ld0RpcmVjdG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAg
IFJFTEVBU0VfQkFTU0VSVChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoSXNvRGly
ZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4qIGRpcmVjdG9yeSkKK3Zv
aWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2Vz
SW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGRp
cmVjdG9yeSA9PSAmbV9pbmxpbmVEaXJlY3RvcnkpOwogICAgIG1faXNJbmxpbmVEaXJlY3RvcnlF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1p
dGVkKElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFn
ZXM+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdp
YmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0b3J5
KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJl
Y3RvcnkpOwogICAgIGF1dG8qIGRpcmVjdG9yeVBhZ2UgPSBJc29EaXJlY3RvcnlQYWdlPENvbmZp
Zz46OnBhZ2VGb3IoZGlyZWN0b3J5KTsKQEAgLTEwNCw4ICsxMTAsOSBAQCB2b2lkIElzb0hlYXBJ
bXBsPENvbmZpZz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRz
KQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAg
IGZvckVhY2hEaXJlY3RvcnkoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChhdXRvJiBk
aXJlY3RvcnkpIHsKLSAgICAgICAgICAgIGRpcmVjdG9yeS5zY2F2ZW5nZShkZWNvbW1pdHMpOwor
ICAgICAgICAgICAgZGlyZWN0b3J5LnNjYXZlbmdlKGxvY2tlciwgZGVjb21taXRzKTsKICAgICAg
ICAgfSk7CiAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gMDsKIH0KQEAgLTExNiwxNyAr
MTIzLDE2IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1h
cmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgaWYgKCFtX2RpcmVjdG9yeUhpZ2hXYXRl
cm1hcmspCi0gICAgICAgIG1faW5saW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJr
KGRlY29tbWl0cyk7Ci0gICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBt
X2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KSB7CisgICAgICAgIG1faW5s
aW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRzKTsK
KyAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVjdG9y
eS5nZXQoKTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpIHsKICAgICAgICAgaWYgKHBhZ2UtPmlu
ZGV4KCkgPj0gbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrKQotICAgICAgICAgICAgcGFnZS0+cGF5
bG9hZC5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhkZWNvbW1pdHMpOworICAgICAgICAgICAgcGFn
ZS0+cGF5bG9hZC5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CiAg
ICAgfQogICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IDA7CiB9CiAjZW5kaWYKIAotdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotc2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KCkKK2lubGluZSBzaXplX3QgSXNvSGVhcEltcGxCYXNlOjpmcmVlYWJsZU1lbW9y
eSgpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7CiB9CkBAIC0xNDYsOCArMTUyLDEw
IEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46OmRlYWxsb2NhdG9yT2Zmc2V0KCkKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46Om51
bUxpdmVPYmplY3RzKCkKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlz
LT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvckVhY2hMaXZlT2JqZWN0
KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9pZCopIHsKICAgICAgICAgICAgIHJl
c3VsdCsrOwogICAgICAgICB9KTsKQEAgLTE1Nyw4ICsxNjUsMTAgQEAgdW5zaWduZWQgSXNvSGVh
cEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9iamVjdHMoKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
PgogdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQogewor
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAgIHVuc2ln
bmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxvY2tl
ciwKICAgICAgICAgWyZdIChJc29QYWdlPENvbmZpZz4mKSB7CiAgICAgICAgICAgICByZXN1bHQr
KzsKICAgICAgICAgfSk7CkBAIC0xNjcsNDAgKzE3Nyw0MSBAQCB1bnNpZ25lZCBJc29IZWFwSW1w
bDxDb25maWc+OjpudW1Db21taXR0ZWRQYWdlcygpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZv
ckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmln
Pjo6Zm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3Qg
RnVuYyYgZnVuYykKIHsKICAgICBmdW5jKG1faW5saW5lRGlyZWN0b3J5KTsKLSAgICBmb3IgKElz
b0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVjdG9yeTsgcGFnZTsgcGFn
ZSA9IHBhZ2UtPm5leHQpCisgICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2Ug
PSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KQogICAgICAg
ICBmdW5jKHBhZ2UtPnBheWxvYWQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+
Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2Nr
ZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9yRWFjaERpcmVjdG9yeSgKKyAgICAgICAg
bG9ja2VyLAogICAgICAgICBbJl0gKGF1dG8mIGRpcmVjdG9yeSkgewotICAgICAgICAgICAgZGly
ZWN0b3J5LmZvckVhY2hDb21taXR0ZWRQYWdlKGZ1bmMpOworICAgICAgICAgICAgZGlyZWN0b3J5
LmZvckVhY2hDb21taXR0ZWRQYWdlKGxvY2tlciwgZnVuYyk7CiAgICAgICAgIH0pOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJ
c29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBGdW5jJiBmdW5jKQor
dm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9yRWFj
aENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChJc29QYWdlPENv
bmZpZz4mIHBhZ2UpIHsKLSAgICAgICAgICAgIHBhZ2UuZm9yRWFjaExpdmVPYmplY3QoZnVuYyk7
CisgICAgICAgICAgICBwYWdlLmZvckVhY2hMaXZlT2JqZWN0KGxvY2tlciwgZnVuYyk7CiAgICAg
ICAgIH0pOwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1heEFsbG9jYXRp
b25Gcm9tU2hhcmVkOyArK2luZGV4KSB7Ci0gICAgICAgIHZvaWQqIHBvaW50ZXIgPSBtX3NoYXJl
ZENlbGxzW2luZGV4XTsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IG1fc2hhcmVkQ2VsbHNbaW5k
ZXhdLmdldCgpOwogICAgICAgICBpZiAocG9pbnRlciAmJiAhKG1fYXZhaWxhYmxlU2hhcmVkICYg
KDFVIDw8IGluZGV4KSkpCiAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgIH0KIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotc2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZv
b3RwcmludCgpCitpbmxpbmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6Zm9vdHByaW50KCkKIHsK
ICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKICAgICBSRUxFQVNFX0JBU1NFUlQobV9mb290
cHJpbnQgPT0gbV9waHlzaWNhbFBhZ2VNYXAuZm9vdHByaW50KCkpOwpAQCAtMjA4LDggKzIxOSw3
IEBAIHNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQoKQogICAgIHJldHVybiBt
X2Zvb3RwcmludDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFw
SW1wbDxDb25maWc+OjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUg
dm9pZCBJc29IZWFwSW1wbEJhc2U6OmRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykK
IHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAgICAgbV9mb290cHJpbnQgKz0gYnl0ZXM7CkBA
IC0yMTgsOCArMjI4LDcgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9p
ZCogcHRyLCBzaXplX3QgYnl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNp
emVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJbXBsQmFzZTo6ZGlkRGVjb21taXQodm9p
ZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1f
Zm9vdHByaW50IC09IGJ5dGVzOwpAQCAtMjI4LDE1ICsyMzcsMTMgQEAgdm9pZCBJc29IZWFwSW1w
bDxDb25maWc+OjpkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKICNlbmRpZgog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46
OmlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29I
ZWFwSW1wbEJhc2U6OmlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gYnl0ZXM7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
aXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQg
SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0
ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgLT0g
Ynl0ZXM7CkBAIC0zMDEsNyArMzA4LDcgQEAgdm9pZCogSXNvSGVhcEltcGw8Q29uZmlnPjo6YWxs
b2NhdGVGcm9tU2hhcmVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib28KICAgICB1
bnNpZ25lZCBpbmRleFBsdXNPbmUgPSBfX2J1aWx0aW5fZmZzKG1fYXZhaWxhYmxlU2hhcmVkKTsK
ICAgICBCQVNTRVJUKGluZGV4UGx1c09uZSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleFBs
dXNPbmUgLSAxOwotICAgIHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdOworICAg
IHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpOwogICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFyZWQgYWdhaW4gb2Ygc2l6ZSAldVxuIiwgdGhpcywg
cmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwpAQCAtMzE0LDcgKzMyMSw3IEBAIHZvaWQqIElz
b0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRlRnJvbVNoYXJlZChjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgYm9vCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0
ZWQgJXAgZnJvbSBzaGFyZWQgb2Ygc2l6ZSAldVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6Om9i
amVjdFNpemUpOwogICAgICAgICBCQVNTRVJUKGluZGV4IDwgSXNvSGVhcEltcGxCYXNlOjptYXhB
bGxvY2F0aW9uRnJvbVNoYXJlZCk7CiAgICAgICAgICppbmRleFNsb3RGb3I8Q29uZmlnPihyZXN1
bHQpID0gaW5kZXg7Ci0gICAgICAgIG1fc2hhcmVkQ2VsbHNbaW5kZXhdID0gcmVzdWx0OworICAg
ICAgICBtX3NoYXJlZENlbGxzW2luZGV4XSA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4ocmVzdWx0
KTsKICAgICB9CiAgICAgQkFTU0VSVChyZXN1bHQpOwogICAgIG1fYXZhaWxhYmxlU2hhcmVkICY9
IH4oMVUgPDwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29Q
YWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaAppbmRleCA1NDI1Yjg4YTY3
ODkyMmQ4OGMyYzU4ZDc1MGNhMjkyNmFhZjM0MDA4Li5hMTUxY2Y5ODc5MTI1MjE0M2RlZmQyYjBh
N2JkNTcwMGNlZTAxNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1Bh
Z2UuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaApAQCAtMjgsNyArMjgs
OSBAQAogI2luY2x1ZGUgIkJpdHMuaCIKICNpbmNsdWRlICJEZWZlcnJlZFRyaWdnZXIuaCIKICNp
bmNsdWRlICJGcmVlTGlzdC5oIgorI2luY2x1ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSA8Y2xpbWl0
cz4KKyNpbmNsdWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC00Miw2ICs0
NCw4IEBAIGNsYXNzIElzb1BhZ2VCYXNlIHsKIAogICAgIGV4cGxpY2l0IElzb1BhZ2VCYXNlKGJv
b2wgaXNTaGFyZWQpCiAgICAgICAgIDogbV9pc1NoYXJlZChpc1NoYXJlZCkKKyAgICAgICAgLCBt
X2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkKHRydWUpCisgICAgICAgICwgbV9pc0luVXNlRm9yQWxs
b2NhdGlvbihmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC01Miw3ICs1Niw5IEBAIGNsYXNzIElz
b1BhZ2VCYXNlIHsKIHByb3RlY3RlZDoKICAgICBCRVhQT1JUIHN0YXRpYyB2b2lkKiBhbGxvY2F0
ZVBhZ2VNZW1vcnkoKTsKIAotICAgIGJvb2wgbV9pc1NoYXJlZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzU2hhcmVkIDogMTsKKyAgICBib29sIG1fZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQgOiAx
OworICAgIGJvb2wgbV9pc0luVXNlRm9yQWxsb2NhdGlvbiA6IDE7CiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWc+CkBAIC03MSwxOSArNzcsMTkgQEAgY2xhc3MgSXNvUGFnZSA6IHB1Ymxp
YyBJc29QYWdlQmFzZSB7CiAKICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXg7IH0KICAgICAKLSAgICB2b2lkIGZyZWUodm9pZCopOworICAgIHZvaWQgZnJlZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgdm9pZCopOwogCiAgICAgLy8gQ2FsbGVkIGFmdGVy
IHRoaXMgcGFnZSBpcyBhbHJlYWR5IHNlbGVjdGVkIGZvciBhbGxvY2F0aW9uLgotICAgIEZyZWVM
aXN0IHN0YXJ0QWxsb2NhdGluZygpOworICAgIEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZyhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgLy8gQ2FsbGVkIGFmdGVyIHRo
ZSBhbGxvY2F0b3IgcGlja3MgYW5vdGhlciBwYWdlIHRvIHJlcGxhY2UgdGhpcyBvbmUuCi0gICAg
dm9pZCBzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCk7CisgICAgdm9pZCBzdG9wQWxs
b2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgRnJlZUxpc3QpOwogCiAgICAg
SXNvRGlyZWN0b3J5QmFzZTxDb25maWc+JiBkaXJlY3RvcnkoKSB7IHJldHVybiBtX2RpcmVjdG9y
eTsgfQogICAgIGJvb2wgaXNJblVzZUZvckFsbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
SW5Vc2VGb3JBbGxvY2F0aW9uOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVh
Y2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7
CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCgpOwogICAgIApAQCAtMTExLDE2
ICsxMTcsMTMgQEAgY2xhc3MgSXNvUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAKICAgICAv
LyBUaGlzIG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KIAotICAgIGJvb2wgbV9lbGln
aWJpbGl0eUhhc0JlZW5Ob3RlZCB7IHRydWUgfTsKLSAgICBib29sIG1faXNJblVzZUZvckFsbG9j
YXRpb24geyBmYWxzZSB9OwogICAgIERlZmVycmVkVHJpZ2dlcjxJc29QYWdlVHJpZ2dlcjo6RWxp
Z2libGU+IG1fZWxpZ2liaWxpdHlUcmlnZ2VyOwogICAgIERlZmVycmVkVHJpZ2dlcjxJc29QYWdl
VHJpZ2dlcjo6RW1wdHk+IG1fZW1wdHlUcmlnZ2VyOwotCi0gICAgSXNvRGlyZWN0b3J5QmFzZTxD
b25maWc+JiBtX2RpcmVjdG9yeTsKKyAgICB1aW50OF90IG1fbnVtTm9uRW1wdHlXb3JkcyB7IDAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KGJpdHNBcnJheUxlbmd0aChudW1PYmplY3RzKSA8PSBVSU5U
OF9NQVgpOwogICAgIHVuc2lnbmVkIG1faW5kZXggeyBVSU5UX01BWCB9OwotICAgIAorICAgIElz
b0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgbV9kaXJlY3Rvcnk7CiAgICAgdW5zaWduZWQgbV9hbGxv
Y0JpdHNbYml0c0FycmF5TGVuZ3RoKG51bU9iamVjdHMpXTsKLSAgICB1bnNpZ25lZCBtX251bU5v
bkVtcHR5V29yZHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggZjM3YjM0OTMyNzc5MDZjMTgyZDk5
MWZhZmZjZWE5ZGZkNjc4MmY0My4uM2U2NWI4NGZkZDI4M2MyNjA0NDc1MTFhNGRkNDI3YjdhOTA3
ODE5YSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaApAQCAtNjUsMTQg
KzY1LDE0IEBAIElzb1BhZ2U8Q29uZmlnPiogSXNvUGFnZTxDb25maWc+OjpwYWdlRm9yKHZvaWQq
IHB0cikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZp
Zz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQordm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIpCiB7CiAg
ICAgQkFTU0VSVCghbV9pc1NoYXJlZCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KHBhc3NlZFB0cikgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IG9mZnNldCAvIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAKICAg
ICBpZiAoIW1fZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQpIHsKLSAgICAgICAgbV9lbGlnaWJpbGl0
eVRyaWdnZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIu
ZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgICAgICBtX2VsaWdpYmlsaXR5SGFzQmVlbk5v
dGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBJc29QYWdl
PENvbmZpZz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQogICAgIHVuc2lnbmVkIG5ld1dvcmQgPSBt
X2FsbG9jQml0c1t3b3JkSW5kZXhdICY9IH4oMSA8PCBiaXRJbmRleCk7CiAgICAgaWYgKCFuZXdX
b3JkKSB7CiAgICAgICAgIGlmICghLS1tX251bU5vbkVtcHR5V29yZHMpCi0gICAgICAgICAgICBt
X2VtcHR5VHJpZ2dlci5kaWRCZWNvbWUoKnRoaXMpOworICAgICAgICAgICAgbV9lbXB0eVRyaWdn
ZXIuZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgotRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQor
RnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKICAgICAKQEAgLTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46
OnN0YXJ0QWxsb2NhdGluZygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCkKK3ZvaWQg
SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrZXIsIEZyZWVMaXN0IGZyZWVMaXN0KQogewogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB2b2lkIElz
b1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpCiAgICAgCiAg
ICAgZnJlZUxpc3QuZm9yRWFjaDxDb25maWc+KAogICAgICAgICBbJl0gKHZvaWQqIHB0cikgewot
ICAgICAgICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgZnJlZShsb2NrZXIsIHB0cik7CiAg
ICAgICAgIH0pOwogCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1faXNJblVzZUZvckFsbG9jYXRpb24p
OwogICAgIG1faXNJblVzZUZvckFsbG9jYXRpb24gPSBmYWxzZTsKIAotICAgIG1fZWxpZ2liaWxp
dHlUcmlnZ2VyLmhhbmRsZURlZmVycmFsKCp0aGlzKTsKLSAgICBtX2VtcHR5VHJpZ2dlci5oYW5k
bGVEZWZlcnJhbCgqdGhpcyk7CisgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuaGFuZGxlRGVmZXJy
YWwobG9ja2VyLCAqdGhpcyk7CisgICAgbV9lbXB0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9j
a2VyLCAqdGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29u
c3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBm
b3IgKHVuc2lnbmVkIHdvcmRJbmRleCA9IDA7IHdvcmRJbmRleCA8IGJpdHNBcnJheUxlbmd0aChu
dW1PYmplY3RzKTsgKyt3b3JkSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgd29yZCA9IG1fYWxs
b2NCaXRzW3dvcmRJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZEhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCmlu
ZGV4IGM5ZDA0ZWU5MzEzNjk1OWQzMjNkYjU4MGQyMDM2YjlhZWJjMjIxYTMuLjVlYTUxZTVkMWZk
ZGVlZmY2ZjhkNTZmZDdjOTA3ZmU0MmJkZDE0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
U2hhcmVkSGVhcC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFZhcmlhZGljQnVtcEFsbG9jYXRv
ciB7CiAKIGNsYXNzIElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29T
aGFyZWRIZWFwPiB7CiBwdWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKKyAgICBJc29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQogICAgIHsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgSXNvU2hhcmVkSGVhcCA6
IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+IHsKIAogcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZD4KLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9u
RmFpbHVyZSk7CisgICAgdm9pZCogYWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKIAogICAgIElzb1NoYXJlZFBhZ2UqIG1fY3Vy
cmVudFBhZ2UgeyBudWxscHRyIH07CiAgICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIG1fYWxsb2Nh
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5s
aW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCmlu
ZGV4IGQ5ZjdmMTE2NmM1YWQwNmYwNGQ4MTIxYzQ5ODgyMjdiZGZkMDFkMDQuLmRhMThlNmU3Yjg2
N2I0MDVlODY4YzBmNGIzZDZkYWI0MDFkZmVlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkKiBJc29T
aGFyZWRIZWFwOjphbGxvY2F0ZU5ldyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBvYmplY3RTaXplID0gY29tcHV0ZU9iamVjdFNpemVGb3JTaGFyZWRDZWxsKHBh
c3NlZE9iamVjdFNpemUpOwogICAgIHJldHVybiBtX2FsbG9jYXRvci50ZW1wbGF0ZSBhbGxvY2F0
ZTxvYmplY3RTaXplPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZVNsb3c8cGFzc2VkT2JqZWN0U2l6ZT4oYWJvcnRPbkZhaWx1cmUpOworICAg
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdzxwYXNzZWRPYmplY3RTaXplPihsb2NrZXIsIGFi
b3J0T25GYWlsdXJlKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHVuc2lnbmVkIHBhc3Nl
ZE9iamVjdFNpemU+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xv
dyhib29sIGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjph
bGxvY2F0ZVNsb3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBib29sIGFi
b3J0T25GYWlsdXJlKQogewogICAgIFNjYXZlbmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6
Z2V0KCk7CiAgICAgc2NhdmVuZ2VyLmRpZFN0YXJ0R3Jvd2luZygpOwpAQCAtNzMsMTAgKzczLDEw
IEBAIEJOT19JTkxJTkUgdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGJvb2wgYWJv
cnRPbkZhaWx1cmUpCiAgICAgfQogCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1f
Y3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0
b3BBbGxvY2F0aW5nKGxvY2tlcik7CiAKICAgICBtX2N1cnJlbnRQYWdlID0gcGFnZTsKLSAgICBt
X2FsbG9jYXRvciA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOworICAgIG1fYWxs
b2NhdG9yID0gbV9jdXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKGxvY2tlcik7CiAKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgb2JqZWN0U2l6ZSA9IGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVk
Q2VsbChwYXNzZWRPYmplY3RTaXplKTsKICAgICByZXR1cm4gbV9hbGxvY2F0b3IuYWxsb2NhdGU8
b2JqZWN0U2l6ZT4oW10gKCkgeyBCQ1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAppbmRleCBhOWUxMzdlNDE0MTg4NTY0ZDA1ODA0
NDkwYjU0MzdhNTAwZTU3MGJiLi5iZmY3MGMyNGFjYjk4YjFiZWRjNmNlYmFmOTBiMDg1NDYzZGM5
NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaApAQCAtMzksOCArMzks
OCBAQCBjbGFzcyBJc29TaGFyZWRQYWdlIDogcHVibGljIElzb1BhZ2VCYXNlIHsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICB2b2lkIGZyZWUoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsK
LSAgICBWYXJpYWRpY0J1bXBBbGxvY2F0b3Igc3RhcnRBbGxvY2F0aW5nKCk7Ci0gICAgdm9pZCBz
dG9wQWxsb2NhdGluZygpOworICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBzdGFydEFsbG9jYXRp
bmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIHZvaWQgc3RvcEFsbG9jYXRp
bmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogCiBwcml2YXRlOgogICAgIElzb1No
YXJlZFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQ
YWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5l
cy5oCmluZGV4IGM0MjE2YjUxZGFjOWQxZTk1YzMwMzVkNjYxNmZhM2U3Y2U1OTA3YTkuLmU0NDEw
YmFkNjAwMzcyNTI1MDA3NzAzNjcxNDYwNDFhNmE3NGI5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKQEAgLTQyLDExICs0MiwxMSBAQCB2b2lk
IElzb1NoYXJlZFBhZ2U6OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6
SXNvSGVhcDxUeXBlPiYgaGFuZAogICAgIC8vIElzb0RlYWxsb2NhdG9yOjpkZWFsbG9jYXRlIGlz
IGNhbGxlZCBmcm9tIGRlbGV0ZSBvcGVyYXRvci4gVGhpcyBpcyBkaXNwYXRjaGVkIGJ5IHZ0YWJs
ZSBpZiB2aXJ0dWFsIGRlc3RydWN0b3IgZXhpc3RzLgogICAgIC8vIElmIHZwdHIgaXMgcmVwbGFj
ZWQgdG8gdGhlIG90aGVyIHZwdHIsIHdlIG1heSBhY2NpZGVudGFsbHkgY2hhaW4gdGhpcyBwb2lu
dGVyIHRvIHRoZSBpbmNvcnJlY3QgSGVhcEltcGxCYXNlLCB3aGljaCB0b3RhbGx5IGJyZWFrcyB0
aGUgSXNvSGVhcCdzIGdvYWwuCiAgICAgLy8gVG8gaGFyZGVuIHRoYXQsIHdlIHZhbGlkYXRlIHRo
YXQgdGhpcyBwb2ludGVyIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBmb3IgYSBzcGVjaWZpYyBIZWFw
SW1wbEJhc2UgaGVyZSBieSBjaGVja2luZyB3aGV0aGVyIHRoaXMgcG9pbnRlciBpcyBsaXN0ZWQg
aW4gSGVhcEltcGxCYXNlJ3Mgc2hhcmVkIGNlbGxzLgotICAgIFJFTEVBU0VfQkFTU0VSVChoZWFw
SW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XSA9PSBwdHIpOworICAgIFJFTEVBU0VfQkFTU0VSVCho
ZWFwSW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKSA9PSBwdHIpOwogICAgIGhlYXBJbXBs
Lm1fYXZhaWxhYmxlU2hhcmVkIHw9ICgxVSA8PCBpbmRleCk7CiB9CiAKLWlubGluZSBWYXJpYWRp
Y0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKCkKK2lubGluZSBW
YXJpYWRpY0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CiAKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIFZhcmlhZGljQnVtcEFs
bG9jYXRvciBJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoKQogICAgIHJldHVybiBWYXJp
YWRpY0J1bXBBbGxvY2F0b3IocGF5bG9hZEVuZCwgcmVtYWluaW5nKTsKIH0KIAotaW5saW5lIHZv
aWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcoKQoraW5saW5lIHZvaWQgSXNvU2hhcmVk
UGFnZTo6c3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTLmgKaW5kZXggZGUyODY3ZTc4ZGUxY2EyNTYzMGMzNmQxODIyODMzZjE3ZmEwN2VmMy4u
YmFiYmIzMDQ1YjhhNTA2ZTgyODMxMDJlYjZjM2M0Y2ViOWVkMjliMiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMUy5oCkBAIC02MCw4ICs2MCw4IEBAIGNsYXNzIElzb1RMUyB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0
ZUltcGwoYXBpOjpJc29IZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQqIGFsbG9jYXRlRmFzdCh1bnNp
Z25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZywgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkKiBhbGxvY2F0ZUZhc3QoYXBpOjpJc29I
ZWFwPFR5cGU+JiwgdW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CiAgICAgc3RhdGlj
IHZvaWQqIGFsbG9jYXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mLCBib29sIGFib3J0T25GYWls
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9y
RW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaApp
bmRleCAzNWRiODcxNDdiNDkyMDY2YTI4ZWZmZDU3M2RmNzM2ZjcwODExMzlmLi5lMWQ4YWFjYWZl
MmZmYWJkYTc0ODAzZTliNzA2YjBiZjU2ZGU5ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIElzb1RM
U0FsbG9jYXRvckVudHJ5IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29BbGxv
Y2F0b3I8Q29uZmlnCiAgICAgSXNvVExTQWxsb2NhdG9yRW50cnkoSXNvSGVhcEltcGw8Q29uZmln
PiYpOwogCiAgICAgdm9pZCBjb25zdHJ1Y3Qodm9pZCogZHN0KSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogICAgIAogICAgIElzb0hlYXBJbXBs
PENvbmZpZz4mIG1faGVhcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaAppbmRleCAxYWUxZTZhNWFjYTQ5MGUwNTIyNzEx
NGY1ZTRlMjA1ZmQ0OTRmZjQzLi4zZTU1N2FkMTc3Yjg2ZGQ4YmU2YzA3Zjc0M2M5YTE4ZWQ2ZTNl
MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVu
dHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9y
RW50cnlJbmxpbmVzLmgKQEAgLTQ2LDUgKzQ2LDExIEBAIHZvaWQgSXNvVExTQWxsb2NhdG9yRW50
cnk8Q29uZmlnPjo6Y29uc3RydWN0KHZvaWQqIGRzdCkKICAgICBuZXcgKGRzdCkgSXNvQWxsb2Nh
dG9yPENvbmZpZz4obV9oZWFwKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgordm9p
ZCBJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2b2lkKiBlbnRyeSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2Uo
bV9oZWFwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCmluZGV4IDczODRjZTBkMmFiYjQz
ZmZiNTZhNjc4OGY0NzUxMGI2NGYyNjRmNGQuLmEwZGJjMzAzNzQ0Mjg3MGVkMDg5YWE5MjBiZDRi
ZmFhZDk3ZWRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVh
bGxvY2F0b3JFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIElzb1RMU0RlYWxsb2NhdG9yRW50
cnkgZmluYWwgOiBwdWJsaWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0RlYWxsb2NhdG9yPENvCiAg
ICAgSXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CiAKICAgICB2b2lkIGNvbnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
Y2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFs
bG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9y
RW50cnlJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9y
RW50cnlJbmxpbmVzLmgKaW5kZXggY2JkNWY5ZGY3ZWZiNzRjMzEyMjM5NzgxNWNhMzkxMjA2Mjlj
ZDQzZi4uYzk1MzQyODBjZThkNWExOGIwMjY4YmQwNzgwN2Q3ZWJiN2MyMmU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGlu
ZXMuaApAQCAtNDMsNSArNDMsMTEgQEAgdm9pZCBJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZp
Zz46OmNvbnN0cnVjdCh2b2lkKiBlbnRyeSkKICAgICBuZXcgKGVudHJ5KSBJc29EZWFsbG9jYXRv
cjxDb25maWc+KGxvY2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Cit2b2lkIElz
b1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9pZCogZW50cnkpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SXNvRGVhbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2Uo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnkuY3BwCmluZGV4IGNiMDNiZGUyODk1N2UyY2JmYTEwYWZhZDg5NDI4YmIzZWE2ZmFm
NzMuLjgzMGE1MTFiZjk5ZGVjZDhiZjY0NGEzZmRlMzhiMzBjYWM2NzA4MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKLUlzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fb2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9hbGlnbm1l
bnQoYWxpZ25tZW50KQotICAgICwgbV9zaXplKHNpemUpCitJc29UTFNFbnRyeTo6SXNvVExTRW50
cnkoc2l6ZV90IHNpemUpCisgICAgOiBtX3NpemUoc2l6ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNFbnRyeS5oCmluZGV4IDc0ZjQ0OWJmYTI4YTQwMWZiMDQzODhjYmNlNTE0MzZl
ODY4ZmQ2MTQuLmE0NzhlNmEzMmRlMTA2YWNjN2UzOTBhZTJhYjJmZTkwZjEwYjc0MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQkVY
UE9SVCBJc29UTFNFbnRyeSB7CiAgICAgdmlydHVhbCB+SXNvVExTRW50cnkoKTsKICAgICAKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICBzaXplX3Qg
YWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbm1lbnQ7IH0KKyAgICBzaXplX3QgYWxp
Z25tZW50KCkgY29uc3QgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGV4dGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0ICsgbV9zaXplOyB9CiAgICAgCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNz
IEJFWFBPUlQgSXNvVExTRW50cnkgewogICAgIHZvaWQgd2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExT
RW50cnkqLCBjb25zdCBGdW5jJik7CiAKIHByb3RlY3RlZDoKLSAgICBJc29UTFNFbnRyeShzaXpl
X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CisgICAgSXNvVExTRW50cnkoc2l6ZV90IHNpemUp
OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXNvVExTOwpAQCAtODYsMTUgKzg2
LDE0IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExTRW50cnkgewogCiAgICAgSXNvVExTRW50cnkqIG1f
bmV4dCB7IG51bGxwdHIgfTsKICAgICAKLSAgICBzaXplX3QgbV9vZmZzZXQ7IC8vIENvbXB1dGVk
IGluIGNvbnN0cnVjdG9yLgotICAgIHNpemVfdCBtX2FsaWdubWVudDsKLSAgICBzaXplX3QgbV9z
aXplOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgVUlOVF9NQVggfTsgLy8gQ29tcHV0ZWQgaW4g
Y29uc3RydWN0b3IuCisgICAgdW5zaWduZWQgbV9zaXplOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgRW50cnlUeXBlPgogY2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDogcHVibGljIElzb1RMU0Vu
dHJ5IHsKIHB1YmxpYzoKLSAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCk7CisgICAgfkRlZmF1bHRJ
c29UTFNFbnRyeSgpID0gZGVmYXVsdDsKICAgICAKIHByb3RlY3RlZDoKICAgICBEZWZhdWx0SXNv
VExTRW50cnkoKTsKQEAgLTEwNiw4ICsxMDUsNiBAQCBjbGFzcyBEZWZhdWx0SXNvVExTRW50cnkg
OiBwdWJsaWMgSXNvVExTRW50cnkgewogICAgIC8vIExpa2V3aXNlLCB0aGlzIGlzIHNlcGFyYXRl
IGZyb20gc2NhdmVuZ2luZy4gV2hlbiB0aGUgVExTIGlzIHNodXR0aW5nIGRvd24sIHdlIHdpbGwg
YmUgYXNrZWQgdG8KICAgICAvLyBzY2F2ZW5nZSBhbmQgdGhlbiB3ZSB3aWxsIGJlIGFza2VkIHRv
IGRlc3RydWN0LgogICAgIHZvaWQgZGVzdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJyaWRlOwotCi0g
ICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0Vu
dHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMu
aAppbmRleCA2ZjYxNWY5NTBjZGJmMGFhMDYzMTM1OTFkMzgzYzhjMjRjMjhmM2IzLi5jMmE3Mjdl
MGYzNWY2YWM0MzAxY2IzYWE0OWVkYmE5NWNmMTBhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTRW50cnlJbmxpbmVzLmgKQEAgLTQzLDEzICs0MywxMCBAQCB2b2lkIElzb1RM
U0VudHJ5Ojp3YWxrVXBUb0luY2x1c2l2ZShJc29UTFNFbnRyeSogbGFzdCwgY29uc3QgRnVuYyYg
ZnVuYykKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgogRGVmYXVsdElzb1RMU0VudHJ5
PEVudHJ5VHlwZT46OkRlZmF1bHRJc29UTFNFbnRyeSgpCi0gICAgOiBJc29UTFNFbnRyeShhbGln
bm9mKEVudHJ5VHlwZSksIHNpemVvZihFbnRyeVR5cGUpKQotewotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBFbnRyeVR5cGU+Ci1EZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJ
c29UTFNFbnRyeSgpCisgICAgOiBJc29UTFNFbnRyeShzaXplb2YoRW50cnlUeXBlKSkKIHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFbnRyeVR5cGUpIDw9IFVJTlQzMl9NQVgpOworICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKHZvaWQqKSA9PSBhbGlnbm9mKEVudHJ5VHlwZSksICJCZWNhdXNl
IElzb1RMU0VudHJ5IGluY2x1ZGVzIHZ0YWJsZSwgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIHRvIHRo
ZSBwb2ludGVyIik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KQEAgLTY3LDEy
ICs2NCw1IEBAIHZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OmRlc3RydWN0KHZv
aWQqIHBhc3NlZEVudHJ5KQogICAgIGVudHJ5LT5+RW50cnlUeXBlKCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEVudHJ5VHlwZT4KLXZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46
OnNjYXZlbmdlKHZvaWQqIHBhc3NlZEVudHJ5KQotewotICAgIEVudHJ5VHlwZSogZW50cnkgPSBz
dGF0aWNfY2FzdDxFbnRyeVR5cGUqPihwYXNzZWRFbnRyeSk7Ci0gICAgZW50cnktPnNjYXZlbmdl
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0lubGluZXMuaAppbmRleCAxZWFiMjcxYzQwY2E3OWEzZGRlZmZiZmQyNWUwZTc0ODY4YTRk
MzE5Li4wZDRiMjAxOTRlMGNkZWQyMDg4YzllNzRjNzI4NzQ4NjQ1YTM0MWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIElzb1RM
Uzo6c2NhdmVuZ2UoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYg
KG9mZnNldCA8IHRscy0+bV9leHRlbnQpCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxs
b2NhdG9yPHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmlnPio+KHRscy0+bV9kYXRh
ICsgb2Zmc2V0KS0+c2NhdmVuZ2UoKTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29BbGxv
Y2F0b3I8dHlwZW5hbWUgYXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEg
KyBvZmZzZXQpLT5zY2F2ZW5nZShoYW5kbGUuaW1wbCgpKTsKICAgICBvZmZzZXQgPSBoYW5kbGUu
ZGVhbGxvY2F0b3JPZmZzZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxzLT5tX2V4dGVudCkKICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29EZWFsbG9jYXRvcjx0eXBlbmFtZSBhcGk6Oklzb0hl
YXA8VHlwZT46OkNvbmZpZz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZlbmdlKCk7CkBA
IC03NCwxMyArNzQsMTMgQEAgdm9pZCogSXNvVExTOjphbGxvY2F0ZUltcGwoYXBpOjpJc29IZWFw
PFR5cGU+JiBoYW5kbGUsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgSXNvVExTKiB0bHMgPSBn
ZXQoKTsKICAgICBpZiAoIXRscyB8fCBvZmZzZXQgPj0gdGxzLT5tX2V4dGVudCkKICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvdzxDb25maWc+KGhhbmRsZSwgYWJvcnRPbkZhaWx1cmUpOwotICAg
IHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KG9mZnNldCwgYWJvcnRPbkZhaWx1cmUp
OworICAgIHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhhbmRsZSwgb2Zmc2V0LCBh
Ym9ydE9uRmFpbHVyZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQqIElz
b1RMUzo6YWxsb2NhdGVGYXN0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KK3ZvaWQqIElzb1RMUzo6
YWxsb2NhdGVGYXN0KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB1bnNpZ25lZCBvZmZzZXQs
IGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNv
QWxsb2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShhYm9ydE9uRmFp
bHVyZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4q
PihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShoYW5kbGUuaW1wbCgpLCBhYm9ydE9uRmFpbHVy
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KQEAgLTEw
OCw3ICsxMDgsNyBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVTbG93KGFwaTo6
SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCBib29sIGFib3J0T25GYQogICAgIAogICAgIElzb1RMUyog
dGxzID0gZW5zdXJlSGVhcEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAKLSAgICByZXR1cm4gdGxz
LT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25G
YWlsdXJlKTsKKyAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUsIGhh
bmRsZS5hbGxvY2F0b3JPZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RM
U0xheW91dC5jcHAKaW5kZXggNGIzMzVlYTUxOWQ0NWU4ZjE2YjJhOGQ5MDllMTMwNDYxOWQ1NzQ4
NC4uMGJhZTYwNzcwMWU0OTBjN2FlMmE5ZjQwZTdlOTE3Y2VjZmIxNzMyNSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcApAQCAtNDQsNyArNDQsOSBAQCB2b2lkIElzb1RM
U0xheW91dDo6YWRkKElzb1RMU0VudHJ5KiBlbnRyeSkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2tpbmcoYWRkaW5nTXV0ZXgpOwogICAgIGlmIChtX2hlYWQpIHsKICAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKG1fdGFpbCk7Ci0gICAgICAgIGVudHJ5LT5tX29mZnNldCA9IHJvdW5kVXBU
b011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgp
LCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG9mZnNldCA8IFVJ
TlRfTUFYKTsKKyAgICAgICAgZW50cnktPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBzdGQ6
OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCk7CiAgICAgICAg
IG1fdGFpbC0+bV9uZXh0ID0gZW50cnk7CiAgICAgICAgIG1fdGFpbCA9IGVudHJ5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvUGFja2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI0YzRlZDdiZWJkY2E4NmU3MWQ4M2MyMjJlNmRj
MWNhYTA0ZDAyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFj
a2VkLmgKQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxnb3JpdGhtLmgi
CisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFj
ZSBibWFsbG9jIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZCB7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlwZSA9IHRydWU7CisKKyAg
ICBQYWNrZWQoKQorICAgICAgICA6IFBhY2tlZChUIHsgfSkKKyAgICB7CisgICAgfQorCisgICAg
UGFja2VkKGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5k
YXRhKCksICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBUIGdldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBUIHZhbHVlOworICAgICAgICBtZW1jcHkoJnZhbHVlLCBtX3N0b3JhZ2Uu
ZGF0YSgpLCBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAg
dm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdl
LmRhdGEoKSwgJnZhbHVlLCBzaXplb2YoVCkpOworICAgIH0KKworICAgIFBhY2tlZDxUPiYgb3Bl
cmF0b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBl
eGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gZ2V0KCk7
CisgICAgICAgIHNldChzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IG9sZFZhbHVlOworICAgIH0KKworICAgIHZvaWQgc3dhcChQYWNrZWQmIG90aGVyKQorICAgIHsK
KyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVy
Ojppc1BhY2tlZFR5cGU+PgorICAgIHZvaWQgc3dhcChPdGhlciYgb3RoZXIpCisgICAgeworICAg
ICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAg
c2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAo
VCYgdDIpCisgICAgeworICAgICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0
MSwgdDIpOworICAgICAgICBzZXQodDEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIHNpemVvZihUKT4gbV9zdG9yYWdlOworfTsKKworLy8gUGFja2VkQWxpZ25l
ZFB0ciBjYW4gdGFrZSBhbGlnbm1lbnQgcGFyYW1ldGVyIHRvby4gUGFja2VkQWxpZ25lZFB0ciBv
bmx5IHVzZXMgdGhpcyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaWYgaXQgaXMgcHJvZml0YWJsZTog
d2UgdXNlCisvLyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiByZWR1Y2Ug
dGhlIHNpemUgb2YgdGhlIHN0b3JhZ2UuIFNpbmNlIHRoZSBwb2ludGVyIHdpZHRoIGlzIDM2IGJp
dHMgYW5kIEpTQ2VsbHMgYXJlIGFsaWduZWQgdG8gMTYgYnl0ZXMsCisvLyB3ZSBjYW4gdXNlIDQg
Yml0cyBpbiBEYXJ3aW4gQVJNNjQsIHdlIGNhbiBjb21wYWN0IGNlbGwgcG9pbnRlciBpbnRvIDQg
Ynl0ZXMgKDMyIGJpdHMpLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGFsaWdubWVudCA9
IGFsaWdub2YoVCk+CitjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWNfYXNzZXJ0KGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpLCAiQWxpZ25tZW50IG5lZWRzIHRvIGJl
IHBvd2VyLW9mLXR3byIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUg
PSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXpl
SWZQcm9maXRhYmxlID0gZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihhbGlnbm1lbnQpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hp
ZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDgsIHVpbnRwdHJfdD4oQk9TX0VGRkVDVElWRV9BRERS
RVNTX1dJRFRIKSAvIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzdG9yYWdlU2l6
ZVdpdGhBbGlnbm1lbnRTaGlmdCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8OCwgdWludHB0cl90PihC
T1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggLSBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFi
bGUpIC8gODsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBbGlnbm1lbnRTaGlmdFByb2Zp
dGFibGUgPSBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0
aEFsaWdubWVudFNoaWZ0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50
U2hpZnRTaXplID0gaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPyBhbGlnbm1lbnRTaGlmdFNp
emVJZlByb2ZpdGFibGUgOiAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFn
ZVNpemUgPSBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdDsKKworICAgIGNvbnN0ZXhwciBQ
YWNrZWRBbGlnbmVkUHRyKCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdGV4cHIgUGFja2VkQWxpZ25lZFB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAg
OiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWRBbGlnbmVkUHRyKFQqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFBhY2tlZFB0cjw+IGNhbiBsb2FkIG1lbW9y
eSB3aXRoIG9uZSBtb3YgYnkgY2hlY2tpbmcgcGFnZSBib3VuZGFyeS4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzc1NAorICAgICAgICB1aW50
cHRyX3QgdmFsdWUgPSAwOworI2lmIEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5
KCZ2YWx1ZSwgbV9zdG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAg
bWVtY3B5KGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0g
c3RvcmFnZVNpemUpLCBtX3N0b3JhZ2UuZGF0YSgpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAg
ICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQorICAgICAgICAgICAgdmFsdWUg
PDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4o
dmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc2V0KFQqIHBhc3NlZFZhbHVlKQorICAgIHsKKyAg
ICAgICAgdWludHB0cl90IHZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGFzc2VkVmFs
dWUpOworICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCisgICAgICAgICAg
ICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXplOworI2lmIEJDUFUoTElUVExFX0VORElBTikK
KyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwgc3RvcmFnZVNpemUpOwor
I2Vsc2UKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9yYWdlU2l6
ZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIHNl
dChudWxscHRyKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
Z2V0KCk7IH0KKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhp
cyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wg
YnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFs
aWduZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9z
dG9yYWdlIDogbnVsbHB0cjsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBnZXQoKTsgfQorCisgICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1Zh
bHVlKQorICAgIHsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0
ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAg
fQorCisgICAgdm9pZCBzd2FwKHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IH0KKworICAgIHZv
aWQgc3dhcChQYWNrZWRBbGlnbmVkUHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFn
ZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4K
KyAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQo
KTsKKyAgICAgICAgVCogdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAg
ICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCogdDIpCisgICAgewor
ICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAg
ICAgc2V0KHQxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTx1aW50OF90LCBz
dG9yYWdlU2l6ZT4gbV9zdG9yYWdlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNz
IFBhY2tlZDxUKj4gOiBwdWJsaWMgUGFja2VkQWxpZ25lZFB0cjxULCAxPiB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IFBhY2tlZEFsaWduZWRQdHI8VCwgMT47CisgICAgdXNpbmcgQmFzZTo6
QmFzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRQdHIgPSBQYWNr
ZWQ8VCo+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFBhY2tlZFB0clRyYWl0cyB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gUGFja2VkUHRy
VHJhaXRzPFU+OworCisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQYWNrZWRQdHI8VD47CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwg
VSYmIG5ld1ZhbHVlKSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4gc3RhdGljIHZvaWQgc3dhcChQYWNrZWRQdHI8VD4mIGEs
IE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQorCisgICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBT
dG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2Vy
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAppbmRleCBlYjE1YjMx
ZjEzNThkMmFhYmM3NDI5ZjI2ZDM1YjNmNzk1OTA4MmM4Li42MGYwNjc2YmYzMDZhNjJmYmMyMjJi
YTczYzJiMDM1YTljMWRjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nj
YXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQnVsa0RlY29tbWl0LmgiCiAjaW5jbHVkZSAiRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSXNvSGVhcEltcGxJbmxp
bmVzLmgiCiAjaWYgQk9TKERBUldJTikKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAj
aW1wb3J0IDxtYWNoL2hvc3RfaW5mby5oPgpAQCAtNjcsNyArNjgsNyBAQCBzdHJ1Y3QgUHJpbnRU
aW1lIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKFNjYXZlbmdlcik7CiAK
LVNjYXZlbmdlcjo6U2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorU2NhdmVuZ2Vy
OjpTY2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgQkFTU0VS
VCghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NjYXZlbmdlci5oCmluZGV4IGY0ODkzNGI1MTFiNmU2YzE4ZDg5NmQ1ZDU5MzQxNTli
ZjUzZTk5MGMuLjcyOGE3NWUzYmRmZGExOTY5Y2EwNTg1MGU2NTE5ZTI0MDkyOGI0ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgYm1h
bGxvYyB7CiAKIGNsYXNzIFNjYXZlbmdlciA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFNjYXZl
bmdlcj4gewogcHVibGljOgotICAgIEJFWFBPUlQgU2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKTsKKyAgICBCRVhQT1JUIFNjYXZlbmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+Jik7CiAgICAgCiAgICAgflNjYXZlbmdlcigpID0gZGVsZXRlOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuY3BwCmluZGV4IDVjOGUyOGEwNTA5MzFhMTQ1M2IyZTNhOTkyY2YyZjgyOTVl
YzlmZWYuLmFkZjIxNjcxZWJkODdhOWZkNjU3OGE0NWNhNjE2MDAyZjVjNzU3YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZNSGVhcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoVk1IZWFwKTsKIAotVk1IZWFw
OjpWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitWTUhlYXA6OlZNSGVhcChjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9WTUhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKaW5k
ZXggNDdhMTEzZGJmMjczNjQxMTQxMjg4YWI2YzRlNTA1ZWFlNWJiNWMxMS4uNjhmMGFiZTZhZDU5
YTBlNDk4YTQwOWJjMTUwOGNjOTA1ZjFlMDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9WTUhlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgZW51bSB7IFN5bmMsIEFzeW5jIH0gU2NhdmVuZ2VNb2Rl
OwogCiBjbGFzcyBWTUhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxWTUhlYXA+IHsKIHB1
YmxpYzoKLSAgICBWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIFZNSGVhcChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgTGFyZ2VSYW5nZSB0cnlB
bGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9ab25lLmNwcAppbmRleCBmMTFiNTE3ZDJmNTdiNWNkZDE3YjRiYjVhYWM2MGFiZWY5OWU3
NTQyLi4wYmI4Mjk2OTJhYzc4MjAyMjIwNTI2NTMwMDM4OWZjYjY5NDZjOTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvWm9uZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgY29uc3QgbWFsbG9jX2lu
dHJvc3BlY3Rpb25fdCB6b25lSW50cm9zcGVjdCA9IHsKICAgICAuc3RhdGlzdGljcyA9IGJtYWxs
b2M6OnN0YXRpc3RpY3MKIH07CiAKLVpvbmU6OlpvbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
Citab25lOjpab25lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIG1hbGxv
Y196b25lX3Q6OnNpemUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAgbWFsbG9jX3pvbmVfdDo6
em9uZV9uYW1lID0gIldlYktpdCBNYWxsb2MiOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9ab25lLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAppbmRleCAwMDlk
NzIyN2YyMzg3N2VmMWVhNjgyYzAyODJjZDZlZmFmOGU2ZDU3Li5mNWQ2NDk1YTQxZTJlY2MwY2Vk
ZTFjNTM1ZTUzMjE1NGMwMDM1ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1pvbmUuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBab25lIDogcHVibGljIG1hbGxvY196b25lX3QgewogICAgIC8vIEVub3VnaCBj
YXBhY2l0eSB0byB0cmFjayBhIDY0R0IgaGVhcCwgc28gcHJvYmFibHkgZW5vdWdoIGZvciBhbnl0
aGluZy4KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDIwNDg7CiAKLSAg
ICBab25lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBab25lKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKTsKICAgICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9h
ZGRyZXNzX3QpOwogCiAgICAgdm9pZCBhZGRSYW5nZShSYW5nZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzNhZjg1YzMzZTVlNWNhYTdmZWYz
NDEyNGRjNmE5YWQxOTZmZmY5ZS4uNWUyN2MxZjU4NWFlMmI5NTNkOWVmMTI3YThiYTUzMThlZDli
MGMwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIElzb0hlYXAncyBpbml0aWFsIHNldHVwIHNob3Vs
ZCBiZSBzbWFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwOgorICAgICAg
ICAoYXNzZXJ0SGFzT2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRIYXNPbmx5T2JqZWN0cyk6Cisg
ICAgICAgIChhc3NlcnRDbGVhbik6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0xNCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjI1NDQ4MCwgcjI1NDQ5NiwgYW5kIHIyNTQ1MTcuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcAppbmRleCA0MjYz
ZjExYjM2MGNlMGJjMmZkNjA1ODUyNjY2NzI0YzA4ODQxZTgxLi40NmRhNTllNjZhNzg0N2JlNjM5
MmFhZDUzYzViYmViMjk4MWEyZmJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAgc3RhdGljIHZvaWQg
YXNzZXJ0SGFzT2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+
IHBvaW50ZXJzKQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFj
aExpdmVPYmplY3QoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3Qp
IHsKICAgICAgICAgICAgIHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7CiAgICAgICAgIH0pOwpAQCAt
OTYsNiArOTcsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhl
YXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZQogICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihp
bXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisgICAgICAgIGxvY2tlciwK
ICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShwb2lu
dGVycy5lcmFzZShvYmplY3QpLCAxVSk7CiAgICAgICAgIH0pOwpAQCAtMTA4LDE1ICsxMTAsMTEg
QEAgc3RhdGljIHZvaWQgYXNzZXJ0Q2xlYW4oSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXApCiAgICAg
c2NhdmVuZ2VUaGlzVGhyZWFkKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVi
dWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAg
ICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2Nr
ZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmpl
Y3RzKCkpOwotICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmpl
Y3RzKCkpOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVu
dDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2Nr
ZXIoaW1wbC5sb2NrKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwubnVtQ29tbWl0dGVkUGFn
ZXMoKSk7CiAgICAgfQogfQpAQCAtMTg3LDE5ICsxODUsMTIgQEAgVEVTVChibWFsbG9jLCBJc29G
bGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCiAgICAgICAgIHB0cnNbaV0g
PSBudWxscHRyOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVt
Q29tbWl0dGVkUGFnZXNCZWZvcmU7CiAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAg
IHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5s
b2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRl
ZFBhZ2VzKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0g
aW1wbC5udW1Db21taXR0ZWRQYWdlcygpOwogICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAs
IHRvcHRyc2V0KHB0cnMpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7
IGktLTspCiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2sp
OwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29t
bWl0dGVkUGFnZXMoKSk7Ci0gICAgfQorICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0Jl
Zm9yZSwgaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKICAgICBmb3IgKHZvaWQqIHB0ciA6IHB0
cnMpCiAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwogICAgIGFzc2VydENsZWFuKGhlYXAp
OwpAQCAtMjIyLDE3ICsyMTMsMTEgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50
ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgpCiAgICAgaGVhcC5zY2F2ZW5nZSgpOwogICAgIHVu
c2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOwogICAgIGF1dG8mIGltcGwgPSBoZWFwLmlt
cGwoKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9j
a2VyKGltcGwubG9jayk7Ci0gICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5u
dW1Db21taXR0ZWRQYWdlcygpOwotICAgIH0KKyAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdl
c0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICBhc3NlcnRIYXNPbmx5T2Jq
ZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5z
aXplKCkgLyAyOyBpLS07KQogICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkp
OwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIo
aW1wbC5sb2NrKTsKLSAgICAgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlLCBp
bXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KKyAgICBFWFBFQ1RfRVEobnVtQ29tbWl0
dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgZm9yICh2b2lk
KiBwdHIgOiBwdHJzKQogICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKICAgICBhc3NlcnRD
bGVhbihoZWFwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387841</attachid>
            <date>2020-01-15 13:50:44 -0800</date>
            <delta_ts>2020-01-15 15:06:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115135043.patch</filename>
            <type>text/plain</type>
            <size>88657</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uMTc1NmNiYjExYjY0MjEzMzM3NDYzZTMzNTc0NzJi
MjkxNzJlMzY2NiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxn
b3JpdGhtLmg6CisgICAgICAgIChibWFsbG9jOjpjdHpDb25zdGV4cHIpOgorICAgICAgICAoYm1h
bGxvYzo6Z2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcik6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5jcHA6CisgICAgICAgIChibWFs
bG9jOjpEZWJ1Z0hlYXA6OkRlYnVnSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxs
b2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQp
OgorICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dp
Z2FjYWdlLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6
OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpmcmVlYWJsZU1lbW9yeSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVu
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKToK
KyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKiBibWFsbG9jL0lz
b0FsbG9jYXRvci5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcik6Cisg
ICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
IChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KToKKyAgICAgICAgKGJtYWxs
b2M6OnBhc3NlZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxv
Yzo6cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpkaWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNo
Q29tbWl0dGVkUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6Oklzb0hlYXBJbXBsQmFzZSk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29IZWFwSW1wbC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcEltcGxJ
bmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFw
SW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNv
bWVFbGlnaWJsZU9yRGVjb21taXRlZCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1w
bEJhc2U6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUxpdmVPYmplY3RzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGxCYXNlOjpmb290cHJpbnQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGxCYXNlOjpkaWRDb21taXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjpk
aWREZWNvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJl
ZWFibGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVh
YmxlTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZp
Zz46OmZvb3RwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxD
b25maWc+OjpkaWRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6ZGlkRGVjb21taXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6aXNOb3dGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vTG9uZ2VyRnJlZWFibGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZUJh
c2U6Oklzb1BhZ2VCYXNlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6Cisg
ICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46Oklzb1BhZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6SXNvUGFnZTxDb25maWc+OjpmcmVlKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8
Q29uZmlnPjo6c3RhcnRBbGxvY2F0aW5nKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29u
ZmlnPjo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+
Ojpmb3JFYWNoTGl2ZU9iamVjdCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmg6
CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRIZWFwOjpJc29TaGFyZWRIZWFwKToKKyAgICAg
ICAgKiBibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29TaGFyZWRIZWFwOjphbGxvY2F0ZU5ldyk6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRI
ZWFwOjphbGxvY2F0ZVNsb3cpOgorICAgICAgICAqIGJtYWxsb2MvSXNvU2hhcmVkUGFnZS5oOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxs
b2M6Oklzb1NoYXJlZFBhZ2U6OmZyZWUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFn
ZTo6c3RhcnRBbGxvY2F0aW5nKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZFBhZ2U6OnN0
b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMUy5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0Fs
bG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTQWxsb2NhdG9y
RW50cnk8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlu
bGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmln
Pjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTRW50cnkuY3BwOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvVExTRW50cnk6Oklzb1RMU0VudHJ5KToKKyAgICAgICAgKiBibWFsbG9j
L0lzb1RMU0VudHJ5Lmg6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaDoK
KyAgICAgICAgKGJtYWxsb2M6OkRlZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0
SXNvVExTRW50cnkpOgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5
VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6
RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OnNjYXZlbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBibWFsbG9jL0lzb1RMU0lubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6
c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZUltcGwpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvVExTOjphbGxvY2F0ZUZhc3QpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvVExTOjphbGxvY2F0ZVNsb3cpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMU0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFs
bG9jL1BhY2tlZC5oOiBBZGRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6UGFja2VkKToK
KyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6
OlBhY2tlZDo6c2V0KToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKGJtYWxsb2M6OlBhY2tlZDo6ZXhjaGFuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6UGFj
a2VkOjpzd2FwKToKKyAgICAgICAgKGJtYWxsb2M6OmFsaWdub2YpOgorICAgICAgICAoYm1hbGxv
Yzo6UGFja2VkUHRyVHJhaXRzOjpleGNoYW5nZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQ
dHJUcmFpdHM6OnN3YXApOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkUHRyVHJhaXRzOjp1bndy
YXApOgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6
OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAgICAgICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgor
ICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6
Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9jL1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2Mv
Wm9uZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpab25lOjpab25lKToKKyAgICAgICAgKiBibWFs
bG9jL1pvbmUuaDoKKwogMjAyMC0wMS0xNCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lA
c29ueS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9y
IHNwZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBjb21waWxlIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQK
aW5kZXggMzBkYmMzNDViNDkyNWZlMTFmNmYzZDY3NzRlMmNmOTdmY2Q2ZDVlMy4uNmM2YjdhNTA1
ZjlmMTBjN2VhYWI1ZTdhMzQ3OTI2NWQxMmU3OGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAg
LTExMiw2ICsxMTIsNyBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxsb2Mv
TXV0ZXguaAogICAgIGJtYWxsb2MvT2JqZWN0LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaAor
ICAgIGJtYWxsb2MvUGFja2VkLmgKICAgICBibWFsbG9jL1BlckhlYXBLaW5kLmgKICAgICBibWFs
bG9jL1BlclByb2Nlc3MuaAogICAgIGJtYWxsb2MvUGVyVGhyZWFkLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTczYTk3ZGM4
NTg5M2U3ZmJhOTBlNjI3YTg5NjNkYTY2MWNiYTUxLi4zYjg1ZTc3ZmZiODNhNTQwZTY4ZjQzMzNm
Njc1MmFlYjgzZWRlODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAsNiArMTQwLDcgQEAKIAkJQUQxNEFEMkEyMDI1MjlD
NzAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMTRBRDI4MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hl
Y2subW0gKi87IH07CiAJCURFOEIxM0IzMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERThCMTNCMjIxQ0M1
RDlGMDBBNjNGQ0QgLyogQlZNVGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMUU3NDgwMjIzOENBNUMwMDVEMDg0QSAvKiBTdGF0aWNQZXJQ
cm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3RhdGljUGVyUHJvY2Vzcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEODREMjNDRUIzODkw
MDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMjhEODRDMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E0MTNDOTIyNjA2MTE0
MDAzN0Y0NzAgLyogSXNvU2hhcmVkUGFnZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTQxM0M4MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29T
aGFyZWRQYWdlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRjI0NDAyMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyNDQwMTIy
NUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRjI0NDA0MjI1RDJDNzYwMEEwRTBDMyAvKiBJ
c29TaGFyZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRjI0NDAzMjI1RDJDNzYwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdlLmNwcCAqLzsg
fTsKQEAgLTI5NSw2ICsyOTYsNyBAQAogCQlBRDE0QUQyODIwMjUyOUIwMDA4OTBFM0IgLyogUHJv
Y2Vzc0NoZWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJv
Y2Vzc0NoZWNrLm1tOyBwYXRoID0gYm1hbGxvYy9Qcm9jZXNzQ2hlY2subW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEJWTVRhZ3MuaDsgcGF0aCA9IGJtYWxsb2MvQlZNVGFncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzFFNzQ3RjIyMzhDQTVCMDA1RDA4NEEgLyogU3Rh
dGljUGVyUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdGF0aWNQ
ZXJQcm9jZXNzLmg7IHBhdGggPSBibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQYWNrZWQuaDsgcGF0aCA9IGJtYWxs
b2MvUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQxM0M4MjI2MDYx
MTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlSW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29T
aGFyZWRQYWdlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQw
MTIyNUQyQzAxMDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjQ0MDMyMjVEMkM3NjAwQTBF
MEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSXNvU2hhcmVkUGFnZS5jcHA7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMyLDYgKzUzNCw3IEBACiAJCQkJMTRD
ODk5MkExQ0M0ODVFNzAwMjdBMDU3IC8qIE1hcC5oICovLAogCQkJCTE0M0NCODFBMTkwMjJCQzkw
MEIxNkE0NSAvKiBNdXRleC5jcHAgKi8sCiAJCQkJMTQzQ0I4MUIxOTAyMkJDOTAwQjE2QTQ1IC8q
IE11dGV4LmggKi8sCisJCQkJRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICov
LAogCQkJCTBGNUJGMTQ4MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oICovLAogCQkJ
CTBGMjZBN0E0MjA1NDgzMEQwMDkwQTE0MSAvKiBQZXJQcm9jZXNzLmNwcCAqLywKIAkJCQkxNDQ0
NkEwNzE3QTYxRkE0MDBGOUVBMUQgLyogUGVyUHJvY2Vzcy5oICovLApAQCAtNjQ4LDYgKzY1MSw3
IEBACiAJCQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDRCRTExRjFDQTM0NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNERENzg5MzE4RjQ4RDBGMDA5NTA3MDIgLyogT2JqZWN0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyOEQ4NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1QkYxNDkxRjIyQThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNERENzhDQjE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0MxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclRocmVh
ZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Fs
Z29yaXRobS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCA5MGEy
NTVhZGI3ZTcxMjJmOTBhZGM2MmFlMDYzZDUwNTYwMzI4YjcyLi5kMjJmM2NlMDU0NDk1ZDAyYzBj
NTQ5MzNkZDE4YTcxZjg3MDcwMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8Y2xpbWl0cz4KICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNz
dGRkZWY+CiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMTkzLDYgKzE5NCwzMSBAQCBib29sIGZpbmRC
aXRJbldvcmQoVCB3b3JkLCBzaXplX3QmIGluZGV4LCBzaXplX3QgZW5kSW5kZXgsIGJvb2wgdmFs
dWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0
ZXhwciB1bnNpZ25lZCBjdHpDb25zdGV4cHIoVCB2YWx1ZSkKK3sKKyAgICBjb25zdGV4cHIgdW5z
aWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAqIENIQVJfQklUOworCisgICAgdXNpbmcgVVQgPSB0
eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU7CisgICAgVVQgdVZhbHVlID0gdmFs
dWU7CisKKyAgICB1bnNpZ25lZCB6ZXJvQ291bnQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBiaXRTaXplOyBpKyspIHsKKyAgICAgICAgaWYgKHVWYWx1ZSAmIDEpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgdVZhbHVlID4+PSAx
OworICAgIH0KKyAgICByZXR1cm4gemVyb0NvdW50OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorY29uc3RleHByIHVuc2lnbmVkIGdldExTQlNldE5vblplcm9Db25zdGV4cHIoVCB0KQorewor
ICAgIHJldHVybiBjdHpDb25zdGV4cHIodCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
IAogI2VuZGlmIC8vIEFsZ29yaXRobV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0JQbGF0Zm9ybS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaAppbmRl
eCBhZmU5ZTIwMzQ5ZmJhMDE3OTIyMDAxNzc2YmI3ZDJjZDIzNTIzMjE3Li5kNzg0Y2YxYmVkMGYy
NWViNmY4MDE3Y2E2NjUxZmE0NTYxODBkZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0JQbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3Jt
LmgKQEAgLTIzMCw2ICsyMzAsNDUgQEAKIAogI2VuZGlmIC8qIEFSTSAqLwogCisKKyNpZiBCQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCisvKiBfX0xQNjRfXyBpcyBub3QgZGVmaW5lZCBvbiA2NGJp
dCBXaW5kb3dzIHNpbmNlIGl0IHVzZXMgTExQNjQuIFVzaW5nIF9fU0laRU9GX1BPSU5URVJfXyBp
cyBzaW1wbGVyLiAqLworI2lmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4CisjZGVmaW5lIEJDUFVf
QUREUkVTUzY0IDEKKyNlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA0CisjZGVmaW5lIEJDUFVf
QUREUkVTUzMyIDEKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIHBvaW50ZXIgd2lkdGgiCisj
ZW5kaWYKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIGNvbXBpbGVyIGZvciBibWFsbG9jIgor
I2VuZGlmCisKKyNpZiBCQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgX19CWVRFX09SREVS
X18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18KKyNkZWZpbmUgQkNQVV9CSUdfRU5ESUFOIDEKKyNl
bGlmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCisjZGVmaW5lIEJD
UFVfTElUVExFX0VORElBTiAxCisjZWxpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX1BEUF9F
TkRJQU5fXworI2RlZmluZSBCQ1BVX01JRERMRV9FTkRJQU4gMQorI2Vsc2UKKyNlcnJvciAiVW5r
bm93biBlbmRpYW4iCisjZW5kaWYKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIGNvbXBpbGVy
IGZvciBibWFsbG9jIgorI2VuZGlmCisKKyNpZiBCQ1BVKEFERFJFU1M2NCkKKyNpZiBCT1MoREFS
V0lOKSAmJiBCQ1BVKEFSTTY0KQorI2RlZmluZSBCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgg
MzYKKyNlbHNlCisvKiBXZSBzdHJvbmdseSBhc3N1bWUgdGhhdCBlZmZlY3RpdmUgYWRkcmVzcyB3
aWR0aCBpcyA8PSA0OCBpbiA2NGJpdCBhcmNoaXRlY3R1cmVzIChlLmcuIE5hTiBib3hpbmcpLiAq
LworI2RlZmluZSBCT1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggNDgKKyNlbmRpZgorI2Vsc2UK
KyNkZWZpbmUgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDMyCisjZW5kaWYKKwogI2RlZmlu
ZSBCQVRUUklCVVRFX1BSSU5URihmb3JtYXRTdHJpbmdBcmd1bWVudCwgZXh0cmFBcmd1bWVudHMp
IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCBmb3JtYXRTdHJpbmdBcmd1bWVudCwg
ZXh0cmFBcmd1bWVudHMpKSkKIAogI2lmIEJQTEFURk9STShNQUMpIHx8IEJQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3Bw
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCmluZGV4IDdhNjY3YTdkZDZi
NWU4MWNlNjQ3OTExZTg4ZmIxNjkxZTg0NmRmMTkuLjJjOWY1YjQ1ODBhZDE0ZmM4NjBiMTZmZjVh
Njk5YzZhMDNlZTM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdI
ZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKERlYnVnSGVhcCk7
CiAKICNpZiBCT1MoREFSV0lOKQogCi1EZWJ1Z0hlYXA6OkRlYnVnSGVhcChzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JikKK0RlYnVnSGVhcDo6RGVidWdIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKQogICAgIDogbV96b25lKG1hbGxvY19jcmVhdGVfem9uZSgwLCAwKSkKICAgICAsIG1f
cGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewpAQCAtODgsNyArODgsNyBAQCB2b2lkIERlYnVnSGVh
cDo6ZHVtcCgpCiAKICNlbHNlCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYpCiAgICAgOiBtX3BhZ2VTaXplKHZtUGFnZVNpemUoKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0RlYnVnSGVhcC5oCmluZGV4IDk1OGEyMjA5MGE0MTQwN2NlNjA4YmRkNGExZmExMmI4ZmZi
YTUxMGIuLjlkYjg1NTIzYmVlNzczYWYxOGExNmI5ODA1YjEwOTNiZTkxMWM2ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgYm1hbGxv
YyB7CiAgICAgCiBjbGFzcyBEZWJ1Z0hlYXAgOiBwcml2YXRlIFN0YXRpY1BlclByb2Nlc3M8RGVi
dWdIZWFwPiB7CiBwdWJsaWM6Ci0gICAgRGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KTsKKyAgICBEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAog
ICAgIHZvaWQqIG1hbGxvYyhzaXplX3QsIEZhaWx1cmVBY3Rpb24pOwogICAgIHZvaWQqIG1lbWFs
aWduKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaAppbmRleCBiMjc2YTJjMGUwNmUzYWY3MzcyMGI3
YzdhY2Y3NDY0ZWY0ZDEzMGI3Li4yOWZiMTk3NjllZGI5ZGRiMGI0YzFlNmQwNzZkZDVhNTkzNjUz
NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKQEAgLTI2LDYg
KzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSXNvUGFnZVRyaWdnZXIuaCIKKyNp
bmNsdWRlICJNdXRleC5oIgorI2luY2x1ZGUgPG11dGV4PgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7
CiAKQEAgLTM3LDEwICszOSwxMCBAQCBjbGFzcyBEZWZlcnJlZFRyaWdnZXIgewogICAgIERlZmVy
cmVkVHJpZ2dlcigpIHsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLSAg
ICB2b2lkIGRpZEJlY29tZShJc29QYWdlPENvbmZpZz4mKTsKKyAgICB2b2lkIGRpZEJlY29tZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+Jik7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgaGFuZGxlRGVmZXJyYWwoSXNv
UGFnZTxDb25maWc+Jik7CisgICAgdm9pZCBoYW5kbGVEZWZlcnJhbChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+Jik7CiAgICAgCiBwcml2YXRlOgogICAgIGJv
b2wgbV9oYXNCZWVuRGVmZXJyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMuaAppbmRleCAwOWNmYzg1NzdmYWFmODEyYjFmY2Y5
YTM0NDUzYjRjYmQwYmNkZTM2Li43MWVhNzI2OGJiMWNmMmM3YWRiNGFlNjAzN2YzNjQyZmEwYzcy
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGlu
ZXMuaApAQCAtMzIsMjIgKzMyLDIyIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8
SXNvUGFnZVRyaWdnZXIgdHJpZ2dlcj4KIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
RGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+JiBwYWdl
KQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiYgcGFnZSkKIHsKICAgICBp
ZiAocGFnZS5pc0luVXNlRm9yQWxsb2NhdGlvbigpKQogICAgICAgICBtX2hhc0JlZW5EZWZlcnJl
ZCA9IHRydWU7CiAgICAgZWxzZQotICAgICAgICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZSgm
cGFnZSwgdHJpZ2dlcik7CisgICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKGxvY2tl
ciwgJnBhZ2UsIHRyaWdnZXIpOwogfQogCiB0ZW1wbGF0ZTxJc29QYWdlVHJpZ2dlciB0cmlnZ2Vy
PgogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dl
cj46OmhhbmRsZURlZmVycmFsKElzb1BhZ2U8Q29uZmlnPiYgcGFnZSkKK3ZvaWQgRGVmZXJyZWRU
cmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVEZWZlcnJhbChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiYgcGFnZSkKIHsKICAgICBSRUxFQVNFX0JBU1NF
UlQoIXBhZ2UuaXNJblVzZUZvckFsbG9jYXRpb24oKSk7CiAgICAgCiAgICAgaWYgKG1faGFzQmVl
bkRlZmVycmVkKSB7Ci0gICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0
cmlnZ2VyKTsKKyAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFn
ZSwgdHJpZ2dlcik7CiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gZmFsc2U7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcAppbmRleCAyNTc0YjIzOWYzYTBm
ZGM2NDkxNzg2ZDM5ZDM1NzAxNGViMTIwNzc5Li44NzdhNmMyOWU1ZjdkMzhjOWZiZTIxYTIxZjc1
MDQwYWI2OTE3ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBib29sIGlzTmFub01hbGxvY0VuYWJsZWQoKQogCiBERUZJ
TkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoRW52aXJvbm1lbnQpOwogCi1FbnZpcm9ubWVu
dDo6RW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitFbnZpcm9ubWVudDo6RW52
aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBtX2lzRGVidWdI
ZWFwRW5hYmxlZChjb21wdXRlSXNEZWJ1Z0hlYXBFbmFibGVkKCkpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0Vudmlyb25tZW50LmgKaW5kZXggYTU2MjU2ZWJjYThlOWQ0ZmNlOWRiNDM1MmRlMjBh
MjcyZjczNDk1Yy4uN2IyOGRlOTI3M2UwMzRkYjRmNjc5YTAyNWE5YjI5MGFiZmZlMGJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKIGNsYXNzIEVudmlyb25tZW50IDogcHVibGljIFN0YXRpY1BlclByb2Nl
c3M8RW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIEVudmlyb25tZW50KHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBCRVhQT1JUIEVudmlyb25tZW50KGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAKICAgICBib29sIGlzRGVidWdIZWFwRW5hYmxlZCgp
IHsgcmV0dXJuIG1faXNEZWJ1Z0hlYXBFbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAKaW5kZXggM2NjYTJkNTRlNjYzZDU0MjIwNTUwMTA5NzFmZDkzZTdlZmJhNzExMS4u
NDIwMTk1OWY2MGJlNjIxMDUyYjEzMGQzZTk2NzViOWZiMDA3MzQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IENhbGxiYWNrIHsKIG5h
bWVzcGFjZSBibWFsbG9jIHsKIAogc3RydWN0IFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MgOiBw
dWJsaWMgU3RhdGljUGVyUHJvY2VzczxQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzPiB7Ci0gICAg
UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikgeyB9Cisg
ICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikgeyB9CiAgICAgCiAgICAgVmVjdG9yPEdpZ2FjYWdlOjpDYWxsYmFjaz4gY2FsbGJhY2tzOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCmluZGV4IDExODliODc3ODQ0NzVlMDdlM2FmYmNhMDli
MzMxMGIzMWJkYzE1MDEuLjNhYWU0M2EyMTdhZTNiMWQxZGNjYWQwZTcxNWZkYzQxZjgzOTY1ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcApAQCAtODEsNyArODEsNyBAQCBzaXplX3QgSGVhcDo6
Z2lnYWNhZ2VTaXplKCkKICAgICByZXR1cm4gR2lnYWNhZ2U6OnNpemUoZ2lnYWNhZ2VLaW5kKG1f
a2luZCkpOwogfQogCi1zaXplX3QgSGVhcDo6ZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpCitzaXplX3QgSGVhcDo6ZnJlZWFibGVNZW1vcnkoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7CiB9CkBAIC05MSwx
NCArOTEsMTQgQEAgc2l6ZV90IEhlYXA6OmZvb3RwcmludCgpCiAgICAgcmV0dXJuIG1fZm9vdHBy
aW50OwogfQogCi12b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKQordm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICBtX2xhcmdlRnJlZS5tYXJrQWxsQXNFbGln
aWJpbGUoKTsKICAgICBtX2hhc1BlbmRpbmdEZWNvbW1pdHMgPSBmYWxzZTsKICAgICBtX2NvbmRp
dGlvbi5ub3RpZnlfYWxsKCk7CiB9CiAKLXZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBk
ZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1p
dHRlcikKIHsKICAgICBtX2Zvb3RwcmludCAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwog
ICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKQEAgLTEx
NCw5ICsxMTQsOSBAQCB2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZQogfQogCiAjaWYgQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0
dGVyKQogI2Vsc2UKLXZvaWQgSGVhcDo6c2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0
cykKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9j
aywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0cykK
ICNlbmRpZgogewogICAgIGZvciAoYXV0byYgbGlzdCA6IG1fZnJlZVBhZ2VzKSB7CkBAIC0xNjks
NyArMTY5LDcgQEAgdm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBs
b2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyLCBzaXoKIH0KIAogI2lmIEJVU0UoUEFSVElB
TF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVh
cDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKIHsKICAgICB2b2lkKiBuZXdIaWdoV2F0
ZXJNYXJrID0gbnVsbHB0cjsKICAgICBmb3IgKExhcmdlUmFuZ2UmIHJhbmdlIDogbV9sYXJnZUZy
ZWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5kZXggZGIzMjQ1MzY4N2ZiNTZlNjAwMDgzYmVlMTBi
YTU0ZjA4MmMzZDY5My4uNTljNzVmMjdiOWM3OTg1MDBkZGRkZmI1YTNiNjM0YmNjOGQyYzFjNiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwLmgKQEAgLTc2LDE0ICs3NiwxNCBAQCBjbGFzcyBIZWFwIHsKICAg
ICB2b2lkIHNocmlua0xhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgY29uc3QgUmFuZ2Um
LCBzaXplX3QpOwogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYp
OwotICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1p
dCYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYpOwogI2Vsc2UKLSAgICB2b2lkIHNj
YXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRl
ZmVycmVkRGVjb21taXRzKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKICNl
bmRpZgotICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNv
bW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGZyZWVk
LCBzaXplX3QgZ29hbCk7CiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpOworICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+Jik7CiAgICAgc2l6ZV90IGZvb3RwcmludCgpOwogCiAgICAgdm9pZCBleHRl
cm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKQEAgLTkxLDEwICs5MSwxMCBAQCBjbGFz
cyBIZWFwIHsKICAgICB2b2lkIGV4dGVybmFsQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKICAg
ICB2b2lkIGV4dGVybmFsQ29tbWl0KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCogcHRy
LCBzaXplX3QpOwogCi0gICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+Jik7CisgICAgdm9pZCBtYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkZWNvbW1pdExh
cmdlUmFuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmLCBCdWxrRGVjb21t
aXQmKTsKKyAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOwogCiAgICAgc3RydWN0IExhcmdl
T2JqZWN0SGFzaCB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHZvaWQqIGtleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCmluZGV4IGZjYTlmY2Y3OGQ3MzNm
MzhiYmJmOTJmNzEyNWNlMDk2MjVmZjVhMjUuLmYzODRhNTRjNmE4ZmJmZDU5N2M0NDhiMTA2ZTQ3
ZjkzNDNiOTUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0
YW50cy5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApA
QCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIERFRklORV9TVEFUSUNfUEVS
X1BST0NFU1NfU1RPUkFHRShIZWFwQ29uc3RhbnRzKTsKIAotSGVhcENvbnN0YW50czo6SGVhcENv
bnN0YW50cyhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0hlYXBDb25zdGFudHM6OkhlYXBDb25z
dGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBtX3ZtUGFnZVNpemVQ
aHlzaWNhbCB7IHZtUGFnZVNpemVQaHlzaWNhbCgpIH0KIHsKICAgICBSRUxFQVNFX0JBU1NFUlQo
bV92bVBhZ2VTaXplUGh5c2ljYWwgPj0gc21hbGxQYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcENvbnN0YW50cy5oCmluZGV4IDA0ZTczZDBjYzgwMDU0NWU3MDMyMWIyY2E0NTNhNGZh
ZWViMWEwMjYuLjBlYmM5NTBlOWQ2MmY0OWNmYmVhYmM4OWU5ZTRjYjE0ZjljYWQwOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBibWFsbG9jIHsKIAogY2xhc3MgSGVhcENvbnN0YW50cyA6IHB1YmxpYyBTdGF0aWNQZXJQ
cm9jZXNzPEhlYXBDb25zdGFudHM+IHsKIHB1YmxpYzoKLSAgICBIZWFwQ29uc3RhbnRzKHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBIZWFwQ29uc3RhbnRzKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKTsKICAgICB+SGVhcENvbnN0YW50cygpID0gZGVsZXRlOwogCiAgICAgaW5s
aW5lIHNpemVfdCBwYWdlQ2xhc3Moc2l6ZV90IHNpemVDbGFzcykgY29uc3QgeyByZXR1cm4gbV9w
YWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0FsbG9jYXRvci5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3Iu
aAppbmRleCBhMGY3MDgwY2JiMWMyMTcxNzU3YzNkNmRmNzQ3NTJlZjUxYmQ4ZDE3Li4zYmEwOGFh
MmI2OGIyYzQzODgzMDAwYmYyMTQ0MTIxZWNmY2Y0MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvQWxsb2NhdG9yLmgKQEAgLTQwLDEzICs0MCwxMiBAQCBjbGFzcyBJc29BbGxvY2F0b3Igewog
ICAgIElzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+Jik7CiAgICAgfklzb0FsbG9jYXRv
cigpOwogICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKGJvb2wgYWJvcnRPbkZhaWx1cmUpOwotICAg
IHZvaWQgc2NhdmVuZ2UoKTsKKyAgICB2b2lkKiBhbGxvY2F0ZShJc29IZWFwSW1wbDxDb25maWc+
JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CisgICAgdm9pZCBzY2F2ZW5nZShJc29IZWFwSW1wbDxD
b25maWc+Jik7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhib29sIGFi
b3J0T25GYWlsdXJlKTsKKyAgICB2b2lkKiBhbGxvY2F0ZVNsb3coSXNvSGVhcEltcGw8Q29uZmln
PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwogICAgIAotICAgIElzb0hlYXBJbXBsPENvbmZpZz4q
IG1faGVhcCB7IG51bGxwdHIgfTsKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OwogICAgIElzb1Bh
Z2U8Q29uZmlnPiogbV9jdXJyZW50UGFnZSB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDU0NTVmZmRjZjJkMDMyMGYz
M2YzNmM3MzExZjk2MmVmN2M3ODI0N2EuLmQ3OWY0MjQxM2Q3OTUxMTM3NmQxN2VlNzkwMzgzMzM3
NjNiYWM0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9y
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5l
cy5oCkBAIC0zNCw4ICszNCw3IEBACiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLUlzb0FsbG9jYXRvcjxDb25maWc+OjpJc29BbGxvY2F0b3IoSXNvSGVh
cEltcGw8Q29uZmlnPiYgaGVhcCkKLSAgICA6IG1faGVhcCgmaGVhcCkKK0lzb0FsbG9jYXRvcjxD
b25maWc+OjpJc29BbGxvY2F0b3IoSXNvSGVhcEltcGw8Q29uZmlnPiYpCiB7CiB9CiAKQEAgLTQ1
LDM2ICs0NCwzNiBAQCBJc29BbGxvY2F0b3I8Q29uZmlnPjo6fklzb0FsbG9jYXRvcigpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+Ojph
bGxvY2F0ZShib29sIGFib3J0T25GYWlsdXJlKQordm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46
OmFsbG9jYXRlKElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1cmUp
CiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICB2b2lk
KiByZXN1bHQgPSBtX2ZyZWVMaXN0LmFsbG9jYXRlPENvbmZpZz4oCiAgICAgICAgIFsmXSAoKSAt
PiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93KGFib3J0T25GYWlsdXJl
KTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3coaGVhcCwgYWJvcnRPbkZhaWx1cmUp
OwogICAgICAgICB9KTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIlcDogYWxsb2NhdGVkICVwIG9mIHNpemUgJXVcbiIsIG1faGVhcCwgcmVzdWx0LCBDb25maWc6
Om9iamVjdFNpemUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAg
b2Ygc2l6ZSAldVxuIiwgJmhlYXAsIHJlc3VsdCwgQ29uZmlnOjpvYmplY3RTaXplKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci1CTk9fSU5MSU5F
IHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFp
bHVyZSkKK0JOT19JTkxJTkUgdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xv
dyhJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwLCBib29sIGFib3J0T25GYWlsdXJlKQogewotICAg
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG1faGVhcC0+bG9jayk7CisgICAgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaGVhcC5sb2NrKTsKIAotICAgIEFsbG9jYXRpb25Nb2Rl
IGFsbG9jYXRpb25Nb2RlID0gbV9oZWFwLT51cGRhdGVBbGxvY2F0aW9uTW9kZSgpOworICAgIEFs
bG9jYXRpb25Nb2RlIGFsbG9jYXRpb25Nb2RlID0gaGVhcC51cGRhdGVBbGxvY2F0aW9uTW9kZSgp
OwogICAgIGlmIChhbGxvY2F0aW9uTW9kZSA9PSBBbGxvY2F0aW9uTW9kZTo6U2hhcmVkKSB7CiAg
ICAgICAgIGlmIChtX2N1cnJlbnRQYWdlKSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRQYWdlLT5z
dG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0KTsKKyAgICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0
b3BBbGxvY2F0aW5nKGxvY2tlciwgbV9mcmVlTGlzdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRQ
YWdlID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZnJlZUxpc3QuY2xlYXIoKTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gbV9oZWFwLT5hbGxvY2F0ZUZyb21TaGFyZWQobG9ja2VyLCBhYm9y
dE9uRmFpbHVyZSk7CisgICAgICAgIHJldHVybiBoZWFwLmFsbG9jYXRlRnJvbVNoYXJlZChsb2Nr
ZXIsIGFib3J0T25GYWlsdXJlKTsKICAgICB9CiAKICAgICBCQVNTRVJUKGFsbG9jYXRpb25Nb2Rl
ID09IEFsbG9jYXRpb25Nb2RlOjpGYXN0KTsKICAgICAKLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxD
b25maWc+IHJlc3VsdCA9IG1faGVhcC0+dGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICBFbGlnaWJp
bGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IGhlYXAudGFrZUZpcnN0RWxpZ2libGUobG9ja2Vy
KTsKICAgICBpZiAocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpTdWNjZXNzKSB7CiAg
ICAgICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1bHQua2luZCA9PSBFbGlnaWJpbGl0eUtpbmQ6Ok91
dE9mTWVtb3J5KTsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFhYm9ydE9uRmFpbHVyZSk7CkBA
IC04MiwyMCArODEsMjAgQEAgQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6
YWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgfQogICAgIAogICAgIGlmICht
X2N1cnJlbnRQYWdlKQotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2Zy
ZWVMaXN0KTsKKyAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBt
X2ZyZWVMaXN0KTsKICAgICAKICAgICBtX2N1cnJlbnRQYWdlID0gcmVzdWx0LnBhZ2U7Ci0gICAg
bV9mcmVlTGlzdCA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOworICAgIG1fZnJl
ZUxpc3QgPSBtX2N1cnJlbnRQYWdlLT5zdGFydEFsbG9jYXRpbmcobG9ja2VyKTsKICAgICAKICAg
ICByZXR1cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZTxDb25maWc+KFtdICgpIHsgQkNSQVNIKCk7IHJl
dHVybiBudWxscHRyOyB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJ
c29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UoKQordm9pZCBJc29BbGxvY2F0b3I8Q29uZmln
Pjo6c2NhdmVuZ2UoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKIHsKICAgICBpZiAobV9jdXJy
ZW50UGFnZSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtX2hlYXAt
PmxvY2spOwotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhtX2ZyZWVMaXN0
KTsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaGVhcC5sb2NrKTsKKyAg
ICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0KTsK
ICAgICAgICAgbV9jdXJyZW50UGFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fZnJlZUxpc3QuY2xl
YXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxs
b2NhdG9ySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklu
bGluZXMuaAppbmRleCAyM2YzMmEzZDg5YjI1ZDJjNTdlMWEzODJiZGUwMjY4ODVhNGUzZDlkLi4w
MzJmYjc3MTlhYWJiMDM4YjM4MjI5NDczOTBiZDQ4OGE4NDdmYmNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTc2LDcgKzc2LDcgQEAg
Qk5PX0lOTElORSB2b2lkIElzb0RlYWxsb2NhdG9yPENvbmZpZz46OnNjYXZlbmdlKCkKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcigqbV9sb2NrKTsKICAgICAKICAgICBmb3IgKHZv
aWQqIHB0ciA6IG1fb2JqZWN0TG9nKQotICAgICAgICBJc29QYWdlPENvbmZpZz46OnBhZ2VGb3Io
cHRyKS0+ZnJlZShwdHIpOworICAgICAgICBJc29QYWdlPENvbmZpZz46OnBhZ2VGb3IocHRyKS0+
ZnJlZShsb2NrZXIsIHB0cik7CiAgICAgbV9vYmplY3RMb2cuY2xlYXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKaW5kZXggYmFmZWIzZWUwMzA1OWU4N2Y5YjA1ZDc3
MzdhNmIyNTkwZmZlYmRmNy4uZTcyYjJkMTYxMjFiNzNhZjMxZTBmZDdjMTMyYTVjOTRhZmRkZjdm
YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQml0cy5oIgogI2luY2x1ZGUgIkVsaWdpYmlsaXR5UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSXNvUGFnZS5oIgorI2luY2x1ZGUgIlBhY2tlZC5oIgogI2luY2x1ZGUgIlZlY3Rvci5o
IgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIElzb0RpcmVj
dG9yeUJhc2UgOiBwdWJsaWMgSXNvRGlyZWN0b3J5QmFzZUJhc2UgewogICAgIAogICAgIElzb0hl
YXBJbXBsPENvbmZpZz4mIGhlYXAoKSB7IHJldHVybiBtX2hlYXA7IH0KICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQmVjb21lKElzb1BhZ2U8Q29uZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKICAgICAKIHByb3RlY3Rl
ZDoKICAgICBJc29IZWFwSW1wbDxDb25maWc+JiBtX2hlYXA7CkBAIC02NCw5ICs2NSw5IEBAIGNs
YXNzIElzb0RpcmVjdG9yeSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4gewogICAg
IAogICAgIC8vIEZpbmQgdGhlIGZpcnN0IHBhZ2UgdGhhdCBpcyBlbGlnaWJsZSBmb3IgYWxsb2Nh
dGlvbiBhbmQgcmV0dXJuIGl0LiBNYXkgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8KICAgICAv
LyBzdWNoIHRoaW5nLiBNYXkgYWxsb2NhdGUgYSBuZXcgcGFnZSBpZiB3ZSBoYXZlIGFuIHVuY29t
bWl0dGVkIHBhZ2UuCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGln
aWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAotICAgIHZvaWQgZGlkQmVjb21l
KElzb1BhZ2U8Q29uZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+Kiwg
SXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOwogICAgIAogICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQg
ZnJvbSBhIGJ1bGsgZGVjb21taXQgZnVuY3Rpb24gaW4gdGhlIFNjYXZlbmdlciwgc28gbm8gbG9j
a3MgYXJlIGhlbGQuIFRoaXMgZnVuY3Rpb24KICAgICAvLyBuZWVkcyB0byBnZXQgdGhlIGhlYXAg
bG9jay4KQEAgLTc0LDIzICs3NSwyMyBAQCBjbGFzcyBJc29EaXJlY3RvcnkgOiBwdWJsaWMgSXNv
RGlyZWN0b3J5QmFzZTxDb25maWc+IHsKICAgICAKICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGVt
cHR5IGFuZCBjb21taXR0ZWQgcGFnZXMsIGFuZCBwdXQgdGhlbSBpbnRvIHRoZSB2ZWN0b3IuIFRo
aXMgYWxzbyByZWNvcmRzIHRoZQogICAgIC8vIHBhZ2VzIGFzIGJlaW5nIGRlY29tbWl0dGVkLiBJ
dCdzIHRoZSBjYWxsZXIncyBqb2IgdG8gZG8gdGhlIGFjdHVhbCBkZWNvbW1pdHRpbmcuCi0gICAg
dm9pZCBzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZl
bmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1p
dD4mKTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGln
aFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mKTsKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LSAgICB2b2lkIGZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZv
ckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBG
dW5jJik7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgc2NhdmVuZ2VQYWdlKHNpemVfdCwgVmVj
dG9yPERlZmVycmVkRGVjb21taXQ+Jik7CisgICAgdm9pZCBzY2F2ZW5nZVBhZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIHNpemVfdCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7
CiAKKyAgICBzdGQ6OmFycmF5PFBhY2tlZEFsaWduZWRQdHI8SXNvUGFnZTxDb25maWc+LCBJc29Q
YWdlPENvbmZpZz46OnBhZ2VTaXplPiwgbnVtUGFnZXM+IG1fcGFnZXMgeyB9OwogICAgIC8vIE5P
VEU6IEkgc3VwcG9zZSB0aGF0IHRoaXMgY291bGQgYmUgdHdvIGJpdHZlY3RvcnMuIEJ1dCBmcm9t
IHdvcmtpbmcgb24gdGhlIEdDLCBJIGZvdW5kIHRoYXQgdGhlCiAgICAgLy8gbnVtYmVyIG9mIGJp
dHZlY3RvcnMgZG9lcyBub3QgbWF0dGVyIGFzIG11Y2ggYXMgd2hldGhlciBvciBub3QgdGhleSBt
YWtlIGludHVpdGl2ZSBzZW5zZS4KICAgICBCaXRzPG51bVBhZ2VzPiBtX2VsaWdpYmxlOwogICAg
IEJpdHM8bnVtUGFnZXM+IG1fZW1wdHk7CiAgICAgQml0czxudW1QYWdlcz4gbV9jb21taXR0ZWQ7
Ci0gICAgc3RkOjphcnJheTxJc29QYWdlPENvbmZpZz4qLCBudW1QYWdlcz4gbV9wYWdlczsKICAg
ICB1bnNpZ25lZCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkIHsgMCB9OwogI2lmIEJVU0Uo
UEFSVElBTF9TQ0FWRU5HRSkKICAgICB1bnNpZ25lZCBtX2hpZ2hXYXRlcm1hcmsgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDBiMWEx
ZWMwNWEwNzQxNDAwNDJiYjc2ZTc0YjEwOGZmZWI1ZjliMjcuLjg1NTQyZGY5ODUyNDU4ZTM1ZTQw
YzA5OWRiZTMyMmNiODljNzQzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvRGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGly
ZWN0b3J5SW5saW5lcy5oCkBAIC0zOSwxMiArMzksMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6SXNvRGlyZWN0b3J5KElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXApCiAgICAg
OiBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4oaGVhcCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSBudW1QYWdlczsgaS0tOykKLSAgICAgICAgbV9wYWdlc1tpXSA9IG51bGxwdHI7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci1FbGlnaWJp
bGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6
dGFrZUZpcnN0RWxpZ2libGUoKQorRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IChtX2VsaWdp
YmxlIHwgfm1fY29tbWl0dGVkKS5maW5kQml0KG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQs
IHRydWUpOwogICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSBwYWdlSW5kZXg7CkBA
IC01OSw3ICs1Nyw3IEBAIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsCiAgICAgU2NhdmVuZ2VyJiBz
Y2F2ZW5nZXIgPSAqU2NhdmVuZ2VyOjpnZXQoKTsKICAgICBzY2F2ZW5nZXIuZGlkU3RhcnRHcm93
aW5nKCk7CiAgICAgCi0gICAgSXNvUGFnZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdlSW5k
ZXhdOworICAgIElzb1BhZ2U8Q29uZmlnPiogcGFnZSA9IG1fcGFnZXNbcGFnZUluZGV4XS5nZXQo
KTsKICAgICAKICAgICBpZiAoIW1fY29tbWl0dGVkW3BhZ2VJbmRleF0pIHsKICAgICAgICAgc2Nh
dmVuZ2VyLnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlKElzb1BhZ2VCYXNlOjpwYWdlU2l6
ZSk7CkBAIC05Myw3ICs5MSw3IEBAIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0
b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0Rp
cmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6ZGlkQmVjb21lKElzb1BhZ2U8Q29uZmln
PiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZp
ZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYgbG9ja2VyLCBJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXIp
CiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICB1bnNp
Z25lZCBwYWdlSW5kZXggPSBwYWdlLT5pbmRleCgpOwpAQCAtMTAzLDcgKzEwMSw3IEBAIHZvaWQg
SXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNvUGFnZTxD
b25maWc+KiBwYWdlLCBJc29QCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlcCBk
aWQgYmVjb21lIGVsaWdpYmxlLlxuIiwgdGhpcywgcGFnZSk7CiAgICAgICAgIG1fZWxpZ2libGVb
cGFnZUluZGV4XSA9IHRydWU7CiAgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQg
PSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBwYWdlSW5kZXgpOwotICAg
ICAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQodGhpcyk7Cisg
ICAgICAgIHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChsb2NrZXIs
IHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJc29QYWdlVHJpZ2dlcjo6RW1wdHk6
CiAgICAgICAgIGlmICh2ZXJib3NlKQpAQCAtMTI1LDI4ICsxMjMsMjggQEAgdm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZERlY29tbWl0KHVuc2lnbmVkIGluZGV4
KQogICAgIC8vIHN5c2NhbGwgaXRzZWxmICh3aGljaCBoYXMgdG8gZG8gbWFueSBoYXJkIHRoaW5n
cykuCiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bV9oZWFwLmxvY2sp
OwogICAgIEJBU1NFUlQoISFtX2NvbW1pdHRlZFtpbmRleF0pOwotICAgIHRoaXMtPm1faGVhcC5p
c05vTG9uZ2VyRnJlZWFibGUobV9wYWdlc1tpbmRleF0sIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7
CisgICAgdGhpcy0+bV9oZWFwLmlzTm9Mb25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4XS5nZXQo
KSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKICAgICBtX2NvbW1pdHRlZFtpbmRleF0gPSBmYWxz
ZTsKICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkID0gc3RkOjptaW4obV9maXJzdEVs
aWdpYmxlT3JEZWNvbW1pdHRlZCwgaW5kZXgpOwotICAgIHRoaXMtPm1faGVhcC5kaWRCZWNvbWVF
bGlnaWJsZU9yRGVjb21taXRlZCh0aGlzKTsKLSAgICB0aGlzLT5tX2hlYXAuZGlkRGVjb21taXQo
bV9wYWdlc1tpbmRleF0sIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CisgICAgdGhpcy0+bV9oZWFw
LmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGxvY2tlciwgdGhpcyk7CisgICAgdGhpcy0+
bV9oZWFwLmRpZERlY29tbWl0KG1fcGFnZXNbaW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6cGFn
ZVNpemUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51
bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZl
bmdlUGFnZShzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRz
KQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlUGFn
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90IGluZGV4LCBWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGlz
IHBhZ2UgaXMgbm93IG9mZiBsaW1pdHMuCiAgICAgbV9lbXB0eVtpbmRleF0gPSBmYWxzZTsKICAg
ICBtX2VsaWdpYmxlW2luZGV4XSA9IGZhbHNlOwotICAgIGRlY29tbWl0cy5wdXNoKERlZmVycmVk
RGVjb21taXQodGhpcywgbV9wYWdlc1tpbmRleF0sIGluZGV4KSk7CisgICAgZGVjb21taXRzLnB1
c2goRGVmZXJyZWREZWNvbW1pdCh0aGlzLCBtX3BhZ2VzW2luZGV4XS5nZXQoKSwgaW5kZXgpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4K
LXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShWZWN0
b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZp
ZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiBsb2NrZXIsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgICht
X2VtcHR5ICYgbV9jb21taXR0ZWQpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90
IGluZGV4KSB7Ci0gICAgICAgICAgICBzY2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0cyk7Cisg
ICAgICAgICAgICBzY2F2ZW5nZVBhZ2UobG9ja2VyLCBpbmRleCwgZGVjb21taXRzKTsKICAgICAg
ICAgfSk7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIG1faGlnaFdhdGVybWFyayA9
IDA7CkBAIC0xNTUsMTIgKzE1MywxMiBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6c2NhdmVuZ2UoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZQogCiAjaWYg
QlVTRShQQVJUSUFMX1NDQVZFTkdFKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25l
ZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFn
ZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRl
Y29tbWl0cykKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2
ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIs
IFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIChtX2VtcHR5ICYg
bV9jb21taXR0ZWQpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7
CiAgICAgICAgICAgICBpZiAoaW5kZXggPiBtX2hpZ2hXYXRlcm1hcmspCi0gICAgICAgICAgICAg
ICAgc2NhdmVuZ2VQYWdlKGluZGV4LCBkZWNvbW1pdHMpOworICAgICAgICAgICAgICAgIHNjYXZl
bmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1pdHMpOwogICAgICAgICB9KTsKICAgICBtX2hp
Z2hXYXRlcm1hcmsgPSAwOwogfQpAQCAtMTY4LDExICsxNjYsMTEgQEAgdm9pZCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3Rv
cjxEZWZlcnIKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1Q
YWdlcz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcs
IHBhc3NlZE51bVBhZ2VzPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYgZnVuYykK
K3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykK
IHsKICAgICBtX2NvbW1pdHRlZC5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBp
bmRleCkgewotICAgICAgICAgICAgZnVuYygqbV9wYWdlc1tpbmRleF0pOworICAgICAgICAgICAg
ZnVuYygqKG1fcGFnZXNbaW5kZXhdLmdldCgpKSk7CiAgICAgICAgIH0pOwogfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5jcHAgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcAppbmRleCA2OTZkMjJlNTdmNjIyM2Y5Yjky
OTQyYWIyZjJlMGIwOWFhYmQ5YTgzLi5kZDA4OWExYWJkNTIxZmViNGQxOTM3NmJmNmNjZTczODdk
ZWI1NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNw
cAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcApAQCAtMzEsNyAr
MzEsOCBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLUlzb0hlYXBJbXBsQmFzZTo6SXNvSGVh
cEltcGxCYXNlKCkKK0lzb0hlYXBJbXBsQmFzZTo6SXNvSGVhcEltcGxCYXNlKE11dGV4JiBsb2Nr
KQorICAgIDogbG9jayhsb2NrKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXBJbXBsLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBs
LmgKaW5kZXggMDk1MTFlMjU3ZmJmYmY3Y2MwNGIzOTc4YzFlZmUwYmYyYjM0YzJkZC4uMGJhYTgw
ODg4NmI3NzY1N2RiOTMxMTM0MWZjMmRmYzJjNWJlNTRlZSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvSGVhcEltcGwuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIklzb0FsbG9jYXRvci5o
IgogI2luY2x1ZGUgIklzb0RpcmVjdG9yeVBhZ2UuaCIKICNpbmNsdWRlICJJc29UTFNBbGxvY2F0
b3JFbnRyeS5oIgorI2luY2x1ZGUgIlBhY2tlZC5oIgogI2luY2x1ZGUgIlBoeXNpY2FsUGFnZU1h
cC5oIgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CkBAIC01MSwyNyArNTIsNDggQEAgY2xhc3MgQkVY
UE9SVCBJc29IZWFwSW1wbEJhc2UgewogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2
aXJ0dWFsIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+JikgPSAwOwogI2VuZGlmCi0gICAgdmlydHVhbCBzaXplX3QgZnJlZWFibGVNZW1vcnkoKSA9
IDA7Ci0gICAgdmlydHVhbCBzaXplX3QgZm9vdHByaW50KCkgPSAwOwogICAgIAogICAgIHZvaWQg
c2NhdmVuZ2VOb3coKTsKICAgICBzdGF0aWMgdm9pZCBmaW5pc2hTY2F2ZW5naW5nKFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYpOwogCisgICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRyLCBzaXpl
X3QgYnl0ZXMpOworICAgIHZvaWQgZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMp
OworCisgICAgdm9pZCBpc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKyAg
ICB2b2lkIGlzTm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisKKyAg
ICBzaXplX3QgZnJlZWFibGVNZW1vcnkoKTsKKyAgICBzaXplX3QgZm9vdHByaW50KCk7CisKICAg
ICB2b2lkIGFkZFRvQWxsSXNvSGVhcHMoKTsKIAogcHJvdGVjdGVkOgotICAgIElzb0hlYXBJbXBs
QmFzZSgpOworICAgIElzb0hlYXBJbXBsQmFzZShNdXRleCYpOwogCiAgICAgZnJpZW5kIGNsYXNz
IElzb1NoYXJlZFBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEFsbElzb0hlYXBzOwogICAgIAorcHVi
bGljOgorICAgIC8vIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxp
dHkgdG8gZ3JhYiB0aGUgbG9jay4gVGhpcyBsb2NrIGNvbWVzIGZyb20gdGhlCisgICAgLy8gKCpQ
ZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmln
Pj4+OjpnZXQoKSktPmxvY2suIFRoYXQncyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAorICAg
IC8vIHRyeSB0byBkaXNndWlzZSB0aGUgZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkgZG8g
dGhhdCBiZWNhdXNlIGhlYXBzIGluIHRoZSBzYW1lIHNpemUgY2xhc3MKKyAgICAvLyBzaGFyZSB0
aGUgc2FtZSBkZWFsbG9jYXRvciBsb2csIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRvIGFs
c28gc2hhcmUgdGhlIHNhbWUgbG9jayB0bworICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlzaXRp
b24gY29zdHMuCisgICAgTXV0ZXgmIGxvY2s7Citwcm90ZWN0ZWQ6CiAgICAgSXNvSGVhcEltcGxC
YXNlKiBtX25leHQgeyBudWxscHRyIH07CiAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6
dGltZV9wb2ludCBtX2xhc3RTbG93UGF0aFRpbWU7Ci0gICAgc3RkOjphcnJheTx2b2lkKiwgbWF4
QWxsb2NhdGlvbkZyb21TaGFyZWQ+IG1fc2hhcmVkQ2VsbHMgeyB9OworICAgIHNpemVfdCBtX2Zv
b3RwcmludCB7IDAgfTsKKyAgICBzaXplX3QgbV9mcmVlYWJsZU1lbW9yeSB7IDAgfTsKKyNpZiBF
TkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKKyAgICBQaHlzaWNhbFBhZ2VNYXAgbV9waHlzaWNhbFBh
Z2VNYXA7CisjZW5kaWYKKyAgICBzdGQ6OmFycmF5PFBhY2tlZEFsaWduZWRQdHI8dWludDhfdCwg
Ym1hbGxvYzo6YWxpZ25tZW50PiwgbWF4QWxsb2NhdGlvbkZyb21TaGFyZWQ+IG1fc2hhcmVkQ2Vs
bHMgeyB9OworcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBbGxvY2F0aW9uc0Zy
b21TaGFyZWRJbk9uZUN5Y2xlIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fYXZhaWxhYmxlU2hhcmVk
IHsgbWF4QWxsb2NhdGlvbkZyb21TaGFyZWRNYXNrIH07CiAgICAgQWxsb2NhdGlvbk1vZGUgbV9h
bGxvY2F0aW9uTW9kZSB7IEFsbG9jYXRpb25Nb2RlOjpJbml0IH07Ci0gICAgCisgICAgYm9vbCBt
X2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OwogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKG1fYXZhaWxhYmxlU2hhcmVkKSAqIDggPj0gbWF4QWxsb2NhdGlv
bkZyb21TaGFyZWQsICIiKTsKIH07CiAKQEAgLTgzLDIxICsxMDUsMTcgQEAgY2xhc3MgSXNvSGVh
cEltcGwgZmluYWwgOiBwdWJsaWMgSXNvSGVhcEltcGxCYXNlIHsKIHB1YmxpYzoKICAgICBJc29I
ZWFwSW1wbCgpOwogICAgIAotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0
RWxpZ2libGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdp
YmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICAKICAgICAvLyBDYWxsYmFj
a3MgZnJvbSBkaXJlY3RvcnkuCi0gICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRl
ZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiopOwotICAg
IHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywg
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKKyAgICB2b2lkIGRpZEJlY29t
ZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiopOworICAgIHZvaWQg
ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFn
ZXM+Kik7CiAgICAgCiAgICAgdm9pZCBzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
KSBvdmVycmlkZTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgdm9pZCBzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KCkgb3ZlcnJpZGU7Ci0KLSAgICBzaXpl
X3QgZm9vdHByaW50KCkgb3ZlcnJpZGU7Ci0gICAgCiAgICAgdW5zaWduZWQgYWxsb2NhdG9yT2Zm
c2V0KCk7CiAgICAgdW5zaWduZWQgZGVhbGxvY2F0b3JPZmZzZXQoKTsKIApAQCAtMTA2LDQ2ICsx
MjQsMjUgQEAgY2xhc3MgSXNvSGVhcEltcGwgZmluYWwgOiBwdWJsaWMgSXNvSGVhcEltcGxCYXNl
IHsKICAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlcygpOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmMmKTsK
KyAgICB2b2lkIGZvckVhY2hEaXJlY3RvcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZv
aWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaENv
bW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsK
ICAgICAKICAgICAvLyBUaGlzIGlzIG9ubHkgYWNjdXJhdGUgd2hlbiBhbGwgdGhyZWFkcyBhcmUg
c2NhdmVuZ2VkLiBPdGhlcndpc2UgaXQgd2lsbCBvdmVyZXN0aW1hdGUuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmKTsK
LQotICAgIHZvaWQgZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lk
IGRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKLQotICAgIHZvaWQgaXNOb3dG
cmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7Ci0gICAgdm9pZCBpc05vTG9uZ2VyRnJl
ZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQgZm9yRWFjaExpdmVPYmpl
Y3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKIAogICAgIEFs
bG9jYXRpb25Nb2RlIHVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgdm9pZCogYWxsb2NhdGVG
cm9tU2hhcmVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib29sIGFib3J0T25GYWls
dXJlKTsKLSAgICAKLSAgICAvLyBJdCdzIGFsbW9zdCBhbHdheXMgdGhlIGNhbGxlcidzIHJlc3Bv
bnNpYmlsaXR5IHRvIGdyYWIgdGhlIGxvY2suIFRoaXMgbG9jayBjb21lcyBmcm9tIHRoZQotICAg
IC8vICgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5
PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrLiBUaGF0J3MgcHJldHR5IHdlaXJkLCBhbmQgd2UgZG9u
J3QKLSAgICAvLyB0cnkgdG8gZGlzZ3Vpc2UgdGhlIGZhY3QgdGhhdCBpdCdzIHdlaXJkLiBXZSBv
bmx5IGRvIHRoYXQgYmVjYXVzZSBoZWFwcyBpbiB0aGUgc2FtZSBzaXplIGNsYXNzCi0gICAgLy8g
c2hhcmUgdGhlIHNhbWUgZGVhbGxvY2F0b3IgbG9nLCBzbyBpdCBtYWtlcyBzZW5zZSBmb3IgdGhl
bSB0byBhbHNvIHNoYXJlIHRoZSBzYW1lIGxvY2sgdG8KLSAgICAvLyBhbW9ydGl6ZSBsb2NrIGFj
cXVpc2l0aW9uIGNvc3RzLgotICAgIE11dGV4JiBsb2NrOwogCiBwcml2YXRlOgorICAgIFBhY2tl
ZFB0cjxJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4+IG1faGVhZERpcmVjdG9yeSB7IG51bGxwdHIg
fTsKKyAgICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX3RhaWxEaXJlY3Rv
cnkgeyBudWxscHRyIH07CisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4g
bV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwogICAgIElz
b0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+IG1faW5saW5lRGly
ZWN0b3J5OwotICAgIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9oZWFkRGlyZWN0b3J5IHsg
bnVsbHB0ciB9OwotICAgIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV90YWlsRGlyZWN0b3J5
IHsgbnVsbHB0ciB9OwotICAgIHNpemVfdCBtX2Zvb3RwcmludCB7IDAgfTsKLSAgICBzaXplX3Qg
bV9mcmVlYWJsZU1lbW9yeSB7IDAgfTsKLSNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKLSAg
ICBQaHlzaWNhbFBhZ2VNYXAgbV9waHlzaWNhbFBhZ2VNYXA7Ci0jZW5kaWYKICAgICB1bnNpZ25l
ZCBtX25leHREaXJlY3RvcnlQYWdlSW5kZXggeyAxIH07IC8vIFdlIHN0YXJ0IGF0IDEgc28gdGhh
dCB0aGUgaGlnaCB3YXRlciBtYXJrIGJlaW5nIHplcm8gbWVhbnMgd2UndmUgb25seSBhbGxvY2F0
ZWQgaW4gdGhlIGlubGluZSBkaXJlY3Rvcnkgc2luY2UgdGhlIGxhc3Qgc2NhdmVuZ2UuCiAgICAg
dW5zaWduZWQgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrIHsgMCB9OwotICAgIAotICAgIGJvb2wg
bV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCB7IHRydWUgfTsKLSAgICBJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVj
dG9yeSB7IG51bGxwdHIgfTsKLSAgICAKICAgICBJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNBbGxv
Y2F0b3JFbnRyeTxDb25maWc+PiBtX2FsbG9jYXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCmluZGV4IDJhNGZiMjg0MzZiMzU4ZTk2YTE3MDFi
OTEzMzc1YTUzM2VkZGFlZDAuLjk0ZWIzZjRjMTRmOGU2ZjdjYjQ3ZjViMDNjMzJjODk5OGQ1NjFh
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaApAQCAt
MzQsNjQgKzM0LDcwIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnPgogSXNvSGVhcEltcGw8Q29uZmlnPjo6SXNvSGVhcEltcGwoKQotICAgIDogbG9jaygo
KlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25m
aWc+Pj46OmdldCgpKS0+bG9jaykKKyAgICA6IElzb0hlYXBJbXBsQmFzZSgoKlBlclByb2Nlc3M8
SXNvVExTRW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgp
KS0+bG9jaykKICAgICAsIG1faW5saW5lRGlyZWN0b3J5KCp0aGlzKQogICAgICwgbV9hbGxvY2F0
b3IoKnRoaXMpCiB7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUoKQor
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RF
bGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIpCiB7CiAgICAgaWYg
KG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQpIHsKLSAgICAgICAgRWxp
Z2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBtX2lubGluZURpcmVjdG9yeS50YWtlRmly
c3RFbGlnaWJsZSgpOworICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9
IG1faW5saW5lRGlyZWN0b3J5LnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CiAgICAgICAgIGlm
IChyZXN1bHQua2luZCA9PSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpCiAgICAgICAgICAgICBtX2lz
SW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkID0gZmFsc2U7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmICghbV9m
aXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5KSB7Ci0gICAgICAgIC8vIElmIG5vdGhp
bmcgaXMgZWxpZ2libGUsIGl0IGNhbiBvbmx5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rv
cmllcy4gSXQgd291bGRuJ3QgYmUgdGhlIGVuZAotICAgICAgICAvLyBvZiB0aGUgd29ybGQgaWYg
d2UgYnJva2UgdGhpcyBpbnZhcmlhbnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0IGRpZEJlY29t
ZUVsaWdpYmxlT3JEZWNvbW1pdGVkKCkgd291bGQgbmVlZAotICAgICAgICAvLyBhIG51bGwgY2hl
Y2suCi0gICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5KTsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3RvcnkpOwotICAgIH0KLSAgICAKLSAgICBmb3Ig
KDsgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5OyBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgPSBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnktPm5leHQpIHsKLSAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBt
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxp
Z2libGUoKTsKLSAgICAgICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVs
bCkgewotICAgICAgICAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gc3RkOjptYXgobV9k
aXJlY3RvcnlIaWdoV2F0ZXJtYXJrLCBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnktPmluZGV4KCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB7CisgICAgICAg
IGF1dG8qIGN1cnNvciA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5nZXQo
KTsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIC8vIElmIG5vdGhpbmcgaXMg
ZWxpZ2libGUsIGl0IGNhbiBvbmx5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBubyBkaXJlY3Rvcmllcy4g
SXQgd291bGRuJ3QgYmUgdGhlIGVuZAorICAgICAgICAgICAgLy8gb2YgdGhlIHdvcmxkIGlmIHdl
IGJyb2tlIHRoaXMgaW52YXJpYW50LiBJdCB3b3VsZCBvbmx5IG1lYW4gdGhhdCBkaWRCZWNvbWVF
bGlnaWJsZU9yRGVjb21taXRlZCgpIHdvdWxkIG5lZWQKKyAgICAgICAgICAgIC8vIGEgbnVsbCBj
aGVjay4KKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV9oZWFkRGlyZWN0b3J5LmdldCgp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5LmdldCgpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoOyBjdXJzb3I7IGN1cnNvciA9IGN1
cnNvci0+bmV4dCkgeworICAgICAgICAgICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4g
cmVzdWx0ID0gY3Vyc29yLT5wYXlsb2FkLnRha2VGaXJzdEVsaWdpYmxlKGxvY2tlcik7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS5n
ZXQoKSA9PSBjdXJzb3IpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGln
aWJpbGl0eUtpbmQ6OkZ1bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3RvcnlIaWdo
V2F0ZXJtYXJrID0gc3RkOjptYXgobV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrLCBjdXJzb3ItPmlu
ZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3RvcnkgPSBjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9maXJzdEVsaWdp
YmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICBhdXRvKiBuZXdEaXJlY3RvcnkgPSBuZXcgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
KCp0aGlzLCBtX25leHREaXJlY3RvcnlQYWdlSW5kZXgrKyk7Ci0gICAgaWYgKG1faGVhZERpcmVj
dG9yeSkgeworICAgIGlmIChtX2hlYWREaXJlY3RvcnkuZ2V0KCkpIHsKICAgICAgICAgbV90YWls
RGlyZWN0b3J5LT5uZXh0ID0gbmV3RGlyZWN0b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3Rvcnkg
PSBuZXdEaXJlY3Rvcnk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFt
X3RhaWxEaXJlY3RvcnkpOworICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9y
eS5nZXQoKSk7CiAgICAgICAgIG1faGVhZERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICAg
ICAgbV90YWlsRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgIH0KICAgICBtX2RpcmVjdG9y
eUhpZ2hXYXRlcm1hcmsgPSBuZXdEaXJlY3RvcnktPmluZGV4KCk7CiAgICAgbV9maXJzdEVsaWdp
YmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwotICAgIEVsaWdpYmlsaXR5
UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbmV3RGlyZWN0b3J5LT5wYXlsb2FkLnRha2VGaXJzdEVs
aWdpYmxlKCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJl
Y3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKICAgICBSRUxFQVNFX0JB
U1NFUlQocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBs
PENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25m
aWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJ
bXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGly
ZWN0b3J5PiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChkaXJlY3RvcnkgPT0g
Jm1faW5saW5lRGlyZWN0b3J5KTsKICAgICBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRl
Y29tbWl0dGVkID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJ
c29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0
b3J5KQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywg
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKIHsKICAgICBS
RUxFQVNFX0JBU1NFUlQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5KTsKICAg
ICBhdXRvKiBkaXJlY3RvcnlQYWdlID0gSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpwYWdlRm9y
KGRpcmVjdG9yeSk7CkBAIC0xMDQsOCArMTEwLDkgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+
OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICBmb3JFYWNoRGly
ZWN0b3J5KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoYXV0byYgZGlyZWN0b3J5KSB7
Ci0gICAgICAgICAgICBkaXJlY3Rvcnkuc2NhdmVuZ2UoZGVjb21taXRzKTsKKyAgICAgICAgICAg
IGRpcmVjdG9yeS5zY2F2ZW5nZShsb2NrZXIsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAg
IG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IDA7CiB9CkBAIC0xMTYsMTcgKzEyMywxNiBAQCB2
b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYgZGVjbwogewogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9j
a2VyKHRoaXMtPmxvY2spOwogICAgIGlmICghbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrKQotICAg
ICAgICBtX2lubGluZURpcmVjdG9yeS5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhkZWNvbW1pdHMp
OwotICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0
b3J5OyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkgeworICAgICAgICBtX2lubGluZURpcmVjdG9y
eS5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CisgICAgZm9yIChJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBh
Z2U7IHBhZ2UgPSBwYWdlLT5uZXh0KSB7CiAgICAgICAgIGlmIChwYWdlLT5pbmRleCgpID49IG1f
ZGlyZWN0b3J5SGlnaFdhdGVybWFyaykKLSAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQuc2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoZGVjb21taXRzKTsKKyAgICAgICAgICAgIHBhZ2UtPnBheWxvYWQu
c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobG9ja2VyLCBkZWNvbW1pdHMpOwogICAgIH0KICAgICBt
X2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSAwOwogfQogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KLXNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+OjpmcmVlYWJsZU1lbW9yeSgp
CitpbmxpbmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6ZnJlZWFibGVNZW1vcnkoKQogewogICAg
IHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtMTQ2LDggKzE1MiwxMCBAQCB1bnNpZ25l
ZCBJc29IZWFwSW1wbDxDb25maWc+OjpkZWFsbG9jYXRvck9mZnNldCgpCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+CiB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1MaXZlT2JqZWN0
cygpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3JFYWNoTGl2ZU9iamVjdCgKKyAgICAgICAg
bG9ja2VyLAogICAgICAgICBbJl0gKHZvaWQqKSB7CiAgICAgICAgICAgICByZXN1bHQrKzsKICAg
ICAgICAgfSk7CkBAIC0xNTcsOCArMTY1LDEwIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZp
Zz46Om51bUxpdmVPYmplY3RzKCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVk
IElzb0hlYXBJbXBsPENvbmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKCkKIHsKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOwogICAgIGZvckVhY2hDb21taXR0ZWRQYWdlKAorICAgICAgICBsb2NrZXIsCiAgICAgICAg
IFsmXSAoSXNvUGFnZTxDb25maWc+JikgewogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAg
IH0pOwpAQCAtMTY3LDQwICsxNzcsNDEgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
bnVtQ29tbWl0dGVkUGFnZXMoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoRGlyZWN0
b3J5KGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hE
aXJlY3RvcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiB7CiAgICAgZnVuYyhtX2lubGluZURpcmVjdG9yeSk7Ci0gICAgZm9yIChJc29EaXJlY3RvcnlQ
YWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5u
ZXh0KQorICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGly
ZWN0b3J5LmdldCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkKICAgICAgICAgZnVuYyhwYWdl
LT5wYXlsb2FkKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENv
bW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBjb25zdCBG
dW5jJiBmdW5jKQogewogICAgIGZvckVhY2hEaXJlY3RvcnkoCisgICAgICAgIGxvY2tlciwKICAg
ICAgICAgWyZdIChhdXRvJiBkaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JF
YWNoQ29tbWl0dGVkUGFnZShmdW5jKTsKKyAgICAgICAgICAgIGRpcmVjdG9yeS5mb3JFYWNoQ29t
bWl0dGVkUGFnZShsb2NrZXIsIGZ1bmMpOwogICAgICAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8
Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvSGVh
cEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYgbG9ja2VyLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZvckVhY2hDb21taXR0ZWRQ
YWdlKAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoSXNvUGFnZTxDb25maWc+JiBwYWdl
KSB7Ci0gICAgICAgICAgICBwYWdlLmZvckVhY2hMaXZlT2JqZWN0KGZ1bmMpOworICAgICAgICAg
ICAgcGFnZS5mb3JFYWNoTGl2ZU9iamVjdChsb2NrZXIsIGZ1bmMpOwogICAgICAgICB9KTsKICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJl
ZDsgKytpbmRleCkgewotICAgICAgICB2b2lkKiBwb2ludGVyID0gbV9zaGFyZWRDZWxsc1tpbmRl
eF07CisgICAgICAgIHZvaWQqIHBvaW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKTsK
ICAgICAgICAgaWYgKHBvaW50ZXIgJiYgIShtX2F2YWlsYWJsZVNoYXJlZCAmICgxVSA8PCBpbmRl
eCkpKQogICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLXNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQoKQor
aW5saW5lIHNpemVfdCBJc29IZWFwSW1wbEJhc2U6OmZvb3RwcmludCgpCiB7CiAjaWYgRU5BQkxF
X1BIWVNJQ0FMX1BBR0VfTUFQCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1fZm9vdHByaW50ID09IG1f
cGh5c2ljYWxQYWdlTWFwLmZvb3RwcmludCgpKTsKQEAgLTIwOCw4ICsyMTksNyBAQCBzaXplX3Qg
SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmln
Pjo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVh
cEltcGxCYXNlOjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVO
VVNFRF9QQVJBTShwdHIpOwogICAgIG1fZm9vdHByaW50ICs9IGJ5dGVzOwpAQCAtMjE4LDggKzIy
OCw3IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQ29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90IGJ5dGVzKQogI2VuZGlmCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMp
CitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmRpZERlY29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2Zvb3RwcmludCAt
PSBieXRlczsKQEAgLTIyOCwxNSArMjM3LDEzIEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6
ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojppc05vd0ZyZWVh
YmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNl
Ojppc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIEJVTlVTRURf
UEFSQU0ocHRyKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IGJ5dGVzOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmlzTm9Mb25nZXJG
cmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJbXBs
QmFzZTo6aXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAg
IEJVTlVTRURfUEFSQU0ocHRyKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IGJ5dGVzOwpAQCAt
MzAxLDcgKzMwOCw3IEBAIHZvaWQqIElzb0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRlRnJvbVNo
YXJlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vCiAgICAgdW5zaWduZWQgaW5k
ZXhQbHVzT25lID0gX19idWlsdGluX2ZmcyhtX2F2YWlsYWJsZVNoYXJlZCk7CiAgICAgQkFTU0VS
VChpbmRleFBsdXNPbmUpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhQbHVzT25lIC0gMTsK
LSAgICB2b2lkKiByZXN1bHQgPSBtX3NoYXJlZENlbGxzW2luZGV4XTsKKyAgICB2b2lkKiByZXN1
bHQgPSBtX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2Nh
dGVkICVwIGZyb20gc2hhcmVkIGFnYWluIG9mIHNpemUgJXVcbiIsIHRoaXMsIHJlc3VsdCwgQ29u
ZmlnOjpvYmplY3RTaXplKTsKQEAgLTMxNCw3ICszMjEsNyBAQCB2b2lkKiBJc29IZWFwSW1wbDxD
b25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IGJvbwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcDogYWxsb2NhdGVkICVwIGZyb20g
c2hhcmVkIG9mIHNpemUgJXVcbiIsIHRoaXMsIHJlc3VsdCwgQ29uZmlnOjpvYmplY3RTaXplKTsK
ICAgICAgICAgQkFTU0VSVChpbmRleCA8IElzb0hlYXBJbXBsQmFzZTo6bWF4QWxsb2NhdGlvbkZy
b21TaGFyZWQpOwogICAgICAgICAqaW5kZXhTbG90Rm9yPENvbmZpZz4ocmVzdWx0KSA9IGluZGV4
OwotICAgICAgICBtX3NoYXJlZENlbGxzW2luZGV4XSA9IHJlc3VsdDsKKyAgICAgICAgbV9zaGFy
ZWRDZWxsc1tpbmRleF0gPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHJlc3VsdCk7CiAgICAgfQog
ICAgIEJBU1NFUlQocmVzdWx0KTsKICAgICBtX2F2YWlsYWJsZVNoYXJlZCAmPSB+KDFVIDw8IGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5oIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKaW5kZXggNTQyNWI4OGE2Nzg5MjJkODhjMmM1
OGQ3NTBjYTI5MjZhYWYzNDAwOC4uYTE1MWNmOTg3OTEyNTIxNDNkZWZkMmIwYTdiZDU3MDBjZWUw
MTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNs
dWRlICJCaXRzLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiRnJl
ZUxpc3QuaCIKKyNpbmNsdWRlICJNdXRleC5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVk
ZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtNDIsNiArNDQsOCBAQCBjbGFz
cyBJc29QYWdlQmFzZSB7CiAKICAgICBleHBsaWNpdCBJc29QYWdlQmFzZShib29sIGlzU2hhcmVk
KQogICAgICAgICA6IG1faXNTaGFyZWQoaXNTaGFyZWQpCisgICAgICAgICwgbV9lbGlnaWJpbGl0
eUhhc0JlZW5Ob3RlZCh0cnVlKQorICAgICAgICAsIG1faXNJblVzZUZvckFsbG9jYXRpb24oZmFs
c2UpCiAgICAgewogICAgIH0KIApAQCAtNTIsNyArNTYsOSBAQCBjbGFzcyBJc29QYWdlQmFzZSB7
CiBwcm90ZWN0ZWQ6CiAgICAgQkVYUE9SVCBzdGF0aWMgdm9pZCogYWxsb2NhdGVQYWdlTWVtb3J5
KCk7CiAKLSAgICBib29sIG1faXNTaGFyZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NoYXJl
ZCA6IDE7CisgICAgYm9vbCBtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkIDogMTsKKyAgICBib29s
IG1faXNJblVzZUZvckFsbG9jYXRpb24gOiAxOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgpAQCAtNzEsMTkgKzc3LDE5IEBAIGNsYXNzIElzb1BhZ2UgOiBwdWJsaWMgSXNvUGFnZUJh
c2UgewogCiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAg
ICAgCi0gICAgdm9pZCBmcmVlKHZvaWQqKTsKKyAgICB2b2lkIGZyZWUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIHZvaWQqKTsKIAogICAgIC8vIENhbGxlZCBhZnRlciB0aGlzIHBhZ2Ug
aXMgYWxyZWFkeSBzZWxlY3RlZCBmb3IgYWxsb2NhdGlvbi4KLSAgICBGcmVlTGlzdCBzdGFydEFs
bG9jYXRpbmcoKTsKKyAgICBGcmVlTGlzdCBzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIC8vIENhbGxlZCBhZnRlciB0aGUgYWxsb2NhdG9y
IHBpY2tzIGFub3RoZXIgcGFnZSB0byByZXBsYWNlIHRoaXMgb25lLgotICAgIHZvaWQgc3RvcEFs
bG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpOworICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEZyZWVMaXN0KTsKIAogICAgIElzb0RpcmVjdG9y
eUJhc2U8Q29uZmlnPiYgZGlyZWN0b3J5KCkgeyByZXR1cm4gbV9kaXJlY3Rvcnk7IH0KICAgICBi
b29sIGlzSW5Vc2VGb3JBbGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luVXNlRm9yQWxs
b2NhdGlvbjsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBm
b3JFYWNoTGl2ZU9iamVjdChjb25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVj
dChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAg
IElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAoKTsKICAgICAKQEAgLTExMSwxNiArMTE3LDEzIEBA
IGNsYXNzIElzb1BhZ2UgOiBwdWJsaWMgSXNvUGFnZUJhc2UgewogCiAgICAgLy8gVGhpcyBtdXN0
IGhhdmUgYSB0cml2aWFsIGRlc3RydWN0b3IuCiAKLSAgICBib29sIG1fZWxpZ2liaWxpdHlIYXNC
ZWVuTm90ZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uIHsgZmFs
c2UgfTsKICAgICBEZWZlcnJlZFRyaWdnZXI8SXNvUGFnZVRyaWdnZXI6OkVsaWdpYmxlPiBtX2Vs
aWdpYmlsaXR5VHJpZ2dlcjsKICAgICBEZWZlcnJlZFRyaWdnZXI8SXNvUGFnZVRyaWdnZXI6OkVt
cHR5PiBtX2VtcHR5VHJpZ2dlcjsKLQotICAgIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgbV9k
aXJlY3Rvcnk7CisgICAgdWludDhfdCBtX251bU5vbkVtcHR5V29yZHMgeyAwIH07CisgICAgc3Rh
dGljX2Fzc2VydChiaXRzQXJyYXlMZW5ndGgobnVtT2JqZWN0cykgPD0gVUlOVDhfTUFYKTsKICAg
ICB1bnNpZ25lZCBtX2luZGV4IHsgVUlOVF9NQVggfTsKLSAgICAKKyAgICBJc29EaXJlY3RvcnlC
YXNlPENvbmZpZz4mIG1fZGlyZWN0b3J5OwogICAgIHVuc2lnbmVkIG1fYWxsb2NCaXRzW2JpdHNB
cnJheUxlbmd0aChudW1PYmplY3RzKV07Ci0gICAgdW5zaWduZWQgbV9udW1Ob25FbXB0eVdvcmRz
IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29QYWdlSW5saW5lcy5oCmluZGV4IGYzN2IzNDkzMjc3OTA2YzE4MmQ5OTFmYWZmY2VhOWRm
ZDY3ODJmNDMuLmM1Y2U4NzEyMDkxZmYxOWMxYzZmNWNiOTc4NmI3OWEzMGQ2ZmMwYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKQEAgLTQ3LDggKzQ3LDggQEAgSXNv
UGFnZTxDb25maWc+KiBJc29QYWdlPENvbmZpZz46OnRyeUNyZWF0ZShJc29EaXJlY3RvcnlCYXNl
PENvbmZpZz4mIGRpcmVjdG9yeSwKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIElzb1BhZ2U8
Q29uZmlnPjo6SXNvUGFnZShJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4mIGRpcmVjdG9yeSwgdW5z
aWduZWQgaW5kZXgpCiAgICAgOiBJc29QYWdlQmFzZShmYWxzZSkKLSAgICAsIG1fZGlyZWN0b3J5
KGRpcmVjdG9yeSkKICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgLCBtX2RpcmVjdG9yeShkaXJl
Y3RvcnkpCiB7CiAgICAgbWVtc2V0KG1fYWxsb2NCaXRzLCAwLCBzaXplb2YobV9hbGxvY0JpdHMp
KTsKIH0KQEAgLTY1LDE0ICs2NSwxNCBAQCBJc29QYWdlPENvbmZpZz4qIElzb1BhZ2U8Q29uZmln
Pjo6cGFnZUZvcih2b2lkKiBwdHIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZv
aWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKHZvaWQqIHBhc3NlZFB0cikKK3ZvaWQgSXNvUGFnZTxD
b25maWc+OjpmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgdm9pZCog
cGFzc2VkUHRyKQogewogICAgIEJBU1NFUlQoIW1faXNTaGFyZWQpOwogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQdHIpIC0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4odGhpcyk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBvZmZzZXQgLyBDb25maWc6Om9iamVj
dFNpemU7CiAgICAgCiAgICAgaWYgKCFtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkKSB7Ci0gICAg
ICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmRpZEJlY29tZSgqdGhpcyk7CisgICAgICAgIG1fZWxp
Z2liaWxpdHlUcmlnZ2VyLmRpZEJlY29tZShsb2NrZXIsICp0aGlzKTsKICAgICAgICAgbV9lbGln
aWJpbGl0eUhhc0JlZW5Ob3RlZCA9IHRydWU7CiAgICAgfQogICAgIApAQCAtODIsMTIgKzgyLDEy
IEBAIHZvaWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKHZvaWQqIHBhc3NlZFB0cikKICAgICB1bnNp
Z25lZCBuZXdXb3JkID0gbV9hbGxvY0JpdHNbd29yZEluZGV4XSAmPSB+KDEgPDwgYml0SW5kZXgp
OwogICAgIGlmICghbmV3V29yZCkgewogICAgICAgICBpZiAoIS0tbV9udW1Ob25FbXB0eVdvcmRz
KQotICAgICAgICAgICAgbV9lbXB0eVRyaWdnZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fZW1wdHlUcmlnZ2VyLmRpZEJlY29tZShsb2NrZXIsICp0aGlzKTsKICAgICB9CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUZyZWVMaXN0IElzb1BhZ2U8Q29uZmlnPjo6c3Rh
cnRBbGxvY2F0aW5nKCkKK0ZyZWVMaXN0IElzb1BhZ2U8Q29uZmlnPjo6c3RhcnRBbGxvY2F0aW5n
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMDgsNyArMjA4LDcgQEAgRnJlZUxpc3Qg
SXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb25maWc+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3Qg
ZnJlZUxpc3QpCit2b2lkIElzb1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBGcmVlTGlzdCBmcmVlTGlzdCkKIHsKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIApAQCAtMjE3LDE5ICsy
MTcsMTkgQEAgdm9pZCBJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKEZyZWVMaXN0IGZy
ZWVMaXN0KQogICAgIAogICAgIGZyZWVMaXN0LmZvckVhY2g8Q29uZmlnPigKICAgICAgICAgWyZd
ICh2b2lkKiBwdHIpIHsKLSAgICAgICAgICAgIGZyZWUocHRyKTsKKyAgICAgICAgICAgIGZyZWUo
bG9ja2VyLCBwdHIpOwogICAgICAgICB9KTsKIAogICAgIFJFTEVBU0VfQkFTU0VSVChtX2lzSW5V
c2VGb3JBbGxvY2F0aW9uKTsKICAgICBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uID0gZmFsc2U7CiAK
LSAgICBtX2VsaWdpYmlsaXR5VHJpZ2dlci5oYW5kbGVEZWZlcnJhbCgqdGhpcyk7Ci0gICAgbV9l
bXB0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwoKnRoaXMpOworICAgIG1fZWxpZ2liaWxpdHlUcmln
Z2VyLmhhbmRsZURlZmVycmFsKGxvY2tlciwgKnRoaXMpOworICAgIG1fZW1wdHlUcmlnZ2VyLmhh
bmRsZURlZmVycmFsKGxvY2tlciwgKnRoaXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29QYWdlPENvbmZpZz46OmZvckVh
Y2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9y
RWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCB3b3JkSW5kZXggPSAwOyB3b3JkSW5kZXggPCBi
aXRzQXJyYXlMZW5ndGgobnVtT2JqZWN0cyk7ICsrd29yZEluZGV4KSB7CiAgICAgICAgIHVuc2ln
bmVkIHdvcmQgPSBtX2FsbG9jQml0c1t3b3JkSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZEhlYXAuaAppbmRleCBjOWQwNGVlOTMxMzY5NTlkMzIzZGI1ODBkMjAzNmI5YWViYzIy
MWEzLi41ZWE1MWU1ZDFmZGRlZWZmNmY4ZDU2ZmQ3YzkwN2ZlNDJiZGQxNDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBWYXJp
YWRpY0J1bXBBbGxvY2F0b3IgewogCiBjbGFzcyBJc29TaGFyZWRIZWFwIDogcHVibGljIFN0YXRp
Y1BlclByb2Nlc3M8SXNvU2hhcmVkSGVhcD4gewogcHVibGljOgotICAgIElzb1NoYXJlZEhlYXAo
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCisgICAgSXNvU2hhcmVkSGVhcChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JikKICAgICB7CiAgICAgfQogCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNz
IElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29TaGFyZWRIZWFwPiB7
CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQ+Ci0gICAgdm9pZCogYWxsb2NhdGVT
bG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAKICAgICBJc29T
aGFyZWRQYWdlKiBtX2N1cnJlbnRQYWdlIHsgbnVsbHB0ciB9OwogICAgIFZhcmlhZGljQnVtcEFs
bG9jYXRvciBtX2FsbG9jYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkSGVhcElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVk
SGVhcElubGluZXMuaAppbmRleCBkOWY3ZjExNjZjNWFkMDZmMDRkODEyMWM0OTg4MjI3YmRmZDAx
ZDA0Li5kYTE4ZTZlN2I4NjdiNDA1ZTg2OGMwZjRiM2Q2ZGFiNDAxZGZlZWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCkBAIC01NSwxMiArNTUs
MTIgQEAgdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcoYm9vbCBhYm9ydE9uRmFpbHVy
ZSkKICAgICBjb25zdGV4cHIgdW5zaWduZWQgb2JqZWN0U2l6ZSA9IGNvbXB1dGVPYmplY3RTaXpl
Rm9yU2hhcmVkQ2VsbChwYXNzZWRPYmplY3RTaXplKTsKICAgICByZXR1cm4gbV9hbGxvY2F0b3Iu
dGVtcGxhdGUgYWxsb2NhdGU8b2JqZWN0U2l6ZT4oCiAgICAgICAgIFsmXSAoKSAtPiB2b2lkKiB7
Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93PHBhc3NlZE9iamVjdFNpemU+KGFib3J0
T25GYWlsdXJlKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3c8cGFzc2VkT2JqZWN0
U2l6ZT4obG9ja2VyLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgICAgIH0pOwogfQogCiB0ZW1wbGF0
ZTx1bnNpZ25lZCBwYXNzZWRPYmplY3RTaXplPgotQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRI
ZWFwOjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSkKK0JOT19JTkxJTkUgdm9pZCog
SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2tlciwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKICAgICBTY2F2ZW5nZXImIHNjYXZlbmdl
ciA9ICpTY2F2ZW5nZXI6OmdldCgpOwogICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmcoKTsK
QEAgLTczLDEwICs3MywxMCBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9j
YXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnRQ
YWdlKQotICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZygpOworICAgICAgICBt
X2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIpOwogCiAgICAgbV9jdXJyZW50UGFn
ZSA9IHBhZ2U7Ci0gICAgbV9hbGxvY2F0b3IgPSBtX2N1cnJlbnRQYWdlLT5zdGFydEFsbG9jYXRp
bmcoKTsKKyAgICBtX2FsbG9jYXRvciA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZyhs
b2NrZXIpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG9iamVjdFNpemUgPSBjb21wdXRlT2Jq
ZWN0U2l6ZUZvclNoYXJlZENlbGwocGFzc2VkT2JqZWN0U2l6ZSk7CiAgICAgcmV0dXJuIG1fYWxs
b2NhdG9yLmFsbG9jYXRlPG9iamVjdFNpemU+KFtdICgpIHsgQkNSQVNIKCk7IHJldHVybiBudWxs
cHRyOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFn
ZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmgKaW5kZXggYTllMTM3
ZTQxNDE4ODU2NGQwNTgwNDQ5MGI1NDM3YTUwMGU1NzBiYi4uYmZmNzBjMjRhY2I5OGIxYmVkYzZj
ZWJhZjkwYjA4NTQ2M2RjOTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29TaGFyZWRQYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdl
LmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgSXNvU2hhcmVkUGFnZSA6IHB1YmxpYyBJc29QYWdl
QmFzZSB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CiAg
ICAgdm9pZCBmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBhcGk6Oklzb0hlYXA8
VHlwZT4mLCB2b2lkKik7Ci0gICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIHN0YXJ0QWxsb2NhdGlu
ZygpOwotICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKKyAgICBWYXJpYWRpY0J1bXBBbGxvY2F0
b3Igc3RhcnRBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICB2
b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKIAogcHJp
dmF0ZToKICAgICBJc29TaGFyZWRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
U2hhcmVkUGFnZUlubGluZXMuaAppbmRleCBjNDIxNmI1MWRhYzlkMWU5NWMzMDM1ZDY2MTZmYTNl
N2NlNTkwN2E5Li5lNDQxMGJhZDYwMDM3MjUyNTAwNzcwMzY3MTQ2MDQxYTZhNzRiOWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCkBAIC00Miwx
MSArNDIsMTEgQEAgdm9pZCBJc29TaGFyZWRQYWdlOjpmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmQKICAgICAvLyBJc29EZWFsbG9jYXRv
cjo6ZGVhbGxvY2F0ZSBpcyBjYWxsZWQgZnJvbSBkZWxldGUgb3BlcmF0b3IuIFRoaXMgaXMgZGlz
cGF0Y2hlZCBieSB2dGFibGUgaWYgdmlydHVhbCBkZXN0cnVjdG9yIGV4aXN0cy4KICAgICAvLyBJ
ZiB2cHRyIGlzIHJlcGxhY2VkIHRvIHRoZSBvdGhlciB2cHRyLCB3ZSBtYXkgYWNjaWRlbnRhbGx5
IGNoYWluIHRoaXMgcG9pbnRlciB0byB0aGUgaW5jb3JyZWN0IEhlYXBJbXBsQmFzZSwgd2hpY2gg
dG90YWxseSBicmVha3MgdGhlIElzb0hlYXAncyBnb2FsLgogICAgIC8vIFRvIGhhcmRlbiB0aGF0
LCB3ZSB2YWxpZGF0ZSB0aGF0IHRoaXMgcG9pbnRlciBpcyBhY3R1YWxseSBhbGxvY2F0ZWQgZm9y
IGEgc3BlY2lmaWMgSGVhcEltcGxCYXNlIGhlcmUgYnkgY2hlY2tpbmcgd2hldGhlciB0aGlzIHBv
aW50ZXIgaXMgbGlzdGVkIGluIEhlYXBJbXBsQmFzZSdzIHNoYXJlZCBjZWxscy4KLSAgICBSRUxF
QVNFX0JBU1NFUlQoaGVhcEltcGwubV9zaGFyZWRDZWxsc1tpbmRleF0gPT0gcHRyKTsKKyAgICBS
RUxFQVNFX0JBU1NFUlQoaGVhcEltcGwubV9zaGFyZWRDZWxsc1tpbmRleF0uZ2V0KCkgPT0gcHRy
KTsKICAgICBoZWFwSW1wbC5tX2F2YWlsYWJsZVNoYXJlZCB8PSAoMVUgPDwgaW5kZXgpOwogfQog
Ci1pbmxpbmUgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIElzb1NoYXJlZFBhZ2U6OnN0YXJ0QWxsb2Nh
dGluZygpCitpbmxpbmUgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIElzb1NoYXJlZFBhZ2U6OnN0YXJ0
QWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCkBAIC02MSw3ICs2MSw3IEBAIGlubGlu
ZSBWYXJpYWRpY0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKCkK
ICAgICByZXR1cm4gVmFyaWFkaWNCdW1wQWxsb2NhdG9yKHBheWxvYWRFbmQsIHJlbWFpbmluZyk7
CiB9CiAKLWlubGluZSB2b2lkIElzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKCkKK2lubGlu
ZSB2b2lkIElzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oCmluZGV4IGRlMjg2N2U3OGRlMWNhMjU2MzBjMzZkMTgy
MjgzM2YxN2ZhMDdlZjMuLmJhYmJiMzA0NWI4YTUwNmU4MjgzMTAyZWI2YzNjNGNlYjllZDI5YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaApAQCAtNjAsOCArNjAsOCBAQCBjbGFzcyBJc29UTFMg
ewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICBzdGF0
aWMgdm9pZCogYWxsb2NhdGVJbXBsKGFwaTo6SXNvSGVhcDxUeXBlPiYsIGJvb2wgYWJvcnRPbkZh
aWx1cmUpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLSAgICB2b2lkKiBh
bGxvY2F0ZUZhc3QodW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCogYWxsb2Nh
dGVGYXN0KGFwaTo6SXNvSGVhcDxUeXBlPiYsIHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9u
RmFpbHVyZSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBU
eXBlPgogICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVNsb3coYXBpOjpJc29IZWFwPFR5cGU+Jiwg
Ym9vbCBhYm9ydE9uRmFpbHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0FsbG9jYXRvckVudHJ5LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0Fs
bG9jYXRvckVudHJ5LmgKaW5kZXggMzVkYjg3MTQ3YjQ5MjA2NmEyOGVmZmQ1NzNkZjczNmY3MDgx
MTM5Zi4uZTFkOGFhY2FmZTJmZmFiZGE3NDgwM2U5YjcwNmIwYmY1NmRlOWQxZiAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaApAQCAtNDIsNiArNDIs
OCBAQCBjbGFzcyBJc29UTFNBbGxvY2F0b3JFbnRyeSBmaW5hbCA6IHB1YmxpYyBEZWZhdWx0SXNv
VExTRW50cnk8SXNvQWxsb2NhdG9yPENvbmZpZwogICAgIElzb1RMU0FsbG9jYXRvckVudHJ5KElz
b0hlYXBJbXBsPENvbmZpZz4mKTsKIAogICAgIHZvaWQgY29uc3RydWN0KHZvaWQqIGRzdCkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHNjYXZlbmdlKHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKICAgICAK
ICAgICBJc29IZWFwSW1wbDxDb25maWc+JiBtX2hlYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKaW5kZXggMWFlMWU2
YTVhY2E0OTBlMDUyMjcxMTRmNWU0ZTIwNWZkNDk0ZmY0My4uM2U1NTdhZDE3N2I4NmRkOGJlNmMw
N2Y3NDNjOWExOGVkNmUzZTAxNSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oCkBAIC00Niw1ICs0NiwxMSBAQCB2b2lkIElz
b1RMU0FsbG9jYXRvckVudHJ5PENvbmZpZz46OmNvbnN0cnVjdCh2b2lkKiBkc3QpCiAgICAgbmV3
IChkc3QpIElzb0FsbG9jYXRvcjxDb25maWc+KG1faGVhcCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZz4KK3ZvaWQgSXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uo
dm9pZCogZW50cnkpCit7CisgICAgc3RhdGljX2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4qPihl
bnRyeSktPnNjYXZlbmdlKG1faGVhcCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaAppbmRl
eCA3Mzg0Y2UwZDJhYmI0M2ZmYjU2YTY3ODhmNDc1MTBiNjRmMjY0ZjRkLi5hMGRiYzMwMzc0NDI4
NzBlZDA4OWFhOTIwYmQ0YmZhYWQ5N2VkYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJc29U
TFNEZWFsbG9jYXRvckVudHJ5IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29E
ZWFsbG9jYXRvcjxDbwogICAgIElzb1RMU0RlYWxsb2NhdG9yRW50cnkoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOwogCiAgICAgdm9pZCBjb25zdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJy
aWRlOworICAgIHZvaWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oCmluZGV4IGNiZDVmOWRmN2VmYjc0YzMxMjIz
OTc4MTVjYTM5MTIwNjI5Y2Q0M2YuLmM5NTM0MjgwY2U4ZDVhMThiMDI2OGJkMDc4MDdkN2ViYjdj
MjJlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0
b3JFbnRyeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxs
b2NhdG9yRW50cnlJbmxpbmVzLmgKQEAgLTQzLDUgKzQzLDExIEBAIHZvaWQgSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeTxDb25maWc+Ojpjb25zdHJ1Y3Qodm9pZCogZW50cnkpCiAgICAgbmV3IChlbnRy
eSkgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPihsb2NrKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnPgordm9pZCBJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz46OnNjYXZlbmdlKHZv
aWQqIGVudHJ5KQoreworICAgIHN0YXRpY19jYXN0PElzb0RlYWxsb2NhdG9yPENvbmZpZz4qPihl
bnRyeSktPnNjYXZlbmdlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5jcHAgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcAppbmRleCBjYjAzYmRlMjg5NTdlMmNiZmExMGFm
YWQ4OTQyOGJiM2VhNmZhZjczLi44MzBhNTExYmY5OWRlY2Q4YmY2NDRhM2ZkZTM4YjMwY2FjNjcw
ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcApAQCAtMzEsMTAgKzMx
LDggQEAKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi1Jc29UTFNFbnRyeTo6SXNvVExTRW50cnko
c2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCi0gICAgOiBtX29mZnNldChVSU5UX01BWCkK
LSAgICAsIG1fYWxpZ25tZW50KGFsaWdubWVudCkKLSAgICAsIG1fc2l6ZShzaXplKQorSXNvVExT
RW50cnk6Oklzb1RMU0VudHJ5KHNpemVfdCBzaXplKQorICAgIDogbV9zaXplKHNpemUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaAppbmRleCA3NGY0NDliZmEyOGE0MDFm
YjA0Mzg4Y2JjZTUxNDM2ZTg2OGZkNjE0Li5hNDc4ZTZhMzJkZTEwNmFjYzdlMzkwYWUyYWIyZmU5
MGYxMGI3NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oCkBAIC02NSw3ICs2
NSw3IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExTRW50cnkgewogICAgIHZpcnR1YWwgfklzb1RMU0Vu
dHJ5KCk7CiAgICAgCiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
OyB9Ci0gICAgc2l6ZV90IGFsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50OyB9
CisgICAgc2l6ZV90IGFsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0K
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVfdCBl
eHRlbnQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldCArIG1fc2l6ZTsgfQogICAgIApAQCAtNzgs
NyArNzgsNyBAQCBjbGFzcyBCRVhQT1JUIElzb1RMU0VudHJ5IHsKICAgICB2b2lkIHdhbGtVcFRv
SW5jbHVzaXZlKElzb1RMU0VudHJ5KiwgY29uc3QgRnVuYyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
SXNvVExTRW50cnkoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpOworICAgIElzb1RMU0Vu
dHJ5KHNpemVfdCBzaXplKTsKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElzb1RM
UzsKQEAgLTg2LDE1ICs4NiwxNCBAQCBjbGFzcyBCRVhQT1JUIElzb1RMU0VudHJ5IHsKIAogICAg
IElzb1RMU0VudHJ5KiBtX25leHQgeyBudWxscHRyIH07CiAgICAgCi0gICAgc2l6ZV90IG1fb2Zm
c2V0OyAvLyBDb21wdXRlZCBpbiBjb25zdHJ1Y3Rvci4KLSAgICBzaXplX3QgbV9hbGlnbm1lbnQ7
Ci0gICAgc2l6ZV90IG1fc2l6ZTsKKyAgICB1bnNpZ25lZCBtX29mZnNldCB7IFVJTlRfTUFYIH07
IC8vIENvbXB1dGVkIGluIGNvbnN0cnVjdG9yLgorICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KIGNsYXNzIERlZmF1bHRJc29UTFNFbnRyeSA6
IHB1YmxpYyBJc29UTFNFbnRyeSB7CiBwdWJsaWM6Ci0gICAgfkRlZmF1bHRJc29UTFNFbnRyeSgp
OworICAgIH5EZWZhdWx0SXNvVExTRW50cnkoKSA9IGRlZmF1bHQ7CiAgICAgCiBwcm90ZWN0ZWQ6
CiAgICAgRGVmYXVsdElzb1RMU0VudHJ5KCk7CkBAIC0xMDYsOCArMTA1LDYgQEAgY2xhc3MgRGVm
YXVsdElzb1RMU0VudHJ5IDogcHVibGljIElzb1RMU0VudHJ5IHsKICAgICAvLyBMaWtld2lzZSwg
dGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHNjYXZlbmdpbmcuIFdoZW4gdGhlIFRMUyBpcyBzaHV0dGlu
ZyBkb3duLCB3ZSB3aWxsIGJlIGFza2VkIHRvCiAgICAgLy8gc2NhdmVuZ2UgYW5kIHRoZW4gd2Ug
d2lsbCBiZSBhc2tlZCB0byBkZXN0cnVjdC4KICAgICB2b2lkIGRlc3RydWN0KHZvaWQqIGVudHJ5
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnlJbmxpbmVzLmgKaW5kZXggNmY2MTVmOTUwY2RiZjBhYTA2MzEzNTkxZDM4M2M4YzI0
YzI4ZjNiMy4uYzJhNzI3ZTBmMzVmNmFjNDMwMWNiM2FhNDllZGJhOTVjZjEwYTdhNyAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oCkBAIC00MywxMyArNDMs
MTAgQEAgdm9pZCBJc29UTFNFbnRyeTo6d2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExTRW50cnkqIGxh
c3QsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KIERl
ZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5cGU+OjpEZWZhdWx0SXNvVExTRW50cnkoKQotICAgIDog
SXNvVExTRW50cnkoYWxpZ25vZihFbnRyeVR5cGUpLCBzaXplb2YoRW50cnlUeXBlKSkKLXsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgotRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5
VHlwZT46On5EZWZhdWx0SXNvVExTRW50cnkoKQorICAgIDogSXNvVExTRW50cnkoc2l6ZW9mKEVu
dHJ5VHlwZSkpCiB7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRW50cnlUeXBlKSA8PSBVSU5U
MzJfTUFYKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih2b2lkKikgPT0gYWxpZ25vZihFbnRy
eVR5cGUpLCAiQmVjYXVzZSBJc29UTFNFbnRyeSBpbmNsdWRlcyB2dGFibGUsIGl0IHNob3VsZCBi
ZSB0aGUgc2FtZSB0byB0aGUgcG9pbnRlciIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRy
eVR5cGU+CkBAIC02NywxMiArNjQsNSBAQCB2b2lkIERlZmF1bHRJc29UTFNFbnRyeTxFbnRyeVR5
cGU+OjpkZXN0cnVjdCh2b2lkKiBwYXNzZWRFbnRyeSkKICAgICBlbnRyeS0+fkVudHJ5VHlwZSgp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5cGU+Ci12b2lkIERlZmF1bHRJc29UTFNF
bnRyeTxFbnRyeVR5cGU+OjpzY2F2ZW5nZSh2b2lkKiBwYXNzZWRFbnRyeSkKLXsKLSAgICBFbnRy
eVR5cGUqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RW50cnlUeXBlKj4ocGFzc2VkRW50cnkpOwotICAg
IGVudHJ5LT5zY2F2ZW5nZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTSW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmgKaW5kZXggMWVhYjI3MWM0MGNhNzlhM2RkZWZm
YmZkMjVlMGU3NDg2OGE0ZDMxOS4uMGQ0YjIwMTk0ZTBjZGVkMjA4OGM5ZTc0YzcyODc0ODY0NWEz
NDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmgKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCBJc29UTFM6OnNjYXZlbmdlKGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlKQog
ICAgICAgICByZXR1cm47CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gaGFuZGxlLmFsbG9jYXRvck9m
ZnNldCgpOwogICAgIGlmIChvZmZzZXQgPCB0bHMtPm1fZXh0ZW50KQotICAgICAgICByZWludGVy
cHJldF9jYXN0PElzb0FsbG9jYXRvcjx0eXBlbmFtZSBhcGk6Oklzb0hlYXA8VHlwZT46OkNvbmZp
Zz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZlbmdlKCk7CisgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmln
Pio+KHRscy0+bV9kYXRhICsgb2Zmc2V0KS0+c2NhdmVuZ2UoaGFuZGxlLmltcGwoKSk7CiAgICAg
b2Zmc2V0ID0gaGFuZGxlLmRlYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYgKG9mZnNldCA8IHRs
cy0+bV9leHRlbnQpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvRGVhbGxvY2F0b3I8dHlw
ZW5hbWUgYXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQp
LT5zY2F2ZW5nZSgpOwpAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVJ
bXBsKGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCBib29sIGFib3J0T25GYWlsdXJlKQogICAg
IElzb1RMUyogdGxzID0gZ2V0KCk7CiAgICAgaWYgKCF0bHMgfHwgb2Zmc2V0ID49IHRscy0+bV9l
eHRlbnQpCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3c8Q29uZmlnPihoYW5kbGUsIGFib3J0
T25GYWlsdXJlKTsKLSAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihvZmZzZXQs
IGFib3J0T25GYWlsdXJlKTsKKyAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPiho
YW5kbGUsIG9mZnNldCwgYWJvcnRPbkZhaWx1cmUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
b25maWc+Ci12b2lkKiBJc29UTFM6OmFsbG9jYXRlRmFzdCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wg
YWJvcnRPbkZhaWx1cmUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+
Cit2b2lkKiBJc29UTFM6OmFsbG9jYXRlRmFzdChhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwg
dW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKQogewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PElzb0FsbG9jYXRvcjxDb25maWc+Kj4obV9kYXRhICsgb2Zmc2V0KS0+YWxs
b2NhdGUoYWJvcnRPbkZhaWx1cmUpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElzb0Fs
bG9jYXRvcjxDb25maWc+Kj4obV9kYXRhICsgb2Zmc2V0KS0+YWxsb2NhdGUoaGFuZGxlLmltcGwo
KSwgYWJvcnRPbkZhaWx1cmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVu
YW1lIFR5cGU+CkBAIC0xMDgsNyArMTA4LDcgQEAgQk5PX0lOTElORSB2b2lkKiBJc29UTFM6OmFs
bG9jYXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwgYm9vbCBhYm9ydE9uRmEKICAg
ICAKICAgICBJc29UTFMqIHRscyA9IGVuc3VyZUhlYXBBbmRFbnRyaWVzKGhhbmRsZSk7CiAgICAg
Ci0gICAgcmV0dXJuIHRscy0+YWxsb2NhdGVGYXN0PENvbmZpZz4oaGFuZGxlLmFsbG9jYXRvck9m
ZnNldCgpLCBhYm9ydE9uRmFpbHVyZSk7CisgICAgcmV0dXJuIHRscy0+YWxsb2NhdGVGYXN0PENv
bmZpZz4oaGFuZGxlLCBoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25GYWlsdXJlKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCmluZGV4IDRiMzM1ZWE1MTlkNDVlOGYxNmIyYThk
OTA5ZTEzMDQ2MTlkNTc0ODQuLjBiYWU2MDc3MDFlNDkwYzdhZTJhOWY0MGU3ZTkxN2NlY2ZiMTcz
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAKQEAgLTQ0LDcgKzQ0
LDkgQEAgdm9pZCBJc29UTFNMYXlvdXQ6OmFkZChJc29UTFNFbnRyeSogZW50cnkpCiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiBsb2NraW5nKGFkZGluZ011dGV4KTsKICAgICBpZiAobV9oZWFk
KSB7CiAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChtX3RhaWwpOwotICAgICAgICBlbnRyeS0+bV9v
ZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGVudHJ5LT5hbGlnbm1lbnQoKSwgbV90YWlsLT5l
eHRlbnQoKSk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGVu
dHJ5LT5hbGlnbm1lbnQoKSwgbV90YWlsLT5leHRlbnQoKSk7CisgICAgICAgIFJFTEVBU0VfQkFT
U0VSVChvZmZzZXQgPCBVSU5UX01BWCk7CisgICAgICAgIGVudHJ5LT5tX29mZnNldCA9IG9mZnNl
dDsKICAgICAgICAgc3RkOjphdG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X29yZGVyX3Nl
cV9jc3QpOwogICAgICAgICBtX3RhaWwtPm1fbmV4dCA9IGVudHJ5OwogICAgICAgICBtX3RhaWwg
PSBlbnRyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhY2tlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNGM0ZWQ3YmViZGNh
ODZlNzFkODNjMjIyZTZkYzFjYWEwNGQwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1BhY2tlZC5oCkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFsZ29yaXRobS5oIgorI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGFy
cmF5PgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFz
cyBQYWNrZWQgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5
cGUgPSB0cnVlOworCisgICAgUGFja2VkKCkKKyAgICAgICAgOiBQYWNrZWQoVCB7IH0pCisgICAg
eworICAgIH0KKworICAgIFBhY2tlZChjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1l
bWNweShtX3N0b3JhZ2UuZGF0YSgpLCAmdmFsdWUsIHNpemVvZihUKSk7CisgICAgfQorCisgICAg
VCBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgbWVtY3B5KCZ2
YWx1ZSwgbV9zdG9yYWdlLmRhdGEoKSwgc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKworICAgIHZvaWQgc2V0KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAg
bWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAg
ICBQYWNrZWQ8VD4mIG9wZXJhdG9yPShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNl
dCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVPgorICAgIFQgZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCBv
bGRWYWx1ZSA9IGdldCgpOworICAgICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7
CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoUGFja2Vk
JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjpl
bmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KKyAgICB2b2lkIHN3YXAoT3RoZXImIG90
aGVyKQorICAgIHsKKyAgICAgICAgVCB0MSA9IGdldCgpOworICAgICAgICBUIHQyID0gb3RoZXIu
Z2V0KCk7CisgICAgICAgIHNldCh0Mik7CisgICAgICAgIG90aGVyLnNldCh0MSk7CisgICAgfQor
CisgICAgdm9pZCBzd2FwKFQmIHQyKQorICAgIHsKKyAgICAgICAgVCB0MSA9IGdldCgpOworICAg
ICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAgICAgc2V0KHQxKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgc3RkOjphcnJheTx1aW50OF90LCBzaXplb2YoVCk+IG1fc3RvcmFnZTsKK307CisK
Ky8vIFBhY2tlZEFsaWduZWRQdHIgY2FuIHRha2UgYWxpZ25tZW50IHBhcmFtZXRlciB0b28uIFBh
Y2tlZEFsaWduZWRQdHIgb25seSB1c2VzIHRoaXMgYWxpZ25tZW50IGluZm9ybWF0aW9uIGlmIGl0
IGlzIHByb2ZpdGFibGU6IHdlIHVzZQorLy8gYWxpZ25tZW50IGluZm9ybWF0aW9uIG9ubHkgd2hl
biB3ZSBjYW4gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBzdG9yYWdlLiBTaW5jZSB0aGUgcG9pbnRl
ciB3aWR0aCBpcyAzNiBiaXRzIGFuZCBKU0NlbGxzIGFyZSBhbGlnbmVkIHRvIDE2IGJ5dGVzLAor
Ly8gd2UgY2FuIHVzZSA0IGJpdHMgaW4gRGFyd2luIEFSTTY0LCB3ZSBjYW4gY29tcGFjdCBjZWxs
IHBvaW50ZXIgaW50byA0IGJ5dGVzICgzMiBiaXRzKS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBhbGlnbm1lbnQgPSBhbGlnbm9mKFQpPgorY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7Citw
dWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSwgIkFsaWdu
bWVudCBuZWVkcyB0byBiZSBwb3dlci1vZi10d28iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNQYWNrZWRUeXBlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFs
aWdubWVudFNoaWZ0U2l6ZUlmUHJvZml0YWJsZSA9IGdldExTQlNldE5vblplcm9Db25zdGV4cHIo
YWxpZ25tZW50KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXplV2l0
aG91dEFsaWdubWVudFNoaWZ0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjw4LCB1aW50cHRyX3Q+KEJP
U19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLyA4OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgc3RvcmFnZVNpemVXaXRoQWxpZ25tZW50U2hpZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9m
PDgsIHVpbnRwdHJfdD4oQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIC0gYWxpZ25tZW50U2hp
ZnRTaXplSWZQcm9maXRhYmxlKSAvIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWxp
Z25tZW50U2hpZnRQcm9maXRhYmxlID0gc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hpZnQg
PiBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGFsaWdubWVudFNoaWZ0U2l6ZSA9IGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlID8g
YWxpZ25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxlIDogMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHN0b3JhZ2VTaXplID0gc3RvcmFnZVNpemVXaXRoQWxpZ25tZW50U2hpZnQ7CisK
KyAgICBjb25zdGV4cHIgUGFja2VkQWxpZ25lZFB0cigpCisgICAgICAgIDogbV9zdG9yYWdlKCkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIFBhY2tlZEFsaWduZWRQdHIoc3RkOjpudWxs
cHRyX3QpCisgICAgICAgIDogbV9zdG9yYWdlKCkKKyAgICB7CisgICAgfQorCisgICAgUGFja2Vk
QWxpZ25lZFB0cihUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldCh2YWx1ZSk7CisgICAgfQor
CisgICAgVCogZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBQYWNrZWRQdHI8
PiBjYW4gbG9hZCBtZW1vcnkgd2l0aCBvbmUgbW92IGJ5IGNoZWNraW5nIHBhZ2UgYm91bmRhcnku
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc3
NTQKKyAgICAgICAgdWludHB0cl90IHZhbHVlID0gMDsKKyNpZiBCQ1BVKExJVFRMRV9FTkRJQU4p
CisgICAgICAgIG1lbWNweSgmdmFsdWUsIG1fc3RvcmFnZS5kYXRhKCksIHN0b3JhZ2VTaXplKTsK
KyNlbHNlCisgICAgICAgIG1lbWNweShiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSkgKyAo
c2l6ZW9mKHZvaWQqKSAtIHN0b3JhZ2VTaXplKSwgbV9zdG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNp
emUpOworI2VuZGlmCisgICAgICAgIGlmIChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkKKyAg
ICAgICAgICAgIHZhbHVlIDw8PSBhbGlnbm1lbnRTaGlmdFNpemU7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8VCo+KHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChUKiBwYXNzZWRW
YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCB2YWx1ZSA9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KHBhc3NlZFZhbHVlKTsKKyAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRh
YmxlKQorICAgICAgICAgICAgdmFsdWUgPj49IGFsaWdubWVudFNoaWZ0U2l6ZTsKKyNpZiBCQ1BV
KExJVFRMRV9FTkRJQU4pCisgICAgICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgpLCAmdmFsdWUs
IHN0b3JhZ2VTaXplKTsKKyNlbHNlCisgICAgICAgIG1lbWNweShtX3N0b3JhZ2UuZGF0YSgpLCBi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSkgKyAoc2l6ZW9mKHZvaWQqKSAtIHN0b3JhZ2VT
aXplKSwgc3RvcmFnZVNpemUpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisg
ICAgeworICAgICAgICBzZXQobnVsbHB0cik7CisgICAgfQorCisgICAgVCogb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gKmdldCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7
IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29u
dmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBl
ZGVmIFQqIChQYWNrZWRBbGlnbmVkUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3Bl
cmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldCgpID8gJlBhY2tl
ZEFsaWduZWRQdHI6Om1fc3RvcmFnZSA6IG51bGxwdHI7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAgIFBhY2tlZEFsaWduZWRQdHIm
IG9wZXJhdG9yPShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldCh2YWx1ZSk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQqIGV4
Y2hhbmdlKFUmJiBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIFQqIG9sZFZhbHVlID0gZ2V0KCk7
CisgICAgICAgIHNldChzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IG9sZFZhbHVlOworICAgIH0KKworICAgIHZvaWQgc3dhcChzdGQ6Om51bGxwdHJfdCkgeyBjbGVh
cigpOyB9CisKKyAgICB2b2lkIHN3YXAoUGFja2VkQWxpZ25lZFB0ciYgb3RoZXIpCisgICAgewor
ICAgICAgICBtX3N0b3JhZ2Uuc3dhcChvdGhlci5tX3N0b3JhZ2UpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6
OmlzUGFja2VkVHlwZT4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIFQqIHQxID0gZ2V0KCk7CisgICAgICAgIFQqIHQyID0gb3RoZXIuZ2V0KCk7CisgICAgICAg
IHNldCh0Mik7CisgICAgICAgIG90aGVyLnNldCh0MSk7CisgICAgfQorCisgICAgdm9pZCBzd2Fw
KFQqIHQyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgc3RkOjpzd2Fw
KHQxLCB0Mik7CisgICAgICAgIHNldCh0MSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6
YXJyYXk8dWludDhfdCwgc3RvcmFnZVNpemU+IG1fc3RvcmFnZTsKK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitjbGFzcyBQYWNrZWQ8VCo+IDogcHVibGljIFBhY2tlZEFsaWduZWRQdHI8VCwg
MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBQYWNrZWRBbGlnbmVkUHRyPFQsIDE+Owor
ICAgIHVzaW5nIEJhc2U6OkJhc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcg
UGFja2VkUHRyID0gUGFja2VkPFQqPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBQ
YWNrZWRQdHJUcmFpdHMgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHVzaW5nIFJlYmluZFRy
YWl0cyA9IFBhY2tlZFB0clRyYWl0czxVPjsKKworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUGFj
a2VkUHRyPFQ+OworCisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RhdGljIFQqIGV4Y2hhbmdlKFN0
b3JhZ2VUeXBlJiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gcHRyLmV4Y2hhbmdlKG5ld1Zh
bHVlKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+IHN0YXRpYyB2b2lkIHN3YXAo
UGFja2VkUHRyPFQ+JiBhLCBPdGhlciYgYikgeyBhLnN3YXAoYik7IH0KKworICAgIHN0YXRpYyBU
KiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5j
cHAKaW5kZXggZWIxNWIzMWYxMzU4ZDJhYWJjNzQyOWYyNmQzNWIzZjc5NTkwODJjOC4uNjBmMDY3
NmJmMzA2YTYyZmJjMjIyYmE3M2MyYjAzNWE5YzFkYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2NhdmVuZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5o
IgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUg
Iklzb0hlYXBJbXBsSW5saW5lcy5oIgogI2lmIEJPUyhEQVJXSU4pCiAjaW1wb3J0IDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8bWFjaC9ob3N0X2luZm8uaD4KQEAgLTY3LDcgKzY4LDcg
QEAgc3RydWN0IFByaW50VGltZSB7CiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFH
RShTY2F2ZW5nZXIpOwogCi1TY2F2ZW5nZXI6OlNjYXZlbmdlcihzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JikKK1NjYXZlbmdlcjo6U2NhdmVuZ2VyKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQogewogICAgIEJBU1NFUlQoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaAppbmRleCBmNDg5MzRiNTExYjZlNmMx
OGQ4OTZkNWQ1OTM0MTU5YmY1M2U5OTBjLi43MjhhNzVlM2JkZmRhMTk2OWNhMDU4NTBlNjUxOWUy
NDA5MjhiNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKQEAgLTQyLDcgKzQyLDcg
QEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBTY2F2ZW5nZXIgOiBwdWJsaWMgU3RhdGlj
UGVyUHJvY2VzczxTY2F2ZW5nZXI+IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIFNjYXZlbmdlcihz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQkVYUE9SVCBTY2F2ZW5nZXIoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIH5TY2F2ZW5nZXIoKSA9IGRlbGV0ZTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAppbmRleCA1YzhlMjhhMDUwOTMxYTE0NTNi
MmUzYTk5MmNmMmY4Mjk1ZWM5ZmVmLi5hZGYyMTY3MWViZDg3YTlmZDY1NzhhNDVjYTYxNjAwMmY1
Yzc1N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5h
bWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKFZN
SGVhcCk7CiAKLVZNSGVhcDo6Vk1IZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorVk1IZWFw
OjpWTUhlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNSGVhcC5oCmluZGV4IDQ3YTExM2RiZjI3MzY0MTE0MTI4OGFiNmM0ZTUwNWVhZTViYjVj
MTEuLjY4ZjBhYmU2YWQ1OWEwZTQ5OGE0MDliYzE1MDhjYzkwNWYxZTA3ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuaApAQCAtNDcsNyArNDcsNyBAQCB0eXBlZGVmIGVudW0geyBTeW5jLCBBc3lu
YyB9IFNjYXZlbmdlTW9kZTsKIAogY2xhc3MgVk1IZWFwIDogcHVibGljIFN0YXRpY1BlclByb2Nl
c3M8Vk1IZWFwPiB7CiBwdWJsaWM6Ci0gICAgVk1IZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KTsKKyAgICBWTUhlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAg
IExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKaW5kZXggZjExYjUxN2QyZjU3YjVjZGQxN2I0
YmI1YWFjNjBhYmVmOTllNzU0Mi4uMGJiODI5NjkyYWM3ODIwMjIyMDUyNjUzMDAzODlmY2I2OTQ2
YzkxZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGlj
IGNvbnN0IG1hbGxvY19pbnRyb3NwZWN0aW9uX3Qgem9uZUludHJvc3BlY3QgPSB7CiAgICAgLnN0
YXRpc3RpY3MgPSBibWFsbG9jOjpzdGF0aXN0aWNzCiB9OwogCi1ab25lOjpab25lKHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKQorWm9uZTo6Wm9uZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikKIHsKICAgICBtYWxsb2Nfem9uZV90OjpzaXplID0gJmJtYWxsb2M6OnpvbmVTaXplOwogICAg
IG1hbGxvY196b25lX3Q6OnpvbmVfbmFtZSA9ICJXZWJLaXQgTWFsbG9jIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9a
b25lLmgKaW5kZXggMDA5ZDcyMjdmMjM4NzdlZjFlYTY4MmMwMjgyY2Q2ZWZhZjhlNmQ1Ny4uZjVk
NjQ5NWE0MWUyZWNjMGNlZGUxYzUzNWU1MzIxNTRjMDAzNWQ5YiAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9ab25lLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25l
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgWm9uZSA6IHB1YmxpYyBtYWxsb2Nfem9uZV90IHsK
ICAgICAvLyBFbm91Z2ggY2FwYWNpdHkgdG8gdHJhY2sgYSA2NEdCIGhlYXAsIHNvIHByb2JhYmx5
IGVub3VnaCBmb3IgYW55dGhpbmcuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgY2FwYWNp
dHkgPSAyMDQ4OwogCi0gICAgWm9uZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgWm9u
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgWm9uZSh0YXNrX3QsIG1lbW9y
eV9yZWFkZXJfdCwgdm1fYWRkcmVzc190KTsKIAogICAgIHZvaWQgYWRkUmFuZ2UoUmFuZ2UpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY2ODBi
OGU1YzNiOWM0N2ExZTFjYmZlZjJmZTc3ZDBjMDU4ZWYzZTcuLjk5NDE3ZTM0M2IyZmY0ZTJlMDFh
YWJhNmE3MTI5ZTEwNDVkOTVjODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMS0xNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29IZWFwJ3MgaW5p
dGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29I
ZWFwLmNwcDoKKyAgICAgICAgKGFzc2VydEhhc09iamVjdHMpOgorICAgICAgICAoYXNzZXJ0SGFz
T25seU9iamVjdHMpOgorICAgICAgICAoYXNzZXJ0Q2xlYW4pOgorICAgICAgICAoVEVTVCk6CisK
IDIwMjAtMDEtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2ZXJ0IGJ5dGVjb2RlIGNoZWNrcG9pbnRzIHNpbmNlIGl0IGJyZWFrcyB3YXRjaApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFw
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAK
aW5kZXggNDI2M2YxMWIzNjBjZTBiYzJmZDYwNTg1MjY2NjcyNGMwODg0MWU4MS4uNDZkYTU5ZTY2
YTc4NDdiZTYzOTJhYWQ1M2M1YmJlYjI5ODFhMmZiZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwCkBAIC04MCw2ICs4MCw3IEBAIHN0
YXRpYyB2b2lkIGFzc2VydEhhc09iamVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6
c2V0PHZvaWQqPiBwb2ludGVycykKICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7CiAgICAg
c3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICBp
bXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9p
ZCogb2JqZWN0KSB7CiAgICAgICAgICAgICBwb2ludGVycy5lcmFzZShvYmplY3QpOwogICAgICAg
ICB9KTsKQEAgLTk2LDYgKzk3LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT25seU9iamVjdHMo
SXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGUKICAgICBhdXRv
JiBpbXBsID0gaGVhcC5pbXBsKCk7CiAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4
PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAorICAgICAg
ICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9pZCogb2JqZWN0KSB7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEocG9pbnRlcnMuZXJhc2Uob2JqZWN0KSwgMVUpOwogICAgICAgICB9KTsKQEAgLTEwOCwx
NSArMTEwLDExIEBAIHN0YXRpYyB2b2lkIGFzc2VydENsZWFuKElzb0hlYXA8aGVhcFR5cGU+JiBo
ZWFwKQogICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOwogICAgIGlmICghRW52aXJvbm1lbnQ6Omdl
dCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewogICAgICAgICBhdXRvJiBpbXBsID0gaGVhcC5p
bXBsKCk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpN
dXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC5u
dW1MaXZlT2JqZWN0cygpKTsKLSAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC5u
dW1MaXZlT2JqZWN0cygpKTsKICAgICB9CiAgICAgaGVhcC5zY2F2ZW5nZSgpOwogICAgIGlmICgh
RW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewogICAgICAgICBhdXRv
JiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpN
dXRleD4gbG9ja2VyKGltcGwubG9jayk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUNv
bW1pdHRlZFBhZ2VzKCkpOwogICAgIH0KIH0KQEAgLTE4NywxOSArMTg1LDEyIEBAIFRFU1QoYm1h
bGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlKQogICAgICAg
ICBwdHJzW2ldID0gbnVsbHB0cjsKICAgICB9CiAgICAgaGVhcC5zY2F2ZW5nZSgpOwotICAgIHVu
c2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlOwogICAgIGF1dG8mIGltcGwgPSBoZWFwLmlt
cGwoKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9j
a2VyKGltcGwubG9jayk7Ci0gICAgICAgIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5u
dW1Db21taXR0ZWRQYWdlcygpOwotICAgIH0KKyAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdl
c0JlZm9yZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICBhc3NlcnRIYXNPbmx5T2Jq
ZWN0cyhoZWFwLCB0b3B0cnNldChwdHJzKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHRycy5z
aXplKCkgLyAyOyBpLS07KQogICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkp
OwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIo
aW1wbC5sb2NrKTsKLSAgICAgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlLCBp
bXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwotICAgIH0KKyAgICBFWFBFQ1RfRVEobnVtQ29tbWl0
dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgZm9yICh2b2lk
KiBwdHIgOiBwdHJzKQogICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKICAgICBhc3NlcnRD
bGVhbihoZWFwKTsKQEAgLTIyMiwxNyArMjEzLDExIEBAIFRFU1QoYm1hbGxvYywgSXNvRmxpcEZs
b3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlMjg4KQogICAgIGhlYXAuc2NhdmVuZ2Uo
KTsKICAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlc0JlZm9yZTsKICAgICBhdXRvJiBpbXBs
ID0gaGVhcC5pbXBsKCk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6
TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBudW1Db21taXR0ZWRQYWdlc0JlZm9y
ZSA9IGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKTsKLSAgICB9CisgICAgdW5zaWduZWQgbnVtQ29t
bWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgYXNzZXJ0
SGFzT25seU9iamVjdHMoaGVhcCwgdG9wdHJzZXQocHRycykpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IHB0cnMuc2l6ZSgpIC8gMjsgaS0tOykKICAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5h
bGxvY2F0ZSgpKTsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRl
eD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdl
c0JlZm9yZSwgaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKLSAgICB9CisgICAgRVhQRUNUX0VR
KG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlLCBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwogICAg
IGZvciAodm9pZCogcHRyIDogcHRycykKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CiAg
ICAgYXNzZXJ0Q2xlYW4oaGVhcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387854</attachid>
            <date>2020-01-15 15:06:45 -0800</date>
            <delta_ts>2020-01-15 15:29:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115150644.patch</filename>
            <type>text/plain</type>
            <size>89360</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uZDRjZTQ1YzdmODUwODVmNjU1ZGU2OWJlZTNlYjVk
YjJjYjI1OTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgSXNvSGVhcCByZWxhdGVkIGRhdGEgc3Ry
dWN0dXJlcyBzbWFsbCBieSB1c2luZyBQYWNrZWQgdGVjaG5pcXVlLiBXZSBzdGFydCB1c2luZyBJ
c29IZWFwIGZvciBtYW55IGNsYXNzZXMsCisgICAgICAgIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRo
YXQgd2Uga2VlcCBtZXRhZGF0YSBmb3IgSXNvSGVhcCBzbWFsbCBiZWNhdXNlIHRoZXNlIGRhdGEg
cGVyc2lzdGVudGx5IGV4aXN0cy4KKworICAgICAgICAxLiBXZSBwYXNzIElzb0hlYXBJbXBsPD4g
YXMgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBob2xkaW5nIGl0IHVubmVjZXNzYXJpbHkuCisgICAg
ICAgIDIuIFdlIG1ha2Ugc29tZSBvZiBwb2ludGVycyBQYWNrZWQgc28gdGhhdCB3ZSBjYW4ga2Vl
cCBzaXplb2YoSXNvSGVhcEltcGw8Q29uZmlnPikgc21hbGwuCisgICAgICAgIDMuIE9uZSBvZiB0
aGUgZHJhd2JhY2sgb2YgUGFja2VkUHRyIGlzIHRoYXQgbG9hZGluZyBhbmQgc3RvcmluZyBhcmUg
bm90IGF0b21pYy4gVG8gZW5zdXJlIGl0IGlzIHNhZmUsIHdlIHBhc3MKKyAgICAgICAgICAgYGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mYCB0byBmdW5jdGlvbnMgc28gdGhhdCB3ZSBrbm93
IHRoYXQgdGhleSBhcmUgYWNjZXNzZWQgb25seSB3aGVuIGxvY2sgaXMgaGVsZCBjb3JyZWN0bHku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAg
ICAgKGJtYWxsb2M6OmN0ekNvbnN0ZXhwcik6CisgICAgICAgIChibWFsbG9jOjpnZXRMU0JTZXRO
b25aZXJvQ29uc3RleHByKToKKyAgICAgICAgKiBibWFsbG9jL0JQbGF0Zm9ybS5oOgorICAgICAg
ICAqIGJtYWxsb2MvRGVidWdIZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6
RGVidWdIZWFwKToKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5oOgorICAgICAgICAqIGJt
YWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmg6CisgICAgICAgICogYm1hbGxvYy9EZWZlcnJlZFRyaWdn
ZXJJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46
OmRpZEJlY29tZSk6CisgICAgICAgIChibWFsbG9jOjpEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46
OmhhbmRsZURlZmVycmFsKToKKyAgICAgICAgKiBibWFsbG9jL0Vudmlyb25tZW50LmNwcDoKKyAg
ICAgICAgKGJtYWxsb2M6OkVudmlyb25tZW50OjpFbnZpcm9ubWVudCk6CisgICAgICAgICogYm1h
bGxvYy9FbnZpcm9ubWVudC5oOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAg
ICAgICAoYm1hbGxvYzo6UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrczo6UHJpbWl0aXZlRGlzYWJs
ZUNhbGxiYWNrcyk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6Om1hcmtB
bGxMYXJnZUFzRWxpZ2liaWxlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlY29tbWl0TGFy
Z2VSYW5nZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZSk6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgICogYm1hbGxv
Yy9IZWFwLmg6CisgICAgICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcDoKKyAgICAgICAg
KGJtYWxsb2M6OkhlYXBDb25zdGFudHM6OkhlYXBDb25zdGFudHMpOgorICAgICAgICAqIGJtYWxs
b2MvSGVhcENvbnN0YW50cy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9j
OjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6SXNvQWxsb2NhdG9yKToKKyAgICAgICAgKGJtYWxsb2M6
Oklzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpJc29B
bGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0Fs
bG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EZWFsbG9j
YXRvcklubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb0RlYWxsb2NhdG9yPENvbmZpZz46
OnNjYXZlbmdlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeS5oOgorICAgICAgICAq
IGJtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2Vk
TnVtUGFnZXM+OjpJc29EaXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFn
ZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdl
cz46OmRpZEJlY29tZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OmRpZERl
Y29tbWl0KToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdl
KToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2UpOgorICAgICAg
ICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6Cisg
ICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKToK
KyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbXBsLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklz
b0hlYXBJbXBsQmFzZTo6SXNvSGVhcEltcGxCYXNlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb0hl
YXBJbXBsLmg6CisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaDoKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46Oklzb0hlYXBJbXBsKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNv
bW1pdGVkKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdl
KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlVG9IaWdo
V2F0ZXJtYXJrKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsQmFzZTo6ZnJlZWFibGVN
ZW1vcnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9i
amVjdHMpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0
dGVkUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFj
aERpcmVjdG9yeSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JF
YWNoQ29tbWl0dGVkUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
Ojpmb3JFYWNoTGl2ZU9iamVjdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6
OmZvb3RwcmludCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmRpZENvbW1p
dCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmRpZERlY29tbWl0KToKKyAg
ICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsQmFzZTo6aXNOb3dGcmVlYWJsZSk6CisgICAgICAg
IChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmlzTm9Mb25nZXJGcmVlYWJsZSk6CisgICAgICAg
IChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6ZnJlZWFibGVNZW1vcnkpOiBEZWxl
dGVkLgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9vdHByaW50KTog
RGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmRpZENvbW1p
dCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWRE
ZWNvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+
Ojppc05vd0ZyZWVhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBs
PENvbmZpZz46OmlzTm9Mb25nZXJGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxv
Yy9Jc29QYWdlLmg6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlQmFzZTo6SXNvUGFnZUJhc2Up
OgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1BhZ2U8Q29uZmlnPjo6SXNvUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENv
bmZpZz46OmZyZWUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdGFydEFs
bG9jYXRpbmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2Nh
dGluZyk6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2Jq
ZWN0KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZEhlYXAuaDoKKyAgICAgICAgKGJtYWxs
b2M6Oklzb1NoYXJlZEhlYXA6Oklzb1NoYXJlZEhlYXApOgorICAgICAgICAqIGJtYWxsb2MvSXNv
U2hhcmVkSGVhcElubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFs
bG9jYXRlTmV3KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xv
dyk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFn
ZTo6ZnJlZSk6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRp
bmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTLmg6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNBbGxv
Y2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxp
bmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+Ojpz
Y2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5Lmg6Cisg
ICAgICAgICogYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSk6Cisg
ICAgICAgICogYm1hbGxvYy9Jc29UTFNFbnRyeS5jcHA6CisgICAgICAgIChibWFsbG9jOjpJc29U
TFNFbnRyeTo6SXNvVExTRW50cnkpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTRW50cnkuaDoK
KyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxv
Yzo6RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OkRlZmF1bHRJc29UTFNFbnRyeSk6Cisg
ICAgICAgIChibWFsbG9jOjpEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJ
c29UTFNFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpEZWZhdWx0SXNvVExTRW50
cnk8RW50cnlUeXBlPjo6c2NhdmVuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvSXNv
VExTSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjpzY2F2ZW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRlSW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJ
c29UTFM6OmFsbG9jYXRlRmFzdCk6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRl
U2xvdyk6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwOgorICAgICAgICAoYm1h
bGxvYzo6SXNvVExTTGF5b3V0OjphZGQpOgorICAgICAgICAqIGJtYWxsb2MvUGFja2VkLmg6IEFk
ZGVkLgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpQYWNrZWQpOgorICAgICAgICAoYm1hbGxv
Yzo6UGFja2VkOjpnZXQgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzZXQpOgor
ICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpvcGVyYXRvcj0pOgorICAgICAgICAoYm1hbGxvYzo6
UGFja2VkOjpleGNoYW5nZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWQ6OnN3YXApOgorICAg
ICAgICAoYm1hbGxvYzo6YWxpZ25vZik6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFp
dHM6OmV4Y2hhbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZFB0clRyYWl0czo6c3dhcCk6
CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OnVud3JhcCk6CisgICAgICAgICog
Ym1hbGxvYy9TY2F2ZW5nZXIuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpTY2F2
ZW5nZXIpOgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmg6CisgICAgICAgICogYm1hbGxv
Yy9WTUhlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjpWTUhlYXApOgorICAgICAg
ICAqIGJtYWxsb2MvVk1IZWFwLmg6CisgICAgICAgICogYm1hbGxvYy9ab25lLmNwcDoKKyAgICAg
ICAgKGJtYWxsb2M6OlpvbmU6OlpvbmUpOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5oOgorCiAy
MDIwLTAxLTE0ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KIAogICAg
ICAgICBbYm1hbGxvY10gQ2FsY3VsYXRlIExpbmVNZXRhZGF0YSBmb3Igc3BlY2lmaWMgVk0gcGFn
ZSBzaXplIGluIGNvbXBpbGUgdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAppbmRleCAzMGRiYzM0NWI0
OTI1ZmUxMWY2ZjNkNjc3NGUyY2Y5N2ZjZDZkNWUzLi42YzZiN2E1MDVmOWYxMGM3ZWFhYjVlN2Ez
NDc5MjY1ZDEyZTc4YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dApAQCAtMTEyLDYgKzExMiw3IEBA
IHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxvYy9NdXRleC5oCiAgICAgYm1h
bGxvYy9PYmplY3QuaAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5oCisgICAgYm1hbGxvYy9QYWNr
ZWQuaAogICAgIGJtYWxsb2MvUGVySGVhcEtpbmQuaAogICAgIGJtYWxsb2MvUGVyUHJvY2Vzcy5o
CiAgICAgYm1hbGxvYy9QZXJUaHJlYWQuaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxNzNhOTdkYzg1ODkzZTdmYmE5MGU2Mjdh
ODk2M2RhNjYxY2JhNTEuLjNiODVlNzdmZmI4M2E1NDBlNjhmNDMzM2Y2NzUyYWViODNlZGU4MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQlBRDE0QUQyQTIwMjUyOUM3MDA4OTBFM0IgLyogUHJv
Y2Vzc0NoZWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQxNEFEMjgyMDI1MjlCMDAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSAqLzsgfTsKIAkJ
REU4QjEzQjMyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBC
Vk1UYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMxRTc0ODAyMjM4Q0E1QzAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMUU3NDdGMjIzOENBNUIw
MDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOEQ4NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tl
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyOEQ4
NEMyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQTQxM0M5MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29T
aGFyZWRQYWdlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNBNDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNG
MjQ0MDIyMjVEMkMwMTAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAv
KiBJc29TaGFyZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTNGMjQ0MDQyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDMy
MjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwICovOyB9OwpAQCAtMjk1LDYgKzI5
Niw3IEBACiAJCUFEMTRBRDI4MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQcm9jZXNzQ2hlY2subW07IHBh
dGggPSBibWFsbG9jL1Byb2Nlc3NDaGVjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREU4QjEzQjIyMUNDNUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QlZNVGFncy5oOyBwYXRoID0gYm1hbGxvYy9CVk1UYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0YXRpY1BlclByb2Nlc3MuaDsgcGF0
aCA9IGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFBhY2tlZC5oOyBwYXRoID0gYm1hbGxvYy9QYWNrZWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBNDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElz
b1NoYXJlZFBhZ2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElz
b1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBD
MyAvKiBJc29TaGFyZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElz
b1NoYXJlZFBhZ2UuaDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0YyNDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVk
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQ
YWdlLmNwcDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MzIsNiArNTM0LDcgQEAKIAkJCQkxNEM4OTkyQTFDQzQ4NUU3MDAy
N0EwNTcgLyogTWFwLmggKi8sCiAJCQkJMTQzQ0I4MUExOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4
LmNwcCAqLywKIAkJCQkxNDNDQjgxQjE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguaCAqLywKKwkJ
CQlFMzI4RDg0QzIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8sCiAJCQkJMEY1QkYxNDgx
RjIyQThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggKi8sCiAJCQkJMEYyNkE3QTQyMDU0ODMw
RDAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwICovLAogCQkJCTE0NDQ2QTA3MTdBNjFGQTQwMEY5
RUExRCAvKiBQZXJQcm9jZXNzLmggKi8sCkBAIC02NDgsNiArNjUxLDcgQEAKIAkJCQkxNDNDQjgx
RDE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFG
MUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkz
MThGNDhEMEYwMDk1MDcwMiAvKiBPYmplY3RUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4
RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVC
RjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyVGhyZWFkLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCmluZGV4IDkwYTI1NWFkYjdlNzEyMmY5MGFk
YzYyYWUwNjNkNTA1NjAzMjhiNzIuLmQyMmYzY2UwNTQ0OTVkMDJjMGM1NDkzM2RkMThhNzFmODcw
NzAwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxj
bGltaXRzPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRl
IDxsaW1pdHM+CkBAIC0xOTMsNiArMTk0LDMxIEBAIGJvb2wgZmluZEJpdEluV29yZChUIHdvcmQs
IHNpemVfdCYgaW5kZXgsIHNpemVfdCBlbmRJbmRleCwgYm9vbCB2YWx1ZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHVuc2lnbmVkIGN0
ekNvbnN0ZXhwcihUIHZhbHVlKQoreworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0g
c2l6ZW9mKFQpICogQ0hBUl9CSVQ7CisKKyAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0ZDo6bWFr
ZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgICBVVCB1VmFsdWUgPSB2YWx1ZTsKKworICAgIHVuc2ln
bmVkIHplcm9Db3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJpdFNpemU7
IGkrKykgeworICAgICAgICBpZiAodVZhbHVlICYgMSkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIHplcm9Db3VudCsrOworICAgICAgICB1VmFsdWUgPj49IDE7CisgICAgfQorICAgIHJl
dHVybiB6ZXJvQ291bnQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgdW5z
aWduZWQgZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCit7CisgICAgcmV0dXJuIGN0ekNv
bnN0ZXhwcih0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gQWxn
b3JpdGhtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCmluZGV4IGFmZTllMjAzNDlmYmEw
MTc5MjIwMDE3NzZiYjdkMmNkMjM1MjMyMTcuLmQ3ODRjZjFiZWQwZjI1ZWI2ZjgwMTdjYTY2NTFm
YTQ1NjE4MGRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3Jt
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMjMwLDYgKzIz
MCw0NSBAQAogCiAjZW5kaWYgLyogQVJNICovCiAKKworI2lmIEJDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkKKy8qIF9fTFA2NF9fIGlzIG5vdCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mgc2luY2Ug
aXQgdXNlcyBMTFA2NC4gVXNpbmcgX19TSVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIuICovCisj
aWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDgKKyNkZWZpbmUgQkNQVV9BRERSRVNTNjQgMQorI2Vs
aWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDQKKyNkZWZpbmUgQkNQVV9BRERSRVNTMzIgMQorI2Vs
c2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIKKyNlbmRpZgorI2Vsc2UKKyNl
cnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKworI2lmIEJD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJ
R19FTkRJQU5fXworI2RlZmluZSBCQ1BVX0JJR19FTkRJQU4gMQorI2VsaWYgX19CWVRFX09SREVS
X18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKyNkZWZpbmUgQkNQVV9MSVRUTEVfRU5ESUFO
IDEKKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfUERQX0VORElBTl9fCisjZGVmaW5l
IEJDUFVfTUlERExFX0VORElBTiAxCisjZWxzZQorI2Vycm9yICJVbmtub3duIGVuZGlhbiIKKyNl
bmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisj
ZW5kaWYKKworI2lmIEJDUFUoQUREUkVTUzY0KQorI2lmIEJPUyhEQVJXSU4pICYmIEJDUFUoQVJN
NjQpCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCAzNgorI2Vsc2UKKy8qIFdl
IHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGVmZmVjdGl2ZSBhZGRyZXNzIHdpZHRoIGlzIDw9IDQ4IGlu
IDY0Yml0IGFyY2hpdGVjdHVyZXMgKGUuZy4gTmFOIGJveGluZykuICovCisjZGVmaW5lIEJPU19F
RkZFQ1RJVkVfQUREUkVTU19XSURUSCA0OAorI2VuZGlmCisjZWxzZQorI2RlZmluZSBCT1NfRUZG
RUNUSVZFX0FERFJFU1NfV0lEVEggMzIKKyNlbmRpZgorCiAjZGVmaW5lIEJBVFRSSUJVVEVfUFJJ
TlRGKGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykgX19hdHRyaWJ1dGVfXygo
X19mb3JtYXRfXyhwcmludGYsIGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykp
KQogCiAjaWYgQlBMQVRGT1JNKE1BQykgfHwgQlBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAKaW5kZXggN2E2NjdhN2RkNmI1ZTgxY2U2NDc5MTFlODhm
YjE2OTFlODQ2ZGYxOS4uMmM5ZjViNDU4MGFkMTRmYzg2MGIxNmZmNWE2OTljNmEwM2VlMzY0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcApAQCAtNDAsNyArNDAsNyBAQCBERUZJ
TkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoRGVidWdIZWFwKTsKIAogI2lmIEJPUyhEQVJX
SU4pCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVi
dWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBt
X3pvbmUobWFsbG9jX2NyZWF0ZV96b25lKDAsIDApKQogICAgICwgbV9wYWdlU2l6ZSh2bVBhZ2VT
aXplKCkpCiB7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGVidWdIZWFwOjpkdW1wKCkKIAogI2Vs
c2UKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitEZWJ1
Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1f
cGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9EZWJ1Z0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgK
aW5kZXggOTU4YTIyMDkwYTQxNDA3Y2U2MDhiZGQ0YTFmYTEyYjhmZmJhNTEwYi4uOWRiODU1MjNi
ZWU3NzNhZjE4YTE2Yjk4MDViMTA5M2JlOTExYzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVn
SGVhcC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICAgICAKIGNsYXNz
IERlYnVnSGVhcCA6IHByaXZhdGUgU3RhdGljUGVyUHJvY2VzczxEZWJ1Z0hlYXA+IHsKIHB1Ymxp
YzoKLSAgICBEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIERlYnVnSGVh
cChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgdm9pZCogbWFsbG9j
KHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CiAgICAgdm9pZCogbWVtYWxpZ24oc2l6ZV90IGFsaWdu
bWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVy
cmVkVHJpZ2dlci5oCmluZGV4IGIyNzZhMmMwZTA2ZTNhZjczNzIwYjdjN2FjZjc0NjRlZjRkMTMw
YjcuLjI5ZmIxOTc2OWVkYjlkZGIwYjRjMWU2ZDA3NmRkNWE1OTM2NTM0ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJJc29QYWdlVHJpZ2dlci5oIgorI2luY2x1ZGUgIk11dGV4Lmgi
CisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtMzcsMTAgKzM5
LDEwIEBAIGNsYXNzIERlZmVycmVkVHJpZ2dlciB7CiAgICAgRGVmZXJyZWRUcmlnZ2VyKCkgeyB9
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgZGlkQmVjb21l
KElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+Ci0gICAgdm9pZCBoYW5kbGVEZWZlcnJhbChJc29QYWdlPENvbmZpZz4mKTsK
KyAgICB2b2lkIGhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJ
c29QYWdlPENvbmZpZz4mKTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0JlZW5EZWZl
cnJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVy
cmVkVHJpZ2dlcklubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmln
Z2VySW5saW5lcy5oCmluZGV4IDA5Y2ZjODU3N2ZhYWY4MTJiMWZjZjlhMzQ0NTNiNGNiZDBiY2Rl
MzYuLjcxZWE3MjY4YmIxY2YyYzdhZGI0YWU2MDM3ZjM2NDJmYTBjNzI3ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCkBAIC0zMiwyMiAr
MzIsMjIgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTxJc29QYWdlVHJpZ2dlciB0
cmlnZ2VyPgogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBEZWZlcnJlZFRyaWdnZXI8
dHJpZ2dlcj46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVk
VHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
IGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIGlmIChwYWdlLmlzSW5Vc2VG
b3JBbGxvY2F0aW9uKCkpCiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gdHJ1ZTsKICAgICBl
bHNlCi0gICAgICAgIHBhZ2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0cmlnZ2VyKTsK
KyAgICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFnZSwgdHJpZ2dl
cik7CiB9CiAKIHRlbXBsYXRlPElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+Ci12b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6aGFuZGxlRGVmZXJy
YWwoSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46
OmhhbmRsZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNv
UGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIFJFTEVBU0VfQkFTU0VSVCghcGFnZS5pc0luVXNl
Rm9yQWxsb2NhdGlvbigpKTsKICAgICAKICAgICBpZiAobV9oYXNCZWVuRGVmZXJyZWQpIHsKLSAg
ICAgICAgcGFnZS5kaXJlY3RvcnkoKS5kaWRCZWNvbWUoJnBhZ2UsIHRyaWdnZXIpOworICAgICAg
ICBwYWdlLmRpcmVjdG9yeSgpLmRpZEJlY29tZShsb2NrZXIsICZwYWdlLCB0cmlnZ2VyKTsKICAg
ICAgICAgbV9oYXNCZWVuRGVmZXJyZWQgPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRW52aXJvbm1lbnQuY3BwCmluZGV4IDI1NzRiMjM5ZjNhMGZkYzY0OTE3ODZkMzlkMzU3
MDE0ZWIxMjA3NzkuLjg3N2E2YzI5ZTVmN2QzOGM5ZmJlMjFhMjFmNzUwNDBhYjY5MTdkNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAg
c3RhdGljIGJvb2wgaXNOYW5vTWFsbG9jRW5hYmxlZCgpCiAKIERFRklORV9TVEFUSUNfUEVSX1BS
T0NFU1NfU1RPUkFHRShFbnZpcm9ubWVudCk7CiAKLUVudmlyb25tZW50OjpFbnZpcm9ubWVudChz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0Vudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1
dGVJc0RlYnVnSGVhcEVuYWJsZWQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1l
bnQuaAppbmRleCBhNTYyNTZlYmNhOGU5ZDRmY2U5ZGI0MzUyZGUyMGEyNzJmNzM0OTVjLi43YjI4
ZGU5MjczZTAzNGRiNGY2NzlhMDI1YTliMjkwYWJmZmUwYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9FbnZpcm9ubWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
Y2xhc3MgRW52aXJvbm1lbnQgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxFbnZpcm9ubWVudD4g
ewogcHVibGljOgotICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOworICAgIEJFWFBPUlQgRW52aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOwogICAgIAogICAgIGJvb2wgaXNEZWJ1Z0hlYXBFbmFibGVkKCkgeyByZXR1cm4gbV9pc0Rl
YnVnSGVhcEVuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9H
aWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAppbmRleCAz
Y2NhMmQ1NGU2NjNkNTQyMjA1NTAxMDk3MWZkOTNlN2VmYmE3MTExLi40MjAxOTU5ZjYwYmU2MjEw
NTJiMTMwZDNlOTY3NWI5ZmIwMDczNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ2FsbGJhY2sgewogbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCiBzdHJ1Y3QgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyA6IHB1YmxpYyBTdGF0aWNQZXJQ
cm9jZXNzPFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M+IHsKLSAgICBQcmltaXRpdmVEaXNhYmxl
Q2FsbGJhY2tzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KKyAgICBQcmltaXRpdmVEaXNh
YmxlQ2FsbGJhY2tzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KICAgICAKICAg
ICBWZWN0b3I8R2lnYWNhZ2U6OkNhbGxiYWNrPiBjYWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5jcHAKaW5kZXggMTE4OWI4Nzc4NDQ3NWUwN2UzYWZiY2EwOWIzMzEwYjMxYmRjMTUwMS4u
M2FhZTQzYTIxN2FlM2IxZDFkY2NhZDBlNzE1ZmRjNDFmODM5NjVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHNpemVfdCBIZWFwOjpnaWdhY2FnZVNpemUoKQog
ICAgIHJldHVybiBHaWdhY2FnZTo6c2l6ZShnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9CiAKLXNp
emVfdCBIZWFwOjpmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK3NpemVf
dCBIZWFwOjpmcmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsK
ICAgICByZXR1cm4gbV9mcmVlYWJsZU1lbW9yeTsKIH0KQEAgLTkxLDE0ICs5MSwxNCBAQCBzaXpl
X3QgSGVhcDo6Zm9vdHByaW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAKLXZvaWQg
SGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCit2
b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKQogewogICAgIG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwogICAgIG1f
aGFzUGVuZGluZ0RlY29tbWl0cyA9IGZhbHNlOwogICAgIG1fY29uZGl0aW9uLm5vdGlmeV9hbGwo
KTsKIH0KIAotdm9pZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9p
ZCBIZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IExhcmdlUmFuZ2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIG1f
Zm9vdHByaW50IC09IHJhbmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CiAgICAgbV9mcmVlYWJsZU1l
bW9yeSAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwpAQCAtMTE0LDkgKzExNCw5IEBAIHZv
aWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJn
ZVJhbmdlJiByYW5nZSwgQnVsa0RlCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12
b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNv
bW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiAjZWxzZQotdm9p
ZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21t
aXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQordm9pZCBIZWFwOjpz
Y2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQm
IGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQogI2VuZGlmCiB7CiAgICAg
Zm9yIChhdXRvJiBsaXN0IDogbV9mcmVlUGFnZXMpIHsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IEhlYXA6OnNjYXZlbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1p
dCYgZGVjb21taXR0ZXIsIHNpegogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9p
ZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBs
b2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGln
aFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21t
aXQmIGRlY29tbWl0dGVyKQogewogICAgIHZvaWQqIG5ld0hpZ2hXYXRlck1hcmsgPSBudWxscHRy
OwogICAgIGZvciAoTGFyZ2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuaAppbmRleCBkYjMyNDUzNjg3ZmI1NmU2MDAwODNiZWUxMGJhNTRmMDgyYzNkNjkzLi41
OWM3NWYyN2I5Yzc5ODUwMGRkZGRmYjVhM2I2MzRiY2M4ZDJjMWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuaApAQCAtNzYsMTQgKzc2LDE0IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgc2hyaW5rTGFy
Z2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7CiAKICNp
ZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFy
ayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7Ci0gICAgdm9pZCBzY2F2
ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBz
Y2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVs
a0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiwgQnVsa0RlY29tbWl0Jik7CiAjZWxzZQotICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMp
OworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtE
ZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOwogI2VuZGlmCi0gICAgdm9pZCBz
Y2F2ZW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBm
cmVlZCwgc2l6ZV90IGdvYWwpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsK
IAotICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7Cisg
ICAgc2l6ZV90IGZyZWVhYmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsK
ICAgICBzaXplX3QgZm9vdHByaW50KCk7CiAKICAgICB2b2lkIGV4dGVybmFsRGVjb21taXQodm9p
ZCogcHRyLCBzaXplX3QpOwpAQCAtOTEsMTAgKzkxLDEwIEBAIGNsYXNzIEhlYXAgewogICAgIHZv
aWQgZXh0ZXJuYWxDb21taXQodm9pZCogcHRyLCBzaXplX3QpOwogICAgIHZvaWQgZXh0ZXJuYWxD
b21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBwdHIsIHNpemVfdCk7CiAKLSAg
ICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsK
KyAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQg
ZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJh
bmdlJiwgQnVsa0RlY29tbWl0Jik7CiAKICAgICBzdHJ1Y3QgTGFyZ2VPYmplY3RIYXNoIHsKICAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCoga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcENvbnN0YW50cy5jcHAKaW5kZXggZmNhOWZjZjc4ZDczM2YzOGJiYmY5MmY3MTI1Y2Uw
OTYyNWZmNWEyNS4uZjM4NGE1NGM2YThmYmZkNTk3YzQ0OGIxMDZlNDdmOTM0M2I5NTI3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0zMCw3ICszMCw3IEBA
IG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdF
KEhlYXBDb25zdGFudHMpOwogCi1IZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKQorSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsgdm1QYWdl
U2l6ZVBoeXNpY2FsKCkgfQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNpemVQaHlz
aWNhbCA+PSBzbWFsbFBhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcENvbnN0YW50cy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmgKaW5kZXggMDRlNzNkMGNjODAwNTQ1ZTcwMzIxYjJjYTQ1M2E0ZmFlZWIxYTAyNi4uMGViYzk1
MGU5ZDYyZjQ5Y2ZiZWFiYzg5ZTllNGNiMTRmOWNhZDA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwQ29uc3RhbnRzLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2Mgewog
CiBjbGFzcyBIZWFwQ29uc3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SGVhcENvbnN0
YW50cz4gewogcHVibGljOgotICAgIEhlYXBDb25zdGFudHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOworICAgIEhlYXBDb25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwog
ICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7CiAKICAgICBpbmxpbmUgc2l6ZV90IHBhZ2VD
bGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGFzc2VzW3NpemVD
bGFzc107IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9y
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oCmluZGV4IGEwZjcwODBj
YmIxYzIxNzE3NTdjM2Q2ZGY3NDc1MmVmNTFiZDhkMTcuLjNiYTA4YWEyYjY4YjJjNDM4ODMwMDBi
ZjIxNDQxMjFlY2ZjZjQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3IuaApA
QCAtNDAsMTMgKzQwLDEyIEBAIGNsYXNzIElzb0FsbG9jYXRvciB7CiAgICAgSXNvQWxsb2NhdG9y
KElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICB+SXNvQWxsb2NhdG9yKCk7CiAgICAgCi0gICAg
dm9pZCogYWxsb2NhdGUoYm9vbCBhYm9ydE9uRmFpbHVyZSk7Ci0gICAgdm9pZCBzY2F2ZW5nZSgp
OworICAgIHZvaWQqIGFsbG9jYXRlKElzb0hlYXBJbXBsPENvbmZpZz4mLCBib29sIGFib3J0T25G
YWlsdXJlKTsKKyAgICB2b2lkIHNjYXZlbmdlKElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICAK
IHByaXZhdGU6Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpOwor
ICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhJc29IZWFwSW1wbDxDb25maWc+JiwgYm9vbCBhYm9ydE9u
RmFpbHVyZSk7CiAgICAgCi0gICAgSXNvSGVhcEltcGw8Q29uZmlnPiogbV9oZWFwIHsgbnVsbHB0
ciB9OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CiAgICAgSXNvUGFnZTxDb25maWc+KiBtX2N1
cnJlbnRQYWdlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29B
bGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggNTQ1NWZmZGNmMmQwMzIwZjMzZjM2YzczMTFmOTYyZWY3
Yzc4MjQ3YS4uZDc5ZjQyNDEzZDc5NTExMzc2ZDE3ZWU3OTAzODMzMzc2M2JhYzQwMSAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTM0LDggKzM0
LDcgQEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
SXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+JiBo
ZWFwKQotICAgIDogbV9oZWFwKCZoZWFwKQorSXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9j
YXRvcihJc29IZWFwSW1wbDxDb25maWc+JikKIHsKIH0KIApAQCAtNDUsMzYgKzQ0LDM2IEBAIElz
b0FsbG9jYXRvcjxDb25maWc+Ojp+SXNvQWxsb2NhdG9yKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgotdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlKGJvb2wgYWJv
cnRPbkZhaWx1cmUpCit2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUoSXNvSGVh
cEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHZvaWQqIHJlc3VsdCA9IG1fZnJl
ZUxpc3QuYWxsb2NhdGU8Q29uZmlnPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3coYWJvcnRPbkZhaWx1cmUpOworICAgICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvdyhoZWFwLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgICAgIH0pOwog
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQg
JXAgb2Ygc2l6ZSAldVxuIiwgbV9oZWFwLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0U2l6ZSk7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IGFsbG9jYXRlZCAlcCBvZiBzaXplICV1XG4iLCAm
aGVhcCwgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUJOT19JTkxJTkUgdm9pZCogSXNvQWxsb2Nh
dG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElO
RSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KElzb0hlYXBJbXBsPENv
bmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiBsb2NrZXIobV9oZWFwLT5sb2NrKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcihoZWFwLmxvY2spOwogCi0gICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlvbk1vZGUg
PSBtX2hlYXAtPnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CisgICAgQWxsb2NhdGlvbk1vZGUgYWxs
b2NhdGlvbk1vZGUgPSBoZWFwLnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgaWYgKGFsbG9j
YXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpTaGFyZWQpIHsKICAgICAgICAgaWYgKG1fY3Vy
cmVudFBhZ2UpIHsKLSAgICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1f
ZnJlZUxpc3QpOworICAgICAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9j
a2VyLCBtX2ZyZWVMaXN0KTsKICAgICAgICAgICAgIG1fY3VycmVudFBhZ2UgPSBudWxscHRyOwog
ICAgICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBtX2hlYXAtPmFsbG9jYXRlRnJvbVNoYXJlZChsb2NrZXIsIGFib3J0T25GYWlsdXJlKTsKKyAg
ICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGVGcm9tU2hhcmVkKGxvY2tlciwgYWJvcnRPbkZhaWx1
cmUpOwogICAgIH0KIAogICAgIEJBU1NFUlQoYWxsb2NhdGlvbk1vZGUgPT0gQWxsb2NhdGlvbk1v
ZGU6OkZhc3QpOwogICAgIAotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0g
bV9oZWFwLT50YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZp
Zz4gcmVzdWx0ID0gaGVhcC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIGlmIChyZXN1
bHQua2luZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OlN1Y2Nlc3MpIHsKICAgICAgICAgUkVMRUFTRV9C
QVNTRVJUKHJlc3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2luZDo6T3V0T2ZNZW1vcnkpOwogICAg
ICAgICBSRUxFQVNFX0JBU1NFUlQoIWFib3J0T25GYWlsdXJlKTsKQEAgLTgyLDIwICs4MSwyMCBA
QCBCTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZVNsb3coYm9v
bCBhYm9ydE9uRmFpbHVyZSkKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0g
ICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAg
ICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAg
IAogICAgIG1fY3VycmVudFBhZ2UgPSByZXN1bHQucGFnZTsKLSAgICBtX2ZyZWVMaXN0ID0gbV9j
dXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKCk7CisgICAgbV9mcmVlTGlzdCA9IG1fY3VycmVu
dFBhZ2UtPnN0YXJ0QWxsb2NhdGluZyhsb2NrZXIpOwogICAgIAogICAgIHJldHVybiBtX2ZyZWVM
aXN0LmFsbG9jYXRlPENvbmZpZz4oW10gKCkgeyBCQ1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0p
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0FsbG9jYXRvcjxDb25m
aWc+OjpzY2F2ZW5nZSgpCit2b2lkIElzb0FsbG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZShJc29I
ZWFwSW1wbDxDb25maWc+JiBoZWFwKQogewogICAgIGlmIChtX2N1cnJlbnRQYWdlKSB7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG1faGVhcC0+bG9jayk7Ci0gICAgICAg
IG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOworICAgICAgICBtX2N1cnJlbnRQ
YWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgICAgICBtX2N1cnJl
bnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDIz
ZjMyYTNkODliMjVkMmM1N2UxYTM4MmJkZTAyNjg4NWE0ZTNkOWQuLjAzMmZiNzcxOWFhYmIwMzhi
MzgyMjk0NzM5MGJkNDg4YTg0N2ZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29EZWFsbG9jYXRvcklubGluZXMuaApAQCAtNzYsNyArNzYsNyBAQCBCTk9fSU5MSU5FIHZvaWQg
SXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UoKQogICAgIHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4gbG9ja2VyKCptX2xvY2spOwogICAgIAogICAgIGZvciAodm9pZCogcHRyIDogbV9vYmpl
Y3RMb2cpCi0gICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVlKHB0cik7
CisgICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVlKGxvY2tlciwgcHRy
KTsKICAgICBtX29iamVjdExvZy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29E
aXJlY3RvcnkuaAppbmRleCBiYWZlYjNlZTAzMDU5ZTg3ZjliMDVkNzczN2E2YjI1OTBmZmViZGY3
Li5lNzJiMmQxNjEyMWI3M2FmMzFlMGZkN2MxMzJhNWM5NGFmZGRmN2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvRGlyZWN0b3J5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRz
LmgiCiAjaW5jbHVkZSAiRWxpZ2liaWxpdHlSZXN1bHQuaCIKICNpbmNsdWRlICJJc29QYWdlLmgi
CisjaW5jbHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBi
bWFsbG9jIHsKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgSXNvRGlyZWN0b3J5QmFzZSA6IHB1Ymxp
YyBJc29EaXJlY3RvcnlCYXNlQmFzZSB7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYg
aGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNv
bWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZp
Zz4qLCBJc29QYWdlVHJpZ2dlcikgPSAwOwogICAgIAogcHJvdGVjdGVkOgogICAgIElzb0hlYXBJ
bXBsPENvbmZpZz4mIG1faGVhcDsKQEAgLTY0LDkgKzY1LDkgQEAgY2xhc3MgSXNvRGlyZWN0b3J5
IDogcHVibGljIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiB7CiAgICAgCiAgICAgLy8gRmluZCB0
aGUgZmlyc3QgcGFnZSB0aGF0IGlzIGVsaWdpYmxlIGZvciBhbGxvY2F0aW9uIGFuZCByZXR1cm4g
aXQuIE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubwogICAgIC8vIHN1Y2ggdGhpbmcuIE1h
eSBhbGxvY2F0ZSBhIG5ldyBwYWdlIGlmIHdlIGhhdmUgYW4gdW5jb21taXR0ZWQgcGFnZS4KLSAg
ICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxp
Z2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+Jik7CiAgICAgCi0gICAgdm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+
KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikg
b3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBmcm9tIGEgYnVsayBkZWNv
bW1pdCBmdW5jdGlvbiBpbiB0aGUgU2NhdmVuZ2VyLCBzbyBubyBsb2NrcyBhcmUgaGVsZC4gVGhp
cyBmdW5jdGlvbgogICAgIC8vIG5lZWRzIHRvIGdldCB0aGUgaGVhcCBsb2NrLgpAQCAtNzQsMjMg
Kzc1LDIzIEBAIGNsYXNzIElzb0RpcmVjdG9yeSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlPENv
bmZpZz4gewogICAgIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgZW1wdHkgYW5kIGNvbW1pdHRl
ZCBwYWdlcywgYW5kIHB1dCB0aGVtIGludG8gdGhlIHZlY3Rvci4gVGhpcyBhbHNvIHJlY29yZHMg
dGhlCiAgICAgLy8gcGFnZXMgYXMgYmVpbmcgZGVjb21taXR0ZWQuIEl0J3MgdGhlIGNhbGxlcidz
IGpvYiB0byBkbyB0aGUgYWN0dWFsIGRlY29tbWl0dGluZy4KLSAgICB2b2lkIHNjYXZlbmdlKFZl
Y3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwogI2lmIEJVU0Uo
UEFSVElBTF9TQ0FWRU5HRSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3Rv
cjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmso
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYp
OwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFj
aENvbW1pdHRlZFBhZ2UoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBzY2F2ZW5nZVBhZ2Uoc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNv
bW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+Jiwgc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAorICAgIHN0ZDo6YXJy
YXk8UGFja2VkQWxpZ25lZFB0cjxJc29QYWdlPENvbmZpZz4sIElzb1BhZ2U8Q29uZmlnPjo6cGFn
ZVNpemU+LCBudW1QYWdlcz4gbV9wYWdlcyB7IH07CiAgICAgLy8gTk9URTogSSBzdXBwb3NlIHRo
YXQgdGhpcyBjb3VsZCBiZSB0d28gYml0dmVjdG9ycy4gQnV0IGZyb20gd29ya2luZyBvbiB0aGUg
R0MsIEkgZm91bmQgdGhhdCB0aGUKICAgICAvLyBudW1iZXIgb2YgYml0dmVjdG9ycyBkb2VzIG5v
dCBtYXR0ZXIgYXMgbXVjaCBhcyB3aGV0aGVyIG9yIG5vdCB0aGV5IG1ha2UgaW50dWl0aXZlIHNl
bnNlLgogICAgIEJpdHM8bnVtUGFnZXM+IG1fZWxpZ2libGU7CiAgICAgQml0czxudW1QYWdlcz4g
bV9lbXB0eTsKICAgICBCaXRzPG51bVBhZ2VzPiBtX2NvbW1pdHRlZDsKLSAgICBzdGQ6OmFycmF5
PElzb1BhZ2U8Q29uZmlnPiosIG51bVBhZ2VzPiBtX3BhZ2VzOwogICAgIHVuc2lnbmVkIG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyAwIH07CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdF
KQogICAgIHVuc2lnbmVkIG1faGlnaFdhdGVybWFyayB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKaW5kZXggMGIxYTFlYzA1YTA3NDE0MDA0MmJi
NzZlNzRiMTA4ZmZlYjVmOWIyNy4uODU1NDJkZjk4NTI0NThlMzVlNDBjMDk5ZGJlMzIyY2I4OWM3
NDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxp
bmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgK
QEAgLTM5LDEyICszOSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBh
c3NlZE51bVBhZ2VzPgogSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29E
aXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKICAgICA6IElzb0RpcmVjdG9yeUJh
c2U8Q29uZmlnPihoZWFwKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhZ2VzOyBpLS07
KQotICAgICAgICBtX3BhZ2VzW2ldID0gbnVsbHB0cjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZp
Zz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJs
ZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6dGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCiB7CiAgICAgdW5zaWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0
ZWQpLmZpbmRCaXQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1ZSk7CiAgICAgbV9m
aXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKQEAgLTU5LDcgKzU3LDcgQEAg
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OnRha2VGaXJzdEVsaWdpYmwKICAgICBTY2F2ZW5nZXImIHNjYXZlbmdlciA9ICpTY2F2
ZW5nZXI6OmdldCgpOwogICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmcoKTsKICAgICAKLSAg
ICBJc29QYWdlPENvbmZpZz4qIHBhZ2UgPSBtX3BhZ2VzW3BhZ2VJbmRleF07CisgICAgSXNvUGFn
ZTxDb25maWc+KiBwYWdlID0gbV9wYWdlc1twYWdlSW5kZXhdLmdldCgpOwogICAgIAogICAgIGlm
ICghbV9jb21taXR0ZWRbcGFnZUluZGV4XSkgewogICAgICAgICBzY2F2ZW5nZXIuc2NoZWR1bGVJ
ZlVuZGVyTWVtb3J5UHJlc3N1cmUoSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKQEAgLTkzLDcgKzkx
LDcgQEAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywg
cGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiBwYWdlLCBJc29QYWdl
VHJpZ2dlciB0cmlnZ2VyKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdl
cz46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1Bh
Z2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9
IHBhZ2UtPmluZGV4KCk7CkBAIC0xMDMsNyArMTAxLDcgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29u
ZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElz
b1AKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBiZWNvbWUgZWxpZ2li
bGUuXG4iLCB0aGlzLCBwYWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdlSW5kZXhdID0gdHJ1
ZTsKICAgICAgICAgbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6bWluKG1fZmly
c3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHBhZ2VJbmRleCk7Ci0gICAgICAgIHRoaXMtPm1faGVh
cC5kaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZCh0aGlzKTsKKyAgICAgICAgdGhpcy0+bV9o
ZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGxvY2tlciwgdGhpcyk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAgICAgICAgaWYgKHZl
cmJvc2UpCkBAIC0xMjUsMjggKzEyMywyOCBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBh
c3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQodW5zaWduZWQgaW5kZXgpCiAgICAgLy8gc3lzY2Fs
bCBpdHNlbGYgKHdoaWNoIGhhcyB0byBkbyBtYW55IGhhcmQgdGhpbmdzKS4KICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5tX2hlYXAubG9jayk7CiAgICAgQkFTU0VSVCgh
IW1fY29tbWl0dGVkW2luZGV4XSk7Ci0gICAgdGhpcy0+bV9oZWFwLmlzTm9Mb25nZXJGcmVlYWJs
ZShtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hl
YXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNbaW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6
cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVkW2luZGV4XSA9IGZhbHNlOwogICAgIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0
dGVkLCBpbmRleCk7Ci0gICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1p
dGVkKHRoaXMpOwotICAgIHRoaXMtPm1faGVhcC5kaWREZWNvbW1pdChtX3BhZ2VzW2luZGV4XSwg
SXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2li
bGVPckRlY29tbWl0ZWQobG9ja2VyLCB0aGlzKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlkRGVjb21t
aXQobV9wYWdlc1tpbmRleF0uZ2V0KCksIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElz
b0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKHNpemVfdCBp
bmRleCwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVj
dG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYg
ZGVjb21taXRzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcGFnZSBpcyBub3cgb2Zm
IGxpbWl0cy4KICAgICBtX2VtcHR5W2luZGV4XSA9IGZhbHNlOwogICAgIG1fZWxpZ2libGVbaW5k
ZXhdID0gZmFsc2U7Ci0gICAgZGVjb21taXRzLnB1c2goRGVmZXJyZWREZWNvbW1pdCh0aGlzLCBt
X3BhZ2VzW2luZGV4XSwgaW5kZXgpKTsKKyAgICBkZWNvbW1pdHMucHVzaChEZWZlcnJlZERlY29t
bWl0KHRoaXMsIG1fcGFnZXNbaW5kZXhdLmdldCgpLCBpbmRleCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdl
cz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9y
PERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2NvbW1p
dHRlZCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgICAgIHNjYXZlbmdlUGFnZShpbmRleCwgZGVjb21taXRzKTsKKyAgICAgICAgICAgIHNjYXZl
bmdlUGFnZShsb2NrZXIsIGluZGV4LCBkZWNvbW1pdHMpOwogICAgICAgICB9KTsKICNpZiBCVVNF
KFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgbV9oaWdoV2F0ZXJtYXJrID0gMDsKQEAgLTE1NSwxMiAr
MTUzLDEyIEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2
ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlCiAKICNpZiBCVVNFKFBBUlRJQUxfU0NB
VkVOR0UpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2Vz
Pgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9I
aWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJ
c29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJt
YXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVk
RGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2NvbW1pdHRlZCkuZm9y
RWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGlm
IChpbmRleCA+IG1faGlnaFdhdGVybWFyaykKLSAgICAgICAgICAgICAgICBzY2F2ZW5nZVBhZ2Uo
aW5kZXgsIGRlY29tbWl0cyk7CisgICAgICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGxvY2tlciwg
aW5kZXgsIGRlY29tbWl0cyk7CiAgICAgICAgIH0pOwogICAgIG1faGlnaFdhdGVybWFyayA9IDA7
CiB9CkBAIC0xNjgsMTEgKzE2NiwxMSBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3Nl
ZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycgogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+
Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIG1fY29tbWl0
dGVkLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Ci0gICAgICAg
ICAgICBmdW5jKCptX3BhZ2VzW2luZGV4XSk7CisgICAgICAgICAgICBmdW5jKCoobV9wYWdlc1tp
bmRleF0uZ2V0KCkpKTsKICAgICAgICAgfSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvSGVhcEltcGwuY3BwCmluZGV4IDY5NmQyMmU1N2Y2MjIzZjliOTI5NDJhYjJmMmUwYjA5YWFi
ZDlhODMuLmRkMDg5YTFhYmQ1MjFmZWI0ZDE5Mzc2YmY2Y2NlNzM4N2RlYjU3NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAKIG5hbWVz
cGFjZSBibWFsbG9jIHsKIAotSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2UoKQorSXNv
SGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2UoTXV0ZXgmIGxvY2spCisgICAgOiBsb2NrKGxv
Y2spCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElt
cGwuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaAppbmRleCAwOTUxMWUy
NTdmYmZiZjdjYzA0YjM5NzhjMWVmZTBiZjJiMzRjMmRkLi4wYmFhODA4ODg2Yjc3NjU3ZGI5MzEx
MzQxZmMyZGZjMmM1YmU1NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0hlYXBJbXBsLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSXNvQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSXNv
RGlyZWN0b3J5UGFnZS5oIgogI2luY2x1ZGUgIklzb1RMU0FsbG9jYXRvckVudHJ5LmgiCisjaW5j
bHVkZSAiUGFja2VkLmgiCiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCiAKIG5hbWVzcGFj
ZSBibWFsbG9jIHsKQEAgLTUxLDI3ICs1Miw0OCBAQCBjbGFzcyBCRVhQT1JUIElzb0hlYXBJbXBs
QmFzZSB7CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHZpcnR1YWwgdm9pZCBzY2F2
ZW5nZVRvSGlnaFdhdGVybWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKSA9IDA7CiAjZW5k
aWYKLSAgICB2aXJ0dWFsIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpID0gMDsKLSAgICB2aXJ0dWFs
IHNpemVfdCBmb290cHJpbnQoKSA9IDA7CiAgICAgCiAgICAgdm9pZCBzY2F2ZW5nZU5vdygpOwog
ICAgIHN0YXRpYyB2b2lkIGZpbmlzaFNjYXZlbmdpbmcoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
Jik7CiAKKyAgICB2b2lkIGRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAg
dm9pZCBkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisKKyAgICB2b2lkIGlz
Tm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQgaXNOb0xvbmdl
ckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVzKTsKKworICAgIHNpemVfdCBmcmVlYWJs
ZU1lbW9yeSgpOworICAgIHNpemVfdCBmb290cHJpbnQoKTsKKwogICAgIHZvaWQgYWRkVG9BbGxJ
c29IZWFwcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSXNvSGVhcEltcGxCYXNlKCk7CisgICAgSXNv
SGVhcEltcGxCYXNlKE11dGV4Jik7CiAKICAgICBmcmllbmQgY2xhc3MgSXNvU2hhcmVkUGFnZTsK
ICAgICBmcmllbmQgY2xhc3MgQWxsSXNvSGVhcHM7CiAgICAgCitwdWJsaWM6CisgICAgLy8gSXQn
cyBhbG1vc3QgYWx3YXlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBncmFiIHRoZSBs
b2NrLiBUaGlzIGxvY2sgY29tZXMgZnJvbSB0aGUKKyAgICAvLyAoKlBlclByb2Nlc3M8SXNvVExT
RW50cnlIb2xkZXI8SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9j
ay4gVGhhdCdzIHByZXR0eSB3ZWlyZCwgYW5kIHdlIGRvbid0CisgICAgLy8gdHJ5IHRvIGRpc2d1
aXNlIHRoZSBmYWN0IHRoYXQgaXQncyB3ZWlyZC4gV2Ugb25seSBkbyB0aGF0IGJlY2F1c2UgaGVh
cHMgaW4gdGhlIHNhbWUgc2l6ZSBjbGFzcworICAgIC8vIHNoYXJlIHRoZSBzYW1lIGRlYWxsb2Nh
dG9yIGxvZywgc28gaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZW0gdG8gYWxzbyBzaGFyZSB0aGUgc2Ft
ZSBsb2NrIHRvCisgICAgLy8gYW1vcnRpemUgbG9jayBhY3F1aXNpdGlvbiBjb3N0cy4KKyAgICBN
dXRleCYgbG9jazsKK3Byb3RlY3RlZDoKICAgICBJc29IZWFwSW1wbEJhc2UqIG1fbmV4dCB7IG51
bGxwdHIgfTsKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1fbGFz
dFNsb3dQYXRoVGltZTsKLSAgICBzdGQ6OmFycmF5PHZvaWQqLCBtYXhBbGxvY2F0aW9uRnJvbVNo
YXJlZD4gbV9zaGFyZWRDZWxscyB7IH07CisgICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9Owor
ICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsgMCB9OworI2lmIEVOQUJMRV9QSFlTSUNBTF9Q
QUdFX01BUAorICAgIFBoeXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1hcDsKKyNlbmRpZgor
ICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25lZFB0cjx1aW50OF90LCBibWFsbG9jOjphbGlnbm1l
bnQ+LCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7IH07Citwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZkFsbG9jYXRpb25zRnJvbVNoYXJlZEluT25lQ3lj
bGUgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdmFpbGFibGVTaGFyZWQgeyBtYXhBbGxvY2F0aW9u
RnJvbVNoYXJlZE1hc2sgfTsKICAgICBBbGxvY2F0aW9uTW9kZSBtX2FsbG9jYXRpb25Nb2RlIHsg
QWxsb2NhdGlvbk1vZGU6OkluaXQgfTsKLSAgICAKKyAgICBib29sIG1faXNJbmxpbmVEaXJlY3Rv
cnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgeyB0cnVlIH07CiAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YobV9hdmFpbGFibGVTaGFyZWQpICogOCA+PSBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZCwgIiIp
OwogfTsKIApAQCAtODMsMjEgKzEwNSwxNyBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1
YmxpYyBJc29IZWFwSW1wbEJhc2UgewogcHVibGljOgogICAgIElzb0hlYXBJbXBsKCk7CiAgICAg
Ci0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZSgpOworICAg
IEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAgIC8vIENhbGxiYWNrcyBmcm9tIGRpcmVjdG9y
eS4KLSAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxD
b25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7Ci0gICAgdm9pZCBkaWRCZWNvbWVF
bGlnaWJsZU9yRGVjb21taXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz46Om51bVBhZ2VzPiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29t
bWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcs
IG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJs
ZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5
PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKICAgICAKICAg
ICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2lm
IEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKICAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJr
KFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBzaXpl
X3QgZnJlZWFibGVNZW1vcnkoKSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBmb290cHJpbnQoKSBv
dmVycmlkZTsKLSAgICAKICAgICB1bnNpZ25lZCBhbGxvY2F0b3JPZmZzZXQoKTsKICAgICB1bnNp
Z25lZCBkZWFsbG9jYXRvck9mZnNldCgpOwogCkBAIC0xMDYsNDYgKzEyNCwyNSBAQCBjbGFzcyBJ
c29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogICAgIHVuc2lnbmVk
IG51bUNvbW1pdHRlZFBhZ2VzKCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LSAgICB2b2lkIGZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFj
aERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIC8vIFRo
aXMgaXMgb25seSBhY2N1cmF0ZSB3aGVuIGFsbCB0aHJlYWRzIGFyZSBzY2F2ZW5nZWQuIE90aGVy
d2lzZSBpdCB3aWxsIG92ZXJlc3RpbWF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgot
ICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYpOwotCi0gICAgdm9pZCBkaWRD
b21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotICAgIHZvaWQgZGlkRGVjb21taXQodm9p
ZCogcHRyLCBzaXplX3QgYnl0ZXMpOwotCi0gICAgdm9pZCBpc05vd0ZyZWVhYmxlKHZvaWQqIHB0
ciwgc2l6ZV90IGJ5dGVzKTsKLSAgICB2b2lkIGlzTm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIs
IHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogCiAgICAgQWxsb2NhdGlvbk1vZGUgdXBk
YXRlQWxsb2NhdGlvbk1vZGUoKTsKICAgICB2b2lkKiBhbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwotICAgIAotICAg
IC8vIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZ3Jh
YiB0aGUgbG9jay4gVGhpcyBsb2NrIGNvbWVzIGZyb20gdGhlCi0gICAgLy8gKCpQZXJQcm9jZXNz
PElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPj4+OjpnZXQo
KSktPmxvY2suIFRoYXQncyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAotICAgIC8vIHRyeSB0
byBkaXNndWlzZSB0aGUgZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkgZG8gdGhhdCBiZWNh
dXNlIGhlYXBzIGluIHRoZSBzYW1lIHNpemUgY2xhc3MKLSAgICAvLyBzaGFyZSB0aGUgc2FtZSBk
ZWFsbG9jYXRvciBsb2csIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRvIGFsc28gc2hhcmUg
dGhlIHNhbWUgbG9jayB0bwotICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlzaXRpb24gY29zdHMu
Ci0gICAgTXV0ZXgmIGxvY2s7CiAKIHByaXZhdGU6CisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9y
eVBhZ2U8Q29uZmlnPj4gbV9oZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OworICAgIFBhY2tlZFB0
cjxJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4+IG1fdGFpbERpcmVjdG9yeSB7IG51bGxwdHIgfTsK
KyAgICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkgeyBudWxscHRyIH07CiAgICAgSXNvRGlyZWN0b3J5PENvbmZp
ZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4gbV9pbmxpbmVEaXJlY3Rvcnk7Ci0gICAgSXNv
RGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX2hlYWREaXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAg
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBtX3RhaWxEaXJlY3RvcnkgeyBudWxscHRyIH07Ci0g
ICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9OwotICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5
IHsgMCB9OwotI2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAotICAgIFBoeXNpY2FsUGFnZU1h
cCBtX3BoeXNpY2FsUGFnZU1hcDsKLSNlbmRpZgogICAgIHVuc2lnbmVkIG1fbmV4dERpcmVjdG9y
eVBhZ2VJbmRleCB7IDEgfTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0IHRoZSBoaWdoIHdhdGVy
IG1hcmsgYmVpbmcgemVybyBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRlZCBpbiB0aGUgaW5saW5l
IGRpcmVjdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1bnNpZ25lZCBtX2RpcmVj
dG9yeUhpZ2hXYXRlcm1hcmsgeyAwIH07Ci0gICAgCi0gICAgYm9vbCBtX2lzSW5saW5lRGlyZWN0
b3J5RWxpZ2libGVPckRlY29tbWl0dGVkIHsgdHJ1ZSB9OwotICAgIElzb0RpcmVjdG9yeVBhZ2U8
Q29uZmlnPiogbV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5IHsgbnVsbHB0ciB9
OwotICAgIAogICAgIElzb1RMU0VudHJ5SG9sZGVyPElzb1RMU0FsbG9jYXRvckVudHJ5PENvbmZp
Zz4+IG1fYWxsb2NhdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElt
cGxJbmxpbmVzLmgKaW5kZXggMmE0ZmIyODQzNmIzNThlOTZhMTcwMWI5MTMzNzVhNTMzZWRkYWVk
MC4uOTRlYjNmNGMxNGY4ZTZmN2NiNDdmNWIwM2MzMmM4OTk4ZDU2MWE2MSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCkBAIC0zNCw2NCArMzQsNzAgQEAg
bmFtZXNwYWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiBJc29IZWFw
SW1wbDxDb25maWc+OjpJc29IZWFwSW1wbCgpCi0gICAgOiBsb2NrKCgqUGVyUHJvY2VzczxJc29U
TFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5s
b2NrKQorICAgIDogSXNvSGVhcEltcGxCYXNlKCgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRl
cjxJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrKQogICAgICwg
bV9pbmxpbmVEaXJlY3RvcnkoKnRoaXMpCiAgICAgLCBtX2FsbG9jYXRvcigqdGhpcykKIHsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJ
c29IZWFwSW1wbDxDb25maWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3Vs
dDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlcikKIHsKICAgICBpZiAobV9pc0lubGluZURpcmVj
dG9yeUVsaWdpYmxlT3JEZWNvbW1pdHRlZCkgewotICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxD
b25maWc+IHJlc3VsdCA9IG1faW5saW5lRGlyZWN0b3J5LnRha2VGaXJzdEVsaWdpYmxlKCk7Cisg
ICAgICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9pbmxpbmVEaXJlY3Rv
cnkudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKICAgICAgICAgaWYgKHJlc3VsdC5raW5kID09
IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkKICAgICAgICAgICAgIG1faXNJbmxpbmVEaXJlY3RvcnlF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZpcnN0RWxpZ2libGVPckRl
Y29tbWl0ZWREaXJlY3RvcnkpIHsKLSAgICAgICAgLy8gSWYgbm90aGluZyBpcyBlbGlnaWJsZSwg
aXQgY2FuIG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4n
dCBiZSB0aGUgZW5kCi0gICAgICAgIC8vIG9mIHRoZSB3b3JsZCBpZiB3ZSBicm9rZSB0aGlzIGlu
dmFyaWFudC4gSXQgd291bGQgb25seSBtZWFuIHRoYXQgZGlkQmVjb21lRWxpZ2libGVPckRlY29t
bWl0ZWQoKSB3b3VsZCBuZWVkCi0gICAgICAgIC8vIGEgbnVsbCBjaGVjay4KLSAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3RvcnkpOwotICAgICAgICBSRUxFQVNFX0JBU1NFUlQo
IW1fdGFpbERpcmVjdG9yeSk7Ci0gICAgfQotICAgIAotICAgIGZvciAoOyBtX2ZpcnN0RWxpZ2li
bGVPckRlY29tbWl0ZWREaXJlY3Rvcnk7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVj
dG9yeSA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+bmV4dCkgewotICAg
ICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1fZmlyc3RFbGlnaWJsZU9y
RGVjb21taXRlZERpcmVjdG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZSgpOwotICAgICAg
ICBpZiAocmVzdWx0LmtpbmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKSB7Ci0gICAgICAgICAg
ICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRl
cm1hcmssIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+aW5kZXgoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHsKKyAgICAgICAgYXV0byogY3Vyc29yID0g
bV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgpOworICAgICAgICBpZiAo
IWN1cnNvcikgeworICAgICAgICAgICAgLy8gSWYgbm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2Fu
IG9ubHkgYmUgYmVjYXVzZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0
aGUgZW5kCisgICAgICAgICAgICAvLyBvZiB0aGUgd29ybGQgaWYgd2UgYnJva2UgdGhpcyBpbnZh
cmlhbnQuIEl0IHdvdWxkIG9ubHkgbWVhbiB0aGF0IGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1p
dGVkKCkgd291bGQgbmVlZAorICAgICAgICAgICAgLy8gYSBudWxsIGNoZWNrLgorICAgICAgICAg
ICAgUkVMRUFTRV9CQVNTRVJUKCFtX2hlYWREaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKCFtX3RhaWxEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZm9yICg7IGN1cnNvcjsgY3Vyc29yID0gY3Vyc29yLT5uZXh0KSB7Cisg
ICAgICAgICAgICAgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBjdXJzb3It
PnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUobG9ja2VyKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQobV9maXJzdEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgpID09IGN1cnNvcik7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVs
bCkgeworICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBzdGQ6
Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIGN1cnNvci0+aW5kZXgoKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IGN1cnNv
cjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3RvcnkgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGF1dG8qIG5l
d0RpcmVjdG9yeSA9IG5ldyBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4oKnRoaXMsIG1fbmV4dERp
cmVjdG9yeVBhZ2VJbmRleCsrKTsKLSAgICBpZiAobV9oZWFkRGlyZWN0b3J5KSB7CisgICAgaWYg
KG1faGVhZERpcmVjdG9yeS5nZXQoKSkgewogICAgICAgICBtX3RhaWxEaXJlY3RvcnktPm5leHQg
PSBuZXdEaXJlY3Rvcnk7CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsK
ICAgICB9IGVsc2UgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7
CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5LmdldCgpKTsKICAgICAg
ICAgbV9oZWFkRGlyZWN0b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3Rv
cnkgPSBuZXdEaXJlY3Rvcnk7CiAgICAgfQogICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9
IG5ld0RpcmVjdG9yeS0+aW5kZXgoKTsKICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3RvcnkgPSBuZXdEaXJlY3Rvcnk7Ci0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBy
ZXN1bHQgPSBuZXdEaXJlY3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICBF
bGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG5ld0RpcmVjdG9yeS0+cGF5bG9hZC50
YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1bHQua2lu
ZCAhPSBFbGlnaWJpbGl0eUtpbmQ6OkZ1bGwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVj
b21lRWxpZ2libGVPckRlY29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklu
bGluZURpcmVjdG9yeT4qIGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3Rv
cnkpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGRpcmVjdG9yeSA9PSAmbV9pbmxpbmVEaXJlY3Rv
cnkpOwogICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSB0cnVl
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZp
Zz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIElz
b0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hl
YXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz46Om51bVBhZ2VzPiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVCht
X2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkpOwogICAgIGF1dG8qIGRpcmVjdG9y
eVBhZ2UgPSBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoZGlyZWN0b3J5KTsKQEAg
LTEwNCw4ICsxMTAsOSBAQCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlKFZlY3Rv
cjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOwogICAgIGZvckVhY2hEaXJlY3RvcnkoCisgICAgICAg
IGxvY2tlciwKICAgICAgICAgWyZdIChhdXRvJiBkaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIGRp
cmVjdG9yeS5zY2F2ZW5nZShkZWNvbW1pdHMpOworICAgICAgICAgICAgZGlyZWN0b3J5LnNjYXZl
bmdlKGxvY2tlciwgZGVjb21taXRzKTsKICAgICAgICAgfSk7CiAgICAgbV9kaXJlY3RvcnlIaWdo
V2F0ZXJtYXJrID0gMDsKIH0KQEAgLTExNiwxNyArMTIzLDE2IEBAIHZvaWQgSXNvSGVhcEltcGw8
Q29uZmlnPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+
JiBkZWNvCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7
CiAgICAgaWYgKCFtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmspCi0gICAgICAgIG1faW5saW5lRGly
ZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGRlY29tbWl0cyk7Ci0gICAgZm9yIChJc29E
aXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2Ug
PSBwYWdlLT5uZXh0KSB7CisgICAgICAgIG1faW5saW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdo
V2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRzKTsKKyAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8
Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVjdG9yeS5nZXQoKTsgcGFnZTsgcGFnZSA9IHBhZ2Ut
Pm5leHQpIHsKICAgICAgICAgaWYgKHBhZ2UtPmluZGV4KCkgPj0gbV9kaXJlY3RvcnlIaWdoV2F0
ZXJtYXJrKQotICAgICAgICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2ZW5nZVRvSGlnaFdhdGVybWFy
ayhkZWNvbW1pdHMpOworICAgICAgICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhsb2NrZXIsIGRlY29tbWl0cyk7CiAgICAgfQogICAgIG1fZGlyZWN0b3J5SGlnaFdh
dGVybWFyayA9IDA7CiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotc2l6
ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZyZWVhYmxlTWVtb3J5KCkKK2lubGluZSBzaXplX3Qg
SXNvSGVhcEltcGxCYXNlOjpmcmVlYWJsZU1lbW9yeSgpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFi
bGVNZW1vcnk7CiB9CkBAIC0xNDYsOCArMTUyLDEwIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENv
bmZpZz46OmRlYWxsb2NhdG9yT2Zmc2V0KCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVu
c2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46Om51bUxpdmVPYmplY3RzKCkKIHsKKyAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOwogICAgIGZvckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBsb2NrZXIsCiAgICAgICAg
IFsmXSAodm9pZCopIHsKICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAgICB9KTsKQEAgLTE1
Nyw4ICsxNjUsMTAgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9iamVj
dHMoKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdW5zaWduZWQgSXNvSGVhcEltcGw8Q29u
ZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQogeworICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4g
bG9ja2VyKHRoaXMtPmxvY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yRWFj
aENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChJc29QYWdlPENv
bmZpZz4mKSB7CiAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfSk7CkBAIC0xNjcsNDAg
KzE3Nyw0MSBAQCB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1Db21taXR0ZWRQYWdl
cygpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYg
ZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVjdG9yeShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmdW5jKG1f
aW5saW5lRGlyZWN0b3J5KTsKLSAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFn
ZSA9IG1faGVhZERpcmVjdG9yeTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpCisgICAgZm9yIChJ
c29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBh
Z2U7IHBhZ2UgPSBwYWdlLT5uZXh0KQogICAgICAgICBmdW5jKHBhZ2UtPnBheWxvYWQpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9p
ZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBm
dW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgZm9yRWFjaERpcmVjdG9yeSgKKyAgICAgICAgbG9ja2VyLAogICAgICAgICBbJl0gKGF1dG8m
IGRpcmVjdG9yeSkgewotICAgICAgICAgICAgZGlyZWN0b3J5LmZvckVhY2hDb21taXR0ZWRQYWdl
KGZ1bmMpOworICAgICAgICAgICAgZGlyZWN0b3J5LmZvckVhY2hDb21taXR0ZWRQYWdlKGxvY2tl
ciwgZnVuYyk7CiAgICAgICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNo
TGl2ZU9iamVjdChjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpm
b3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNv
bnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxv
Y2tlciwKICAgICAgICAgWyZdIChJc29QYWdlPENvbmZpZz4mIHBhZ2UpIHsKLSAgICAgICAgICAg
IHBhZ2UuZm9yRWFjaExpdmVPYmplY3QoZnVuYyk7CisgICAgICAgICAgICBwYWdlLmZvckVhY2hM
aXZlT2JqZWN0KGxvY2tlciwgZnVuYyk7CiAgICAgICAgIH0pOwogICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkOyArK2luZGV4KSB7Ci0g
ICAgICAgIHZvaWQqIHBvaW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XTsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpOwogICAgICAgICBpZiAocG9p
bnRlciAmJiAhKG1fYXZhaWxhYmxlU2hhcmVkICYgKDFVIDw8IGluZGV4KSkpCiAgICAgICAgICAg
ICBmdW5jKHBvaW50ZXIpOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
c2l6ZV90IElzb0hlYXBJbXBsPENvbmZpZz46OmZvb3RwcmludCgpCitpbmxpbmUgc2l6ZV90IElz
b0hlYXBJbXBsQmFzZTo6Zm9vdHByaW50KCkKIHsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9N
QVAKICAgICBSRUxFQVNFX0JBU1NFUlQobV9mb290cHJpbnQgPT0gbV9waHlzaWNhbFBhZ2VNYXAu
Zm9vdHByaW50KCkpOwpAQCAtMjA4LDggKzIxOSw3IEBAIHNpemVfdCBJc29IZWFwSW1wbDxDb25m
aWc+Ojpmb290cHJpbnQoKQogICAgIHJldHVybiBtX2Zvb3RwcmludDsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9p
ZCogcHRyLCBzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmRpZENv
bW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7
CiAgICAgbV9mb290cHJpbnQgKz0gYnl0ZXM7CkBAIC0yMTgsOCArMjI4LDcgQEAgdm9pZCBJc29I
ZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiAjZW5k
aWYKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25m
aWc+OjpkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkIElz
b0hlYXBJbXBsQmFzZTo6ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZm9vdHByaW50IC09IGJ5dGVzOwpAQCAtMjI4
LDE1ICsyMzcsMTMgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1pdCh2b2lk
KiBwdHIsIHNpemVfdCBieXRlcykKICNlbmRpZgogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmlzTm93RnJlZWFibGUodm9pZCogcHRyLCBz
aXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJlZWFibGUo
dm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAg
IG1fZnJlZWFibGVNZW1vcnkgKz0gYnl0ZXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6aXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0
ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2Vy
RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShw
dHIpOwogICAgIG1fZnJlZWFibGVNZW1vcnkgLT0gYnl0ZXM7CkBAIC0zMDEsNyArMzA4LDcgQEAg
dm9pZCogSXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mLCBib28KICAgICB1bnNpZ25lZCBpbmRleFBsdXNPbmUgPSBfX2J1
aWx0aW5fZmZzKG1fYXZhaWxhYmxlU2hhcmVkKTsKICAgICBCQVNTRVJUKGluZGV4UGx1c09uZSk7
CiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleFBsdXNPbmUgLSAxOwotICAgIHZvaWQqIHJlc3Vs
dCA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdOworICAgIHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2Vs
bHNbaW5kZXhdLmdldCgpOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFy
ZWQgYWdhaW4gb2Ygc2l6ZSAldVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUp
OwpAQCAtMzE0LDcgKzMyMSw3IEBAIHZvaWQqIElzb0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRl
RnJvbVNoYXJlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vCiAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFyZWQgb2Ygc2l6ZSAl
dVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAgICAgICBCQVNTRVJU
KGluZGV4IDwgSXNvSGVhcEltcGxCYXNlOjptYXhBbGxvY2F0aW9uRnJvbVNoYXJlZCk7CiAgICAg
ICAgICppbmRleFNsb3RGb3I8Q29uZmlnPihyZXN1bHQpID0gaW5kZXg7Ci0gICAgICAgIG1fc2hh
cmVkQ2VsbHNbaW5kZXhdID0gcmVzdWx0OworICAgICAgICBtX3NoYXJlZENlbGxzW2luZGV4XSA9
IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4ocmVzdWx0KTsKICAgICB9CiAgICAgQkFTU0VSVChyZXN1
bHQpOwogICAgIG1fYXZhaWxhYmxlU2hhcmVkICY9IH4oMVUgPDwgaW5kZXgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1BhZ2UuaAppbmRleCA1NDI1Yjg4YTY3ODkyMmQ4OGMyYzU4ZDc1MGNhMjkyNmFhZjM0
MDA4Li5hMTUxY2Y5ODc5MTI1MjE0M2RlZmQyYjBhN2JkNTcwMGNlZTAxNzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb1BhZ2UuaApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkJpdHMuaCIKICNp
bmNsdWRlICJEZWZlcnJlZFRyaWdnZXIuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgorI2luY2x1
ZGUgIk11dGV4LmgiCiAjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxtdXRleD4KIAogbmFt
ZXNwYWNlIGJtYWxsb2MgewogCkBAIC00Miw2ICs0NCw4IEBAIGNsYXNzIElzb1BhZ2VCYXNlIHsK
IAogICAgIGV4cGxpY2l0IElzb1BhZ2VCYXNlKGJvb2wgaXNTaGFyZWQpCiAgICAgICAgIDogbV9p
c1NoYXJlZChpc1NoYXJlZCkKKyAgICAgICAgLCBtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkKHRy
dWUpCisgICAgICAgICwgbV9pc0luVXNlRm9yQWxsb2NhdGlvbihmYWxzZSkKICAgICB7CiAgICAg
fQogCkBAIC01Miw3ICs1Niw5IEBAIGNsYXNzIElzb1BhZ2VCYXNlIHsKIHByb3RlY3RlZDoKICAg
ICBCRVhQT1JUIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVBhZ2VNZW1vcnkoKTsKIAotICAgIGJvb2wg
bV9pc1NoYXJlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU2hhcmVkIDogMTsKKyAgICBib29s
IG1fZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQgOiAxOworICAgIGJvb2wgbV9pc0luVXNlRm9yQWxs
b2NhdGlvbiA6IDE7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CkBAIC03MSwxOSAr
NzcsMTkgQEAgY2xhc3MgSXNvUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAKICAgICB1bnNp
Z25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICAKLSAgICB2b2lkIGZy
ZWUodm9pZCopOworICAgIHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwg
dm9pZCopOwogCiAgICAgLy8gQ2FsbGVkIGFmdGVyIHRoaXMgcGFnZSBpcyBhbHJlYWR5IHNlbGVj
dGVkIGZvciBhbGxvY2F0aW9uLgotICAgIEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZygpOworICAg
IEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CiAgICAgCiAgICAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBhbGxvY2F0b3IgcGlja3MgYW5vdGhlciBw
YWdlIHRvIHJlcGxhY2UgdGhpcyBvbmUuCi0gICAgdm9pZCBzdG9wQWxsb2NhdGluZyhGcmVlTGlz
dCBmcmVlTGlzdCk7CisgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgRnJlZUxpc3QpOwogCiAgICAgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+JiBk
aXJlY3RvcnkoKSB7IHJldHVybiBtX2RpcmVjdG9yeTsgfQogICAgIGJvb2wgaXNJblVzZUZvckFs
bG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uOyB9CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0
KGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29u
ZmlnPiYgaGVhcCgpOwogICAgIApAQCAtMTExLDE2ICsxMTcsMTMgQEAgY2xhc3MgSXNvUGFnZSA6
IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAKICAgICAvLyBUaGlzIG11c3QgaGF2ZSBhIHRyaXZpYWwg
ZGVzdHJ1Y3Rvci4KIAotICAgIGJvb2wgbV9lbGlnaWJpbGl0eUhhc0JlZW5Ob3RlZCB7IHRydWUg
fTsKLSAgICBib29sIG1faXNJblVzZUZvckFsbG9jYXRpb24geyBmYWxzZSB9OwogICAgIERlZmVy
cmVkVHJpZ2dlcjxJc29QYWdlVHJpZ2dlcjo6RWxpZ2libGU+IG1fZWxpZ2liaWxpdHlUcmlnZ2Vy
OwogICAgIERlZmVycmVkVHJpZ2dlcjxJc29QYWdlVHJpZ2dlcjo6RW1wdHk+IG1fZW1wdHlUcmln
Z2VyOwotCi0gICAgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+JiBtX2RpcmVjdG9yeTsKKyAgICB1
aW50OF90IG1fbnVtTm9uRW1wdHlXb3JkcyB7IDAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KGJpdHNB
cnJheUxlbmd0aChudW1PYmplY3RzKSA8PSBVSU5UOF9NQVgpOwogICAgIHVuc2lnbmVkIG1faW5k
ZXggeyBVSU5UX01BWCB9OwotICAgIAorICAgIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgbV9k
aXJlY3Rvcnk7CiAgICAgdW5zaWduZWQgbV9hbGxvY0JpdHNbYml0c0FycmF5TGVuZ3RoKG51bU9i
amVjdHMpXTsKLSAgICB1bnNpZ25lZCBtX251bU5vbkVtcHR5V29yZHMgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1BhZ2VJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVz
LmgKaW5kZXggZjM3YjM0OTMyNzc5MDZjMTgyZDk5MWZhZmZjZWE5ZGZkNjc4MmY0My4uYzVjZTg3
MTIwOTFmZjE5YzFjNmY1Y2I5Nzg2Yjc5YTMwZDZmYzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvUGFnZUlubGluZXMuaApAQCAtNDcsOCArNDcsOCBAQCBJc29QYWdlPENvbmZpZz4qIElz
b1BhZ2U8Q29uZmlnPjo6dHJ5Q3JlYXRlKElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgZGlyZWN0
b3J5LAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogSXNvUGFnZTxDb25maWc+OjpJc29QYWdl
KElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgZGlyZWN0b3J5LCB1bnNpZ25lZCBpbmRleCkKICAg
ICA6IElzb1BhZ2VCYXNlKGZhbHNlKQotICAgICwgbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQogICAg
ICwgbV9pbmRleChpbmRleCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKICAgICBt
ZW1zZXQobV9hbGxvY0JpdHMsIDAsIHNpemVvZihtX2FsbG9jQml0cykpOwogfQpAQCAtNjUsMTQg
KzY1LDE0IEBAIElzb1BhZ2U8Q29uZmlnPiogSXNvUGFnZTxDb25maWc+OjpwYWdlRm9yKHZvaWQq
IHB0cikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZp
Zz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQordm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIpCiB7CiAg
ICAgQkFTU0VSVCghbV9pc1NoYXJlZCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KHBhc3NlZFB0cikgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IG9mZnNldCAvIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAKICAg
ICBpZiAoIW1fZWxpZ2liaWxpdHlIYXNCZWVuTm90ZWQpIHsKLSAgICAgICAgbV9lbGlnaWJpbGl0
eVRyaWdnZXIuZGlkQmVjb21lKCp0aGlzKTsKKyAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIu
ZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgICAgICBtX2VsaWdpYmlsaXR5SGFzQmVlbk5v
dGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBJc29QYWdl
PENvbmZpZz46OmZyZWUodm9pZCogcGFzc2VkUHRyKQogICAgIHVuc2lnbmVkIG5ld1dvcmQgPSBt
X2FsbG9jQml0c1t3b3JkSW5kZXhdICY9IH4oMSA8PCBiaXRJbmRleCk7CiAgICAgaWYgKCFuZXdX
b3JkKSB7CiAgICAgICAgIGlmICghLS1tX251bU5vbkVtcHR5V29yZHMpCi0gICAgICAgICAgICBt
X2VtcHR5VHJpZ2dlci5kaWRCZWNvbWUoKnRoaXMpOworICAgICAgICAgICAgbV9lbXB0eVRyaWdn
ZXIuZGlkQmVjb21lKGxvY2tlciwgKnRoaXMpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgotRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQor
RnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKICAgICAKQEAgLTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46
OnN0YXJ0QWxsb2NhdGluZygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQg
SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCkKK3ZvaWQg
SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiBsb2NrZXIsIEZyZWVMaXN0IGZyZWVMaXN0KQogewogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB2b2lkIElz
b1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpCiAgICAgCiAg
ICAgZnJlZUxpc3QuZm9yRWFjaDxDb25maWc+KAogICAgICAgICBbJl0gKHZvaWQqIHB0cikgewot
ICAgICAgICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgZnJlZShsb2NrZXIsIHB0cik7CiAg
ICAgICAgIH0pOwogCiAgICAgUkVMRUFTRV9CQVNTRVJUKG1faXNJblVzZUZvckFsbG9jYXRpb24p
OwogICAgIG1faXNJblVzZUZvckFsbG9jYXRpb24gPSBmYWxzZTsKIAotICAgIG1fZWxpZ2liaWxp
dHlUcmlnZ2VyLmhhbmRsZURlZmVycmFsKCp0aGlzKTsKLSAgICBtX2VtcHR5VHJpZ2dlci5oYW5k
bGVEZWZlcnJhbCgqdGhpcyk7CisgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuaGFuZGxlRGVmZXJy
YWwobG9ja2VyLCAqdGhpcyk7CisgICAgbV9lbXB0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9j
a2VyLCAqdGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29u
c3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBm
b3IgKHVuc2lnbmVkIHdvcmRJbmRleCA9IDA7IHdvcmRJbmRleCA8IGJpdHNBcnJheUxlbmd0aChu
dW1PYmplY3RzKTsgKyt3b3JkSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgd29yZCA9IG1fYWxs
b2NCaXRzW3dvcmRJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZEhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCmlu
ZGV4IGM5ZDA0ZWU5MzEzNjk1OWQzMjNkYjU4MGQyMDM2YjlhZWJjMjIxYTMuLjVlYTUxZTVkMWZk
ZGVlZmY2ZjhkNTZmZDdjOTA3ZmU0MmJkZDE0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
U2hhcmVkSGVhcC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFZhcmlhZGljQnVtcEFsbG9jYXRv
ciB7CiAKIGNsYXNzIElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29T
aGFyZWRIZWFwPiB7CiBwdWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKKyAgICBJc29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQogICAgIHsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgSXNvU2hhcmVkSGVhcCA6
IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+IHsKIAogcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZD4KLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9u
RmFpbHVyZSk7CisgICAgdm9pZCogYWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKIAogICAgIElzb1NoYXJlZFBhZ2UqIG1fY3Vy
cmVudFBhZ2UgeyBudWxscHRyIH07CiAgICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIG1fYWxsb2Nh
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5s
aW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCmlu
ZGV4IGQ5ZjdmMTE2NmM1YWQwNmYwNGQ4MTIxYzQ5ODgyMjdiZGZkMDFkMDQuLmRhMThlNmU3Yjg2
N2I0MDVlODY4YzBmNGIzZDZkYWI0MDFkZmVlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkKiBJc29T
aGFyZWRIZWFwOjphbGxvY2F0ZU5ldyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBvYmplY3RTaXplID0gY29tcHV0ZU9iamVjdFNpemVGb3JTaGFyZWRDZWxsKHBh
c3NlZE9iamVjdFNpemUpOwogICAgIHJldHVybiBtX2FsbG9jYXRvci50ZW1wbGF0ZSBhbGxvY2F0
ZTxvYmplY3RTaXplPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZVNsb3c8cGFzc2VkT2JqZWN0U2l6ZT4oYWJvcnRPbkZhaWx1cmUpOworICAg
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdzxwYXNzZWRPYmplY3RTaXplPihsb2NrZXIsIGFi
b3J0T25GYWlsdXJlKTsKICAgICAgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHVuc2lnbmVkIHBhc3Nl
ZE9iamVjdFNpemU+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xv
dyhib29sIGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjph
bGxvY2F0ZVNsb3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBib29sIGFi
b3J0T25GYWlsdXJlKQogewogICAgIFNjYXZlbmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6
Z2V0KCk7CiAgICAgc2NhdmVuZ2VyLmRpZFN0YXJ0R3Jvd2luZygpOwpAQCAtNzMsMTAgKzczLDEw
IEBAIEJOT19JTkxJTkUgdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGJvb2wgYWJv
cnRPbkZhaWx1cmUpCiAgICAgfQogCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1f
Y3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0
b3BBbGxvY2F0aW5nKGxvY2tlcik7CiAKICAgICBtX2N1cnJlbnRQYWdlID0gcGFnZTsKLSAgICBt
X2FsbG9jYXRvciA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOworICAgIG1fYWxs
b2NhdG9yID0gbV9jdXJyZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKGxvY2tlcik7CiAKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgb2JqZWN0U2l6ZSA9IGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVk
Q2VsbChwYXNzZWRPYmplY3RTaXplKTsKICAgICByZXR1cm4gbV9hbGxvY2F0b3IuYWxsb2NhdGU8
b2JqZWN0U2l6ZT4oW10gKCkgeyBCQ1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAppbmRleCBhOWUxMzdlNDE0MTg4NTY0ZDA1ODA0
NDkwYjU0MzdhNTAwZTU3MGJiLi5iZmY3MGMyNGFjYjk4YjFiZWRjNmNlYmFmOTBiMDg1NDYzZGM5
NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaApAQCAtMzksOCArMzks
OCBAQCBjbGFzcyBJc29TaGFyZWRQYWdlIDogcHVibGljIElzb1BhZ2VCYXNlIHsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICB2b2lkIGZyZWUoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsK
LSAgICBWYXJpYWRpY0J1bXBBbGxvY2F0b3Igc3RhcnRBbGxvY2F0aW5nKCk7Ci0gICAgdm9pZCBz
dG9wQWxsb2NhdGluZygpOworICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBzdGFydEFsbG9jYXRp
bmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIHZvaWQgc3RvcEFsbG9jYXRp
bmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogCiBwcml2YXRlOgogICAgIElzb1No
YXJlZFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQ
YWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5l
cy5oCmluZGV4IGM0MjE2YjUxZGFjOWQxZTk1YzMwMzVkNjYxNmZhM2U3Y2U1OTA3YTkuLmU0NDEw
YmFkNjAwMzcyNTI1MDA3NzAzNjcxNDYwNDFhNmE3NGI5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKQEAgLTQyLDExICs0MiwxMSBAQCB2b2lk
IElzb1NoYXJlZFBhZ2U6OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6
SXNvSGVhcDxUeXBlPiYgaGFuZAogICAgIC8vIElzb0RlYWxsb2NhdG9yOjpkZWFsbG9jYXRlIGlz
IGNhbGxlZCBmcm9tIGRlbGV0ZSBvcGVyYXRvci4gVGhpcyBpcyBkaXNwYXRjaGVkIGJ5IHZ0YWJs
ZSBpZiB2aXJ0dWFsIGRlc3RydWN0b3IgZXhpc3RzLgogICAgIC8vIElmIHZwdHIgaXMgcmVwbGFj
ZWQgdG8gdGhlIG90aGVyIHZwdHIsIHdlIG1heSBhY2NpZGVudGFsbHkgY2hhaW4gdGhpcyBwb2lu
dGVyIHRvIHRoZSBpbmNvcnJlY3QgSGVhcEltcGxCYXNlLCB3aGljaCB0b3RhbGx5IGJyZWFrcyB0
aGUgSXNvSGVhcCdzIGdvYWwuCiAgICAgLy8gVG8gaGFyZGVuIHRoYXQsIHdlIHZhbGlkYXRlIHRo
YXQgdGhpcyBwb2ludGVyIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBmb3IgYSBzcGVjaWZpYyBIZWFw
SW1wbEJhc2UgaGVyZSBieSBjaGVja2luZyB3aGV0aGVyIHRoaXMgcG9pbnRlciBpcyBsaXN0ZWQg
aW4gSGVhcEltcGxCYXNlJ3Mgc2hhcmVkIGNlbGxzLgotICAgIFJFTEVBU0VfQkFTU0VSVChoZWFw
SW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XSA9PSBwdHIpOworICAgIFJFTEVBU0VfQkFTU0VSVCho
ZWFwSW1wbC5tX3NoYXJlZENlbGxzW2luZGV4XS5nZXQoKSA9PSBwdHIpOwogICAgIGhlYXBJbXBs
Lm1fYXZhaWxhYmxlU2hhcmVkIHw9ICgxVSA8PCBpbmRleCk7CiB9CiAKLWlubGluZSBWYXJpYWRp
Y0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKCkKK2lubGluZSBW
YXJpYWRpY0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CiAKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIFZhcmlhZGljQnVtcEFs
bG9jYXRvciBJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoKQogICAgIHJldHVybiBWYXJp
YWRpY0J1bXBBbGxvY2F0b3IocGF5bG9hZEVuZCwgcmVtYWluaW5nKTsKIH0KIAotaW5saW5lIHZv
aWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcoKQoraW5saW5lIHZvaWQgSXNvU2hhcmVk
UGFnZTo6c3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvVExTLmgKaW5kZXggZGUyODY3ZTc4ZGUxY2EyNTYzMGMzNmQxODIyODMzZjE3ZmEwN2VmMy4u
YmFiYmIzMDQ1YjhhNTA2ZTgyODMxMDJlYjZjM2M0Y2ViOWVkMjliMiAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMUy5oCkBAIC02MCw4ICs2MCw4IEBAIGNsYXNzIElzb1RMUyB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0
ZUltcGwoYXBpOjpJc29IZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQqIGFsbG9jYXRlRmFzdCh1bnNp
Z25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZywgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkKiBhbGxvY2F0ZUZhc3QoYXBpOjpJc29I
ZWFwPFR5cGU+JiwgdW5zaWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CiAgICAgc3RhdGlj
IHZvaWQqIGFsbG9jYXRlU2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mLCBib29sIGFib3J0T25GYWls
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9y
RW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaApp
bmRleCAzNWRiODcxNDdiNDkyMDY2YTI4ZWZmZDU3M2RmNzM2ZjcwODExMzlmLi5lMWQ4YWFjYWZl
MmZmYWJkYTc0ODAzZTliNzA2YjBiZjU2ZGU5ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIElzb1RM
U0FsbG9jYXRvckVudHJ5IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29BbGxv
Y2F0b3I8Q29uZmlnCiAgICAgSXNvVExTQWxsb2NhdG9yRW50cnkoSXNvSGVhcEltcGw8Q29uZmln
PiYpOwogCiAgICAgdm9pZCBjb25zdHJ1Y3Qodm9pZCogZHN0KSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2NhdmVuZ2Uodm9pZCogZW50cnkpIG92ZXJyaWRlOwogICAgIAogICAgIElzb0hlYXBJbXBs
PENvbmZpZz4mIG1faGVhcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNBbGxvY2F0b3JFbnRyeUlubGluZXMuaAppbmRleCAxYWUxZTZhNWFjYTQ5MGUwNTIyNzEx
NGY1ZTRlMjA1ZmQ0OTRmZjQzLi4zZTU1N2FkMTc3Yjg2ZGQ4YmU2YzA3Zjc0M2M5YTE4ZWQ2ZTNl
MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVu
dHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9y
RW50cnlJbmxpbmVzLmgKQEAgLTQ2LDUgKzQ2LDExIEBAIHZvaWQgSXNvVExTQWxsb2NhdG9yRW50
cnk8Q29uZmlnPjo6Y29uc3RydWN0KHZvaWQqIGRzdCkKICAgICBuZXcgKGRzdCkgSXNvQWxsb2Nh
dG9yPENvbmZpZz4obV9oZWFwKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgordm9p
ZCBJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2b2lkKiBlbnRyeSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2Uo
bV9oZWFwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCmluZGV4IDczODRjZTBkMmFiYjQz
ZmZiNTZhNjc4OGY0NzUxMGI2NGYyNjRmNGQuLmEwZGJjMzAzNzQ0Mjg3MGVkMDg5YWE5MjBiZDRi
ZmFhZDk3ZWRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVh
bGxvY2F0b3JFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIElzb1RMU0RlYWxsb2NhdG9yRW50
cnkgZmluYWwgOiBwdWJsaWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0RlYWxsb2NhdG9yPENvCiAg
ICAgSXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CiAKICAgICB2b2lkIGNvbnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
Y2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFs
bG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9y
RW50cnlJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9y
RW50cnlJbmxpbmVzLmgKaW5kZXggY2JkNWY5ZGY3ZWZiNzRjMzEyMjM5NzgxNWNhMzkxMjA2Mjlj
ZDQzZi4uYzk1MzQyODBjZThkNWExOGIwMjY4YmQwNzgwN2Q3ZWJiN2MyMmU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGlu
ZXMuaApAQCAtNDMsNSArNDMsMTEgQEAgdm9pZCBJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZp
Zz46OmNvbnN0cnVjdCh2b2lkKiBlbnRyeSkKICAgICBuZXcgKGVudHJ5KSBJc29EZWFsbG9jYXRv
cjxDb25maWc+KGxvY2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Cit2b2lkIElz
b1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9pZCogZW50cnkpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SXNvRGVhbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2Uo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnkuY3BwCmluZGV4IGNiMDNiZGUyODk1N2UyY2JmYTEwYWZhZDg5NDI4YmIzZWE2ZmFm
NzMuLjgzMGE1MTFiZjk5ZGVjZDhiZjY0NGEzZmRlMzhiMzBjYWM2NzA4MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKLUlzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fb2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9hbGlnbm1l
bnQoYWxpZ25tZW50KQotICAgICwgbV9zaXplKHNpemUpCitJc29UTFNFbnRyeTo6SXNvVExTRW50
cnkoc2l6ZV90IHNpemUpCisgICAgOiBtX3NpemUoc2l6ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeS5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNFbnRyeS5oCmluZGV4IDc0ZjQ0OWJmYTI4YTQwMWZiMDQzODhjYmNlNTE0MzZl
ODY4ZmQ2MTQuLmE0NzhlNmEzMmRlMTA2YWNjN2UzOTBhZTJhYjJmZTkwZjEwYjc0MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5LmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQkVY
UE9SVCBJc29UTFNFbnRyeSB7CiAgICAgdmlydHVhbCB+SXNvVExTRW50cnkoKTsKICAgICAKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICBzaXplX3Qg
YWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbm1lbnQ7IH0KKyAgICBzaXplX3QgYWxp
Z25tZW50KCkgY29uc3QgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGV4dGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0ICsgbV9zaXplOyB9CiAgICAgCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNz
IEJFWFBPUlQgSXNvVExTRW50cnkgewogICAgIHZvaWQgd2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExT
RW50cnkqLCBjb25zdCBGdW5jJik7CiAKIHByb3RlY3RlZDoKLSAgICBJc29UTFNFbnRyeShzaXpl
X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CisgICAgSXNvVExTRW50cnkoc2l6ZV90IHNpemUp
OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXNvVExTOwpAQCAtODYsMTUgKzg2
LDE0IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExTRW50cnkgewogCiAgICAgSXNvVExTRW50cnkqIG1f
bmV4dCB7IG51bGxwdHIgfTsKICAgICAKLSAgICBzaXplX3QgbV9vZmZzZXQ7IC8vIENvbXB1dGVk
IGluIGNvbnN0cnVjdG9yLgotICAgIHNpemVfdCBtX2FsaWdubWVudDsKLSAgICBzaXplX3QgbV9z
aXplOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgVUlOVF9NQVggfTsgLy8gQ29tcHV0ZWQgaW4g
Y29uc3RydWN0b3IuCisgICAgdW5zaWduZWQgbV9zaXplOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgRW50cnlUeXBlPgogY2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDogcHVibGljIElzb1RMU0Vu
dHJ5IHsKIHB1YmxpYzoKLSAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCk7CisgICAgfkRlZmF1bHRJ
c29UTFNFbnRyeSgpID0gZGVmYXVsdDsKICAgICAKIHByb3RlY3RlZDoKICAgICBEZWZhdWx0SXNv
VExTRW50cnkoKTsKQEAgLTEwNiw4ICsxMDUsNiBAQCBjbGFzcyBEZWZhdWx0SXNvVExTRW50cnkg
OiBwdWJsaWMgSXNvVExTRW50cnkgewogICAgIC8vIExpa2V3aXNlLCB0aGlzIGlzIHNlcGFyYXRl
IGZyb20gc2NhdmVuZ2luZy4gV2hlbiB0aGUgVExTIGlzIHNodXR0aW5nIGRvd24sIHdlIHdpbGwg
YmUgYXNrZWQgdG8KICAgICAvLyBzY2F2ZW5nZSBhbmQgdGhlbiB3ZSB3aWxsIGJlIGFza2VkIHRv
IGRlc3RydWN0LgogICAgIHZvaWQgZGVzdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJyaWRlOwotCi0g
ICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0Vu
dHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMu
aAppbmRleCA2ZjYxNWY5NTBjZGJmMGFhMDYzMTM1OTFkMzgzYzhjMjRjMjhmM2IzLi5jMmE3Mjdl
MGYzNWY2YWM0MzAxY2IzYWE0OWVkYmE5NWNmMTBhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTRW50cnlJbmxpbmVzLmgKQEAgLTQzLDEzICs0MywxMCBAQCB2b2lkIElzb1RM
U0VudHJ5Ojp3YWxrVXBUb0luY2x1c2l2ZShJc29UTFNFbnRyeSogbGFzdCwgY29uc3QgRnVuYyYg
ZnVuYykKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgogRGVmYXVsdElzb1RMU0VudHJ5
PEVudHJ5VHlwZT46OkRlZmF1bHRJc29UTFNFbnRyeSgpCi0gICAgOiBJc29UTFNFbnRyeShhbGln
bm9mKEVudHJ5VHlwZSksIHNpemVvZihFbnRyeVR5cGUpKQotewotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBFbnRyeVR5cGU+Ci1EZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJ
c29UTFNFbnRyeSgpCisgICAgOiBJc29UTFNFbnRyeShzaXplb2YoRW50cnlUeXBlKSkKIHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFbnRyeVR5cGUpIDw9IFVJTlQzMl9NQVgpOworICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKHZvaWQqKSA9PSBhbGlnbm9mKEVudHJ5VHlwZSksICJCZWNhdXNl
IElzb1RMU0VudHJ5IGluY2x1ZGVzIHZ0YWJsZSwgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIHRvIHRo
ZSBwb2ludGVyIik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KQEAgLTY3LDEy
ICs2NCw1IEBAIHZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OmRlc3RydWN0KHZv
aWQqIHBhc3NlZEVudHJ5KQogICAgIGVudHJ5LT5+RW50cnlUeXBlKCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEVudHJ5VHlwZT4KLXZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46
OnNjYXZlbmdlKHZvaWQqIHBhc3NlZEVudHJ5KQotewotICAgIEVudHJ5VHlwZSogZW50cnkgPSBz
dGF0aWNfY2FzdDxFbnRyeVR5cGUqPihwYXNzZWRFbnRyeSk7Ci0gICAgZW50cnktPnNjYXZlbmdl
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0lubGluZXMuaAppbmRleCAxZWFiMjcxYzQwY2E3OWEzZGRlZmZiZmQyNWUwZTc0ODY4YTRk
MzE5Li4wZDRiMjAxOTRlMGNkZWQyMDg4YzllNzRjNzI4NzQ4NjQ1YTM0MWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIElzb1RM
Uzo6c2NhdmVuZ2UoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYg
KG9mZnNldCA8IHRscy0+bV9leHRlbnQpCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxs
b2NhdG9yPHR5cGVuYW1lIGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmlnPio+KHRscy0+bV9kYXRh
ICsgb2Zmc2V0KS0+c2NhdmVuZ2UoKTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29BbGxv
Y2F0b3I8dHlwZW5hbWUgYXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEg
KyBvZmZzZXQpLT5zY2F2ZW5nZShoYW5kbGUuaW1wbCgpKTsKICAgICBvZmZzZXQgPSBoYW5kbGUu
ZGVhbGxvY2F0b3JPZmZzZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxzLT5tX2V4dGVudCkKICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29EZWFsbG9jYXRvcjx0eXBlbmFtZSBhcGk6Oklzb0hl
YXA8VHlwZT46OkNvbmZpZz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZlbmdlKCk7CkBA
IC03NCwxMyArNzQsMTMgQEAgdm9pZCogSXNvVExTOjphbGxvY2F0ZUltcGwoYXBpOjpJc29IZWFw
PFR5cGU+JiBoYW5kbGUsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgSXNvVExTKiB0bHMgPSBn
ZXQoKTsKICAgICBpZiAoIXRscyB8fCBvZmZzZXQgPj0gdGxzLT5tX2V4dGVudCkKICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvdzxDb25maWc+KGhhbmRsZSwgYWJvcnRPbkZhaWx1cmUpOwotICAg
IHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KG9mZnNldCwgYWJvcnRPbkZhaWx1cmUp
OworICAgIHJldHVybiB0bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhhbmRsZSwgb2Zmc2V0LCBh
Ym9ydE9uRmFpbHVyZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQqIElz
b1RMUzo6YWxsb2NhdGVGYXN0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KK3ZvaWQqIElzb1RMUzo6
YWxsb2NhdGVGYXN0KGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB1bnNpZ25lZCBvZmZzZXQs
IGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNv
QWxsb2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShhYm9ydE9uRmFp
bHVyZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4q
PihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShoYW5kbGUuaW1wbCgpLCBhYm9ydE9uRmFpbHVy
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KQEAgLTEw
OCw3ICsxMDgsNyBAQCBCTk9fSU5MSU5FIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVTbG93KGFwaTo6
SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCBib29sIGFib3J0T25GYQogICAgIAogICAgIElzb1RMUyog
dGxzID0gZW5zdXJlSGVhcEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAKLSAgICByZXR1cm4gdGxz
LT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25G
YWlsdXJlKTsKKyAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUsIGhh
bmRsZS5hbGxvY2F0b3JPZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RM
U0xheW91dC5jcHAKaW5kZXggNGIzMzVlYTUxOWQ0NWU4ZjE2YjJhOGQ5MDllMTMwNDYxOWQ1NzQ4
NC4uMGJhZTYwNzcwMWU0OTBjN2FlMmE5ZjQwZTdlOTE3Y2VjZmIxNzMyNSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcApAQCAtNDQsNyArNDQsOSBAQCB2b2lkIElzb1RM
U0xheW91dDo6YWRkKElzb1RMU0VudHJ5KiBlbnRyeSkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2tpbmcoYWRkaW5nTXV0ZXgpOwogICAgIGlmIChtX2hlYWQpIHsKICAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKG1fdGFpbCk7Ci0gICAgICAgIGVudHJ5LT5tX29mZnNldCA9IHJvdW5kVXBU
b011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgp
LCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG9mZnNldCA8IFVJ
TlRfTUFYKTsKKyAgICAgICAgZW50cnktPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBzdGQ6
OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCk7CiAgICAgICAg
IG1fdGFpbC0+bV9uZXh0ID0gZW50cnk7CiAgICAgICAgIG1fdGFpbCA9IGVudHJ5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QYWNrZWQuaCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvUGFja2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI0YzRlZDdiZWJkY2E4NmU3MWQ4M2MyMjJlNmRj
MWNhYTA0ZDAyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFj
a2VkLmgKQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxnb3JpdGhtLmgi
CisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFj
ZSBibWFsbG9jIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZCB7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlwZSA9IHRydWU7CisKKyAg
ICBQYWNrZWQoKQorICAgICAgICA6IFBhY2tlZChUIHsgfSkKKyAgICB7CisgICAgfQorCisgICAg
UGFja2VkKGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5k
YXRhKCksICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBUIGdldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBUIHZhbHVlOworICAgICAgICBtZW1jcHkoJnZhbHVlLCBtX3N0b3JhZ2Uu
ZGF0YSgpLCBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAg
dm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdl
LmRhdGEoKSwgJnZhbHVlLCBzaXplb2YoVCkpOworICAgIH0KKworICAgIFBhY2tlZDxUPiYgb3Bl
cmF0b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBl
eGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gZ2V0KCk7
CisgICAgICAgIHNldChzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IG9sZFZhbHVlOworICAgIH0KKworICAgIHZvaWQgc3dhcChQYWNrZWQmIG90aGVyKQorICAgIHsK
KyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVy
Ojppc1BhY2tlZFR5cGU+PgorICAgIHZvaWQgc3dhcChPdGhlciYgb3RoZXIpCisgICAgeworICAg
ICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAg
c2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAo
VCYgdDIpCisgICAgeworICAgICAgICBUIHQxID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0
MSwgdDIpOworICAgICAgICBzZXQodDEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIHNpemVvZihUKT4gbV9zdG9yYWdlOworfTsKKworLy8gUGFja2VkQWxpZ25l
ZFB0ciBjYW4gdGFrZSBhbGlnbm1lbnQgcGFyYW1ldGVyIHRvby4gUGFja2VkQWxpZ25lZFB0ciBv
bmx5IHVzZXMgdGhpcyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaWYgaXQgaXMgcHJvZml0YWJsZTog
d2UgdXNlCisvLyBhbGlnbm1lbnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiByZWR1Y2Ug
dGhlIHNpemUgb2YgdGhlIHN0b3JhZ2UuIFNpbmNlIHRoZSBwb2ludGVyIHdpZHRoIGlzIDM2IGJp
dHMgYW5kIEpTQ2VsbHMgYXJlIGFsaWduZWQgdG8gMTYgYnl0ZXMsCisvLyB3ZSBjYW4gdXNlIDQg
Yml0cyBpbiBEYXJ3aW4gQVJNNjQsIHdlIGNhbiBjb21wYWN0IGNlbGwgcG9pbnRlciBpbnRvIDQg
Ynl0ZXMgKDMyIGJpdHMpLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGFsaWdubWVudCA9
IGFsaWdub2YoVCk+CitjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWNfYXNzZXJ0KGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpLCAiQWxpZ25tZW50IG5lZWRzIHRvIGJl
IHBvd2VyLW9mLXR3byIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUg
PSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXpl
SWZQcm9maXRhYmxlID0gZ2V0TFNCU2V0Tm9uWmVyb0NvbnN0ZXhwcihhbGlnbm1lbnQpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hp
ZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDgsIHVpbnRwdHJfdD4oQk9TX0VGRkVDVElWRV9BRERS
RVNTX1dJRFRIKSAvIDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzdG9yYWdlU2l6
ZVdpdGhBbGlnbm1lbnRTaGlmdCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8OCwgdWludHB0cl90PihC
T1NfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggLSBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFi
bGUpIC8gODsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBbGlnbm1lbnRTaGlmdFByb2Zp
dGFibGUgPSBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0
aEFsaWdubWVudFNoaWZ0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50
U2hpZnRTaXplID0gaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPyBhbGlnbm1lbnRTaGlmdFNp
emVJZlByb2ZpdGFibGUgOiAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFn
ZVNpemUgPSBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdDsKKworICAgIGNvbnN0ZXhwciBQ
YWNrZWRBbGlnbmVkUHRyKCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdGV4cHIgUGFja2VkQWxpZ25lZFB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAg
OiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWRBbGlnbmVkUHRyKFQqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFBhY2tlZFB0cjw+IGNhbiBsb2FkIG1lbW9y
eSB3aXRoIG9uZSBtb3YgYnkgY2hlY2tpbmcgcGFnZSBib3VuZGFyeS4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzc1NAorICAgICAgICB1aW50
cHRyX3QgdmFsdWUgPSAwOworI2lmIEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5
KCZ2YWx1ZSwgbV9zdG9yYWdlLmRhdGEoKSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAg
bWVtY3B5KGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0g
c3RvcmFnZVNpemUpLCBtX3N0b3JhZ2UuZGF0YSgpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAg
ICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQorICAgICAgICAgICAgdmFsdWUg
PDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4o
dmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc2V0KFQqIHBhc3NlZFZhbHVlKQorICAgIHsKKyAg
ICAgICAgdWludHB0cl90IHZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGFzc2VkVmFs
dWUpOworICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCisgICAgICAgICAg
ICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXplOworI2lmIEJDUFUoTElUVExFX0VORElBTikK
KyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksICZ2YWx1ZSwgc3RvcmFnZVNpemUpOwor
I2Vsc2UKKyAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9yYWdlU2l6
ZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIHNl
dChudWxscHRyKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
Z2V0KCk7IH0KKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhp
cyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wg
YnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFs
aWduZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9z
dG9yYWdlIDogbnVsbHB0cjsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBnZXQoKTsgfQorCisgICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1Zh
bHVlKQorICAgIHsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0
ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAg
fQorCisgICAgdm9pZCBzd2FwKHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IH0KKworICAgIHZv
aWQgc3dhcChQYWNrZWRBbGlnbmVkUHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFn
ZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4K
KyAgICB2b2lkIHN3YXAoT3RoZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQo
KTsKKyAgICAgICAgVCogdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAg
ICAgb3RoZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCogdDIpCisgICAgewor
ICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAg
ICAgc2V0KHQxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTx1aW50OF90LCBz
dG9yYWdlU2l6ZT4gbV9zdG9yYWdlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNz
IFBhY2tlZDxUKj4gOiBwdWJsaWMgUGFja2VkQWxpZ25lZFB0cjxULCAxPiB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IFBhY2tlZEFsaWduZWRQdHI8VCwgMT47CisgICAgdXNpbmcgQmFzZTo6
QmFzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRQdHIgPSBQYWNr
ZWQ8VCo+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFBhY2tlZFB0clRyYWl0cyB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gUGFja2VkUHRy
VHJhaXRzPFU+OworCisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQYWNrZWRQdHI8VD47CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwg
VSYmIG5ld1ZhbHVlKSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4gc3RhdGljIHZvaWQgc3dhcChQYWNrZWRQdHI8VD4mIGEs
IE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQorCisgICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBT
dG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2Vy
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAppbmRleCBlYjE1YjMx
ZjEzNThkMmFhYmM3NDI5ZjI2ZDM1YjNmNzk1OTA4MmM4Li42MGYwNjc2YmYzMDZhNjJmYmMyMjJi
YTczYzJiMDM1YTljMWRjNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nj
YXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQnVsa0RlY29tbWl0LmgiCiAjaW5jbHVkZSAiRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSXNvSGVhcEltcGxJbmxp
bmVzLmgiCiAjaWYgQk9TKERBUldJTikKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAj
aW1wb3J0IDxtYWNoL2hvc3RfaW5mby5oPgpAQCAtNjcsNyArNjgsNyBAQCBzdHJ1Y3QgUHJpbnRU
aW1lIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKFNjYXZlbmdlcik7CiAK
LVNjYXZlbmdlcjo6U2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorU2NhdmVuZ2Vy
OjpTY2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgQkFTU0VS
VCghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NjYXZlbmdlci5oCmluZGV4IGY0ODkzNGI1MTFiNmU2YzE4ZDg5NmQ1ZDU5MzQxNTli
ZjUzZTk5MGMuLjcyOGE3NWUzYmRmZGExOTY5Y2EwNTg1MGU2NTE5ZTI0MDkyOGI0ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgYm1h
bGxvYyB7CiAKIGNsYXNzIFNjYXZlbmdlciA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFNjYXZl
bmdlcj4gewogcHVibGljOgotICAgIEJFWFBPUlQgU2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKTsKKyAgICBCRVhQT1JUIFNjYXZlbmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+Jik7CiAgICAgCiAgICAgflNjYXZlbmdlcigpID0gZGVsZXRlOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuY3BwCmluZGV4IDVjOGUyOGEwNTA5MzFhMTQ1M2IyZTNhOTkyY2YyZjgyOTVl
YzlmZWYuLmFkZjIxNjcxZWJkODdhOWZkNjU3OGE0NWNhNjE2MDAyZjVjNzU3YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZNSGVhcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoVk1IZWFwKTsKIAotVk1IZWFw
OjpWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitWTUhlYXA6OlZNSGVhcChjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9WTUhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKaW5k
ZXggNDdhMTEzZGJmMjczNjQxMTQxMjg4YWI2YzRlNTA1ZWFlNWJiNWMxMS4uNjhmMGFiZTZhZDU5
YTBlNDk4YTQwOWJjMTUwOGNjOTA1ZjFlMDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9WTUhlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgZW51bSB7IFN5bmMsIEFzeW5jIH0gU2NhdmVuZ2VNb2Rl
OwogCiBjbGFzcyBWTUhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxWTUhlYXA+IHsKIHB1
YmxpYzoKLSAgICBWTUhlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIFZNSGVhcChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgTGFyZ2VSYW5nZSB0cnlB
bGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9ab25lLmNwcAppbmRleCBmMTFiNTE3ZDJmNTdiNWNkZDE3YjRiYjVhYWM2MGFiZWY5OWU3
NTQyLi4wYmI4Mjk2OTJhYzc4MjAyMjIwNTI2NTMwMDM4OWZjYjY5NDZjOTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvWm9uZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgY29uc3QgbWFsbG9jX2lu
dHJvc3BlY3Rpb25fdCB6b25lSW50cm9zcGVjdCA9IHsKICAgICAuc3RhdGlzdGljcyA9IGJtYWxs
b2M6OnN0YXRpc3RpY3MKIH07CiAKLVpvbmU6OlpvbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
Citab25lOjpab25lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIG1hbGxv
Y196b25lX3Q6OnNpemUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAgbWFsbG9jX3pvbmVfdDo6
em9uZV9uYW1lID0gIldlYktpdCBNYWxsb2MiOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9ab25lLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAppbmRleCAwMDlk
NzIyN2YyMzg3N2VmMWVhNjgyYzAyODJjZDZlZmFmOGU2ZDU3Li5mNWQ2NDk1YTQxZTJlY2MwY2Vk
ZTFjNTM1ZTUzMjE1NGMwMDM1ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1pvbmUuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBab25lIDogcHVibGljIG1hbGxvY196b25lX3QgewogICAgIC8vIEVub3VnaCBj
YXBhY2l0eSB0byB0cmFjayBhIDY0R0IgaGVhcCwgc28gcHJvYmFibHkgZW5vdWdoIGZvciBhbnl0
aGluZy4KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDIwNDg7CiAKLSAg
ICBab25lKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBab25lKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKTsKICAgICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9h
ZGRyZXNzX3QpOwogCiAgICAgdm9pZCBhZGRSYW5nZShSYW5nZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjY4MGI4ZTVjM2I5YzQ3YTFlMWNi
ZmVmMmZlNzdkMGMwNThlZjNlNy4uOTk0MTdlMzQzYjJmZjRlMmUwMWFhYmE2YTcxMjllMTA0NWQ5
NWM4MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIElzb0hlYXAncyBpbml0aWFsIHNldHVwIHNob3Vs
ZCBiZSBzbWFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwOgorICAgICAg
ICAoYXNzZXJ0SGFzT2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRIYXNPbmx5T2JqZWN0cyk6Cisg
ICAgICAgIChhc3NlcnRDbGVhbik6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0xNSAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgYnl0
ZWNvZGUgY2hlY2twb2ludHMgc2luY2UgaXQgYnJlYWtzIHdhdGNoCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcAppbmRleCA0MjYzZjExYjM2
MGNlMGJjMmZkNjA1ODUyNjY2NzI0YzA4ODQxZTgxLi4wOGI3MmFhNmYyMjhkNDE1MzcwYjFhNTk1
NDVlZWU1YmJmMWVmZWVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9ibWFsbG9jL0lzb0hlYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L2JtYWxsb2MvSXNvSGVhcC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
SGFzT2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50
ZXJzKQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVP
YmplY3QoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKICAg
ICAgICAgICAgIHBvaW50ZXJzLmVyYXNlKG9iamVjdCk7CiAgICAgICAgIH0pOwpAQCAtOTYsNiAr
OTcsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBl
PiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmlt
cGwoKTsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxv
Y2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisgICAgICAgIGxvY2tlciwKICAgICAg
ICAgWyZdICh2b2lkKiBvYmplY3QpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShwb2ludGVycy5l
cmFzZShvYmplY3QpLCAxVSk7CiAgICAgICAgIH0pOwpAQCAtMTA4LDE1ICsxMTAsMTEgQEAgc3Rh
dGljIHZvaWQgYXNzZXJ0Q2xlYW4oSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXApCiAgICAgc2NhdmVu
Z2VUaGlzVGhyZWFkKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFw
RW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1w
bC5sb2NrKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmplY3RzKCkp
OwotICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmplY3RzKCkp
OwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0
KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmlt
cGwoKTsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1w
bC5sb2NrKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7
CiAgICAgfQogfQpAQCAtMTg3LDE5ICsxODUsMTIgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxv
cEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCiAgICAgICAgIHB0cnNbaV0gPSBudWxs
cHRyOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0
dGVkUGFnZXNCZWZvcmU7CiAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsK
LSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2Vz
KCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5u
dW1Db21taXR0ZWRQYWdlcygpOwogICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHRvcHRy
c2V0KHB0cnMpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTsp
CiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAgewotICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAg
ICAgICBFWFBFQ1RfRVEobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVk
UGFnZXMoKSk7Ci0gICAgfQorICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0JlZm9yZSwg
aW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKICAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCiAg
ICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwogICAgIGFzc2VydENsZWFuKGhlYXApOwpAQCAt
MjIwLDE5ICsyMTEsMTIgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdl
c1NjYXZlbmdlSW5NaWRkbGUyODgpCiAgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwogICAgIH0K
ICAgICBoZWFwLnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZv
cmU7CiAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjps
b2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVt
Q29tbWl0dGVkUGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQor
ICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQ
YWdlcygpOwogICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTspCiAgICAgICAgIHB0
cnMucHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBFWFBFQ1Rf
RVEobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0g
ICAgfQorICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5udW1Db21t
aXR0ZWRQYWdlcygpKTsKICAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCiAgICAgICAgIGhlYXAu
ZGVhbGxvY2F0ZShwdHIpOwogICAgIGFzc2VydENsZWFuKGhlYXApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387856</attachid>
            <date>2020-01-15 15:29:17 -0800</date>
            <delta_ts>2020-01-16 10:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206214-20200115152916.patch</filename>
            <type>text/plain</type>
            <size>89453</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggN2Q4YTE2NzYzZWFmZDRm
MGY3MWNkMmNhNTRiMWMwMTM3YzlhOTc3OS4uMzM4OGMzNTFjN2JjOTE0MjlmMTg5MDUzMGQxMzg2
NzRlOGY2MTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAyMC0wMS0xNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBJc29I
ZWFwJ3MgaW5pdGlhbCBzZXR1cCBzaG91bGQgYmUgc21hbGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgSXNvSGVhcCByZWxhdGVkIGRhdGEgc3Ry
dWN0dXJlcyBzbWFsbCBieSB1c2luZyBQYWNrZWQgdGVjaG5pcXVlLiBXZSBzdGFydCB1c2luZyBJ
c29IZWFwIGZvciBtYW55IGNsYXNzZXMsCisgICAgICAgIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRo
YXQgd2Uga2VlcCBtZXRhZGF0YSBmb3IgSXNvSGVhcCBzbWFsbCBiZWNhdXNlIHRoZXNlIGRhdGEg
cGVyc2lzdGVudGx5IGV4aXN0cy4KKworICAgICAgICAxLiBXZSBwYXNzIElzb0hlYXBJbXBsPD4g
YXMgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBob2xkaW5nIGl0IHVubmVjZXNzYXJpbHkuCisgICAg
ICAgIDIuIFdlIG1ha2Ugc29tZSBvZiBwb2ludGVycyBQYWNrZWQgc28gdGhhdCB3ZSBjYW4ga2Vl
cCBzaXplb2YoSXNvSGVhcEltcGw8Q29uZmlnPikgc21hbGwuCisgICAgICAgIDMuIE9uZSBvZiB0
aGUgZHJhd2JhY2sgb2YgUGFja2VkUHRyIGlzIHRoYXQgbG9hZGluZyBhbmQgc3RvcmluZyBhcmUg
bm90IGF0b21pYy4gQW5kIHdlIHBhc3MgYGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mYAor
ICAgICAgICAgICB0byBmdW5jdGlvbnMgaWYgZnVuY3Rpb25zIG5lZWQgdG8gYmUgY2FsbGVkIHdp
dGggbG9jayBzbyB0aGF0IHdlIGVuc3VyZSB0aGF0IFBhY2tlZFB0ciBhcmUgYWNjZXNzZWQgb25s
eSB3aGVuIGxvY2sgaXMKKyAgICAgICAgICAgaGVsZCBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAgKGJtYWxsb2M6OmN0
ekNvbnN0ZXhwcik6CisgICAgICAgIChibWFsbG9jOjpnZXRMU0JTZXROb25aZXJvQ29uc3RleHBy
KToKKyAgICAgICAgKiBibWFsbG9jL0JQbGF0Zm9ybS5oOgorICAgICAgICAqIGJtYWxsb2MvRGVi
dWdIZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6RGVidWdIZWFwKToKKyAg
ICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvRGVmZXJyZWRU
cmlnZ2VyLmg6CisgICAgICAgICogYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChibWFsbG9jOjpEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZSk6Cisg
ICAgICAgIChibWFsbG9jOjpEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmhhbmRsZURlZmVycmFs
KToKKyAgICAgICAgKiBibWFsbG9jL0Vudmlyb25tZW50LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6
OkVudmlyb25tZW50OjpFbnZpcm9ubWVudCk6CisgICAgICAgICogYm1hbGxvYy9FbnZpcm9ubWVu
dC5oOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrczo6UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyk6Cisg
ICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmZyZWVh
YmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2li
aWxlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZSk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpz
Y2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmg6CisgICAg
ICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBD
b25zdGFudHM6OkhlYXBDb25zdGFudHMpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9yLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8
Q29uZmlnPjo6SXNvQWxsb2NhdG9yKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0FsbG9jYXRvcjxD
b25maWc+OjphbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmln
Pjo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0FsbG9jYXRvcjxDb25maWc+
OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaDoK
KyAgICAgICAgKGJtYWxsb2M6Oklzb0RlYWxsb2NhdG9yPENvbmZpZz46OnNjYXZlbmdlKToKKyAg
ICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpJc29E
aXJlY3RvcnkpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RF
bGlnaWJsZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZSk6
CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OmRpZERlY29tbWl0KToKKyAgICAg
ICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKToKKyAgICAgICAgKGJt
YWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6cGFz
c2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9j
OjpwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKToKKyAgICAgICAgKiBibWFs
bG9jL0lzb0hlYXBJbXBsLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsQmFzZTo6
SXNvSGVhcEltcGxCYXNlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbXBsLmg6CisgICAg
ICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklz
b0hlYXBJbXBsPENvbmZpZz46Oklzb0hlYXBJbXBsKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hl
YXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKToKKyAgICAgICAgKGJtYWxsb2M6Oklz
b0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKToKKyAgICAg
ICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlKToKKyAgICAgICAgKGJt
YWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKToKKyAg
ICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsQmFzZTo6ZnJlZWFibGVNZW1vcnkpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9iamVjdHMpOgorICAgICAg
ICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVjdG9yeSk6Cisg
ICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFn
ZSk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9i
amVjdCk6CisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmZvb3RwcmludCk6Cisg
ICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmRpZENvbW1pdCk6CisgICAgICAgIChi
bWFsbG9jOjpJc29IZWFwSW1wbEJhc2U6OmRpZERlY29tbWl0KToKKyAgICAgICAgKGJtYWxsb2M6
Oklzb0hlYXBJbXBsQmFzZTo6aXNOb3dGcmVlYWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29I
ZWFwSW1wbEJhc2U6OmlzTm9Mb25nZXJGcmVlYWJsZSk6CisgICAgICAgIChibWFsbG9jOjpJc29I
ZWFwSW1wbDxDb25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQpOgorICAgICAgICAoYm1hbGxvYzo6
SXNvSGVhcEltcGw8Q29uZmlnPjo6ZnJlZWFibGVNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAo
Ym1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9vdHByaW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmRpZENvbW1pdCk6IERlbGV0ZWQuCisg
ICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1pdCk6IERlbGV0
ZWQuCisgICAgICAgIChibWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojppc05vd0ZyZWVhYmxl
KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmlzTm9M
b25nZXJGcmVlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9Jc29QYWdlLmg6Cisg
ICAgICAgIChibWFsbG9jOjpJc29QYWdlQmFzZTo6SXNvUGFnZUJhc2UpOgorICAgICAgICAqIGJt
YWxsb2MvSXNvUGFnZUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmln
Pjo6SXNvUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OmZyZWUpOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcpOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAg
IChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KToKKyAgICAgICAg
KiBibWFsbG9jL0lzb1NoYXJlZEhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhl
YXA6Oklzb1NoYXJlZEhlYXApOgorICAgICAgICAqIGJtYWxsb2MvSXNvU2hhcmVkSGVhcElubGlu
ZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlTmV3KToKKyAg
ICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyk6CisgICAgICAgICog
Ym1hbGxvYy9Jc29TaGFyZWRQYWdlLmg6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRQYWdl
SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFnZTo6ZnJlZSk6CisgICAg
ICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcpOgorICAgICAgICAo
Ym1hbGxvYzo6SXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAqIGJtYWxs
b2MvSXNvVExTLmg6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JFbnRyeS5oOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmg6CisgICAgICAg
IChibWFsbG9jOjpJc29UTFNBbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAg
ICAgICogYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5Lmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNv
VExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxv
Yy9Jc29UTFNFbnRyeS5jcHA6CisgICAgICAgIChibWFsbG9jOjpJc29UTFNFbnRyeTo6SXNvVExT
RW50cnkpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTRW50cnkuaDoKKyAgICAgICAgKiBibWFs
bG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmYXVsdElzb1RM
U0VudHJ5PEVudHJ5VHlwZT46OkRlZmF1bHRJc29UTFNFbnRyeSk6CisgICAgICAgIChibWFsbG9j
OjpEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJc29UTFNFbnRyeSk6IERl
bGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpEZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6
c2NhdmVuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTSW5saW5lcy5oOgor
ICAgICAgICAoYm1hbGxvYzo6SXNvVExTOjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpJ
c29UTFM6OmFsbG9jYXRlSW1wbCk6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRl
RmFzdCk6CisgICAgICAgIChibWFsbG9jOjpJc29UTFM6OmFsbG9jYXRlU2xvdyk6CisgICAgICAg
ICogYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTTGF5
b3V0OjphZGQpOgorICAgICAgICAqIGJtYWxsb2MvUGFja2VkLmg6IEFkZGVkLgorICAgICAgICAo
Ym1hbGxvYzo6UGFja2VkOjpQYWNrZWQpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpnZXQg
Y29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpzZXQpOgorICAgICAgICAoYm1hbGxv
Yzo6UGFja2VkOjpvcGVyYXRvcj0pOgorICAgICAgICAoYm1hbGxvYzo6UGFja2VkOjpleGNoYW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWQ6OnN3YXApOgorICAgICAgICAoYm1hbGxvYzo6
YWxpZ25vZik6CisgICAgICAgIChibWFsbG9jOjpQYWNrZWRQdHJUcmFpdHM6OmV4Y2hhbmdlKToK
KyAgICAgICAgKGJtYWxsb2M6OlBhY2tlZFB0clRyYWl0czo6c3dhcCk6CisgICAgICAgIChibWFs
bG9jOjpQYWNrZWRQdHJUcmFpdHM6OnVud3JhcCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2ZW5n
ZXIuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpTY2F2ZW5nZXIpOgorICAgICAg
ICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmg6CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAuY3BwOgor
ICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjpWTUhlYXApOgorICAgICAgICAqIGJtYWxsb2MvVk1I
ZWFwLmg6CisgICAgICAgICogYm1hbGxvYy9ab25lLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6Olpv
bmU6OlpvbmUpOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5oOgorCiAyMDIwLTAxLTE0ICBCYXN1
a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbYm1hbGxvY10g
Q2FsY3VsYXRlIExpbmVNZXRhZGF0YSBmb3Igc3BlY2lmaWMgVk0gcGFnZSBzaXplIGluIGNvbXBp
bGUgdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAppbmRleCAzMGRiYzM0NWI0OTI1ZmUxMWY2ZjNkNjc3
NGUyY2Y5N2ZjZDZkNWUzLi42YzZiN2E1MDVmOWYxMGM3ZWFhYjVlN2EzNDc5MjY1ZDEyZTc4YTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9DTWFrZUxpc3RzLnR4dApAQCAtMTEyLDYgKzExMiw3IEBAIHNldChibWFsbG9jX1BV
QkxJQ19IRUFERVJTCiAgICAgYm1hbGxvYy9NdXRleC5oCiAgICAgYm1hbGxvYy9PYmplY3QuaAog
ICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5oCisgICAgYm1hbGxvYy9QYWNrZWQuaAogICAgIGJtYWxs
b2MvUGVySGVhcEtpbmQuaAogICAgIGJtYWxsb2MvUGVyUHJvY2Vzcy5oCiAgICAgYm1hbGxvYy9Q
ZXJUaHJlYWQuaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGIxNzNhOTdkYzg1ODkzZTdmYmE5MGU2MjdhODk2M2RhNjYxY2JhNTEu
LjNiODVlNzdmZmI4M2E1NDBlNjhmNDMzM2Y2NzUyYWViODNlZGU4MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MCw2ICsx
NDAsNyBAQAogCQlBRDE0QUQyQTIwMjUyOUM3MDA4OTBFM0IgLyogUHJvY2Vzc0NoZWNrLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQxNEFEMjgyMDI1
MjlCMDAwODkwRTNCIC8qIFByb2Nlc3NDaGVjay5tbSAqLzsgfTsKIAkJREU4QjEzQjMyMUNDNUQ5
RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERFOEIxM0IyMjFDQzVEOUYwMEE2M0ZDRCAvKiBCVk1UYWdzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxRTc0ODAyMjM4
Q0E1QzAwNUQwODRBIC8qIFN0YXRpY1BlclByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMUU3NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0
aWNQZXJQcm9jZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOEQ4NEQyM0NFQjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyOEQ4NEMyM0NFQjM4OTAwNTQ1
QjE4IC8qIFBhY2tlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzQTQxM0M5MjI2MDYxMTQwMDM3RjQ3MCAvKiBJc29TaGFyZWRQYWdlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDEz
QzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGMjQ0MDIyMjVEMkMwMTAw
QTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQYWdl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNG
MjQ0MDQyMjVEMkM3NjAwQTBFMEMzIC8qIElzb1NoYXJlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjQ0MDMyMjVEMkM3NjAwQTBFMEMz
IC8qIElzb1NoYXJlZFBhZ2UuY3BwICovOyB9OwpAQCAtMjk1LDYgKzI5Niw3IEBACiAJCUFEMTRB
RDI4MjAyNTI5QjAwMDg5MEUzQiAvKiBQcm9jZXNzQ2hlY2subW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQcm9jZXNzQ2hlY2subW07IHBhdGggPSBibWFsbG9jL1By
b2Nlc3NDaGVjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU4QjEzQjIyMUND
NUQ5RjAwQTYzRkNEIC8qIEJWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQlZNVGFncy5oOyBwYXRo
ID0gYm1hbGxvYy9CVk1UYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMUU3
NDdGMjIzOENBNUIwMDVEMDg0QSAvKiBTdGF0aWNQZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFN0YXRpY1BlclByb2Nlc3MuaDsgcGF0aCA9IGJtYWxsb2MvU3Rh
dGljUGVyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzI4RDg0QzIz
Q0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFBhY2tlZC5oOyBwYXRoID0gYm1hbGxvYy9QYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNBNDEzQzgyMjYwNjExNDAwMzdGNDcwIC8qIElzb1NoYXJlZFBhZ2VJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2VJbmxp
bmVzLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRjI0NDAxMjI1RDJDMDEwMEEwRTBDMyAvKiBJc29TaGFyZWRQ
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZFBhZ2UuaDsg
cGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0YyNDQwMzIyNUQyQzc2MDBBMEUwQzMgLyogSXNvU2hhcmVkUGFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRQYWdlLmNwcDsgcGF0aCA9
IGJtYWxsb2MvSXNvU2hhcmVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MzIsNiArNTM0LDcgQEAKIAkJCQkxNEM4OTkyQTFDQzQ4NUU3MDAyN0EwNTcgLyogTWFwLmgg
Ki8sCiAJCQkJMTQzQ0I4MUExOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmNwcCAqLywKIAkJCQkx
NDNDQjgxQjE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguaCAqLywKKwkJCQlFMzI4RDg0QzIzQ0VC
Mzg5MDA1NDVCMTggLyogUGFja2VkLmggKi8sCiAJCQkJMEY1QkYxNDgxRjIyQThEODAwMjlEOTFE
IC8qIFBlckhlYXBLaW5kLmggKi8sCiAJCQkJMEYyNkE3QTQyMDU0ODMwRDAwOTBBMTQxIC8qIFBl
clByb2Nlc3MuY3BwICovLAogCQkJCTE0NDQ2QTA3MTdBNjFGQTQwMEY5RUExRCAvKiBQZXJQcm9j
ZXNzLmggKi8sCkBAIC02NDgsNiArNjUxLDcgQEAKIAkJCQkxNDNDQjgxRDE5MDIyQkM5MDBCMTZB
NDUgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFGMUNBMzQ2NTIwMDk5QzhD
MCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkzMThGNDhEMEYwMDk1MDcw
MiAvKiBPYmplY3RUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1
NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAy
OUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhE
NzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4
RjQ4RDc1MDA5NTA3MDIgLyogUGVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCmluZGV4IDkwYTI1NWFkYjdlNzEyMmY5MGFkYzYyYWUwNjNkNTA1NjAz
MjhiNzIuLmQyMmYzY2UwNTQ0OTVkMDJjMGM1NDkzM2RkMThhNzFmODcwNzAwZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9BbGdvcml0aG0uaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQkFz
c2VydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1
ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0x
OTMsNiArMTk0LDMxIEBAIGJvb2wgZmluZEJpdEluV29yZChUIHdvcmQsIHNpemVfdCYgaW5kZXgs
IHNpemVfdCBlbmRJbmRleCwgYm9vbCB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHVuc2lnbmVkIGN0ekNvbnN0ZXhwcihUIHZh
bHVlKQoreworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hB
Ul9CSVQ7CisKKyAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6
dHlwZTsKKyAgICBVVCB1VmFsdWUgPSB2YWx1ZTsKKworICAgIHVuc2lnbmVkIHplcm9Db3VudCA9
IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJpdFNpemU7IGkrKykgeworICAgICAg
ICBpZiAodVZhbHVlICYgMSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHplcm9Db3Vu
dCsrOworICAgICAgICB1VmFsdWUgPj49IDE7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgdW5zaWduZWQgZ2V0TFNCU2V0
Tm9uWmVyb0NvbnN0ZXhwcihUIHQpCit7CisgICAgcmV0dXJuIGN0ekNvbnN0ZXhwcih0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gQWxnb3JpdGhtX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0JQbGF0Zm9ybS5oCmluZGV4IGFmZTllMjAzNDlmYmEwMTc5MjIwMDE3NzZiYjdk
MmNkMjM1MjMyMTcuLmQ3ODRjZjFiZWQwZjI1ZWI2ZjgwMTdjYTY2NTFmYTQ1NjE4MGRlOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMjMwLDYgKzIzMCw0NSBAQAogCiAjZW5k
aWYgLyogQVJNICovCiAKKworI2lmIEJDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKy8qIF9fTFA2
NF9fIGlzIG5vdCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mgc2luY2UgaXQgdXNlcyBMTFA2NC4g
VXNpbmcgX19TSVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIuICovCisjaWYgX19TSVpFT0ZfUE9J
TlRFUl9fID09IDgKKyNkZWZpbmUgQkNQVV9BRERSRVNTNjQgMQorI2VsaWYgX19TSVpFT0ZfUE9J
TlRFUl9fID09IDQKKyNkZWZpbmUgQkNQVV9BRERSRVNTMzIgMQorI2Vsc2UKKyNlcnJvciAiVW5z
dXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0
ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKworI2lmIEJDT01QSUxFUihHQ0NfQ09N
UEFUSUJMRSkKKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXworI2Rl
ZmluZSBCQ1BVX0JJR19FTkRJQU4gMQorI2VsaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9M
SVRUTEVfRU5ESUFOX18KKyNkZWZpbmUgQkNQVV9MSVRUTEVfRU5ESUFOIDEKKyNlbGlmIF9fQllU
RV9PUkRFUl9fID09IF9fT1JERVJfUERQX0VORElBTl9fCisjZGVmaW5lIEJDUFVfTUlERExFX0VO
RElBTiAxCisjZWxzZQorI2Vycm9yICJVbmtub3duIGVuZGlhbiIKKyNlbmRpZgorI2Vsc2UKKyNl
cnJvciAiVW5zdXBwb3J0ZWQgY29tcGlsZXIgZm9yIGJtYWxsb2MiCisjZW5kaWYKKworI2lmIEJD
UFUoQUREUkVTUzY0KQorI2lmIEJPUyhEQVJXSU4pICYmIEJDUFUoQVJNNjQpCisjZGVmaW5lIEJP
U19FRkZFQ1RJVkVfQUREUkVTU19XSURUSCAzNgorI2Vsc2UKKy8qIFdlIHN0cm9uZ2x5IGFzc3Vt
ZSB0aGF0IGVmZmVjdGl2ZSBhZGRyZXNzIHdpZHRoIGlzIDw9IDQ4IGluIDY0Yml0IGFyY2hpdGVj
dHVyZXMgKGUuZy4gTmFOIGJveGluZykuICovCisjZGVmaW5lIEJPU19FRkZFQ1RJVkVfQUREUkVT
U19XSURUSCA0OAorI2VuZGlmCisjZWxzZQorI2RlZmluZSBCT1NfRUZGRUNUSVZFX0FERFJFU1Nf
V0lEVEggMzIKKyNlbmRpZgorCiAjZGVmaW5lIEJBVFRSSUJVVEVfUFJJTlRGKGZvcm1hdFN0cmlu
Z0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu
dGYsIGZvcm1hdFN0cmluZ0FyZ3VtZW50LCBleHRyYUFyZ3VtZW50cykpKQogCiAjaWYgQlBMQVRG
T1JNKE1BQykgfHwgQlBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVn
SGVhcC5jcHAKaW5kZXggN2E2NjdhN2RkNmI1ZTgxY2U2NDc5MTFlODhmYjE2OTFlODQ2ZGYxOS4u
MmM5ZjViNDU4MGFkMTRmYzg2MGIxNmZmNWE2OTljNmEwM2VlMzY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRGVidWdIZWFwLmNwcApAQCAtNDAsNyArNDAsNyBAQCBERUZJTkVfU1RBVElDX1BFUl9Q
Uk9DRVNTX1NUT1JBR0UoRGVidWdIZWFwKTsKIAogI2lmIEJPUyhEQVJXSU4pCiAKLURlYnVnSGVh
cDo6RGVidWdIZWFwKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1Z0hl
YXAoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgOiBtX3pvbmUobWFsbG9jX2Ny
ZWF0ZV96b25lKDAsIDApKQogICAgICwgbV9wYWdlU2l6ZSh2bVBhZ2VTaXplKCkpCiB7CkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgRGVidWdIZWFwOjpkdW1wKCkKIAogI2Vsc2UKIAotRGVidWdIZWFw
OjpEZWJ1Z0hlYXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitEZWJ1Z0hlYXA6OkRlYnVnSGVh
cChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fcGFnZVNpemUodm1QYWdl
U2l6ZSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hl
YXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKaW5kZXggOTU4YTIyMDkw
YTQxNDA3Y2U2MDhiZGQ0YTFmYTEyYjhmZmJhNTEwYi4uOWRiODU1MjNiZWU3NzNhZjE4YTE2Yjk4
MDViMTA5M2JlOTExYzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1
Z0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCkBAIC00MCw3
ICs0MCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKICAgICAKIGNsYXNzIERlYnVnSGVhcCA6IHBy
aXZhdGUgU3RhdGljUGVyUHJvY2VzczxEZWJ1Z0hlYXA+IHsKIHB1YmxpYzoKLSAgICBEZWJ1Z0hl
YXAoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIERlYnVnSGVhcChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgdm9pZCogbWFsbG9jKHNpemVfdCwgRmFpbHVy
ZUFjdGlvbik7CiAgICAgdm9pZCogbWVtYWxpZ24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBG
YWlsdXJlQWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJy
ZWRUcmlnZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oCmlu
ZGV4IGIyNzZhMmMwZTA2ZTNhZjczNzIwYjdjN2FjZjc0NjRlZjRkMTMwYjcuLjI5ZmIxOTc2OWVk
YjlkZGIwYjRjMWU2ZDA3NmRkNWE1OTM2NTM0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9E
ZWZlcnJlZFRyaWdnZXIuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJc29QYWdlVHJpZ2dlci5oIgorI2luY2x1ZGUgIk11dGV4LmgiCisjaW5jbHVkZSA8bXV0
ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtMzcsMTAgKzM5LDEwIEBAIGNsYXNzIERl
ZmVycmVkVHJpZ2dlciB7CiAgICAgRGVmZXJyZWRUcmlnZ2VyKCkgeyB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgZGlkQmVjb21lKElzb1BhZ2U8Q29uZmln
PiYpOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJ
c29QYWdlPENvbmZpZz4mKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci0g
ICAgdm9pZCBoYW5kbGVEZWZlcnJhbChJc29QYWdlPENvbmZpZz4mKTsKKyAgICB2b2lkIGhhbmRs
ZURlZmVycmFsKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4m
KTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0JlZW5EZWZlcnJlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGlu
ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCmlu
ZGV4IDA5Y2ZjODU3N2ZhYWY4MTJiMWZjZjlhMzQ0NTNiNGNiZDBiY2RlMzYuLjcxZWE3MjY4YmIx
Y2YyYzdhZGI0YWU2MDM3ZjM2NDJmYTBjNzI3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oCkBAIC0zMiwyMiArMzIsMjIgQEAgbmFtZXNw
YWNlIGJtYWxsb2MgewogCiB0ZW1wbGF0ZTxJc29QYWdlVHJpZ2dlciB0cmlnZ2VyPgogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJl
Y29tZShJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2Vy
Pjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNvUGFn
ZTxDb25maWc+JiBwYWdlKQogewogICAgIGlmIChwYWdlLmlzSW5Vc2VGb3JBbGxvY2F0aW9uKCkp
CiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gdHJ1ZTsKICAgICBlbHNlCi0gICAgICAgIHBh
Z2UuZGlyZWN0b3J5KCkuZGlkQmVjb21lKCZwYWdlLCB0cmlnZ2VyKTsKKyAgICAgICAgcGFnZS5k
aXJlY3RvcnkoKS5kaWRCZWNvbWUobG9ja2VyLCAmcGFnZSwgdHJpZ2dlcik7CiB9CiAKIHRlbXBs
YXRlPElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12
b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6aGFuZGxlRGVmZXJyYWwoSXNvUGFnZTxDb25m
aWc+JiBwYWdlKQordm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmhhbmRsZURlZmVycmFs
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBw
YWdlKQogewogICAgIFJFTEVBU0VfQkFTU0VSVCghcGFnZS5pc0luVXNlRm9yQWxsb2NhdGlvbigp
KTsKICAgICAKICAgICBpZiAobV9oYXNCZWVuRGVmZXJyZWQpIHsKLSAgICAgICAgcGFnZS5kaXJl
Y3RvcnkoKS5kaWRCZWNvbWUoJnBhZ2UsIHRyaWdnZXIpOworICAgICAgICBwYWdlLmRpcmVjdG9y
eSgpLmRpZEJlY29tZShsb2NrZXIsICZwYWdlLCB0cmlnZ2VyKTsKICAgICAgICAgbV9oYXNCZWVu
RGVmZXJyZWQgPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0Vudmlyb25tZW50LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1l
bnQuY3BwCmluZGV4IDI1NzRiMjM5ZjNhMGZkYzY0OTE3ODZkMzlkMzU3MDE0ZWIxMjA3NzkuLjg3
N2E2YzI5ZTVmN2QzOGM5ZmJlMjFhMjFmNzUwNDBhYjY5MTdkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIGJvb2wgaXNO
YW5vTWFsbG9jRW5hYmxlZCgpCiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShF
bnZpcm9ubWVudCk7CiAKLUVudmlyb25tZW50OjpFbnZpcm9ubWVudChzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKK0Vudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1dGVJc0RlYnVnSGVhcEVu
YWJsZWQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaAppbmRleCBhNTYy
NTZlYmNhOGU5ZDRmY2U5ZGI0MzUyZGUyMGEyNzJmNzM0OTVjLi43YjI4ZGU5MjczZTAzNGRiNGY2
NzlhMDI1YTliMjkwYWJmZmUwYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0Vudmlyb25tZW50LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5o
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgRW52aXJvbm1l
bnQgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxFbnZpcm9ubWVudD4gewogcHVibGljOgotICAg
IEJFWFBPUlQgRW52aXJvbm1lbnQoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEJFWFBP
UlQgRW52aXJvbm1lbnQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIAogICAg
IGJvb2wgaXNEZWJ1Z0hlYXBFbmFibGVkKCkgeyByZXR1cm4gbV9pc0RlYnVnSGVhcEVuYWJsZWQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAppbmRleCAzY2NhMmQ1NGU2NjNkNTQy
MjA1NTAxMDk3MWZkOTNlN2VmYmE3MTExLi40MjAxOTU5ZjYwYmU2MjEwNTJiMTMwZDNlOTY3NWI5
ZmIwMDczNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNw
cAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBzdHJ1Y3QgQ2FsbGJhY2sgewogbmFtZXNwYWNlIGJtYWxsb2MgewogCiBzdHJ1Y3QgUHJp
bWl0aXZlRGlzYWJsZUNhbGxiYWNrcyA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFByaW1pdGl2
ZURpc2FibGVDYWxsYmFja3M+IHsKLSAgICBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzKHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KKyAgICBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KICAgICAKICAgICBWZWN0b3I8R2lnYWNh
Z2U6OkNhbGxiYWNrPiBjYWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKaW5kZXgg
MTE4OWI4Nzc4NDQ3NWUwN2UzYWZiY2EwOWIzMzEwYjMxYmRjMTUwMS4uM2FhZTQzYTIxN2FlM2Ix
ZDFkY2NhZDBlNzE1ZmRjNDFmODM5NjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHNpemVfdCBIZWFwOjpnaWdhY2FnZVNpemUoKQogICAgIHJldHVybiBHaWdh
Y2FnZTo6c2l6ZShnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9CiAKLXNpemVfdCBIZWFwOjpmcmVl
YWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK3NpemVfdCBIZWFwOjpmcmVlYWJs
ZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICByZXR1cm4gbV9m
cmVlYWJsZU1lbW9yeTsKIH0KQEAgLTkxLDE0ICs5MSwxNCBAQCBzaXplX3QgSGVhcDo6Zm9vdHBy
aW50KCkKICAgICByZXR1cm4gbV9mb290cHJpbnQ7CiB9CiAKLXZvaWQgSGVhcDo6bWFya0FsbExh
cmdlQXNFbGlnaWJpbGUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCit2b2lkIEhlYXA6Om1hcmtB
bGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAg
IG1fbGFyZ2VGcmVlLm1hcmtBbGxBc0VsaWdpYmlsZSgpOwogICAgIG1faGFzUGVuZGluZ0RlY29t
bWl0cyA9IGZhbHNlOwogICAgIG1fY29uZGl0aW9uLm5vdGlmeV9hbGwoKTsKIH0KIAotdm9pZCBI
ZWFwOjpkZWNvbW1pdExhcmdlUmFuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFu
Z2UmIHJhbmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpkZWNvbW1p
dExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJh
bmdlLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogewogICAgIG1fZm9vdHByaW50IC09IHJh
bmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CiAgICAgbV9mcmVlYWJsZU1lbW9yeSAtPSByYW5nZS50
b3RhbFBoeXNpY2FsU2l6ZSgpOwpAQCAtMTE0LDkgKzExNCw5IEBAIHZvaWQgSGVhcDo6ZGVjb21t
aXRMYXJnZVJhbmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5nZSwg
QnVsa0RlCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi12b2lkIEhlYXA6OnNjYXZl
bmdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0
ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiAjZWxzZQotdm9pZCBIZWFwOjpzY2F2ZW5n
ZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
LCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQordm9pZCBIZWFwOjpzY2F2ZW5nZShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyLCBz
aXplX3QmIGRlZmVycmVkRGVjb21taXRzKQogI2VuZGlmCiB7CiAgICAgZm9yIChhdXRvJiBsaXN0
IDogbV9mcmVlUGFnZXMpIHsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEhlYXA6OnNjYXZlbmdl
KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIs
IHNpegogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21t
aXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
KQogewogICAgIHZvaWQqIG5ld0hpZ2hXYXRlck1hcmsgPSBudWxscHRyOwogICAgIGZvciAoTGFy
Z2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCBk
YjMyNDUzNjg3ZmI1NmU2MDAwODNiZWUxMGJhNTRmMDgyYzNkNjkzLi41OWM3NWYyN2I5Yzc5ODUw
MGRkZGRmYjVhM2I2MzRiY2M4ZDJjMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtNzYsMTQg
Kzc2LDE0IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgc2hyaW5rTGFyZ2Uoc3RkOjp1bmlxdWVf
bG9jazxNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7CiAKICNpZiBCVVNFKFBBUlRJQUxf
U0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7Ci0gICAgdm9pZCBzY2F2ZW5nZShzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jik7Cisg
ICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29t
bWl0Jik7CiAjZWxzZQotICAgIHZvaWQgc2NhdmVuZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOworICAgIHZvaWQgc2Nh
dmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVf
dCYgZGVmZXJyZWREZWNvbW1pdHMpOwogI2VuZGlmCi0gICAgdm9pZCBzY2F2ZW5nZShzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBmcmVlZCwgc2l6ZV90IGdv
YWwpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1
bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKIAotICAgIHNpemVfdCBm
cmVlYWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgc2l6ZV90IGZyZWVh
YmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAgICBzaXplX3QgZm9v
dHByaW50KCk7CiAKICAgICB2b2lkIGV4dGVybmFsRGVjb21taXQodm9pZCogcHRyLCBzaXplX3Qp
OwpAQCAtOTEsMTAgKzkxLDEwIEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgZXh0ZXJuYWxDb21t
aXQodm9pZCogcHRyLCBzaXplX3QpOwogICAgIHZvaWQgZXh0ZXJuYWxDb21taXQoc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4mLCB2b2lkKiBwdHIsIHNpemVfdCk7CiAKLSAgICB2b2lkIG1hcmtBbGxM
YXJnZUFzRWxpZ2liaWxlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICB2b2lkIG1hcmtB
bGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGRlY29tbWl0TGFyZ2VSYW5nZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgTGFyZ2VSYW5nZSYsIEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgZGVjb21taXRMYXJnZVJh
bmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiwgQnVsa0RlY29t
bWl0Jik7CiAKICAgICBzdHJ1Y3QgTGFyZ2VPYmplY3RIYXNoIHsKICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2godm9pZCoga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50
cy5jcHAKaW5kZXggZmNhOWZjZjc4ZDczM2YzOGJiYmY5MmY3MTI1Y2UwOTYyNWZmNWEyNS4uZjM4
NGE1NGM2YThmYmZkNTk3YzQ0OGIxMDZlNDdmOTM0M2I5NTI3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBibWFs
bG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEhlYXBDb25zdGFudHMp
OwogCi1IZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
KQorSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JikKICAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsgdm1QYWdlU2l6ZVBoeXNpY2FsKCkg
fQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNpemVQaHlzaWNhbCA+PSBzbWFsbFBh
Z2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50
cy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKaW5kZXggMDRlNzNk
MGNjODAwNTQ1ZTcwMzIxYjJjYTQ1M2E0ZmFlZWIxYTAyNi4uMGViYzk1MGU5ZDYyZjQ5Y2ZiZWFi
Yzg5ZTllNGNiMTRmOWNhZDA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBIZWFwQ29u
c3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SGVhcENvbnN0YW50cz4gewogcHVibGlj
OgotICAgIEhlYXBDb25zdGFudHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEhlYXBD
b25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwogICAgIH5IZWFwQ29uc3Rh
bnRzKCkgPSBkZWxldGU7CiAKICAgICBpbmxpbmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6
ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGFzc2VzW3NpemVDbGFzc107IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9yLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvci5oCmluZGV4IGEwZjcwODBjYmIxYzIxNzE3NTdjM2Q2
ZGY3NDc1MmVmNTFiZDhkMTcuLjNiYTA4YWEyYjY4YjJjNDM4ODMwMDBiZjIxNDQxMjFlY2ZjZjQx
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3IuaApAQCAtNDAsMTMgKzQwLDEy
IEBAIGNsYXNzIElzb0FsbG9jYXRvciB7CiAgICAgSXNvQWxsb2NhdG9yKElzb0hlYXBJbXBsPENv
bmZpZz4mKTsKICAgICB+SXNvQWxsb2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUo
Ym9vbCBhYm9ydE9uRmFpbHVyZSk7Ci0gICAgdm9pZCBzY2F2ZW5nZSgpOworICAgIHZvaWQqIGFs
bG9jYXRlKElzb0hlYXBJbXBsPENvbmZpZz4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB2
b2lkIHNjYXZlbmdlKElzb0hlYXBJbXBsPENvbmZpZz4mKTsKICAgICAKIHByaXZhdGU6Ci0gICAg
dm9pZCogYWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHZvaWQqIGFsbG9j
YXRlU2xvdyhJc29IZWFwSW1wbDxDb25maWc+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAg
Ci0gICAgSXNvSGVhcEltcGw8Q29uZmlnPiogbV9oZWFwIHsgbnVsbHB0ciB9OwogICAgIEZyZWVM
aXN0IG1fZnJlZUxpc3Q7CiAgICAgSXNvUGFnZTxDb25maWc+KiBtX2N1cnJlbnRQYWdlIHsgbnVs
bHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2Nh
dG9ySW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVz
LmgKaW5kZXggNTQ1NWZmZGNmMmQwMzIwZjMzZjM2YzczMTFmOTYyZWY3Yzc4MjQ3YS4uZDc5ZjQy
NDEzZDc5NTExMzc2ZDE3ZWU3OTAzODMzMzc2M2JhYzQwMSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTM0LDggKzM0LDcgQEAKIG5hbWVzcGFj
ZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotSXNvQWxsb2NhdG9yPENv
bmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQotICAgIDogbV9o
ZWFwKCZoZWFwKQorSXNvQWxsb2NhdG9yPENvbmZpZz46Oklzb0FsbG9jYXRvcihJc29IZWFwSW1w
bDxDb25maWc+JikKIHsKIH0KIApAQCAtNDUsMzYgKzQ0LDM2IEBAIElzb0FsbG9jYXRvcjxDb25m
aWc+Ojp+SXNvQWxsb2NhdG9yKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9p
ZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlKGJvb2wgYWJvcnRPbkZhaWx1cmUpCit2
b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2NhdGUoSXNvSGVhcEltcGw8Q29uZmlnPiYg
aGVhcCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogICAgIHZvaWQqIHJlc3VsdCA9IG1fZnJlZUxpc3QuYWxsb2NhdGU8
Q29uZmlnPigKICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiBh
bGxvY2F0ZVNsb3coYWJvcnRPbkZhaWx1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
U2xvdyhoZWFwLCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgICAgIH0pOwogICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgb2Ygc2l6ZSAldVxu
IiwgbV9oZWFwLCByZXN1bHQsIENvbmZpZzo6b2JqZWN0U2l6ZSk7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiJXA6IGFsbG9jYXRlZCAlcCBvZiBzaXplICV1XG4iLCAmaGVhcCwgcmVzdWx0LCBD
b25maWc6Om9iamVjdFNpemUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLUJOT19JTkxJTkUgdm9pZCogSXNvQWxsb2NhdG9yPENvbmZpZz46OmFs
bG9jYXRlU2xvdyhib29sIGFib3J0T25GYWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29BbGxv
Y2F0b3I8Q29uZmlnPjo6YWxsb2NhdGVTbG93KElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIGJv
b2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIo
bV9oZWFwLT5sb2NrKTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxv
Y2spOwogCi0gICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlvbk1vZGUgPSBtX2hlYXAtPnVwZGF0
ZUFsbG9jYXRpb25Nb2RlKCk7CisgICAgQWxsb2NhdGlvbk1vZGUgYWxsb2NhdGlvbk1vZGUgPSBo
ZWFwLnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgaWYgKGFsbG9jYXRpb25Nb2RlID09IEFs
bG9jYXRpb25Nb2RlOjpTaGFyZWQpIHsKICAgICAgICAgaWYgKG1fY3VycmVudFBhZ2UpIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAg
ICAgICAgICAgbV9jdXJyZW50UGFnZS0+c3RvcEFsbG9jYXRpbmcobG9ja2VyLCBtX2ZyZWVMaXN0
KTsKICAgICAgICAgICAgIG1fY3VycmVudFBhZ2UgPSBudWxscHRyOwogICAgICAgICAgICAgbV9m
cmVlTGlzdC5jbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2hlYXAtPmFsbG9j
YXRlRnJvbVNoYXJlZChsb2NrZXIsIGFib3J0T25GYWlsdXJlKTsKKyAgICAgICAgcmV0dXJuIGhl
YXAuYWxsb2NhdGVGcm9tU2hhcmVkKGxvY2tlciwgYWJvcnRPbkZhaWx1cmUpOwogICAgIH0KIAog
ICAgIEJBU1NFUlQoYWxsb2NhdGlvbk1vZGUgPT0gQWxsb2NhdGlvbk1vZGU6OkZhc3QpOwogICAg
IAotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9oZWFwLT50YWtlRmly
c3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gaGVh
cC50YWtlRmlyc3RFbGlnaWJsZShsb2NrZXIpOwogICAgIGlmIChyZXN1bHQua2luZCAhPSBFbGln
aWJpbGl0eUtpbmQ6OlN1Y2Nlc3MpIHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKHJlc3VsdC5r
aW5kID09IEVsaWdpYmlsaXR5S2luZDo6T3V0T2ZNZW1vcnkpOwogICAgICAgICBSRUxFQVNFX0JB
U1NFUlQoIWFib3J0T25GYWlsdXJlKTsKQEAgLTgyLDIwICs4MSwyMCBAQCBCTk9fSU5MSU5FIHZv
aWQqIElzb0FsbG9jYXRvcjxDb25maWc+OjphbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVy
ZSkKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1fY3VycmVu
dFBhZ2UtPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAgICBtX2N1cnJlbnRQYWdl
LT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgIAogICAgIG1fY3VycmVu
dFBhZ2UgPSByZXN1bHQucGFnZTsKLSAgICBtX2ZyZWVMaXN0ID0gbV9jdXJyZW50UGFnZS0+c3Rh
cnRBbGxvY2F0aW5nKCk7CisgICAgbV9mcmVlTGlzdCA9IG1fY3VycmVudFBhZ2UtPnN0YXJ0QWxs
b2NhdGluZyhsb2NrZXIpOwogICAgIAogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlPENv
bmZpZz4oW10gKCkgeyBCQ1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0pOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0FsbG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZSgp
Cit2b2lkIElzb0FsbG9jYXRvcjxDb25maWc+OjpzY2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+
JiBoZWFwKQogewogICAgIGlmIChtX2N1cnJlbnRQYWdlKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4gbG9ja2VyKG1faGVhcC0+bG9jayk7Ci0gICAgICAgIG1fY3VycmVudFBhZ2Ut
PnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2tlcihoZWFwLmxvY2spOworICAgICAgICBtX2N1cnJlbnRQYWdlLT5zdG9wQWxsb2Nh
dGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgICAgICBtX2N1cnJlbnRQYWdlID0gbnVsbHB0
cjsKICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDIzZjMyYTNkODliMjVkMmM1
N2UxYTM4MmJkZTAyNjg4NWE0ZTNkOWQuLjAzMmZiNzcxOWFhYmIwMzhiMzgyMjk0NzM5MGJkNDg4
YTg0N2ZiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0
b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklu
bGluZXMuaApAQCAtNzYsNyArNzYsNyBAQCBCTk9fSU5MSU5FIHZvaWQgSXNvRGVhbGxvY2F0b3I8
Q29uZmlnPjo6c2NhdmVuZ2UoKQogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKCpt
X2xvY2spOwogICAgIAogICAgIGZvciAodm9pZCogcHRyIDogbV9vYmplY3RMb2cpCi0gICAgICAg
IElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVlKHB0cik7CisgICAgICAgIElzb1Bh
Z2U8Q29uZmlnPjo6cGFnZUZvcihwdHIpLT5mcmVlKGxvY2tlciwgcHRyKTsKICAgICBtX29iamVj
dExvZy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0RpcmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRl
eCBiYWZlYjNlZTAzMDU5ZTg3ZjliMDVkNzczN2E2YjI1OTBmZmViZGY3Li5lNzJiMmQxNjEyMWI3
M2FmMzFlMGZkN2MxMzJhNWM5NGFmZGRmN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGly
ZWN0b3J5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCaXRzLmgiCiAjaW5jbHVkZSAi
RWxpZ2liaWxpdHlSZXN1bHQuaCIKICNpbmNsdWRlICJJc29QYWdlLmgiCisjaW5jbHVkZSAiUGFj
a2VkLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTQ5
LDcgKzUwLDcgQEAgY2xhc3MgSXNvRGlyZWN0b3J5QmFzZSA6IHB1YmxpYyBJc29EaXJlY3RvcnlC
YXNlQmFzZSB7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCgpIHsgcmV0dXJu
IG1faGVhcDsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25m
aWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJp
Z2dlcikgPSAwOwogICAgIAogcHJvdGVjdGVkOgogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1f
aGVhcDsKQEAgLTY0LDkgKzY1LDkgQEAgY2xhc3MgSXNvRGlyZWN0b3J5IDogcHVibGljIElzb0Rp
cmVjdG9yeUJhc2U8Q29uZmlnPiB7CiAgICAgCiAgICAgLy8gRmluZCB0aGUgZmlyc3QgcGFnZSB0
aGF0IGlzIGVsaWdpYmxlIGZvciBhbGxvY2F0aW9uIGFuZCByZXR1cm4gaXQuIE1heSByZXR1cm4g
bnVsbCBpZiB0aGVyZSBpcyBubwogICAgIC8vIHN1Y2ggdGhpbmcuIE1heSBhbGxvY2F0ZSBhIG5l
dyBwYWdlIGlmIHdlIGhhdmUgYW4gdW5jb21taXR0ZWQgcGFnZS4KLSAgICBFbGlnaWJpbGl0eVJl
c3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8
Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CiAgICAgCi0gICAgdm9pZCBkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdn
ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBmcm9tIGEgYnVsayBkZWNvbW1pdCBmdW5jdGlvbiBp
biB0aGUgU2NhdmVuZ2VyLCBzbyBubyBsb2NrcyBhcmUgaGVsZC4gVGhpcyBmdW5jdGlvbgogICAg
IC8vIG5lZWRzIHRvIGdldCB0aGUgaGVhcCBsb2NrLgpAQCAtNzQsMjMgKzc1LDIzIEBAIGNsYXNz
IElzb0RpcmVjdG9yeSA6IHB1YmxpYyBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4gewogICAgIAog
ICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgZW1wdHkgYW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1
dCB0aGVtIGludG8gdGhlIHZlY3Rvci4gVGhpcyBhbHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFn
ZXMgYXMgYmVpbmcgZGVjb21taXR0ZWQuIEl0J3MgdGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUg
YWN0dWFsIGRlY29tbWl0dGluZy4KLSAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERl
Y29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5H
RSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwogI2VuZGlmCiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2Uo
Y29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBzY2F2ZW5nZVBhZ2Uoc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2
b2lkIHNjYXZlbmdlUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90LCBW
ZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAorICAgIHN0ZDo6YXJyYXk8UGFja2VkQWxpZ25l
ZFB0cjxJc29QYWdlPENvbmZpZz4sIElzb1BhZ2U8Q29uZmlnPjo6cGFnZVNpemU+LCBudW1QYWdl
cz4gbV9wYWdlcyB7IH07CiAgICAgLy8gTk9URTogSSBzdXBwb3NlIHRoYXQgdGhpcyBjb3VsZCBi
ZSB0d28gYml0dmVjdG9ycy4gQnV0IGZyb20gd29ya2luZyBvbiB0aGUgR0MsIEkgZm91bmQgdGhh
dCB0aGUKICAgICAvLyBudW1iZXIgb2YgYml0dmVjdG9ycyBkb2VzIG5vdCBtYXR0ZXIgYXMgbXVj
aCBhcyB3aGV0aGVyIG9yIG5vdCB0aGV5IG1ha2UgaW50dWl0aXZlIHNlbnNlLgogICAgIEJpdHM8
bnVtUGFnZXM+IG1fZWxpZ2libGU7CiAgICAgQml0czxudW1QYWdlcz4gbV9lbXB0eTsKICAgICBC
aXRzPG51bVBhZ2VzPiBtX2NvbW1pdHRlZDsKLSAgICBzdGQ6OmFycmF5PElzb1BhZ2U8Q29uZmln
PiosIG51bVBhZ2VzPiBtX3BhZ2VzOwogICAgIHVuc2lnbmVkIG1fZmlyc3RFbGlnaWJsZU9yRGVj
b21taXR0ZWQgeyAwIH07CiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHVuc2lnbmVk
IG1faGlnaFdhdGVybWFyayB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJl
Y3RvcnlJbmxpbmVzLmgKaW5kZXggMGIxYTFlYzA1YTA3NDE0MDA0MmJiNzZlNzRiMTA4ZmZlYjVm
OWIyNy4uODU1NDJkZjk4NTI0NThlMzVlNDBjMDk5ZGJlMzIyY2I4OWM3NDMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTM5LDEyICszOSwx
MCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgog
SXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVh
cEltcGw8Q29uZmlnPiYgaGVhcCkKICAgICA6IElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPihoZWFw
KQogewotICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhZ2VzOyBpLS07KQotICAgICAgICBtX3Bh
Z2VzW2ldID0gbnVsbHB0cjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25l
ZCBwYXNzZWROdW1QYWdlcz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5
PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0
eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFr
ZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgdW5z
aWduZWQgcGFnZUluZGV4ID0gKG1fZWxpZ2libGUgfCB+bV9jb21taXR0ZWQpLmZpbmRCaXQobV9m
aXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCwgdHJ1ZSk7CiAgICAgbV9maXJzdEVsaWdpYmxlT3JE
ZWNvbW1pdHRlZCA9IHBhZ2VJbmRleDsKQEAgLTU5LDcgKzU3LDcgQEAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJz
dEVsaWdpYmwKICAgICBTY2F2ZW5nZXImIHNjYXZlbmdlciA9ICpTY2F2ZW5nZXI6OmdldCgpOwog
ICAgIHNjYXZlbmdlci5kaWRTdGFydEdyb3dpbmcoKTsKICAgICAKLSAgICBJc29QYWdlPENvbmZp
Zz4qIHBhZ2UgPSBtX3BhZ2VzW3BhZ2VJbmRleF07CisgICAgSXNvUGFnZTxDb25maWc+KiBwYWdl
ID0gbV9wYWdlc1twYWdlSW5kZXhdLmdldCgpOwogICAgIAogICAgIGlmICghbV9jb21taXR0ZWRb
cGFnZUluZGV4XSkgewogICAgICAgICBzY2F2ZW5nZXIuc2NoZWR1bGVJZlVuZGVyTWVtb3J5UHJl
c3N1cmUoSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKQEAgLTkzLDcgKzkxLDcgQEAgRWxpZ2liaWxp
dHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnRh
a2VGaXJzdEVsaWdpYmwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBw
YXNzZWROdW1QYWdlcz4KLXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+
OjpkaWRCZWNvbWUoSXNvUGFnZTxDb25maWc+KiBwYWdlLCBJc29QYWdlVHJpZ2dlciB0cmlnZ2Vy
KQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiogcGFn
ZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IHBhZ2UtPmluZGV4KCk7
CkBAIC0xMDMsNyArMTAxLDcgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1Q
YWdlcz46OmRpZEJlY29tZShJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1AKICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiJXA6ICVwIGRpZCBiZWNvbWUgZWxpZ2libGUuXG4iLCB0aGlzLCBw
YWdlKTsKICAgICAgICAgbV9lbGlnaWJsZVtwYWdlSW5kZXhdID0gdHJ1ZTsKICAgICAgICAgbV9m
aXJzdEVsaWdpYmxlT3JEZWNvbW1pdHRlZCA9IHN0ZDo6bWluKG1fZmlyc3RFbGlnaWJsZU9yRGVj
b21taXR0ZWQsIHBhZ2VJbmRleCk7Ci0gICAgICAgIHRoaXMtPm1faGVhcC5kaWRCZWNvbWVFbGln
aWJsZU9yRGVjb21taXRlZCh0aGlzKTsKKyAgICAgICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVs
aWdpYmxlT3JEZWNvbW1pdGVkKGxvY2tlciwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElzb1BhZ2VUcmlnZ2VyOjpFbXB0eToKICAgICAgICAgaWYgKHZlcmJvc2UpCkBAIC0xMjUs
MjggKzEyMywyOCBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6
ZGlkRGVjb21taXQodW5zaWduZWQgaW5kZXgpCiAgICAgLy8gc3lzY2FsbCBpdHNlbGYgKHdoaWNo
IGhhcyB0byBkbyBtYW55IGhhcmQgdGhpbmdzKS4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcih0aGlzLT5tX2hlYXAubG9jayk7CiAgICAgQkFTU0VSVCghIW1fY29tbWl0dGVkW2lu
ZGV4XSk7Ci0gICAgdGhpcy0+bV9oZWFwLmlzTm9Mb25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4
XSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZy
ZWVhYmxlKG1fcGFnZXNbaW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAg
IG1fY29tbWl0dGVkW2luZGV4XSA9IGZhbHNlOwogICAgIG1fZmlyc3RFbGlnaWJsZU9yRGVjb21t
aXR0ZWQgPSBzdGQ6Om1pbihtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCBpbmRleCk7Ci0g
ICAgdGhpcy0+bV9oZWFwLmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKHRoaXMpOwotICAg
IHRoaXMtPm1faGVhcC5kaWREZWNvbW1pdChtX3BhZ2VzW2luZGV4XSwgSXNvUGFnZUJhc2U6OnBh
Z2VTaXplKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQo
bG9ja2VyLCB0aGlzKTsKKyAgICB0aGlzLT5tX2hlYXAuZGlkRGVjb21taXQobV9wYWdlc1tpbmRl
eF0uZ2V0KCksIElzb1BhZ2VCYXNlOjpwYWdlU2l6ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25m
aWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKHNpemVfdCBpbmRleCwgVmVjdG9yPERl
ZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBh
c3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcGFnZSBpcyBub3cgb2ZmIGxpbWl0cy4KICAgICBt
X2VtcHR5W2luZGV4XSA9IGZhbHNlOwogICAgIG1fZWxpZ2libGVbaW5kZXhdID0gZmFsc2U7Ci0g
ICAgZGVjb21taXRzLnB1c2goRGVmZXJyZWREZWNvbW1pdCh0aGlzLCBtX3BhZ2VzW2luZGV4XSwg
aW5kZXgpKTsKKyAgICBkZWNvbW1pdHMucHVzaChEZWZlcnJlZERlY29tbWl0KHRoaXMsIG1fcGFn
ZXNbaW5kZXhdLmdldCgpLCBpbmRleCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcs
IHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRz
KQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+JiBkZWNvbW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNl
dEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgICAgIHNjYXZlbmdl
UGFnZShpbmRleCwgZGVjb21taXRzKTsKKyAgICAgICAgICAgIHNjYXZlbmdlUGFnZShsb2NrZXIs
IGluZGV4LCBkZWNvbW1pdHMpOwogICAgICAgICB9KTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCiAgICAgbV9oaWdoV2F0ZXJtYXJrID0gMDsKQEAgLTE1NSwxMiArMTUzLDEyIEBAIHZvaWQg
SXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShWZWN0b3I8RGVm
ZXJyZWREZWNvbW1pdD4mIGRlCiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZl
Y3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29u
ZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNv
bW1pdHMpCiB7CiAgICAgKG1fZW1wdHkgJiBtX2NvbW1pdHRlZCkuZm9yRWFjaFNldEJpdCgKICAg
ICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGlmIChpbmRleCA+IG1faGln
aFdhdGVybWFyaykKLSAgICAgICAgICAgICAgICBzY2F2ZW5nZVBhZ2UoaW5kZXgsIGRlY29tbWl0
cyk7CisgICAgICAgICAgICAgICAgc2NhdmVuZ2VQYWdlKGxvY2tlciwgaW5kZXgsIGRlY29tbWl0
cyk7CiAgICAgICAgIH0pOwogICAgIG1faGlnaFdhdGVybWFyayA9IDA7CiB9CkBAIC0xNjgsMTEg
KzE2NiwxMSBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2Nh
dmVuZ2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
LXZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+Ojpmb3JFYWNoQ29tbWl0
dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNz
ZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIG1fY29tbWl0dGVkLmZvckVhY2hTZXRC
aXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgICAgICBmdW5jKCptX3Bh
Z2VzW2luZGV4XSk7CisgICAgICAgICAgICBmdW5jKCoobV9wYWdlc1tpbmRleF0uZ2V0KCkpKTsK
ICAgICAgICAgfSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0hlYXBJbXBsLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3Bw
CmluZGV4IDY5NmQyMmU1N2Y2MjIzZjliOTI5NDJhYjJmMmUwYjA5YWFiZDlhODMuLmRkMDg5YTFh
YmQ1MjFmZWI0ZDE5Mzc2YmY2Y2NlNzM4N2RlYjU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvSGVhcEltcGwuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsK
IAotSXNvSGVhcEltcGxCYXNlOjpJc29IZWFwSW1wbEJhc2UoKQorSXNvSGVhcEltcGxCYXNlOjpJ
c29IZWFwSW1wbEJhc2UoTXV0ZXgmIGxvY2spCisgICAgOiBsb2NrKGxvY2spCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaAppbmRleCAwOTUxMWUyNTdmYmZiZjdjYzA0YjM5
NzhjMWVmZTBiZjJiMzRjMmRkLi4wYmFhODA4ODg2Yjc3NjU3ZGI5MzExMzQxZmMyZGZjMmM1YmU1
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSXNvQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSXNvRGlyZWN0b3J5UGFnZS5o
IgogI2luY2x1ZGUgIklzb1RMU0FsbG9jYXRvckVudHJ5LmgiCisjaW5jbHVkZSAiUGFja2VkLmgi
CiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAg
LTUxLDI3ICs1Miw0OCBAQCBjbGFzcyBCRVhQT1JUIElzb0hlYXBJbXBsQmFzZSB7CiAjaWYgQlVT
RShQQVJUSUFMX1NDQVZFTkdFKQogICAgIHZpcnR1YWwgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVy
bWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKSA9IDA7CiAjZW5kaWYKLSAgICB2aXJ0dWFs
IHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpID0gMDsKLSAgICB2aXJ0dWFsIHNpemVfdCBmb290cHJp
bnQoKSA9IDA7CiAgICAgCiAgICAgdm9pZCBzY2F2ZW5nZU5vdygpOwogICAgIHN0YXRpYyB2b2lk
IGZpbmlzaFNjYXZlbmdpbmcoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CiAKKyAgICB2b2lk
IGRpZENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisgICAgdm9pZCBkaWREZWNvbW1p
dCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7CisKKyAgICB2b2lkIGlzTm93RnJlZWFibGUodm9p
ZCogcHRyLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQgaXNOb0xvbmdlckZyZWVhYmxlKHZvaWQq
IHB0ciwgc2l6ZV90IGJ5dGVzKTsKKworICAgIHNpemVfdCBmcmVlYWJsZU1lbW9yeSgpOworICAg
IHNpemVfdCBmb290cHJpbnQoKTsKKwogICAgIHZvaWQgYWRkVG9BbGxJc29IZWFwcygpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSXNvSGVhcEltcGxCYXNlKCk7CisgICAgSXNvSGVhcEltcGxCYXNlKE11
dGV4Jik7CiAKICAgICBmcmllbmQgY2xhc3MgSXNvU2hhcmVkUGFnZTsKICAgICBmcmllbmQgY2xh
c3MgQWxsSXNvSGVhcHM7CiAgICAgCitwdWJsaWM6CisgICAgLy8gSXQncyBhbG1vc3QgYWx3YXlz
IHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBncmFiIHRoZSBsb2NrLiBUaGlzIGxvY2sg
Y29tZXMgZnJvbSB0aGUKKyAgICAvLyAoKlBlclByb2Nlc3M8SXNvVExTRW50cnlIb2xkZXI8SXNv
VExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+Pj46OmdldCgpKS0+bG9jay4gVGhhdCdzIHByZXR0
eSB3ZWlyZCwgYW5kIHdlIGRvbid0CisgICAgLy8gdHJ5IHRvIGRpc2d1aXNlIHRoZSBmYWN0IHRo
YXQgaXQncyB3ZWlyZC4gV2Ugb25seSBkbyB0aGF0IGJlY2F1c2UgaGVhcHMgaW4gdGhlIHNhbWUg
c2l6ZSBjbGFzcworICAgIC8vIHNoYXJlIHRoZSBzYW1lIGRlYWxsb2NhdG9yIGxvZywgc28gaXQg
bWFrZXMgc2Vuc2UgZm9yIHRoZW0gdG8gYWxzbyBzaGFyZSB0aGUgc2FtZSBsb2NrIHRvCisgICAg
Ly8gYW1vcnRpemUgbG9jayBhY3F1aXNpdGlvbiBjb3N0cy4KKyAgICBNdXRleCYgbG9jazsKK3By
b3RlY3RlZDoKICAgICBJc29IZWFwSW1wbEJhc2UqIG1fbmV4dCB7IG51bGxwdHIgfTsKICAgICBz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1fbGFzdFNsb3dQYXRoVGltZTsK
LSAgICBzdGQ6OmFycmF5PHZvaWQqLCBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRD
ZWxscyB7IH07CisgICAgc2l6ZV90IG1fZm9vdHByaW50IHsgMCB9OworICAgIHNpemVfdCBtX2Zy
ZWVhYmxlTWVtb3J5IHsgMCB9OworI2lmIEVOQUJMRV9QSFlTSUNBTF9QQUdFX01BUAorICAgIFBo
eXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFnZU1hcDsKKyNlbmRpZgorICAgIHN0ZDo6YXJyYXk8
UGFja2VkQWxpZ25lZFB0cjx1aW50OF90LCBibWFsbG9jOjphbGlnbm1lbnQ+LCBtYXhBbGxvY2F0
aW9uRnJvbVNoYXJlZD4gbV9zaGFyZWRDZWxscyB7IH07Citwcm90ZWN0ZWQ6CiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZkFsbG9jYXRpb25zRnJvbVNoYXJlZEluT25lQ3ljbGUgeyAwIH07CiAgICAg
dW5zaWduZWQgbV9hdmFpbGFibGVTaGFyZWQgeyBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZE1hc2sg
fTsKICAgICBBbGxvY2F0aW9uTW9kZSBtX2FsbG9jYXRpb25Nb2RlIHsgQWxsb2NhdGlvbk1vZGU6
OkluaXQgfTsKLSAgICAKKyAgICBib29sIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVj
b21taXR0ZWQgeyB0cnVlIH07CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YobV9hdmFpbGFibGVT
aGFyZWQpICogOCA+PSBtYXhBbGxvY2F0aW9uRnJvbVNoYXJlZCwgIiIpOwogfTsKIApAQCAtODMs
MjEgKzEwNSwxNyBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1w
bEJhc2UgewogcHVibGljOgogICAgIElzb0hlYXBJbXBsKCk7CiAgICAgCi0gICAgRWxpZ2liaWxp
dHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZSgpOworICAgIEVsaWdpYmlsaXR5UmVz
dWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOwogICAgIAogICAgIC8vIENhbGxiYWNrcyBmcm9tIGRpcmVjdG9yeS4KLSAgICB2b2lkIGRp
ZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2Vz
SW5JbmxpbmVEaXJlY3Rvcnk+Kik7Ci0gICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBh
Z2VzPiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5Jbmxp
bmVEaXJlY3Rvcnk+Kik7CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGly
ZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qKTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdl
KFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2lmIEJVU0UoUEFSVElBTF9T
Q0FWRU5HRSkKICAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBzaXplX3QgZnJlZWFibGVNZW1v
cnkoKSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBmb290cHJpbnQoKSBvdmVycmlkZTsKLSAgICAK
ICAgICB1bnNpZ25lZCBhbGxvY2F0b3JPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBkZWFsbG9jYXRv
ck9mZnNldCgpOwogCkBAIC0xMDYsNDYgKzEyNCwyNSBAQCBjbGFzcyBJc29IZWFwSW1wbCBmaW5h
bCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogICAgIHVuc2lnbmVkIG51bUNvbW1pdHRlZFBh
Z2VzKCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVh
Y2hEaXJlY3RvcnkoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBG
dW5jJik7CisgICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIC8vIFRoaXMgaXMgb25seSBhY2N1
cmF0ZSB3aGVuIGFsbCB0aHJlYWRzIGFyZSBzY2F2ZW5nZWQuIE90aGVyd2lzZSBpdCB3aWxsIG92
ZXJlc3RpbWF0ZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFj
aExpdmVPYmplY3QoY29uc3QgRnVuYyYpOwotCi0gICAgdm9pZCBkaWRDb21taXQodm9pZCogcHRy
LCBzaXplX3QgYnl0ZXMpOwotICAgIHZvaWQgZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3Qg
Ynl0ZXMpOwotCi0gICAgdm9pZCBpc05vd0ZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVz
KTsKLSAgICB2b2lkIGlzTm9Mb25nZXJGcmVlYWJsZSh2b2lkKiBwdHIsIHNpemVfdCBieXRlcyk7
CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgY29uc3QgRnVuYyYpOwogCiAgICAgQWxsb2NhdGlvbk1vZGUgdXBkYXRlQWxsb2NhdGlvbk1v
ZGUoKTsKICAgICB2b2lkKiBhbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwotICAgIAotICAgIC8vIEl0J3MgYWxtb3N0
IGFsd2F5cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZ3JhYiB0aGUgbG9jay4gVGhp
cyBsb2NrIGNvbWVzIGZyb20gdGhlCi0gICAgLy8gKCpQZXJQcm9jZXNzPElzb1RMU0VudHJ5SG9s
ZGVyPElzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPj4+OjpnZXQoKSktPmxvY2suIFRoYXQn
cyBwcmV0dHkgd2VpcmQsIGFuZCB3ZSBkb24ndAotICAgIC8vIHRyeSB0byBkaXNndWlzZSB0aGUg
ZmFjdCB0aGF0IGl0J3Mgd2VpcmQuIFdlIG9ubHkgZG8gdGhhdCBiZWNhdXNlIGhlYXBzIGluIHRo
ZSBzYW1lIHNpemUgY2xhc3MKLSAgICAvLyBzaGFyZSB0aGUgc2FtZSBkZWFsbG9jYXRvciBsb2cs
IHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRvIGFsc28gc2hhcmUgdGhlIHNhbWUgbG9jayB0
bwotICAgIC8vIGFtb3J0aXplIGxvY2sgYWNxdWlzaXRpb24gY29zdHMuCi0gICAgTXV0ZXgmIGxv
Y2s7CiAKIHByaXZhdGU6CisgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4g
bV9oZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OworICAgIFBhY2tlZFB0cjxJc29EaXJlY3RvcnlQ
YWdlPENvbmZpZz4+IG1fdGFpbERpcmVjdG9yeSB7IG51bGxwdHIgfTsKKyAgICBQYWNrZWRQdHI8
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+PiBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJl
Y3RvcnkgeyBudWxscHRyIH07CiAgICAgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklu
bGluZURpcmVjdG9yeT4gbV9pbmxpbmVEaXJlY3Rvcnk7Ci0gICAgSXNvRGlyZWN0b3J5UGFnZTxD
b25maWc+KiBtX2hlYWREaXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAgSXNvRGlyZWN0b3J5UGFn
ZTxDb25maWc+KiBtX3RhaWxEaXJlY3RvcnkgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fZm9v
dHByaW50IHsgMCB9OwotICAgIHNpemVfdCBtX2ZyZWVhYmxlTWVtb3J5IHsgMCB9OwotI2lmIEVO
QUJMRV9QSFlTSUNBTF9QQUdFX01BUAotICAgIFBoeXNpY2FsUGFnZU1hcCBtX3BoeXNpY2FsUGFn
ZU1hcDsKLSNlbmRpZgogICAgIHVuc2lnbmVkIG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRleCB7IDEg
fTsgLy8gV2Ugc3RhcnQgYXQgMSBzbyB0aGF0IHRoZSBoaWdoIHdhdGVyIG1hcmsgYmVpbmcgemVy
byBtZWFucyB3ZSd2ZSBvbmx5IGFsbG9jYXRlZCBpbiB0aGUgaW5saW5lIGRpcmVjdG9yeSBzaW5j
ZSB0aGUgbGFzdCBzY2F2ZW5nZS4KICAgICB1bnNpZ25lZCBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1h
cmsgeyAwIH07Ci0gICAgCi0gICAgYm9vbCBtX2lzSW5saW5lRGlyZWN0b3J5RWxpZ2libGVPckRl
Y29tbWl0dGVkIHsgdHJ1ZSB9OwotICAgIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogbV9maXJz
dEVsaWdpYmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIAogICAgIElz
b1RMU0VudHJ5SG9sZGVyPElzb1RMU0FsbG9jYXRvckVudHJ5PENvbmZpZz4+IG1fYWxsb2NhdG9y
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElu
bGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKaW5k
ZXggMmE0ZmIyODQzNmIzNThlOTZhMTcwMWI5MTMzNzVhNTMzZWRkYWVkMC4uOTRlYjNmNGMxNGY4
ZTZmN2NiNDdmNWIwM2MzMmM4OTk4ZDU2MWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb0hlYXBJbXBsSW5saW5lcy5oCkBAIC0zNCw2NCArMzQsNzAgQEAgbmFtZXNwYWNlIGJtYWxs
b2MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiBJc29IZWFwSW1wbDxDb25maWc+OjpJ
c29IZWFwSW1wbCgpCi0gICAgOiBsb2NrKCgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJ
c29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrKQorICAgIDogSXNv
SGVhcEltcGxCYXNlKCgqUGVyUHJvY2VzczxJc29UTFNFbnRyeUhvbGRlcjxJc29UTFNEZWFsbG9j
YXRvckVudHJ5PENvbmZpZz4+Pjo6Z2V0KCkpLT5sb2NrKQogICAgICwgbV9pbmxpbmVEaXJlY3Rv
cnkoKnRoaXMpCiAgICAgLCBtX2FsbG9jYXRvcigqdGhpcykKIHsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uZmlnPgotRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25m
aWc+Ojp0YWtlRmlyc3RFbGlnaWJsZSgpCitFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hl
YXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mIGxvY2tlcikKIHsKICAgICBpZiAobV9pc0lubGluZURpcmVjdG9yeUVsaWdpYmxlT3JE
ZWNvbW1pdHRlZCkgewotICAgICAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9
IG1faW5saW5lRGlyZWN0b3J5LnRha2VGaXJzdEVsaWdpYmxlKCk7CisgICAgICAgIEVsaWdpYmls
aXR5UmVzdWx0PENvbmZpZz4gcmVzdWx0ID0gbV9pbmxpbmVEaXJlY3RvcnkudGFrZUZpcnN0RWxp
Z2libGUobG9ja2VyKTsKICAgICAgICAgaWYgKHJlc3VsdC5raW5kID09IEVsaWdpYmlsaXR5S2lu
ZDo6RnVsbCkKICAgICAgICAgICAgIG1faXNJbmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21t
aXR0ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3Rv
cnkpIHsKLSAgICAgICAgLy8gSWYgbm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUg
YmVjYXVzZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCi0g
ICAgICAgIC8vIG9mIHRoZSB3b3JsZCBpZiB3ZSBicm9rZSB0aGlzIGludmFyaWFudC4gSXQgd291
bGQgb25seSBtZWFuIHRoYXQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoKSB3b3VsZCBu
ZWVkCi0gICAgICAgIC8vIGEgbnVsbCBjaGVjay4KLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUKCFt
X2hlYWREaXJlY3RvcnkpOwotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9y
eSk7Ci0gICAgfQotICAgIAotICAgIGZvciAoOyBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWRE
aXJlY3Rvcnk7IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+bmV4dCkgewotICAgICAgICBFbGlnaWJpbGl0
eVJlc3VsdDxDb25maWc+IHJlc3VsdCA9IG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVj
dG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJsZSgpOwotICAgICAgICBpZiAocmVzdWx0Lmtp
bmQgIT0gRWxpZ2liaWxpdHlLaW5kOjpGdWxsKSB7Ci0gICAgICAgICAgICBtX2RpcmVjdG9yeUhp
Z2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmssIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIHsKKyAgICAgICAgYXV0byogY3Vyc29yID0gbV9maXJzdEVsaWdpYmxl
T3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgpOworICAgICAgICBpZiAoIWN1cnNvcikgeworICAg
ICAgICAgICAgLy8gSWYgbm90aGluZyBpcyBlbGlnaWJsZSwgaXQgY2FuIG9ubHkgYmUgYmVjYXVz
ZSB3ZSBoYXZlIG5vIGRpcmVjdG9yaWVzLiBJdCB3b3VsZG4ndCBiZSB0aGUgZW5kCisgICAgICAg
ICAgICAvLyBvZiB0aGUgd29ybGQgaWYgd2UgYnJva2UgdGhpcyBpbnZhcmlhbnQuIEl0IHdvdWxk
IG9ubHkgbWVhbiB0aGF0IGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKCkgd291bGQgbmVl
ZAorICAgICAgICAgICAgLy8gYSBudWxsIGNoZWNrLgorICAgICAgICAgICAgUkVMRUFTRV9CQVNT
RVJUKCFtX2hlYWREaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJU
KCFtX3RhaWxEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Zm9yICg7IGN1cnNvcjsgY3Vyc29yID0gY3Vyc29yLT5uZXh0KSB7CisgICAgICAgICAgICAgICAg
RWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBjdXJzb3ItPnBheWxvYWQudGFrZUZp
cnN0RWxpZ2libGUobG9ja2VyKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9maXJzdEVsaWdp
YmxlT3JEZWNvbW1pdGVkRGlyZWN0b3J5LmdldCgpID09IGN1cnNvcik7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC5raW5kICE9IEVsaWdpYmlsaXR5S2luZDo6RnVsbCkgeworICAgICAgICAg
ICAgICAgICAgICBtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmsgPSBzdGQ6Om1heChtX2RpcmVjdG9y
eUhpZ2hXYXRlcm1hcmssIGN1cnNvci0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Zmlyc3RFbGlnaWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSA9IGN1cnNvcjsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgPSBudWxs
cHRyOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGF1dG8qIG5ld0RpcmVjdG9yeSA9IG5l
dyBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4oKnRoaXMsIG1fbmV4dERpcmVjdG9yeVBhZ2VJbmRl
eCsrKTsKLSAgICBpZiAobV9oZWFkRGlyZWN0b3J5KSB7CisgICAgaWYgKG1faGVhZERpcmVjdG9y
eS5nZXQoKSkgewogICAgICAgICBtX3RhaWxEaXJlY3RvcnktPm5leHQgPSBuZXdEaXJlY3Rvcnk7
CiAgICAgICAgIG1fdGFpbERpcmVjdG9yeSA9IG5ld0RpcmVjdG9yeTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBSRUxFQVNFX0JBU1NFUlQoIW1fdGFpbERpcmVjdG9yeSk7CisgICAgICAgIFJFTEVB
U0VfQkFTU0VSVCghbV90YWlsRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgbV9oZWFkRGlyZWN0
b3J5ID0gbmV3RGlyZWN0b3J5OwogICAgICAgICBtX3RhaWxEaXJlY3RvcnkgPSBuZXdEaXJlY3Rv
cnk7CiAgICAgfQogICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IG5ld0RpcmVjdG9yeS0+
aW5kZXgoKTsKICAgICBtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0ZWREaXJlY3RvcnkgPSBuZXdE
aXJlY3Rvcnk7Ci0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBuZXdEaXJl
Y3RvcnktPnBheWxvYWQudGFrZUZpcnN0RWxpZ2libGUoKTsKKyAgICBFbGlnaWJpbGl0eVJlc3Vs
dDxDb25maWc+IHJlc3VsdCA9IG5ld0RpcmVjdG9yeS0+cGF5bG9hZC50YWtlRmlyc3RFbGlnaWJs
ZShsb2NrZXIpOwogICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1bHQua2luZCAhPSBFbGlnaWJpbGl0
eUtpbmQ6OkZ1bGwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRl
Y29tbWl0ZWQoSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4q
IGRpcmVjdG9yeSkKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVP
ckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxD
b25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVM
RUFTRV9CQVNTRVJUKGRpcmVjdG9yeSA9PSAmbV9pbmxpbmVEaXJlY3RvcnkpOwogICAgIG1faXNJ
bmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQgPSB0cnVlOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVs
aWdpYmxlT3JEZWNvbW1pdGVkKElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8
Q29uZmlnPjo6bnVtUGFnZXM+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46
OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBh
Z2VzPiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkpOwogICAgIGF1dG8qIGRpcmVjdG9yeVBhZ2UgPSBJc29EaXJl
Y3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoZGlyZWN0b3J5KTsKQEAgLTEwNCw4ICsxMTAsOSBA
QCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYgZGVjb21taXRzKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRo
aXMtPmxvY2spOwogICAgIGZvckVhY2hEaXJlY3RvcnkoCisgICAgICAgIGxvY2tlciwKICAgICAg
ICAgWyZdIChhdXRvJiBkaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIGRpcmVjdG9yeS5zY2F2ZW5n
ZShkZWNvbW1pdHMpOworICAgICAgICAgICAgZGlyZWN0b3J5LnNjYXZlbmdlKGxvY2tlciwgZGVj
b21taXRzKTsKICAgICAgICAgfSk7CiAgICAgbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrID0gMDsK
IH0KQEAgLTExNiwxNyArMTIzLDE2IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6c2NhdmVu
Z2VUb0hpZ2hXYXRlcm1hcmsoVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvCiB7CiAgICAg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgaWYgKCFtX2Rp
cmVjdG9yeUhpZ2hXYXRlcm1hcmspCi0gICAgICAgIG1faW5saW5lRGlyZWN0b3J5LnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGRlY29tbWl0cyk7Ci0gICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENv
bmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3Rvcnk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KSB7
CisgICAgICAgIG1faW5saW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tl
ciwgZGVjb21taXRzKTsKKyAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9
IG1faGVhZERpcmVjdG9yeS5nZXQoKTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpIHsKICAgICAg
ICAgaWYgKHBhZ2UtPmluZGV4KCkgPj0gbV9kaXJlY3RvcnlIaWdoV2F0ZXJtYXJrKQotICAgICAg
ICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhkZWNvbW1pdHMpOwor
ICAgICAgICAgICAgcGFnZS0+cGF5bG9hZC5zY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhsb2NrZXIs
IGRlY29tbWl0cyk7CiAgICAgfQogICAgIG1fZGlyZWN0b3J5SGlnaFdhdGVybWFyayA9IDA7CiB9
CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotc2l6ZV90IElzb0hlYXBJbXBs
PENvbmZpZz46OmZyZWVhYmxlTWVtb3J5KCkKK2lubGluZSBzaXplX3QgSXNvSGVhcEltcGxCYXNl
OjpmcmVlYWJsZU1lbW9yeSgpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7CiB9CkBA
IC0xNDYsOCArMTUyLDEwIEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46OmRlYWxsb2Nh
dG9yT2Zmc2V0KCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJ
bXBsPENvbmZpZz46Om51bUxpdmVPYmplY3RzKCkKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZv
ckVhY2hMaXZlT2JqZWN0KAorICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9pZCopIHsK
ICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAgICB9KTsKQEAgLTE1Nyw4ICsxNjUsMTAgQEAg
dW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9iamVjdHMoKQogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgogdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0
dGVkUGFnZXMoKQogeworICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPmxv
Y2spOwogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2Uo
CisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChJc29QYWdlPENvbmZpZz4mKSB7CiAgICAg
ICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfSk7CkBAIC0xNjcsNDAgKzE3Nyw0MSBAQCB1bnNp
Z25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1Db21taXR0ZWRQYWdlcygpCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJ
bXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmdW5jKG1faW5saW5lRGlyZWN0b3J5
KTsKLSAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVj
dG9yeTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpCisgICAgZm9yIChJc29EaXJlY3RvcnlQYWdl
PENvbmZpZz4qIHBhZ2UgPSBtX2hlYWREaXJlY3RvcnkuZ2V0KCk7IHBhZ2U7IHBhZ2UgPSBwYWdl
LT5uZXh0KQogICAgICAgICBmdW5jKHBhZ2UtPnBheWxvYWQpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxD
b25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29I
ZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZm9yRWFjaERpcmVj
dG9yeSgKKyAgICAgICAgbG9ja2VyLAogICAgICAgICBbJl0gKGF1dG8mIGRpcmVjdG9yeSkgewot
ICAgICAgICAgICAgZGlyZWN0b3J5LmZvckVhY2hDb21taXR0ZWRQYWdlKGZ1bmMpOworICAgICAg
ICAgICAgZGlyZWN0b3J5LmZvckVhY2hDb21taXR0ZWRQYWdlKGxvY2tlciwgZnVuYyk7CiAgICAg
ICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25z
dCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVj
dChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiB7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2UoCisgICAgICAgIGxvY2tlciwKICAgICAgICAg
WyZdIChJc29QYWdlPENvbmZpZz4mIHBhZ2UpIHsKLSAgICAgICAgICAgIHBhZ2UuZm9yRWFjaExp
dmVPYmplY3QoZnVuYyk7CisgICAgICAgICAgICBwYWdlLmZvckVhY2hMaXZlT2JqZWN0KGxvY2tl
ciwgZnVuYyk7CiAgICAgICAgIH0pOwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IG1heEFsbG9jYXRpb25Gcm9tU2hhcmVkOyArK2luZGV4KSB7Ci0gICAgICAgIHZvaWQqIHBv
aW50ZXIgPSBtX3NoYXJlZENlbGxzW2luZGV4XTsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IG1f
c2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgpOwogICAgICAgICBpZiAocG9pbnRlciAmJiAhKG1fYXZh
aWxhYmxlU2hhcmVkICYgKDFVIDw8IGluZGV4KSkpCiAgICAgICAgICAgICBmdW5jKHBvaW50ZXIp
OwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotc2l6ZV90IElzb0hlYXBJ
bXBsPENvbmZpZz46OmZvb3RwcmludCgpCitpbmxpbmUgc2l6ZV90IElzb0hlYXBJbXBsQmFzZTo6
Zm9vdHByaW50KCkKIHsKICNpZiBFTkFCTEVfUEhZU0lDQUxfUEFHRV9NQVAKICAgICBSRUxFQVNF
X0JBU1NFUlQobV9mb290cHJpbnQgPT0gbV9waHlzaWNhbFBhZ2VNYXAuZm9vdHByaW50KCkpOwpA
QCAtMjA4LDggKzIxOSw3IEBAIHNpemVfdCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb290cHJpbnQo
KQogICAgIHJldHVybiBtX2Zvb3RwcmludDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
Pgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3Qg
Ynl0ZXMpCitpbmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmRpZENvbW1pdCh2b2lkKiBwdHIs
IHNpemVfdCBieXRlcykKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7CiAgICAgbV9mb290cHJp
bnQgKz0gYnl0ZXM7CkBAIC0yMTgsOCArMjI4LDcgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+
OjpkaWRDb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiAjZW5kaWYKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1p
dCh2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkIElzb0hlYXBJbXBsQmFzZTo6
ZGlkRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJB
TShwdHIpOwogICAgIG1fZm9vdHByaW50IC09IGJ5dGVzOwpAQCAtMjI4LDE1ICsyMzcsMTMgQEAg
dm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWREZWNvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBi
eXRlcykKICNlbmRpZgogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hl
YXBJbXBsPENvbmZpZz46OmlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCitp
bmxpbmUgdm9pZCBJc29IZWFwSW1wbEJhc2U6OmlzTm93RnJlZWFibGUodm9pZCogcHRyLCBzaXpl
X3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZnJlZWFibGVNZW1v
cnkgKz0gYnl0ZXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVh
cEltcGw8Q29uZmlnPjo6aXNOb0xvbmdlckZyZWVhYmxlKHZvaWQqIHB0ciwgc2l6ZV90IGJ5dGVz
KQoraW5saW5lIHZvaWQgSXNvSGVhcEltcGxCYXNlOjppc05vTG9uZ2VyRnJlZWFibGUodm9pZCog
cHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwogICAgIG1fZnJl
ZWFibGVNZW1vcnkgLT0gYnl0ZXM7CkBAIC0zMDEsNyArMzA4LDcgQEAgdm9pZCogSXNvSGVhcElt
cGw8Q29uZmlnPjo6YWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mLCBib28KICAgICB1bnNpZ25lZCBpbmRleFBsdXNPbmUgPSBfX2J1aWx0aW5fZmZzKG1fYXZh
aWxhYmxlU2hhcmVkKTsKICAgICBCQVNTRVJUKGluZGV4UGx1c09uZSk7CiAgICAgdW5zaWduZWQg
aW5kZXggPSBpbmRleFBsdXNPbmUgLSAxOwotICAgIHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2Vs
bHNbaW5kZXhdOworICAgIHZvaWQqIHJlc3VsdCA9IG1fc2hhcmVkQ2VsbHNbaW5kZXhdLmdldCgp
OwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFyZWQgYWdhaW4gb2Ygc2l6
ZSAldVxuIiwgdGhpcywgcmVzdWx0LCBDb25maWc6Om9iamVjdFNpemUpOwpAQCAtMzE0LDcgKzMy
MSw3IEBAIHZvaWQqIElzb0hlYXBJbXBsPENvbmZpZz46OmFsbG9jYXRlRnJvbVNoYXJlZChjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVwOiBhbGxvY2F0ZWQgJXAgZnJvbSBzaGFyZWQgb2Ygc2l6ZSAldVxuIiwgdGhpcywgcmVz
dWx0LCBDb25maWc6Om9iamVjdFNpemUpOwogICAgICAgICBCQVNTRVJUKGluZGV4IDwgSXNvSGVh
cEltcGxCYXNlOjptYXhBbGxvY2F0aW9uRnJvbVNoYXJlZCk7CiAgICAgICAgICppbmRleFNsb3RG
b3I8Q29uZmlnPihyZXN1bHQpID0gaW5kZXg7Ci0gICAgICAgIG1fc2hhcmVkQ2VsbHNbaW5kZXhd
ID0gcmVzdWx0OworICAgICAgICBtX3NoYXJlZENlbGxzW2luZGV4XSA9IGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4ocmVzdWx0KTsKICAgICB9CiAgICAgQkFTU0VSVChyZXN1bHQpOwogICAgIG1fYXZh
aWxhYmxlU2hhcmVkICY9IH4oMVUgPDwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29QYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaApp
bmRleCA1NDI1Yjg4YTY3ODkyMmQ4OGMyYzU4ZDc1MGNhMjkyNmFhZjM0MDA4Li5hMTUxY2Y5ODc5
MTI1MjE0M2RlZmQyYjBhN2JkNTcwMGNlZTAxNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1BhZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2Uu
aApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkJpdHMuaCIKICNpbmNsdWRlICJEZWZlcnJl
ZFRyaWdnZXIuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgorI2luY2x1ZGUgIk11dGV4LmgiCiAj
aW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2Mg
ewogCkBAIC00Miw2ICs0NCw4IEBAIGNsYXNzIElzb1BhZ2VCYXNlIHsKIAogICAgIGV4cGxpY2l0
IElzb1BhZ2VCYXNlKGJvb2wgaXNTaGFyZWQpCiAgICAgICAgIDogbV9pc1NoYXJlZChpc1NoYXJl
ZCkKKyAgICAgICAgLCBtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkKHRydWUpCisgICAgICAgICwg
bV9pc0luVXNlRm9yQWxsb2NhdGlvbihmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC01Miw3ICs1
Niw5IEBAIGNsYXNzIElzb1BhZ2VCYXNlIHsKIHByb3RlY3RlZDoKICAgICBCRVhQT1JUIHN0YXRp
YyB2b2lkKiBhbGxvY2F0ZVBhZ2VNZW1vcnkoKTsKIAotICAgIGJvb2wgbV9pc1NoYXJlZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzU2hhcmVkIDogMTsKKyAgICBib29sIG1fZWxpZ2liaWxpdHlI
YXNCZWVuTm90ZWQgOiAxOworICAgIGJvb2wgbV9pc0luVXNlRm9yQWxsb2NhdGlvbiA6IDE7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CkBAIC03MSwxOSArNzcsMTkgQEAgY2xhc3Mg
SXNvUGFnZSA6IHB1YmxpYyBJc29QYWdlQmFzZSB7CiAKICAgICB1bnNpZ25lZCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICAKLSAgICB2b2lkIGZyZWUodm9pZCopOworICAg
IHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgdm9pZCopOwogCiAgICAg
Ly8gQ2FsbGVkIGFmdGVyIHRoaXMgcGFnZSBpcyBhbHJlYWR5IHNlbGVjdGVkIGZvciBhbGxvY2F0
aW9uLgotICAgIEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZygpOworICAgIEZyZWVMaXN0IHN0YXJ0
QWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgLy8g
Q2FsbGVkIGFmdGVyIHRoZSBhbGxvY2F0b3IgcGlja3MgYW5vdGhlciBwYWdlIHRvIHJlcGxhY2Ug
dGhpcyBvbmUuCi0gICAgdm9pZCBzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCk7Cisg
ICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgRnJl
ZUxpc3QpOwogCiAgICAgSXNvRGlyZWN0b3J5QmFzZTxDb25maWc+JiBkaXJlY3RvcnkoKSB7IHJl
dHVybiBtX2RpcmVjdG9yeTsgfQogICAgIGJvb2wgaXNJblVzZUZvckFsbG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzSW5Vc2VGb3JBbGxvY2F0aW9uOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IEZ1bmMmKTsK
KyAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBjb25zdCBGdW5jJik7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCgpOwog
ICAgIApAQCAtMTExLDE2ICsxMTcsMTMgQEAgY2xhc3MgSXNvUGFnZSA6IHB1YmxpYyBJc29QYWdl
QmFzZSB7CiAKICAgICAvLyBUaGlzIG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KIAot
ICAgIGJvb2wgbV9lbGlnaWJpbGl0eUhhc0JlZW5Ob3RlZCB7IHRydWUgfTsKLSAgICBib29sIG1f
aXNJblVzZUZvckFsbG9jYXRpb24geyBmYWxzZSB9OwogICAgIERlZmVycmVkVHJpZ2dlcjxJc29Q
YWdlVHJpZ2dlcjo6RWxpZ2libGU+IG1fZWxpZ2liaWxpdHlUcmlnZ2VyOwogICAgIERlZmVycmVk
VHJpZ2dlcjxJc29QYWdlVHJpZ2dlcjo6RW1wdHk+IG1fZW1wdHlUcmlnZ2VyOwotCi0gICAgSXNv
RGlyZWN0b3J5QmFzZTxDb25maWc+JiBtX2RpcmVjdG9yeTsKKyAgICB1aW50OF90IG1fbnVtTm9u
RW1wdHlXb3JkcyB7IDAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KGJpdHNBcnJheUxlbmd0aChudW1P
YmplY3RzKSA8PSBVSU5UOF9NQVgpOwogICAgIHVuc2lnbmVkIG1faW5kZXggeyBVSU5UX01BWCB9
OwotICAgIAorICAgIElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgbV9kaXJlY3Rvcnk7CiAgICAg
dW5zaWduZWQgbV9hbGxvY0JpdHNbYml0c0FycmF5TGVuZ3RoKG51bU9iamVjdHMpXTsKLSAgICB1
bnNpZ25lZCBtX251bU5vbkVtcHR5V29yZHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBi
bWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmgKaW5kZXggZjM3YjM0
OTMyNzc5MDZjMTgyZDk5MWZhZmZjZWE5ZGZkNjc4MmY0My4uYzVjZTg3MTIwOTFmZjE5YzFjNmY1
Y2I5Nzg2Yjc5YTMwZDZmYzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29QYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGlu
ZXMuaApAQCAtNDcsOCArNDcsOCBAQCBJc29QYWdlPENvbmZpZz4qIElzb1BhZ2U8Q29uZmlnPjo6
dHJ5Q3JlYXRlKElzb0RpcmVjdG9yeUJhc2U8Q29uZmlnPiYgZGlyZWN0b3J5LAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgogSXNvUGFnZTxDb25maWc+OjpJc29QYWdlKElzb0RpcmVjdG9yeUJh
c2U8Q29uZmlnPiYgZGlyZWN0b3J5LCB1bnNpZ25lZCBpbmRleCkKICAgICA6IElzb1BhZ2VCYXNl
KGZhbHNlKQotICAgICwgbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQogICAgICwgbV9pbmRleChpbmRl
eCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKICAgICBtZW1zZXQobV9hbGxvY0Jp
dHMsIDAsIHNpemVvZihtX2FsbG9jQml0cykpOwogfQpAQCAtNjUsMTQgKzY1LDE0IEBAIElzb1Bh
Z2U8Q29uZmlnPiogSXNvUGFnZTxDb25maWc+OjpwYWdlRm9yKHZvaWQqIHB0cikKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUodm9pZCog
cGFzc2VkUHRyKQordm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYgbG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIpCiB7CiAgICAgQkFTU0VSVCghbV9p
c1NoYXJlZCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3Nl
ZFB0cikgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKICAgICB1bnNpZ25lZCBpbmRl
eCA9IG9mZnNldCAvIENvbmZpZzo6b2JqZWN0U2l6ZTsKICAgICAKICAgICBpZiAoIW1fZWxpZ2li
aWxpdHlIYXNCZWVuTm90ZWQpIHsKLSAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuZGlkQmVj
b21lKCp0aGlzKTsKKyAgICAgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuZGlkQmVjb21lKGxvY2tl
ciwgKnRoaXMpOwogICAgICAgICBtX2VsaWdpYmlsaXR5SGFzQmVlbk5vdGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgCkBAIC04MiwxMiArODIsMTIgQEAgdm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUo
dm9pZCogcGFzc2VkUHRyKQogICAgIHVuc2lnbmVkIG5ld1dvcmQgPSBtX2FsbG9jQml0c1t3b3Jk
SW5kZXhdICY9IH4oMSA8PCBiaXRJbmRleCk7CiAgICAgaWYgKCFuZXdXb3JkKSB7CiAgICAgICAg
IGlmICghLS1tX251bU5vbkVtcHR5V29yZHMpCi0gICAgICAgICAgICBtX2VtcHR5VHJpZ2dlci5k
aWRCZWNvbWUoKnRoaXMpOworICAgICAgICAgICAgbV9lbXB0eVRyaWdnZXIuZGlkQmVjb21lKGxv
Y2tlciwgKnRoaXMpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotRnJl
ZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoKQorRnJlZUxpc3QgSXNvUGFn
ZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYp
CiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKQEAg
LTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGlu
ZygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvUGFnZTxDb25maWc+
OjpzdG9wQWxsb2NhdGluZyhGcmVlTGlzdCBmcmVlTGlzdCkKK3ZvaWQgSXNvUGFnZTxDb25maWc+
OjpzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIEZy
ZWVMaXN0IGZyZWVMaXN0KQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAgICAgCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB2b2lkIElzb1BhZ2U8Q29uZmlnPjo6
c3RvcEFsbG9jYXRpbmcoRnJlZUxpc3QgZnJlZUxpc3QpCiAgICAgCiAgICAgZnJlZUxpc3QuZm9y
RWFjaDxDb25maWc+KAogICAgICAgICBbJl0gKHZvaWQqIHB0cikgewotICAgICAgICAgICAgZnJl
ZShwdHIpOworICAgICAgICAgICAgZnJlZShsb2NrZXIsIHB0cik7CiAgICAgICAgIH0pOwogCiAg
ICAgUkVMRUFTRV9CQVNTRVJUKG1faXNJblVzZUZvckFsbG9jYXRpb24pOwogICAgIG1faXNJblVz
ZUZvckFsbG9jYXRpb24gPSBmYWxzZTsKIAotICAgIG1fZWxpZ2liaWxpdHlUcmlnZ2VyLmhhbmRs
ZURlZmVycmFsKCp0aGlzKTsKLSAgICBtX2VtcHR5VHJpZ2dlci5oYW5kbGVEZWZlcnJhbCgqdGhp
cyk7CisgICAgbV9lbGlnaWJpbGl0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9ja2VyLCAqdGhp
cyk7CisgICAgbV9lbXB0eVRyaWdnZXIuaGFuZGxlRGVmZXJyYWwobG9ja2VyLCAqdGhpcyk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12
b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3QgRnVuYyYgZnVuYykK
K3ZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIHdv
cmRJbmRleCA9IDA7IHdvcmRJbmRleCA8IGJpdHNBcnJheUxlbmd0aChudW1PYmplY3RzKTsgKyt3
b3JkSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgd29yZCA9IG1fYWxsb2NCaXRzW3dvcmRJbmRl
eF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCmluZGV4IGM5ZDA0ZWU5MzEz
Njk1OWQzMjNkYjU4MGQyMDM2YjlhZWJjMjIxYTMuLjVlYTUxZTVkMWZkZGVlZmY2ZjhkNTZmZDdj
OTA3ZmU0MmJkZDE0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hh
cmVkSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCkBA
IC01Myw3ICs1Myw3IEBAIGNsYXNzIFZhcmlhZGljQnVtcEFsbG9jYXRvciB7CiAKIGNsYXNzIElz
b1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29TaGFyZWRIZWFwPiB7CiBw
dWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVhcChzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKKyAgICBJ
c29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIHsKICAgICB9
CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgSXNvU2hhcmVkSGVhcCA6IHB1YmxpYyBTdGF0aWNQ
ZXJQcm9jZXNzPElzb1NoYXJlZEhlYXA+IHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx1bnNp
Z25lZD4KLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3coYm9vbCBhYm9ydE9uRmFpbHVyZSk7CisgICAg
dm9pZCogYWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib29sIGFi
b3J0T25GYWlsdXJlKTsKIAogICAgIElzb1NoYXJlZFBhZ2UqIG1fY3VycmVudFBhZ2UgeyBudWxs
cHRyIH07CiAgICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIG1fYWxsb2NhdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCmluZGV4IGQ5ZjdmMTE2NmM1
YWQwNmYwNGQ4MTIxYzQ5ODgyMjdiZGZkMDFkMDQuLmRhMThlNmU3Yjg2N2I0MDVlODY4YzBmNGIz
ZDZkYWI0MDFkZmVlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hh
cmVkSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhl
YXBJbmxpbmVzLmgKQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxv
Y2F0ZU5ldyhib29sIGFib3J0T25GYWlsdXJlKQogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBvYmpl
Y3RTaXplID0gY29tcHV0ZU9iamVjdFNpemVGb3JTaGFyZWRDZWxsKHBhc3NlZE9iamVjdFNpemUp
OwogICAgIHJldHVybiBtX2FsbG9jYXRvci50ZW1wbGF0ZSBhbGxvY2F0ZTxvYmplY3RTaXplPigK
ICAgICAgICAgWyZdICgpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNs
b3c8cGFzc2VkT2JqZWN0U2l6ZT4oYWJvcnRPbkZhaWx1cmUpOworICAgICAgICAgICAgcmV0dXJu
IGFsbG9jYXRlU2xvdzxwYXNzZWRPYmplY3RTaXplPihsb2NrZXIsIGFib3J0T25GYWlsdXJlKTsK
ICAgICAgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE9iamVjdFNpemU+Ci1C
Tk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xvdyhib29sIGFib3J0T25G
YWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNsb3coY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBib29sIGFib3J0T25GYWlsdXJlKQog
ewogICAgIFNjYXZlbmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6Z2V0KCk7CiAgICAgc2Nh
dmVuZ2VyLmRpZFN0YXJ0R3Jvd2luZygpOwpAQCAtNzMsMTAgKzczLDEwIEBAIEJOT19JTkxJTkUg
dm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAg
ICAgfQogCiAgICAgaWYgKG1fY3VycmVudFBhZ2UpCi0gICAgICAgIG1fY3VycmVudFBhZ2UtPnN0
b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIG1fY3VycmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKGxv
Y2tlcik7CiAKICAgICBtX2N1cnJlbnRQYWdlID0gcGFnZTsKLSAgICBtX2FsbG9jYXRvciA9IG1f
Y3VycmVudFBhZ2UtPnN0YXJ0QWxsb2NhdGluZygpOworICAgIG1fYWxsb2NhdG9yID0gbV9jdXJy
ZW50UGFnZS0+c3RhcnRBbGxvY2F0aW5nKGxvY2tlcik7CiAKICAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgb2JqZWN0U2l6ZSA9IGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVkQ2VsbChwYXNzZWRPYmpl
Y3RTaXplKTsKICAgICByZXR1cm4gbV9hbGxvY2F0b3IuYWxsb2NhdGU8b2JqZWN0U2l6ZT4oW10g
KCkgeyBCQ1JBU0goKTsgcmV0dXJuIG51bGxwdHI7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZFBhZ2UuaAppbmRleCBhOWUxMzdlNDE0MTg4NTY0ZDA1ODA0NDkwYjU0MzdhNTAwZTU3
MGJiLi5iZmY3MGMyNGFjYjk4YjFiZWRjNmNlYmFmOTBiMDg1NDYzZGM5NzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBJc29T
aGFyZWRQYWdlIDogcHVibGljIElzb1BhZ2VCYXNlIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZywgdHlwZW5hbWUgVHlwZT4KICAgICB2b2lkIGZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsKLSAgICBWYXJpYWRpY0J1
bXBBbGxvY2F0b3Igc3RhcnRBbGxvY2F0aW5nKCk7Ci0gICAgdm9pZCBzdG9wQWxsb2NhdGluZygp
OworICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpOworICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpOwogCiBwcml2YXRlOgogICAgIElzb1NoYXJlZFBhZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCmluZGV4IGM0MjE2
YjUxZGFjOWQxZTk1YzMwMzVkNjYxNmZhM2U3Y2U1OTA3YTkuLmU0NDEwYmFkNjAwMzcyNTI1MDA3
NzAzNjcxNDYwNDFhNmE3NGI5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvU2hhcmVkUGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1No
YXJlZFBhZ2VJbmxpbmVzLmgKQEAgLTQyLDExICs0MiwxMSBAQCB2b2lkIElzb1NoYXJlZFBhZ2U6
OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYg
aGFuZAogICAgIC8vIElzb0RlYWxsb2NhdG9yOjpkZWFsbG9jYXRlIGlzIGNhbGxlZCBmcm9tIGRl
bGV0ZSBvcGVyYXRvci4gVGhpcyBpcyBkaXNwYXRjaGVkIGJ5IHZ0YWJsZSBpZiB2aXJ0dWFsIGRl
c3RydWN0b3IgZXhpc3RzLgogICAgIC8vIElmIHZwdHIgaXMgcmVwbGFjZWQgdG8gdGhlIG90aGVy
IHZwdHIsIHdlIG1heSBhY2NpZGVudGFsbHkgY2hhaW4gdGhpcyBwb2ludGVyIHRvIHRoZSBpbmNv
cnJlY3QgSGVhcEltcGxCYXNlLCB3aGljaCB0b3RhbGx5IGJyZWFrcyB0aGUgSXNvSGVhcCdzIGdv
YWwuCiAgICAgLy8gVG8gaGFyZGVuIHRoYXQsIHdlIHZhbGlkYXRlIHRoYXQgdGhpcyBwb2ludGVy
IGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBmb3IgYSBzcGVjaWZpYyBIZWFwSW1wbEJhc2UgaGVyZSBi
eSBjaGVja2luZyB3aGV0aGVyIHRoaXMgcG9pbnRlciBpcyBsaXN0ZWQgaW4gSGVhcEltcGxCYXNl
J3Mgc2hhcmVkIGNlbGxzLgotICAgIFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5tX3NoYXJlZENl
bGxzW2luZGV4XSA9PSBwdHIpOworICAgIFJFTEVBU0VfQkFTU0VSVChoZWFwSW1wbC5tX3NoYXJl
ZENlbGxzW2luZGV4XS5nZXQoKSA9PSBwdHIpOwogICAgIGhlYXBJbXBsLm1fYXZhaWxhYmxlU2hh
cmVkIHw9ICgxVSA8PCBpbmRleCk7CiB9CiAKLWlubGluZSBWYXJpYWRpY0J1bXBBbGxvY2F0b3Ig
SXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKCkKK2lubGluZSBWYXJpYWRpY0J1bXBBbGxv
Y2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiAKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIFZhcmlhZGljQnVtcEFsbG9jYXRvciBJc29TaGFy
ZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoKQogICAgIHJldHVybiBWYXJpYWRpY0J1bXBBbGxvY2F0
b3IocGF5bG9hZEVuZCwgcmVtYWluaW5nKTsKIH0KIAotaW5saW5lIHZvaWQgSXNvU2hhcmVkUGFn
ZTo6c3RvcEFsbG9jYXRpbmcoKQoraW5saW5lIHZvaWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9j
YXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTLmgKaW5kZXgg
ZGUyODY3ZTc4ZGUxY2EyNTYzMGMzNmQxODIyODMzZjE3ZmEwN2VmMy4uYmFiYmIzMDQ1YjhhNTA2
ZTgyODMxMDJlYjZjM2M0Y2ViOWVkMjliMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMUy5oCkBAIC02
MCw4ICs2MCw4IEBAIGNsYXNzIElzb1RMUyB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
LCB0eXBlbmFtZSBUeXBlPgogICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZUltcGwoYXBpOjpJc29I
ZWFwPFR5cGU+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uZmlnPgotICAgIHZvaWQqIGFsbG9jYXRlRmFzdCh1bnNpZ25lZCBvZmZzZXQsIGJv
b2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5h
bWUgVHlwZT4KKyAgICB2b2lkKiBhbGxvY2F0ZUZhc3QoYXBpOjpJc29IZWFwPFR5cGU+JiwgdW5z
aWduZWQgb2Zmc2V0LCBib29sIGFib3J0T25GYWlsdXJlKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWcsIHR5cGVuYW1lIFR5cGU+CiAgICAgc3RhdGljIHZvaWQqIGFsbG9jYXRl
U2xvdyhhcGk6Oklzb0hlYXA8VHlwZT4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnkuaAppbmRleCAzNWRiODcxNDdi
NDkyMDY2YTI4ZWZmZDU3M2RmNzM2ZjcwODExMzlmLi5lMWQ4YWFjYWZlMmZmYWJkYTc0ODAzZTli
NzA2YjBiZjU2ZGU5ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RM
U0FsbG9jYXRvckVudHJ5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxv
Y2F0b3JFbnRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIElzb1RMU0FsbG9jYXRvckVudHJ5
IGZpbmFsIDogcHVibGljIERlZmF1bHRJc29UTFNFbnRyeTxJc29BbGxvY2F0b3I8Q29uZmlnCiAg
ICAgSXNvVExTQWxsb2NhdG9yRW50cnkoSXNvSGVhcEltcGw8Q29uZmlnPiYpOwogCiAgICAgdm9p
ZCBjb25zdHJ1Y3Qodm9pZCogZHN0KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2NhdmVuZ2Uodm9p
ZCogZW50cnkpIG92ZXJyaWRlOwogICAgIAogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVh
cDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRv
ckVudHJ5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNBbGxvY2F0b3JF
bnRyeUlubGluZXMuaAppbmRleCAxYWUxZTZhNWFjYTQ5MGUwNTIyNzExNGY1ZTRlMjA1ZmQ0OTRm
ZjQzLi4zZTU1N2FkMTc3Yjg2ZGQ4YmU2YzA3Zjc0M2M5YTE4ZWQ2ZTNlMDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0FsbG9jYXRvckVudHJ5SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTQWxsb2NhdG9yRW50cnlJbmxpbmVzLmgK
QEAgLTQ2LDUgKzQ2LDExIEBAIHZvaWQgSXNvVExTQWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6Y29u
c3RydWN0KHZvaWQqIGRzdCkKICAgICBuZXcgKGRzdCkgSXNvQWxsb2NhdG9yPENvbmZpZz4obV9o
ZWFwKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgordm9pZCBJc29UTFNBbGxvY2F0
b3JFbnRyeTxDb25maWc+OjpzY2F2ZW5nZSh2b2lkKiBlbnRyeSkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxJc29BbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2UobV9oZWFwKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRGVhbGxvY2F0b3JFbnRyeS5oCmluZGV4IDczODRjZTBkMmFiYjQzZmZiNTZhNjc4OGY0NzUx
MGI2NGYyNjRmNGQuLmEwZGJjMzAzNzQ0Mjg3MGVkMDg5YWE5MjBiZDRiZmFhZDk3ZWRiNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oCkBA
IC00Niw2ICs0Niw3IEBAIGNsYXNzIElzb1RMU0RlYWxsb2NhdG9yRW50cnkgZmluYWwgOiBwdWJs
aWMgRGVmYXVsdElzb1RMU0VudHJ5PElzb0RlYWxsb2NhdG9yPENvCiAgICAgSXNvVExTRGVhbGxv
Y2F0b3JFbnRyeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAKICAgICB2b2lkIGNv
bnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBl
bnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgK
aW5kZXggY2JkNWY5ZGY3ZWZiNzRjMzEyMjM5NzgxNWNhMzkxMjA2MjljZDQzZi4uYzk1MzQyODBj
ZThkNWExOGIwMjY4YmQwNzgwN2Q3ZWJiN2MyMmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaApAQCAtNDMsNSAr
NDMsMTEgQEAgdm9pZCBJc29UTFNEZWFsbG9jYXRvckVudHJ5PENvbmZpZz46OmNvbnN0cnVjdCh2
b2lkKiBlbnRyeSkKICAgICBuZXcgKGVudHJ5KSBJc29EZWFsbG9jYXRvcjxDb25maWc+KGxvY2sp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Cit2b2lkIElzb1RMU0RlYWxsb2NhdG9y
RW50cnk8Q29uZmlnPjo6c2NhdmVuZ2Uodm9pZCogZW50cnkpCit7CisgICAgc3RhdGljX2Nhc3Q8
SXNvRGVhbGxvY2F0b3I8Q29uZmlnPio+KGVudHJ5KS0+c2NhdmVuZ2UoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgYm1hbGxvYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0VudHJ5LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCmlu
ZGV4IGNiMDNiZGUyODk1N2UyY2JmYTEwYWZhZDg5NDI4YmIzZWE2ZmFmNzMuLjgzMGE1MTFiZjk5
ZGVjZDhiZjY0NGEzZmRlMzhiMzBjYWM2NzA4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvVExTRW50cnkuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRW50cnkuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAK
LUlzb1RMU0VudHJ5OjpJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkK
LSAgICA6IG1fb2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9hbGlnbm1lbnQoYWxpZ25tZW50KQot
ICAgICwgbV9zaXplKHNpemUpCitJc29UTFNFbnRyeTo6SXNvVExTRW50cnkoc2l6ZV90IHNpemUp
CisgICAgOiBtX3NpemUoc2l6ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNFbnRyeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRy
eS5oCmluZGV4IDc0ZjQ0OWJmYTI4YTQwMWZiMDQzODhjYmNlNTE0MzZlODY4ZmQ2MTQuLmE0Nzhl
NmEzMmRlMTA2YWNjN2UzOTBhZTJhYjJmZTkwZjEwYjc0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0lzb1RMU0VudHJ5LmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQkVYUE9SVCBJc29UTFNFbnRy
eSB7CiAgICAgdmlydHVhbCB+SXNvVExTRW50cnkoKTsKICAgICAKICAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICBzaXplX3QgYWxpZ25tZW50KCkgY29u
c3QgeyByZXR1cm4gbV9hbGlnbm1lbnQ7IH0KKyAgICBzaXplX3QgYWxpZ25tZW50KCkgY29uc3Qg
eyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
ICsgbV9zaXplOyB9CiAgICAgCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEJFWFBPUlQgSXNvVExT
RW50cnkgewogICAgIHZvaWQgd2Fsa1VwVG9JbmNsdXNpdmUoSXNvVExTRW50cnkqLCBjb25zdCBG
dW5jJik7CiAKIHByb3RlY3RlZDoKLSAgICBJc29UTFNFbnRyeShzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSk7CisgICAgSXNvVExTRW50cnkoc2l6ZV90IHNpemUpOwogICAgIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgSXNvVExTOwpAQCAtODYsMTUgKzg2LDE0IEBAIGNsYXNzIEJF
WFBPUlQgSXNvVExTRW50cnkgewogCiAgICAgSXNvVExTRW50cnkqIG1fbmV4dCB7IG51bGxwdHIg
fTsKICAgICAKLSAgICBzaXplX3QgbV9vZmZzZXQ7IC8vIENvbXB1dGVkIGluIGNvbnN0cnVjdG9y
LgotICAgIHNpemVfdCBtX2FsaWdubWVudDsKLSAgICBzaXplX3QgbV9zaXplOworICAgIHVuc2ln
bmVkIG1fb2Zmc2V0IHsgVUlOVF9NQVggfTsgLy8gQ29tcHV0ZWQgaW4gY29uc3RydWN0b3IuCisg
ICAgdW5zaWduZWQgbV9zaXplOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlUeXBlPgog
Y2xhc3MgRGVmYXVsdElzb1RMU0VudHJ5IDogcHVibGljIElzb1RMU0VudHJ5IHsKIHB1YmxpYzoK
LSAgICB+RGVmYXVsdElzb1RMU0VudHJ5KCk7CisgICAgfkRlZmF1bHRJc29UTFNFbnRyeSgpID0g
ZGVmYXVsdDsKICAgICAKIHByb3RlY3RlZDoKICAgICBEZWZhdWx0SXNvVExTRW50cnkoKTsKQEAg
LTEwNiw4ICsxMDUsNiBAQCBjbGFzcyBEZWZhdWx0SXNvVExTRW50cnkgOiBwdWJsaWMgSXNvVExT
RW50cnkgewogICAgIC8vIExpa2V3aXNlLCB0aGlzIGlzIHNlcGFyYXRlIGZyb20gc2NhdmVuZ2lu
Zy4gV2hlbiB0aGUgVExTIGlzIHNodXR0aW5nIGRvd24sIHdlIHdpbGwgYmUgYXNrZWQgdG8KICAg
ICAvLyBzY2F2ZW5nZSBhbmQgdGhlbiB3ZSB3aWxsIGJlIGFza2VkIHRvIGRlc3RydWN0LgogICAg
IHZvaWQgZGVzdHJ1Y3Qodm9pZCogZW50cnkpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzY2F2ZW5n
ZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0VudHJ5SW5saW5lcy5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNFbnRyeUlubGluZXMuaAppbmRleCA2ZjYxNWY5
NTBjZGJmMGFhMDYzMTM1OTFkMzgzYzhjMjRjMjhmM2IzLi5jMmE3MjdlMGYzNWY2YWM0MzAxY2Iz
YWE0OWVkYmE5NWNmMTBhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0VudHJ5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRW50
cnlJbmxpbmVzLmgKQEAgLTQzLDEzICs0MywxMCBAQCB2b2lkIElzb1RMU0VudHJ5Ojp3YWxrVXBU
b0luY2x1c2l2ZShJc29UTFNFbnRyeSogbGFzdCwgY29uc3QgRnVuYyYgZnVuYykKIAogdGVtcGxh
dGU8dHlwZW5hbWUgRW50cnlUeXBlPgogRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OkRl
ZmF1bHRJc29UTFNFbnRyeSgpCi0gICAgOiBJc29UTFNFbnRyeShhbGlnbm9mKEVudHJ5VHlwZSks
IHNpemVvZihFbnRyeVR5cGUpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeVR5cGU+
Ci1EZWZhdWx0SXNvVExTRW50cnk8RW50cnlUeXBlPjo6fkRlZmF1bHRJc29UTFNFbnRyeSgpCisg
ICAgOiBJc29UTFNFbnRyeShzaXplb2YoRW50cnlUeXBlKSkKIHsKKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFbnRyeVR5cGUpIDw9IFVJTlQzMl9NQVgpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKHZvaWQqKSA9PSBhbGlnbm9mKEVudHJ5VHlwZSksICJCZWNhdXNlIElzb1RMU0VudHJ5IGlu
Y2x1ZGVzIHZ0YWJsZSwgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIHRvIHRoZSBwb2ludGVyIik7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZT4KQEAgLTY3LDEyICs2NCw1IEBAIHZvaWQg
RGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OmRlc3RydWN0KHZvaWQqIHBhc3NlZEVudHJ5
KQogICAgIGVudHJ5LT5+RW50cnlUeXBlKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5
VHlwZT4KLXZvaWQgRGVmYXVsdElzb1RMU0VudHJ5PEVudHJ5VHlwZT46OnNjYXZlbmdlKHZvaWQq
IHBhc3NlZEVudHJ5KQotewotICAgIEVudHJ5VHlwZSogZW50cnkgPSBzdGF0aWNfY2FzdDxFbnRy
eVR5cGUqPihwYXNzZWRFbnRyeSk7Ci0gICAgZW50cnktPnNjYXZlbmdlKCk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIGJtYWxsb2MKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaApp
bmRleCAxZWFiMjcxYzQwY2E3OWEzZGRlZmZiZmQyNWUwZTc0ODY4YTRkMzE5Li4wZDRiMjAxOTRl
MGNkZWQyMDg4YzllNzRjNzI4NzQ4NjQ1YTM0MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0lubGluZXMuaApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIElzb1RMUzo6c2NhdmVuZ2UoYXBp
OjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCk7CiAgICAgaWYgKG9mZnNldCA8IHRscy0+
bV9leHRlbnQpCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPHR5cGVuYW1l
IGFwaTo6SXNvSGVhcDxUeXBlPjo6Q29uZmlnPio+KHRscy0+bV9kYXRhICsgb2Zmc2V0KS0+c2Nh
dmVuZ2UoKTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJc29BbGxvY2F0b3I8dHlwZW5hbWUg
YXBpOjpJc29IZWFwPFR5cGU+OjpDb25maWc+Kj4odGxzLT5tX2RhdGEgKyBvZmZzZXQpLT5zY2F2
ZW5nZShoYW5kbGUuaW1wbCgpKTsKICAgICBvZmZzZXQgPSBoYW5kbGUuZGVhbGxvY2F0b3JPZmZz
ZXQoKTsKICAgICBpZiAob2Zmc2V0IDwgdGxzLT5tX2V4dGVudCkKICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxJc29EZWFsbG9jYXRvcjx0eXBlbmFtZSBhcGk6Oklzb0hlYXA8VHlwZT46OkNvbmZp
Zz4qPih0bHMtPm1fZGF0YSArIG9mZnNldCktPnNjYXZlbmdlKCk7CkBAIC03NCwxMyArNzQsMTMg
QEAgdm9pZCogSXNvVExTOjphbGxvY2F0ZUltcGwoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUs
IGJvb2wgYWJvcnRPbkZhaWx1cmUpCiAgICAgSXNvVExTKiB0bHMgPSBnZXQoKTsKICAgICBpZiAo
IXRscyB8fCBvZmZzZXQgPj0gdGxzLT5tX2V4dGVudCkKICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
U2xvdzxDb25maWc+KGhhbmRsZSwgYWJvcnRPbkZhaWx1cmUpOwotICAgIHJldHVybiB0bHMtPmFs
bG9jYXRlRmFzdDxDb25maWc+KG9mZnNldCwgYWJvcnRPbkZhaWx1cmUpOworICAgIHJldHVybiB0
bHMtPmFsbG9jYXRlRmFzdDxDb25maWc+KGhhbmRsZSwgb2Zmc2V0LCBhYm9ydE9uRmFpbHVyZSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQqIElzb1RMUzo6YWxsb2NhdGVG
YXN0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhYm9ydE9uRmFpbHVyZSkKK3RlbXBsYXRlPHR5cGVu
YW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KK3ZvaWQqIElzb1RMUzo6YWxsb2NhdGVGYXN0KGFw
aTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB1bnNpZ25lZCBvZmZzZXQsIGJvb2wgYWJvcnRPbkZh
aWx1cmUpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZp
Zz4qPihtX2RhdGEgKyBvZmZzZXQpLT5hbGxvY2F0ZShhYm9ydE9uRmFpbHVyZSk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SXNvQWxsb2NhdG9yPENvbmZpZz4qPihtX2RhdGEgKyBvZmZz
ZXQpLT5hbGxvY2F0ZShoYW5kbGUuaW1wbCgpLCBhYm9ydE9uRmFpbHVyZSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KQEAgLTEwOCw3ICsxMDgsNyBAQCBC
Tk9fSU5MSU5FIHZvaWQqIElzb1RMUzo6YWxsb2NhdGVTbG93KGFwaTo6SXNvSGVhcDxUeXBlPiYg
aGFuZGxlLCBib29sIGFib3J0T25GYQogICAgIAogICAgIElzb1RMUyogdGxzID0gZW5zdXJlSGVh
cEFuZEVudHJpZXMoaGFuZGxlKTsKICAgICAKLSAgICByZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8
Q29uZmlnPihoYW5kbGUuYWxsb2NhdG9yT2Zmc2V0KCksIGFib3J0T25GYWlsdXJlKTsKKyAgICBy
ZXR1cm4gdGxzLT5hbGxvY2F0ZUZhc3Q8Q29uZmlnPihoYW5kbGUsIGhhbmRsZS5hbGxvY2F0b3JP
ZmZzZXQoKSwgYWJvcnRPbkZhaWx1cmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcs
IHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RM
U0xheW91dC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAKaW5k
ZXggNGIzMzVlYTUxOWQ0NWU4ZjE2YjJhOGQ5MDllMTMwNDYxOWQ1NzQ4NC4uMGJhZTYwNzcwMWU0
OTBjN2FlMmE5ZjQwZTdlOTE3Y2VjZmIxNzMyNSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTTGF5b3V0LmNwcApAQCAtNDQsNyArNDQsOSBAQCB2b2lkIElzb1RMU0xheW91dDo6YWRkKElz
b1RMU0VudHJ5KiBlbnRyeSkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tpbmcoYWRk
aW5nTXV0ZXgpOwogICAgIGlmIChtX2hlYWQpIHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG1f
dGFpbCk7Ci0gICAgICAgIGVudHJ5LT5tX29mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50
cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKKyAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVu
dCgpKTsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG9mZnNldCA8IFVJTlRfTUFYKTsKKyAgICAg
ICAgZW50cnktPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICBzdGQ6OmF0b21pY190aHJlYWRf
ZmVuY2Uoc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCk7CiAgICAgICAgIG1fdGFpbC0+bV9uZXh0
ID0gZW50cnk7CiAgICAgICAgIG1fdGFpbCA9IGVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9QYWNrZWQuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzU5ZTBjMTcxYThjMWUwMGNiMjQwNTZjYzJkZmIyNzVkYWFhZjUwZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFja2VkLmgKQEAgLTAsMCAr
MSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxnb3JpdGhtLmgiCisjaW5jbHVkZSAiU3Rk
TGliRXh0cmFzLmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBibWFsbG9jIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZCB7CitwdWJsaWM6CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNQYWNrZWRUeXBlID0gdHJ1ZTsKKworICAgIFBhY2tlZCgpCisgICAgICAgIDogUGFj
a2VkKFQgeyB9KQorICAgIHsKKyAgICB9CisKKyAgICBQYWNrZWQoY29uc3QgVCYgdmFsdWUpCisg
ICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgJnZhbHVlLCBzaXplb2YoVCkp
OworICAgIH0KKworICAgIFQgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFQgdmFsdWUgeyB9
OworICAgICAgICBtZW1jcHkoJnZhbHVlLCBtX3N0b3JhZ2UuZGF0YSgpLCBzaXplb2YoVCkpOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgdm9pZCBzZXQoY29uc3QgVCYgdmFs
dWUpCisgICAgeworICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgJnZhbHVlLCBzaXpl
b2YoVCkpOworICAgIH0KKworICAgIFBhY2tlZDxUPiYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVl
KQorICAgIHsKKyAgICAgICAgc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUp
CisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gZ2V0KCk7CisgICAgICAgIHNldChzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgIH0KKwor
ICAgIHZvaWQgc3dhcChQYWNrZWQmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9zdG9yYWdlLnN3
YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhl
ciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+PgorICAg
IHZvaWQgc3dhcChPdGhlciYgb3RoZXIpCisgICAgeworICAgICAgICBUIHQxID0gZ2V0KCk7Cisg
ICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3Ro
ZXIuc2V0KHQxKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCYgdDIpCisgICAgeworICAgICAg
ICBUIHQxID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQo
dDEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHNpemVvZihU
KT4gbV9zdG9yYWdlOworfTsKKworLy8gUGFja2VkQWxpZ25lZFB0ciBjYW4gdGFrZSBhbGlnbm1l
bnQgcGFyYW1ldGVyIHRvby4gUGFja2VkQWxpZ25lZFB0ciBvbmx5IHVzZXMgdGhpcyBhbGlnbm1l
bnQgaW5mb3JtYXRpb24gaWYgaXQgaXMgcHJvZml0YWJsZTogd2UgdXNlCisvLyBhbGlnbm1lbnQg
aW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHN0b3Jh
Z2UuIFNpbmNlIHRoZSBwb2ludGVyIHdpZHRoIGlzIDM2IGJpdHMgYW5kIEpTQ2VsbHMgYXJlIGFs
aWduZWQgdG8gMTYgYnl0ZXMsCisvLyB3ZSBjYW4gdXNlIDQgYml0cyBpbiBEYXJ3aW4gQVJNNjQs
IHdlIGNhbiBjb21wYWN0IGNlbGwgcG9pbnRlciBpbnRvIDQgYnl0ZXMgKDMyIGJpdHMpLgordGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGFsaWdubWVudCA9IGFsaWdub2YoVCk+CitjbGFzcyBQ
YWNrZWRBbGlnbmVkUHRyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KGlzUG93ZXJPZlR3
byhhbGlnbm1lbnQpLCAiQWxpZ25tZW50IG5lZWRzIHRvIGJlIHBvd2VyLW9mLXR3byIpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUgPSB0cnVlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxlID0gZ2V0TFNC
U2V0Tm9uWmVyb0NvbnN0ZXhwcihhbGlnbm1lbnQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgc3RvcmFnZVNpemVXaXRob3V0QWxpZ25tZW50U2hpZnQgPSByb3VuZFVwVG9NdWx0aXBs
ZU9mPDgsIHVpbnRwdHJfdD4oQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAvIDg7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRTaGlmdCA9
IHJvdW5kVXBUb011bHRpcGxlT2Y8OCwgdWludHB0cl90PihCT1NfRUZGRUNUSVZFX0FERFJFU1Nf
V0lEVEggLSBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUpIC8gODsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPSBzdG9yYWdlU2l6ZVdp
dGhvdXRBbGlnbm1lbnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0aEFsaWdubWVudFNoaWZ0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplID0gaXNBbGlnbm1l
bnRTaGlmdFByb2ZpdGFibGUgPyBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUgOiAwOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemUgPSBzdG9yYWdlU2l6ZVdp
dGhBbGlnbm1lbnRTaGlmdDsKKworICAgIGNvbnN0ZXhwciBQYWNrZWRBbGlnbmVkUHRyKCkKKyAg
ICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgUGFja2Vk
QWxpZ25lZFB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgOiBtX3N0b3JhZ2UoKQorICAgIHsK
KyAgICB9CisKKyAgICBQYWNrZWRBbGlnbmVkUHRyKFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
c2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
Ly8gRklYTUU6IFBhY2tlZFB0cjw+IGNhbiBsb2FkIG1lbW9yeSB3aXRoIG9uZSBtb3YgYnkgY2hl
Y2tpbmcgcGFnZSBib3VuZGFyeS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5Nzc1NAorICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSAwOworI2lm
IEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5KCZ2YWx1ZSwgbV9zdG9yYWdlLmRh
dGEoKSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAgbWVtY3B5KGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBtX3N0b3Jh
Z2UuZGF0YSgpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGlzQWxpZ25tZW50
U2hpZnRQcm9maXRhYmxlKQorICAgICAgICAgICAgdmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6
ZTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4odmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgc2V0KFQqIHBhc3NlZFZhbHVlKQorICAgIHsKKyAgICAgICAgdWludHB0cl90IHZhbHVl
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGFzc2VkVmFsdWUpOworICAgICAgICBpZiAoaXNB
bGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCisgICAgICAgICAgICB2YWx1ZSA+Pj0gYWxpZ25tZW50
U2hpZnRTaXplOworI2lmIEJDUFUoTElUVExFX0VORElBTikKKyAgICAgICAgbWVtY3B5KG1fc3Rv
cmFnZS5kYXRhKCksICZ2YWx1ZSwgc3RvcmFnZVNpemUpOworI2Vsc2UKKyAgICAgICAgbWVtY3B5
KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXpl
b2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9yYWdlU2l6ZSk7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIHNldChudWxscHRyKTsKKyAgICB9CisK
KyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFnZXQoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9y
IGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRl
Z2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogKFBhY2tlZEFsaWduZWRQdHI6OipVbnNwZWNpZmll
ZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCkgPyAmUGFja2VkQWxpZ25lZFB0cjo6bV9zdG9yYWdlIDogbnVsbHB0cjsgfQor
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQorCisg
ICAgUGFja2VkQWxpZ25lZFB0ciYgb3BlcmF0b3I9KFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
c2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRl
PGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAg
VCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1
ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCisgICAgdm9pZCBzd2FwKHN0
ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7IH0KKworICAgIHZvaWQgc3dhcChQYWNrZWRBbGlnbmVk
UHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3RvcmFn
ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxPdGhlcjo6aXNQYWNrZWRUeXBlPj4KKyAgICB2b2lkIHN3YXAoT3RoZXIm
IG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDIgPSBv
dGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN3YXAoVCogdDIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgp
OworICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAgICAgc2V0KHQxKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgc3RkOjphcnJheTx1aW50OF90LCBzdG9yYWdlU2l6ZT4gbV9zdG9yYWdl
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFBhY2tlZDxUKj4gOiBwdWJsaWMg
UGFja2VkQWxpZ25lZFB0cjxULCAxPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFBhY2tl
ZEFsaWduZWRQdHI8VCwgMT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit1c2luZyBQYWNrZWRQdHIgPSBQYWNrZWQ8VCo+OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorc3RydWN0IFBhY2tlZFB0clRyYWl0cyB7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gUGFja2VkUHRyVHJhaXRzPFU+OworCisgICAgdXNp
bmcgU3RvcmFnZVR5cGUgPSBQYWNrZWRQdHI8VD47CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBz
dGF0aWMgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJldHVy
biBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhl
cj4gc3RhdGljIHZvaWQgc3dhcChQYWNrZWRQdHI8VD4mIGEsIE90aGVyJiBiKSB7IGEuc3dhcChi
KTsgfQorCisgICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJl
dHVybiBwdHIuZ2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2NhdmVuZ2VyLmNwcAppbmRleCBlYjE1YjMxZjEzNThkMmFhYmM3NDI5ZjI2ZDM1
YjNmNzk1OTA4MmM4Li42MGYwNjc2YmYzMDZhNjJmYmMyMjJiYTczYzJiMDM1YTljMWRjNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQnVsa0RlY29tbWl0LmgiCiAjaW5jbHVkZSAiRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCisjaW5jbHVkZSAiSXNvSGVhcEltcGxJbmxpbmVzLmgiCiAjaWYgQk9TKERBUldJ
TikKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxtYWNoL2hvc3RfaW5m
by5oPgpAQCAtNjcsNyArNjgsNyBAQCBzdHJ1Y3QgUHJpbnRUaW1lIHsKIAogREVGSU5FX1NUQVRJ
Q19QRVJfUFJPQ0VTU19TVE9SQUdFKFNjYXZlbmdlcik7CiAKLVNjYXZlbmdlcjo6U2NhdmVuZ2Vy
KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorU2NhdmVuZ2VyOjpTY2F2ZW5nZXIoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCiB7CiAgICAgQkFTU0VSVCghRW52aXJvbm1lbnQ6OmdldCgp
LT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvU2NhdmVuZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5oCmlu
ZGV4IGY0ODkzNGI1MTFiNmU2YzE4ZDg5NmQ1ZDU5MzQxNTliZjUzZTk5MGMuLjcyOGE3NWUzYmRm
ZGExOTY5Y2EwNTg1MGU2NTE5ZTI0MDkyOGI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2NhdmVuZ2VyLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5n
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIFNjYXZl
bmdlciA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPFNjYXZlbmdlcj4gewogcHVibGljOgotICAg
IEJFWFBPUlQgU2NhdmVuZ2VyKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBCRVhQT1JU
IFNjYXZlbmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CiAgICAgCiAgICAgflNj
YXZlbmdlcigpID0gZGVsZXRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCmluZGV4
IDVjOGUyOGEwNTA5MzFhMTQ1M2IyZTNhOTkyY2YyZjgyOTVlYzlmZWYuLmFkZjIxNjcxZWJkODdh
OWZkNjU3OGE0NWNhNjE2MDAyZjVjNzU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvVk1IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBERUZJTkVfU1RBVElDX1BF
Ul9QUk9DRVNTX1NUT1JBR0UoVk1IZWFwKTsKIAotVk1IZWFwOjpWTUhlYXAoc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYpCitWTUhlYXA6OlZNSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKaW5kZXggNDdhMTEzZGJmMjczNjQxMTQx
Mjg4YWI2YzRlNTA1ZWFlNWJiNWMxMS4uNjhmMGFiZTZhZDU5YTBlNDk4YTQwOWJjMTUwOGNjOTA1
ZjFlMDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVk
ZWYgZW51bSB7IFN5bmMsIEFzeW5jIH0gU2NhdmVuZ2VNb2RlOwogCiBjbGFzcyBWTUhlYXAgOiBw
dWJsaWMgU3RhdGljUGVyUHJvY2VzczxWTUhlYXA+IHsKIHB1YmxpYzoKLSAgICBWTUhlYXAoc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIFZNSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+Jik7CiAgICAgCiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc2l6
ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1pvbmUuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAppbmRleCBm
MTFiNTE3ZDJmNTdiNWNkZDE3YjRiYjVhYWM2MGFiZWY5OWU3NTQyLi4wYmI4Mjk2OTJhYzc4MjAy
MjIwNTI2NTMwMDM4OWZjYjY5NDZjOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1pvbmUuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBzdGF0aWMgY29uc3QgbWFsbG9jX2ludHJvc3BlY3Rpb25fdCB6b25lSW50
cm9zcGVjdCA9IHsKICAgICAuc3RhdGlzdGljcyA9IGJtYWxsb2M6OnN0YXRpc3RpY3MKIH07CiAK
LVpvbmU6OlpvbmUoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitab25lOjpab25lKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIG1hbGxvY196b25lX3Q6OnNpemUgPSAmYm1h
bGxvYzo6em9uZVNpemU7CiAgICAgbWFsbG9jX3pvbmVfdDo6em9uZV9uYW1lID0gIldlYktpdCBN
YWxsb2MiOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAppbmRleCAwMDlkNzIyN2YyMzg3N2VmMWVhNjgyYzAy
ODJjZDZlZmFmOGU2ZDU3Li5mNWQ2NDk1YTQxZTJlY2MwY2VkZTFjNTM1ZTUzMjE1NGMwMDM1ZDli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1pvbmUuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBab25lIDogcHVi
bGljIG1hbGxvY196b25lX3QgewogICAgIC8vIEVub3VnaCBjYXBhY2l0eSB0byB0cmFjayBhIDY0
R0IgaGVhcCwgc28gcHJvYmFibHkgZW5vdWdoIGZvciBhbnl0aGluZy4KICAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDIwNDg7CiAKLSAgICBab25lKHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKTsKKyAgICBab25lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKICAg
ICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9hZGRyZXNzX3QpOwogCiAgICAgdm9p
ZCBhZGRSYW5nZShSYW5nZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjY4MGI4ZTVjM2I5YzQ3YTFlMWNiZmVmMmZlNzdkMGMwNThlZjNlNy4u
OTk0MTdlMzQzYjJmZjRlMmUwMWFhYmE2YTcxMjllMTA0NWQ5NWM4MCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTAxLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2Jt
YWxsb2NdIElzb0hlYXAncyBpbml0aWFsIHNldHVwIHNob3VsZCBiZSBzbWFsbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwOgorICAgICAgICAoYXNzZXJ0SGFzT2JqZWN0cyk6
CisgICAgICAgIChhc3NlcnRIYXNPbmx5T2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRDbGVhbik6
CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgYnl0ZWNvZGUgY2hlY2twb2ludHMgc2lu
Y2UgaXQgYnJlYWtzIHdhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Ym1hbGxvYy9Jc29IZWFwLmNwcAppbmRleCA0MjYzZjExYjM2MGNlMGJjMmZkNjA1ODUyNjY2NzI0
YzA4ODQxZTgxLi4wOGI3MmFhNmYyMjhkNDE1MzcwYjFhNTk1NDVlZWU1YmJmMWVmZWVhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAK
QEAgLTgwLDYgKzgwLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT2JqZWN0cyhJc29IZWFwPGhl
YXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQogICAgIGF1dG8mIGltcGwg
PSBoZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tl
cihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCisgICAgICAgIGxvY2tl
ciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKICAgICAgICAgICAgIHBvaW50ZXJzLmVy
YXNlKG9iamVjdCk7CiAgICAgICAgIH0pOwpAQCAtOTYsNiArOTcsNyBAQCBzdGF0aWMgdm9pZCBh
c3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9p
ZCo+IHBvaW50ZQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFj
aExpdmVPYmplY3QoCisgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3Qp
IHsKICAgICAgICAgICAgIEVYUEVDVF9FUShwb2ludGVycy5lcmFzZShvYmplY3QpLCAxVSk7CiAg
ICAgICAgIH0pOwpAQCAtMTA4LDE1ICsxMTAsMTEgQEAgc3RhdGljIHZvaWQgYXNzZXJ0Q2xlYW4o
SXNvSGVhcDxoZWFwVHlwZT4mIGhlYXApCiAgICAgc2NhdmVuZ2VUaGlzVGhyZWFkKCk7CiAgICAg
aWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKSB7CiAgICAgICAg
IGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjps
b2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmplY3RzKCkpOwotICAgICAgICB9CisgICAgICAg
IEVYUEVDVF9GQUxTRShpbXBsLm51bUxpdmVPYmplY3RzKCkpOwogICAgIH0KICAgICBoZWFwLnNj
YXZlbmdlKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICAgICAgc3RkOjps
b2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgfQogfQpAQCAtMTg3LDE5
ICsxODUsMTIgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZl
bmdlSW5NaWRkbGUpCiAgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwogICAgIH0KICAgICBoZWFw
LnNjYXZlbmdlKCk7Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7CiAgICAg
YXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVk
UGFnZXNCZWZvcmUgPSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQorICAgIHVuc2ln
bmVkIG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOwog
ICAgIGFzc2VydEhhc09ubHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBwdHJzLnNpemUoKSAvIDI7IGktLTspCiAgICAgICAgIHB0cnMucHVzaF9i
YWNrKGhlYXAuYWxsb2NhdGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1h
bGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29t
bWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQorICAg
IEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5udW1Db21taXR0ZWRQYWdl
cygpKTsKICAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCiAgICAgICAgIGhlYXAuZGVhbGxvY2F0
ZShwdHIpOwogICAgIGFzc2VydENsZWFuKGhlYXApOwpAQCAtMjIwLDE5ICsyMTEsMTIgQEAgVEVT
VChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgp
CiAgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwogICAgIH0KICAgICBoZWFwLnNjYXZlbmdlKCk7
Ci0gICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmU7CiAgICAgYXV0byYgaW1wbCA9
IGhlYXAuaW1wbCgpOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11
dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgbnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUg
PSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIG51bUNvbW1p
dHRlZFBhZ2VzQmVmb3JlID0gaW1wbC5udW1Db21taXR0ZWRQYWdlcygpOwogICAgIGFzc2VydEhh
c09ubHlPYmplY3RzKGhlYXAsIHRvcHRyc2V0KHB0cnMpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBwdHJzLnNpemUoKSAvIDI7IGktLTspCiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxs
b2NhdGUoKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+
IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29tbWl0dGVkUGFnZXNC
ZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7Ci0gICAgfQorICAgIEVYUEVDVF9FUShu
dW1Db21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5udW1Db21taXR0ZWRQYWdlcygpKTsKICAgICBm
b3IgKHZvaWQqIHB0ciA6IHB0cnMpCiAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwogICAg
IGFzc2VydENsZWFuKGhlYXApOwo=
</data>
<flag name="review"
          id="403605"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>