<?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>129664</bug_id>
          
          <creation_ts>2014-03-04 01:00:50 -0800</creation_ts>
          <short_desc>Move Source/WebCore/rendering/ code to std::unique_ptr</short_desc>
          <delta_ts>2014-03-31 10:45:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986715</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:00:50 -0800</bug_when>
    <thetext>Move Source/WebCore/rendering/ code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986716</commentid>
    <comment_count>1</comment_count>
      <attachid>225747</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:03:42 -0800</bug_when>
    <thetext>Created attachment 225747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986732</commentid>
    <comment_count>2</comment_count>
      <attachid>225756</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:36:45 -0800</bug_when>
    <thetext>Created attachment 225756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994312</commentid>
    <comment_count>3</comment_count>
      <attachid>227788</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-25 13:35:03 -0700</bug_when>
    <thetext>Created attachment 227788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995801</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-31 03:13:22 -0700</bug_when>
    <thetext>Committed r166489: &lt;http://trac.webkit.org/changeset/166489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995918</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-03-31 10:45:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r166489: &lt;http://trac.webkit.org/changeset/166489&gt;

iOS build fix:  &lt;http://trac.webkit.org/changeset/166512&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225747</attachid>
            <date>2014-03-04 01:03:42 -0800</date>
            <delta_ts>2014-03-04 01:36:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129664-20140304010339.patch</filename>
            <type>text/plain</type>
            <size>124220</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI5MmE1OGExYTNlODhh
ZWJmZTg0ZGU5YjNiYzE4MzcxMjFhM2VmMy4uN2M2OTViMTc0ZDFjNWQwMzYxMGYwMDk0NmZhYmZk
NmYwZWRhMjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxNC0wMy0wNCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92ZSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093
blB0ciBpbiBjb2RlIHVuZGVyIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy8gd2l0aCBzdGQ6OnVu
aXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2x5Z29uOjpGbG9hdFBvbHlnb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9DbGlwUGF0aE9wZXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5z
dXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1Ro
cmVhZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmg6
CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
cmVjdEJhc2VkVGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpt
dXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNw
cDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVC
bG9ja0Zyb21EZXNjZW5kYW50QW5kQ29udGFpbmVyTWFwcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlVcGRhdGVTY3JvbGxJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjphZGRDb250aW51YXRpb25XaXRoT3V0bGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25PdXRsaW5lcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbW92ZUZyb21UcmFja2VkUmVuZGVyZXJN
YXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRDb21wdXRlZENvbHVtbkNv
dW50QW5kV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94UmVnaW9u
SW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQnV0dG9uOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1Ro
cmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1
c2hWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3Jp
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0
TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRMYXllckNvbHVtbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGVhclpPcmRlckxp
c3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZvcmVE
aXNwbGF5UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlckluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OkZpbHRl
ckluZm86Om1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6
Z2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OnNldFJlbmRlckJveFJlZ2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6Y29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpmbG93VGhyZWFkQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3
OjppbWFnZVF1YWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmll
dy5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRBdXRvc2l6ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVTaGFwZU1hcmdpbkJvdW5kcyk6CisgICAgICAgICogcmVuZGVy
aW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFw
ZTo6UG9seWdvblNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hh
cGVNYXJnaW5JbnRlcnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJTaGFwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVJbnNldFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlY3RhbmdsZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUVsbGlwc2VTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hh
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlTGF5b3V0Qm94U2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcGVJbmZvOjptYXJrU2hhcGVBc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlSW5mbzo6aXNTaGFwZURpcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5zaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjbG9uZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJE
aXJlY3RpdmVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1
cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlczo6c2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6c2V0TWFya2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRNYXJrZXJNaWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0U3Ryb2tlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVzb3Vy
Y2VzRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVh
c3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5oOgorCiAyMDE0LTAzLTAzICBTYW5naHl1cCBMZWUgIDxzaDUzLmxl
ZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICA6YWN0aXZlIHN0eWxlIGlzIG5vdCBjbGVhcmVkIHdo
ZW4gaXRzIGRpc3BsYXkgcHJvcGVydHkgaXMgc2V0IHRvIG5vbmUgYmVmb3JlIG1vdXNlIHJlbGVh
c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2x5Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdv
bi5jcHAKaW5kZXggYzM5ZTI4NWFiNjFlOGEyMGUwNjQ2N2RkY2E4ODg0YTNmMDBhYzhmNC4uNzgx
YmQyZGY0MjZiZDc5Njk2OWZmYjUyOWQ5NDYzOGJjZDBjYjRmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uY3BwCkBAIC03OSw4ICs3OSw4
IEBAIHN0YXRpYyB1bnNpZ25lZCBmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleChjb25zdCBGbG9hdFBv
bHlnb24mIHBvbHlnb24sIHVuc2lnbmVkIHZlCiAgICAgcmV0dXJuIHZlcnRleEluZGV4MjsKIH0K
IAotRmxvYXRQb2x5Z29uOjpGbG9hdFBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2lu
dD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKLSAgICA6IG1fdmVydGljZXModmVydGlj
ZXMpCitGbG9hdFBvbHlnb246OkZsb2F0UG9seWdvbihzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZs
b2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCisgICAgOiBtX3ZlcnRpY2Vz
KHN0ZDo6bW92ZSh2ZXJ0aWNlcykpCiAgICAgLCBtX2ZpbGxSdWxlKGZpbGxSdWxlKQogewogICAg
IHVuc2lnbmVkIG5WZXJ0aWNlcyA9IG51bWJlck9mVmVydGljZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmgKaW5kZXggNTY2NjU3NGIwZjdl
NjhlYTdiMWQ1N2MzOTlkZWQ5MDliN2U1NmFjZS4uZTg2OWE4YzJkMjRlNmJmNzI1YzA1NTQ5YjMw
YjMxNWQzNzA1NzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRQb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2x5Z29uLmgKQEAgLTM1LDggKzM1LDcgQEAKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRy
ZWUuaCIKICNpbmNsdWRlICJWYWx1ZVRvU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIK
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00NSw3ICs0NCw3IEBAIGNsYXNzIEZsb2F0UG9seWdvbkVkZ2U7CiAKIGNsYXNz
IEZsb2F0UG9seWdvbiB7CiBwdWJsaWM6Ci0gICAgRmxvYXRQb2x5Z29uKFBhc3NPd25QdHI8VmVj
dG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpOworICAgIEZsb2F0
UG9seWdvbihzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2lu
ZFJ1bGUgZmlsbFJ1bGUpOwogCiAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4QXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuICgqbV92ZXJ0aWNlcylbaW5kZXhdOyB9CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZWZXJ0aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXMtPnNpemUo
KTsgfQpAQCAtNjcsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFpbnNOb25aZXJv
KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRXZlbk9kZChjb25z
dCBGbG9hdFBvaW50JikgY29uc3Q7CiAKLSAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBt
X3ZlcnRpY2VzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IG1fdmVy
dGljZXM7CiAgICAgV2luZFJ1bGUgbV9maWxsUnVsZTsKICAgICBGbG9hdFJlY3QgbV9ib3VuZGlu
Z0JveDsKICAgICBib29sIG1fZW1wdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlw
UGF0aE9wZXJhdGlvbi5oCmluZGV4IDdkNzFjNTEwOTQzNTc1M2NjMTdiOWI3NjA5N2UxMzliMDkz
M2RmNjIuLmFjMWZhMDhmNWMyNDIzOGE0NzIxNDQ1N2QwN2MzOGQwYWQzNTlmOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCkBAIC0zMyw4ICszMyw2
IEBACiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAppbmRleCAzMmY5N2IwNTRkZGFmZmYxMTli
N2JlMjAxOGI0MGFlNGIwYTk5Zjk5Li5kNjc3OWExMjBjMmRlMWJjMDIwNjY5MjlmZWRhN2NjZThh
ZjFjNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29u
dHJvbGxlci5jcHAKQEAgLTQwLDExICs0MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc093blB0cjxGbG93VGhyZWFkQ29udHJvbGxlcj4gRmxvd1RocmVhZENvbnRyb2xsZXI6OmNy
ZWF0ZShSZW5kZXJWaWV3KiB2aWV3KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmxvd1Ro
cmVhZENvbnRyb2xsZXIodmlldykpOwotfQotCiBGbG93VGhyZWFkQ29udHJvbGxlcjo6Rmxvd1Ro
cmVhZENvbnRyb2xsZXIoUmVuZGVyVmlldyogdmlldykKICAgICA6IG1fdmlldyh2aWV3KQogICAg
ICwgbV9jdXJyZW50UmVuZGVyRmxvd1RocmVhZCgwKQpAQCAtNjAsNyArNTUsNyBAQCBGbG93VGhy
ZWFkQ29udHJvbGxlcjo6fkZsb3dUaHJlYWRDb250cm9sbGVyKCkKIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCYgRmxvd1RocmVhZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFtX3JlbmRlck5hbWVkRmxv
d1RocmVhZExpc3QpCi0gICAgICAgIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCA9IGFkb3B0
UHRyKG5ldyBSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KCkpOworICAgICAgICBtX3JlbmRlck5h
bWVkRmxvd1RocmVhZExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck5hbWVkRmxvd1RocmVh
ZExpc3Q+KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gbV9yZW5kZXJO
YW1lZEZsb3dUaHJlYWRMaXN0LT5iZWdpbigpLCBlbmQgPSBtX3JlbmRlck5hbWVkRmxvd1RocmVh
ZExpc3QtPmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaAppbmRleCAwZGNhODg3ZTEzNzAzOTU4
ZWI1MjFlYjZjZWJmY2MyN2E3M2IyZTJhLi4zNzlhYmY1NTNmODM1OGRlM2Q5YTRmODJkNzJhZjNm
YTU5Y2UyNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVh
ZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENv
bnRyb2xsZXIuaApAQCAtMzEsOCArMzEsOCBAQAogI2RlZmluZSBGbG93VGhyZWFkQ29udHJvbGxl
cl9oCiAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKj4gUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdDsKIGNsYXNzIEZs
b3dUaHJlYWRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxGbG93VGhyZWFkQ29udHJvbGxlcj4gY3JlYXRlKFJl
bmRlclZpZXcqKTsKKyAgICBleHBsaWNpdCBGbG93VGhyZWFkQ29udHJvbGxlcihSZW5kZXJWaWV3
Kik7CiAgICAgfkZsb3dUaHJlYWRDb250cm9sbGVyKCk7CiAKICAgICBSZW5kZXJGbG93VGhyZWFk
KiBjdXJyZW50UmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlbmRl
ckZsb3dUaHJlYWQ7IH0KQEAgLTkyLDcgKzkyLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBGbG93VGhyZWFkQ29udHJvbGxlcihSZW5kZXJWaWV3Kik7CiAg
ICAgdm9pZCB1cGRhdGVGbG93VGhyZWFkc0NoYWluSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIHJl
c2V0Rmxvd1RocmVhZHNXaXRoQXV0b0hlaWdodFJlZ2lvbnMoKTsKIApAQCAtMTAxLDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyRmxvd1RocmVhZCogbV9jdXJyZW50UmVuZGVyRmxvd1Ro
cmVhZDsKICAgICBib29sIG1faXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRPcmRlckRpcnR5OwogICAg
IHVuc2lnbmVkIG1fZmxvd1RocmVhZHNXaXRoQXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zOwotICAg
IE93blB0cjxSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0PiBtX3JlbmRlck5hbWVkRmxvd1RocmVh
ZExpc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q+IG1f
cmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdDsKICAgICBIYXNoTWFwPGNvbnN0IEVsZW1lbnQqLCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBtX21hcE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCmluZGV4IGUxMjE5
MWZmNzZjMDRmNDM5ZGRjMTYwYjJkMTliNjkxNmVlNmI5ZWMuLjI3MTI4YWE5M2Y0MjE4NGI4ZDBi
ZDQwODM5OTY5ZWViYWU0MTgwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggNjQ1OWRhNjNiMzE1YzNlYzE5YWJkM2I4ZTczN2EyMmMzOTRlODBlMi4uMjBiN2Fk
MTkxYTk3YmIxZjU3YjY0OTkwNjQ0MTA2OGQ4MDk0Y2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTIsNyArOTIsNyBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092
ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBO
b2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KLSAgICBtX3JlY3RCYXNlZFRlc3RSZXN1
bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9kZVNldCgq
b3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOworICAgIG1fcmVjdEJhc2VkVGVzdFJl
c3VsdCA9IG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9k
ZVNldD4oKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwogfQogCiBIaXRU
ZXN0UmVzdWx0Ojp+SGl0VGVzdFJlc3VsdCgpCkBAIC0xMTEsNyArMTExLDcgQEAgSGl0VGVzdFJl
c3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVy
KQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAvLyBP
bmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0LgotICAgIG1fcmVj
dEJhc2VkVGVzdFJlc3VsdCA9IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/
IG5ldyBOb2RlU2V0KCpvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7CisgICAgbV9y
ZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxw
dHI7CiAKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC02MzcsMTQgKzYzNywxNCBAQCB2b2lkIEhp
dFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKIGNvbnN0IEhp
dFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6OnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSBjb25zdAogewogICAgIGlmICghbV9yZWN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX3Jl
Y3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihuZXcgTm9kZVNldCk7CisgICAgICAgIG1fcmVj
dEJhc2VkVGVzdFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1
cm4gKm1fcmVjdEJhc2VkVGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYg
SGl0VGVzdFJlc3VsdDo6bXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICgh
bV9yZWN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBh
ZG9wdFB0cihuZXcgTm9kZVNldCk7CisgICAgICAgIG1fcmVjdEJhc2VkVGVzdFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fcmVjdEJhc2VkVGVzdFJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXgg
NGQ3MjhhNzIyYjEwZGJhNzFlZjcyN2EyYmM0NmY1MWU5OWRjN2U3MC4uMzY1YjRjOWNlMTJiODZi
ZTliZThmODQ2OWI1N2Y2OTgxZDc0YTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCkBAIC0yOCw5ICsyOCw5IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3Qu
aCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOwogICAgIGJvb2wgbV9pc092
ZXJXaWRnZXQ7IC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgb3ZlciBhIHdpZGdldCAoYW5kIG5v
dCBpbiB0aGUgYm9yZGVyL3BhZGRpbmcgYXJlYSBvZiBhIFJlbmRlcldpZGdldCBmb3IgZXhhbXBs
ZSkuCiAKLSAgICBtdXRhYmxlIE93blB0cjxOb2RlU2V0PiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVz
dWx0OwogfTsKIAogU3RyaW5nIGRpc3BsYXlTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFu
c2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlLmNwcAppbmRleCBjYjNmYzg0YjY3MjY1MjY0MGMyZmFkMTBiZjJkOWZjMDM1MmIz
MDcxLi5iODJkN2QwNzA2MjExYTNiNGFlNzhjNTMxMmQ0YmNiYTdlOTM0OGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5o
IgogCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgKaW5kZXggYTA2ZGYyYjVmOTg2OThkNTRlMzJjOWYw
ZmZlZTBjMTJjOGM2YWQyYi4uNDMyZDM2MTEyYWNhMjliNTkwMzMxYTUyZWE3ZGQyYjA4ZDYwNGU5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJv
bGxlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00Miw3ICs0MSw3IEBAIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVF1
YWxpdHlDb250cm9sbGVyKQogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI+IGNyZWF0ZShjb25zdCBSZW5kZXJWaWV3JiByZW5kZXJWaWV3KSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihyZW5kZXJWaWV3KSk7IH0K
KyAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcmKTsK
IAogICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlv
dXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KQEAgLTUxLDgg
KzUwLDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qgdm9pZCosIExheW91
dFNpemU+IExheWVyU2l6ZU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyQm94TW9kZWxP
YmplY3QqLCBMYXllclNpemVNYXA+IE9iamVjdExheWVyU2l6ZU1hcDsKIAotICAgIGV4cGxpY2l0
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYpOwotCiAgICAgdm9pZCBy
ZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCosIExheWVyU2l6ZU1hcCogaW5uZXJNYXAs
IGNvbnN0IHZvaWQqIGxheWVyKTsKICAgICB2b2lkIHNldChSZW5kZXJCb3hNb2RlbE9iamVjdCos
IExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJik7CiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEltYWdl
UXVhbGl0eUNvbnRyb2xsZXI+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAppbmRleCA3YWJjNjI2ZGZkNmE1MDdkYTRhYjVhNTRiMjc2MzVjYzAwNGE5YTI2Li44YzE2
ZDdkODM3MjcyNmI5YWVmNjgzYWM4YTA2MjhkMTBjZmNmMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IFNhbWVTaXpl
QXNSZW5kZXJCbG9jayA6IHB1YmxpYyBSZW5kZXJCb3ggewogCiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoUmVuZGVyQmxvY2spID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyQmxvY2spLCBSZW5kZXJC
bG9ja19zaG91bGRfc3RheV9zbWFsbCk7CiAKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJl
bmRlckJveCosIE93blB0cjxDb2x1bW5JbmZvPj4gQ29sdW1uSW5mb01hcDsKK3R5cGVkZWYgV1RG
OjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVlX3B0cjxDb2x1bW5JbmZvPj4g
Q29sdW1uSW5mb01hcDsKIHN0YXRpYyBDb2x1bW5JbmZvTWFwKiBnQ29sdW1uSW5mb01hcCA9IDA7
CiAKIHN0YXRpYyBUcmFja2VkRGVzY2VuZGFudHNNYXAqIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNN
YXAgPSAwOwpAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiBn
UGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwID0gMDsKIHN0YXRpYyBUcmFja2VkQ29udGFpbmVy
TWFwKiBnUG9zaXRpb25lZENvbnRhaW5lck1hcCA9IDA7CiBzdGF0aWMgVHJhY2tlZENvbnRhaW5l
ck1hcCogZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAgPSAwOwogICAgIAotdHlwZWRlZiBXVEY6
Okhhc2hNYXA8UmVuZGVyQmxvY2sqLCBPd25QdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+
PiBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA7Cit0eXBlZGVmIFdURjo6SGFzaE1hcDxSZW5k
ZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPj4+IENv
bnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcDsKIAogdHlwZWRlZiBXVEY6Okhhc2hTZXQ8UmVuZGVy
QmxvY2sqPiBEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldDsKIHN0YXRpYyBpbnQgZ0RlbGF5VXBk
YXRlU2Nyb2xsSW5mbyA9IDA7CkBAIC0xOTYsNyArMTk2LDcgQEAgUmVuZGVyQmxvY2s6OlJlbmRl
ckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVu
c2lnbmUKIAogc3RhdGljIHZvaWQgcmVtb3ZlQmxvY2tGcm9tRGVzY2VuZGFudEFuZENvbnRhaW5l
ck1hcHMoUmVuZGVyQmxvY2sqIGJsb2NrLCBUcmFja2VkRGVzY2VuZGFudHNNYXAqJiBkZXNjZW5k
YW50TWFwLCBUcmFja2VkQ29udGFpbmVyTWFwKiYgY29udGFpbmVyTWFwKQogewotICAgIGlmIChP
d25QdHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+IGRlc2NlbmRhbnRTZXQgPSBkZXNjZW5k
YW50TWFwLT50YWtlKGJsb2NrKSkgeworICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8VHJhY2tlZFJl
bmRlcmVyTGlzdEhhc2hTZXQ+IGRlc2NlbmRhbnRTZXQgPSBkZXNjZW5kYW50TWFwLT50YWtlKGJs
b2NrKSkgewogICAgICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5k
ID0gZGVzY2VuZGFudFNldC0+ZW5kKCk7CiAgICAgICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlz
dEhhc2hTZXQ6Oml0ZXJhdG9yIGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50U2V0LT5iZWdpbigpOyBk
ZXNjZW5kYW50ICE9IGVuZDsgKytkZXNjZW5kYW50KSB7CiAgICAgICAgICAgICBUcmFja2VkQ29u
dGFpbmVyTWFwOjppdGVyYXRvciBpdCA9IGNvbnRhaW5lck1hcC0+ZmluZCgqZGVzY2VuZGFudCk7
CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpmaW5pc2hEZWxheVVwZGF0
ZVNjcm9sbEluZm8oKQogICAgIGlmIChnRGVsYXlVcGRhdGVTY3JvbGxJbmZvID09IDApIHsKICAg
ICAgICAgQVNTRVJUKGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCk7CiAKLSAgICAgICAgT3du
UHRyPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0PiBpbmZvU2V0KGFkb3B0UHRyKGdEZWxheWVk
VXBkYXRlU2Nyb2xsSW5mb1NldCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVsYXllZFVw
ZGF0ZVNjcm9sbEluZm9TZXQ+IGluZm9TZXQoZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0KTsK
ICAgICAgICAgZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0ID0gMDsKIAogICAgICAgICBmb3Ig
KERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0OjppdGVyYXRvciBpdCA9IGluZm9TZXQtPmJlZ2lu
KCk7IGl0ICE9IGluZm9TZXQtPmVuZCgpOyArK2l0KSB7CkBAIC0yNDI3LDcgKzI0MjcsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjphZGRDb250aW51YXRpb25XaXRoT3V0bGluZShSZW5kZXJJbmxpbmUq
IGZsb3cpCiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIGNvbnRpbnVhdGlvbnMgPSB0
YWJsZS0+Z2V0KHRoaXMpOwogICAgIGlmICghY29udGludWF0aW9ucykgewogICAgICAgICBjb250
aW51YXRpb25zID0gbmV3IExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+OwotICAgICAgICB0YWJs
ZS0+c2V0KHRoaXMsIGFkb3B0UHRyKGNvbnRpbnVhdGlvbnMpKTsKKyAgICAgICAgdGFibGUtPnNl
dCh0aGlzLCBzdGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+KGNvbnRp
bnVhdGlvbnMpKTsKICAgICB9CiAgICAgCiAgICAgY29udGludWF0aW9ucy0+YWRkKGZsb3cpOwpA
QCAtMjQ1Miw3ICsyNDUyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25P
dXRsaW5lcyhQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIGlmICh0YWJs
ZS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIE93blB0cjxMaXN0
SGFzaFNldDxSZW5kZXJJbmxpbmUqPj4gY29udGludWF0aW9ucyA9IHRhYmxlLT50YWtlKHRoaXMp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPj4gY29udGlu
dWF0aW9ucyA9IHRhYmxlLT50YWtlKHRoaXMpOwogICAgIGlmICghY29udGludWF0aW9ucykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yODYwLDcgKzI4NjAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpp
bnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhSZW5kZXJCb3gmIGRlc2NlbmRhbnQsIFRyYWNr
ZWREZQogICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBkZXNjZW5kYW50U2V0ID0gZGVz
Y2VuZGFudHNNYXAtPmdldCh0aGlzKTsKICAgICBpZiAoIWRlc2NlbmRhbnRTZXQpIHsKICAgICAg
ICAgZGVzY2VuZGFudFNldCA9IG5ldyBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKLSAgICAg
ICAgZGVzY2VuZGFudHNNYXAtPnNldCh0aGlzLCBhZG9wdFB0cihkZXNjZW5kYW50U2V0KSk7Cisg
ICAgICAgIGRlc2NlbmRhbnRzTWFwLT5zZXQodGhpcywgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRS
ZW5kZXJlckxpc3RIYXNoU2V0PihkZXNjZW5kYW50U2V0KSk7CiAgICAgfQogICAgIGJvb2wgYWRk
ZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoJmRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CiAgICAgaWYg
KCFhZGRlZCkgewpAQCAtMjg3Miw3ICsyODcyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0
SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoUmVuZGVyQm94JiBkZXNjZW5kYW50LCBUcmFja2VkRGUK
ICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4qIGNvbnRhaW5lclNldCA9IGNvbnRhaW5lck1hcC0+
Z2V0KCZkZXNjZW5kYW50KTsKICAgICBpZiAoIWNvbnRhaW5lclNldCkgewogICAgICAgICBjb250
YWluZXJTZXQgPSBuZXcgSGFzaFNldDxSZW5kZXJCbG9jayo+OwotICAgICAgICBjb250YWluZXJN
YXAtPnNldCgmZGVzY2VuZGFudCwgYWRvcHRQdHIoY29udGFpbmVyU2V0KSk7CisgICAgICAgIGNv
bnRhaW5lck1hcC0+c2V0KCZkZXNjZW5kYW50LCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxSZW5k
ZXJCbG9jayo+Pihjb250YWluZXJTZXQpKTsKICAgICB9CiAgICAgQVNTRVJUKCFjb250YWluZXJT
ZXQtPmNvbnRhaW5zKHRoaXMpKTsKICAgICBjb250YWluZXJTZXQtPmFkZCh0aGlzKTsKQEAgLTI4
ODMsNyArMjg4Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZyb21UcmFja2VkUmVuZGVy
ZXJNYXBzKFJlbmRlckJveCYgZGVzY2VuZGFudCwgVHJhY2tlZERlCiAgICAgaWYgKCFkZXNjZW5k
YW50c01hcCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE93blB0cjxIYXNoU2V0PFJlbmRl
ckJsb2NrKj4+IGNvbnRhaW5lclNldCA9IGNvbnRhaW5lck1hcC0+dGFrZSgmZGVzY2VuZGFudCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4gY29udGFpbmVyU2V0
ID0gY29udGFpbmVyTWFwLT50YWtlKCZkZXNjZW5kYW50KTsKICAgICBpZiAoIWNvbnRhaW5lclNl
dCkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMzUzNyw3ICszNTM3LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6c2V0Q29tcHV0ZWRDb2x1bW5Db3VudEFuZFdpZHRoKGludCBjb3VudCwgTGF5b3V0
VW5pdCB3aWR0aCkKICAgICAgICAgICAgIGlmICghZ0NvbHVtbkluZm9NYXApCiAgICAgICAgICAg
ICAgICAgZ0NvbHVtbkluZm9NYXAgPSBuZXcgQ29sdW1uSW5mb01hcDsKICAgICAgICAgICAgIGlu
Zm8gPSBuZXcgQ29sdW1uSW5mbzsKLSAgICAgICAgICAgIGdDb2x1bW5JbmZvTWFwLT5hZGQodGhp
cywgYWRvcHRQdHIoaW5mbykpOworICAgICAgICAgICAgZ0NvbHVtbkluZm9NYXAtPmFkZCh0aGlz
LCBzdGQ6OnVuaXF1ZV9wdHI8Q29sdW1uSW5mbz4oaW5mbykpOwogICAgICAgICAgICAgc2V0SGFz
Q29sdW1ucyh0cnVlKTsKICAgICAgICAgfQogICAgICAgICBpbmZvLT5zZXREZXNpcmVkQ29sdW1u
Q291bnQoY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAz
ZDA5OWU3ZGMxMmQ0NmFkMzAyZTUxNmFjNDAwNzBhZTBmZmFjZmEyLi5mZTZkNjU3YjExMjYwZWQy
ZTc4MWNkYmQ1ZTA3ZWQxNWY2YzM1ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkdhcFJlY3RzLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDggKzQ2LDggQEAgc3RydWN0IEJpZGlSdW47CiBz
dHJ1Y3QgUGFpbnRJbmZvOwogCiB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVuZGVyQm94Kiwg
MTY+IFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0OwotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29u
c3QgUmVuZGVyQmxvY2sqLCBPd25QdHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+PiBUcmFj
a2VkRGVzY2VuZGFudHNNYXA7Ci10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gq
LCBPd25QdHI8SGFzaFNldDxSZW5kZXJCbG9jayo+Pj4gVHJhY2tlZENvbnRhaW5lck1hcDsKK3R5
cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Pj4gVHJhY2tlZERlc2NlbmRhbnRzTWFwOwordHlwZWRl
ZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8
UmVuZGVyQmxvY2sqPj4+IFRyYWNrZWRDb250YWluZXJNYXA7CiAKIGVudW0gQ2FyZXRUeXBlIHsg
Q3Vyc29yQ2FyZXQsIERyYWdDYXJldCB9OwogZW51bSBDb250YWluaW5nQmxvY2tTdGF0ZSB7IE5l
d0NvbnRhaW5pbmdCbG9jaywgU2FtZUNvbnRhaW5pbmdCbG9jayB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAyMGMxZDRhYTJkNzZhZjdhMDQy
ZDE2ZDJmZDdjZGIyZjkyMDY1YmU0Li5kNTM5ZmUyZTI3ZTVmYjg2Yjg4OGZkYzk3YjdmNzA1ZTlk
NzkyMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cApAQCAtMjA0NCw3ICsyMDQ0LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9h
dGluZ09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKIAogdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpCiB7Ci0gICAgbV9mbG9hdGlu
Z09iamVjdHMgPSBhZG9wdFB0cihuZXcgRmxvYXRpbmdPYmplY3RzKCp0aGlzKSk7CisgICAgbV9m
bG9hdGluZ09iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMp
OwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBmMzU4YzhkMTRk
YmMyMzI0MDk0NzhlMThlNzc5ZjVmYjc1ODNkNWIzLi4wMGNmYjc0MzM4YzYyMzdiZTlhZTI3OWVi
ZWQ2ODljNmVkZmNlNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGluZUJveExpc3QuaCIK
ICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiVHJhaWxpbmdPYmplY3Rz
LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU5Nyw3
ICs1OTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIE93blB0cjxGbG9h
dGluZ09iamVjdHM+IG1fZmxvYXRpbmdPYmplY3RzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dGluZ09iamVjdHM+IG1fZmxvYXRpbmdPYmplY3RzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJCbG9ja0Zsb3dSYXJlRGF0YT4gbV9yYXJlQmxvY2tGbG93RGF0YTsKICAgICBSZW5kZXJMaW5l
Qm94TGlzdCBtX2xpbmVCb3hlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2ltcGxlTGluZUxheW91
dDo6TGF5b3V0PiBtX3NpbXBsZUxpbmVMYXlvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94UmVnaW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveFJlZ2lvbkluZm8uaAppbmRleCBiZmUwZGNjYzMwZDkwMWNmYjBiMTA4YzVi
Njc3Mjk2NTNhYTUyODY3Li4wOGU3Mzg2ZjM0YzczYjQ3MTViNzcxNmE1MjhiNjJhNjg1ZTdiODAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94UmVnaW9uSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hSZWdpb25JbmZvLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgUmVuZGVyQm94UmVnaW9uSW5mb19oCiAKICNpbmNs
dWRlICJSZW5kZXJPdmVyZmxvdy5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3Bw
CmluZGV4IDc3NTZhNDFiNzBjOGNmOGQxNDZmZjI4MTc4ZTJlMDgyNjc0ODJlMDkuLjQzZjMyYzBm
Y2QwYTg2YTRiMmE4YjE0NDI5YTVlMGRlZjc0OTJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2b2lkIFJlbmRlckJ1
dHRvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdAogCiAgICAgaWYgKCFtX2RlZmF1bHQgJiYgdGhlbWUoKS5pc0RlZmF1bHQodGhp
cykpIHsKICAgICAgICAgaWYgKCFtX3RpbWVyKQotICAgICAgICAgICAgbV90aW1lciA9IGFkb3B0
UHRyKG5ldyBUaW1lcjxSZW5kZXJCdXR0b24+KHRoaXMsICZSZW5kZXJCdXR0b246OnRpbWVyRmly
ZWQpKTsKKyAgICAgICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPFJlbmRl
ckJ1dHRvbj4+KHRoaXMsICZSZW5kZXJCdXR0b246OnRpbWVyRmlyZWQpOwogICAgICAgICBtX3Rp
bWVyLT5zdGFydFJlcGVhdGluZygwLjAzKTsKICAgICAgICAgbV9kZWZhdWx0ID0gdHJ1ZTsKICAg
ICB9IGVsc2UgaWYgKG1fZGVmYXVsdCAmJiAhdGhlbWUoKS5pc0RlZmF1bHQodGhpcykpIHsKICAg
ICAgICAgbV9kZWZhdWx0ID0gZmFsc2U7Ci0gICAgICAgIG1fdGltZXIuY2xlYXIoKTsKKyAgICAg
ICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmgKaW5kZXggMTdjMTc2MTVjYTk5OGEwMmViNDViYWEyMTQ0MjE2MDRkNmEz
MmVhZS4uODc1NjUzY2RkOGVjYmU3NDIyYjZhZmRjNmMzMTNjMTNiZTAzMTM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaApAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5j
bHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclRleHRGcmFnbWVudCogbV9i
dXR0b25UZXh0OwogICAgIFJlbmRlckJsb2NrKiBtX2lubmVyOwogCi0gICAgT3duUHRyPFRpbWVy
PFJlbmRlckJ1dHRvbj4+IG1fdGltZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPFJlbmRl
ckJ1dHRvbj4+IG1fdGltZXI7CiAgICAgYm9vbCBtX2RlZmF1bHQ7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggNWZhYWYxOWY0MmI2OTJkMTg4
MDJjZTlkNDAzNzdiMjViMzc1OThmYi4uYmFmMmY5YzdjMGQ2YTRmZDA0YmE2MWE4ZDFlM2NjNDdk
NjVkNzE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Q291bnRlck5v
ZGU+PiBDb3VudGVyTWFwOwotdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93
blB0cjxDb3VudGVyTWFwPj4gQ291bnRlck1hcHM7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVu
ZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJNYXA+PiBDb3VudGVyTWFwczsKIAog
c3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGFsd2F5c0NyZWF0ZUNvdW50ZXIpOwogCkBA
IC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKICAgICAgICAgbm9kZU1h
cCA9IGNvdW50ZXJNYXBzKCkuZ2V0KGVsZW1lbnQpOwogICAgIGVsc2UgewogICAgICAgICBub2Rl
TWFwID0gbmV3IENvdW50ZXJNYXA7Ci0gICAgICAgIGNvdW50ZXJNYXBzKCkuc2V0KGVsZW1lbnQs
IGFkb3B0UHRyKG5vZGVNYXApKTsKKyAgICAgICAgY291bnRlck1hcHMoKS5zZXQoZWxlbWVudCwg
c3RkOjp1bmlxdWVfcHRyPENvdW50ZXJNYXA+KG5vZGVNYXApKTsKICAgICAgICAgZWxlbWVudC0+
c2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAgICAgfQogICAgIG5vZGVNYXAtPnNldChpZGVu
dGlmaWVyLCBuZXdOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcAppbmRleCA0YTVjZDIzMWE0YjM3NjNmNWEzMTAyMmY4NGQwNTkwYmM3ZDlkODc1
Li5kMDQ1MzZiN2YxMzgwOWFkYWI4Yjc5MTk4NzE2Njg4ZTU2YzJlZGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0zMjIsMTEgKzMyMiwx
MSBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUFsbExheWVyVG9SZWdpb25NYXBwaW5n
cygpCiAKICAgICBpZiAobmVlZHNMYXllclVwZGF0ZSkgewogICAgICAgICBpZiAoIW1fbGF5ZXJU
b1JlZ2lvbk1hcCkKLSAgICAgICAgICAgIG1fbGF5ZXJUb1JlZ2lvbk1hcCA9IGFkb3B0UHRyKG5l
dyBMYXllclRvUmVnaW9uTWFwKCkpOworICAgICAgICAgICAgbV9sYXllclRvUmVnaW9uTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxMYXllclRvUmVnaW9uTWFwPigpOwogICAgICAgICBtX2xheWVyVG9S
ZWdpb25NYXAtPnN3YXAobGF5ZXJUb1JlZ2lvbk1hcCk7CiAKICAgICAgICAgaWYgKCFtX3JlZ2lv
blRvTGF5ZXJMaXN0TWFwKQotICAgICAgICAgICAgbV9yZWdpb25Ub0xheWVyTGlzdE1hcCA9IGFk
b3B0UHRyKG5ldyBSZWdpb25Ub0xheWVyTGlzdE1hcCgpKTsKKyAgICAgICAgICAgIG1fcmVnaW9u
VG9MYXllckxpc3RNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvblRvTGF5ZXJMaXN0TWFwPigp
OwogICAgICAgICBtX3JlZ2lvblRvTGF5ZXJMaXN0TWFwLT5zd2FwKHJlZ2lvblRvTGF5ZXJMaXN0
TWFwKTsKICAgICB9CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayog
YgogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCByZWdpb24tPmlzUmVu
ZGVyUmVnaW9uU2V0KCkpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgbm8gaW5mb3JtYXRpb24gY29t
cHV0ZWQgZm9yIHRoaXMgcmVnaW9uIHNvIHdlIG5lZWQgdG8gZG8gaXQuCi0gICAgICAgIE93blB0
cjxSZW5kZXJCb3hSZWdpb25JbmZvPiBvbGRJbmZvID0gcmVnaW9uLT50YWtlUmVuZGVyQm94UmVn
aW9uSW5mbyhibG9jayk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hSZWdpb25J
bmZvPiBvbGRJbmZvID0gcmVnaW9uLT50YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhibG9jayk7CiAg
ICAgICAgIGlmICghb2xkSW5mbykgewogICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHJh
bmdlSW52YWxpZGF0ZWQ7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAyM2QwZjI1M2NjZjViYmI4NGQxOTk2M2Jl
YmQxZTFmMGE1MjgwODJmLi44NTVlZjEyMzc4MDllZmM1YjA2MDk5MDBjOTBlNTgxMjUyN2IwOGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTMw
MiwxMCArMzAyLDEwIEBAIHByb3RlY3RlZDoKICAgICB9OwogCiAgICAgLy8gTWFwIGEgbGF5ZXIg
dG8gdGhlIHJlZ2lvbiBpbiB3aGljaCB0aGUgbGF5ZXIgaXMgcGFpbnRlZC4KLSAgICBPd25QdHI8
TGF5ZXJUb1JlZ2lvbk1hcD4gbV9sYXllclRvUmVnaW9uTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxMYXllclRvUmVnaW9uTWFwPiBtX2xheWVyVG9SZWdpb25NYXA7CiAKICAgICAvLyBNYXAgYSBy
ZWdpb24gdG8gdGhlIGxpc3Qgb2YgbGF5ZXJzIHRoYXQgcGFpbnQgaW4gdGhhdCByZWdpb24uCi0g
ICAgT3duUHRyPFJlZ2lvblRvTGF5ZXJMaXN0TWFwPiBtX3JlZ2lvblRvTGF5ZXJMaXN0TWFwOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpb25Ub0xheWVyTGlzdE1hcD4gbV9yZWdpb25Ub0xheWVy
TGlzdE1hcDsKIAogICAgIC8vIE1hcCBhIGJveCB0byB0aGUgbGlzdCBvZiByZWdpb25zIGluIHdo
aWNoIHRoZSBib3ggaXMgcmVuZGVyZWQuCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRl
ckJveCosIFJlbmRlclJlZ2lvblJhbmdlPiBSZW5kZXJSZWdpb25SYW5nZU1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IDk4YzA0ZWQ0
MWY2YzI5MjQ4ZmZhYmIyNTYyYmYwYTU1ODljMjhhZmQuLjFlOGI0NjZlNTI1ODNkYjJlMzkzYTk3
NzUyMjI0YWYxODg4Y2ExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21f
aW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQot
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0
cml4KHQpKTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
bnNmb3JtYXRpb25NYXRyaXg+KHQpOwogICAgIGVsc2UKICAgICAgICAgc3RlcC5tX29mZnNldCA9
IExheW91dFNpemUodC5lKCksIHQuZigpKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcsIGNvbnN0IExh
eW91dFNpemUmIHNjcm9sCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBw
aW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIHN0ZXAubV9vZmZzZXQgPSBzY3JvbGxPZmZz
ZXQ7CiAgICAgaWYgKHQpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKnQpKTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKICAgICAKICAgICBzdGVw
SW5zZXJ0ZWQoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5oCmluZGV4IDQ0ZmJiZTViYzY3OTZkNTQxNTdlYWUzMGEwMTQ2YWE3ZGVmYTA5OGEu
LmQ4ZjgzMmNmZmI0ZWM4NWI4ZGYzNDZiMDE0NDI3ODc4NGU5ZjUxYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw3ICs2NCw3IEBA
IHN0cnVjdCBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAgewogICAgIH0KICAgICBjb25zdCBSZW5kZXJP
YmplY3QqIG1fcmVuZGVyZXI7CiAgICAgTGF5b3V0U2l6ZSBtX29mZnNldDsKLSAgICBPd25QdHI8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IG1fdHJhbnNmb3JtOyAvLyBJbmNsdWRlcyBvZmZzZXQgaWYg
bm9uLW51bGwuCisgICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBtX3Ry
YW5zZm9ybTsgLy8gSW5jbHVkZXMgb2Zmc2V0IGlmIG5vbi1udWxsLgogICAgIGJvb2wgbV9hY2N1
bXVsYXRpbmdUcmFuc2Zvcm07CiAgICAgYm9vbCBtX2lzTm9uVW5pZm9ybTsgLy8gTWFwcGluZyBk
ZXBlbmRzIG9uIHRoZSBpbnB1dCBwb2ludCwgZS5nLiBiZWNhdXNlIG9mIENTUyBjb2x1bW5zLgog
ICAgIGJvb2wgbV9pc0ZpeGVkUG9zaXRpb247CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7Ci0vLyBUaGlzIGlzIHJl
cXVpcmVkIGZvciBhIHN0cnVjdCB3aXRoIE93blB0ci4gV2Uga25vdyBSZW5kZXJHZW9tZXRyeU1h
cFN0ZXAgaXMgc2ltcGxlIGVub3VnaCB0aGF0CisvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBhIHN0
cnVjdCB3aXRoIHN0ZDo6dW5pcXVlX3B0cjw+LiBXZSBrbm93IFJlbmRlckdlb21ldHJ5TWFwU3Rl
cCBpcyBzaW1wbGUgZW5vdWdoIHRoYXQKIC8vIGluaXRpYWxpemluZyB0byAwIGFuZCBtb3Zpbmcg
d2l0aCBtZW1jcHkgKGFuZCB0aGVuIG5vdCBkZXN0cnVjdGluZyB0aGUgb3JpZ2luYWwpIHdpbGwg
d29yay4KIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxXZWJDb3JlOjpSZW5kZXJHZW9t
ZXRyeU1hcFN0ZXA+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDgyNzcxNzk4ZjU1MDg3ZjY0YzAzZmE2
NWU3ZjFlMjA2YjBiNzEyZGIuLmE5YjcyMDFiZTRkMDAyNDYyMDZkMjg1ODQzZTA4OGY0YTkyMjdi
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFBhc3NPd25Q
dHI8R3JpZENvb3JkaW5hdGU+IG5leHRFbXB0eUdyaWRBcmVhKCkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZENvb3JkaW5hdGU+IG5leHRFbXB0eUdyaWRBcmVhKCkKICAgICB7CiAgICAgICAgIGlm
IChtX2dyaWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjYs
MTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8
IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgY2hpbGRyZW4gPSBtX2dyaWRbbV9yb3dJbmRl
eF1bbV9jb2x1bW5JbmRleF07CiAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgT3duUHRyPEdyaWRDb29yZGluYXRlPiByZXN1bHQgPSBhZG9wdFB0
cihuZXcgR3JpZENvb3JkaW5hdGUoR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCksIEdy
aWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXgpKSk7CisgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRlPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyaWRDb29yZGluYXRlPihHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4KSwgR3JpZFNw
YW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCkpOwogICAgICAgICAgICAgICAgIC8vIEFk
dmFuY2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291
bGQgcmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAg
ICAgICsrdmFyeWluZ1RyYWNrSW5kZXg7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShyZXN1bHQpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjU2LDgg
KzY1Niw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgZm9yIChS
ZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9
IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG5ldmVyIHJl
LXJlc29sdmUgcG9zaXRpb25zIGlmIHRoZSBncmlkIGlzIGdyb3duIGR1cmluZyBhdXRvLXBsYWNl
bWVudCB3aGljaCBtYXkgbGVhZCBhdXRvIC8gPGludGVnZXI+CiAgICAgICAgIC8vIHBvc2l0aW9u
cyB0byBub3QgbWF0Y2ggdGhlIGF1dGhvcidzIGludGVudC4gVGhlIHNwZWNpZmljYXRpb24gaXMg
dW5jbGVhciBvbiB3aGF0IHNob3VsZCBiZSBkb25lIGluIHRoaXMgY2FzZS4KLSAgICAgICAgT3du
UHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjaGlsZCwgRm9yUm93cyk7Ci0gICAgICAgIE93blB0cjxHcmlkU3Bhbj4gY29sdW1uUG9zaXRp
b25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvckNvbHVtbnMpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJvd1Bvc2l0aW9ucyA9IHJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JSb3dzKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEdyaWRTcGFuPiBjb2x1bW5Qb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShjaGlsZCwgRm9yQ29sdW1ucyk7CiAgICAgICAgIGlmICghcm93UG9zaXRpb25zIHx8
ICFjb2x1bW5Qb3NpdGlvbnMpIHsKICAgICAgICAgICAgIEdyaWRTcGFuKiBtYWpvckF4aXNQb3Np
dGlvbnMgPSAoYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMp
ID8gY29sdW1uUG9zaXRpb25zLmdldCgpIDogcm93UG9zaXRpb25zLmdldCgpOwogICAgICAgICAg
ICAgaWYgKCFtYWpvckF4aXNQb3NpdGlvbnMpCkBAIC02OTgsOCArNjk4LDggQEAgdm9pZCBSZW5k
ZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKQogICAgICAgICAg
ICAgb3JkZXJWYWx1ZXMuYXBwZW5kKG9yZGVyKTsKIAogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGJ5cGFzc2VzIHRoZSBjYWNoZSAoY2FjaGVkR3JpZENvb3JkaW5hdGUoKSkgYXMgaXQgaXMgdXNl
ZCB0byBidWlsZCBpdC4KLSAgICAgICAgT3duUHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSBy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7Ci0gICAgICAgIE93
blB0cjxHcmlkU3Bhbj4gY29sdW1uUG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9t
U3R5bGUoY2hpbGQsIEZvckNvbHVtbnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNw
YW4+IHJvd1Bvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBG
b3JSb3dzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiBjb2x1bW5Qb3NpdGlv
bnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgRm9yQ29sdW1ucyk7CiAK
ICAgICAgICAgLy8gfHBvc2l0aW9uc3wgaXMgMCBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgYXV0by1w
bGFjZW1lbnQgYWxnb3JpdGhtLiBPdXIgZXN0aW1hdGlvbiBpZ25vcmVzCiAgICAgICAgIC8vIHRo
aXMgY2FzZSBhcyB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHdpbGwgZ3JvdyB0aGUgZ3Jp
ZCBhcyBuZWVkZWQuCkBAIC03MTksMTUgKzcxOSwxNSBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVs
YXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNl
U3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJveCo+IGF1dG9Hcmlk
SXRlbXMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdXRvR3JpZEl0ZW1zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIE93blB0cjxHcmlkU3Bhbj4gbWFqb3JBeGlzUG9zaXRpb25zID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoYXV0b0dyaWRJdGVtc1tpXSwgYXV0b1BsYWNl
bWVudE1ham9yQXhpc0RpcmVjdGlvbigpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRT
cGFuPiBtYWpvckF4aXNQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShh
dXRvR3JpZEl0ZW1zW2ldLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkpOwogICAg
ICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlz
RGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy0+aW5pdGlhbFBvc2l0aW9uSW5kZXgpOwot
ICAgICAgICBpZiAoT3duUHRyPEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0
b3IubmV4dEVtcHR5R3JpZEFyZWEoKSkgeworICAgICAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEdy
aWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEo
KSkgewogICAgICAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGF1dG9HcmlkSXRlbXNbaV0sIGVt
cHR5R3JpZEFyZWEtPnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXgsIGVtcHR5R3JpZEFyZWEtPmNv
bHVtbnMuaW5pdGlhbFBvc2l0aW9uSW5kZXgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBncm93R3JpZChhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9u
KCkpOwotICAgICAgICBPd25QdHI8R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVy
YXRvci5uZXh0RW1wdHlHcmlkQXJlYSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZENv
b3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0RW1wdHlHcmlkQXJlYSgpOwog
ICAgICAgICBBU1NFUlQoZW1wdHlHcmlkQXJlYSk7CiAgICAgICAgIGluc2VydEl0ZW1JbnRvR3Jp
ZChhdXRvR3JpZEl0ZW1zW2ldLCBlbXB0eUdyaWRBcmVhLT5yb3dzLmluaXRpYWxQb3NpdGlvbklu
ZGV4LCBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLmluaXRpYWxQb3NpdGlvbkluZGV4KTsKICAgICB9
CkBAIC03NDEsMTMgKzc0MSwxMyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhp
c0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJCb3gqPiBhdXRvR3JpZEl0ZW1zKQogCiB2b2lkIFJl
bmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94KiBncmlkSXRl
bSkKIHsKLSAgICBPd25QdHI8R3JpZFNwYW4+IG1pbm9yQXhpc1Bvc2l0aW9ucyA9IHJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGly
ZWN0aW9uKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gbWlub3JBeGlzUG9zaXRp
b25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGF1dG9QbGFjZW1l
bnRNaW5vckF4aXNEaXJlY3Rpb24oKSk7CiAgICAgQVNTRVJUKCFyZXNvbHZlR3JpZFBvc2l0aW9u
c0Zyb21TdHlsZShncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpKSk7
CiAgICAgc2l6ZV90IG1pbm9yQXhpc0luZGV4ID0gMDsKICAgICBpZiAobWlub3JBeGlzUG9zaXRp
b25zKSB7CiAgICAgICAgIG1pbm9yQXhpc0luZGV4ID0gbWlub3JBeGlzUG9zaXRpb25zLT5pbml0
aWFsUG9zaXRpb25JbmRleDsKICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwg
YXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpLCBtaW5vckF4aXNJbmRleCk7Ci0gICAg
ICAgIGlmIChPd25QdHI8R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5u
ZXh0RW1wdHlHcmlkQXJlYSgpKSB7CisgICAgICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8R3JpZENv
b3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0RW1wdHlHcmlkQXJlYSgpKSB7
CiAgICAgICAgICAgICBpbnNlcnRJdGVtSW50b0dyaWQoZ3JpZEl0ZW0sIGVtcHR5R3JpZEFyZWEt
PnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXgsIGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuaW5pdGlh
bFBvc2l0aW9uSW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC03NTUs
NyArNzU1LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25Hcmlk
KFJlbmRlckJveCogZ3JpZEl0ZW0pCiAgICAgICAgIGNvbnN0IHNpemVfdCBlbmRPZk1ham9yQXhp
cyA9IChhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucykgPyBn
cmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOwogICAgICAgICBmb3IgKHNpemVfdCBt
YWpvckF4aXNJbmRleCA9IDA7IG1ham9yQXhpc0luZGV4IDwgZW5kT2ZNYWpvckF4aXM7ICsrbWFq
b3JBeGlzSW5kZXgpIHsKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQs
IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzSW5kZXgpOwotICAg
ICAgICAgICAgaWYgKE93blB0cjxHcmlkQ29vcmRpbmF0ZT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJh
dG9yLm5leHRFbXB0eUdyaWRBcmVhKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6OnVuaXF1ZV9w
dHI8R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0RW1wdHlHcmlk
QXJlYSgpKSB7CiAgICAgICAgICAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGdyaWRJdGVtLCBl
bXB0eUdyaWRBcmVhLT5yb3dzLmluaXRpYWxQb3NpdGlvbkluZGV4LCBlbXB0eUdyaWRBcmVhLT5j
b2x1bW5zLmluaXRpYWxQb3NpdGlvbkluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CkBAIC04NTMsNyArODUzLDcgQEAgR3JpZFNwYW4gUmVuZGVyR3JpZDo6cmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tQXV0b1BsYWNlbWVudFBvc2l0aW9uKGNvbnN0IFJlbmRlckIK
ICAgICByZXR1cm4gR3JpZFNwYW4oaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsUG9zaXRpb24pOwog
fQogCi1QYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9u
c0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiBSZW5kZXJH
cmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGdyaWRJ
dGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewogICAgIGNv
bnN0IEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zKSA/IGdyaWRJdGVtLT5zdHlsZSgpLmdyaWRJdGVtQ29sdW1uU3RhcnQoKSA6IGdyaWRJdGVt
LT5zdHlsZSgpLmdyaWRJdGVtUm93U3RhcnQoKTsKICAgICBjb25zdCBHcmlkUG9zaXRpb25TaWRl
IGluaXRpYWxQb3NpdGlvblNpZGUgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gQ29sdW1u
U3RhcnRTaWRlIDogUm93U3RhcnRTaWRlOwpAQCAtODY1LDcgKzg2NSw3IEBAIFBhc3NPd25QdHI8
R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0
IFJlbmRlckJveCoKIAogICAgIGlmIChpbml0aWFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkgJiYgZmluYWxQb3NpdGlvbi5zaG91bGRCZVJlc29sdmVk
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSkgewogICAgICAgICBpZiAoc3R5bGUoKS5ncmlkQXV0
b0Zsb3coKSA9PSBBdXRvRmxvd05vbmUpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEdyaWRTcGFuKDAsIDApKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdy
aWRTcGFuPigwLCAwKTsKIAogICAgICAgICAvLyBXZSBjYW4ndCBnZXQgb3VyIGdyaWQgcG9zaXRp
b25zIHdpdGhvdXQgcnVubmluZyB0aGUgYXV0byBwbGFjZW1lbnQgYWxnb3JpdGhtLgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5MCw3ICs4OTAsNyBAQCBQYXNzT3duUHRyPEdyaWRTcGFu
PiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJC
b3gqCiAgICAgaWYgKHJlc29sdmVkRmluYWxQb3NpdGlvbiA8IHJlc29sdmVkSW5pdGlhbFBvc2l0
aW9uKQogICAgICAgICByZXNvbHZlZEZpbmFsUG9zaXRpb24gPSByZXNvbHZlZEluaXRpYWxQb3Np
dGlvbjsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JpZFNwYW4ocmVzb2x2ZWRJbml0aWFs
UG9zaXRpb24sIHJlc29sdmVkRmluYWxQb3NpdGlvbikpOworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdyaWRTcGFuPihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgcmVzb2x2ZWRGaW5hbFBv
c2l0aW9uKTsKIH0KIAogc2l6ZV90IFJlbmRlckdyaWQ6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9z
aXRpb25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9u
U2lkZSBzaWRlKSBjb25zdApAQCAtOTY1LDEwICs5NjUsMTAgQEAgc2l6ZV90IFJlbmRlckdyaWQ6
OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgR3IKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3Jp
ZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNv
bHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gUmVuZGVy
R3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCBy
ZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdy
aWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QKIHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
biwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R3JpZFNwYW4+KHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uKTsKIAogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4oKSk7CiAgICAgQVNTRVJU
KHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpID4gMCk7CkBAIC05ODMsMTMgKzk4MywxMyBAQCBQYXNz
T3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oc2l6ZQogICAgIHNpemVfdCBwb3NpdGlvbk9mZnNldCA9IHBvc2l0aW9u
LnNwYW5Qb3NpdGlvbigpIC0gMTsKICAgICBpZiAoc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUgfHwg
c2lkZSA9PSBSb3dTdGFydFNpZGUpIHsKICAgICAgICAgc2l6ZV90IGluaXRpYWxSZXNvbHZlZFBv
c2l0aW9uID0gc3RkOjptYXg8aW50PigwLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24gLSBwb3Np
dGlvbk9mZnNldCk7Ci0gICAgICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKGluaXRpYWxSZXNv
bHZlZFBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOworICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4oaW5pdGlhbFJlc29sdmVkUG9zaXRpb24sIHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbik7CiAgICAgfQogCi0gICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVh
dGUocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24gKyBw
b3NpdGlvbk9mZnNldCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZFNwYW4+KHJl
c29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uICsgcG9zaXRp
b25PZmZzZXQpOwogfQogCi1QYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZl
TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBv
c2l0aW9uU2lkZSBzaWRlKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiBSZW5kZXJH
cmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24o
c2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3Np
dGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAogewogICAgIEFTU0VSVChwb3NpdGlv
bi5pc1NwYW4oKSk7CiAgICAgQVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxs
KCkpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3Jp
ZDo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2kKICAgICAv
LyBJZiB0aGVyZSBpcyBubyBuYW1lZCBncmlkIGxpbmUgb2YgdGhhdCBuYW1lLCB3ZSByZXNvbHZl
IHRoZSBwb3NpdGlvbiB0byAnYXV0bycgKHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gJ3NwYW4gMScg
aW4gdGhpcyBjYXNlKS4KICAgICAvLyBTZWUgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9Q
dWJsaWMvd3d3LXN0eWxlLzIwMTNKdW4vMDM5NC5odG1sLgogICAgIGlmIChpdCA9PSBncmlkTGlu
ZXNOYW1lcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBy
ZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOwogCiAgICAgaWYgKHNpZGUgPT0gUm93U3RhcnRTaWRl
IHx8IHNpZGUgPT0gQ29sdW1uU3RhcnRTaWRlKQogICAgICAgICByZXR1cm4gcmVzb2x2ZVJvd1N0
YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHBvc2l0aW9uLCBpdC0+dmFsdWUpOwpAQCAtMTAx
MCw3ICsxMDEwLDcgQEAgUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZU5h
bWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2kKICAgICByZXR1cm4gcmVzb2x2
ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcG9zaXRpb24sIGl0LT52YWx1ZSk7CiB9CiAK
LVBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVtblN0
YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJl
c29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgY29u
c3QgVmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlk
U3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5l
UG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBv
c2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90
PiYgZ3JpZExpbmVzKSBjb25zdAogewogICAgIC8vIFRoZSBncmlkIGxpbmUgaW5lcXVhbGl0eSBu
ZWVkcyB0byBiZSBzdHJpY3QgKHdoaWNoIGRvZXNuJ3QgbWF0Y2ggdGhlIGFmdGVyIC8gZW5kIGNh
c2UpIGJlY2F1c2UgfHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbnwKICAgICAvLyBpcyBhbHJlYWR5
IGNvbnZlcnRlZCB0byBhbiBpbmRleCBpbiBvdXIgZ3JpZCByZXByZXNlbnRhdGlvbiAoaWUgb25l
IHdhcyByZW1vdmVkIGZyb20gdGhlIGdyaWQgbGluZSB0byBhY2NvdW50IGZvciB0aGUgc2lkZSku
CkBAIC0xMDIzLDEwICsxMDIzLDEwIEBAIFBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6
OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9uCiAgICAgc2l6
ZV90IHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA9IGdyaWRMaW5lc1tncmlkTGluZUluZGV4XTsK
ICAgICBpZiAocmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID4gcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uKQogICAgICAgICByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPSByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb247Ci0gICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRHcmlkTGluZVBv
c2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdyaWRTcGFuPihyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24sIHJlc29sdmVkT3Bwb3Np
dGVQb3NpdGlvbik7CiB9CiAKLVBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29s
dmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAorc3RkOjp1
bmlxdWVfcHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVk
T3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmVj
dG9yPHNpemVfdD4mIGdyaWRMaW5lcykgY29uc3QKIHsKICAgICBzaXplX3QgZmlyc3RMaW5lQWZ0
ZXJPcHBvc2l0ZVBvc2l0aW9uSW5kZXggPSBncmlkTGluZXMuc2l6ZSgpIC0gMTsKICAgICBjb25z
dCBzaXplX3QqIGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbiA9IHN0ZDo6dXBwZXJfYm91
bmQoZ3JpZExpbmVzLmJlZ2luKCksIGdyaWRMaW5lcy5lbmQoKSwgcmVzb2x2ZWRPcHBvc2l0ZVBv
c2l0aW9uKTsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIFBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRl
ckdyaWQ6OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpCiAg
ICAgc2l6ZV90IHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA9IEdyaWRQb3NpdGlvbjo6YWRqdXN0
R3JpZFBvc2l0aW9uRm9yUm93RW5kQ29sdW1uRW5kU2lkZShncmlkTGluZXNbZ3JpZExpbmVJbmRl
eF0pOwogICAgIGlmIChyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24pCiAgICAgICAgIHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA9IHJlc29sdmVkT3Bw
b3NpdGVQb3NpdGlvbjsKLSAgICByZXR1cm4gR3JpZFNwYW46OmNyZWF0ZShyZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24sIHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JpZFNwYW4+KHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRH
cmlkTGluZVBvc2l0aW9uKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJy
ZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZDc1MTM5MzgxOGIzODcxOGUx
NDk5ZDVkODVhYmEzY2E4MzRmNzZhMy4uN2MwZmY3MTZmYWI0YzNiY2ZhZjA2NmJmNjg5NWMxZGMy
ZWRkMDk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0xMTEsMTMg
KzExMSwxMyBAQCBwcml2YXRlOgogICAgIEdyaWRDb29yZGluYXRlIGNhY2hlZEdyaWRDb29yZGlu
YXRlKGNvbnN0IFJlbmRlckJveCopIGNvbnN0OwogCiAgICAgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQ
b3NpdGlvbnNGcm9tQXV0b1BsYWNlbWVudFBvc2l0aW9uKGNvbnN0IFJlbmRlckJveCosIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiwgc2l6ZV90KSBjb25zdDsKLSAgICBQYXNzT3duUHRyPEdyaWRT
cGFuPiByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gqLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bh
bj4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICBzaXplX3QgcmVzb2x2ZU5hbWVkR3JpZExp
bmVQb3NpdGlvbkZyb21TdHlsZShjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRl
KSBjb25zdDsKICAgICBzaXplX3QgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBH
cmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKSBjb25zdDsKLSAgICBQYXNzT3duUHRyPEdy
aWRTcGFuPiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90
IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0
aW9uU2lkZSkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bhbj4gcmVzb2x2ZU5hbWVkR3Jp
ZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIEdyaWRQb3NpdGlvblNpZGUpIGNvbnN0
OwotICAgIFBhc3NPd25QdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVk
T3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9yPHNpemVf
dD4mKSBjb25zdDsKLSAgICBQYXNzT3duUHRyPEdyaWRTcGFuPiByZXNvbHZlUm93RW5kQ29sdW1u
RW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJl
c29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9y
PHNpemVfdD4mKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVH
cmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKSBjb25zdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9u
LCBjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKSBjb25zdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3Np
dGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9yPHNpemVfdD4mKSBj
b25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dFbmRDb2x1bW5F
bmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVz
b2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mLCBjb25zdCBWZWN0b3I8
c2l6ZV90PiYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2s+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCmluZGV4IDUxOTgwOGY1YmFhN2UwZDk1ZDJhYmU2N2Y3
ZjhhNWUyYzI0MDU0MzIuLmYxODJkMzM5NjM5MmU5NGJhYWM5NzFkMjdjZDc2ZWMzMjBlYzlmNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2MGNmNjA3NTliMTgwNTlmNTNjYmU5Y2E3
NzE3ZjMyMTkwNjI4NmI3Li4xNWNmYWZiYjljMGZkOGEyYWI1ODljMTg4OGU5OTliNTBmOTlhOTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTYxNSw4ICs2
MTUsOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKQogICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKICAg
ICBBU1NFUlQoIW1fek9yZGVyTGlzdHNEaXJ0eSk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+IHBvc1pPcmRlckxpc3Q7Ci0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
PiBuZWdaT3JkZXJMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIq
Pj4gcG9zWk9yZGVyTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVy
Kj4+IG5lZ1pPcmRlckxpc3Q7CiAgICAgcmVidWlsZFpPcmRlckxpc3RzKFN0b3BBdFN0YWNraW5n
Q29udGV4dHMsIHBvc1pPcmRlckxpc3QsIG5lZ1pPcmRlckxpc3QpOwogCiAgICAgLy8gQ3JlYXRl
IGEgcmV2ZXJzZSBsb29rdXAuCkBAIC04NDYsMTIgKzg0NiwxMiBAQCB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFzVHJhbnNmb3JtID0gcmVuZGVyZXIoKS5o
YXNUcmFuc2Zvcm0oKSAmJiByZW5kZXJlcigpLnN0eWxlKCkuaGFzVHJhbnNmb3JtKCk7CiAgICAg
Ym9vbCBoYWQzRFRyYW5zZm9ybSA9IGhhczNEVHJhbnNmb3JtKCk7CiAKLSAgICBib29sIGhhZFRy
YW5zZm9ybSA9IG1fdHJhbnNmb3JtOworICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5z
Zm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBp
ZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcg
VHJhbnNmb3JtYXRpb25NYXRyaXgpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3RyYW5zZm9ybS5jbGVhcigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBudWxs
cHRyOwogICAgICAgICAKICAgICAgICAgLy8gTGF5ZXJzIHdpdGggdHJhbnNmb3JtcyBhY3QgYXMg
Y2xpcCByZWN0cyByb290cywgc28gY2xlYXIgdGhlIGNhY2hlZCBjbGlwIHJlY3RzIGhlcmUuCiAg
ICAgICAgIGNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKQEAgLTM5MDIsNyAr
MzkwMiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCiAKLVBhc3NPd25QdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVy
OjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5m
byYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0
UG9pbnQmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJv
b2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKQorc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVm
ZmVjdFJlbmRlcmVySGVscGVyPiBSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IExheW91dFBvaW50JiBvZmZzZXRGcm9tUm9vdCwgTGF5
b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21w
dXRlZCkKIHsKICAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM5MTUsNyArMzkxNSw3IEBAIFBhc3NPd25QdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250
ZXh0CiAgICAgaWYgKCFoYXNQYWludGVkRmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIE93blB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gZmlsdGVyUGFpbnRlciA9
IGFkb3B0UHRyKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcihoYXNQYWludGVkRmlsdGVy
KSk7CisgICAgYXV0byBmaWx0ZXJQYWludGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJFZmZl
Y3RSZW5kZXJlckhlbHBlcj4oaGFzUGFpbnRlZEZpbHRlcik7CiAgICAgaWYgKCFmaWx0ZXJQYWlu
dGVyLT5oYXZlRmlsdGVyRWZmZWN0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApA
QCAtMzk0Miw3ICszOTQyLDcgQEAgUGFzc093blB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
cj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQKICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiBmb3IgZXhhbXBsZSB0aGlzIGxheWVyIGhhcyBvdmVyZmxvdzpoaWRkZW4s
IGEgZHJvcCBzaGFkb3cgd2lsbCBub3QgY29tcHV0ZSBjb3JyZWN0bHkuCiAgICAgICAgIC8vIE5v
dGUgdGhhdCB3ZSB3aWxsIHN0aWxsIGFwcGx5IHRoZSBjbGlwcGluZyBvbiB0aGUgZmluYWwgcmVu
ZGVyaW5nIG9mIHRoZSBmaWx0ZXIuCiAgICAgICAgIHBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJl
Y3QgPSAhZmlsdGVySW5mby0+cmVuZGVyZXIoKS0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7
Ci0gICAgICAgIHJldHVybiBmaWx0ZXJQYWludGVyLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bW92ZShmaWx0ZXJQYWludGVyKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC00MDQ3LDcgKzQwNDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogCiAgICAgR3Jh
cGhpY3NDb250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBjb250ZXh0OwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKLSAgICBPd25QdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+
IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8s
IHBhaW50RmxhZ3MsIG9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RSZWxh
dGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoY29udGV4dCwgbG9jYWxQ
YWludGluZ0luZm8sIHBhaW50RmxhZ3MsIG9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3Vu
ZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICAgICBpZiAoZmlsdGVyUGFpbnRlcikg
ewogICAgICAgICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpOwogICAg
ICAgICBpZiAoY29udGV4dCAhPSB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgJiYgaGF2ZVRyYW5z
cGFyZW5jeSkgewpAQCAtNDEzNSw3ICs0MTM1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKICAgICAg
ICAgY29udGV4dCA9IGFwcGx5RmlsdGVycyhmaWx0ZXJQYWludGVyLmdldCgpLCB0cmFuc3BhcmVu
Y3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsYXllckZyYWdtZW50cyk7Ci0gICAg
ICAgIGZpbHRlclBhaW50ZXIuY2xlYXIoKTsKKyAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxw
dHI7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC00NTQ3LDE2ICs0NTQ3LDE2IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExh
eWVyLCBHcmFwaGljc0NvCiAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV3
VHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CiAgICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtLnRy
YW5zbGF0ZVJpZ2h0KHJvdW5kVG9JbnQob2Zmc2V0LndpZHRoKCkpLCByb3VuZFRvSW50KG9mZnNl
dC5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNoaWxkTGF5
ZXItPm1fdHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld1Ry
YW5zZm9ybSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obmV3VHJhbnNmb3JtKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMYXllclBhaW50aW5nSW5mbyBsb2NhbFBhaW50
aW5nSW5mbyhwYWludGluZ0luZm8pOwogICAgICAgICAgICAgICAgIGxvY2FsUGFpbnRpbmdJbmZv
LnBhaW50RGlydHlSZWN0ID0gbG9jYWxEaXJ0eVJlY3Q7CiAgICAgICAgICAgICAgICAgY2hpbGRM
YXllci0+cGFpbnRMYXllcihjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7
CiAKICAgICAgICAgICAgICAgICBpZiAob2xkSGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgICAg
ICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChvbGRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+
bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihvbGRU
cmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRMYXllci0+bV90cmFuc2Zvcm0uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRM
YXllci0+bV90cmFuc2Zvcm0gPSBudWxscHRyOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLyBBZGp1c3QgdGhlIHRyYW5zZm9ybSBzdWNoIHRoYXQgdGhlIHJlbmRlcmVy
J3MgdXBwZXIgbGVmdCBjb3JuZXIgd2lsbCBwYWludCBhdCAoMCwwKSBpbiB1c2VyIHNwYWNlLgog
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaW52b2x2ZXMgc3VidHJhY3Rpbmcgb3V0IHRoZSBwb3Np
dGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1cnJlbnQgY29vcmRpbmF0ZSBzcGFjZS4KQEAgLTUy
MDEsMTIgKzUyMDEsMTIgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRM
YXllckNvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmQKICAgICAgICAgICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuZXdUcmFuc2Zvcm0ob2xkVHJhbnNmb3JtKTsKICAgICAg
ICAgICAgICAgICBuZXdUcmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQob2Zmc2V0LndpZHRoKCksIG9m
ZnNldC5oZWlnaHQoKSk7CiAKLSAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9y
bSA9IGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeChuZXdUcmFuc2Zvcm0pKTsKKyAg
ICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KG5ld1RyYW5zZm9ybSk7CiAgICAgICAgICAgICAgICAgaGl0
TGF5ZXIgPSBjaGlsZExheWVyLT5oaXRUZXN0TGF5ZXIocm9vdExheWVyLCBjb2x1bW5MYXllcnNb
MF0sIHJlcXVlc3QsIHJlc3VsdCwgbG9jYWxDbGlwUmVjdCwgaGl0VGVzdExvY2F0aW9uLCBmYWxz
ZSwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmIChvbGRIYXNU
cmFuc2Zvcm0pCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0g
YWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG9sZFRyYW5zZm9ybSkpOworICAgICAg
ICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KG9sZFRyYW5zZm9ybSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybS5jbGVhcigpOwor
ICAgICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgdHJhbnNm
b3JtIHN1Y2ggdGhhdCB0aGUgcmVuZGVyZXIncyB1cHBlciBsZWZ0IGNvcm5lciB3aWxsIGJlIGF0
ICgwLDApIGluIHVzZXIgc3BhY2UuCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpbnZvbHZlcyBz
dWJ0cmFjdGluZyBvdXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXllciBpbiBvdXIgY3VycmVudCBj
b29yZGluYXRlIHNwYWNlLgpAQCAtNTI2NCw3ICs1MjY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQp
CiAgICAgY2FsY3VsYXRlQ2xpcFJlY3RzKGNsaXBSZWN0c0NvbnRleHQsIGNsaXBSZWN0cyk7CiAK
ICAgICBpZiAoIW1fY2xpcFJlY3RzQ2FjaGUpCi0gICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBh
ZG9wdFB0cihuZXcgQ2xpcFJlY3RzQ2FjaGUpOworICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKIAogICAgIGlmIChwYXJlbnRMYXll
ciAmJiBwYXJlbnRMYXllci0+Y2xpcFJlY3RzKGNsaXBSZWN0c0NvbnRleHQpICYmIGNsaXBSZWN0
cyA9PSAqcGFyZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVjdHNDb250ZXh0KSkKICAgICAgICAg
bV9jbGlwUmVjdHNDYWNoZS0+c2V0Q2xpcFJlY3RzKGNsaXBSZWN0c1R5cGUsIGNsaXBSZWN0c0Nv
bnRleHQucmVzcGVjdE92ZXJmbG93Q2xpcCwgcGFyZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVj
dHNDb250ZXh0KSk7CkBAIC01ODg5LDcgKzU4ODksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGVh
ckNsaXBSZWN0cyhDbGlwUmVjdHNUeXBlIHR5cGVUb0NsZWFyKQogUmVuZGVyTGF5ZXJCYWNraW5n
KiBSZW5kZXJMYXllcjo6ZW5zdXJlQmFja2luZygpCiB7CiAgICAgaWYgKCFtX2JhY2tpbmcpIHsK
LSAgICAgICAgbV9iYWNraW5nID0gYWRvcHRQdHIobmV3IFJlbmRlckxheWVyQmFja2luZygqdGhp
cykpOworICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFj
a2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVk
KCp0aGlzKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTU5MDYsNyArNTkwNiw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQmFja2luZyhib29sIGxheWVyQmVpbmdEZXN0cm95ZWQp
CiB7CiAgICAgaWYgKG1fYmFja2luZyAmJiAhcmVuZGVyZXIoKS5kb2N1bWVudEJlaW5nRGVzdHJv
eWVkKCkpCiAgICAgICAgIGNvbXBvc2l0b3IoKS5sYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoKnRo
aXMpOwotICAgIG1fYmFja2luZy5jbGVhcigpOworICAgIG1fYmFja2luZyA9IG51bGxwdHI7CiAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKCFsYXllckJlaW5nRGVzdHJveWVkKQpA
QCAtNjA4MCw3ICs2MDgwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3Rz
KCkKICAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cmVidWlsZFpPcmRlckxpc3RzKENvbGxlY3RMYXllcnNCZWhhdmlvciBiZWhhdmlvciwgT3du
UHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgcG9zWk9yZGVyTGlzdCwgT3duUHRyPFZlY3RvcjxS
ZW5kZXJMYXllcio+PiYgbmVnWk9yZGVyTGlzdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRa
T3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIHBvc1pPcmRlckxpc3QsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5lZ1pPcmRlckxpc3QpCiB7CiAgICAgYm9vbCBpbmNsdWRl
SGlkZGVuTGF5ZXJzID0gY29tcG9zaXRvcigpLmluQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgZm9y
IChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQpAQCAtNjEwNiw3ICs2MTA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxh
eWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25s
eSgpICYmICghbV9yZWZsZWN0aW9uIHx8IHJlZmxlY3Rpb25MYXllcigpICE9IGNoaWxkKSkgewog
ICAgICAgICAgICAgaWYgKCFtX25vcm1hbEZsb3dMaXN0KQotICAgICAgICAgICAgICAgIG1fbm9y
bWFsRmxvd0xpc3QgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlbmRlckxheWVyKj4pOworICAgICAg
ICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5k
ZXJMYXllcio+PigpOwogICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdC0+YXBwZW5kKGNoaWxk
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTYxMTQsNyArNjExNCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKICAgICBtX25vcm1hbEZsb3dMaXN0RGlydHkgPSBm
YWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVI
aWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvciBiZWhhdmlvciwgT3duUHRyPFZlY3Rv
cjxSZW5kZXJMYXllcio+PiYgcG9zQnVmZmVyLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+
JiBuZWdCdWZmZXIpCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycywgQ29sbGVjdExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBwb3NCdWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5lZ0J1ZmZlcikKIHsKICAgICB1cGRhdGVEZXNjZW5kYW50
RGVwZW5kZW50RmxhZ3MoKTsKIApAQCAtNjEyMywxMSArNjEyMywxMSBAQCB2b2lkIFJlbmRlckxh
eWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgQ29sbGVjdExheWVy
c0JlaGF2aW9yCiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXIgPSBpbmNsdWRlSGlkZGVuTGF5
ZXJzIHx8IChtX2hhc1Zpc2libGVDb250ZW50IHx8IChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICYm
IGlzU3RhY2tpbmcpKTsKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYmICFpc05vcm1hbEZs
b3dPbmx5KCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGJ1ZmZlciB0aGUgY2hpbGQg
c2hvdWxkIGJlIGluLgotICAgICAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBidWZm
ZXIgPSAoekluZGV4KCkgPj0gMCkgPyBwb3NCdWZmZXIgOiBuZWdCdWZmZXI7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIGJ1ZmZlciA9ICh6SW5kZXgoKSA+
PSAwKSA/IHBvc0J1ZmZlciA6IG5lZ0J1ZmZlcjsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGJ1
ZmZlciBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4KICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgICAgICBidWZmZXIgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlbmRlckxheWVyKj4pOworICAg
ICAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4o
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEFwcGVuZCBvdXJzZWx2ZXMgYXQgdGhlIGVuZCBvZiB0
aGUgYXBwcm9wcmlhdGUgYnVmZmVyLgogICAgICAgICBidWZmZXItPmFwcGVuZCh0aGlzKTsKQEAg
LTY1MTAsMTEgKzY1MTAsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKIAogICAgIGlmIChy
ZW5kZXJlcigpLnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT01BUlFVRUUgJiYgcmVuZGVyZXIoKS5z
dHlsZSgpLm1hcnF1ZWVCZWhhdmlvcigpICE9IE1OT05FICYmIHJlbmRlcmVyKCkuaXNCb3goKSkg
ewogICAgICAgICBpZiAoIW1fbWFycXVlZSkKLSAgICAgICAgICAgIG1fbWFycXVlZSA9IGFkb3B0
UHRyKG5ldyBSZW5kZXJNYXJxdWVlKHRoaXMpKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+
dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG1fbWFycXVlZSkgewot
ICAgICAgICBtX21hcnF1ZWUuY2xlYXIoKTsKKyAgICAgICAgbV9tYXJxdWVlID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDFhMTRiMjg3MmQxNDU0
NTljMjVmMWRkY2FhMjNiYWY4MWIzZDQyOWUuLmJmYzRmOTRiNDFmZDY1YTk2NTg2Y2JiNWViYWI0
MjRlZGFhMGQwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00
OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHRy
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2NSw3ICs4
NjUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZv
aWQgcmVidWlsZFpPcmRlckxpc3RzKCk7Ci0gICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoQ29s
bGVjdExheWVyc0JlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiwgT3duUHRy
PFZlY3RvcjxSZW5kZXJMYXllcio+PiYpOworICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKENv
bGxlY3RMYXllcnNCZWhhdmlvciwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
PiYsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mKTsKICAgICB2b2lkIGNs
ZWFyWk9yZGVyTGlzdHMoKTsKIAogICAgIHZvaWQgdXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsKQEAg
LTkzMyw3ICs5MzMsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0UG9pbnQgcmVuZGVyQm94TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmlzQm94KCkgPyB0b1JlbmRlckJveChy
ZW5kZXJlcigpKS5sb2NhdGlvbigpIDogTGF5b3V0UG9pbnQoKTsgfQogCi0gICAgdm9pZCBjb2xs
ZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgQ29sbGVjdExheWVyc0JlaGF2aW9y
LCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXll
cio+PiYpOworICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMs
IENvbGxlY3RMYXllcnNCZWhhdmlvciwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJMYXll
cio+PiYsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mKTsKIAogICAgIHZv
aWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKTsKIApAQCAtOTYxLDcg
Kzk2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlv
bihHcmFwaGljc0NvbnRleHQqLCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKTsKICAgICBib29sIHNl
dHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2
ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKLSAgICBQYXNzT3duUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBz
ZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MsIGNvbnN0IExheW91dFBvaW50JiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYg
cm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZpbHRl
cnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Ms
IGNvbnN0IExheW91dFBvaW50JiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0
aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBhcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFw
aGljc0NvbnRleHQqIG9yaWdpbmFsQ29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZy
YWdtZW50cyYpOwogI2VuZGlmCiAKQEAgLTEyODIsMjQgKzEyODIsMjQgQEAgcHJpdmF0ZToKICAg
ICAvLyBkZXNjZW5kYW50IGxheWVycyB3aXRoaW4gdGhlIHN0YWNraW5nIGNvbnRleHQgdGhhdCBo
YXZlIHotaW5kaWNlcyBvZiAwIG9yIGdyZWF0ZXIKICAgICAvLyAoYXV0byB3aWxsIGNvdW50IGFz
IDApLiAgbV9uZWdaT3JkZXJMaXN0IGhvbGRzIGRlc2NlbmRhbnRzIHdpdGhpbiBvdXIgc3RhY2tp
bmcgY29udGV4dCB3aXRoIG5lZ2F0aXZlCiAgICAgLy8gei1pbmRpY2VzLgotICAgIE93blB0cjxW
ZWN0b3I8UmVuZGVyTGF5ZXIqPj4gbV9wb3NaT3JkZXJMaXN0OwotICAgIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPj4gbV9uZWdaT3JkZXJMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPj4gbV9wb3NaT3JkZXJMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UmVuZGVyTGF5ZXIqPj4gbV9uZWdaT3JkZXJMaXN0OwogCiAgICAgLy8gVGhpcyBsaXN0
IGNvbnRhaW5zIGNoaWxkIGxheWVycyB0aGF0IGNhbm5vdCBjcmVhdGUgc3RhY2tpbmcgY29udGV4
dHMuICBGb3Igbm93IGl0IGlzIGp1c3QKICAgICAvLyBvdmVyZmxvdyBsYXllcnMsIGJ1dCB0aGF0
IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVy
Kj4+IG1fbm9ybWFsRmxvd0xpc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJM
YXllcio+PiBtX25vcm1hbEZsb3dMaXN0OwogCi0gICAgT3duUHRyPENsaXBSZWN0c0NhY2hlPiBt
X2NsaXBSZWN0c0NhY2hlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGlwUmVjdHNDYWNoZT4gbV9j
bGlwUmVjdHNDYWNoZTsKICAgICAKICAgICBJbnRQb2ludCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxi
YXJPZmZzZXQ7CiAKLSAgICBPd25QdHI8UmVuZGVyTWFycXVlZT4gbV9tYXJxdWVlOyAvLyBVc2Vk
IGJ5IGxheWVycyB3aXRoIG92ZXJmbG93Om1hcnF1ZWUKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyTWFycXVlZT4gbV9tYXJxdWVlOyAvLyBVc2VkIGJ5IGxheWVycyB3aXRoIG92ZXJmbG93Om1h
cnF1ZWUKICAgICAKICAgICAvLyBDYWNoZWQgbm9ybWFsIGZsb3cgdmFsdWVzIGZvciBhYnNvbHV0
ZSBwb3NpdGlvbmVkIGVsZW1lbnRzIHdpdGggc3RhdGljIGxlZnQvdG9wIHZhbHVlcy4KICAgICBM
YXlvdXRVbml0IG1fc3RhdGljSW5saW5lUG9zaXRpb247CiAgICAgTGF5b3V0VW5pdCBtX3N0YXRp
Y0Jsb2NrUG9zaXRpb247CiAKLSAgICBPd25QdHI8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG1fdHJh
bnNmb3JtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gbV90cmFu
c2Zvcm07CiAgICAgCiAgICAgLy8gTWF5IHVsdGltYXRlbHkgYmUgZXh0ZW5kZWQgdG8gbWFueSBy
ZXBsaWNhcyAod2l0aCB0aGVpciBvd24gcGFpbnQgb3JkZXIpLgogICAgIFJlbmRlclB0cjxSZW5k
ZXJSZXBsaWNhPiBtX3JlZmxlY3Rpb247CkBAIC0xMzEzLDcgKzEzMTMsNyBAQCBwcml2YXRlOgog
CiAgICAgSW50UmVjdCBtX2Jsb2NrU2VsZWN0aW9uR2Fwc0JvdW5kczsKIAotICAgIE93blB0cjxS
ZW5kZXJMYXllckJhY2tpbmc+IG1fYmFja2luZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
TGF5ZXJCYWNraW5nPiBtX2JhY2tpbmc7CiAKICAgICBjbGFzcyBGaWx0ZXJJbmZvOwogfTsKQEAg
LTEzMjIsOCArMTMyMiw4IEBAIGlubGluZSB2b2lkIFJlbmRlckxheWVyOjpjbGVhclpPcmRlckxp
c3RzKCkKIHsKICAgICBBU1NFUlQoIWlzU3RhY2tpbmdDb250YWluZXIoKSk7CiAKLSAgICBtX3Bv
c1pPcmRlckxpc3QuY2xlYXIoKTsKLSAgICBtX25lZ1pPcmRlckxpc3QuY2xlYXIoKTsKKyAgICBt
X3Bvc1pPcmRlckxpc3QgPSBudWxscHRyOworICAgIG1fbmVnWk9yZGVyTGlzdCA9IG51bGxwdHI7
CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmlu
ZGV4IGZlYmE4NDI2YzczMWI2NzhlNDU1ODM0ZTg0NDAwYjlkNzJiNmY5MDguLjkzODgyNDIzYzNk
NTRkNmU0MDlmNWU5MDEyMzIyNDMwNWVhMTY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MzQsNyArNTM0LDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJl
c2goY29uc3QgR3JhcGhpY3NMYXllcioKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5w
YWdlKCkpCiAgICAgICAgICAgICBkaXNwbGF5SUQgPSBwYWdlLT5jaHJvbWUoKS5kaXNwbGF5SUQo
KTsKIAotICAgICAgICBtX2xheWVyVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0xheWVy
VXBkYXRlcih0aGlzLCBkaXNwbGF5SUQpKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPih0aGlzLCBkaXNwbGF5SUQpOwogICAg
IH0KICAgICAKICAgICBtX2xheWVyVXBkYXRlci0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTM1Mzcs
NyArMzUzNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXRhY2hTY3JvbGxDb29y
ZGluYXRlZExheWVyKFJlbmRlckxheWVyJiBsYXllcikKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
LXR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybUxheWVyKiwgT3duUHRyPFZpZXdwb3J0Q29uc3RyYWlu
dHM+PiBMYXllck1hcDsKK3R5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybUxheWVyKiwgc3RkOjp1bmlx
dWVfcHRyPFZpZXdwb3J0Q29uc3RyYWludHM+PiBMYXllck1hcDsKIHR5cGVkZWYgSGFzaE1hcDxQ
bGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1MYXllcio+IFN0aWNreUNvbnRhaW5lck1hcDsKIAogdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExh
eWVycygpCkBAIC0zNTY5LDcgKzM1NjksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKCkKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbGF5ZXJNYXAuYWRkKGxheWVyLmJhY2tpbmco
KS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGFkb3B0UHRyKGNvbnN0cmFpbnRz
LnJlbGVhc2UoKSkpOworICAgICAgICBsYXllck1hcC5hZGQobGF5ZXIuYmFja2luZygpLT5ncmFw
aGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgc3RkOjptb3ZlKGNvbnN0cmFpbnRzKSk7CiAg
ICAgfQogICAgIAogICAgIGlmIChDaHJvbWVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNocm9tZUNs
aWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCmluZGV4IDYwNmUwYjdlZDU2ZWZkNDI5Yjk3ZTI3MzU4NjlmYmViNTkzOWQzNjIuLmVm
ZDFmOTUyYTk5OTQ5ZmJiNjI0NTRiNTgwYmY4YzJkYzc1NDI4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTUwMCw3ICs1MDAs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBtX2xheWVy
Rm9yRm9vdGVyOwogI2VuZGlmCiAKLSAgICBPd25QdHI8R3JhcGhpY3NMYXllclVwZGF0ZXI+IG1f
bGF5ZXJVcGRhdGVyOyAvLyBVcGRhdGVzIHRpbGVkIGxheWVyIHZpc2libGUgYXJlYSBwZXJpb2Rp
Y2FsbHkgd2hpbGUgYW5pbWF0aW9ucyBhcmUgcnVubmluZy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NMYXllclVwZGF0ZXI+IG1fbGF5ZXJVcGRhdGVyOyAvLyBVcGRhdGVzIHRpbGVkIGxh
eWVyIHZpc2libGUgYXJlYSBwZXJpb2RpY2FsbHkgd2hpbGUgYW5pbWF0aW9ucyBhcmUgcnVubmlu
Zy4KIAogICAgIFRpbWVyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4gbV9sYXllckZsdXNoVGltZXI7
CiAgICAgYm9vbCBtX2xheWVyRmx1c2hUaHJvdHRsaW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKaW5kZXggNGMzOTQz
MmU3NTI5NjM2MGMwZWVhNzkwMjEwZTlmNjY4OGMzNjI5Zi4uZjE2ZWExYmZkODFmYjE5ZTExMmRj
ODRmZDM0NjNjZjYyYzVhOWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKQEAgLTQzLDkgKzQzLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1IYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgT3duUHRyPFJlbmRlckxh
eWVyOjpGaWx0ZXJJbmZvPj4mIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjptYXAoKQorSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXllcjo6RmlsdGVy
SW5mbz4+JiBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6bWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIE93blB0cjxGaWx0ZXJJbmZv
Pj4+IG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJM
YXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJJbmZvPj4+IG1hcDsKICAgICByZXR1cm4gbWFw
OwogfQogCkBAIC02MCw5ICs2MCw5IEBAIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvJiBSZW5kZXJM
YXllcjo6RmlsdGVySW5mbzo6Z2V0KFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBBU1NFUlQo
bGF5ZXIubV9oYXNGaWx0ZXJJbmZvID09IG1hcCgpLmNvbnRhaW5zKCZsYXllcikpOwogCi0gICAg
T3duUHRyPEZpbHRlckluZm8+JiBpbmZvID0gbWFwKCkuYWRkKCZsYXllciwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOworICAgIGF1dG8mIGluZm8gPSBtYXAoKS5hZGQoJmxheWVyLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFpbmZvKSB7Ci0gICAgICAgIGluZm8gPSBhZG9w
dFB0cihuZXcgRmlsdGVySW5mbyhsYXllcikpOworICAgICAgICBpbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWx0ZXJJbmZvPihsYXllcik7CiAgICAgICAgIGxheWVyLm1faGFzRmlsdGVySW5mbyA9
IHRydWU7CiAgICAgfQogICAgIHJldHVybiAqaW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCBkODJkNjNiMzc5NjNlMmVmNDgx
YTNjMjI5MDU0ODQyYmNkZWJhMDkwLi5lMDhiMGQzMjQ4MTRhYmNhNWI2ODllNjQ5MzNjMTE1OGQ4
MDA3Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudENsaWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIEhhc2hNYXA8Y29u
c3QgUmVuZGVyTGF5ZXIqLCBPd25QdHI8RmlsdGVySW5mbz4+JiBtYXAoKTsKKyAgICBzdGF0aWMg
SGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJJbmZvPj4m
IG1hcCgpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggMmM0ZTU2
NjdlNTE2OTMyNmVhYzBiZmVkNzI2M2NkMWRiYTgxMmEwMy4uNjBhOTRiZWMyNGI4NjdkYTc3ODll
MWEwZWQ2YjVjMGVhNThlY2I4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKQEAgLTMzOCwxMSArMzM4LDExIEBAIFJlbmRlckJveFJlZ2lvbkluZm8qIFJlbmRl
clJlZ2lvbjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqIGJveCwKIHsK
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAotICAgIE93blB0cjxSZW5kZXJCb3hSZWdpb25JbmZv
PiYgYm94SW5mbyA9IG1fcmVuZGVyQm94UmVnaW9uSW5mby5hZGQoYm94LCBhZG9wdFB0cihuZXcg
UmVuZGVyQm94UmVnaW9uSW5mbyhsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwg
Y29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJl
Z2lvbkluZm8uYWRkKGJveCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCb3hSZWdpb25JbmZvPihs
b2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5J
c0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQog
Ci1Pd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gUmVuZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94
UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqIGJveCkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJC
b3hSZWdpb25JbmZvPiBSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0
IFJlbmRlckJveCogYm94KQogewogICAgIHJldHVybiBtX3JlbmRlckJveFJlZ2lvbkluZm8udGFr
ZShib3gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGE0
ZWY2YmU4ODg3NjM0ODgxM2I4MzhmMGI3YWM5MjZmZjE2Y2U3NDkuLjUyYzcxOTIyNTUxYmIyZTY0
NWIxMDZkMDQ1MzMyNDZiZGRlNWU0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIK
ICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRp
b24uaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzAs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogcmVuZGVyQm94UmVn
aW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqKSBjb25zdDsKICAgICBSZW5kZXJCb3hSZWdpb25JbmZv
KiBzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgbG9n
aWNhbExlZnRJbnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRJbnNldCwKICAgICAgICAgYm9v
bCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwotICAgIE93blB0cjxSZW5kZXJCb3hSZWdp
b25JbmZvPiB0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gdGFrZVJlbmRlckJveFJlZ2lvbklu
Zm8oY29uc3QgUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZv
KGNvbnN0IFJlbmRlckJveCopOwogCiAgICAgdm9pZCBkZWxldGVBbGxSZW5kZXJCb3hSZWdpb25J
bmZvKCk7CkBAIC0xNzIsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBIFJlbmRlckJveFJl
Z2lvbkluZm8qIHRlbGxzIHVzIGFib3V0IGFueSBsYXlvdXQgaW5mb3JtYXRpb24gZm9yIGEgUmVu
ZGVyQm94IHRoYXQKICAgICAvLyBpcyB1bmlxdWUgdG8gdGhlIHJlZ2lvbi4gRm9yIG5vdyBpdCBq
dXN0IGhvbGRzIGxvZ2ljYWwgd2lkdGggaW5mb3JtYXRpb24gZm9yIFJlbmRlckJsb2NrcywgYnV0
IGV2ZW50dWFsbHkKICAgICAvLyBpdCB3aWxsIGFsc28gaG9sZCBhIGN1c3RvbSBzdHlsZSBmb3Ig
YW55IGJveCAoZm9yIHJlZ2lvbiBzdHlsaW5nKS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94KiwgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+PiBSZW5kZXJCb3hSZWdpb25J
bmZvTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4+IFJlbmRlckJveFJlZ2lvbkluZm9NYXA7CiAgICAg
UmVuZGVyQm94UmVnaW9uSW5mb01hcCBtX3JlbmRlckJveFJlZ2lvbkluZm87CiAKICAgICBib29s
IG1faXNWYWxpZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApp
bmRleCA5MzRhM2IyODI1NTMwZGE2YWQzNTkyNmYyNWNmZjQwZmE5NDVmNTUyLi5mOGZjNzJkOGM2
OGEzNDg2YmQyZTRlODM1YWNhZWYzZmE5Mzk4YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCB2b2lkIFJlbmRlclRhYmxlOjpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eQogICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIENTUzIgc3BlYywgeW91IG9ubHkgdXNl
IGZpeGVkIHRhYmxlIGxheW91dCBpZiBhbgogICAgICAgICAvLyBleHBsaWNpdCB3aWR0aCBpcyBz
cGVjaWZpZWQgb24gdGhlIHRhYmxlLiAgQXV0byB3aWR0aCBpbXBsaWVzIGF1dG8gdGFibGUgbGF5
b3V0LgogICAgICAgICBpZiAoc3R5bGUoKS50YWJsZUxheW91dCgpID09IFRGSVhFRCAmJiAhc3R5
bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQg
PSBhZG9wdFB0cihuZXcgRml4ZWRUYWJsZUxheW91dCh0aGlzKSk7CisgICAgICAgICAgICBtX3Rh
YmxlTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IGFkb3B0UHRyKG5ldyBBdXRv
VGFibGVMYXlvdXQodGhpcykpOworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKICAgICB9CiAKICAgICAvLyBJZiBib3Jk
ZXIgd2FzIGNoYW5nZWQsIGludmFsaWRhdGUgY29sbGFwc2VkIGJvcmRlcnMgY2FjaGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IGE0NDZlNDU5MTBkZDkyYmE0MTI2
OTg1YjRiY2RjNTYxMWU5ODI2MzEuLjQwNzg4Yzg0NDQyMWJlNGRhY2E0Y2FlMTNhZTlmMjFiYmU4
ZDMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNvbGxhcHNl
ZEJvcmRlclZhbHVlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTMzNCw3ICszMzUsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVuZGVyVGFibGVTZWN0
aW9uKiBtX2Zvb3Q7CiAgICAgbXV0YWJsZSBSZW5kZXJUYWJsZVNlY3Rpb24qIG1fZmlyc3RCb2R5
OwogCi0gICAgT3duUHRyPFRhYmxlTGF5b3V0PiBtX3RhYmxlTGF5b3V0OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxUYWJsZUxheW91dD4gbV90YWJsZUxheW91dDsKIAogICAgIENvbGxhcHNlZEJvcmRl
clZhbHVlcyBtX2NvbGxhcHNlZEJvcmRlcnM7CiAgICAgY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFs
dWUqIG1fY3VycmVudEJvcmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAppbmRleCA4NTc4OTMwODY4OWVmMzVkOWVkZGFkOTMyZDAyYzBmNzdkODVjZGYxLi5lYzNlYmZj
NjI2MmI3YTFiODVkYzYyYzFmMDYyNjAxMjllNzk2YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIFJlbmRlck9iamVj
dCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBv
ZmZzZXQKIAogSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCkgY29uc3QKIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0
KiwgT3duUHRyPFJlbmRlclNlbGVjdGlvbkluZm8+PiBTZWxlY3Rpb25NYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25J
bmZvPj4gU2VsZWN0aW9uTWFwOwogICAgIFNlbGVjdGlvbk1hcCBzZWxlY3RlZE9iamVjdHM7CiAK
ICAgICBSZW5kZXJPYmplY3QqIG9zID0gbV9zZWxlY3Rpb25TdGFydDsKQEAgLTY4MCwxMyArNjgw
LDEzIEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKICAgICAg
ICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgb3MgPT0gbV9zZWxlY3Rpb25TdGFy
dCB8fCBvcyA9PSBtX3NlbGVjdGlvbkVuZCkgJiYgb3MtPnNlbGVjdGlvblN0YXRlKCkgIT0gU2Vs
ZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3Ig
cGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVk
IGFzIHdlbGwuCi0gICAgICAgICAgICBzZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBhZG9wdFB0cihu
ZXcgUmVuZGVyU2VsZWN0aW9uSW5mbyhvcywgY2xpcFRvVmlzaWJsZUNvbnRlbnQpKSk7CisgICAg
ICAgICAgICBzZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNl
bGVjdGlvbkluZm8+KG9zLCBjbGlwVG9WaXNpYmxlQ29udGVudCkpOwogICAgICAgICAgICAgUmVu
ZGVyQmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUg
KGNiICYmICFjYi0+aXNSZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHNlbGVjdGVkT2JqZWN0cy5hZGQoY2IsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHNlbGVjdGVkT2JqZWN0cy5hZGQoY2Is
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZv
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8g
PSBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0aW9uSW5mbyhjYiwgY2xpcFRvVmlzaWJsZUNvbnRl
bnQpKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KGNiLCBjbGlwVG9WaXNpYmxlQ29udGVudCk7CiAgICAgICAgICAgICAg
ICAgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTc4NiwxNCArNzg2LDE0IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRl
ck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAgaW50IG9s
ZEVuZFBvcyA9IG1fc2VsZWN0aW9uRW5kUG9zOwogCiAgICAgLy8gT2JqZWN0cyBlYWNoIGhhdmUg
YSBzaW5nbGUgc2VsZWN0aW9uIHJlY3QgdG8gZXhhbWluZS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVuZGVyT2JqZWN0KiwgT3duUHRyPFJlbmRlclNlbGVjdGlvbkluZm8+PiBTZWxlY3RlZE9iamVj
dE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclNlbGVjdGlvbkluZm8+PiBTZWxlY3RlZE9iamVjdE1hcDsKICAgICBTZWxlY3RlZE9i
amVjdE1hcCBvbGRTZWxlY3RlZE9iamVjdHM7CiAgICAgU2VsZWN0ZWRPYmplY3RNYXAgbmV3U2Vs
ZWN0ZWRPYmplY3RzOwogCiAgICAgLy8gQmxvY2tzIGNvbnRhaW4gc2VsZWN0ZWQgb2JqZWN0cyBh
bmQgZmlsbCBnYXBzIGJldHdlZW4gdGhlbSwgZWl0aGVyIG9uIHRoZSBsZWZ0LCByaWdodCwgb3Ig
aW4gYmV0d2VlbiBsaW5lcyBhbmQgYmxvY2tzLgogICAgIC8vIEluIG9yZGVyIHRvIGdldCB0aGUg
cmVwYWludCByZWN0IHJpZ2h0LCB3ZSBoYXZlIHRvIGV4YW1pbmUgbGVmdCwgbWlkZGxlLCBhbmQg
cmlnaHQgcmVjdHMgaW5kaXZpZHVhbGx5LCBzaW5jZSBvdGhlcndpc2UKICAgICAvLyB0aGUgdW5p
b24gb2YgdGhvc2UgcmVjdHMgbWlnaHQgcmVtYWluIHRoZSBzYW1lIGV2ZW4gd2hlbiBjaGFuZ2Vz
IGhhdmUgb2NjdXJyZWQuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlckJsb2NrKiwgT3duUHRy
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4+IFNlbGVjdGVkQmxvY2tNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbz4+IFNlbGVjdGVkQmxvY2tNYXA7CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBvbGRTZWxl
Y3RlZEJsb2NrczsKICAgICBTZWxlY3RlZEJsb2NrTWFwIG5ld1NlbGVjdGVkQmxvY2tzOwogCkBA
IC04MDQsMTQgKzgwNCwxNCBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJP
YmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZQogICAgIHdoaWxlIChj
b250aW51ZUV4cGxvcmluZykgewogICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlvbkxlYWYo
KSB8fCBvcyA9PSBtX3NlbGVjdGlvblN0YXJ0IHx8IG9zID09IG1fc2VsZWN0aW9uRW5kKSAmJiBv
cy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBC
bG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBn
YXBzLiAgVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxl
Y3RlZE9iamVjdHMuc2V0KG9zLCBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0aW9uSW5mbyhvcywg
dHJ1ZSkpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4ob3MsIHRydWUpKTsKICAgICAgICAgICAgIGlm
IChibG9ja1JlcGFpbnRNb2RlID09IFJlcGFpbnROZXdYT1JPbGQpIHsKICAgICAgICAgICAgICAg
ICBSZW5kZXJCbG9jayogY2IgPSBvcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKGNiICYmICFjYi0+aXNSZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG9sZFNlbGVj
dGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJ
bmZvID0gb2xkU2VsZWN0ZWRCbG9ja3MuYWRkKGNiLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQdHIobmV3
IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyhjYikpOworICAgICAgICAgICAgICAgICAgICBibG9j
a0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oY2IpOwog
ICAgICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04NjAsMTMgKzg2MCwxMyBAQCB2b2lkIFJlbmRl
clZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJl
bmRlck9iamVjdCogZQogICAgIGNvbnRpbnVlRXhwbG9yaW5nID0gbyAmJiAobyAhPSBzdG9wKTsK
ICAgICB3aGlsZSAoY29udGludWVFeHBsb3JpbmcpIHsKICAgICAgICAgaWYgKChvLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSB8fCBvID09IHN0YXJ0IHx8IG8gPT0gZW5kKSAmJiBvLT5zZWxlY3Rpb25T
dGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0
cy5zZXQobywgYWRvcHRQdHIobmV3IFJlbmRlclNlbGVjdGlvbkluZm8obywgdHJ1ZSkpKTsKKyAg
ICAgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0cy5zZXQobywgc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJTZWxlY3Rpb25JbmZvPihvLCB0cnVlKSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2Ig
PSBvLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlz
UmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJC
bG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5hZGQoY2Is
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZv
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8g
PSBhZG9wdFB0cihuZXcgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKGNiKSk7CisgICAgICAgICAg
ICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbklu
Zm8+KGNiKTsKICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBSZW5kZXJW
aWV3Ojp1c2VzQ29tcG9zaXRpbmcoKSBjb25zdAogUmVuZGVyTGF5ZXJDb21wb3NpdG9yJiBSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKCkKIHsKICAgICBpZiAoIW1fY29tcG9zaXRvcikKLSAgICAgICAg
bV9jb21wb3NpdG9yID0gYWRvcHRQdHIobmV3IFJlbmRlckxheWVyQ29tcG9zaXRvcigqdGhpcykp
OworICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29t
cG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC0xMTM0
LDcgKzExMzQsNyBAQCBib29sIFJlbmRlclZpZXc6OmNoZWNrVHdvUGFzc0xheW91dEZvckF1dG9I
ZWlnaHRSZWdpb25zKCkgY29uc3QKIEZsb3dUaHJlYWRDb250cm9sbGVyJiBSZW5kZXJWaWV3Ojpm
bG93VGhyZWFkQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Zsb3dUaHJlYWRDb250cm9sbGVy
KQotICAgICAgICBtX2Zsb3dUaHJlYWRDb250cm9sbGVyID0gRmxvd1RocmVhZENvbnRyb2xsZXI6
OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9mbG93VGhyZWFkQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rmxvd1RocmVhZENvbnRyb2xsZXI+KHRoaXMpOwogCiAgICAgcmV0dXJuICptX2Zs
b3dUaHJlYWRDb250cm9sbGVyOwogfQpAQCAtMTE3Myw3ICsxMTczLDcgQEAgSW50ZXJ2YWxBcmVu
YSogUmVuZGVyVmlldzo6aW50ZXJ2YWxBcmVuYSgpCiBJbWFnZVF1YWxpdHlDb250cm9sbGVyJiBS
ZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlDb250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VR
dWFsaXR5Q29udHJvbGxlcikKLSAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gSW1h
Z2VRdWFsaXR5Q29udHJvbGxlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxp
dHlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigq
dGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDQzMWFlY2QwYTY1OTE4ZTI3MjI5Y2Iw
OGExMzU4NWI2NGVmNThiMzMuLjM2ZjhiZTFjMWI0Zjg2YWEwMzY4OGU5N2E5MTYzZWZmZjI1N2My
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjcsOCArMjcsOCBA
QAogI2luY2x1ZGUgIlBPREZyZWVMaXN0QXJlbmEuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzI5LDEzICszMjksMTMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxk
VXNlUHJpbnRpbmdMYXlvdXQoKSBjb25zdDsKIAotICAgIE93blB0cjxJbWFnZVF1YWxpdHlDb250
cm9sbGVyPiBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlUXVhbGl0eUNvbnRyb2xsZXI+IG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKICAgICBMYXlv
dXRVbml0IG1fcGFnZUxvZ2ljYWxIZWlnaHQ7CiAgICAgYm9vbCBtX3BhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U3RhdGU+IG1fbGF5b3V0U3RhdGU7
CiAgICAgdW5zaWduZWQgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudDsKLSAgICBPd25QdHI8UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7Ci0gICAgT3duUHRyPEZsb3dUaHJlYWRD
b250cm9sbGVyPiBtX2Zsb3dUaHJlYWRDb250cm9sbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJMYXllckNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rmxvd1RocmVhZENvbnRyb2xsZXI+IG1fZmxvd1RocmVhZENvbnRyb2xsZXI7CiAgICAgUmVmUHRy
PEludGVydmFsQXJlbmE+IG1faW50ZXJ2YWxBcmVuYTsKIAogICAgIFJlbmRlclF1b3RlKiBtX3Jl
bmRlclF1b3RlSGVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmlu
ZGV4IDIwNDMyNzJkNmM5ZjQ3MjdlMjY1MTdiMjgyNjM2MDE3NzhmY2ZhYTAuLjY4MWEwY2E3ZTU4
Njg0MDljZmJlZjc5MDQ1YzgyZmE2NTMwYTU4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG1fZmxvYXRzKQogICAgICAgICAgICAgbV9mbG9hdHMtPmFwcGVuZCgmZmxvYXRpbmdCb3gpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zsb2F0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8
UmVuZGVyQm94Kj4oMSwgJmZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckJveCo+PigxLCAmZmxvYXRpbmdCb3gpOwogICAg
IH0KIAogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiogZmxvYXRzUHRyKCkgeyBBU1NFUlQoIWlzRGly
dHkoKSk7IHJldHVybiBtX2Zsb2F0cy5nZXQoKTsgfQpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBGbG9hdHMgaGFuZ2luZyBvZmYgdGhlIGxpbmUgYXJlIHB1c2hlZCBpbnRv
IHRoaXMgdmVjdG9yIGR1cmluZyBsYXlvdXQuIEl0IGlzIG9ubHkKICAgICAvLyBnb29kIGZvciBh
cyBsb25nIGFzIHRoZSBsaW5lIGhhcyBub3QgYmVlbiBtYXJrZWQgZGlydHkuCi0gICAgT3duUHRy
PFZlY3RvcjxSZW5kZXJCb3gqPj4gbV9mbG9hdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxSZW5kZXJCb3gqPj4gbV9mbG9hdHM7CiB9OwogCiBJTkxJTkVfQk9YX09CSkVDVF9UWVBFX0NB
U1RTKFJvb3RJbmxpbmVCb3gsIGlzUm9vdElubGluZUJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b3NpemVyLmgKaW5kZXggZWU1MTY4OTc3ZTE3MGVlMzAxMTFlMDRmMmI0MTI4
ZGU5OGE3MTZmMC4uYmZmZDIyY2QyYWY2YmJiOWMzNDUxOTk4ZWU2M2MzOGU0ZWZhNTMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCkBAIC0zMSw3ICszMSw2IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCA4ZTI0MWViMTQ3NTE3ZmI2NzBmNmU3NDdkYWZlNGUz
YzhjNDhjNjI0Li5kMzhlOGY3ZjdmYjkzMmFkM2EzMmEzNDc2OTE3NmZlNmNiZDkwNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCkBA
IC0xMzYsOSArMTM2LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHNuYXBWZXJ0aWNlc1RvTGF5b3V0
VW5pdEdyaWQoVmVjdG9yPEZsb2F0UG9pbnQ+JiB2ZXJ0aWNlcykKICAgICAgICAgdmVydGljZXNb
aV0uc2V0KExheW91dFVuaXQodmVydGljZXNbaV0ueCgpKS50b0Zsb2F0KCksIExheW91dFVuaXQo
dmVydGljZXNbaV0ueSgpKS50b0Zsb2F0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NPd25Q
dHI8RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNvbnN0IEZsb2F0UG9s
eWdvbiYgcG9seWdvbiwgZmxvYXQgcGFkZGluZywgV2luZFJ1bGUgZmlsbFJ1bGUpCitzdGF0aWMg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFBvbHlnb24+IGNvbXB1dGVTaGFwZVBhZGRpbmdC
b3VuZHMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCBwYWRkaW5nLCBXaW5kUnVs
ZSBmaWxsUnVsZSkKIHsKLSAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBwYWRkZWRWZXJ0
aWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4oKSk7CisgICAgYXV0byBwYWRk
ZWRWZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+PigpOwogICAg
IEZsb2F0UG9pbnQgaW50ZXJzZWN0aW9uOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBvbHlnb24ubnVtYmVyT2ZFZGdlcygpOyArK2kpIHsKQEAgLTE1NCwxMiArMTU0LDEyIEBAIHN0
YXRpYyBpbmxpbmUgUGFzc093blB0cjxGbG9hdFBvbHlnb24+IGNvbXB1dGVTaGFwZVBhZGRpbmdC
b3VuZHMoY29uc3QgRmxvYXRQb2x5CiAgICAgfQogCiAgICAgc25hcFZlcnRpY2VzVG9MYXlvdXRV
bml0R3JpZCgqcGFkZGVkVmVydGljZXMpOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRQ
b2x5Z29uKHBhZGRlZFZlcnRpY2VzLnJlbGVhc2UoKSwgZmlsbFJ1bGUpKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvbHlnb24+KHN0ZDo6bW92ZShwYWRkZWRWZXJ0aWNlcyks
IGZpbGxSdWxlKTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0UG9seWdvbj4g
Y29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxv
YXQgbWFyZ2luLCBXaW5kUnVsZSBmaWxsUnVsZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPEZsb2F0UG9seWdvbj4gY29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKGNvbnN0IEZsb2F0UG9s
eWdvbiYgcG9seWdvbiwgZmxvYXQgbWFyZ2luLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICBP
d25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtYXJnaW5WZXJ0aWNlcyA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8RmxvYXRQb2ludD4oKSk7CisgICAgYXV0byBtYXJnaW5WZXJ0aWNlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+PigpOwogICAgIEZsb2F0UG9pbnQgaW50ZXJzZWN0
aW9uOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvbHlnb24ubnVtYmVyT2ZFZGdl
cygpOyArK2kpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NPd25QdHI8
RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVNYXJnaW5Cb3VuZHMoY29uc3QgRmxvYXRQb2x5Zwog
ICAgIH0KIAogICAgIHNuYXBWZXJ0aWNlc1RvTGF5b3V0VW5pdEdyaWQoKm1hcmdpblZlcnRpY2Vz
KTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZsb2F0UG9seWdvbihtYXJnaW5WZXJ0aWNlcy5y
ZWxlYXNlKCksIGZpbGxSdWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQ
b2x5Z29uPihzdGQ6Om1vdmUobWFyZ2luVmVydGljZXMpLCBmaWxsUnVsZSk7CiB9CiAKIGNvbnN0
IEZsb2F0UG9seWdvbiYgUG9seWdvblNoYXBlOjpzaGFwZVBhZGRpbmdCb3VuZHMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKaW5kZXgg
MDlmNzE0MDgzN2E1NzQ4Y2E1MTRmMjgzNjk4OTExZWMwOWM4NmY2Yy4uMjkzOTUyYTAzNGQyZjNm
MmI5NDQ3YmM3ZjUzOGY5NjRiZjQ2NTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCkBAIC04Miw4ICs4Miw4IEBAIHByaXZhdGU6CiBjbGFz
cyBQb2x5Z29uU2hhcGUgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBvbHlnb25TaGFwZSk7CiBwdWJsaWM6Ci0gICAgUG9seWdvblNoYXBlKFBhc3NPd25QdHI8VmVj
dG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCi0gICAgICAgIDog
bV9wb2x5Z29uKHZlcnRpY2VzLCBmaWxsUnVsZSkKKyAgICBQb2x5Z29uU2hhcGUoc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQor
ICAgICAgICA6IG1fcG9seWdvbihzdGQ6Om1vdmUodmVydGljZXMpLCBmaWxsUnVsZSkKICAgICAg
ICAgLCBtX21hcmdpbkJvdW5kcyhudWxscHRyKQogICAgICAgICAsIG1fcGFkZGluZ0JvdW5kcyhu
dWxscHRyKQogICAgIHsKQEAgLTEwMyw4ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEZs
b2F0UG9seWdvbiYgc2hhcGVQYWRkaW5nQm91bmRzKCkgY29uc3Q7CiAKICAgICBGbG9hdFBvbHln
b24gbV9wb2x5Z29uOwotICAgIG11dGFibGUgT3duUHRyPEZsb2F0UG9seWdvbj4gbV9tYXJnaW5C
b3VuZHM7Ci0gICAgbXV0YWJsZSBPd25QdHI8RmxvYXRQb2x5Z29uPiBtX3BhZGRpbmdCb3VuZHM7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRQb2x5Z29uPiBtX21hcmdpbkJvdW5k
czsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFBvbHlnb24+IG1fcGFkZGluZ0Jv
dW5kczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggZDkyMTIxOWE0ZjRmZjIyYzdm
YmU0ODE0OTZlZTQxZmY5NjdiNzU3Ny4uYWY2ZmNlMTc1NmYwNDEwYmZiMmU1ZDEwOTY1M2IzMjNm
Mzc3Mzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5jcHAKQEAgLTIxNywxMCArMjE3LDEwIEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6
OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFsCiAK
IC8vIEN1cnJlbnRseSBsaW1pdGVkIHRvIGNvbXB1dGluZyB0aGUgbWFyZ2luIGJvdW5kYXJ5IGZv
ciBzaGFwZS1vdXRzaWRlIGZvciBmbG9hdHMsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgogCi1QYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBz
aGFwZU1hcmdpbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4g
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hh
cGVNYXJnaW4pIGNvbnN0CiB7CiAgICAgaW50IG1hcmdpbkludGVydmFsc1NpemUgPSAob2Zmc2V0
KCkgPiBzaGFwZU1hcmdpbikgPyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIgKyBzaGFw
ZU1hcmdpbiAqIDI7Ci0gICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1bHQgPSBh
ZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMobWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3Rk
OjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSkpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3Rk
OjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQg
eSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CkBAIC0yNDcsNyAr
MjQ3LDcgQEAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmEKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQg
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmJ1aWxkQm91bmRzUGF0aChQYXRoJiBwYXRoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCmluZGV4IGUx
MGY3MDlmMDhjOTE1ZDE2ZmY5YjliMmFlZWQ4ZjBmNDM3OTBhMjQuLmExMDYzNTI5ZmE3Y2RhYmEz
M2NkY2RlZjI0NTA2ZmRhZWMwMjFhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiBy
ZXN1bHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQg
eTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgZmlyc3RJbmNs
dWRlZEludGVydmFsWShpbnQgbWluWSwgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5p
dCYgcmVzdWx0KSBjb25zdDsKLSAgICBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBj
b21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGNvbXB1dGVTaGFwZU1hcmdpbklu
dGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0OwogCiAgICAgdm9pZCBidWlsZEJvdW5kc1Bh
dGgoUGF0aCYpIGNvbnN0OwogCkBAIC05Miw4ICs5Miw4IEBAIHByaXZhdGU6CiBjbGFzcyBSYXN0
ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVy
U2hhcGUpOwogcHVibGljOgotICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJ
bnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplKQotICAgICAgICA6
IG1faW50ZXJ2YWxzKGludGVydmFscykKKyAgICBSYXN0ZXJTaGFwZShzdGQ6OnVuaXF1ZV9wdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
KQorICAgICAgICA6IG1faW50ZXJ2YWxzKHN0ZDo6bW92ZShpbnRlcnZhbHMpKQogICAgICAgICAs
IG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICB7CiAgICAgfQpAQCAtMTE2LDggKzExNiw4IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIG1hcmdpbkludGVydmFs
cygpIGNvbnN0OwogICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2
YWxzKCkgY29uc3Q7CiAKLSAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2
YWxzOwotICAgIG11dGFibGUgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX21hcmdpbklu
dGVydmFsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1faW50
ZXJ2YWxzOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBtX21hcmdpbkludGVydmFsczsKICAgICBJbnRTaXplIG1faW1hZ2VTaXplOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCAzZmU5YjU4MWIzNTM1
YzU5YjU3OGJjNDFkY2Y1NjhhNGU4NGNiOTc3Li5iZTFiNmQwNjZmYjdiYTVlMmZmMDQ5YzM2ZGJh
MjYzNmZhNjc5MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cApAQCAtNDEsMzggKzQxLDM2IEBACiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNs
dWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUluc2V0U2hhcGUoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgYm91bmRzKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAg
ICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVp
Z2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCb3hTaGFwZShib3VuZHMpKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAotc3Rh
dGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVJlY3RhbmdsZVNoYXBlKGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRzLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY3JlYXRlUmVjdGFuZ2xlU2hhcGUoY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy53aWR0aCgpID49IDAg
JiYgYm91bmRzLmhlaWdodCgpID49IDAgJiYgcmFkaWkud2lkdGgoKSA+PSAwICYmIHJhZGlpLmhl
aWdodCgpID49IDApOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVjdGFuZ2xlU2hhcGUoYm91
bmRzLCByYWRpaSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlY3RhbmdsZVNoYXBl
Pihib3VuZHMsIHJhZGlpKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUNp
cmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQorc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2lu
dCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFJlY3RhbmdsZVNoYXBlKEZsb2F0UmVjdChjZW50ZXIueCgp
IC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9h
dFNpemUocmFkaXVzLCByYWRpdXMpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVj
dGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0g
cmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsK
IH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBG
bG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCitzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2Vu
dGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgp
ID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBS
ZWN0YW5nbGVTaGFwZShGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNlbnRl
ci55KCkgLSByYWRpaS5oZWlnaHQoKSwgcmFkaWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQoKSoy
KSwgcmFkaWkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4o
RmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWku
aGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0K
IAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShQYXNzT3duUHRy
PFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQorc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFBvbHlnb25TaGFwZSh2ZXJ0aWNlcywgZmlsbFJ1bGUpKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KHN0ZDo6bW92ZSh2ZXJ0
aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2ljYWxS
ZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhlaWdo
dCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMTEsMTQgKzEwOSwxNCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZW5zdXJlUmFkaWlEb05vdE92ZXJsYXAoRmxvYXRSZWN0ICZib3VuZHMsIEZs
b2F0U2l6ZSAmcmFkaWkpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0U2l6ZSYg
bG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZykKK3N0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBl
KGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxC
b3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBh
ZGRpbmcpCiB7CiAgICAgQVNTRVJUKGJhc2ljU2hhcGUpOwogCiAgICAgYm9vbCBob3Jpem9udGFs
V3JpdGluZ01vZGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7CiAgICAg
ZmxvYXQgYm94V2lkdGggPSBob3Jpem9udGFsV3JpdGluZ01vZGUgPyBsb2dpY2FsQm94U2l6ZS53
aWR0aCgpIDogbG9naWNhbEJveFNpemUuaGVpZ2h0KCk7CiAgICAgZmxvYXQgYm94SGVpZ2h0ID0g
aG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbG9naWNhbEJveFNpemUuaGVpZ2h0KCkgOiBsb2dpY2Fs
Qm94U2l6ZS53aWR0aCgpOwotICAgIE93blB0cjxTaGFwZT4gc2hhcGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBzaGFwZTsKIAogICAgIHN3aXRjaCAoYmFzaWNTaGFwZS0+dHlwZSgpKSB7
CiAKQEAgLTE5MSw3ICsxODksNyBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hh
cGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0UwogICAgICAgICBj
b25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAg
c2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1
ZXNTaXplICUgMikpOwotICAgICAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNl
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4odmFsdWVzU2l6ZSAvIDIpKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzU2l6ZTsgaSArPSAyKSB7CiAgICAgICAg
ICAgICBGbG9hdFBvaW50IHZlcnRleCgKICAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVu
Z3RoKHZhbHVlcy5hdChpKSwgYm94V2lkdGgpLApAQCAtMTk5LDcgKzE5Nyw3IEBAIFBhc3NPd25Q
dHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBl
LCBjb25zdCBMYXlvdXRTCiAgICAgICAgICAgICAoKnZlcnRpY2VzKVtpIC8gMl0gPSBwaHlzaWNh
bFBvaW50VG9Mb2dpY2FsKHZlcnRleCwgbG9naWNhbEJveFNpemUuaGVpZ2h0KCksIHdyaXRpbmdN
b2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIHNoYXBlID0gY3JlYXRlUG9seWdvblNoYXBlKHZl
cnRpY2VzLnJlbGVhc2UoKSwgcG9seWdvbi53aW5kUnVsZSgpKTsKKyAgICAgICAgc2hhcGUgPSBj
cmVhdGVQb2x5Z29uU2hhcGUoc3RkOjptb3ZlKHZlcnRpY2VzKSwgcG9seWdvbi53aW5kUnVsZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yNTEsMTcgKzI0OSwxNyBAQCBQYXNzT3du
UHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFw
ZSwgY29uc3QgTGF5b3V0UwogICAgIHNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgobWFyZ2luLCAwKTsKICAgICBzaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0
aChwYWRkaW5nLCAwKTsKIAotICAgIHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHNoYXBlOwogfQogCi1QYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUo
Y29uc3QgU3R5bGVJbWFnZSYgc3R5bGVJbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjb25zdCBMYXlv
dXRSZWN0JiBpbWFnZVIsIGNvbnN0IExheW91dFJlY3QmIG1hcmdpblIsIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZykKK3N0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UmIHN0eWxl
SW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VSLCBjb25zdCBM
YXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdp
biwgTGVuZ3RoIHBhZGRpbmcpCiB7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UuY2FjaGVkSW1hZ2Uo
KSk7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UuY2FjaGVkSW1hZ2UoKS0+aGFzSW1hZ2UoKSk7CiAK
ICAgICBJbnRSZWN0IGltYWdlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAg
ICBJbnRSZWN0IG1hcmdpblJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwotICAg
IE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJh
c3RlclNoYXBlSW50ZXJ2YWxzKG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSkp
OworICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVy
dmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewpAQCAtMjkzLDI1ICsy
OTEsMjUgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGNvbnN0
IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHQKICAgICAgICAgfQogICAgIH0KIAotICAg
IE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hh
cGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSwgbWFyZ2luUmVjdC5zaXplKCkpKTsKKyAgICBhdXRvIHJh
c3RlclNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZT4oc3RkOjptb3ZlKGludGVy
dmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9k
ZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVG
b3JMZW5ndGgobWFyZ2luLCAwKTsKICAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRW
YWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKLSAgICByZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFz
ZSgpOworICAgIHJldHVybiBzdGQ6Om1vdmUocmFzdGVyU2hhcGUpOwogfQogCi1QYXNzT3duUHRy
PFNoYXBlPiBTaGFwZTo6Y3JlYXRlTGF5b3V0Qm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJv
dW5kZWRSZWN0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3Ro
IHBhZGRpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVMYXlvdXRCb3hT
aGFwZShjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZykKIHsKICAgICBBU1NFUlQocm91bmRl
ZFJlY3QucmVjdCgpLndpZHRoKCkgPj0gMCAmJiByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkg
Pj0gMCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lk
dGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0
IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBPd25QdHI8U2hhcGU+IHNo
YXBlID0gYWRvcHRQdHIobmV3IEJveFNoYXBlKGJvdW5kcykpOworICAgIGF1dG8gc2hhcGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdN
b2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChtYXJnaW4sIDApOwogICAgIHNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKHBhZGRpbmcsIDApOwogCi0gICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gc3RkOjptb3ZlKHNoYXBlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCmluZGV4IDgzODUzZmI1M2FmNWY0Zjg0ZDk0
MmIzNmU5ZjZjMWJiNTk3YWEyNjIuLmNlMmZiYTk0YTAyNGJiZDY4MjdhOTU0ZTlmNjhhNzgzYjgw
N2FkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2Uu
aCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjcsOSArNjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGggbWFyZ2lu
U2hhcGU7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFw
ZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdy
aXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8U2hhcGU+IGNyZWF0ZVJhc3RlclNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UmLCBmbG9h
dCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGRyYXdSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBjbGlwUmVjdCwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlTGF5b3V0Qm94U2hhcGUoY29uc3Qg
Um91bmRlZFJlY3QmLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJh
c2ljU2hhcGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUs
IExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUltYWdlJiwgZmxvYXQgdGhy
ZXNob2xkLCBjb25zdCBMYXlvdXRSZWN0JiBkcmF3UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlTGF5b3V0Qm94U2hhcGUoY29uc3Qg
Um91bmRlZFJlY3QmLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcp
OwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbmZvLmgKaW5kZXggZTRjZWJjM2JhZTQwNTM1NTNjMjQ1ODA4MzM1NmMw
MjMzNTBjNThkNy4uZjJlYzFkMjBkOTc4YmIxNzNkMDc1Mzk1OGVlNWJlZGVmZDQ5ZWRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oCkBAIC0zNyw3ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTaGFwZS5oIgogI2lu
Y2x1ZGUgIlNoYXBlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgbGluZU92ZXJsYXBz
U2hhcGVCb3VuZHMoKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIG1hcmtTaGFwZUFzRGlydHkoKSB7
IG1fc2hhcGUuY2xlYXIoKTsgfQotICAgIGJvb2wgaXNTaGFwZURpcnR5KCkgeyByZXR1cm4gIW1f
c2hhcGUuZ2V0KCk7IH0KKyAgICB2b2lkIG1hcmtTaGFwZUFzRGlydHkoKSB7IG1fc2hhcGUgPSBu
dWxscHRyOyB9CisgICAgYm9vbCBpc1NoYXBlRGlydHkoKSB7IHJldHVybiAhbV9zaGFwZTsgfQog
ICAgIGNvbnN0IFJlbmRlclR5cGUmIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsg
fQogICAgIExheW91dFNpemUgcmVmZXJlbmNlQm94TG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVy
biBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplOyB9CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgY29uc3QgUmVuZGVyVHlwZSYgbV9yZW5kZXJlcjsKIAogcHJpdmF0ZToKLSAg
ICBtdXRhYmxlIE93blB0cjxTaGFwZT4gbV9zaGFwZTsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gbV9zaGFwZTsKICAgICBMYXlvdXRTaXplIG1fcmVmZXJlbmNlQm94TG9naWNh
bFNpemU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5zaWRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUluc2lkZUluZm8uaAppbmRleCAwNmI2YmVjMTg0N2M1ZWY0OTk0MTllMmUzODgxNTFmMWEzOTgy
NDc0Li4zZjk4YzA3ZDM3ODc2M2YxYTQxMTlhMDg5NWJhMDg3YjQ2NmIyMzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTMz
LDcgKzMzLDYgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykgJiYgRU5BQkxFKENTU19TSEFQRV9J
TlNJREUpCiAKICNpbmNsdWRlICJTaGFwZUluZm8uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCAwNWQwMGRj
YjJlNTYyY2FjM2E5NzBjMWI2MjFkMWJhMDljOTk2YWQwLi5iZjM2OWI2Njc1OTUzMGE1MjM2OWY0
NWFjZWYzNjZhODY4ZTBjYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Q29udGVudERhdGEuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50
LmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAppbmRl
eCAwNmQ0NGRkZjZmM2Y2ZTBiOTE4MTI3MzJlNDkxMTM4NTA3ZmFjOGY2Li43NTdiNzlkZjhmYWUx
NjFiM2I4ZTU4MjdiMzFjMGI1MzA5OWQ5ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKQEAgLTIxLDcgKzIxLDYgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvdW50ZXJEaXJlY3RpdmVzLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
MywxMSArMzIsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBh
LCBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYikKICAgICAgICYmIGEucmVzZXRWYWx1ZSgpID09
IGIucmVzZXRWYWx1ZSgpOwogfQogCi1QYXNzT3duUHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+IGNs
b25lKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAmIGNvdW50ZXJEaXJlY3RpdmVzKQorc3RkOjp1
bmlxdWVfcHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+IGNsb25lKGNvbnN0IENvdW50ZXJEaXJlY3Rp
dmVNYXAmIGNvdW50ZXJEaXJlY3RpdmVzKQogewotICAgIE93blB0cjxDb3VudGVyRGlyZWN0aXZl
TWFwPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgQ291bnRlckRpcmVjdGl2ZU1hcCk7CisgICAgYXV0
byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CiAgICAg
KnJlc3VsdCA9IGNvdW50ZXJEaXJlY3RpdmVzOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OworICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJE
aXJlY3RpdmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVj
dGl2ZXMuaAppbmRleCBjZjc5M2JiOGYwOTM1YzU0NDdkODc0ZDRhMzVlZmEwYjk4ZTdmMDM4Li5k
NWRlMDc2Y2Y0MDQzYmZhMzk5NTFiNDYyNTMxZjRkY2YwZTM1YmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaApAQCAtMjUsNiAr
MjUsNyBAQAogI2lmbmRlZiBDb3VudGVyRGlyZWN0aXZlc19oCiAjZGVmaW5lIENvdW50ZXJEaXJl
Y3RpdmVzX2gKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
MTA0LDcgKzEwNSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRlckRpcmVj
dGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKSB7CiAKIHR5cGVkZWYgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIENvdW50ZXJEaXJlY3RpdmVzPiBDb3VudGVyRGlyZWN0aXZlTWFwOwog
Ci1QYXNzT3duUHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+IGNsb25lKGNvbnN0IENvdW50ZXJEaXJl
Y3RpdmVNYXAmKTsKK3N0ZDo6dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShj
b25zdCBDb3VudGVyRGlyZWN0aXZlTWFwJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29yZGluYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaAppbmRl
eCA2YjhmMTVmZjMxMGQyY2I0YzE4ZDRhNGMxOGJlYWQ4OTBkMWU2NDY0Li40NGQyMDBiY2RkNWEx
ZmE4ZWFiMzJmMjk2Yjg3OGQ5M2IwNGNmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaApAQCAtMzUsNyArMzUsNiBAQAogI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDExICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIHNwYW4gc2hvdWxkIGluY2x1ZGUgYm90aCB8aW5pdGlhbFBvc2l0aW9uSW5kZXh8IGFuZCB8
ZmluYWxQb3NpdGlvbkluZGV4fCB0byBiZSBjb3JyZWN0LgogY2xhc3MgR3JpZFNwYW4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyaWRTcGFuPiBjcmVhdGUoc2l6ZV90IGluaXRp
YWxQb3NpdGlvbiwgc2l6ZV90IGZpbmFsUG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEdyaWRTcGFuKGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbikpOwot
ICAgIH0KLQogICAgIEdyaWRTcGFuKHNpemVfdCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5h
bFBvc2l0aW9uKQogICAgICAgICA6IGluaXRpYWxQb3NpdGlvbkluZGV4KGluaXRpYWxQb3NpdGlv
bikKICAgICAgICAgLCBmaW5hbFBvc2l0aW9uSW5kZXgoZmluYWxQb3NpdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGUwMTA3ZmQ2
ZDllM2M0ZGMwNjgyZTg2M2Y2NWEzYWE1MTBmZGEyMGMuLjA0ODczNGU1ZTYxN2NlZmZmMjcwOTVi
YzVlZDI0ODY0MDZhMmRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJT
dHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRv
KQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1f
Y2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IGFkb3B0
UHRyKG5ldyBQc2V1ZG9TdHlsZUNhY2hlKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBz
ZXVkb1N0eWxlcy0+YXBwZW5kKHBzZXVkbyk7CiAKQEAgLTExNzgsOSArMTE3OCw5IEBAIGNvbnN0
IENvdW50ZXJEaXJlY3RpdmVNYXAqIFJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcygpIGNv
bnN0CiAKIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGly
ZWN0aXZlcygpCiB7Ci0gICAgT3duUHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+JiBtYXAgPSByYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb3VudGVyRGlyZWN0aXZlczsKKyAgICBhdXRv
JiBtYXAgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb3VudGVyRGlyZWN0aXZl
czsKICAgICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0gYWRvcHRQdHIobmV3IENvdW50ZXJEaXJl
Y3RpdmVNYXApOworICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3Rp
dmVNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAKQEAgLTEzMzQsMTQgKzEzMzQsMTQgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogQW5pbWF0aW9uTGlzdCogUmVu
ZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMoKQogewogICAgIGlmICghcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucykKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCkp
OworICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hbmltYXRpb25zLmdldCgpOwogfQogCiBBbmltYXRpb25MaXN0KiBSZW5k
ZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gYWRvcHRQdHIobmV3IEFuaW1hdGlvbkxpc3Qo
KSk7CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90cmFuc2l0aW9ucy5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhZTA4NzVkMDdlZDIyMGVmZTYw
YzRmZGU3N2RkMGMyNmZjZmNlYWI5Li4xYzAyZDMyNzhkYTdiNTA2N2FjMTczNWZhYzE3NGUyYjI2
YWUzN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtNjgsOCArNjgsOCBAQAogI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiVW5pY29kZUJpZGkuaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gaW5oZXJpdGVkOwogCiAgICAg
Ly8gbGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKLSAgICBPd25QdHI8UHNldWRvU3R5
bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVk
b1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRvU3R5bGVzOwogCiAgICAgRGF0YVJlZjxTVkdSZW5k
ZXJTdHlsZT4gbV9zdmdTdHlsZTsKIApAQCAtMTQxNywxNiArMTQxNywxNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygpCiAgICAgewotICAgICAgICByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zLmNsZWFyKCk7CisgICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIHZvaWQgY2xlYXJUcmFuc2l0aW9ucygpCiAgICAgewotICAgICAgICByYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucy5jbGVhcigpOworICAgICAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgdm9pZCBpbmhlcml0QW5pbWF0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnQp
IHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHBhcmVudCA/
IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCpwYXJlbnQpKSA6IG51bGxwdHI7IH0KLSAgICB2
b2lkIGluaGVyaXRUcmFuc2l0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnQpIHsgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBwYXJlbnQgPyBhZG9w
dFB0cihuZXcgQW5pbWF0aW9uTGlzdCgqcGFyZW50KSkgOiBudWxscHRyOyB9CisgICAgdm9pZCBp
bmhlcml0QW5pbWF0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnQpIHsgcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHBhcmVudCA/IHN0ZDo6bWFrZV91
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRyOyB9CisgICAgdm9pZCBpbmhl
cml0VHJhbnNpdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50KSB7IHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gcGFyZW50ID8gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0PigqcGFyZW50KSA6IG51bGxwdHI7IH0KICAgICB2b2lkIGFkanVz
dEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIGFkanVzdFRyYW5zaXRpb25zKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAppbmRleCAyZjA3ZWZjODQxZDBlZGMzZjMwYTFhZGQ1YzI5YmY4ODRjNmFk
NTJkLi40MDFmZWUxY2IyN2VkN2ZlYmZhY2RiMTJiNDA2NWZhZmUxZTg4N2FkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwCkBAIC0xMjYsOCArMTI2LDggQEAgaW5saW5lIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9u
SW4KICAgICAsIG1fY291bnRlckRpcmVjdGl2ZXMoby5tX2NvdW50ZXJEaXJlY3RpdmVzID8gY2xv
bmUoKm8ubV9jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQogICAgICwgbV9ib3hTaGFkb3co
by5tX2JveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9ib3hTaGFk
b3cpIDogbnVsbHB0cikKICAgICAsIG1fYm94UmVmbGVjdChvLm1fYm94UmVmbGVjdCkKLSAgICAs
IG1fYW5pbWF0aW9ucyhvLm1fYW5pbWF0aW9ucyA/IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0
KCpvLm1fYW5pbWF0aW9ucykpIDogbnVsbHB0cikKLSAgICAsIG1fdHJhbnNpdGlvbnMoby5tX3Ry
YW5zaXRpb25zID8gYWRvcHRQdHIobmV3IEFuaW1hdGlvbkxpc3QoKm8ubV90cmFuc2l0aW9ucykp
IDogbnVsbHB0cikKKyAgICAsIG1fYW5pbWF0aW9ucyhvLm1fYW5pbWF0aW9ucyA/IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8ubV9hbmltYXRpb25zKSA6IG51bGxwdHIpCisgICAg
LCBtX3RyYW5zaXRpb25zKG8ubV90cmFuc2l0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0
aW9uTGlzdD4oKm8ubV90cmFuc2l0aW9ucykgOiBudWxscHRyKQogICAgICwgbV9tYXNrKG8ubV9t
YXNrKQogICAgICwgbV9tYXNrQm94SW1hZ2Uoby5tX21hc2tCb3hJbWFnZSkKICAgICAsIG1fcGFn
ZVNpemUoby5tX3BhZ2VTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggN2IwNjY3YjQzZDJj
ZWYzMzI2NmU4Njc3NzhhZTFiZGM0Yzk3ZDVkNy4uODI5MjZmZjkxZDYwOGIzYmRmZDc4OWU3ZWJk
YzQ0NWNiNTg0N2FjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgog
I2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC0xMjUsMTUgKzEyNSwxNSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gbV9jb250ZW50OwotICAgIE93blB0cjxDb3VudGVy
RGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJlY3RpdmVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJlY3RpdmVzOwogICAgIFN0cmluZyBtX2Fs
dFRleHQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9ib3hTaGFkb3c7IC8v
IEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgogICAgIAogICAgIFJlZlB0cjxTdHlsZVJlZmxl
Y3Rpb24+IG1fYm94UmVmbGVjdDsKIAotICAgIE93blB0cjxBbmltYXRpb25MaXN0PiBtX2FuaW1h
dGlvbnM7Ci0gICAgT3duUHRyPEFuaW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlvbnM7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IG1fYW5pbWF0aW9uczsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8QW5pbWF0aW9uTGlzdD4gbV90cmFuc2l0aW9uczsKIAogICAgIEZpbGxMYXllciBtX21h
c2s7CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cAppbmRleCA4MjBkNDU5ZjRmMDIwYWQxZWRlZjIwOWM4Njg2YWNkYTMzZDliMTBkLi5mZTE5MGQz
ZTg5NWM0YmUxZDkxZWNiZjAzMzYyMmM1ZTRmNDUwYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAK
QEAgLTEyMCw5ICsxMjAsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogICAgIGlmIChncmFk
aWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5H
Qk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRN
YXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIGdy
YWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVudERhdGEg
PSBhZG9wdFB0cihuZXcgR3JhZGllbnREYXRhKTsKKyAgICAgICAgZ3JhZGllbnREYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0
ID0gcmVzb3VyY2VNb2RlICYgQXBwbHlUb1RleHRNb2RlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4
IGU0MDU3YzgwZDFkYTM0MzY4NzI0MjA5Mzg1NDZkZjA4ZWVmMjU0OGMuLmUzNzkxNTJhYjBiNWIy
YWQyZGNjMDlkNDc3ZmE3OTczNWI5MzBlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgotCisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTY3LDcgKzY3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKLSAgICBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIE93blB0cjxHcmFkaWVudERhdGE+PiBtX2dyYWRpZW50TWFwOworICAgIEhhc2hN
YXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPEdyYWRpZW50RGF0YT4+IG1fZ3JhZGll
bnRNYXA7CiAKICNpZiBVU0UoQ0cpCiAgICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA3ZGJlMjA0OGFlMDFmYTVlNDgyNTNhMDM5OTM2OWIx
MTUwMzE2YTlhLi5lZjBlNDkxZmQzZmZjZWMxNzE1ODI4NmRiNTA5ZmM3YTk2ZGM0ZmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNW
R1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNp
Z24KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIE93blB0
cjxQYXR0ZXJuRGF0YT4gcGF0dGVybkRhdGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRhdGEpOwor
ICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOwog
ICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLCB0
cnVlLCB0cnVlKTsKIAogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlv
bi4KQEAgLTEyOSw3ICsxMjksNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbgogICAgIC8vIFZh
cmlvdXMgY2FsbHMgYWJvdmUgbWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5n
ZSBjYXNlcyAoSW1hZ2VCdWZmZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBT
VkcgaW1hZ2UgY2FjaGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5E
YXRhIGRlbGV0ZWQgYnkKICAgICAvLyByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKCksIHdlIG9u
bHkgbWFrZSBpdCB2aXNpYmxlIGluIHRoZSBjYWNoZSBhdCB0aGUgdmVyeSBlbmQuCi0gICAgcmV0
dXJuIG1fcGF0dGVybk1hcC5zZXQob2JqZWN0LCBwYXR0ZXJuRGF0YS5yZWxlYXNlKCkpLml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbV9wYXR0ZXJuTWFwLnNldChvYmplY3QsIHN0
ZDo6bW92ZShwYXR0ZXJuRGF0YSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4
dCwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggNzNjNGJl
NWRiODhkNTgwMzVhOWE3MDE0MGU2MTk4ODE5MDg0OGExYy4uZmMzMzhmZDVlYTQwZjQwMGI3OTdj
NzEwZGE0YTYxZWI1MmZhMWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC0yNyw3ICsyNyw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdQYXR0
ZXJuRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VuaXRUeXBlcy5oIgotCisjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0UGF0dGVy
bkF0dHJpYnV0ZXMgOiAxOwogICAgIFBhdHRlcm5BdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAg
ICBIYXNoTWFwPFJlbmRlck9iamVjdCosIE93blB0cjxQYXR0ZXJuRGF0YT4+IG1fcGF0dGVybk1h
cDsKKyAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuRGF0
YT4+IG1fcGF0dGVybk1hcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggYzk5ZjNkMGQ4ZTRjZDk4MjE1NzNkN2E2M2Ni
ZjYwYTBmMTFjN2IxNC4uYTkwNmRhY2M4MzEzNWIxNmM0ZTNjMzM0NmJjOWEwYTQ4MzhmY2NjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
QEAgLTc3LDggKzc3LDcgQEAgUmVuZGVyU1ZHU2hhcGU6On5SZW5kZXJTVkdTaGFwZSgpCiAKIHZv
aWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0
aC5jbGVhcigpOwotICAgIG1fcGF0aCA9IGFkb3B0UHRyKG5ldyBQYXRoKTsKKyAgICBtX3BhdGgg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KCk7CiAgICAgQVNTRVJUKFJlbmRlclNWR1NoYXBlOjpp
c0VtcHR5KCkpOwogCiAgICAgdXBkYXRlUGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNz
RWxlbWVudCgpLCBwYXRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5oCmluZGV4IGIxNWQxZGM4ZDYzZDljOTlmNjAyNDUzMTY1ODVmMTA5YzI0NThj
MTkuLmFiYjkyMTYwMGU3YTE1MTYxMzlkOWZmM2EwYzc1MjQ0YmViY2ZhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0dyYXBo
aWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR01hcmtlckRhdGEuaCIKLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgRmxv
YXRSZWN0IG1fcmVwYWludEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3Vu
ZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5z
Zm9ybTsKLSAgICBPd25QdHI8UGF0aD4gbV9wYXRoOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXRo
PiBtX3BhdGg7CiAgICAgVmVjdG9yPE1hcmtlclBvc2l0aW9uPiBtX21hcmtlclBvc2l0aW9uczsK
IAogICAgIGJvb2wgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGY0Y2Q2MjFmNGM5OTUzYjRi
ZDE5NjI2NzMzM2Q5YTM3YzY2MjViMGUuLmU3ZDUwOTg5NjljNGVmYjk3ZDYwN2E4YzhjOWQ5Y2Ew
Mzk5NmRjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJl
c291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0g
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4o
KTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVyOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpz
ZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQoZmls
dGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhID0gQ2xpcHBlckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlciA9IGZpbHRl
cjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBib29sIFNWR1Jlc291cmNl
czo6c2V0TWFya2VyU3RhcnQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlclN0YXJ0KQog
ICAgIEFTU0VSVChtYXJrZXJTdGFydC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBN
YXJrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1h
cmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgU1ZH
UmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1p
ZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJj
ZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9
IE1hcmtlckRhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1h
cmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFNWR1Jl
c291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQp
CiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBN
YXJrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQgPSBtYXJr
ZXJFbmQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTMsNyArNTUzLDcgQEAgYm9vbCBTVkdSZXNv
dXJjZXM6OnNldE1hc2tlcihSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyKQogICAgIEFT
U0VSVChtYXNrZXItPnJlc291cmNlVHlwZSgpID09IE1hc2tlclJlc291cmNlVHlwZSk7CiAKICAg
ICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEgPSBDbGlwcGVyRmlsdGVyTWFza2VyRGF0YTo6Y3JlYXRlKCk7CisgICAgICAg
IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2Vy
ID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTc2LDcgKzU3Niw3IEBAIGJvb2wgU1ZH
UmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAg
ICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNl
VHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9r
ZURhdGEgPSBGaWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ry
b2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTksNyArNTk5LDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlh
bEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAg
ICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IEZpbGxTdHJva2VEYXRhOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7
CiAKICAgICBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UgPSBzdHJva2U7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuaAppbmRleCBm
MzFiMTYzYTI3ZDQyMmEyY2Q4NGQ2MTA5ZjFjZGJmZTE5Y2Q3NzI1Li5jOWFmNWI3OWI5MjUzMTAz
YmVkMWU2ODIyZDc1OGUzYTFjZjNhMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzLmgKQEAgLTIwLDEwICsyMCw5IEBACiAjaWZuZGVmIFNWR1Jlc291cmNl
c19oCiAjZGVmaW5lIFNWR1Jlc291cmNlc19oCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMjQsMTEgKzEyMyw2IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhPiBjcmVhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKTsKLSAgICAgICAgfQotCiAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsKICNpZiBFTkFCTEUoRklMVEVSUykKICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcjsKQEAgLTE0OCwxMSArMTQyLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8
TWFya2VyRGF0YT4gY3JlYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNYXJrZXJEYXRhKTsKLSAgICAgICAgfQotCiAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlTWFya2VyKiBtYXJrZXJTdGFydDsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIq
IG1hcmtlck1pZDsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlckVuZDsK
QEAgLTE3MSwxOCArMTYwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGxTdHJva2VEYXRhPiBjcmVhdGUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGxTdHJva2VEYXRhKTsKLSAg
ICAgICAgfQotCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsOwogICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlOwogICAgIH07CiAKLSAgICBP
d25QdHI8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGE7
Ci0gICAgT3duUHRyPE1hcmtlckRhdGE+IG1fbWFya2VyRGF0YTsKLSAgICBPd25QdHI8RmlsbFN0
cm9rZURhdGE+IG1fZmlsbFN0cm9rZURhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPENsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhPiBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNYXJrZXJEYXRhPiBtX21hcmtlckRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZp
bGxTdHJva2VEYXRhPiBtX2ZpbGxTdHJva2VEYXRhOwogICAgIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyKiBtX2xpbmtlZFJlc291cmNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCA0YTg5ODAzODI4N2IwOWFm
ZTViNWRiNmM1ODM5NjVhODcxODFmOWE5Li5iYjMzNzJiYjM2MTY4MTY0NDA5NmI2Y2QzMWRkMmY1
MmNiM2ZjY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlc0NhY2hlLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgp
OwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAgT3duUHRyPFNWR1Jlc291cmNlcz4gbmV3UmVz
b3VyY2VzID0gYWRvcHRQdHIobmV3IFNWR1Jlc291cmNlcyk7CisgICAgYXV0byBuZXdSZXNvdXJj
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291
cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN2Z1N0eWxlKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gUHV0IG9iamVjdCBpbiBjYWNoZS4KLSAgICBTVkdSZXNvdXJjZXMm
IHJlc291cmNlcyA9ICptX2NhY2hlLmFkZCgmcmVuZGVyZXIsIG5ld1Jlc291cmNlcy5yZWxlYXNl
KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBTVkdSZXNvdXJjZXMmIHJlc291cmNlcyA9ICptX2Nh
Y2hlLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bW92ZShuZXdSZXNvdXJjZXMpKS5pdGVyYXRvci0+dmFs
dWU7CiAKICAgICAvLyBSdW4gY3ljbGUtZGV0ZWN0aW9uIF9hZnRlcndhcmRzXywgc28gc2VsZi1y
ZWZlcmVuY2VzIGNhbiBiZSBjYXVnaHQgYXMgd2VsbC4KICAgICBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlciBzb2x2ZXIocmVuZGVyZXIsIHJlc291cmNlcyk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcihSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QKIAogdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVzb3Vy
Y2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIE93blB0cjxT
VkdSZXNvdXJjZXM+IHJlc291cmNlcyA9IG1fY2FjaGUudGFrZSgmcmVuZGVyZXIpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdSZXNvdXJjZXM+IHJlc291cmNlcyA9IG1fY2FjaGUudGFrZSgmcmVu
ZGVyZXIpOwogICAgIGlmICghcmVzb3VyY2VzKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaAppbmRleCAxZmY0
YWYxNjM3MDQ5ZTUwMDg2MDJkZmMxOTcxY2ZiY2I4MjgxN2RmLi43N2Q2MWRkYjI3MWE5ZDdjNzc5
ZmI5NGRhZDI3ZGM5ZWNiNDY5MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oCkBAIC0yMSw4ICsyMSw5IEBACiAjZGVmaW5lIFNWR1Jl
c291cmNlc0NhY2hlX2gKIAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFJlc291cmNlc0Zy
b21SZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lk
IHJlbW92ZVJlc291cmNlc0Zyb21SZW5kZXJlcihSZW5kZXJFbGVtZW50Jik7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgT3duUHRyPFNWR1Jlc291cmNlcz4+IENh
Y2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHUmVzb3VyY2VzPj4gQ2FjaGVNYXA7CiAgICAgQ2FjaGVNYXAgbV9jYWNoZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcAppbmRleCAyMmUwY2FiZjYxZjJiN2U1Y2VkN2MzYmU5ODAzM2E4MGJj
MzE5NGQ2Li4xNTIyZmMzYTQyNmU4ODhkMDVkZmRiMDgzMWE2ODM5YWVjNDY2MjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6Omlu
aXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBt
X2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250LmNvZGVQYXRoKG1fcnVuKSA9PSBGb250OjpDb21w
bGV4OwogCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0
ZXJhdG9yLmNsZWFyKCk7CisgICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxwdHI7
CiAgICAgZWxzZQotICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBhZG9wdFB0cihuZXcg
V2lkdGhJdGVyYXRvcigmc2NhbGVkRm9udCwgbV9ydW4pKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0
aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwg
bV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCmluZGV4IDljMmUy
MDBhNmI2OTdjMjMxOGI5OWZmZmE0MmMyNzhhYzBjOThiYTYuLmU5YzJlNDRhNzU3ZDIxZmEwZjY5
YzM1MzEzNjJiZDNkOTJlYjdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogICAgIGZsb2F0IG1fdG90YWxXaWR0aDsKIAogICAgIC8vIFNpbXBsZSB0ZXh0IG9ubHkuCi0g
ICAgT3duUHRyPFdpZHRoSXRlcmF0b3I+IG1fc2ltcGxlV2lkdGhJdGVyYXRvcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2lkdGhJdGVyYXRvcj4gbV9zaW1wbGVXaWR0aEl0ZXJhdG9yOwogCiAgICAg
Ly8gQ29tcGxleCB0ZXh0IG9ubHkuCiAgICAgU1ZHVGV4dE1ldHJpY3MgbV9jb21wbGV4U3RhcnRU
b0N1cnJlbnRNZXRyaWNzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225756</attachid>
            <date>2014-03-04 01:36:45 -0800</date>
            <delta_ts>2014-03-25 13:34:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129664-20140304013642.patch</filename>
            <type>text/plain</type>
            <size>124212</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDliNjc3YjM2MDFlY2Vk
ZDY3NmYyOGRiYjUyNTM1NGEwYjI0NzM0Mi4uZjc0MmYyYWMxOTVhYTk2ZGZkY2FmMmJjOTUyZWMy
ZjljMGU4ODQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxNC0wMy0wNCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92ZSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgT3duUHRy
IGFuZCBQYXNzT3duUHRyIGluIGNvZGUgdW5kZXIgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nLyB3
aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9seWdvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvbHlnb246OkZsb2F0UG9seWdv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0Zs
b3dUaHJlYWRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb3dUaHJlYWRDb250
cm9sbGVyOjplbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0
TG9jYXRpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpyZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6Om11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5pc2hEZWxheVVwZGF0ZVNjcm9sbEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENvbnRpbnVhdGlvbk91dGxpbmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRl
cmVyTWFwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlRnJvbVRyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldENvbXB1
dGVkQ29sdW1uQ291bnRBbmRXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hSZWdpb25JbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCdXR0b246OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVBbGxMYXllclRvUmVnaW9uTWFwcGluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9u
c0ZvckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9t
ZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVt
c09uR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4
aXNJdGVtT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVHcmlk
UG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRl
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0
Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExheWVyQ29sdW1ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNs
ZWFyWk9yZGVyTGlzdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlG
bHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6RmlsdGVySW5mbzo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpG
aWx0ZXJJbmZvOjpnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcklu
Zm8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2VsZWN0aW9u
Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OmZsb3dUaHJlYWRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFwcGVuZEZsb2F0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9s
eWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTaGFwZVBhZGRpbmdCb3Vu
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UG9seWdvblNoYXBlOjpQb2x5Z29uU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6
OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNo
YXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVjdGFu
Z2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXBlOjpjcmVhdGVMYXlvdXRCb3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmg6
CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUluZm86Om1hcmtTaGFwZUFzRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGVJbmZvOjppc1NoYXBlRGlydHkpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb25lKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvQ291bnRlckRpcmVjdGl2ZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENv
b3JkaW5hdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6
OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXND
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3Vy
Y2VzRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjpy
ZW1vdmVSZXNvdXJjZXNGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6Omlu
aXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmg6CisKIDIwMTQtMDMtMDQgIEh5b3dvbiBLaW0g
IDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE1vdmUgRXZhc0dMQ29udGV4dCBh
bmQgRXZhc0dMU3VyZmFjZSBmaWxlcyBpbnRvIHRoZSBlZmwgY29tbW9uIGRpcmVjdG9yeS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uY3BwCmlu
ZGV4IGMzOWUyODVhYjYxZThhMjBlMDY0NjdkZGNhODg4NGEzZjAwYWM4ZjQuLjc4MWJkMmRmNDI2
YmQ3OTY5NjlmZmI1MjlkOTQ2MzhiY2QwY2I0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmNwcApAQCAtNzksOCArNzksOCBAQCBzdGF0
aWMgdW5zaWduZWQgZmluZE5leHRFZGdlVmVydGV4SW5kZXgoY29uc3QgRmxvYXRQb2x5Z29uJiBw
b2x5Z29uLCB1bnNpZ25lZCB2ZQogICAgIHJldHVybiB2ZXJ0ZXhJbmRleDI7CiB9CiAKLUZsb2F0
UG9seWdvbjo6RmxvYXRQb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0
aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCi0gICAgOiBtX3ZlcnRpY2VzKHZlcnRpY2VzKQorRmxv
YXRQb2x5Z29uOjpGbG9hdFBvbHlnb24oc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50
Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQorICAgIDogbV92ZXJ0aWNlcyhzdGQ6Om1v
dmUodmVydGljZXMpKQogICAgICwgbV9maWxsUnVsZShmaWxsUnVsZSkKIHsKICAgICB1bnNpZ25l
ZCBuVmVydGljZXMgPSBudW1iZXJPZlZlcnRpY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5oCmluZGV4IDU2NjY1NzRiMGY3ZTY4ZWE3YjFk
NTdjMzk5ZGVkOTA5YjdlNTZhY2UuLmU4NjlhOGMyZDI0ZTZiZjcyNWMwNTU0OWIzMGIzMTVkMzcw
NTcxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9seWdvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9s
eWdvbi5oCkBAIC0zNSw4ICszNSw3IEBACiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAj
aW5jbHVkZSAiVmFsdWVUb1N0cmluZy5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDUsNyArNDQsNyBAQCBjbGFzcyBGbG9hdFBvbHlnb25FZGdlOwogCiBjbGFzcyBGbG9hdFBv
bHlnb24gewogcHVibGljOgotICAgIEZsb2F0UG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9h
dFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKTsKKyAgICBGbG9hdFBvbHlnb24o
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZp
bGxSdWxlKTsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleEF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiAoKm1fdmVydGljZXMpW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIG51
bWJlck9mVmVydGljZXMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2VzLT5zaXplKCk7IH0KQEAg
LTY3LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNvbnRhaW5zTm9uWmVybyhjb25zdCBG
bG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0V2ZW5PZGQoY29uc3QgRmxvYXRQ
b2ludCYpIGNvbnN0OwogCi0gICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gbV92ZXJ0aWNl
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtX3ZlcnRpY2VzOwog
ICAgIFdpbmRSdWxlIG1fZmlsbFJ1bGU7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAg
ICAgYm9vbCBtX2VtcHR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Ns
aXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVy
YXRpb24uaAppbmRleCA3ZDcxYzUxMDk0MzU3NTNjYzE3YjliNzYwOTdlMTM5YjA5MzNkZjYyLi5h
YzFmYTA4ZjVjMjQyMzhhNDcyMTQ0NTdkMDdjMzhkMGFkMzU5ZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMzMsOCArMzMsNiBAQAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlQ29uc3RhbnRzLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG93VGhyZWFkQ29udHJvbGxlci5jcHAKaW5kZXggMzJmOTdiMDU0ZGRhZmZmMTE5YjdiZTIwMThi
NDBhZTRiMGE5OWY5OS4uZDY3NzlhMTIwYzJkZTFiYzAyMDY2OTI5ZmVkYTdjY2U4YWYxYzczMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIu
Y3BwCkBAIC00MCwxMSArNDAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25Q
dHI8Rmxvd1RocmVhZENvbnRyb2xsZXI+IEZsb3dUaHJlYWRDb250cm9sbGVyOjpjcmVhdGUoUmVu
ZGVyVmlldyogdmlldykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZsb3dUaHJlYWRDb250
cm9sbGVyKHZpZXcpKTsKLX0KLQogRmxvd1RocmVhZENvbnRyb2xsZXI6OkZsb3dUaHJlYWRDb250
cm9sbGVyKFJlbmRlclZpZXcqIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY3Vy
cmVudFJlbmRlckZsb3dUaHJlYWQoMCkKQEAgLTYwLDcgKzU1LDcgQEAgRmxvd1RocmVhZENvbnRy
b2xsZXI6On5GbG93VGhyZWFkQ29udHJvbGxlcigpCiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIEZs
b3dUaHJlYWRDb250cm9sbGVyOjplbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmICghbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRM
aXN0KQotICAgICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QgPSBhZG9wdFB0cihuZXcg
UmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCgpKTsKKyAgICAgICAgbV9yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Pigp
OwogICAgIGVsc2UgewogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVuZGVyTmFtZWRGbG93
VGhyZWFkTGlzdC0+YmVnaW4oKSwgZW5kID0gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAgICAgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgKaW5kZXggMGRjYTg4N2UxMzcwMzk1OGViNTIxZWI2
Y2ViZmNjMjdhNzNiMmUyYS4uMzc5YWJmNTUzZjgzNThkZTNkOWE0ZjgyZDcyYWYzZmE1OWNlMjY1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVy
LmgKQEAgLTMxLDggKzMxLDggQEAKICNkZWZpbmUgRmxvd1RocmVhZENvbnRyb2xsZXJfaAogCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck5hbWVk
Rmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q7CiBjbGFzcyBGbG93VGhyZWFk
Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Rmxvd1RocmVhZENvbnRyb2xsZXI+IGNyZWF0ZShSZW5kZXJWaWV3
Kik7CisgICAgZXhwbGljaXQgRmxvd1RocmVhZENvbnRyb2xsZXIoUmVuZGVyVmlldyopOwogICAg
IH5GbG93VGhyZWFkQ29udHJvbGxlcigpOwogCiAgICAgUmVuZGVyRmxvd1RocmVhZCogY3VycmVu
dFJlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZW5kZXJGbG93VGhy
ZWFkOyB9CkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0g
ICAgZXhwbGljaXQgRmxvd1RocmVhZENvbnRyb2xsZXIoUmVuZGVyVmlldyopOwogICAgIHZvaWQg
dXBkYXRlRmxvd1RocmVhZHNDaGFpbklmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCByZXNldEZsb3dU
aHJlYWRzV2l0aEF1dG9IZWlnaHRSZWdpb25zKCk7CiAKQEAgLTEwMSw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fY3VycmVudFJlbmRlckZsb3dUaHJlYWQ7CiAg
ICAgYm9vbCBtX2lzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eTsKICAgICB1bnNpZ25l
ZCBtX2Zsb3dUaHJlYWRzV2l0aEF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uczsKLSAgICBPd25QdHI8
UmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdD4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0PiBtX3JlbmRlck5h
bWVkRmxvd1RocmVhZExpc3Q7CiAgICAgSGFzaE1hcDxjb25zdCBFbGVtZW50KiwgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKj4gbV9tYXBOYW1lZEZsb3dDb250ZW50RWxlbWVudDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAppbmRleCBlMTIxOTFmZjc2YzA0
ZjQzOWRkYzE2MGIyZDE5YjY5MTZlZTZiOWVjLi4yNzEyOGFhOTNmNDIxODRiOGQwYmQ0MDgzOTk2
OWVlYmFlNDE4MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlv
bi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4
IDY0NTlkYTYzYjMxNWMzZWMxOWFiZDNiOGU3MzdhMjJjMzk0ZTgwZTIuLjIwYjdhZDE5MWE5N2Ji
MWY1N2I2NDk5MDY0NDEwNjhkODA5NGNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVz
dFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0
KG90aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBp
biBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCi0gICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRv
cHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8gbmV3IE5vZGVTZXQoKm90aGVyLm1f
cmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKKyAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBv
dGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpv
dGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0VGVzdFJlc3Vs
dDo6fkhpdFRlc3RSZXN1bHQoKQpAQCAtMTExLDcgKzExMSw3IEBAIEhpdFRlc3RSZXN1bHQmIEhp
dFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBt
X2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5
IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KLSAgICBtX3JlY3RCYXNlZFRl
c3RSZXN1bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9k
ZVNldCgqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOworICAgIG1fcmVjdEJhc2Vk
VGVzdFJlc3VsdCA9IG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZVNldD4oKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwogCiAg
ICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjM3LDE0ICs2MzcsMTQgQEAgdm9pZCBIaXRUZXN0UmVz
dWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiBjb25zdCBIaXRUZXN0UmVz
dWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpyZWN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcmVjdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9yZWN0QmFzZWRU
ZXN0UmVzdWx0ID0gYWRvcHRQdHIobmV3IE5vZGVTZXQpOworICAgICAgICBtX3JlY3RCYXNlZFRl
c3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX3Jl
Y3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RS
ZXN1bHQ6Om11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fcmVjdEJh
c2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIo
bmV3IE5vZGVTZXQpOworICAgICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDRkNzI4YTcy
MmIxMGRiYTcxZWY3MjdhMmJjNDZmNTFlOTlkYzdlNzAuLjM2NWI0YzljZTEyYjg2YmU5YmU4Zjg0
NjliNTdmNjk4MWQ3NGEwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaApAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhcjsKICAgICBib29sIG1faXNPdmVyV2lkZ2V0
OyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgYXJlIG92ZXIgYSB3aWRnZXQgKGFuZCBub3QgaW4gdGhl
IGJvcmRlci9wYWRkaW5nIGFyZWEgb2YgYSBSZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUpLgogCi0g
ICAgbXV0YWJsZSBPd25QdHI8Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OworICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPE5vZGVTZXQ+IG1fcmVjdEJhc2VkVGVzdFJlc3VsdDsKIH07
CiAKIFN0cmluZyBkaXNwbGF5U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZS5jcHAKaW5kZXggY2IzZmM4NGI2NzI2NTI2NDBjMmZhZDEwYmYyZDlmYzAzNTJiMzA3MS4uYjgy
ZDdkMDcwNjIxMWEzYjRhZTc4YzUzMTJkNGJjYmE3ZTkzNDhkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTI3
LDcgKzI3LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCIKIAogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5oCmluZGV4IGEwNmRmMmI1Zjk4Njk4ZDU0ZTMyYzlmMGZmZWUwYzEy
YzhjNmFkMmIuLjQzMmQzNjExMmFjYTI5YjU5MDMzMWE1MmVhN2RkMmIwOGQ2MDRlOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaApA
QCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBSZW5kZXJWaWV3OwogY2xhc3MgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcikKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZVF1YWxpdHlDb250
cm9sbGVyPiBjcmVhdGUoY29uc3QgUmVuZGVyVmlldyYgcmVuZGVyVmlldykgeyByZXR1cm4gYWRv
cHRQdHIobmV3IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIocmVuZGVyVmlldykpOyB9CisgICAgZXhw
bGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5kZXJWaWV3Jik7CiAKICAgICBi
b29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYp
OwogICAgIHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3Qm
IHJlbmRlcmVyKSB7IHJlbW92ZU9iamVjdCgmcmVuZGVyZXIpOyB9CkBAIC01MSw4ICs1MCw2IEBA
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IHZvaWQqLCBMYXlvdXRTaXplPiBM
YXllclNpemVNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlckJveE1vZGVsT2JqZWN0Kiwg
TGF5ZXJTaXplTWFwPiBPYmplY3RMYXllclNpemVNYXA7CiAKLSAgICBleHBsaWNpdCBJbWFnZVF1
YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcmKTsKLQogICAgIHZvaWQgcmVtb3ZlTGF5
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2
b2lkKiBsYXllcik7CiAgICAgdm9pZCBzZXQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNp
emVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYpOwog
ICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxJbWFnZVF1YWxpdHlD
b250cm9sbGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5k
ZXggN2FiYzYyNmRmZDZhNTA3ZGE0YWI1YTU0YjI3NjM1Y2MwMDRhOWEyNi4uOGMxNmQ3ZDgzNzI3
MjZiOWFlZjY4M2FjOGEwNjI4ZDEwY2ZjZjA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVy
QmxvY2sgOiBwdWJsaWMgUmVuZGVyQm94IHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRl
ckJsb2NrKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlckJsb2NrKSwgUmVuZGVyQmxvY2tfc2hv
dWxkX3N0YXlfc21hbGwpOwogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gq
LCBPd25QdHI8Q29sdW1uSW5mbz4+IENvbHVtbkluZm9NYXA7Cit0eXBlZGVmIFdURjo6SGFzaE1h
cDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8Q29sdW1uSW5mbz4+IENvbHVtbklu
Zm9NYXA7CiBzdGF0aWMgQ29sdW1uSW5mb01hcCogZ0NvbHVtbkluZm9NYXAgPSAwOwogCiBzdGF0
aWMgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiBnUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwID0gMDsK
QEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIFRyYWNrZWREZXNjZW5kYW50c01hcCogZ1BlcmNlbnRI
ZWlnaHREZXNjZW5kYW50c01hcCA9IDA7CiBzdGF0aWMgVHJhY2tlZENvbnRhaW5lck1hcCogZ1Bv
c2l0aW9uZWRDb250YWluZXJNYXAgPSAwOwogc3RhdGljIFRyYWNrZWRDb250YWluZXJNYXAqIGdQ
ZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwID0gMDsKICAgICAKLXR5cGVkZWYgV1RGOjpIYXNoTWFw
PFJlbmRlckJsb2NrKiwgT3duUHRyPExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+Pj4gQ29udGlu
dWF0aW9uT3V0bGluZVRhYmxlTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8UmVuZGVyQmxvY2sq
LCBzdGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+PiBDb250aW51YXRp
b25PdXRsaW5lVGFibGVNYXA7CiAKIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlbmRlckJsb2NrKj4g
RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQ7CiBzdGF0aWMgaW50IGdEZWxheVVwZGF0ZVNjcm9s
bEluZm8gPSAwOwpAQCAtMTk2LDcgKzE5Niw3IEBAIFJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhE
b2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lCiAK
IHN0YXRpYyB2b2lkIHJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKFJl
bmRlckJsb2NrKiBibG9jaywgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiYgZGVzY2VuZGFudE1hcCwg
VHJhY2tlZENvbnRhaW5lck1hcComIGNvbnRhaW5lck1hcCkKIHsKLSAgICBpZiAoT3duUHRyPFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PiBkZXNjZW5kYW50U2V0ID0gZGVzY2VuZGFudE1hcC0+
dGFrZShibG9jaykpIHsKKyAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0PiBkZXNjZW5kYW50U2V0ID0gZGVzY2VuZGFudE1hcC0+dGFrZShibG9jaykpIHsK
ICAgICAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IGRlc2Nl
bmRhbnRTZXQtPmVuZCgpOwogICAgICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
OjppdGVyYXRvciBkZXNjZW5kYW50ID0gZGVzY2VuZGFudFNldC0+YmVnaW4oKTsgZGVzY2VuZGFu
dCAhPSBlbmQ7ICsrZGVzY2VuZGFudCkgewogICAgICAgICAgICAgVHJhY2tlZENvbnRhaW5lck1h
cDo6aXRlcmF0b3IgaXQgPSBjb250YWluZXJNYXAtPmZpbmQoKmRlc2NlbmRhbnQpOwpAQCAtMTIz
NSw3ICsxMjM1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlVcGRhdGVTY3JvbGxJ
bmZvKCkKICAgICBpZiAoZ0RlbGF5VXBkYXRlU2Nyb2xsSW5mbyA9PSAwKSB7CiAgICAgICAgIEFT
U0VSVChnRGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQpOwogCi0gICAgICAgIE93blB0cjxEZWxh
eWVkVXBkYXRlU2Nyb2xsSW5mb1NldD4gaW5mb1NldChhZG9wdFB0cihnRGVsYXllZFVwZGF0ZVNj
cm9sbEluZm9TZXQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERlbGF5ZWRVcGRhdGVTY3Jv
bGxJbmZvU2V0PiBpbmZvU2V0KGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCk7CiAgICAgICAg
IGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCA9IDA7CiAKICAgICAgICAgZm9yIChEZWxheWVk
VXBkYXRlU2Nyb2xsSW5mb1NldDo6aXRlcmF0b3IgaXQgPSBpbmZvU2V0LT5iZWdpbigpOyBpdCAh
PSBpbmZvU2V0LT5lbmQoKTsgKytpdCkgewpAQCAtMjQyNyw3ICsyNDI3LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5lKiBmbG93KQog
ICAgIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBjb250aW51YXRpb25zID0gdGFibGUtPmdl
dCh0aGlzKTsKICAgICBpZiAoIWNvbnRpbnVhdGlvbnMpIHsKICAgICAgICAgY29udGludWF0aW9u
cyA9IG5ldyBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPjsKLSAgICAgICAgdGFibGUtPnNldCh0
aGlzLCBhZG9wdFB0cihjb250aW51YXRpb25zKSk7CisgICAgICAgIHRhYmxlLT5zZXQodGhpcywg
c3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+Pihjb250aW51YXRpb25z
KSk7CiAgICAgfQogICAgIAogICAgIGNvbnRpbnVhdGlvbnMtPmFkZChmbG93KTsKQEAgLTI0NTIs
NyArMjQ1Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGluZXMo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBpZiAodGFibGUtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBPd25QdHI8TGlzdEhhc2hTZXQ8
UmVuZGVySW5saW5lKj4+IGNvbnRpbnVhdGlvbnMgPSB0YWJsZS0+dGFrZSh0aGlzKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4+IGNvbnRpbnVhdGlvbnMg
PSB0YWJsZS0+dGFrZSh0aGlzKTsKICAgICBpZiAoIWNvbnRpbnVhdGlvbnMpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjg2MCw3ICsyODYwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0SW50
b1RyYWNrZWRSZW5kZXJlck1hcHMoUmVuZGVyQm94JiBkZXNjZW5kYW50LCBUcmFja2VkRGUKICAg
ICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogZGVzY2VuZGFudFNldCA9IGRlc2NlbmRhbnRz
TWFwLT5nZXQodGhpcyk7CiAgICAgaWYgKCFkZXNjZW5kYW50U2V0KSB7CiAgICAgICAgIGRlc2Nl
bmRhbnRTZXQgPSBuZXcgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ7Ci0gICAgICAgIGRlc2Nl
bmRhbnRzTWFwLT5zZXQodGhpcywgYWRvcHRQdHIoZGVzY2VuZGFudFNldCkpOworICAgICAgICBk
ZXNjZW5kYW50c01hcC0+c2V0KHRoaXMsIHN0ZDo6dW5pcXVlX3B0cjxUcmFja2VkUmVuZGVyZXJM
aXN0SGFzaFNldD4oZGVzY2VuZGFudFNldCkpOwogICAgIH0KICAgICBib29sIGFkZGVkID0gZGVz
Y2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwogICAgIGlmICghYWRkZWQp
IHsKQEAgLTI4NzIsNyArMjg3Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6Omluc2VydEludG9UcmFj
a2VkUmVuZGVyZXJNYXBzKFJlbmRlckJveCYgZGVzY2VuZGFudCwgVHJhY2tlZERlCiAgICAgSGFz
aFNldDxSZW5kZXJCbG9jayo+KiBjb250YWluZXJTZXQgPSBjb250YWluZXJNYXAtPmdldCgmZGVz
Y2VuZGFudCk7CiAgICAgaWYgKCFjb250YWluZXJTZXQpIHsKICAgICAgICAgY29udGFpbmVyU2V0
ID0gbmV3IEhhc2hTZXQ8UmVuZGVyQmxvY2sqPjsKLSAgICAgICAgY29udGFpbmVyTWFwLT5zZXQo
JmRlc2NlbmRhbnQsIGFkb3B0UHRyKGNvbnRhaW5lclNldCkpOworICAgICAgICBjb250YWluZXJN
YXAtPnNldCgmZGVzY2VuZGFudCwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sq
Pj4oY29udGFpbmVyU2V0KSk7CiAgICAgfQogICAgIEFTU0VSVCghY29udGFpbmVyU2V0LT5jb250
YWlucyh0aGlzKSk7CiAgICAgY29udGFpbmVyU2V0LT5hZGQodGhpcyk7CkBAIC0yODgzLDcgKzI4
ODMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVGcm9tVHJhY2tlZFJlbmRlcmVyTWFwcyhS
ZW5kZXJCb3gmIGRlc2NlbmRhbnQsIFRyYWNrZWREZQogICAgIGlmICghZGVzY2VuZGFudHNNYXAp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBPd25QdHI8SGFzaFNldDxSZW5kZXJCbG9jayo+
PiBjb250YWluZXJTZXQgPSBjb250YWluZXJNYXAtPnRha2UoJmRlc2NlbmRhbnQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFJlbmRlckJsb2NrKj4+IGNvbnRhaW5lclNldCA9IGNvbnRh
aW5lck1hcC0+dGFrZSgmZGVzY2VuZGFudCk7CiAgICAgaWYgKCFjb250YWluZXJTZXQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKQEAgLTM1MzcsNyArMzUzNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OnNldENvbXB1dGVkQ29sdW1uQ291bnRBbmRXaWR0aChpbnQgY291bnQsIExheW91dFVuaXQgd2lk
dGgpCiAgICAgICAgICAgICBpZiAoIWdDb2x1bW5JbmZvTWFwKQogICAgICAgICAgICAgICAgIGdD
b2x1bW5JbmZvTWFwID0gbmV3IENvbHVtbkluZm9NYXA7CiAgICAgICAgICAgICBpbmZvID0gbmV3
IENvbHVtbkluZm87Ci0gICAgICAgICAgICBnQ29sdW1uSW5mb01hcC0+YWRkKHRoaXMsIGFkb3B0
UHRyKGluZm8pKTsKKyAgICAgICAgICAgIGdDb2x1bW5JbmZvTWFwLT5hZGQodGhpcywgc3RkOjp1
bmlxdWVfcHRyPENvbHVtbkluZm8+KGluZm8pKTsKICAgICAgICAgICAgIHNldEhhc0NvbHVtbnMo
dHJ1ZSk7CiAgICAgICAgIH0KICAgICAgICAgaW5mby0+c2V0RGVzaXJlZENvbHVtbkNvdW50KGNv
dW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggM2QwOTllN2Rj
MTJkNDZhZDMwMmU1MTZhYzQwMDcwYWUwZmZhY2ZhMi4uZmU2ZDY1N2IxMTI2MGVkMmU3ODFjZGJk
NWUwN2VkMTVmNmMzNWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJHYXBSZWN0cy5oIgogI2luY2x1ZGUgIlJlbmRl
ckJveC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Niw4ICs0Niw4IEBAIHN0cnVjdCBCaWRpUnVuOwogc3RydWN0IFBh
aW50SW5mbzsKIAogdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlbmRlckJveCosIDE2PiBUcmFj
a2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRl
ckJsb2NrKiwgT3duUHRyPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Pj4gVHJhY2tlZERlc2Nl
bmRhbnRzTWFwOwotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgT3duUHRy
PEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4+IFRyYWNrZWRDb250YWluZXJNYXA7Cit0eXBlZGVmIFdU
Rjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxUcmFja2VkUmVu
ZGVyZXJMaXN0SGFzaFNldD4+IFRyYWNrZWREZXNjZW5kYW50c01hcDsKK3R5cGVkZWYgV1RGOjpI
YXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFJlbmRlckJs
b2NrKj4+PiBUcmFja2VkQ29udGFpbmVyTWFwOwogCiBlbnVtIENhcmV0VHlwZSB7IEN1cnNvckNh
cmV0LCBEcmFnQ2FyZXQgfTsKIGVudW0gQ29udGFpbmluZ0Jsb2NrU3RhdGUgeyBOZXdDb250YWlu
aW5nQmxvY2ssIFNhbWVDb250YWluaW5nQmxvY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMjBjMWQ0YWEyZDc2YWY3YTA0MmQxNmQyZmQ3
Y2RiMmY5MjA2NWJlNC4uZDUzOWZlMmUyN2U1ZmI4NmI4ODhmZGM5N2I3ZjcwNWU5ZDc5MjFmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIw
NDQsNyArMjA0NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmpl
Y3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3Rz
ID0gYWRvcHRQdHIobmV3IEZsb2F0aW5nT2JqZWN0cygqdGhpcykpOworICAgIG1fZmxvYXRpbmdP
YmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKIH0KIAog
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggZjM1OGM4ZDE0ZGJjMjMyNDA5
NDc4ZTE4ZTc3OWY1ZmI3NTgzZDViMy4uMDBjZmI3NDMzOGM2MjM3YmU5YWUyNzllYmVkNjg5YzZl
ZGZjZTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxpbmVCb3hMaXN0LmgiCiAjaW5jbHVk
ZSAiU2ltcGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlRyYWlsaW5nT2JqZWN0cy5oIgorI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OTcsNyArNTk4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICBPd25QdHI8RmxvYXRpbmdPYmpl
Y3RzPiBtX2Zsb2F0aW5nT2JqZWN0czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmpl
Y3RzPiBtX2Zsb2F0aW5nT2JqZWN0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tG
bG93UmFyZURhdGE+IG1fcmFyZUJsb2NrRmxvd0RhdGE7CiAgICAgUmVuZGVyTGluZUJveExpc3Qg
bV9saW5lQm94ZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91
dD4gbV9zaW1wbGVMaW5lTGF5b3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveFJlZ2lvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hSZWdpb25JbmZvLmgKaW5kZXggYmZlMGRjY2MzMGQ5MDFjZmIwYjEwOGM1YjY3NzI5NjUz
YWE1Mjg2Ny4uMDhlNzM4NmYzNGM3M2I0NzE1Yjc3MTZhNTI4YjYyYTY4NWU3YjgwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveFJlZ2lvbkluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94UmVnaW9uSW5mby5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjZGVmaW5lIFJlbmRlckJveFJlZ2lvbkluZm9faAogCiAjaW5jbHVkZSAiUmVu
ZGVyT3ZlcmZsb3cuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCA3
NzU2YTQxYjcwYzhjZjhkMTQ2ZmYyODE3OGUyZTA4MjY3NDgyZTA5Li40M2YzMmMwZmNkMGE4NmE0
YjJhOGIxNDQyOWE1ZTBkZWY3NDkyYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcApAQCAtMTE0LDEyICsxMTQsMTIgQEAgdm9pZCBSZW5kZXJCdXR0b246OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3QKIAogICAgIGlmICghbV9kZWZhdWx0ICYmIHRoZW1lKCkuaXNEZWZhdWx0KHRoaXMpKSB7CiAg
ICAgICAgIGlmICghbV90aW1lcikKLSAgICAgICAgICAgIG1fdGltZXIgPSBhZG9wdFB0cihuZXcg
VGltZXI8UmVuZGVyQnV0dG9uPih0aGlzLCAmUmVuZGVyQnV0dG9uOjp0aW1lckZpcmVkKSk7Cisg
ICAgICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxSZW5kZXJCdXR0b24+
Pih0aGlzLCAmUmVuZGVyQnV0dG9uOjp0aW1lckZpcmVkKTsKICAgICAgICAgbV90aW1lci0+c3Rh
cnRSZXBlYXRpbmcoMC4wMyk7CiAgICAgICAgIG1fZGVmYXVsdCA9IHRydWU7CiAgICAgfSBlbHNl
IGlmIChtX2RlZmF1bHQgJiYgIXRoZW1lKCkuaXNEZWZhdWx0KHRoaXMpKSB7CiAgICAgICAgIG1f
ZGVmYXVsdCA9IGZhbHNlOwotICAgICAgICBtX3RpbWVyLmNsZWFyKCk7CisgICAgICAgIG1fdGlt
ZXIgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oCmluZGV4IDE3YzE3NjE1Y2E5OThhMDJlYjQ1YmFhMjE0NDIxNjA0ZDZhMzJlYWUuLjg3
NTY1M2NkZDhlY2JlNzQyMmI2YWZkYzZjMzEzYzEzYmUwMzEzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlJl
bmRlckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc5
LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIG1fYnV0dG9uVGV4
dDsKICAgICBSZW5kZXJCbG9jayogbV9pbm5lcjsKIAotICAgIE93blB0cjxUaW1lcjxSZW5kZXJC
dXR0b24+PiBtX3RpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcjxSZW5kZXJCdXR0b24+
PiBtX3RpbWVyOwogICAgIGJvb2wgbV9kZWZhdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDVmYWFmMTlmNDJiNjkyZDE4ODAyY2U5ZDQw
Mzc3YjI1YjM3NTk4ZmIuLmJhZjJmOWM3YzBkNmE0ZmQwNGJhNjFhOGQxZTNjYzQ3ZDY1ZDcxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPENvdW50ZXJOb2RlPj4gQ291
bnRlck1hcDsKLXR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBPd25QdHI8Q291
bnRlck1hcD4+IENvdW50ZXJNYXBzOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVj
dCosIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyTWFwPj4gQ291bnRlck1hcHM7CiAKIHN0YXRpYyBD
b3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCosIGNvbnN0IEF0b21pY1N0
cmluZyYgaWRlbnRpZmllciwgYm9vbCBhbHdheXNDcmVhdGVDb3VudGVyKTsKIApAQCAtMzI0LDcg
KzMyNCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVj
dCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgICAgIG5vZGVNYXAgPSBjb3Vu
dGVyTWFwcygpLmdldChlbGVtZW50KTsKICAgICBlbHNlIHsKICAgICAgICAgbm9kZU1hcCA9IG5l
dyBDb3VudGVyTWFwOwotICAgICAgICBjb3VudGVyTWFwcygpLnNldChlbGVtZW50LCBhZG9wdFB0
cihub2RlTWFwKSk7CisgICAgICAgIGNvdW50ZXJNYXBzKCkuc2V0KGVsZW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxDb3VudGVyTWFwPihub2RlTWFwKSk7CiAgICAgICAgIGVsZW1lbnQtPnNldEhhc0Nv
dW50ZXJOb2RlTWFwKHRydWUpOwogICAgIH0KICAgICBub2RlTWFwLT5zZXQoaWRlbnRpZmllciwg
bmV3Tm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHAKaW5kZXggNGE1Y2QyMzFhNGIzNzYzZjVhMzEwMjJmODRkMDU5MGJjN2Q5ZDg3NS4uZDA0NTM2
YjdmMTM4MDlhZGFiOGI3OTE5ODcxNjY4OGU1NmMyZWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzIyLDExICszMjIsMTEgQEAgYm9v
bCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVBbGxMYXllclRvUmVnaW9uTWFwcGluZ3MoKQogCiAg
ICAgaWYgKG5lZWRzTGF5ZXJVcGRhdGUpIHsKICAgICAgICAgaWYgKCFtX2xheWVyVG9SZWdpb25N
YXApCi0gICAgICAgICAgICBtX2xheWVyVG9SZWdpb25NYXAgPSBhZG9wdFB0cihuZXcgTGF5ZXJU
b1JlZ2lvbk1hcCgpKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUb1JlZ2lvbk1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGF5ZXJUb1JlZ2lvbk1hcD4oKTsKICAgICAgICAgbV9sYXllclRvUmVnaW9uTWFw
LT5zd2FwKGxheWVyVG9SZWdpb25NYXApOwogCiAgICAgICAgIGlmICghbV9yZWdpb25Ub0xheWVy
TGlzdE1hcCkKLSAgICAgICAgICAgIG1fcmVnaW9uVG9MYXllckxpc3RNYXAgPSBhZG9wdFB0cihu
ZXcgUmVnaW9uVG9MYXllckxpc3RNYXAoKSk7CisgICAgICAgICAgICBtX3JlZ2lvblRvTGF5ZXJM
aXN0TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb25Ub0xheWVyTGlzdE1hcD4oKTsKICAgICAg
ICAgbV9yZWdpb25Ub0xheWVyTGlzdE1hcC0+c3dhcChyZWdpb25Ub0xheWVyTGlzdE1hcCk7CiAg
ICAgfQogCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2Fs
V2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqIGIKICAgICAg
ICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lv
blNldCgpKTsKIAogICAgICAgICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZv
ciB0aGlzIHJlZ2lvbiBzbyB3ZSBuZWVkIHRvIGRvIGl0LgotICAgICAgICBPd25QdHI8UmVuZGVy
Qm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8o
YmxvY2spOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xk
SW5mbyA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwogICAgICAgICBp
ZiAoIW9sZEluZm8pIHsKICAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSByYW5nZUludmFs
aWRhdGVkOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggMjNkMGYyNTNjY2Y1YmJiODRkMTk5NjNiZWJkMWUxZjBh
NTI4MDgyZi4uODU1ZWYxMjM3ODA5ZWZjNWIwNjA5OTAwYzkwZTU4MTI1MjdiMDhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0zMDIsMTAgKzMw
MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogICAgIC8vIE1hcCBhIGxheWVyIHRvIHRoZSBy
ZWdpb24gaW4gd2hpY2ggdGhlIGxheWVyIGlzIHBhaW50ZWQuCi0gICAgT3duUHRyPExheWVyVG9S
ZWdpb25NYXA+IG1fbGF5ZXJUb1JlZ2lvbk1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJU
b1JlZ2lvbk1hcD4gbV9sYXllclRvUmVnaW9uTWFwOwogCiAgICAgLy8gTWFwIGEgcmVnaW9uIHRv
IHRoZSBsaXN0IG9mIGxheWVycyB0aGF0IHBhaW50IGluIHRoYXQgcmVnaW9uLgotICAgIE93blB0
cjxSZWdpb25Ub0xheWVyTGlzdE1hcD4gbV9yZWdpb25Ub0xheWVyTGlzdE1hcDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVnaW9uVG9MYXllckxpc3RNYXA+IG1fcmVnaW9uVG9MYXllckxpc3RNYXA7
CiAKICAgICAvLyBNYXAgYSBib3ggdG8gdGhlIGxpc3Qgb2YgcmVnaW9ucyBpbiB3aGljaCB0aGUg
Ym94IGlzIHJlbmRlcmVkLgogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBS
ZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVyUmVnaW9uUmFuZ2VNYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCA5OGMwNGVkNDFmNmMyOTI0
OGZmYWJiMjU2MmJmMGE1NTg5YzI4YWZkLi4xZThiNDY2ZTUyNTgzZGIyZTM5M2E5Nzc1MjIyNGFm
MTg4OGNhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRy
eU1hcC5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNo
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAg
IAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlv
blBvc2l0aW9uXTsKICAgICBpZiAoIXQuaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkKLSAgICAgICAg
c3RlcC5tX3RyYW5zZm9ybSA9IGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0KSk7
CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRT
aXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFJlbmRlckdlb21l
dHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXpl
JiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2lu
c2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAg
IGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCp0KSk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CiAgICAgCiAgICAgc3RlcEluc2VydGVk
KHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
aAppbmRleCA0NGZiYmU1YmM2Nzk2ZDU0MTU3ZWFlMzBhMDE0NmFhN2RlZmEwOThhLi5kOGY4MzJj
ZmZiNGVjODViOGRmMzQ2YjAxNDQyNzg3ODRlOWY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
IkxheW91dFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsNyArNjQsNyBAQCBzdHJ1Y3Qg
UmVuZGVyR2VvbWV0cnlNYXBTdGVwIHsKICAgICB9CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBt
X3JlbmRlcmVyOwogICAgIExheW91dFNpemUgbV9vZmZzZXQ7Ci0gICAgT3duUHRyPFRyYW5zZm9y
bWF0aW9uTWF0cml4PiBtX3RyYW5zZm9ybTsgLy8gSW5jbHVkZXMgb2Zmc2V0IGlmIG5vbi1udWxs
LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gbV90cmFuc2Zvcm07
IC8vIEluY2x1ZGVzIG9mZnNldCBpZiBub24tbnVsbC4KICAgICBib29sIG1fYWNjdW11bGF0aW5n
VHJhbnNmb3JtOwogICAgIGJvb2wgbV9pc05vblVuaWZvcm07IC8vIE1hcHBpbmcgZGVwZW5kcyBv
biB0aGUgaW5wdXQgcG9pbnQsIGUuZy4gYmVjYXVzZSBvZiBDU1MgY29sdW1ucy4KICAgICBib29s
IG1faXNGaXhlZFBvc2l0aW9uOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewotLy8gVGhpcyBpcyByZXF1aXJlZCBm
b3IgYSBzdHJ1Y3Qgd2l0aCBPd25QdHIuIFdlIGtub3cgUmVuZGVyR2VvbWV0cnlNYXBTdGVwIGlz
IHNpbXBsZSBlbm91Z2ggdGhhdAorLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgYSBzdHJ1Y3Qgd2l0
aCBzdGQ6OnVuaXF1ZV9wdHI8Pi4gV2Uga25vdyBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAgaXMgc2lt
cGxlIGVub3VnaCB0aGF0CiAvLyBpbml0aWFsaXppbmcgdG8gMCBhbmQgbW92aW5nIHdpdGggbWVt
Y3B5IChhbmQgdGhlbiBub3QgZGVzdHJ1Y3RpbmcgdGhlIG9yaWdpbmFsKSB3aWxsIHdvcmsuCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXBT
dGVwPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA4Mjc3MTc5OGY1NTA4N2Y2NGMwM2ZhNjVlN2YxZTIw
NmIwYjcxMmRiLi5hOWI3MjAxYmU0ZDAwMjQ2MjA2ZDI4NTg0M2UwODhmNGE5MjI3YmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBQYXNzT3duUHRyPEdyaWRD
b29yZGluYXRlPiBuZXh0RW1wdHlHcmlkQXJlYSgpCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRD
b29yZGluYXRlPiBuZXh0RW1wdHlHcmlkQXJlYSgpCiAgICAgewogICAgICAgICBpZiAobV9ncmlk
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI2LDEwICsxMjYs
MTAgQEAgcHVibGljOgogICAgICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZh
cnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgICAgICBjb25z
dCBWZWN0b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29s
dW1uSW5kZXhdOwogICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgIE93blB0cjxHcmlkQ29vcmRpbmF0ZT4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IEdy
aWRDb29yZGluYXRlKEdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXgpLCBHcmlkU3Bhbiht
X2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4KSkpOworICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQ29v
cmRpbmF0ZT4oR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCksIEdyaWRTcGFuKG1fY29s
dW1uSW5kZXgsIG1fY29sdW1uSW5kZXgpKTsKICAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIHRo
ZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxkIHJldHVy
biB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICAgICArK3Zh
cnlpbmdUcmFja0luZGV4OwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY1Niw4ICs2NTYsOCBA
QCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoKQogICAgIGZvciAoUmVuZGVyQm94
KiBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBtX29yZGVy
SXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBuZXZlciByZS1yZXNvbHZl
IHBvc2l0aW9ucyBpZiB0aGUgZ3JpZCBpcyBncm93biBkdXJpbmcgYXV0by1wbGFjZW1lbnQgd2hp
Y2ggbWF5IGxlYWQgYXV0byAvIDxpbnRlZ2VyPgogICAgICAgICAvLyBwb3NpdGlvbnMgdG8gbm90
IG1hdGNoIHRoZSBhdXRob3IncyBpbnRlbnQuIFRoZSBzcGVjaWZpY2F0aW9uIGlzIHVuY2xlYXIg
b24gd2hhdCBzaG91bGQgYmUgZG9uZSBpbiB0aGlzIGNhc2UuCi0gICAgICAgIE93blB0cjxHcmlk
U3Bhbj4gcm93UG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQs
IEZvclJvd3MpOwotICAgICAgICBPd25QdHI8R3JpZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJl
c29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0
aW9uc0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkU3Bhbj4gY29sdW1uUG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUo
Y2hpbGQsIEZvckNvbHVtbnMpOwogICAgICAgICBpZiAoIXJvd1Bvc2l0aW9ucyB8fCAhY29sdW1u
UG9zaXRpb25zKSB7CiAgICAgICAgICAgICBHcmlkU3BhbiogbWFqb3JBeGlzUG9zaXRpb25zID0g
KGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zKSA/IGNvbHVt
blBvc2l0aW9ucy5nZXQoKSA6IHJvd1Bvc2l0aW9ucy5nZXQoKTsKICAgICAgICAgICAgIGlmICgh
bWFqb3JBeGlzUG9zaXRpb25zKQpAQCAtNjk4LDggKzY5OCw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6
cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkKICAgICAgICAgICAgIG9yZGVy
VmFsdWVzLmFwcGVuZChvcmRlcik7CiAKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBieXBhc3Nl
cyB0aGUgY2FjaGUgKGNhY2hlZEdyaWRDb29yZGluYXRlKCkpIGFzIGl0IGlzIHVzZWQgdG8gYnVp
bGQgaXQuCi0gICAgICAgIE93blB0cjxHcmlkU3Bhbj4gcm93UG9zaXRpb25zID0gcmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvclJvd3MpOwotICAgICAgICBPd25QdHI8R3Jp
ZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNo
aWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByb3dQ
b3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gY29sdW1uUG9zaXRpb25zID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvckNvbHVtbnMpOwogCiAgICAgICAg
IC8vIHxwb3NpdGlvbnN8IGlzIDAgaWYgd2UgbmVlZCB0byBydW4gdGhlIGF1dG8tcGxhY2VtZW50
IGFsZ29yaXRobS4gT3VyIGVzdGltYXRpb24gaWdub3JlcwogICAgICAgICAvLyB0aGlzIGNhc2Ug
YXMgdGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSB3aWxsIGdyb3cgdGhlIGdyaWQgYXMgbmVl
ZGVkLgpAQCAtNzE5LDE1ICs3MTksMTUgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxp
Y2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKQogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmll
ZE1ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJCb3gqPiBhdXRvR3JpZEl0ZW1zKQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXV0b0dyaWRJdGVtcy5zaXplKCk7ICsraSkg
ewotICAgICAgICBPd25QdHI8R3JpZFNwYW4+IG1ham9yQXhpc1Bvc2l0aW9ucyA9IHJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGF1dG9HcmlkSXRlbXNbaV0sIGF1dG9QbGFjZW1lbnRNYWpv
ckF4aXNEaXJlY3Rpb24oKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gbWFq
b3JBeGlzUG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoYXV0b0dyaWRJ
dGVtc1tpXSwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpKTsKICAgICAgICAgR3Jp
ZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlv
bigpLCBtYWpvckF4aXNQb3NpdGlvbnMtPmluaXRpYWxQb3NpdGlvbkluZGV4KTsKLSAgICAgICAg
aWYgKE93blB0cjxHcmlkQ29vcmRpbmF0ZT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRF
bXB0eUdyaWRBcmVhKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRp
bmF0ZT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKCkpIHsKICAg
ICAgICAgICAgIGluc2VydEl0ZW1JbnRvR3JpZChhdXRvR3JpZEl0ZW1zW2ldLCBlbXB0eUdyaWRB
cmVhLT5yb3dzLmluaXRpYWxQb3NpdGlvbkluZGV4LCBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLmlu
aXRpYWxQb3NpdGlvbkluZGV4KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgZ3Jvd0dyaWQoYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpKTsKLSAg
ICAgICAgT3duUHRyPEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4
dEVtcHR5R3JpZEFyZWEoKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRl
PiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEoKTsKICAgICAgICAg
QVNTRVJUKGVtcHR5R3JpZEFyZWEpOwogICAgICAgICBpbnNlcnRJdGVtSW50b0dyaWQoYXV0b0dy
aWRJdGVtc1tpXSwgZW1wdHlHcmlkQXJlYS0+cm93cy5pbml0aWFsUG9zaXRpb25JbmRleCwgZW1w
dHlHcmlkQXJlYS0+Y29sdW1ucy5pbml0aWFsUG9zaXRpb25JbmRleCk7CiAgICAgfQpAQCAtNzQx
LDEzICs3NDEsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtc09u
R3JpZChWZWN0b3I8UmVuZGVyQm94Kj4gYXV0b0dyaWRJdGVtcykKIAogdm9pZCBSZW5kZXJHcmlk
OjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKFJlbmRlckJveCogZ3JpZEl0ZW0pCiB7Ci0g
ICAgT3duUHRyPEdyaWRTcGFuPiBtaW5vckF4aXNQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0
aW9uc0Zyb21TdHlsZShncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigp
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IG1pbm9yQXhpc1Bvc2l0aW9ucyA9IHJl
c29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JB
eGlzRGlyZWN0aW9uKCkpOwogICAgIEFTU0VSVCghcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSkpOwogICAgIHNp
emVfdCBtaW5vckF4aXNJbmRleCA9IDA7CiAgICAgaWYgKG1pbm9yQXhpc1Bvc2l0aW9ucykgewog
ICAgICAgICBtaW5vckF4aXNJbmRleCA9IG1pbm9yQXhpc1Bvc2l0aW9ucy0+aW5pdGlhbFBvc2l0
aW9uSW5kZXg7CiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGF1dG9QbGFj
ZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSwgbWlub3JBeGlzSW5kZXgpOwotICAgICAgICBpZiAo
T3duUHRyPEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5
R3JpZEFyZWEoKSkgeworICAgICAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRl
PiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEoKSkgewogICAgICAg
ICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGdyaWRJdGVtLCBlbXB0eUdyaWRBcmVhLT5yb3dzLmlu
aXRpYWxQb3NpdGlvbkluZGV4LCBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLmluaXRpYWxQb3NpdGlv
bkluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzU1LDcgKzc1NSw3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChSZW5kZXJC
b3gqIGdyaWRJdGVtKQogICAgICAgICBjb25zdCBzaXplX3QgZW5kT2ZNYWpvckF4aXMgPSAoYXV0
b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMpID8gZ3JpZENvbHVt
bkNvdW50KCkgOiBncmlkUm93Q291bnQoKTsKICAgICAgICAgZm9yIChzaXplX3QgbWFqb3JBeGlz
SW5kZXggPSAwOyBtYWpvckF4aXNJbmRleCA8IGVuZE9mTWFqb3JBeGlzOyArK21ham9yQXhpc0lu
ZGV4KSB7CiAgICAgICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxh
Y2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc0luZGV4KTsKLSAgICAgICAgICAg
IGlmIChPd25QdHI8R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0
RW1wdHlHcmlkQXJlYSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEdyaWRD
b29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEoKSkg
ewogICAgICAgICAgICAgICAgIGluc2VydEl0ZW1JbnRvR3JpZChncmlkSXRlbSwgZW1wdHlHcmlk
QXJlYS0+cm93cy5pbml0aWFsUG9zaXRpb25JbmRleCwgZW1wdHlHcmlkQXJlYS0+Y29sdW1ucy5p
bml0aWFsUG9zaXRpb25JbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtODUzLDcgKzg1Myw3IEBAIEdyaWRTcGFuIFJlbmRlckdyaWQ6OnJlc29sdmVHcmlk
UG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihjb25zdCBSZW5kZXJCCiAgICAgcmV0
dXJuIEdyaWRTcGFuKGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKTsKIH0KIAotUGFz
c093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoY29uc3QgUmVuZGVyQm94KiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiBncmlkSXRlbSwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBHcmlk
UG9zaXRpb24mIGluaXRpYWxQb3NpdGlvbiA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBn
cmlkSXRlbS0+c3R5bGUoKS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBncmlkSXRlbS0+c3R5bGUo
KS5ncmlkSXRlbVJvd1N0YXJ0KCk7CiAgICAgY29uc3QgR3JpZFBvc2l0aW9uU2lkZSBpbml0aWFs
UG9zaXRpb25TaWRlID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IENvbHVtblN0YXJ0U2lk
ZSA6IFJvd1N0YXJ0U2lkZTsKQEAgLTg2NSw3ICs4NjUsNyBAQCBQYXNzT3duUHRyPEdyaWRTcGFu
PiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJC
b3gqCiAKICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bw
b3NpdGVQb3NpdGlvbigpICYmIGZpbmFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RP
cHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgaWYgKHN0eWxlKCkuZ3JpZEF1dG9GbG93KCkg
PT0gQXV0b0Zsb3dOb25lKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmlkU3Bh
bigwLCAwKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4o
MCwgMCk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgZ2V0IG91ciBncmlkIHBvc2l0aW9ucyB3aXRo
b3V0IHJ1bm5pbmcgdGhlIGF1dG8gcGxhY2VtZW50IGFsZ29yaXRobS4KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC04OTAsNyArODkwLDcgQEAgUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVy
R3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KgogICAg
IGlmIChyZXNvbHZlZEZpbmFsUG9zaXRpb24gPCByZXNvbHZlZEluaXRpYWxQb3NpdGlvbikKICAg
ICAgICAgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb247CiAK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyaWRTcGFuKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9u
LCByZXNvbHZlZEZpbmFsUG9zaXRpb24pKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmlkU3Bhbj4ocmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHJlc29sdmVkRmluYWxQb3NpdGlvbik7
CiB9CiAKIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJv
bVN0eWxlKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lk
ZSkgY29uc3QKQEAgLTk2NSwxMCArOTY1LDEwIEBAIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZl
R3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBv
c2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25T
aWRlIHNpZGUpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJl
c29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRp
b25TaWRlIHNpZGUpIGNvbnN0CiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzQXV0bygpKQotICAgICAg
ICByZXR1cm4gR3JpZFNwYW46OmNyZWF0ZShyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdy
aWRTcGFuPihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
bik7CiAKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVChwb3NpdGlv
bi5zcGFuUG9zaXRpb24oKSA+IDApOwpAQCAtOTgzLDEzICs5ODMsMTMgQEAgUGFzc093blB0cjxH
cmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKHNpemUKICAgICBzaXplX3QgcG9zaXRpb25PZmZzZXQgPSBwb3NpdGlvbi5zcGFuUG9z
aXRpb24oKSAtIDE7CiAgICAgaWYgKHNpZGUgPT0gQ29sdW1uU3RhcnRTaWRlIHx8IHNpZGUgPT0g
Um93U3RhcnRTaWRlKSB7CiAgICAgICAgIHNpemVfdCBpbml0aWFsUmVzb2x2ZWRQb3NpdGlvbiA9
IHN0ZDo6bWF4PGludD4oMCwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uIC0gcG9zaXRpb25PZmZz
ZXQpOwotICAgICAgICByZXR1cm4gR3JpZFNwYW46OmNyZWF0ZShpbml0aWFsUmVzb2x2ZWRQb3Np
dGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R3JpZFNwYW4+KGluaXRpYWxSZXNvbHZlZFBvc2l0aW9uLCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24pOwogICAgIH0KIAotICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uICsgcG9zaXRpb25P
ZmZzZXQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRTcGFuPihyZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiArIHBvc2l0aW9uT2Zmc2V0
KTsKIH0KIAotUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZU5hbWVkR3Jp
ZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNp
ZGUgc2lkZSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVz
b2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCBy
ZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdy
aWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QKIHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFu
KCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKQEAg
LTEwMDIsNyArMTAwMiw3IEBAIFBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29s
dmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpCiAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gbmFtZWQgZ3JpZCBsaW5lIG9mIHRoYXQgbmFtZSwgd2UgcmVzb2x2ZSB0aGUgcG9z
aXRpb24gdG8gJ2F1dG8nICh3aGljaCBpcyBlcXVpdmFsZW50IHRvICdzcGFuIDEnIGluIHRoaXMg
Y2FzZSkuCiAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEzSnVuLzAzOTQuaHRtbC4KICAgICBpZiAoaXQgPT0gZ3JpZExpbmVzTmFtZXMu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQ
b3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JpZFNwYW4+KHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uKTsKIAogICAgIGlmIChzaWRlID09IFJvd1N0YXJ0U2lkZSB8fCBzaWRl
ID09IENvbHVtblN0YXJ0U2lkZSkKICAgICAgICAgcmV0dXJuIHJlc29sdmVSb3dTdGFydENvbHVt
blN0YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24ocmVzb2x2
ZWRPcHBvc2l0ZVBvc2l0aW9uLCBwb3NpdGlvbiwgaXQtPnZhbHVlKTsKQEAgLTEwMTAsNyArMTAx
MCw3IEBAIFBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVOYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpCiAgICAgcmV0dXJuIHJlc29sdmVSb3dFbmRD
b2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihyZXNv
bHZlZE9wcG9zaXRlUG9zaXRpb24sIHBvc2l0aW9uLCBpdC0+dmFsdWUpOwogfQogCi1QYXNzT3du
UHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVk
R3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3Rv
cjxzaXplX3Q+JiBncmlkTGluZXMpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IFJl
bmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwg
Y29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGdyaWRM
aW5lcykgY29uc3QKIHsKICAgICAvLyBUaGUgZ3JpZCBsaW5lIGluZXF1YWxpdHkgbmVlZHMgdG8g
YmUgc3RyaWN0ICh3aGljaCBkb2Vzbid0IG1hdGNoIHRoZSBhZnRlciAvIGVuZCBjYXNlKSBiZWNh
dXNlIHxyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb258CiAgICAgLy8gaXMgYWxyZWFkeSBjb252ZXJ0
ZWQgdG8gYW4gaW5kZXggaW4gb3VyIGdyaWQgcmVwcmVzZW50YXRpb24gKGllIG9uZSB3YXMgcmVt
b3ZlZCBmcm9tIHRoZSBncmlkIGxpbmUgdG8gYWNjb3VudCBmb3IgdGhlIHNpZGUpLgpAQCAtMTAy
MywxMCArMTAyMywxMCBAQCBQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZl
Um93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbgogICAgIHNpemVfdCByZXNv
bHZlZEdyaWRMaW5lUG9zaXRpb24gPSBncmlkTGluZXNbZ3JpZExpbmVJbmRleF07CiAgICAgaWYg
KHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA+IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbikKICAg
ICAgICAgcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0gcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9u
OwotICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiwg
cmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmlkU3Bhbj4ocmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b24pOwogfQogCi1QYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlUm93RW5k
Q29sdW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6
ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykgY29uc3QKK3N0ZDo6dW5pcXVlX3B0
cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExp
bmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXpl
X3Q+JiBncmlkTGluZXMpIGNvbnN0CiB7CiAgICAgc2l6ZV90IGZpcnN0TGluZUFmdGVyT3Bwb3Np
dGVQb3NpdGlvbkluZGV4ID0gZ3JpZExpbmVzLnNpemUoKSAtIDE7CiAgICAgY29uc3Qgc2l6ZV90
KiBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb24gPSBzdGQ6OnVwcGVyX2JvdW5kKGdyaWRM
aW5lcy5iZWdpbigpLCBncmlkTGluZXMuZW5kKCksIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7
CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBQYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpy
ZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaQogICAgIHNpemVf
dCByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPSBHcmlkUG9zaXRpb246OmFkanVzdEdyaWRQb3Np
dGlvbkZvclJvd0VuZENvbHVtbkVuZFNpZGUoZ3JpZExpbmVzW2dyaWRMaW5lSW5kZXhdKTsKICAg
ICBpZiAocmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uIDwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9u
KQogICAgICAgICByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPSByZXNvbHZlZE9wcG9zaXRlUG9z
aXRpb247Ci0gICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uLCByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24pOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyaWRTcGFuPihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29sdmVkR3JpZExpbmVQ
b3NpdGlvbik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9y
Q2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGQ3NTEzOTM4MThiMzg3MThlMTQ5OWQ1ZDg1
YWJhM2NhODM0Zjc2YTMuLjdjMGZmNzE2ZmFiNGMzYmNmYWYwNjZiZjY4OTVjMWRjMmVkZDA5OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMTExLDEzICsxMTEsMTMg
QEAgcHJpdmF0ZToKICAgICBHcmlkQ29vcmRpbmF0ZSBjYWNoZWRHcmlkQ29vcmRpbmF0ZShjb25z
dCBSZW5kZXJCb3gqKSBjb25zdDsKIAogICAgIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gqLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHNpemVfdCkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bhbj4gcmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29s
dmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCosIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CiAgICAgc2l6ZV90IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRp
b25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7
CiAgICAgc2l6ZV90IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0
aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bhbj4g
cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZl
ZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIEdyaWRQb3NpdGlvblNpZGUp
IGNvbnN0OwotICAgIFBhc3NPd25QdHI8R3JpZFNwYW4+IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKSBjb25zdDsKLSAgICBQ
YXNzT3duUHRyPEdyaWRTcGFuPiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExp
bmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JikgY29u
c3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bhbj4gcmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVk
R3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlR3JpZFBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
biwgY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5z
dE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3Qg
R3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEdyaWRTcGFuPiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JikgY29uc3Q7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRH
cmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bw
b3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9yPHNpemVfdD4m
KSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8
R3JpZFRyYWNrPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuaAppbmRleCA1MTk4MDhmNWJhYTdlMGQ5NWQyYWJlNjdmN2Y4YTVlMmMy
NDA1NDMyLi5mMTgyZDMzOTYzOTJlOTRiYWFjOTcxZDI3Y2Q3NmVjMzIwZWM5ZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjBjZjYwNzU5YjE4MDU5ZjUzY2JlOWNhNzcxN2YzMjE5
MDYyODZiNy4uMTVjZmFmYmI5YzBmZDhhMmFiNTg5YzE4ODhlOTk5YjUwZjk5YTkyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02MTUsOCArNjE1LDggQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCkKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJU
KCFtX3pPcmRlckxpc3RzRGlydHkpOwogCi0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
PiBwb3NaT3JkZXJMaXN0OwotICAgIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4gbmVnWk9y
ZGVyTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IHBvc1pP
cmRlckxpc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiBuZWda
T3JkZXJMaXN0OwogICAgIHJlYnVpbGRaT3JkZXJMaXN0cyhTdG9wQXRTdGFja2luZ0NvbnRleHRz
LCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKIAogICAgIC8vIENyZWF0ZSBhIHJldmVy
c2UgbG9va3VwLgpAQCAtODQ2LDEyICs4NDYsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
VHJhbnNmb3JtKCkKICAgICBib29sIGhhc1RyYW5zZm9ybSA9IHJlbmRlcmVyKCkuaGFzVHJhbnNm
b3JtKCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLmhhc1RyYW5zZm9ybSgpOwogICAgIGJvb2wgaGFk
M0RUcmFuc2Zvcm0gPSBoYXMzRFRyYW5zZm9ybSgpOwogCi0gICAgYm9vbCBoYWRUcmFuc2Zvcm0g
PSBtX3RyYW5zZm9ybTsKKyAgICBib29sIGhhZFRyYW5zZm9ybSA9ICEhbV90cmFuc2Zvcm07CiAg
ICAgaWYgKGhhc1RyYW5zZm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKGhhc1Ry
YW5zZm9ybSkKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9y
bWF0aW9uTWF0cml4KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90
cmFuc2Zvcm0uY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbnVsbHB0cjsKICAg
ICAgICAgCiAgICAgICAgIC8vIExheWVycyB3aXRoIHRyYW5zZm9ybXMgYWN0IGFzIGNsaXAgcmVj
dHMgcm9vdHMsIHNvIGNsZWFyIHRoZSBjYWNoZWQgY2xpcCByZWN0cyBoZXJlLgogICAgICAgICBj
bGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CkBAIC0zOTAyLDcgKzM5MDIsNyBA
QCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCi1Q
YXNzT3duUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBSZW5kZXJMYXllcjo6c2V0dXBG
aWx0ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50
aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IExheW91dFBvaW50JiBv
ZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290
UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzLCBjb25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3Qm
IHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7
CiAgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0zOTE1LDcgKzM5MTUsNyBAQCBQYXNzT3duUHRyPEZpbHRlckVmZmVjdFJlbmRl
cmVySGVscGVyPiBSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dAogICAg
IGlmICghaGFzUGFpbnRlZEZpbHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBP
d25QdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBhZG9wdFB0
cihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIoaGFzUGFpbnRlZEZpbHRlcikpOworICAg
IGF1dG8gZmlsdGVyUGFpbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRWZmZWN0UmVuZGVy
ZXJIZWxwZXI+KGhhc1BhaW50ZWRGaWx0ZXIpOwogICAgIGlmICghZmlsdGVyUGFpbnRlci0+aGF2
ZUZpbHRlckVmZmVjdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTM5NDIs
NyArMzk0Miw3IEBAIFBhc3NPd25QdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRl
ckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0CiAgICAgICAgIC8vIE90aGVyd2lz
ZSwgaWYgZm9yIGV4YW1wbGUgdGhpcyBsYXllciBoYXMgb3ZlcmZsb3c6aGlkZGVuLCBhIGRyb3Ag
c2hhZG93IHdpbGwgbm90IGNvbXB1dGUgY29ycmVjdGx5LgogICAgICAgICAvLyBOb3RlIHRoYXQg
d2Ugd2lsbCBzdGlsbCBhcHBseSB0aGUgY2xpcHBpbmcgb24gdGhlIGZpbmFsIHJlbmRlcmluZyBv
ZiB0aGUgZmlsdGVyLgogICAgICAgICBwYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ID0gIWZp
bHRlckluZm8tPnJlbmRlcmVyKCktPmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwotICAgICAg
ICByZXR1cm4gZmlsdGVyUGFpbnRlci5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1v
dmUoZmlsdGVyUGFpbnRlcik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtNDA0
Nyw3ICs0MDQ3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKIAogICAgIEdyYXBoaWNzQ29u
dGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCi0gICAgT3duUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0ZXJQ
YWludGVyID0gc2V0dXBGaWx0ZXJzKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEZs
YWdzLCBvZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3Vu
ZHNDb21wdXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVs
cGVyPiBmaWx0ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzLCBvZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290
UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKICAgICAg
ICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRlckNvbnRleHQoKTsKICAgICAgICAgaWYg
KGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kp
IHsKQEAgLTQxMzUsNyArNDEzNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogICAgIGlmIChmaWx0ZXJQYWludGVyKSB7CiAgICAgICAgIGNvbnRl
eHQgPSBhcHBseUZpbHRlcnMoZmlsdGVyUGFpbnRlci5nZXQoKSwgdHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbGF5ZXJGcmFnbWVudHMpOwotICAgICAgICBmaWx0
ZXJQYWludGVyLmNsZWFyKCk7CisgICAgICAgIGZpbHRlclBhaW50ZXIgPSBudWxscHRyOwogICAg
IH0KICNlbmRpZgogICAgIApAQCAtNDU0NywxNiArNDU0NywxNiBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgR3Jh
cGhpY3NDbwogICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5ld1RyYW5zZm9y
bShvbGRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIG5ld1RyYW5zZm9ybS50cmFuc2xhdGVS
aWdodChyb3VuZFRvSW50KG9mZnNldC53aWR0aCgpKSwgcm91bmRUb0ludChvZmZzZXQuaGVpZ2h0
KCkpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3Ry
YW5zZm9ybSA9IGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeChuZXdUcmFuc2Zvcm0p
KTsKKyAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG5ld1RyYW5zZm9ybSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgTGF5ZXJQYWludGluZ0luZm8gbG9jYWxQYWludGluZ0luZm8o
cGFpbnRpbmdJbmZvKTsKICAgICAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mby5wYWludERp
cnR5UmVjdCA9IGxvY2FsRGlydHlSZWN0OwogICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPnBh
aW50TGF5ZXIoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG9sZEhhc1RyYW5zZm9ybSkKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRMYXllci0+bV90cmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgo
b2xkVHJhbnNmb3JtKSk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNm
b3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4ob2xkVHJhbnNmb3Jt
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXIt
Pm1fdHJhbnNmb3JtLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1f
dHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gQWRqdXN0IHRoZSB0cmFuc2Zvcm0gc3VjaCB0aGF0IHRoZSByZW5kZXJlcidzIHVwcGVy
IGxlZnQgY29ybmVyIHdpbGwgcGFpbnQgYXQgKDAsMCkgaW4gdXNlciBzcGFjZS4KICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGludm9sdmVzIHN1YnRyYWN0aW5nIG91dCB0aGUgcG9zaXRpb24gb2Yg
dGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UuCkBAIC01MjAxLDEyICs1
MjAxLDEyIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdENoaWxkTGF5ZXJDb2x1
bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kCiAgICAgICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbmV3VHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CiAgICAgICAgICAgICAg
ICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0KG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVp
Z2h0KCkpOwogCi0gICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBhZG9w
dFB0cihuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgobmV3VHJhbnNmb3JtKSk7CisgICAgICAgICAg
ICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4PihuZXdUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIGhpdExheWVyID0g
Y2hpbGRMYXllci0+aGl0VGVzdExheWVyKHJvb3RMYXllciwgY29sdW1uTGF5ZXJzWzBdLCByZXF1
ZXN0LCByZXN1bHQsIGxvY2FsQ2xpcFJlY3QsIGhpdFRlc3RMb2NhdGlvbiwgZmFsc2UsIHRyYW5z
Zm9ybVN0YXRlLCB6T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAob2xkSGFzVHJhbnNmb3Jt
KQotICAgICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IGFkb3B0UHRy
KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeChvbGRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4PihvbGRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0uY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBudWxscHRyOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgdGhlIHRyYW5zZm9ybSBzdWNo
IHRoYXQgdGhlIHJlbmRlcmVyJ3MgdXBwZXIgbGVmdCBjb3JuZXIgd2lsbCBiZSBhdCAoMCwwKSBp
biB1c2VyIHNwYWNlLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgaW52b2x2ZXMgc3VidHJhY3Rp
bmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1cnJlbnQgY29vcmRpbmF0
ZSBzcGFjZS4KQEAgLTUyNjQsNyArNTI2NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNs
aXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0KQogICAgIGNh
bGN1bGF0ZUNsaXBSZWN0cyhjbGlwUmVjdHNDb250ZXh0LCBjbGlwUmVjdHMpOwogCiAgICAgaWYg
KCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gYWRvcHRQdHIo
bmV3IENsaXBSZWN0c0NhY2hlKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAKICAgICBpZiAocGFyZW50TGF5ZXIgJiYgcGFy
ZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVjdHNDb250ZXh0KSAmJiBjbGlwUmVjdHMgPT0gKnBh
cmVudExheWVyLT5jbGlwUmVjdHMoY2xpcFJlY3RzQ29udGV4dCkpCiAgICAgICAgIG1fY2xpcFJl
Y3RzQ2FjaGUtPnNldENsaXBSZWN0cyhjbGlwUmVjdHNUeXBlLCBjbGlwUmVjdHNDb250ZXh0LnJl
c3BlY3RPdmVyZmxvd0NsaXAsIHBhcmVudExheWVyLT5jbGlwUmVjdHMoY2xpcFJlY3RzQ29udGV4
dCkpOwpAQCAtNTg4OSw3ICs1ODg5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVj
dHMoQ2xpcFJlY3RzVHlwZSB0eXBlVG9DbGVhcikKIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVy
TGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5nKSB7Ci0gICAgICAg
IG1fYmFja2luZyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJMYXllckJhY2tpbmcoKnRoaXMpKTsKKyAg
ICAgICAgbV9iYWNraW5nID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0
aGlzKTsKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7
CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC01OTA2LDcgKzU5MDYsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjpjbGVhckJhY2tpbmcoYm9vbCBsYXllckJlaW5nRGVzdHJveWVkKQogewogICAg
IGlmIChtX2JhY2tpbmcgJiYgIXJlbmRlcmVyKCkuZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQog
ICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKCp0aGlzKTsKLSAg
ICBtX2JhY2tpbmcuY2xlYXIoKTsKKyAgICBtX2JhY2tpbmcgPSBudWxscHRyOwogCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogICAgIGlmICghbGF5ZXJCZWluZ0Rlc3Ryb3llZCkKQEAgLTYwODAs
NyArNjA4MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiAgICAg
bV96T3JkZXJMaXN0c0RpcnR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVp
bGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPj4mIHBvc1pPcmRlckxpc3QsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5
ZXIqPj4mIG5lZ1pPcmRlckxpc3QpCit2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlz
dHMoQ29sbGVjdExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PFJlbmRlckxheWVyKj4+JiBwb3NaT3JkZXJMaXN0LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4+JiBuZWdaT3JkZXJMaXN0KQogewogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxh
eWVycyA9IGNvbXBvc2l0b3IoKS5pbkNvbXBvc2l0aW5nTW9kZSgpOwogICAgIGZvciAoUmVuZGVy
TGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKQEAgLTYxMDYsNyArNjEwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5v
cm1hbEZsb3dMaXN0KCkKICAgICAgICAgLy8gSWdub3JlIG5vbi1vdmVyZmxvdyBsYXllcnMgYW5k
IHJlZmxlY3Rpb25zLgogICAgICAgICBpZiAoY2hpbGQtPmlzTm9ybWFsRmxvd09ubHkoKSAmJiAo
IW1fcmVmbGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9ub3JtYWxGbG93TGlzdCkKLSAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dM
aXN0ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZW5kZXJMYXllcio+KTsKKyAgICAgICAgICAgICAg
ICBtX25vcm1hbEZsb3dMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIq
Pj4oKTsKICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QtPmFwcGVuZChjaGlsZCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC02MTE0LDcgKzYxMTQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVOb3JtYWxGbG93TGlzdCgpCiAgICAgbV9ub3JtYWxGbG93TGlzdERpcnR5ID0gZmFsc2U7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5
ZXJzLCBDb2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVy
TGF5ZXIqPj4mIHBvc0J1ZmZlciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgbmVnQnVm
ZmVyKQordm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5M
YXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvciBiZWhhdmlvciwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxSZW5kZXJMYXllcio+PiYgcG9zQnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4+JiBuZWdCdWZmZXIpCiB7CiAgICAgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVu
dEZsYWdzKCk7CiAKQEAgLTYxMjMsMTEgKzYxMjMsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29s
bGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlv
cgogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVkZUhpZGRlbkxheWVycyB8fCAo
bV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiBpc1N0YWNr
aW5nKSk7CiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgp
KSB7CiAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBidWZmZXIgdGhlIGNoaWxkIHNob3VsZCBi
ZSBpbi4KLSAgICAgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgYnVmZmVyID0gKHpJ
bmRleCgpID49IDApID8gcG9zQnVmZmVyIDogbmVnQnVmZmVyOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBidWZmZXIgPSAoekluZGV4KCkgPj0gMCkgPyBw
b3NCdWZmZXIgOiBuZWdCdWZmZXI7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBidWZmZXIgaWYg
aXQgZG9lc24ndCBleGlzdCB5ZXQuCiAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAg
YnVmZmVyID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZW5kZXJMYXllcio+KTsKKyAgICAgICAgICAg
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAg
ICAgIAogICAgICAgICAvLyBBcHBlbmQgb3Vyc2VsdmVzIGF0IHRoZSBlbmQgb2YgdGhlIGFwcHJv
cHJpYXRlIGJ1ZmZlci4KICAgICAgICAgYnVmZmVyLT5hcHBlbmQodGhpcyk7CkBAIC02NTEwLDEx
ICs2NTEwLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAKICAgICBpZiAocmVuZGVyZXIo
KS5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9NQVJRVUVFICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5t
YXJxdWVlQmVoYXZpb3IoKSAhPSBNTk9ORSAmJiByZW5kZXJlcigpLmlzQm94KCkpIHsKICAgICAg
ICAgaWYgKCFtX21hcnF1ZWUpCi0gICAgICAgICAgICBtX21hcnF1ZWUgPSBhZG9wdFB0cihuZXcg
UmVuZGVyTWFycXVlZSh0aGlzKSk7CisgICAgICAgICAgICBtX21hcnF1ZWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOwogICAgICAgICBtX21hcnF1ZWUtPnVwZGF0ZU1h
cnF1ZWVTdHlsZSgpOwogICAgIH0KICAgICBlbHNlIGlmIChtX21hcnF1ZWUpIHsKLSAgICAgICAg
bV9tYXJxdWVlLmNsZWFyKCk7CisgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CiAgICAgfQog
CiAgICAgdXBkYXRlU2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2Uob2xkU3R5bGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAxYTE0YjI4NzJkMTQ1NDU5YzI1ZjFk
ZGNhYTIzYmFmODFiM2Q0MjllLi5iZmM0Zjk0YjQxZmQ2NWE5NjU4NmNiYjVlYmFiNDI0ZWRhYTBk
MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDksNyArNDks
NyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NjUsNyArODY1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVp
bGRaT3JkZXJMaXN0cygpOwotICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKENvbGxlY3RMYXll
cnNCZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYsIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPj4mKTsKKyAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5
ZXJzQmVoYXZpb3IsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mLCBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+Jik7CiAgICAgdm9pZCBjbGVhclpPcmRl
ckxpc3RzKCk7CiAKICAgICB2b2lkIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CkBAIC05MzMsNyAr
OTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFBvaW50IHJlbmRlckJveExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5pc0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVyZXIo
KSkubG9jYXRpb24oKSA6IExheW91dFBvaW50KCk7IH0KIAotICAgIHZvaWQgY29sbGVjdExheWVy
cyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvciwgT3duUHRy
PFZlY3RvcjxSZW5kZXJMYXllcio+PiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mKTsK
KyAgICB2b2lkIGNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBDb2xsZWN0
TGF5ZXJzQmVoYXZpb3IsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mLCBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+Jik7CiAKICAgICB2b2lkIHVwZGF0
ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKQEAgLTk2MSw3ICs5NjEsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhp
Y3NDb250ZXh0KiwgYm9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAgICAgYm9vbCBzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMs
IGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0gICAgUGFzc093blB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0
ZXJzKEdyYXBoaWNzQ29udGV4dCosIExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdz
LCBjb25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxh
dGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBo
aWNzQ29udGV4dCosIExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBM
YXlvdXRQb2ludCYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5k
cywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogICAgIEdyYXBoaWNzQ29udGV4
dCogYXBwbHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiwgR3JhcGhpY3NDb250
ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiwgTGF5ZXJGcmFnbWVudHMm
KTsKICNlbmRpZgogCkBAIC0xMjgyLDI0ICsxMjgyLDI0IEBAIHByaXZhdGU6CiAgICAgLy8gZGVz
Y2VuZGFudCBsYXllcnMgd2l0aGluIHRoZSBzdGFja2luZyBjb250ZXh0IHRoYXQgaGF2ZSB6LWlu
ZGljZXMgb2YgMCBvciBncmVhdGVyCiAgICAgLy8gKGF1dG8gd2lsbCBjb3VudCBhcyAwKS4gIG1f
bmVnWk9yZGVyTGlzdCBob2xkcyBkZXNjZW5kYW50cyB3aXRoaW4gb3VyIHN0YWNraW5nIGNvbnRl
eHQgd2l0aCBuZWdhdGl2ZQogICAgIC8vIHotaW5kaWNlcy4KLSAgICBPd25QdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4+IG1fcG9zWk9yZGVyTGlzdDsKLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4+IG1fbmVnWk9yZGVyTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+IG1fcG9zWk9yZGVyTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4+IG1fbmVnWk9yZGVyTGlzdDsKIAogICAgIC8vIFRoaXMgbGlzdCBjb250YWlu
cyBjaGlsZCBsYXllcnMgdGhhdCBjYW5ub3QgY3JlYXRlIHN0YWNraW5nIGNvbnRleHRzLiAgRm9y
IG5vdyBpdCBpcyBqdXN0CiAgICAgLy8gb3ZlcmZsb3cgbGF5ZXJzLCBidXQgdGhhdCBtYXkgY2hh
bmdlIGluIHRoZSBmdXR1cmUuCi0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiBtX25v
cm1hbEZsb3dMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4g
bV9ub3JtYWxGbG93TGlzdDsKIAotICAgIE93blB0cjxDbGlwUmVjdHNDYWNoZT4gbV9jbGlwUmVj
dHNDYWNoZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xpcFJlY3RzQ2FjaGU+IG1fY2xpcFJlY3Rz
Q2FjaGU7CiAgICAgCiAgICAgSW50UG9pbnQgbV9jYWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0
OwogCi0gICAgT3duUHRyPFJlbmRlck1hcnF1ZWU+IG1fbWFycXVlZTsgLy8gVXNlZCBieSBsYXll
cnMgd2l0aCBvdmVyZmxvdzptYXJxdWVlCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlck1hcnF1
ZWU+IG1fbWFycXVlZTsgLy8gVXNlZCBieSBsYXllcnMgd2l0aCBvdmVyZmxvdzptYXJxdWVlCiAg
ICAgCiAgICAgLy8gQ2FjaGVkIG5vcm1hbCBmbG93IHZhbHVlcyBmb3IgYWJzb2x1dGUgcG9zaXRp
b25lZCBlbGVtZW50cyB3aXRoIHN0YXRpYyBsZWZ0L3RvcCB2YWx1ZXMuCiAgICAgTGF5b3V0VW5p
dCBtX3N0YXRpY0lubGluZVBvc2l0aW9uOwogICAgIExheW91dFVuaXQgbV9zdGF0aWNCbG9ja1Bv
c2l0aW9uOwogCi0gICAgT3duUHRyPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBtX3RyYW5zZm9ybTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG1fdHJhbnNmb3JtOwog
ICAgIAogICAgIC8vIE1heSB1bHRpbWF0ZWx5IGJlIGV4dGVuZGVkIHRvIG1hbnkgcmVwbGljYXMg
KHdpdGggdGhlaXIgb3duIHBhaW50IG9yZGVyKS4KICAgICBSZW5kZXJQdHI8UmVuZGVyUmVwbGlj
YT4gbV9yZWZsZWN0aW9uOwpAQCAtMTMxMyw3ICsxMzEzLDcgQEAgcHJpdmF0ZToKIAogICAgIElu
dFJlY3QgbV9ibG9ja1NlbGVjdGlvbkdhcHNCb3VuZHM7CiAKLSAgICBPd25QdHI8UmVuZGVyTGF5
ZXJCYWNraW5nPiBtX2JhY2tpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheWVyQmFj
a2luZz4gbV9iYWNraW5nOwogCiAgICAgY2xhc3MgRmlsdGVySW5mbzsKIH07CkBAIC0xMzIyLDgg
KzEzMjIsOCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCiB7
CiAgICAgQVNTRVJUKCFpc1N0YWNraW5nQ29udGFpbmVyKCkpOwogCi0gICAgbV9wb3NaT3JkZXJM
aXN0LmNsZWFyKCk7Ci0gICAgbV9uZWdaT3JkZXJMaXN0LmNsZWFyKCk7CisgICAgbV9wb3NaT3Jk
ZXJMaXN0ID0gbnVsbHB0cjsKKyAgICBtX25lZ1pPcmRlckxpc3QgPSBudWxscHRyOwogfQogCiBp
bmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlWk9yZGVyTGlzdHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmZWJh
ODQyNmM3MzFiNjc4ZTQ1NTgzNGU4NDQwMGI5ZDcyYjZmOTA4Li45Mzg4MjQyM2MzZDU0ZDZlNDA5
ZjVlOTAxMjMyMjQzMDVlYTE2NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQog
ICAgICAgICAgICAgZGlzcGxheUlEID0gcGFnZS0+Y2hyb21lKCkuZGlzcGxheUlEKCk7CiAKLSAg
ICAgICAgbV9sYXllclVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NMYXllclVwZGF0ZXIo
dGhpcywgZGlzcGxheUlEKSk7CisgICAgICAgIG1fbGF5ZXJVcGRhdGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4odGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAg
CiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC0zNTM3LDcgKzM1Mzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRM
YXllcihSZW5kZXJMYXllciYgbGF5ZXIpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCi10eXBlZGVm
IEhhc2hNYXA8UGxhdGZvcm1MYXllciosIE93blB0cjxWaWV3cG9ydENvbnN0cmFpbnRzPj4gTGF5
ZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1MYXllciosIHN0ZDo6dW5pcXVlX3B0cjxW
aWV3cG9ydENvbnN0cmFpbnRzPj4gTGF5ZXJNYXA7CiB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1M
YXllciosIFBsYXRmb3JtTGF5ZXIqPiBTdGlja3lDb250YWluZXJNYXA7CiAKIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQpA
QCAtMzU2OSw3ICszNTY5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVy
QWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycygpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGxheWVyTWFwLmFkZChsYXllci5iYWNraW5nKCktPmdyYXBo
aWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBhZG9wdFB0cihjb25zdHJhaW50cy5yZWxlYXNl
KCkpKTsKKyAgICAgICAgbGF5ZXJNYXAuYWRkKGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXll
cigpLT5wbGF0Zm9ybUxheWVyKCksIHN0ZDo6bW92ZShjb25zdHJhaW50cykpOwogICAgIH0KICAg
ICAKICAgICBpZiAoQ2hyb21lQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jaHJvbWVDbGllbnQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApp
bmRleCA2MDZlMGI3ZWQ1NmVmZDQyOWI5N2UyNzM1ODY5ZmJlYjU5MzlkMzYyLi5lZmQxZjk1MmE5
OTk0OWZiYjYyNDU0YjU4MGJmOGMyZGM3NTQyODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC01MDAsNyArNTAwLDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvckZvb3Rl
cjsKICNlbmRpZgogCi0gICAgT3duUHRyPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPiBtX2xheWVyVXBk
YXRlcjsgLy8gVXBkYXRlcyB0aWxlZCBsYXllciB2aXNpYmxlIGFyZWEgcGVyaW9kaWNhbGx5IHdo
aWxlIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
TGF5ZXJVcGRhdGVyPiBtX2xheWVyVXBkYXRlcjsgLy8gVXBkYXRlcyB0aWxlZCBsYXllciB2aXNp
YmxlIGFyZWEgcGVyaW9kaWNhbGx5IHdoaWxlIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCiAKICAg
ICBUaW1lcjxSZW5kZXJMYXllckNvbXBvc2l0b3I+IG1fbGF5ZXJGbHVzaFRpbWVyOwogICAgIGJv
b2wgbV9sYXllckZsdXNoVGhyb3R0bGluZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCmluZGV4IDRjMzk0MzJlNzUyOTYz
NjBjMGVlYTc5MDIxMGU5ZjY2ODhjMzYyOWYuLmYxNmVhMWJmZDgxZmIxOWUxMTJkYzg0ZmQzNDYz
Y2Y2MmM1YTlmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlckluZm8uY3BwCkBAIC00Myw5ICs0Myw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIE93blB0cjxSZW5kZXJMYXllcjo6Rmls
dGVySW5mbz4+JiBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6bWFwKCkKK0hhc2hNYXA8Y29uc3Qg
UmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyTGF5ZXI6OkZpbHRlckluZm8+PiYg
UmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBPd25QdHI8RmlsdGVySW5mbz4+PiBtYXA7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBz
dGQ6OnVuaXF1ZV9wdHI8RmlsdGVySW5mbz4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApA
QCAtNjAsOSArNjAsOSBAQCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbyYgUmVuZGVyTGF5ZXI6OkZp
bHRlckluZm86OmdldChSZW5kZXJMYXllciYgbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGxheWVyLm1f
aGFzRmlsdGVySW5mbyA9PSBtYXAoKS5jb250YWlucygmbGF5ZXIpKTsKIAotICAgIE93blB0cjxG
aWx0ZXJJbmZvPiYgaW5mbyA9IG1hcCgpLmFkZCgmbGF5ZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBhdXRvJiBpbmZvID0gbWFwKCkuYWRkKCZsYXllciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghaW5mbykgewotICAgICAgICBpbmZvID0gYWRvcHRQdHIobmV3
IEZpbHRlckluZm8obGF5ZXIpKTsKKyAgICAgICAgaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
dGVySW5mbz4obGF5ZXIpOwogICAgICAgICBsYXllci5tX2hhc0ZpbHRlckluZm8gPSB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gKmluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5kZXggZDgyZDYzYjM3OTYzZTJlZjQ4MWEzYzIyOTA1
NDg0MmJjZGViYTA5MC4uZTA4YjBkMzI0ODE0YWJjYTViNjg5ZTY0OTMzYzExNThkODAwN2NkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8u
aApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRl
ckxheWVyKiwgT3duUHRyPEZpbHRlckluZm8+PiYgbWFwKCk7CisgICAgc3RhdGljIEhhc2hNYXA8
Y29uc3QgUmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVySW5mbz4+JiBtYXAoKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDJjNGU1NjY3ZTUxNjkz
MjZlYWMwYmZlZDcyNjNjZDFkYmE4MTJhMDMuLjYwYTk0YmVjMjRiODY3ZGE3Nzg5ZTFhMGVkNmI1
YzBlYTU4ZWNiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJSZWdpb246
OnNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiB7CiAgICAgQVNT
RVJUKGlzVmFsaWQoKSk7CiAKLSAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveElu
Zm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgYWRvcHRQdHIobmV3IFJlbmRlckJv
eFJlZ2lvbkluZm8obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5p
bmdCbG9ja0NoYWluSXNJbnNldCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZv
LmFkZChib3gsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQm94UmVnaW9uSW5mbz4obG9naWNhbExl
ZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIAotT3duUHRy
PFJlbmRlckJveFJlZ2lvbkluZm8+IFJlbmRlclJlZ2lvbjo6dGFrZVJlbmRlckJveFJlZ2lvbklu
Zm8oY29uc3QgUmVuZGVyQm94KiBib3gpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94UmVnaW9u
SW5mbz4gUmVuZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJC
b3gqIGJveCkKIHsKICAgICByZXR1cm4gbV9yZW5kZXJCb3hSZWdpb25JbmZvLnRha2UoYm94KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCBhNGVmNmJlODg4
NzYzNDg4MTNiODM4ZjBiN2FjOTI2ZmYxNmNlNzQ5Li41MmM3MTkyMjU1MWJiMmU2NDViMTA2ZDA0
NTMzMjQ2YmRkZTVlNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVk
ZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDcgKzcxLDcg
QEAgcHVibGljOgogICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIHJlbmRlckJveFJlZ2lvbkluZm8o
Y29uc3QgUmVuZGVyQm94KikgY29uc3Q7CiAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogc2V0UmVu
ZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0
SW5zZXQsIExheW91dFVuaXQgbG9naWNhbFJpZ2h0SW5zZXQsCiAgICAgICAgIGJvb2wgY29udGFp
bmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KTsKLSAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4g
dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94Kik7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IHRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0
IFJlbmRlckJveCopOwogICAgIHZvaWQgcmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBS
ZW5kZXJCb3gqKTsKIAogICAgIHZvaWQgZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpA
QCAtMTcyLDcgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gQSBSZW5kZXJCb3hSZWdpb25JbmZv
KiB0ZWxscyB1cyBhYm91dCBhbnkgbGF5b3V0IGluZm9ybWF0aW9uIGZvciBhIFJlbmRlckJveCB0
aGF0CiAgICAgLy8gaXMgdW5pcXVlIHRvIHRoZSByZWdpb24uIEZvciBub3cgaXQganVzdCBob2xk
cyBsb2dpY2FsIHdpZHRoIGluZm9ybWF0aW9uIGZvciBSZW5kZXJCbG9ja3MsIGJ1dCBldmVudHVh
bGx5CiAgICAgLy8gaXQgd2lsbCBhbHNvIGhvbGQgYSBjdXN0b20gc3R5bGUgZm9yIGFueSBib3gg
KGZvciByZWdpb24gc3R5bGluZykuCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJv
eCosIE93blB0cjxSZW5kZXJCb3hSZWdpb25JbmZvPj4gUmVuZGVyQm94UmVnaW9uSW5mb01hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckJveFJlZ2lvbkluZm8+PiBSZW5kZXJCb3hSZWdpb25JbmZvTWFwOwogICAgIFJlbmRlckJv
eFJlZ2lvbkluZm9NYXAgbV9yZW5kZXJCb3hSZWdpb25JbmZvOwogCiAgICAgYm9vbCBtX2lzVmFs
aWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggOTM0
YTNiMjgyNTUzMGRhNmFkMzU5MjZmMjVjZmY0MGZhOTQ1ZjU1Mi4uZjhmYzcyZDhjNjhhMzQ4NmJk
MmU0ZTgzNWFjYWVmM2ZhOTM5OGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCkBAIC0xMTEsOSArMTExLDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAg
ICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0
YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVk
IG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAg
ICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBURklYRUQgJiYgIXN0eWxlKCkubG9n
aWNhbFdpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gYWRvcHRQ
dHIobmV3IEZpeGVkVGFibGVMYXlvdXQodGhpcykpOworICAgICAgICAgICAgbV90YWJsZUxheW91
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBhZG9wdFB0cihuZXcgQXV0b1RhYmxlTGF5
b3V0KHRoaXMpKTsKKyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBj
aGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBhNDQ2ZTQ1OTEwZGQ5MmJhNDEyNjk4NWI0YmNk
YzU2MTFlOTgyNjMxLi40MDc4OGM4NDQ0MjFiZTRkYWNhNGNhZTEzYWU5ZjIxYmJlOGQzMWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDb2xsYXBzZWRCb3JkZXJW
YWx1ZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMzQs
NyArMzM1LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlbmRlclRhYmxlU2VjdGlvbiogbV9m
b290OwogICAgIG11dGFibGUgUmVuZGVyVGFibGVTZWN0aW9uKiBtX2ZpcnN0Qm9keTsKIAotICAg
IE93blB0cjxUYWJsZUxheW91dD4gbV90YWJsZUxheW91dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGFibGVMYXlvdXQ+IG1fdGFibGVMYXlvdXQ7CiAKICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZXMg
bV9jb2xsYXBzZWRCb3JkZXJzOwogICAgIGNvbnN0IENvbGxhcHNlZEJvcmRlclZhbHVlKiBtX2N1
cnJlbnRCb3JkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXgg
ODU3ODkzMDg2ODllZjM1ZDllZGRhZDkzMmQwMmMwZjc3ZDg1Y2RmMS4uZWMzZWJmYzYyNjJiN2Ex
Yjg1ZGM2MmMxZjA2MjYwMTI5ZTc5NmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyQWZ0ZXJQb3NpdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0CiAK
IEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQpIGNvbnN0CiB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIE93blB0
cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4+IFNl
bGVjdGlvbk1hcDsKICAgICBTZWxlY3Rpb25NYXAgc2VsZWN0ZWRPYmplY3RzOwogCiAgICAgUmVu
ZGVyT2JqZWN0KiBvcyA9IG1fc2VsZWN0aW9uU3RhcnQ7CkBAIC02ODAsMTMgKzY4MCwxMyBAQCBJ
bnRSZWN0IFJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250
ZW50KSBjb25zdAogICAgIHdoaWxlIChvcyAmJiBvcyAhPSBzdG9wKSB7CiAgICAgICAgIGlmICgo
b3MtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG9zID09IG1fc2VsZWN0aW9uU3RhcnQgfHwgb3Mg
PT0gbV9zZWxlY3Rpb25FbmQpICYmIG9zLT5zZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5v
bmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5n
IGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxs
LgotICAgICAgICAgICAgc2VsZWN0ZWRPYmplY3RzLnNldChvcywgYWRvcHRQdHIobmV3IFJlbmRl
clNlbGVjdGlvbkluZm8ob3MsIGNsaXBUb1Zpc2libGVDb250ZW50KSkpOworICAgICAgICAgICAg
c2VsZWN0ZWRPYmplY3RzLnNldChvcywgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPihvcywgY2xpcFRvVmlzaWJsZUNvbnRlbnQpKTsKICAgICAgICAgICAgIFJlbmRlckJsb2Nr
KiBjYiA9IG9zLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAh
Y2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgT3duUHRyPFJlbmRlclNlbGVj
dGlvbkluZm8+JiBibG9ja0luZm8gPSBzZWxlY3RlZE9iamVjdHMuYWRkKGNiLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNl
bGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBzZWxlY3RlZE9iamVjdHMuYWRkKGNiLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQ
dHIobmV3IFJlbmRlclNlbGVjdGlvbkluZm8oY2IsIGNsaXBUb1Zpc2libGVDb250ZW50KSk7Cisg
ICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rp
b25JbmZvPihjYiwgY2xpcFRvVmlzaWJsZUNvbnRlbnQpOwogICAgICAgICAgICAgICAgIGNiID0g
Y2ItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03ODYs
MTQgKzc4NiwxNCBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
IHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZQogICAgIGludCBvbGRFbmRQb3Mg
PSBtX3NlbGVjdGlvbkVuZFBvczsKIAogICAgIC8vIE9iamVjdHMgZWFjaCBoYXZlIGEgc2luZ2xl
IHNlbGVjdGlvbiByZWN0IHRvIGV4YW1pbmUuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9i
amVjdCosIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
ZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7CiAgICAgU2VsZWN0ZWRPYmplY3RNYXAg
b2xkU2VsZWN0ZWRPYmplY3RzOwogICAgIFNlbGVjdGVkT2JqZWN0TWFwIG5ld1NlbGVjdGVkT2Jq
ZWN0czsKIAogICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9iamVjdHMgYW5kIGZpbGwg
Z2FwcyBiZXR3ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmlnaHQsIG9yIGluIGJldHdl
ZW4gbGluZXMgYW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBnZXQgdGhlIHJlcGFpbnQg
cmVjdCByaWdodCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRsZSwgYW5kIHJpZ2h0IHJl
Y3RzIGluZGl2aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8gdGhlIHVuaW9uIG9mIHRo
b3NlIHJlY3RzIG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4gY2hhbmdlcyBoYXZlIG9j
Y3VycmVkLgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJCbG9jayosIE93blB0cjxSZW5kZXJC
bG9ja1NlbGVjdGlvbkluZm8+PiBTZWxlY3RlZEJsb2NrTWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxSZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+
PiBTZWxlY3RlZEJsb2NrTWFwOwogICAgIFNlbGVjdGVkQmxvY2tNYXAgb2xkU2VsZWN0ZWRCbG9j
a3M7CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBuZXdTZWxlY3RlZEJsb2NrczsKIApAQCAtODA0LDE0
ICs4MDQsMTQgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBz
dGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICB3aGlsZSAoY29udGludWVF
eHBsb3JpbmcpIHsKICAgICAgICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgb3Mg
PT0gbV9zZWxlY3Rpb25TdGFydCB8fCBvcyA9PSBtX3NlbGVjdGlvbkVuZCkgJiYgb3MtPnNlbGVj
dGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFy
ZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRo
ZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgotICAgICAgICAgICAgb2xkU2VsZWN0ZWRPYmpl
Y3RzLnNldChvcywgYWRvcHRQdHIobmV3IFJlbmRlclNlbGVjdGlvbkluZm8ob3MsIHRydWUpKSk7
CisgICAgICAgICAgICBvbGRTZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclNlbGVjdGlvbkluZm8+KG9zLCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAoYmxvY2tS
ZXBhaW50TW9kZSA9PSBSZXBhaW50TmV3WE9ST2xkKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVy
QmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgICAgIHdoaWxl
IChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE93blB0
cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBvbGRTZWxlY3RlZEJsb2Nr
cy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG9s
ZFNlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJC
bG9ja1NlbGVjdGlvbkluZm8oY2IpKTsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KGNiKTsKICAgICAgICAg
ICAgICAgICAgICAgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtODYwLDEzICs4NjAsMTMgQEAgdm9pZCBSZW5kZXJWaWV3Ojpz
ZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmpl
Y3QqIGUKICAgICBjb250aW51ZUV4cGxvcmluZyA9IG8gJiYgKG8gIT0gc3RvcCk7CiAgICAgd2hp
bGUgKGNvbnRpbnVlRXhwbG9yaW5nKSB7CiAgICAgICAgIGlmICgoby0+Y2FuQmVTZWxlY3Rpb25M
ZWFmKCkgfHwgbyA9PSBzdGFydCB8fCBvID09IGVuZCkgJiYgby0+c2VsZWN0aW9uU3RhdGUoKSAh
PSBTZWxlY3Rpb25Ob25lKSB7Ci0gICAgICAgICAgICBuZXdTZWxlY3RlZE9iamVjdHMuc2V0KG8s
IGFkb3B0UHRyKG5ldyBSZW5kZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpKSk7CisgICAgICAgICAg
ICBuZXdTZWxlY3RlZE9iamVjdHMuc2V0KG8sIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0
aW9uSW5mbz4obywgdHJ1ZSkpOwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gby0+Y29u
dGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZp
ZXcoKSkgewotICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+
JiBibG9ja0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxl
Y3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNiLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQ
dHIobmV3IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyhjYikpOworICAgICAgICAgICAgICAgIGJs
b2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPihjYik7
CiAgICAgICAgICAgICAgICAgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTExMDMsNyArMTEwMyw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNl
c0NvbXBvc2l0aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6
Y29tcG9zaXRvcigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9z
aXRvciA9IGFkb3B0UHRyKG5ldyBSZW5kZXJMYXllckNvbXBvc2l0b3IoKnRoaXMpKTsKKyAgICAg
ICAgbV9jb21wb3NpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckNvbXBvc2l0b3I+
KCp0aGlzKTsKIAogICAgIHJldHVybiAqbV9jb21wb3NpdG9yOwogfQpAQCAtMTEzNCw3ICsxMTM0
LDcgQEAgYm9vbCBSZW5kZXJWaWV3OjpjaGVja1R3b1Bhc3NMYXlvdXRGb3JBdXRvSGVpZ2h0UmVn
aW9ucygpIGNvbnN0CiBGbG93VGhyZWFkQ29udHJvbGxlciYgUmVuZGVyVmlldzo6Zmxvd1RocmVh
ZENvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mbG93VGhyZWFkQ29udHJvbGxlcikKLSAgICAg
ICAgbV9mbG93VGhyZWFkQ29udHJvbGxlciA9IEZsb3dUaHJlYWRDb250cm9sbGVyOjpjcmVhdGUo
dGhpcyk7CisgICAgICAgIG1fZmxvd1RocmVhZENvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb3dUaHJlYWRDb250cm9sbGVyPih0aGlzKTsKIAogICAgIHJldHVybiAqbV9mbG93VGhyZWFk
Q29udHJvbGxlcjsKIH0KQEAgLTExNzMsNyArMTE3Myw3IEBAIEludGVydmFsQXJlbmEqIFJlbmRl
clZpZXc6OmludGVydmFsQXJlbmEoKQogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmll
dzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IEltYWdlUXVhbGl0
eUNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA0MzFhZWNkMGE2NTkxOGUyNzIyOWNiMDhhMTM1ODVi
NjRlZjU4YjMzLi4zNmY4YmUxYzFiNGY4NmFhMDM2ODhlOTdhOTE2M2VmZmYyNTdjMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI3LDggKzI3LDggQEAKICNpbmNs
dWRlICJQT0RGcmVlTGlzdEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTMyOSwxMyArMzI5LDEzIEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVByaW50
aW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICBPd25QdHI8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4g
bV9pbWFnZVF1YWxpdHlDb250cm9sbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVF1YWxp
dHlDb250cm9sbGVyPiBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiAgICAgTGF5b3V0VW5pdCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0OwogICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dFN0YXRlPiBtX2xheW91dFN0YXRlOwogICAgIHVu
c2lnbmVkIG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQ7Ci0gICAgT3duUHRyPFJlbmRlckxheWVy
Q29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwotICAgIE93blB0cjxGbG93VGhyZWFkQ29udHJvbGxl
cj4gbV9mbG93VGhyZWFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyTGF5
ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dUaHJl
YWRDb250cm9sbGVyPiBtX2Zsb3dUaHJlYWRDb250cm9sbGVyOwogICAgIFJlZlB0cjxJbnRlcnZh
bEFyZW5hPiBtX2ludGVydmFsQXJlbmE7CiAKICAgICBSZW5kZXJRdW90ZSogbV9yZW5kZXJRdW90
ZUhlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCAyMDQz
MjcyZDZjOWY0NzI3ZTI2NTE3YjI4MjYzNjAxNzc4ZmNmYWEwLi42ODFhMGNhN2U1ODY4NDA5Y2Zi
ZWY3OTA0NWM4MmZhNjUzMGE1OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2Zsb2F0
cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQoJmZsb2F0aW5nQm94KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlbmRlckJv
eCo+KDEsICZmbG9hdGluZ0JveCkpOworICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxSZW5kZXJCb3gqPj4oMSwgJmZsb2F0aW5nQm94KTsKICAgICB9CiAKICAg
ICBWZWN0b3I8UmVuZGVyQm94Kj4qIGZsb2F0c1B0cigpIHsgQVNTRVJUKCFpc0RpcnR5KCkpOyBy
ZXR1cm4gbV9mbG9hdHMuZ2V0KCk7IH0KQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gRmxvYXRzIGhhbmdpbmcgb2ZmIHRoZSBsaW5lIGFyZSBwdXNoZWQgaW50byB0aGlzIHZl
Y3RvciBkdXJpbmcgbGF5b3V0LiBJdCBpcyBvbmx5CiAgICAgLy8gZ29vZCBmb3IgYXMgbG9uZyBh
cyB0aGUgbGluZSBoYXMgbm90IGJlZW4gbWFya2VkIGRpcnR5LgotICAgIE93blB0cjxWZWN0b3I8
UmVuZGVyQm94Kj4+IG1fZmxvYXRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVy
Qm94Kj4+IG1fZmxvYXRzOwogfTsKIAogSU5MSU5FX0JPWF9PQkpFQ1RfVFlQRV9DQVNUUyhSb290
SW5saW5lQm94LCBpc1Jvb3RJbmxpbmVCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9zaXplci5oCmluZGV4IGVlNTE2ODk3N2UxNzBlZTMwMTExZTA0ZjJiNDEyOGRlOThhNzE2
ZjAuLmJmZmQyMmNkMmFmNmJiYjljMzQ1MTk5OGVlNjNjMzhlNGVmYTUzMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1BvbHlnb25TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHln
b25TaGFwZS5jcHAKaW5kZXggOGUyNDFlYjE0NzUxN2ZiNjcwZjZlNzQ3ZGFmZTRlM2M4YzQ4YzYy
NC4uZDM4ZThmN2Y3ZmI5MzJhZDNhMzJhMzQ3NjkxNzZmZTZjYmQ5MDY0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcApAQCAtMTM2LDkg
KzEzNiw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbmFwVmVydGljZXNUb0xheW91dFVuaXRHcmlk
KFZlY3RvcjxGbG9hdFBvaW50PiYgdmVydGljZXMpCiAgICAgICAgIHZlcnRpY2VzW2ldLnNldChM
YXlvdXRVbml0KHZlcnRpY2VzW2ldLngoKSkudG9GbG9hdCgpLCBMYXlvdXRVbml0KHZlcnRpY2Vz
W2ldLnkoKSkudG9GbG9hdCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0
UG9seWdvbj4gY29tcHV0ZVNoYXBlUGFkZGluZ0JvdW5kcyhjb25zdCBGbG9hdFBvbHlnb24mIHBv
bHlnb24sIGZsb2F0IHBhZGRpbmcsIFdpbmRSdWxlIGZpbGxSdWxlKQorc3RhdGljIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNv
bnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgcGFkZGluZywgV2luZFJ1bGUgZmlsbFJ1
bGUpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gcGFkZGVkVmVydGljZXMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPEZsb2F0UG9pbnQ+KCkpOworICAgIGF1dG8gcGFkZGVkVmVydGlj
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4oKTsKICAgICBGbG9hdFBv
aW50IGludGVyc2VjdGlvbjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2x5Z29u
Lm51bWJlck9mRWRnZXMoKTsgKytpKSB7CkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBzdGF0aWMgaW5s
aW5lIFBhc3NPd25QdHI8RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNv
bnN0IEZsb2F0UG9seQogICAgIH0KIAogICAgIHNuYXBWZXJ0aWNlc1RvTGF5b3V0VW5pdEdyaWQo
KnBhZGRlZFZlcnRpY2VzKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZsb2F0UG9seWdvbihw
YWRkZWRWZXJ0aWNlcy5yZWxlYXNlKCksIGZpbGxSdWxlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRQb2x5Z29uPihzdGQ6Om1vdmUocGFkZGVkVmVydGljZXMpLCBmaWxsUnVs
ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxGbG9hdFBvbHlnb24+IGNvbXB1dGVT
aGFwZU1hcmdpbkJvdW5kcyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IG1hcmdp
biwgV2luZFJ1bGUgZmlsbFJ1bGUpCitzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dFBvbHlnb24+IGNvbXB1dGVTaGFwZU1hcmdpbkJvdW5kcyhjb25zdCBGbG9hdFBvbHlnb24mIHBv
bHlnb24sIGZsb2F0IG1hcmdpbiwgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgT3duUHRyPFZl
Y3RvcjxGbG9hdFBvaW50Pj4gbWFyZ2luVmVydGljZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPEZs
b2F0UG9pbnQ+KCkpOworICAgIGF1dG8gbWFyZ2luVmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxGbG9hdFBvaW50Pj4oKTsKICAgICBGbG9hdFBvaW50IGludGVyc2VjdGlvbjsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2x5Z29uLm51bWJlck9mRWRnZXMoKTsgKytp
KSB7CkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0UG9s
eWdvbj4gY29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKGNvbnN0IEZsb2F0UG9seWcKICAgICB9CiAK
ICAgICBzbmFwVmVydGljZXNUb0xheW91dFVuaXRHcmlkKCptYXJnaW5WZXJ0aWNlcyk7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdFBvbHlnb24obWFyZ2luVmVydGljZXMucmVsZWFzZSgp
LCBmaWxsUnVsZSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9seWdvbj4o
c3RkOjptb3ZlKG1hcmdpblZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBjb25zdCBGbG9hdFBv
bHlnb24mIFBvbHlnb25TaGFwZTo6c2hhcGVQYWRkaW5nQm91bmRzKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCmluZGV4IDA5ZjcxNDA4
MzdhNTc0OGNhNTE0ZjI4MzY5ODkxMWVjMDljODZmNmMuLjI5Mzk1MmEwMzRkMmYzZjJiOTQ0N2Jj
N2Y1MzhmOTY0YmY0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUG9seWdvblNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9Qb2x5Z29uU2hhcGUuaApAQCAtODIsOCArODIsOCBAQCBwcml2YXRlOgogY2xhc3MgUG9seWdv
blNoYXBlIDogcHVibGljIFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2x5Z29u
U2hhcGUpOwogcHVibGljOgotICAgIFBvbHlnb25TaGFwZShQYXNzT3duUHRyPFZlY3RvcjxGbG9h
dFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQotICAgICAgICA6IG1fcG9seWdv
bih2ZXJ0aWNlcywgZmlsbFJ1bGUpCisgICAgUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKKyAgICAgICAg
OiBtX3BvbHlnb24oc3RkOjptb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpCiAgICAgICAgICwgbV9t
YXJnaW5Cb3VuZHMobnVsbHB0cikKICAgICAgICAgLCBtX3BhZGRpbmdCb3VuZHMobnVsbHB0cikK
ICAgICB7CkBAIC0xMDMsOCArMTAzLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBGbG9hdFBvbHln
b24mIHNoYXBlUGFkZGluZ0JvdW5kcygpIGNvbnN0OwogCiAgICAgRmxvYXRQb2x5Z29uIG1fcG9s
eWdvbjsKLSAgICBtdXRhYmxlIE93blB0cjxGbG9hdFBvbHlnb24+IG1fbWFyZ2luQm91bmRzOwot
ICAgIG11dGFibGUgT3duUHRyPEZsb2F0UG9seWdvbj4gbV9wYWRkaW5nQm91bmRzOworICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPEZsb2F0UG9seWdvbj4gbV9tYXJnaW5Cb3VuZHM7CisgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRQb2x5Z29uPiBtX3BhZGRpbmdCb3VuZHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IGQ5MjEyMTlhNGY0ZmYyMmM3ZmJlNDgxNDk2
ZWU0MWZmOTY3Yjc1NzcuLmFmNmZjZTE3NTZmMDQxMGJmYjJlNWQxMDk2NTNiMzIzZjM3NzM5OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3Bw
CkBAIC0yMTcsMTAgKzIxNywxMCBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRFeGNs
dWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbAogCiAvLyBDdXJy
ZW50bHkgbGltaXRlZCB0byBjb21wdXRpbmcgdGhlIG1hcmdpbiBib3VuZGFyeSBmb3Igc2hhcGUt
b3V0c2lkZSBmb3IgZmxvYXRzLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNjM0OC4KIAotUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVy
U2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJn
aW4pIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2lu
KSBjb25zdAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hh
cGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4g
KiAyOwotICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gcmVzdWx0ID0gYWRvcHRQdHIo
bmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNo
YXBlTWFyZ2luLCBvZmZzZXQoKSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNo
YXBlTWFyZ2luLCBvZmZzZXQoKSkpOwogICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9yIG1hcmdp
bkludGVydmFsR2VuZXJhdG9yKHNoYXBlTWFyZ2luKTsKIAogICAgIGZvciAoaW50IHkgPSBib3Vu
ZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7ICsreSkgewpAQCAtMjQ3LDcgKzI0Nyw3IEBA
IFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpj
b21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjpidWlsZEJvdW5kc1BhdGgoUGF0aCYgcGF0aCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBlMTBmNzA5ZjA4
YzkxNWQxNmZmOWI5YjJhZWVkOGYwZjQzNzkwYTI0Li5hMTA2MzUyOWZhN2NkYWJhMzNjZGNkZWYy
NDUwNmZkYWVjMDIxYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEluY2x1
ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBj
b25zdDsKICAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRT
aGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICBib29sIGZpcnN0SW5jbHVkZWRJbnRl
cnZhbFkoaW50IG1pblksIGNvbnN0IEludFNpemUmIG1pblNpemUsIExheW91dFVuaXQmIHJlc3Vs
dCkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNo
YXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3Q7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMo
aW50IHNoYXBlTWFyZ2luKSBjb25zdDsKIAogICAgIHZvaWQgYnVpbGRCb3VuZHNQYXRoKFBhdGgm
KSBjb25zdDsKIApAQCAtOTIsOCArOTIsOCBAQCBwcml2YXRlOgogY2xhc3MgUmFzdGVyU2hhcGUg
OiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsK
IHB1YmxpYzoKLSAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSkKLSAgICAgICAgOiBtX2ludGVy
dmFscyhpbnRlcnZhbHMpCisgICAgUmFzdGVyU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNo
YXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSkKKyAgICAg
ICAgOiBtX2ludGVydmFscyhzdGQ6Om1vdmUoaW50ZXJ2YWxzKSkKICAgICAgICAgLCBtX2ltYWdl
U2l6ZShpbWFnZVNpemUpCiAgICAgewogICAgIH0KQEAgLTExNiw4ICsxMTYsOCBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBtYXJnaW5JbnRlcnZhbHMoKSBjb25z
dDsKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0ludGVydmFscygpIGNv
bnN0OwogCi0gICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsKLSAg
ICBtdXRhYmxlIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9tYXJnaW5JbnRlcnZhbHM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsK
KyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9tYXJn
aW5JbnRlcnZhbHM7CiAgICAgSW50U2l6ZSBtX2ltYWdlU2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggM2ZlOWI1ODFiMzUzNWM1OWI1Nzhi
YzQxZGNmNTY4YTRlODRjYjk3Ny4uYmUxYjZkMDY2ZmI3YmE1ZTJmZjA0OWMzNmRiYTI2MzZmYTY3
OTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQx
LDM4ICs0MSwzNiBAQAogI2luY2x1ZGUgIlJlY3RhbmdsZVNoYXBlLmgiCiAjaW5jbHVkZSAiV2lu
ZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIGJvdW5kcykKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0
ZUluc2V0U2hhcGUoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgYm91bmRzKQogewogICAgIEFTU0VS
VChib3VuZHMucmVjdCgpLndpZHRoKCkgPj0gMCAmJiBib3VuZHMucmVjdCgpLmhlaWdodCgpID49
IDApOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQm94U2hhcGUoYm91bmRzKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKLXN0YXRpYyBQYXNz
T3duUHRyPFNoYXBlPiBjcmVhdGVSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3QmIGJvdW5k
cywgY29uc3QgRmxvYXRTaXplJiByYWRpaSkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZVJlY3RhbmdsZVNoYXBlKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9h
dFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChib3VuZHMud2lkdGgoKSA+PSAwICYmIGJvdW5k
cy5oZWlnaHQoKSA+PSAwICYmIHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+
PSAwKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlY3RhbmdsZVNoYXBlKGJvdW5kcywgcmFk
aWkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oYm91bmRz
LCByYWRpaSk7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVDaXJjbGVTaGFw
ZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cykKK3N0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRl
ciwgZmxvYXQgcmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBSZWN0YW5nbGVTaGFwZShGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1
cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJh
ZGl1cywgcmFkaXVzKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlY3RhbmdsZVNo
YXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywg
cmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKLXN0
YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2lu
dCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY3JlYXRlRWxsaXBzZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgY29u
c3QgRmxvYXRTaXplJiByYWRpaSkKIHsKICAgICBBU1NFUlQocmFkaWkud2lkdGgoKSA+PSAwICYm
IHJhZGlpLmhlaWdodCgpID49IDApOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVjdGFuZ2xl
U2hhcGUoRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0g
cmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlp
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVj
dChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgp
LCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKLXN0YXRp
YyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVQb2x5Z29uU2hhcGUoUGFzc093blB0cjxWZWN0b3I8
RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKK3N0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBQb2x5Z29uU2hhcGUodmVydGljZXMsIGZpbGxSdWxlKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihzdGQ6Om1vdmUodmVydGljZXMpLCBm
aWxsUnVsZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IHBoeXNpY2FsUmVjdFRvTG9n
aWNhbChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxvZ2ljYWxCb3hIZWlnaHQsIFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKQpAQCAtMTExLDE0ICsxMDksMTQgQEAgc3RhdGljIGlubGluZSB2
b2lkIGVuc3VyZVJhZGlpRG9Ob3RPdmVybGFwKEZsb2F0UmVjdCAmYm91bmRzLCBGbG9hdFNpemUg
JnJhZGlpKQogICAgIH0KIH0KIAotUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBl
KGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxC
b3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBh
ZGRpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBC
YXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQog
ewogICAgIEFTU0VSVChiYXNpY1NoYXBlKTsKIAogICAgIGJvb2wgaG9yaXpvbnRhbFdyaXRpbmdN
b2RlID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpOwogICAgIGZsb2F0IGJv
eFdpZHRoID0gaG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbG9naWNhbEJveFNpemUud2lkdGgoKSA6
IGxvZ2ljYWxCb3hTaXplLmhlaWdodCgpOwogICAgIGZsb2F0IGJveEhlaWdodCA9IGhvcml6b250
YWxXcml0aW5nTW9kZSA/IGxvZ2ljYWxCb3hTaXplLmhlaWdodCgpIDogbG9naWNhbEJveFNpemUu
d2lkdGgoKTsKLSAgICBPd25QdHI8U2hhcGU+IHNoYXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gc2hhcGU7CiAKICAgICBzd2l0Y2ggKGJhc2ljU2hhcGUtPnR5cGUoKSkgewogCkBAIC0x
OTEsNyArMTg5LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0
IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICAgICAgY29uc3QgVmVj
dG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2
YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAl
IDIpKTsKLSAgICAgICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBhZG9w
dFB0cihuZXcgVmVjdG9yPEZsb2F0UG9pbnQ+KHZhbHVlc1NpemUgLyAyKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxv
YXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1
ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE5OSw3ICsxOTcsNyBAQCBQYXNzT3duUHRyPFNoYXBl
PiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3Qg
TGF5b3V0UwogICAgICAgICAgICAgKCp2ZXJ0aWNlcylbaSAvIDJdID0gcGh5c2ljYWxQb2ludFRv
TG9naWNhbCh2ZXJ0ZXgsIGxvZ2ljYWxCb3hTaXplLmhlaWdodCgpLCB3cml0aW5nTW9kZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzaGFwZSA9IGNyZWF0ZVBvbHlnb25TaGFwZSh2ZXJ0aWNlcy5y
ZWxlYXNlKCksIHBvbHlnb24ud2luZFJ1bGUoKSk7CisgICAgICAgIHNoYXBlID0gY3JlYXRlUG9s
eWdvblNoYXBlKHN0ZDo6bW92ZSh2ZXJ0aWNlcyksIHBvbHlnb24ud2luZFJ1bGUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjUxLDE3ICsyNDksMTcgQEAgUGFzc093blB0cjxTaGFw
ZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0
IExheW91dFMKICAgICBzaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdp
biwgMCk7CiAgICAgc2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGlu
ZywgMCk7CiAKLSAgICByZXR1cm4gc2hhcGUucmVsZWFzZSgpOworICAgIHJldHVybiBzaGFwZTsK
IH0KIAotUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGNvbnN0IFN0
eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYg
aW1hZ2VSLCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdlLCBm
bG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGltYWdlUiwgY29uc3QgTGF5b3V0UmVj
dCYgbWFyZ2luUiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0
aCBwYWRkaW5nKQogewogICAgIEFTU0VSVChzdHlsZUltYWdlLmNhY2hlZEltYWdlKCkpOwogICAg
IEFTU0VSVChzdHlsZUltYWdlLmNhY2hlZEltYWdlKCktPmhhc0ltYWdlKCkpOwogCiAgICAgSW50
UmVjdCBpbWFnZVJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGltYWdlUik7CiAgICAgSW50UmVj
dCBtYXJnaW5SZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBPd25QdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFw
ZUludGVydmFscyhtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpKTsKKyAgICBh
dXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1h
cmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0
LnNpemUoKSk7CiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKQEAgLTI5MywyNSArMjkxLDI1IEBA
IFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUlt
YWdlJiBzdHlsZUltYWdlLCBmbG9hdCB0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPd25QdHI8
UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVy
dmFscy5yZWxlYXNlKCksIG1hcmdpblJlY3Quc2l6ZSgpKSk7CisgICAgYXV0byByYXN0ZXJTaGFw
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KHN0ZDo6bW92ZShpbnRlcnZhbHMpLCBt
YXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0
aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbiwgMCk7CiAgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgocGFkZGluZywgMCk7Ci0gICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gc3RkOjptb3ZlKHJhc3RlclNoYXBlKTsKIH0KIAotUGFzc093blB0cjxTaGFwZT4g
U2hhcGU6OmNyZWF0ZUxheW91dEJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVj
dCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5n
KQorc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlTGF5b3V0Qm94U2hhcGUoY29u
c3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVu
Z3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCiB7CiAgICAgQVNTRVJUKHJvdW5kZWRSZWN0LnJl
Y3QoKS53aWR0aCgpID49IDAgJiYgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpID49IDApOwog
CiAgICAgRmxvYXRSZWN0IHJlY3QoMCwgMCwgcm91bmRlZFJlY3QucmVjdCgpLndpZHRoKCksIHJv
dW5kZWRSZWN0LnJlY3QoKS5oZWlnaHQoKSk7CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZHMo
cmVjdCwgcm91bmRlZFJlY3QucmFkaWkoKSk7Ci0gICAgT3duUHRyPFNoYXBlPiBzaGFwZSA9IGFk
b3B0UHRyKG5ldyBCb3hTaGFwZShib3VuZHMpKTsKKyAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdy
aXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFy
Z2luLCAwKTsKICAgICBzaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRk
aW5nLCAwKTsKIAotICAgIHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6
bW92ZShzaGFwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCA4Mzg1M2ZiNTNhZjVmNGY4NGQ5NDJiMzZlOWY2
YzFiYjU5N2FhMjYyLi5jZTJmYmE5NGEwMjRiYmQ2ODI3YTk1NGU5ZjY4YTc4M2I4MDdhZGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5j
bHVkZSAiV3JpdGluZ01vZGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBQYXRoIG1hcmdpblNoYXBlOwog
ICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3Qg
QmFzaWNTaGFwZSosIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9k
ZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNoYXBlPiBjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUltYWdlJiwgZmxvYXQgdGhyZXNo
b2xkLCBjb25zdCBMYXlvdXRSZWN0JiBkcmF3UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUxheW91dEJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBl
KiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGgg
bWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gY3JlYXRlUmFzdGVyU2hhcGUoY29uc3QgU3R5bGVJbWFnZSYsIGZsb2F0IHRocmVzaG9sZCwg
Y29uc3QgTGF5b3V0UmVjdCYgZHJhd1JlY3QsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0LCBX
cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUxheW91dEJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKIAogICAg
IHZpcnR1YWwgflNoYXBlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5mby5oCmluZGV4IGU0Y2ViYzNiYWU0MDUzNTUzYzI0NTgwODMzNTZjMDIzMzUwYzU4
ZDcuLmYyZWMxZDIwZDk3OGJiMTczZDA3NTM5NThlZTViZWRlZmQ0OWVkZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2hhcGUuaCIKICNpbmNsdWRlICJT
aGFwZVZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkwLDgg
KzkwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGxpbmVPdmVybGFwc1NoYXBlQm91
bmRzKCkgY29uc3QgPSAwOwogCi0gICAgdm9pZCBtYXJrU2hhcGVBc0RpcnR5KCkgeyBtX3NoYXBl
LmNsZWFyKCk7IH0KLSAgICBib29sIGlzU2hhcGVEaXJ0eSgpIHsgcmV0dXJuICFtX3NoYXBlLmdl
dCgpOyB9CisgICAgdm9pZCBtYXJrU2hhcGVBc0RpcnR5KCkgeyBtX3NoYXBlID0gbnVsbHB0cjsg
fQorICAgIGJvb2wgaXNTaGFwZURpcnR5KCkgeyByZXR1cm4gIW1fc2hhcGU7IH0KICAgICBjb25z
dCBSZW5kZXJUeXBlJiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICAgICBM
YXlvdXRTaXplIHJlZmVyZW5jZUJveExvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWZl
cmVuY2VCb3hMb2dpY2FsU2l6ZTsgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGNvbnN0IFJlbmRlclR5cGUmIG1fcmVuZGVyZXI7CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJs
ZSBPd25QdHI8U2hhcGU+IG1fc2hhcGU7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IG1fc2hhcGU7CiAgICAgTGF5b3V0U2l6ZSBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJ
bmZvLmgKaW5kZXggMDZiNmJlYzE4NDdjNWVmNDk5NDE5ZTJlMzg4MTUxZjFhMzk4MjQ3NC4uM2Y5
OGMwN2QzNzg3NjNmMWE0MTE5YTA4OTViYTA4N2I0NjZiMjM5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5oCkBAIC0zMyw3ICszMyw2
IEBACiAjaWYgRU5BQkxFKENTU19TSEFQRVMpICYmIEVOQUJMRShDU1NfU0hBUEVfSU5TSURFKQog
CiAjaW5jbHVkZSAiU2hhcGVJbmZvLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKaW5kZXggMDVkMDBkY2IyZTU2MmNh
YzNhOTcwYzFiNjIxZDFiYTA5Yzk5NmFkMC4uYmYzNjliNjY3NTk1MzBhNTIzNjlmNDVhY2VmMzY2
YTg2OGUwY2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJDb3VudGVyQ29udGVudC5oIgogI2lu
Y2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJQdHIuaCIKLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKaW5kZXggMDZkNDRk
ZGY2ZjNmNmUwYjkxODEyNzMyZTQ5MTEzODUwN2ZhYzhmNi4uNzU3Yjc5ZGY4ZmFlMTYxYjNiOGU1
ODI3YjMxYzBiNTMwOTlkOWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb3VudGVyRGlyZWN0aXZlcy5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMsMTEgKzMy
LDExIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYSwgY29uc3Qg
Q291bnRlckRpcmVjdGl2ZXMmIGIpCiAgICAgICAmJiBhLnJlc2V0VmFsdWUoKSA9PSBiLnJlc2V0
VmFsdWUoKTsKIH0KIAotUGFzc093blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShjb25z
dCBDb3VudGVyRGlyZWN0aXZlTWFwJiBjb3VudGVyRGlyZWN0aXZlcykKK3N0ZDo6dW5pcXVlX3B0
cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwJiBj
b3VudGVyRGlyZWN0aXZlcykKIHsKLSAgICBPd25QdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gcmVz
dWx0ID0gYWRvcHRQdHIobmV3IENvdW50ZXJEaXJlY3RpdmVNYXApOworICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgICpyZXN1bHQg
PSBjb3VudGVyRGlyZWN0aXZlczsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZl
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgK
aW5kZXggY2Y3OTNiYjhmMDkzNWM1NDQ3ZDg3NGQ0YTM1ZWZhMGI5OGU3ZjAzOC4uZDVkZTA3NmNm
NDA0M2JmYTM5OTUxYjQ2MjUzMWY0ZGNmMGUzNWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpZm5kZWYgQ291bnRlckRpcmVjdGl2ZXNfaAogI2RlZmluZSBDb3VudGVyRGlyZWN0aXZlc19o
CiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEwNCw3ICsx
MDUsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBh
LCBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYikgewogCiB0eXBlZGVmIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBDb3VudGVyRGlyZWN0aXZlcz4gQ291bnRlckRpcmVjdGl2ZU1hcDsKIAotUGFzc093
blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFw
Jik7CitzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY2xvbmUoY29uc3QgQ291
bnRlckRpcmVjdGl2ZU1hcCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmgKaW5kZXggNmI4ZjE1
ZmYzMTBkMmNiNGMxOGQ0YTRjMThiZWFkODkwZDFlNjQ2NC4uNDRkMjAwYmNkZDVhMWZhOGVhYjMy
ZjI5NmI4NzhkOTNiMDRjZjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRDb29yZGluYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRDb29yZGluYXRlLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NSwxMSArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBzcGFu
IHNob3VsZCBpbmNsdWRlIGJvdGggfGluaXRpYWxQb3NpdGlvbkluZGV4fCBhbmQgfGZpbmFsUG9z
aXRpb25JbmRleHwgdG8gYmUgY29ycmVjdC4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxHcmlkU3Bhbj4gY3JlYXRlKHNpemVfdCBpbml0aWFsUG9zaXRp
b24sIHNpemVfdCBmaW5hbFBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBHcmlkU3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pKTsKLSAgICB9Ci0K
ICAgICBHcmlkU3BhbihzaXplX3QgaW5pdGlhbFBvc2l0aW9uLCBzaXplX3QgZmluYWxQb3NpdGlv
bikKICAgICAgICAgOiBpbml0aWFsUG9zaXRpb25JbmRleChpbml0aWFsUG9zaXRpb24pCiAgICAg
ICAgICwgZmluYWxQb3NpdGlvbkluZGV4KGZpbmFsUG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBlMDEwN2ZkNmQ5ZTNjNGRj
MDY4MmU4NjNmNjVhM2FhNTEwZmRhMjBjLi4wNDg3MzRlNWU2MTdjZWZmZjI3MDk1YmM1ZWQyNDg2
NDA2YTJkZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFk
ZENhY2hlZFBzZXVkb1N0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkbykKICAgICBS
ZW5kZXJTdHlsZSogcmVzdWx0ID0gcHNldWRvLmdldCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZFBz
ZXVkb1N0eWxlcykKLSAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBhZG9wdFB0cihuZXcg
UHNldWRvU3R5bGVDYWNoZSk7CisgICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOwogCiAgICAgbV9jYWNoZWRQc2V1ZG9TdHls
ZXMtPmFwcGVuZChwc2V1ZG8pOwogCkBAIC0xMTc4LDkgKzExNzgsOSBAQCBjb25zdCBDb3VudGVy
RGlyZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRpcmVjdGl2ZXMoKSBjb25zdAogCiBD
b3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMo
KQogewotICAgIE93blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiYgbWFwID0gcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fY291bnRlckRpcmVjdGl2ZXM7CisgICAgYXV0byYgbWFwID0g
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY291bnRlckRpcmVjdGl2ZXM7CiAgICAg
aWYgKCFtYXApCi0gICAgICAgIG1hcCA9IGFkb3B0UHRyKG5ldyBDb3VudGVyRGlyZWN0aXZlTWFw
KTsKKyAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigp
OwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xMzM0LDE0ICsxMzM0LDE0IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlvbkxpc3QqIFJlbmRlclN0eWxl
OjphY2Nlc3NBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2FuaW1hdGlvbnMpCi0gICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2FuaW1hdGlvbnMgPSBhZG9wdFB0cihuZXcgQW5pbWF0aW9uTGlzdCgpKTsKKyAgICAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsKIH0KIAogQW5pbWF0aW9uTGlzdCogUmVuZGVyU3R5bGU6
OmFjY2Vzc1RyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX3RyYW5zaXRpb25zKQotICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV90cmFuc2l0aW9ucyA9IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCkpOworICAg
ICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNpdGlvbnMuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYWUwODc1ZDA3ZWQyMjBlZmU2MGM0ZmRlNzdk
ZDBjMjZmY2ZjZWFiOS4uMWMwMmQzMjc4ZGE3YjUwNjdhYzE3MzVmYWMxNzRlMmIyNmFlMzdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTY4
LDggKzY4LDggQEAKICNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlVuaWNvZGVCaWRpLmgiCisjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0OCw3ICsxNDgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgRGF0YVJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGluaGVyaXRlZDsKIAogICAgIC8vIGxpc3Qg
b2YgYXNzb2NpYXRlZCBwc2V1ZG8gc3R5bGVzCi0gICAgT3duUHRyPFBzZXVkb1N0eWxlQ2FjaGU+
IG1fY2FjaGVkUHNldWRvU3R5bGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQc2V1ZG9TdHlsZUNh
Y2hlPiBtX2NhY2hlZFBzZXVkb1N0eWxlczsKIAogICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+
IG1fc3ZnU3R5bGU7CiAKQEAgLTE0MTcsMTYgKzE0MTcsMTYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhckFuaW1hdGlvbnMoKQogICAgIHsKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fYW5pbWF0aW9ucy5jbGVhcigpOworICAgICAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zID0gbnVsbHB0cjsKICAgICB9CiAKICAgICB2b2lk
IGNsZWFyVHJhbnNpdGlvbnMoKQogICAgIHsKLSAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fdHJhbnNpdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMgPSBudWxscHRyOwogICAgIH0KIAotICAgIHZv
aWQgaW5oZXJpdEFuaW1hdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50KSB7IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBwYXJlbnQgPyBhZG9wdFB0
cihuZXcgQW5pbWF0aW9uTGlzdCgqcGFyZW50KSkgOiBudWxscHRyOyB9Ci0gICAgdm9pZCBpbmhl
cml0VHJhbnNpdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50KSB7IHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gcGFyZW50ID8gYWRvcHRQdHIobmV3
IEFuaW1hdGlvbkxpc3QoKnBhcmVudCkpIDogbnVsbHB0cjsgfQorICAgIHZvaWQgaW5oZXJpdEFu
aW1hdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50KSB7IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBwYXJlbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpwYXJlbnQpIDogbnVsbHB0cjsgfQorICAgIHZvaWQgaW5oZXJpdFRyYW5z
aXRpb25zKGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IHBhcmVudCA/IHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBhZGp1c3RBbmltYXRp
b25zKCk7CiAgICAgdm9pZCBhZGp1c3RUcmFuc2l0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggMmYwN2VmYzg0MWQwZWRjM2YzMGExYWRkNWMyOWJmODg0YzZhZDUyZC4uNDAx
ZmVlMWNiMjdlZDdmZWJmYWNkYjEyYjQwNjVmYWZlMWU4ODdhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcApAQCAtMTI2LDggKzEyNiw4IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAg
LCBtX2NvdW50ZXJEaXJlY3RpdmVzKG8ubV9jb3VudGVyRGlyZWN0aXZlcyA/IGNsb25lKCpvLm1f
Y291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKICAgICAsIG1fYm94U2hhZG93KG8ubV9ib3hT
aGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fYm94U2hhZG93KSA6IG51
bGxwdHIpCiAgICAgLCBtX2JveFJlZmxlY3Qoby5tX2JveFJlZmxlY3QpCi0gICAgLCBtX2FuaW1h
dGlvbnMoby5tX2FuaW1hdGlvbnMgPyBhZG9wdFB0cihuZXcgQW5pbWF0aW9uTGlzdCgqby5tX2Fu
aW1hdGlvbnMpKSA6IG51bGxwdHIpCi0gICAgLCBtX3RyYW5zaXRpb25zKG8ubV90cmFuc2l0aW9u
cyA/IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCpvLm1fdHJhbnNpdGlvbnMpKSA6IG51bGxw
dHIpCisgICAgLCBtX2FuaW1hdGlvbnMoby5tX2FuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVl
PEFuaW1hdGlvbkxpc3Q+KCpvLm1fYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgbV90cmFu
c2l0aW9ucyhvLm1fdHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpvLm1fdHJhbnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1fbWFzayhvLm1fbWFzaykKICAg
ICAsIG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2UpCiAgICAgLCBtX3BhZ2VTaXplKG8u
bV9wYWdlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDdiMDY2N2I0M2QyY2VmMzMyNjZl
ODY3Nzc4YWUxYmRjNGM5N2Q1ZDcuLjgyOTI2ZmY5MWQ2MDhiM2JkZmQ3ODllN2ViZGM0NDVjYjU4
NDdhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUg
IkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKICNpbmNsdWRl
ICJTaGFwZVZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtMTI1LDE1ICsxMjUsMTUgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudERhdGE+IG1fY29udGVudDsKLSAgICBPd25QdHI8Q291bnRlckRpcmVjdGl2
ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckRp
cmVjdGl2ZU1hcD4gbV9jb3VudGVyRGlyZWN0aXZlczsKICAgICBTdHJpbmcgbV9hbHRUZXh0Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG1fYm94U2hhZG93OyAvLyBGb3IgYm94
LXNoYWRvdyBkZWNvcmF0aW9ucy4KICAgICAKICAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBt
X2JveFJlZmxlY3Q7CiAKLSAgICBPd25QdHI8QW5pbWF0aW9uTGlzdD4gbV9hbmltYXRpb25zOwot
ICAgIE93blB0cjxBbmltYXRpb25MaXN0PiBtX3RyYW5zaXRpb25zOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25MaXN0PiBtX2FuaW1hdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlvbnM7CiAKICAgICBGaWxsTGF5ZXIgbV9tYXNrOwogICAg
IE5pbmVQaWVjZUltYWdlIG1fbWFza0JveEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXgg
ODIwZDQ1OWY0ZjAyMGFkMWVkZWYyMDljODY4NmFjZGEzM2Q5YjEwZC4uZmUxOTBkM2U4OTVjNGJl
MWQ5MWVjYmYwMzM2MjJjNWU0ZjQ1MGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMjAs
OSArMTIwLDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KICAgICBpZiAoZ3JhZGllbnRVbml0
cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiBv
YmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IE93blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZCgm
cmVuZGVyZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBncmFkaWVudERh
dGEgPSBtX2dyYWRpZW50TWFwLmFkZCgmcmVuZGVyZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICBpZiAoIWdyYWRpZW50RGF0YSkKLSAgICAgICAgZ3JhZGllbnREYXRhID0gYWRvcHRQ
dHIobmV3IEdyYWRpZW50RGF0YSk7CisgICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhZGllbnREYXRhPigpOwogCiAgICAgYm9vbCBpc1BhaW50aW5nVGV4dCA9IHJlc291
cmNlTW9kZSAmIEFwcGx5VG9UZXh0TW9kZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAppbmRleCBlNDA1N2M4
MGQxZGEzNDM2ODcyNDIwOTM4NTQ2ZGYwOGVlZjI1NDhjLi5lMzc5MTUyYWIwYjViMmFkMmRjYzA5
ZDQ3N2ZhNzk3MzViOTMwZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIuaCIKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKLQorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxk
Q29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyA6IDE7Ci0gICAgSGFzaE1hcDxSZW5kZXJPYmplY3Qq
LCBPd25QdHI8R3JhZGllbnREYXRhPj4gbV9ncmFkaWVudE1hcDsKKyAgICBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudERhdGE+PiBtX2dyYWRpZW50TWFwOwog
CiAjaWYgVVNFKENHKQogICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5jcHAKaW5kZXggN2RiZTIwNDhhZTAxZmE1ZTQ4MjUzYTAzOTkzNjliMTE1MDMxNmE5
YS4uZWYwZTQ5MWZkM2ZmY2VjMTcxNTgyODZkYjUwOWZjN2E5NmRjNGZiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KLSAgICBPd25QdHI8UGF0dGVy
bkRhdGE+IHBhdHRlcm5EYXRhID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EYXRhKTsKKyAgICBhdXRv
IHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0
ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1
ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCkBAIC0x
MjksNyArMTI5LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVp
bGRQYXR0ZXJuKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ24KICAgICAvLyBWYXJpb3VzIGNh
bGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMg
KEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdl
IGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxl
dGVkIGJ5CiAgICAgLy8gcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpLCB3ZSBvbmx5IG1ha2Ug
aXQgdmlzaWJsZSBpbiB0aGUgY2FjaGUgYXQgdGhlIHZlcnkgZW5kLgotICAgIHJldHVybiBtX3Bh
dHRlcm5NYXAuc2V0KG9iamVjdCwgcGF0dGVybkRhdGEucmVsZWFzZSgpKS5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CisgICAgcmV0dXJuIG1fcGF0dGVybk1hcC5zZXQob2JqZWN0LCBzdGQ6Om1vdmUo
cGF0dGVybkRhdGEpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIHVuc2ln
bmVkIHNob3J0IHJlc291cmNlTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCmluZGV4IDczYzRiZTVkYjg4ZDU4
MDM1YTlhNzAxNDBlNjE5ODgxOTA4NDhhMWMuLmZjMzM4ZmQ1ZWE0MGY0MDBiNzk3YzcxMGRhNGE2
MWViNTJmYTFjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKLQorI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2hvdWxkQ29sbGVjdFBhdHRlcm5BdHRyaWJ1
dGVzIDogMTsKICAgICBQYXR0ZXJuQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci0gICAgSGFzaE1h
cDxSZW5kZXJPYmplY3QqLCBPd25QdHI8UGF0dGVybkRhdGE+PiBtX3BhdHRlcm5NYXA7CisgICAg
SGFzaE1hcDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkRhdGE+PiBtX3Bh
dHRlcm5NYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGM5OWYzZDBkOGU0Y2Q5ODIxNTczZDdhNjNjYmY2MGEwZjEx
YzdiMTQuLmE5MDZkYWNjODMxMzViMTZjNGUzYzMzNDZiYzlhMGE0ODM4ZmNjY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03Nyw4
ICs3Nyw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKQogCiB2b2lkIFJlbmRl
clNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3BhdGguY2xlYXIo
KTsKLSAgICBtX3BhdGggPSBhZG9wdFB0cihuZXcgUGF0aCk7CisgICAgbV9wYXRoID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYXRoPigpOwogICAgIEFTU0VSVChSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgp
KTsKIAogICAgIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQo
KSwgcGF0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuaAppbmRleCBiMTVkMWRjOGQ2M2Q5Yzk5ZjYwMjQ1MzE2NTg1ZjEwOWMyNDU4YzE5Li5hYmI5
MjE2MDBlN2ExNTE2MTM5ZDlmZjNhMGM3NTI0NGJlYmNmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdNYXJrZXJEYXRhLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBt
X3JlcGFpbnRCb3VuZGluZ0JveDsKICAgICBGbG9hdFJlY3QgbV9yZXBhaW50Qm91bmRpbmdCb3hF
eGNsdWRpbmdTaGFkb3c7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zvcm07Ci0g
ICAgT3duUHRyPFBhdGg+IG1fcGF0aDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF0aD4gbV9wYXRo
OwogICAgIFZlY3RvcjxNYXJrZXJQb3NpdGlvbj4gbV9tYXJrZXJQb3NpdGlvbnM7CiAKICAgICBi
b29sIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAppbmRleCBmNGNkNjIxZjRjOTk1M2I0YmQxOTYyNjcz
MzNkOWEzN2M2NjI1YjBlLi5lN2Q1MDk4OTY5YzRlZmI5N2Q2MDdhOGM4YzlkOWNhMDM5OTZkYzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkBA
IC00NDYsNyArNDQ2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIoUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyKQogICAgIEFTU0VSVChjbGlwcGVyLT5yZXNvdXJjZVR5
cGUoKSA9PSBDbGlwcGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IENsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVy
KFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVz
b3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IENs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7
CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC00OTAsNyArNDkwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1h
cmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NF
UlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAK
ICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gTWFya2VyRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgPSBtYXJrZXJTdGFy
dDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUxMSw3ICs1MTEsNyBAQCBib29sIFNWR1Jlc291cmNl
czo6c2V0TWFya2VyTWlkKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQpCiAgICAg
QVNTRVJUKG1hcmtlck1pZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsK
IAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBNYXJrZXJE
YXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxN
YXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6
OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFT
U0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAK
ICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gTWFya2VyRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpz
ZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFz
a2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhID0gQ2xpcHBlckZpbHRlck1hc2tlckRhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlciA9IG1hc2tl
cjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBib29sIFNWR1Jlc291cmNl
czo6c2V0RmlsbChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZmlsbCkKICAgICAgICAgICAg
fHwgZmlsbC0+cmVzb3VyY2VUeXBlKCkgPT0gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGUpOwog
CiAgICAgaWYgKCFtX2ZpbGxTdHJva2VEYXRhKQotICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0g
RmlsbFN0cm9rZURhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEt
PmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTk5LDcgKzU5OSw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9r
ZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVu
dFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1f
ZmlsbFN0cm9rZURhdGEgPSBGaWxsU3Ryb2tlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZmls
bFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAg
bV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmgKaW5kZXggZjMxYjE2M2Ey
N2Q0MjJhMmNkODRkNjEwOWYxY2RiZmUxOWNkNzcyNS4uYzlhZjViNzliOTI1MzEwM2JlZDFlNjgy
MmQ3NThlM2ExY2YzYTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5oCkBAIC0yMCwxMCArMjAsOSBAQAogI2lmbmRlZiBTVkdSZXNvdXJjZXNfaAogI2Rl
ZmluZSBTVkdSZXNvdXJjZXNfaAogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTI0LDExICsxMjMsNiBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4gY3Jl
YXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSk7Ci0gICAgICAgIH0KLQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIqIGNsaXBwZXI7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXI7CkBAIC0xNDgsMTEgKzE0Miw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1hcmtlckRh
dGE+IGNyZWF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TWFya2VyRGF0YSk7Ci0gICAgICAgIH0KLQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ciogbWFya2VyU3RhcnQ7CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJN
aWQ7CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQ7CkBAIC0xNzEs
MTggKzE2MCwxMyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxGaWxsU3Ryb2tlRGF0YT4gY3JlYXRlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxsU3Ryb2tlRGF0YSk7Ci0gICAgICAgIH0K
LQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZmlsbDsKICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZTsKICAgICB9OwogCi0gICAgT3duUHRyPENs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhPiBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOwotICAgIE93
blB0cjxNYXJrZXJEYXRhPiBtX21hcmtlckRhdGE7Ci0gICAgT3duUHRyPEZpbGxTdHJva2VEYXRh
PiBtX2ZpbGxTdHJva2VEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YT4gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWFya2VyRGF0YT4gbV9tYXJrZXJEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxsU3Ryb2tl
RGF0YT4gbV9maWxsU3Ryb2tlRGF0YTsKICAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciog
bV9saW5rZWRSZXNvdXJjZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggNGE4OTgwMzgyODdiMDlhZmU1YjVkYjZj
NTgzOTY1YTg3MTgxZjlhOS4uYmIzMzcyYmIzNjE2ODE2NDQwOTZiNmNkMzFkZDJmNTJjYjNmY2Nm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXND
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXND
YWNoZS5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRS
ZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAg
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKIAogICAg
IC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFz
c2VkIFJlbmRlck9iamVjdAotICAgIE93blB0cjxTVkdSZXNvdXJjZXM+IG5ld1Jlc291cmNlcyA9
IGFkb3B0UHRyKG5ldyBTVkdSZXNvdXJjZXMpOworICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CiAgICAgaWYgKCFuZXdSZXNvdXJjZXMtPmJ1
aWxkQ2FjaGVkUmVzb3VyY2VzKHJlbmRlcmVyLCBzdmdTdHlsZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFB1dCBvYmplY3QgaW4gY2FjaGUuCi0gICAgU1ZHUmVzb3VyY2VzJiByZXNvdXJj
ZXMgPSAqbV9jYWNoZS5hZGQoJnJlbmRlcmVyLCBuZXdSZXNvdXJjZXMucmVsZWFzZSgpKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgU1ZHUmVzb3VyY2VzJiByZXNvdXJjZXMgPSAqbV9jYWNoZS5hZGQo
JnJlbmRlcmVyLCBzdGQ6Om1vdmUobmV3UmVzb3VyY2VzKSkuaXRlcmF0b3ItPnZhbHVlOwogCiAg
ICAgLy8gUnVuIGN5Y2xlLWRldGVjdGlvbiBfYWZ0ZXJ3YXJkc18sIHNvIHNlbGYtcmVmZXJlbmNl
cyBjYW4gYmUgY2F1Z2h0IGFzIHdlbGwuCiAgICAgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIgc29s
dmVyKHJlbmRlcmVyLCByZXNvdXJjZXMpOwpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR1Jlc291
cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0CiAKIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OnJlbW92ZVJlc291cmNlc0Zyb21S
ZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKLSAgICBPd25QdHI8U1ZHUmVzb3Vy
Y2VzPiByZXNvdXJjZXMgPSBtX2NhY2hlLnRha2UoJnJlbmRlcmVyKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHUmVzb3VyY2VzPiByZXNvdXJjZXMgPSBtX2NhY2hlLnRha2UoJnJlbmRlcmVyKTsK
ICAgICBpZiAoIXJlc291cmNlcykKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXggMWZmNGFmMTYzNzA0
OWU1MDA4NjAyZGZjMTk3MWNmYmNiODI4MTdkZi4uNzdkNjFkZGIyNzFhOWQ3Yzc3OWZiOTRkYWQy
N2RjOWVjYjQ2OTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuaApAQCAtMjEsOCArMjEsOSBAQAogI2RlZmluZSBTVkdSZXNvdXJjZXND
YWNoZV9oCiAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRSZXNvdXJjZXNGcm9tUmVuZGVy
ZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCByZW1vdmVS
ZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYpOwogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93blB0cjxTVkdSZXNvdXJjZXM+PiBDYWNoZU1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRy
PFNWR1Jlc291cmNlcz4+IENhY2hlTWFwOwogICAgIENhY2hlTWFwIG1fY2FjaGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHAKaW5kZXggMjJlMGNhYmY2MWYyYjdlNWNlZDdjM2JlOTgwMzNhODBiYzMxOTRkNi4u
MTUyMmZjM2E0MjZlODg4ZDA1ZGZkYjA4MzFhNjgzOWFlYzQ2NjIwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApA
QCAtMTA0LDkgKzEwNCw5IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgbV9pc0NvbXBs
ZXhUZXh0ID0gc2NhbGVkRm9udC5jb2RlUGF0aChtX3J1bikgPT0gRm9udDo6Q29tcGxleDsKIAog
ICAgIGlmIChtX2lzQ29tcGxleFRleHQpCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvci5j
bGVhcigpOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVs
c2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gYWRvcHRQdHIobmV3IFdpZHRoSXRl
cmF0b3IoJnNjYWxlZEZvbnQsIG1fcnVuKSk7CisgICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsK
IH0KIAogc3RydWN0IE1lYXN1cmVUZXh0RGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAppbmRleCA5YzJlMjAwYTZiNjk3
YzIzMThiOTlmZmZhNDJjMjc4YWMwYzk4YmE2Li5lOWMyZTQ0YTc1N2QyMWZhMGY2OWMzNTMxMzYy
YmQzZDkyZWI3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBm
bG9hdCBtX3RvdGFsV2lkdGg7CiAKICAgICAvLyBTaW1wbGUgdGV4dCBvbmx5LgotICAgIE93blB0
cjxXaWR0aEl0ZXJhdG9yPiBtX3NpbXBsZVdpZHRoSXRlcmF0b3I7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdpZHRoSXRlcmF0b3I+IG1fc2ltcGxlV2lkdGhJdGVyYXRvcjsKIAogICAgIC8vIENvbXBs
ZXggdGV4dCBvbmx5LgogICAgIFNWR1RleHRNZXRyaWNzIG1fY29tcGxleFN0YXJ0VG9DdXJyZW50
TWV0cmljczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227788</attachid>
            <date>2014-03-25 13:35:03 -0700</date>
            <delta_ts>2014-03-26 07:14:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129664-20140325133440.patch</filename>
            <type>text/plain</type>
            <size>117222</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NyBAQAorMjAxNC0wMy0yMyAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92ZSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgT3duUHRyIGFu
ZCBQYXNzT3duUHRyIGluIGNvZGUgdW5kZXIgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nLyB3aXRo
IHN0ZDo6dW5pcXVlX3B0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9s
eWdvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvbHlnb246OkZsb2F0UG9seWdvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb3dUaHJlYWRDb250cm9s
bGVyOjplbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9GbG93VGhyZWFkQ29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0TG9j
YXRpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpyZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6Om11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3Jt
U3RhdGUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpmaW5pc2hEZWxheVVwZGF0ZVNjcm9sbEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENvbnRpbnVhdGlvbk91dGxpbmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVy
TWFwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlRnJvbVRyYWNrZWRS
ZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldENvbXB1dGVk
Q29sdW1uQ291bnRBbmRXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hSZWdpb25JbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCdXR0b246OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjp1cGRhdGVBbGxMYXllclRvUmVnaW9uTWFwcGluZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0Zv
ckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRy
eU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09u
R3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJ
dGVtT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9z
aXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVH
cmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZVJvd1N0YXJ0Q29s
dW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRH
cmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tp
bmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExheWVyQ29sdW1ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsZWFy
Wk9yZGVyTGlzdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVz
aEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6RmlsdGVySW5mbzo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpGaWx0
ZXJJbmZvOjpnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJlZ2lvbjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2VsZWN0aW9uQm91
bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmZsb3dUaHJlYWRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFwcGVuZEZsb2F0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvVGV4dEF1dG9zaXplci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTaGFwZVBhZGRpbmdCb3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9s
eWdvblNoYXBlOjpQb2x5Z29uU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNv
bXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVjdGFuZ2xl
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBv
bHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlOjpjcmVhdGVMYXlvdXRCb3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFwZUluZm86Om1hcmtTaGFwZUFzRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcGVJbmZvOjppc1NoYXBlRGlydHkpOgorICAgICAgICAqIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb25lKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
Q291bnRlckRpcmVjdGl2ZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3Jk
aW5hdGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dE1hcmtlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2Vz
RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjpyZW1v
dmVSZXNvdXJjZXNGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRp
YWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmg6CisKIDIwMTQtMDMtMjUgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUGxheWluZyB2aWRlbyBkb2VzIG5v
dCBkaXNhYmxlIGRpc3BsYXkgc2xlZXAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFBvbHlnb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDggKzc5LDggQEAgc3RhdGljIHVuc2lnbmVkIGZpbmROZXh0RWRnZVZlcnRl
eEluZGV4KAogICAgIHJldHVybiB2ZXJ0ZXhJbmRleDI7CiB9CiAKLUZsb2F0UG9seWdvbjo6Rmxv
YXRQb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1
bGUgZmlsbFJ1bGUpCi0gICAgOiBtX3ZlcnRpY2VzKHZlcnRpY2VzKQorRmxvYXRQb2x5Z29uOjpG
bG9hdFBvbHlnb24oc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMs
IFdpbmRSdWxlIGZpbGxSdWxlKQorICAgIDogbV92ZXJ0aWNlcyhzdGQ6Om1vdmUodmVydGljZXMp
KQogICAgICwgbV9maWxsUnVsZShmaWxsUnVsZSkKIHsKICAgICB1bnNpZ25lZCBuVmVydGljZXMg
PSBudW1iZXJPZlZlcnRpY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvbHlnb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvbHlnb24uaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDggKzM1LDcgQEAKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNsdWRlICJW
YWx1ZVRvU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0
NCw3IEBAIGNsYXNzIEZsb2F0UG9seWdvbkVkZ2U7CiAKIGNsYXNzIEZsb2F0UG9seWdvbiB7CiBw
dWJsaWM6Ci0gICAgRmxvYXRQb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2
ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpOworICAgIEZsb2F0UG9seWdvbihzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpOwog
CiAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuICgqbV92ZXJ0aWNlcylbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWZXJ0
aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXMtPnNpemUoKTsgfQpAQCAtNjcsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFpbnNOb25aZXJvKGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRXZlbk9kZChjb25zdCBGbG9hdFBvaW50JikgY29u
c3Q7CiAKLSAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtX3ZlcnRpY2VzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IG1fdmVydGljZXM7CiAgICAgV2luZFJ1
bGUgbV9maWxsUnVsZTsKICAgICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsKICAgICBib29sIG1f
ZW1wdHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRp
b24uaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQ
YXRoT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRl
ICJCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhy
ZWFkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTEgKzQwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPEZs
b3dUaHJlYWRDb250cm9sbGVyPiBGbG93VGhyZWFkQ29udHJvbGxlcjo6Y3JlYXRlKFJlbmRlclZp
ZXcqIHZpZXcpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG93VGhyZWFkQ29udHJvbGxl
cih2aWV3KSk7Ci19Ci0KIEZsb3dUaHJlYWRDb250cm9sbGVyOjpGbG93VGhyZWFkQ29udHJvbGxl
cihSZW5kZXJWaWV3KiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCiAgICAgLCBtX2N1cnJlbnRS
ZW5kZXJGbG93VGhyZWFkKDApCkBAIC02MCw3ICs1NSw3IEBAIEZsb3dUaHJlYWRDb250cm9sbGVy
Ojp+Rmxvd1RocmVhZENvbnRyb2wKIFJlbmRlck5hbWVkRmxvd1RocmVhZCYgRmxvd1RocmVhZENv
bnRyb2xsZXI6OmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCiB7CiAgICAgaWYgKCFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QpCi0gICAg
ICAgIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCA9IGFkb3B0UHRyKG5ldyBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWRMaXN0KCkpOworICAgICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q+KCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0
LT5iZWdpbigpLCBlbmQgPSBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZs
b3dSZW5kZXJlciA9ICppdGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb3dUaHJlYWRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw4ICszMSw4IEBACiAjZGVmaW5lIEZsb3dUaHJlYWRDb250cm9sbGVyX2gKIAogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJOYW1lZEZsb3dUaHJl
YQogY2xhc3MgRmxvd1RocmVhZENvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZsb3dUaHJlYWRDb250cm9sbGVy
PiBjcmVhdGUoUmVuZGVyVmlldyopOworICAgIGV4cGxpY2l0IEZsb3dUaHJlYWRDb250cm9sbGVy
KFJlbmRlclZpZXcqKTsKICAgICB+Rmxvd1RocmVhZENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGN1cnJlbnRSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50UmVuZGVyRmxvd1RocmVhZDsgfQpAQCAtOTIsNyArOTIsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEZsb3dUaHJlYWRDb250cm9sbGVyKFJlbmRl
clZpZXcqKTsKICAgICB2b2lkIHVwZGF0ZUZsb3dUaHJlYWRzQ2hhaW5JZk5lY2Vzc2FyeSgpOwog
ICAgIHZvaWQgcmVzZXRGbG93VGhyZWFkc1dpdGhBdXRvSGVpZ2h0UmVnaW9ucygpOwogCkBAIC0x
MDEsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2N1cnJlbnRS
ZW5kZXJGbG93VGhyZWFkOwogICAgIGJvb2wgbV9pc1JlbmRlck5hbWVkRmxvd1RocmVhZE9yZGVy
RGlydHk7CiAgICAgdW5zaWduZWQgbV9mbG93VGhyZWFkc1dpdGhBdXRvTG9naWNhbEhlaWdodFJl
Z2lvbnM7Ci0gICAgT3duUHRyPFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q+IG1fcmVuZGVyTmFt
ZWRGbG93VGhyZWFkTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyTmFtZWRGbG93VGhy
ZWFkTGlzdD4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0OwogICAgIEhhc2hNYXA8Y29uc3Qg
RWxlbWVudCosIFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IG1fbWFwTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2Nh
dGlvbi5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJUZXh0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
LDcgKzkyLDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZQogICAg
ICwgbV9pc092ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBj
b3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KLSAgICBtX3JlY3RCYXNl
ZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcg
Tm9kZVNldCgqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOworICAgIG1fcmVjdEJh
c2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwog
fQogCiBIaXRUZXN0UmVzdWx0Ojp+SGl0VGVzdFJlc3VsdCgpCkBAIC0xMTEsNyArMTExLDcgQEAg
SGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KAogICAgIG1faXNPdmVyV2lk
Z2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVT
ZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0LgotICAgIG1fcmVjdEJhc2VkVGVzdFJlc3VsdCA9
IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IG5ldyBOb2RlU2V0KCpvdGhl
ci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7CisgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0
ID0gb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0
Pigqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiAKICAgICByZXR1cm4g
KnRoaXM7CiB9CkBAIC02MzcsMTQgKzYzNywxNCBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVu
ZChjb25zdCBIaXRUZXN0CiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVz
dWx0OjpyZWN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVjdEJhc2Vk
VGVzdFJlc3VsdCkKLSAgICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIobmV3
IE5vZGVTZXQpOworICAgICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAK
IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVSZWN0QmFzZWRU
ZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fcmVjdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAg
bV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIobmV3IE5vZGVTZXQpOworICAgICAgICBt
X3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAg
cmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOSBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgogI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xs
YmFyPiBtX3Njcm9sbGJhcjsKICAgICBib29sIG1faXNPdmVyV2lkZ2V0OyAvLyBSZXR1cm5zIHRy
dWUgaWYgd2UgYXJlIG92ZXIgYSB3aWRnZXQgKGFuZCBub3QgaW4gdGhlIGJvcmRlci9wYWRkaW5n
IGFyZWEgb2YgYSBSZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUpLgogCi0gICAgbXV0YWJsZSBPd25Q
dHI8Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OworICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPE5vZGVTZXQ+IG1fcmVjdEJhc2VkVGVzdFJlc3VsdDsKIH07CiAKIFN0cmluZyBkaXNw
bGF5U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwCShy
ZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1
ZGUgIkhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIgogCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJv
bGxlci5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw3ICs0MSw3
IEBAIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVF1YWxpdHlDb250cm9sbGVyKQogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+IGNyZWF0ZShjb25z
dCBSZW5kZXJWaWV3JiByZW5kZXJWaWV3KSB7IHJldHVybiBhZG9wdFB0cihuZXcgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcihyZW5kZXJWaWV3KSk7IH0KKyAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcmKTsKIAogICAgIGJvb2wgc2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSos
IGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJl
cldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3Zl
T2JqZWN0KCZyZW5kZXJlcik7IH0KQEAgLTUxLDggKzUwLDYgQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3Qgdm9pZCosIExheW91dFNpemU+IExheWVyU2l6ZU1hcDsKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXA+IE9iamVj
dExheWVyU2l6ZU1hcDsKIAotICAgIGV4cGxpY2l0IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoY29u
c3QgUmVuZGVyVmlldyYpOwotCiAgICAgdm9pZCByZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9i
amVjdCosIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyKTsKICAgICB2
b2lkIHNldChSZW5kZXJCb3hNb2RlbE9iamVjdCosIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNv
bnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCBoaWdoUXVhbGl0
eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+Jik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE2NjI0
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJCbG9jayA6IHB1
YmxpYyBSZQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyQmxvY2spID09IHNpemVvZihT
YW1lU2l6ZUFzUmVuZGVyQmxvY2spLCBSZW5kZXJCbG9ja19zaG91bGRfc3RheV9zbWFsbCk7CiAK
LXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIE93blB0cjxDb2x1bW5JbmZv
Pj4gQ29sdW1uSW5mb01hcDsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCos
IHN0ZDo6dW5pcXVlX3B0cjxDb2x1bW5JbmZvPj4gQ29sdW1uSW5mb01hcDsKIHN0YXRpYyBDb2x1
bW5JbmZvTWFwKiBnQ29sdW1uSW5mb01hcCA9IDA7CiAKIHN0YXRpYyBUcmFja2VkRGVzY2VuZGFu
dHNNYXAqIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAgPSAwOwpAQCAtOTgsNyArOTgsNyBAQCBz
dGF0aWMgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiBnUGVyY2VudEhlCiBzdGF0aWMgVHJhY2tlZENv
bnRhaW5lck1hcCogZ1Bvc2l0aW9uZWRDb250YWluZXJNYXAgPSAwOwogc3RhdGljIFRyYWNrZWRD
b250YWluZXJNYXAqIGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwID0gMDsKICAgICAKLXR5cGVk
ZWYgV1RGOjpIYXNoTWFwPFJlbmRlckJsb2NrKiwgT3duUHRyPExpc3RIYXNoU2V0PFJlbmRlcklu
bGluZSo+Pj4gQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwOwordHlwZWRlZiBXVEY6Okhhc2hN
YXA8UmVuZGVyQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5l
Kj4+PiBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA7CiAKIHR5cGVkZWYgV1RGOjpIYXNoU2V0
PFJlbmRlckJsb2NrKj4gRGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQ7CiBzdGF0aWMgaW50IGdE
ZWxheVVwZGF0ZVNjcm9sbEluZm8gPSAwOwpAQCAtMTk2LDcgKzE5Niw3IEBAIFJlbmRlckJsb2Nr
OjpSZW5kZXJCbG9jayhEb2N1bWVudCYgZG9jdW0KIAogc3RhdGljIHZvaWQgcmVtb3ZlQmxvY2tG
cm9tRGVzY2VuZGFudEFuZENvbnRhaW5lck1hcHMoUmVuZGVyQmxvY2sqIGJsb2NrLCBUcmFja2Vk
RGVzY2VuZGFudHNNYXAqJiBkZXNjZW5kYW50TWFwLCBUcmFja2VkQ29udGFpbmVyTWFwKiYgY29u
dGFpbmVyTWFwKQogewotICAgIGlmIChPd25QdHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+
IGRlc2NlbmRhbnRTZXQgPSBkZXNjZW5kYW50TWFwLT50YWtlKGJsb2NrKSkgeworICAgIGlmIChz
dGQ6OnVuaXF1ZV9wdHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+IGRlc2NlbmRhbnRTZXQg
PSBkZXNjZW5kYW50TWFwLT50YWtlKGJsb2NrKSkgewogICAgICAgICBUcmFja2VkUmVuZGVyZXJM
aXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gZGVzY2VuZGFudFNldC0+ZW5kKCk7CiAgICAgICAg
IGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGRlc2NlbmRhbnQgPSBk
ZXNjZW5kYW50U2V0LT5iZWdpbigpOyBkZXNjZW5kYW50ICE9IGVuZDsgKytkZXNjZW5kYW50KSB7
CiAgICAgICAgICAgICBUcmFja2VkQ29udGFpbmVyTWFwOjppdGVyYXRvciBpdCA9IGNvbnRhaW5l
ck1hcC0+ZmluZCgqZGVzY2VuZGFudCk7CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpmaW5pc2hEZWxheVVwZGF0ZVNjcm9sCiAgICAgaWYgKGdEZWxheVVwZGF0ZVNjcm9s
bEluZm8gPT0gMCkgewogICAgICAgICBBU1NFUlQoZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0
KTsKIAotICAgICAgICBPd25QdHI8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQ+IGluZm9TZXQo
YWRvcHRQdHIoZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0KSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldD4gaW5mb1NldChnRGVsYXllZFVwZGF0
ZVNjcm9sbEluZm9TZXQpOwogICAgICAgICBnRGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQgPSAw
OwogCiAgICAgICAgIGZvciAoRGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQ6Oml0ZXJhdG9yIGl0
ID0gaW5mb1NldC0+YmVnaW4oKTsgaXQgIT0gaW5mb1NldC0+ZW5kKCk7ICsraXQpIHsKQEAgLTI0
MjYsNyArMjQyNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXQK
ICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogY29udGludWF0aW9ucyA9IHRhYmxlLT5n
ZXQodGhpcyk7CiAgICAgaWYgKCFjb250aW51YXRpb25zKSB7CiAgICAgICAgIGNvbnRpbnVhdGlv
bnMgPSBuZXcgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj47Ci0gICAgICAgIHRhYmxlLT5zZXQo
dGhpcywgYWRvcHRQdHIoY29udGludWF0aW9ucykpOworICAgICAgICB0YWJsZS0+c2V0KHRoaXMs
IHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPj4oY29udGludWF0aW9u
cykpOwogICAgIH0KICAgICAKICAgICBjb250aW51YXRpb25zLT5hZGQoZmxvdyk7CkBAIC0yNDUx
LDcgKzI0NTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRpbnVhdGlvbk91dGxpCiAg
ICAgaWYgKHRhYmxlLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAg
T3duUHRyPExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+PiBjb250aW51YXRpb25zID0gdGFibGUt
PnRha2UodGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0PFJlbmRlcklubGlu
ZSo+PiBjb250aW51YXRpb25zID0gdGFibGUtPnRha2UodGhpcyk7CiAgICAgaWYgKCFjb250aW51
YXRpb25zKQogICAgICAgICByZXR1cm47CiAKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6Omluc2VydEludG9UcmFja2VkUmVuZGUKICAgICBUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldCogZGVzY2VuZGFudFNldCA9IGRlc2NlbmRhbnRzTWFwLT5nZXQodGhpcyk7CiAgICAg
aWYgKCFkZXNjZW5kYW50U2V0KSB7CiAgICAgICAgIGRlc2NlbmRhbnRTZXQgPSBuZXcgVHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ7Ci0gICAgICAgIGRlc2NlbmRhbnRzTWFwLT5zZXQodGhpcywg
YWRvcHRQdHIoZGVzY2VuZGFudFNldCkpOworICAgICAgICBkZXNjZW5kYW50c01hcC0+c2V0KHRo
aXMsIHN0ZDo6dW5pcXVlX3B0cjxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oZGVzY2VuZGFu
dFNldCkpOwogICAgIH0KICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNj
ZW5kYW50KS5pc05ld0VudHJ5OwogICAgIGlmICghYWRkZWQpIHsKQEAgLTI4NjgsNyArMjg2OCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6Omluc2VydEludG9UcmFja2VkUmVuZGUKICAgICBIYXNoU2V0
PFJlbmRlckJsb2NrKj4qIGNvbnRhaW5lclNldCA9IGNvbnRhaW5lck1hcC0+Z2V0KCZkZXNjZW5k
YW50KTsKICAgICBpZiAoIWNvbnRhaW5lclNldCkgewogICAgICAgICBjb250YWluZXJTZXQgPSBu
ZXcgSGFzaFNldDxSZW5kZXJCbG9jayo+OwotICAgICAgICBjb250YWluZXJNYXAtPnNldCgmZGVz
Y2VuZGFudCwgYWRvcHRQdHIoY29udGFpbmVyU2V0KSk7CisgICAgICAgIGNvbnRhaW5lck1hcC0+
c2V0KCZkZXNjZW5kYW50LCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxSZW5kZXJCbG9jayo+Pihj
b250YWluZXJTZXQpKTsKICAgICB9CiAgICAgQVNTRVJUKCFjb250YWluZXJTZXQtPmNvbnRhaW5z
KHRoaXMpKTsKICAgICBjb250YWluZXJTZXQtPmFkZCh0aGlzKTsKQEAgLTI4NzksNyArMjg3OSw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZyb21UcmFja2VkUmVuZGUKICAgICBpZiAoIWRl
c2NlbmRhbnRzTWFwKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgT3duUHRyPEhhc2hTZXQ8
UmVuZGVyQmxvY2sqPj4gY29udGFpbmVyU2V0ID0gY29udGFpbmVyTWFwLT50YWtlKCZkZXNjZW5k
YW50KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxSZW5kZXJCbG9jayo+PiBjb250YWlu
ZXJTZXQgPSBjb250YWluZXJNYXAtPnRha2UoJmRlc2NlbmRhbnQpOwogICAgIGlmICghY29udGFp
bmVyU2V0KQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0zNTI5LDcgKzM1MjksNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpzZXRDb21wdXRlZENvbHVtbkNvdW50CiAgICAgICAgICAgICBpZiAoIWdD
b2x1bW5JbmZvTWFwKQogICAgICAgICAgICAgICAgIGdDb2x1bW5JbmZvTWFwID0gbmV3IENvbHVt
bkluZm9NYXA7CiAgICAgICAgICAgICBpbmZvID0gbmV3IENvbHVtbkluZm87Ci0gICAgICAgICAg
ICBnQ29sdW1uSW5mb01hcC0+YWRkKHRoaXMsIGFkb3B0UHRyKGluZm8pKTsKKyAgICAgICAgICAg
IGdDb2x1bW5JbmZvTWFwLT5hZGQodGhpcywgc3RkOjp1bmlxdWVfcHRyPENvbHVtbkluZm8+KGlu
Zm8pKTsKICAgICAgICAgICAgIHNldEhhc0NvbHVtbnModHJ1ZSk7CiAgICAgICAgIH0KICAgICAg
ICAgaW5mby0+c2V0RGVzaXJlZENvbHVtbkNvdW50KGNvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIkdhcFJlY3RzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5j
bHVkZSAiVGV4dFJ1bi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ2LDggKzQ2LDggQEAgc3RydWN0IEJpZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiB0
eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVuZGVyQm94KiwgMTY+IFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0OwotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBPd25Q
dHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+PiBUcmFja2VkRGVzY2VuZGFudHNNYXA7Ci10
eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBPd25QdHI8SGFzaFNldDxSZW5k
ZXJCbG9jayo+Pj4gVHJhY2tlZENvbnRhaW5lck1hcDsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPGNv
bnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNo
U2V0Pj4gVHJhY2tlZERlc2NlbmRhbnRzTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4+IFRyYWNr
ZWRDb250YWluZXJNYXA7CiAKIGVudW0gQ2FyZXRUeXBlIHsgQ3Vyc29yQ2FyZXQsIERyYWdDYXJl
dCB9OwogZW51bSBDb250YWluaW5nQmxvY2tTdGF0ZSB7IE5ld0NvbnRhaW5pbmdCbG9jaywgU2Ft
ZUNvbnRhaW5pbmdCbG9jayB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDM0LDcgKzIw
MzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqCiAKIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRp
bmdPYmplY3RzID0gYWRvcHRQdHIobmV3IEZsb2F0aW5nT2JqZWN0cygqdGhpcykpOworICAgIG1f
ZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlz
KTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCShyZXZpc2lv
biAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaW5lQm94
TGlzdC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJUcmFpbGlu
Z09iamVjdHMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTk3LDcgKzU5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgT3du
UHRyPEZsb2F0aW5nT2JqZWN0cz4gbV9mbG9hdGluZ09iamVjdHM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEZsb2F0aW5nT2JqZWN0cz4gbV9mbG9hdGluZ09iamVjdHM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPiBtX3JhcmVCbG9ja0Zsb3dEYXRhOwogICAgIFJl
bmRlckxpbmVCb3hMaXN0IG1fbGluZUJveGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW1wbGVM
aW5lTGF5b3V0OjpMYXlvdXQ+IG1fc2ltcGxlTGluZUxheW91dDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hSZWdpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveFJlZ2lvbkluZm8uaAkocmV2aXNpb24gMTY2MjQ3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveFJlZ2lvbkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBSZW5kZXJCb3hSZWdpb25JbmZv
X2gKIAogI2luY2x1ZGUgIlJlbmRlck92ZXJmbG93LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEyICsxMTQs
MTIgQEAgdm9pZCBSZW5kZXJCdXR0b246OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogCiAgICAgaWYg
KCFtX2RlZmF1bHQgJiYgdGhlbWUoKS5pc0RlZmF1bHQodGhpcykpIHsKICAgICAgICAgaWYgKCFt
X3RpbWVyKQotICAgICAgICAgICAgbV90aW1lciA9IGFkb3B0UHRyKG5ldyBUaW1lcjxSZW5kZXJC
dXR0b24+KHRoaXMsICZSZW5kZXJCdXR0b246OnRpbWVyRmlyZWQpKTsKKyAgICAgICAgICAgIG1f
dGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPFJlbmRlckJ1dHRvbj4+KHRoaXMsICZSZW5k
ZXJCdXR0b246OnRpbWVyRmlyZWQpOwogICAgICAgICBtX3RpbWVyLT5zdGFydFJlcGVhdGluZygw
LjAzKTsKICAgICAgICAgbV9kZWZhdWx0ID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fZGVmYXVs
dCAmJiAhdGhlbWUoKS5pc0RlZmF1bHQodGhpcykpIHsKICAgICAgICAgbV9kZWZhdWx0ID0gZmFs
c2U7Ci0gICAgICAgIG1fdGltZXIuY2xlYXIoKTsKKyAgICAgICAgbV90aW1lciA9IG51bGxwdHI7
CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
CShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlJlbmRl
ckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc5LDcg
Kzc5LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIG1fYnV0dG9uVGV4dDsK
ICAgICBSZW5kZXJCbG9jayogbV9pbm5lcjsKIAotICAgIE93blB0cjxUaW1lcjxSZW5kZXJCdXR0
b24+PiBtX3RpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcjxSZW5kZXJCdXR0b24+PiBt
X3RpbWVyOwogICAgIGJvb2wgbV9kZWZhdWx0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0cjxDb3VudGVyTm9kZT4+
IENvdW50ZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgT3duUHRy
PENvdW50ZXJNYXA+PiBDb3VudGVyTWFwczsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJP
YmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlck1hcD4+IENvdW50ZXJNYXBzOwogCiBzdGF0
aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgYWx3YXlzQ3JlYXRlQ291bnRlcik7CiAKQEAgLTMy
NCw3ICszMjQsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kCiAg
ICAgICAgIG5vZGVNYXAgPSBjb3VudGVyTWFwcygpLmdldChlbGVtZW50KTsKICAgICBlbHNlIHsK
ICAgICAgICAgbm9kZU1hcCA9IG5ldyBDb3VudGVyTWFwOwotICAgICAgICBjb3VudGVyTWFwcygp
LnNldChlbGVtZW50LCBhZG9wdFB0cihub2RlTWFwKSk7CisgICAgICAgIGNvdW50ZXJNYXBzKCku
c2V0KGVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyTWFwPihub2RlTWFwKSk7CiAgICAg
ICAgIGVsZW1lbnQtPnNldEhhc0NvdW50ZXJOb2RlTWFwKHRydWUpOwogICAgIH0KICAgICBub2Rl
TWFwLT5zZXQoaWRlbnRpZmllciwgbmV3Tm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyMywxMSArMzIzLDExIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5
ZXJUb1IKIAogICAgIGlmIChuZWVkc0xheWVyVXBkYXRlKSB7CiAgICAgICAgIGlmICghbV9sYXll
clRvUmVnaW9uTWFwKQotICAgICAgICAgICAgbV9sYXllclRvUmVnaW9uTWFwID0gYWRvcHRQdHIo
bmV3IExheWVyVG9SZWdpb25NYXAoKSk7CisgICAgICAgICAgICBtX2xheWVyVG9SZWdpb25NYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVG9SZWdpb25NYXA+KCk7CiAgICAgICAgIG1fbGF5ZXJU
b1JlZ2lvbk1hcC0+c3dhcChsYXllclRvUmVnaW9uTWFwKTsKIAogICAgICAgICBpZiAoIW1fcmVn
aW9uVG9MYXllckxpc3RNYXApCi0gICAgICAgICAgICBtX3JlZ2lvblRvTGF5ZXJMaXN0TWFwID0g
YWRvcHRQdHIobmV3IFJlZ2lvblRvTGF5ZXJMaXN0TWFwKCkpOworICAgICAgICAgICAgbV9yZWdp
b25Ub0xheWVyTGlzdE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uVG9MYXllckxpc3RNYXA+
KCk7CiAgICAgICAgIG1fcmVnaW9uVG9MYXllckxpc3RNYXAtPnN3YXAocmVnaW9uVG9MYXllckxp
c3RNYXApOwogICAgIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6bG9naWNhbFdpZHRoQ2hhbmcKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0
KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKIAogICAgICAgICAvLyBXZSBoYXZl
IG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZvciB0aGlzIHJlZ2lvbiBzbyB3ZSBuZWVkIHRvIGRv
IGl0LgotICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9IHJlZ2lv
bi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJl
Z2lvbkluZm8oYmxvY2spOwogICAgICAgICBpZiAoIW9sZEluZm8pIHsKICAgICAgICAgICAgIHJl
bGF5b3V0Q2hpbGRyZW4gPSByYW5nZUludmFsaWRhdGVkOwogICAgICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCShyZXZp
c2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsMTAgKzMwMywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAg
fTsKIAogICAgIC8vIE1hcCBhIGxheWVyIHRvIHRoZSByZWdpb24gaW4gd2hpY2ggdGhlIGxheWVy
IGlzIHBhaW50ZWQuCi0gICAgT3duUHRyPExheWVyVG9SZWdpb25NYXA+IG1fbGF5ZXJUb1JlZ2lv
bk1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJUb1JlZ2lvbk1hcD4gbV9sYXllclRvUmVn
aW9uTWFwOwogCiAgICAgLy8gTWFwIGEgcmVnaW9uIHRvIHRoZSBsaXN0IG9mIGxheWVycyB0aGF0
IHBhaW50IGluIHRoYXQgcmVnaW9uLgotICAgIE93blB0cjxSZWdpb25Ub0xheWVyTGlzdE1hcD4g
bV9yZWdpb25Ub0xheWVyTGlzdE1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uVG9MYXll
ckxpc3RNYXA+IG1fcmVnaW9uVG9MYXllckxpc3RNYXA7CiAKICAgICAvLyBNYXAgYSBib3ggdG8g
dGhlIGxpc3Qgb2YgcmVnaW9ucyBpbiB3aGljaCB0aGUgYm94IGlzIHJlbmRlcmVkLgogICAgIHR5
cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVy
UmVnaW9uUmFuZ2VNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsy
MjksNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKGNvbnN0IFJlbmRlCiAgICAgCiAg
ICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9z
aXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVw
Lm1fdHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KHQpKTsKKyAg
ICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHQpOwogICAgIGVsc2UKICAgICAgICAgc3RlcC5tX29mZnNldCA9IExheW91dFNpemUo
dC5lKCksIHQuZigpKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2hWaWV3KGNvbnN0IFIKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBt
X21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgc3RlcC5tX29mZnNldCA9IHNjcm9s
bE9mZnNldDsKICAgICBpZiAodCkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IGFkb3B0UHRy
KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgqdCkpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3Jt
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAg
IHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQs
NyArNjQsNyBAQCBzdHJ1Y3QgUmVuZGVyR2VvbWV0cnlNYXBTdGVwIHsKICAgICB9CiAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwogICAgIExheW91dFNpemUgbV9vZmZzZXQ7Ci0g
ICAgT3duUHRyPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBtX3RyYW5zZm9ybTsgLy8gSW5jbHVkZXMg
b2Zmc2V0IGlmIG5vbi1udWxsLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4gbV90cmFuc2Zvcm07IC8vIEluY2x1ZGVzIG9mZnNldCBpZiBub24tbnVsbC4KICAgICBi
b29sIG1fYWNjdW11bGF0aW5nVHJhbnNmb3JtOwogICAgIGJvb2wgbV9pc05vblVuaWZvcm07IC8v
IE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgaW5wdXQgcG9pbnQsIGUuZy4gYmVjYXVzZSBvZiBDU1Mg
Y29sdW1ucy4KICAgICBib29sIG1faXNGaXhlZFBvc2l0aW9uOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewotLy8g
VGhpcyBpcyByZXF1aXJlZCBmb3IgYSBzdHJ1Y3Qgd2l0aCBPd25QdHIuIFdlIGtub3cgUmVuZGVy
R2VvbWV0cnlNYXBTdGVwIGlzIHNpbXBsZSBlbm91Z2ggdGhhdAorLy8gVGhpcyBpcyByZXF1aXJl
ZCBmb3IgYSBzdHJ1Y3Qgd2l0aCBzdGQ6OnVuaXF1ZV9wdHI8Pi4gV2Uga25vdyBSZW5kZXJHZW9t
ZXRyeU1hcFN0ZXAgaXMgc2ltcGxlIGVub3VnaCB0aGF0CiAvLyBpbml0aWFsaXppbmcgdG8gMCBh
bmQgbW92aW5nIHdpdGggbWVtY3B5IChhbmQgdGhlbiBub3QgZGVzdHJ1Y3RpbmcgdGhlIG9yaWdp
bmFsKSB3aWxsIHdvcmsuCiB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6
UmVuZGVyR2VvbWV0cnlNYXBTdGVwPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHJldmlzaW9uIDE2
NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgUGFzc093blB0cjxHcmlkQ29vcmRpbmF0ZT4gbmV4dEVtcHR5R3JpZEFyZWEo
KQorICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gbmV4dEVtcHR5R3JpZEFyZWEo
KQogICAgIHsKICAgICAgICAgaWYgKG1fZ3JpZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyNywxMCArMTI3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgZm9yICg7
IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJh
Y2tJbmRleCkgewogICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGlsZHJl
biA9IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVtbkluZGV4XTsKICAgICAgICAgICAgIGlmIChj
aGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8R3JpZENvb3JkaW5h
dGU+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBHcmlkQ29vcmRpbmF0ZShHcmlkU3BhbihtX3Jvd0lu
ZGV4LCBtX3Jvd0luZGV4KSwgR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCkp
KTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZENvb3JkaW5hdGU+IHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JpZENvb3JkaW5hdGU+KEdyaWRTcGFuKG1fcm93SW5kZXgs
IG1fcm93SW5kZXgpLCBHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4KSk7CiAg
ICAgICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5p
dGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5k
IG92ZXIuCiAgICAgICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJbmRleDsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
Ojptb3ZlKHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC02NjcsOCArNjY3LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1z
T25HcmlkKCkKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBtX29yZGVySXRlcmF0b3IuZmly
c3QoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAv
LyBGSVhNRTogV2UgbmV2ZXIgcmUtcmVzb2x2ZSBwb3NpdGlvbnMgaWYgdGhlIGdyaWQgaXMgZ3Jv
d24gZHVyaW5nIGF1dG8tcGxhY2VtZW50IHdoaWNoIG1heSBsZWFkIGF1dG8gLyA8aW50ZWdlcj4K
ICAgICAgICAgLy8gcG9zaXRpb25zIHRvIG5vdCBtYXRjaCB0aGUgYXV0aG9yJ3MgaW50ZW50LiBU
aGUgc3BlY2lmaWNhdGlvbiBpcyB1bmNsZWFyIG9uIHdoYXQgc2hvdWxkIGJlIGRvbmUgaW4gdGhp
cyBjYXNlLgotICAgICAgICBPd25QdHI8R3JpZFNwYW4+IHJvd1Bvc2l0aW9ucyA9IHJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JSb3dzKTsKLSAgICAgICAgT3duUHRyPEdy
aWRTcGFuPiBjb2x1bW5Qb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShj
aGlsZCwgRm9yQ29sdW1ucyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gcm93
UG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvclJvd3Mp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJl
c29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICAgICAg
aWYgKCFyb3dQb3NpdGlvbnMgfHwgIWNvbHVtblBvc2l0aW9ucykgewogICAgICAgICAgICAgR3Jp
ZFNwYW4qIG1ham9yQXhpc1Bvc2l0aW9ucyA9IChhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0
aW9uKCkgPT0gRm9yQ29sdW1ucykgPyBjb2x1bW5Qb3NpdGlvbnMuZ2V0KCkgOiByb3dQb3NpdGlv
bnMuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIW1ham9yQXhpc1Bvc2l0aW9ucykKQEAgLTcwOSw4
ICs3MDksOCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kCiAgICAg
ICAgICAgICBvcmRlclZhbHVlcy5hcHBlbmQob3JkZXIpOwogCiAgICAgICAgIC8vIFRoaXMgZnVu
Y3Rpb24gYnlwYXNzZXMgdGhlIGNhY2hlIChjYWNoZWRHcmlkQ29vcmRpbmF0ZSgpKSBhcyBpdCBp
cyB1c2VkIHRvIGJ1aWxkIGl0LgotICAgICAgICBPd25QdHI8R3JpZFNwYW4+IHJvd1Bvc2l0aW9u
cyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JSb3dzKTsKLSAgICAg
ICAgT3duUHRyPEdyaWRTcGFuPiBjb2x1bW5Qb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9u
c0Zyb21TdHlsZShjaGlsZCwgRm9yQ29sdW1ucyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkU3Bhbj4gcm93UG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hp
bGQsIEZvclJvd3MpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IGNvbHVtblBv
c2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JDb2x1bW5z
KTsKIAogICAgICAgICAvLyB8cG9zaXRpb25zfCBpcyAwIGlmIHdlIG5lZWQgdG8gcnVuIHRoZSBh
dXRvLXBsYWNlbWVudCBhbGdvcml0aG0uIE91ciBlc3RpbWF0aW9uIGlnbm9yZXMKICAgICAgICAg
Ly8gdGhpcyBjYXNlIGFzIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gd2lsbCBncm93IHRo
ZSBncmlkIGFzIG5lZWRlZC4KQEAgLTczMCwxNSArNzMwLDE1IEBAIHZvaWQgUmVuZGVyR3JpZDo6
cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmQKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRN
YWpvckF4aXNJdGVtc09uR3JpZChWZWN0b3I8UmVuZGVyQm94Kj4gYXV0b0dyaWRJdGVtcykKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1dG9HcmlkSXRlbXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgT3duUHRyPEdyaWRTcGFuPiBtYWpvckF4aXNQb3NpdGlvbnMgPSByZXNvbHZlR3Jp
ZFBvc2l0aW9uc0Zyb21TdHlsZShhdXRvR3JpZEl0ZW1zW2ldLCBhdXRvUGxhY2VtZW50TWFqb3JB
eGlzRGlyZWN0aW9uKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IG1ham9y
QXhpc1Bvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGF1dG9HcmlkSXRl
bXNbaV0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSk7CiAgICAgICAgIEdyaWRJ
dGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24o
KSwgbWFqb3JBeGlzUG9zaXRpb25zLT5pbml0aWFsUG9zaXRpb25JbmRleCk7Ci0gICAgICAgIGlm
IChPd25QdHI8R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0RW1w
dHlHcmlkQXJlYSgpKSB7CisgICAgICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8R3JpZENvb3JkaW5h
dGU+IGVtcHR5R3JpZEFyZWEgPSBpdGVyYXRvci5uZXh0RW1wdHlHcmlkQXJlYSgpKSB7CiAgICAg
ICAgICAgICBpbnNlcnRJdGVtSW50b0dyaWQoYXV0b0dyaWRJdGVtc1tpXSwgZW1wdHlHcmlkQXJl
YS0+cm93cy5pbml0aWFsUG9zaXRpb25JbmRleCwgZW1wdHlHcmlkQXJlYS0+Y29sdW1ucy5pbml0
aWFsUG9zaXRpb25JbmRleCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGdyb3dHcmlkKGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSk7Ci0gICAg
ICAgIE93blB0cjxHcmlkQ29vcmRpbmF0ZT4gZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRF
bXB0eUdyaWRBcmVhKCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4g
ZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKCk7CiAgICAgICAgIEFT
U0VSVChlbXB0eUdyaWRBcmVhKTsKICAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGF1dG9Hcmlk
SXRlbXNbaV0sIGVtcHR5R3JpZEFyZWEtPnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXgsIGVtcHR5
R3JpZEFyZWEtPmNvbHVtbnMuaW5pdGlhbFBvc2l0aW9uSW5kZXgpOwogICAgIH0KQEAgLTc1Miwx
MyArNzUyLDEzIEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbXMKIAog
dm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKFJlbmRlckJveCog
Z3JpZEl0ZW0pCiB7Ci0gICAgT3duUHRyPEdyaWRTcGFuPiBtaW5vckF4aXNQb3NpdGlvbnMgPSBy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1pbm9y
QXhpc0RpcmVjdGlvbigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IG1pbm9yQXhp
c1Bvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGdyaWRJdGVtLCBhdXRv
UGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpOwogICAgIEFTU0VSVCghcmVzb2x2ZUdyaWRQ
b3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rp
b24oKSkpOwogICAgIHNpemVfdCBtaW5vckF4aXNJbmRleCA9IDA7CiAgICAgaWYgKG1pbm9yQXhp
c1Bvc2l0aW9ucykgewogICAgICAgICBtaW5vckF4aXNJbmRleCA9IG1pbm9yQXhpc1Bvc2l0aW9u
cy0+aW5pdGlhbFBvc2l0aW9uSW5kZXg7CiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvciht
X2dyaWQsIGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSwgbWlub3JBeGlzSW5kZXgp
OwotICAgICAgICBpZiAoT3duUHRyPEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRl
cmF0b3IubmV4dEVtcHR5R3JpZEFyZWEoKSkgeworICAgICAgICBpZiAoc3RkOjp1bmlxdWVfcHRy
PEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFy
ZWEoKSkgewogICAgICAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGdyaWRJdGVtLCBlbXB0eUdy
aWRBcmVhLT5yb3dzLmluaXRpYWxQb3NpdGlvbkluZGV4LCBlbXB0eUdyaWRBcmVhLT5jb2x1bW5z
LmluaXRpYWxQb3NpdGlvbkluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtNzY2LDcgKzc2Niw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRl
bU8KICAgICAgICAgY29uc3Qgc2l6ZV90IGVuZE9mTWFqb3JBeGlzID0gKGF1dG9QbGFjZW1lbnRN
YWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zKSA/IGdyaWRDb2x1bW5Db3VudCgpIDog
Z3JpZFJvd0NvdW50KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IG1ham9yQXhpc0luZGV4ID0gMDsg
bWFqb3JBeGlzSW5kZXggPCBlbmRPZk1ham9yQXhpczsgKyttYWpvckF4aXNJbmRleCkgewogICAg
ICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgYXV0b1BsYWNlbWVudE1ham9y
QXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNJbmRleCk7Ci0gICAgICAgICAgICBpZiAoT3duUHRy
PEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFy
ZWEoKSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4g
ZW1wdHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKCkpIHsKICAgICAgICAg
ICAgICAgICBpbnNlcnRJdGVtSW50b0dyaWQoZ3JpZEl0ZW0sIGVtcHR5R3JpZEFyZWEtPnJvd3Mu
aW5pdGlhbFBvc2l0aW9uSW5kZXgsIGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuaW5pdGlhbFBvc2l0
aW9uSW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTg2
NCw3ICs4NjQsNyBAQCBHcmlkU3BhbiBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uCiAg
ICAgcmV0dXJuIEdyaWRTcGFuKGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKTsKIH0K
IAotUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNG
cm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gUmVuZGVyR3Jp
ZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiBncmlkSXRl
bSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIHsKICAgICBjb25z
dCBHcmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlvbiA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBncmlkSXRlbS0+c3R5bGUoKS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBncmlkSXRlbS0+
c3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7CiAgICAgY29uc3QgR3JpZFBvc2l0aW9uU2lkZSBp
bml0aWFsUG9zaXRpb25TaWRlID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IENvbHVtblN0
YXJ0U2lkZSA6IFJvd1N0YXJ0U2lkZTsKQEAgLTg3Niw3ICs4NzYsNyBAQCBQYXNzT3duUHRyPEdy
aWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlCiAKICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLnNo
b3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpICYmIGZpbmFsUG9zaXRpb24u
c2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgaWYg
KHN0eWxlKCkuZ3JpZEF1dG9GbG93KCkgPT0gQXV0b0Zsb3dOb25lKQotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBHcmlkU3BhbigwLCAwKSk7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4oMCwgMCk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3QgZ2V0
IG91ciBncmlkIHBvc2l0aW9ucyB3aXRob3V0IHJ1bm5pbmcgdGhlIGF1dG8gcGxhY2VtZW50IGFs
Z29yaXRobS4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MDEsNyArOTAxLDcgQEAgUGFz
c093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZQogICAgIGlmIChyZXNvbHZlZEZp
bmFsUG9zaXRpb24gPCByZXNvbHZlZEluaXRpYWxQb3NpdGlvbikKICAgICAgICAgcmVzb2x2ZWRG
aW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb247CiAKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdyaWRTcGFuKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFs
UG9zaXRpb24pKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4ocmVzb2x2
ZWRJbml0aWFsUG9zaXRpb24sIHJlc29sdmVkRmluYWxQb3NpdGlvbik7CiB9CiAKIHNpemVfdCBS
ZW5kZXJHcmlkOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkgY29uc3QKQEAgLTk3
NiwxMCArOTc2LDEwIEBAIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnIK
ICAgICByZXR1cm4gMDsKIH0KIAotUGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVz
b2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlv
blNpZGUgc2lkZSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6
cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZl
ZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3Np
dGlvblNpZGUgc2lkZSkgY29uc3QKIHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkpCi0gICAg
ICAgIHJldHVybiBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVz
b2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
R3JpZFNwYW4+KHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uKTsKIAogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4oKSk7CiAgICAgQVNTRVJUKHBvc2l0
aW9uLnNwYW5Qb3NpdGlvbigpID4gMCk7CkBAIC05OTQsMTMgKzk5NCwxMyBAQCBQYXNzT3duUHRy
PEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNvbHZlCiAgICAgc2l6ZV90IHBvc2l0aW9uT2Zmc2V0
ID0gcG9zaXRpb24uc3BhblBvc2l0aW9uKCkgLSAxOwogICAgIGlmIChzaWRlID09IENvbHVtblN0
YXJ0U2lkZSB8fCBzaWRlID09IFJvd1N0YXJ0U2lkZSkgewogICAgICAgICBzaXplX3QgaW5pdGlh
bFJlc29sdmVkUG9zaXRpb24gPSBzdGQ6Om1heDxpbnQ+KDAsIHJlc29sdmVkT3Bwb3NpdGVQb3Np
dGlvbiAtIHBvc2l0aW9uT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUo
aW5pdGlhbFJlc29sdmVkUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRTcGFuPihpbml0aWFsUmVzb2x2ZWRQb3Np
dGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKICAgICB9CiAKLSAgICByZXR1cm4gR3Jp
ZFNwYW46OmNyZWF0ZShyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQ
b3NpdGlvbiArIHBvc2l0aW9uT2Zmc2V0KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmlkU3Bhbj4ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b24gKyBwb3NpdGlvbk9mZnNldCk7CiB9CiAKLVBhc3NPd25QdHI8R3JpZFNwYW4+IFJlbmRlckdy
aWQ6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihz
aXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0
aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNw
YW4+IFJlbmRlckdyaWQ6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHBvc2l0aW9uLmlzU3BhbigpKTsKICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExp
bmUoKS5pc051bGwoKSk7CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBQYXNzT3duUHRyPEdyaWRTcGFu
PiBSZW5kZXJHcmlkOjpyZXNvbHZlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbmFtZWQgZ3JpZCBs
aW5lIG9mIHRoYXQgbmFtZSwgd2UgcmVzb2x2ZSB0aGUgcG9zaXRpb24gdG8gJ2F1dG8nICh3aGlj
aCBpcyBlcXVpdmFsZW50IHRvICdzcGFuIDEnIGluIHRoaXMgY2FzZSkuCiAgICAgLy8gU2VlIGh0
dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEzSnVuLzAzOTQu
aHRtbC4KICAgICBpZiAoaXQgPT0gZ3JpZExpbmVzTmFtZXMuZW5kKCkpCi0gICAgICAgIHJldHVy
biBHcmlkU3Bhbjo6Y3JlYXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBv
c2l0ZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZFNwYW4+
KHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKIAog
ICAgIGlmIChzaWRlID09IFJvd1N0YXJ0U2lkZSB8fCBzaWRlID09IENvbHVtblN0YXJ0U2lkZSkK
ICAgICAgICAgcmV0dXJuIHJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGluZVBv
c2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBw
b3NpdGlvbiwgaXQtPnZhbHVlKTsKQEAgLTEwMzcsMTYgKzEwMzcsMTYgQEAgc3RhdGljIGlubGlu
ZSBzaXplX3QgZmlyc3ROYW1lZEdyaWRMaW5lQgogICAgIHJldHVybiBmaXJzdExpbmVCZWZvcmVQ
b3NpdGlvbkluZGV4OwogfQogCi1QYXNzT3duUHRyPEdyaWRTcGFuPiBSZW5kZXJHcmlkOjpyZXNv
bHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0
ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3Np
dGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlkTGluZXMpIGNvbnN0Citz
dGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6OnJlc29sdmVSb3dTdGFydENvbHVt
blN0YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90
IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
Y29uc3QgVmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykgY29uc3QKIHsKICAgICBzaXplX3QgZ3Jp
ZExpbmVJbmRleCA9IHN0ZDo6bWF4PGludD4oMCwgZmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9z
aXRpb24ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBncmlkTGluZXMpIC0gcG9zaXRpb24uc3Bh
blBvc2l0aW9uKCkgKyAxKTsKICAgICBzaXplX3QgcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0g
Z3JpZExpbmVzW2dyaWRMaW5lSW5kZXhdOwogICAgIGlmIChyZXNvbHZlZEdyaWRMaW5lUG9zaXRp
b24gPiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pCiAgICAgICAgIHJlc29sdmVkR3JpZExpbmVQ
b3NpdGlvbiA9IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbjsKLSAgICByZXR1cm4gR3JpZFNwYW46
OmNyZWF0ZShyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
bik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZFNwYW4+KHJlc29sdmVkR3JpZExp
bmVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKIH0KIAotUGFzc093blB0cjxH
cmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRlUG9z
aXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JiBncmlkTGluZXMpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IFJlbmRlckdyaWQ6
OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKSBjb25zdAog
ewogICAgIHNpemVfdCBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb25JbmRleCA9IGdyaWRM
aW5lcy5zaXplKCkgLSAxOwogICAgIGNvbnN0IHNpemVfdCogZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0
ZVBvc2l0aW9uID0gc3RkOjp1cHBlcl9ib3VuZChncmlkTGluZXMuYmVnaW4oKSwgZ3JpZExpbmVz
LmVuZCgpLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOwpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAg
UGFzc093blB0cjxHcmlkU3Bhbj4gUmVuZGVyR3JpZDo6cmVzb2x2ZQogICAgIHNpemVfdCByZXNv
bHZlZEdyaWRMaW5lUG9zaXRpb24gPSBHcmlkUG9zaXRpb246OmFkanVzdEdyaWRQb3NpdGlvbkZv
clJvd0VuZENvbHVtbkVuZFNpZGUoZ3JpZExpbmVzW2dyaWRMaW5lSW5kZXhdKTsKICAgICBpZiAo
cmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uIDwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKQogICAg
ICAgICByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPSByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb247
Ci0gICAgcmV0dXJuIEdyaWRTcGFuOjpjcmVhdGUocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBy
ZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24pOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdy
aWRTcGFuPihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29sdmVkR3JpZExpbmVQb3NpdGlv
bik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94KiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcykgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDEzICsx
MTEsMTMgQEAgcHJpdmF0ZToKICAgICBHcmlkQ29vcmRpbmF0ZSBjYWNoZWRHcmlkQ29vcmRpbmF0
ZShjb25zdCBSZW5kZXJCb3gqKSBjb25zdDsKIAogICAgIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9z
aXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gqLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24sIHNpemVfdCkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bh
bj4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94KiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+
IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCosIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgc2l6ZV90IHJlc29sdmVOYW1lZEdyaWRMaW5l
UG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkg
Y29uc3Q7CiAgICAgc2l6ZV90IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgR3Jp
ZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlk
U3Bhbj4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCBy
ZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIEdyaWRQb3NpdGlv
blNpZGUpIGNvbnN0OwotICAgIFBhc3NPd25QdHI8R3JpZFNwYW4+IHJlc29sdmVOYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihzaXplX3QgcmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKSBjb25zdDsK
LSAgICBQYXNzT3duUHRyPEdyaWRTcGFuPiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVk
R3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JikgY29uc3Q7Ci0gICAgUGFzc093blB0cjxHcmlkU3Bhbj4gcmVzb2x2ZVJvd0VuZENvbHVtbkVu
ZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNv
bHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3Rvcjxz
aXplX3Q+JikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlR3Jp
ZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQ
b3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwg
Y29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSkgY29uc3Q7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExp
bmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHNpemVfdCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JikgY29u
c3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlUm93RW5kQ29sdW1uRW5k
TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oc2l6ZV90IHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9yPHNp
emVfdD4mKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94KiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTYsOCArNjE2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVD
bwogICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKICAgICBBU1NFUlQoIW1fek9y
ZGVyTGlzdHNEaXJ0eSk7CiAKLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IHBvc1pP
cmRlckxpc3Q7Ci0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiBuZWdaT3JkZXJMaXN0
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4gcG9zWk9yZGVyTGlz
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG5lZ1pPcmRlckxp
c3Q7CiAgICAgcmVidWlsZFpPcmRlckxpc3RzKFN0b3BBdFN0YWNraW5nQ29udGV4dHMsIHBvc1pP
cmRlckxpc3QsIG5lZ1pPcmRlckxpc3QpOwogCiAgICAgLy8gQ3JlYXRlIGEgcmV2ZXJzZSBsb29r
dXAuCkBAIC04NjMsMTIgKzg2MywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zv
cm0oKQogICAgIGJvb2wgaGFzVHJhbnNmb3JtID0gcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm0oKSAm
JiByZW5kZXJlcigpLnN0eWxlKCkuaGFzVHJhbnNmb3JtKCk7CiAgICAgYm9vbCBoYWQzRFRyYW5z
Zm9ybSA9IGhhczNEVHJhbnNmb3JtKCk7CiAKLSAgICBib29sIGhhZFRyYW5zZm9ybSA9IG1fdHJh
bnNmb3JtOworICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAo
aGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3Jt
KQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcgVHJhbnNmb3JtYXRpb25N
YXRyaXgpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RyYW5zZm9y
bS5jbGVhcigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBudWxscHRyOwogICAgICAgICAK
ICAgICAgICAgLy8gTGF5ZXJzIHdpdGggdHJhbnNmb3JtcyBhY3QgYXMgY2xpcCByZWN0cyByb290
cywgc28gY2xlYXIgdGhlIGNhY2hlZCBjbGlwIHJlY3RzIGhlcmUuCiAgICAgICAgIGNsZWFyQ2xp
cFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKQEAgLTM5MzUsNyArMzkzNSw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3MKIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKIAotUGFzc093blB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5
ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlv
dXRQb2ludCYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywg
Ym9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVy
RWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExh
eWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldEZyb21Sb290LCBM
YXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0Nv
bXB1dGVkKQogewogICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzk0OCw3ICszOTQ4LDcgQEAgUGFzc093blB0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlcj4gUgogICAgIGlmICghaGFzUGFpbnRlZEZpbHRlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBPd25QdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXI+IGZpbHRlclBhaW50ZXIgPSBhZG9wdFB0cihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXIoaGFzUGFpbnRlZEZpbHRlcikpOworICAgIGF1dG8gZmlsdGVyUGFpbnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+KGhhc1BhaW50ZWRGaWx0ZXIpOwog
ICAgIGlmICghZmlsdGVyUGFpbnRlci0+aGF2ZUZpbHRlckVmZmVjdCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKQEAgLTM5NzUsNyArMzk3NSw3IEBAIFBhc3NPd25QdHI8RmlsdGVy
RWZmZWN0UmVuZGVyZXJIZWxwZXI+IFIKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiBmb3IgZXhh
bXBsZSB0aGlzIGxheWVyIGhhcyBvdmVyZmxvdzpoaWRkZW4sIGEgZHJvcCBzaGFkb3cgd2lsbCBu
b3QgY29tcHV0ZSBjb3JyZWN0bHkuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB3aWxsIHN0aWxs
IGFwcGx5IHRoZSBjbGlwcGluZyBvbiB0aGUgZmluYWwgcmVuZGVyaW5nIG9mIHRoZSBmaWx0ZXIu
CiAgICAgICAgIHBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgPSAhZmlsdGVySW5mby0+cmVu
ZGVyZXIoKS0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7Ci0gICAgICAgIHJldHVybiBmaWx0
ZXJQYWludGVyLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShmaWx0ZXJQYWlu
dGVyKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC00MDgwLDcgKzQwODAsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAKICAgICBHcmFwaGlj
c0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9IGNvbnRleHQ7CiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQotICAgIE93blB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gZmls
dGVyUGFpbnRlciA9IHNldHVwRmlsdGVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFp
bnRGbGFncywgb2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZl
Qm91bmRzQ29tcHV0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcj4gZmlsdGVyUGFpbnRlciA9IHNldHVwRmlsdGVycyhjb250ZXh0LCBsb2NhbFBhaW50
aW5nSW5mbywgcGFpbnRGbGFncywgb2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywg
cm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogICAgIGlmIChmaWx0ZXJQYWludGVyKSB7CiAg
ICAgICAgIGNvbnRleHQgPSBmaWx0ZXJQYWludGVyLT5maWx0ZXJDb250ZXh0KCk7CiAgICAgICAg
IGlmIChjb250ZXh0ICE9IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCAmJiBoYXZlVHJhbnNwYXJl
bmN5KSB7CkBAIC00MTY4LDcgKzQxNjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVy
Q29udGVudHMoR3JhCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGlmIChmaWx0ZXJQYWlu
dGVyKSB7CiAgICAgICAgIGNvbnRleHQgPSBhcHBseUZpbHRlcnMoZmlsdGVyUGFpbnRlci5nZXQo
KSwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbGF5ZXJGcmFn
bWVudHMpOwotICAgICAgICBmaWx0ZXJQYWludGVyLmNsZWFyKCk7CisgICAgICAgIGZpbHRlclBh
aW50ZXIgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtNDU4NSwxNiArNDU4NSwx
NiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkTGF5ZXJJbnRvQ29sCiAgICAgICAgICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV3VHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CiAg
ICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0KHJvdW5kVG9JbnQob2Zm
c2V0LndpZHRoKCkpLCByb3VuZFRvSW50KG9mZnNldC5oZWlnaHQoKSkpOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld1RyYW5zZm9ybSkpOworICAgICAgICAgICAgICAg
IGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4obmV3VHJhbnNmb3JtKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBMYXllclBhaW50aW5nSW5mbyBsb2NhbFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogICAg
ICAgICAgICAgICAgIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0gbG9jYWxEaXJ0
eVJlY3Q7CiAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBs
b2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKICAgICAgICAgICAgICAgICBpZiAob2xk
SGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9y
bSA9IGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeChvbGRUcmFuc2Zvcm0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihvbGRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0uY2xlYXIo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBudWxscHRy
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgdGhlIHRy
YW5zZm9ybSBzdWNoIHRoYXQgdGhlIHJlbmRlcmVyJ3MgdXBwZXIgbGVmdCBjb3JuZXIgd2lsbCBw
YWludCBhdCAoMCwwKSBpbiB1c2VyIHNwYWNlLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgaW52
b2x2ZXMgc3VidHJhY3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1
cnJlbnQgY29vcmRpbmF0ZSBzcGFjZS4KQEAgLTUyMzksMTIgKzUyMzksMTIgQEAgUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRMYQogICAgICAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG5ld1RyYW5zZm9ybShvbGRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAg
IG5ld1RyYW5zZm9ybS50cmFuc2xhdGVSaWdodChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdo
dCgpKTsKIAotICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gYWRvcHRQ
dHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld1RyYW5zZm9ybSkpOworICAgICAgICAgICAg
ICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obmV3VHJhbnNmb3JtKTsKICAgICAgICAgICAgICAgICBoaXRMYXllciA9IGNo
aWxkTGF5ZXItPmhpdFRlc3RMYXllcihyb290TGF5ZXIsIGNvbHVtbkxheWVyc1swXSwgcmVxdWVz
dCwgcmVzdWx0LCBsb2NhbENsaXBSZWN0LCBoaXRUZXN0TG9jYXRpb24sIGZhbHNlLCB0cmFuc2Zv
cm1TdGF0ZSwgek9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKG9sZEhhc1RyYW5zZm9ybSkK
LSAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgob2xkVHJhbnNmb3JtKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4ob2xkVHJhbnNmb3JtKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSB0cmFuc2Zvcm0gc3VjaCB0
aGF0IHRoZSByZW5kZXJlcidzIHVwcGVyIGxlZnQgY29ybmVyIHdpbGwgYmUgYXQgKDAsMCkgaW4g
dXNlciBzcGFjZS4KICAgICAgICAgICAgICAgICAvLyBUaGlzIGludm9sdmVzIHN1YnRyYWN0aW5n
IG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNvb3JkaW5hdGUg
c3BhY2UuCkBAIC01MzAyLDcgKzUzMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVDbGlw
UmVjdHMoY29uc3QKICAgICBjYWxjdWxhdGVDbGlwUmVjdHMoY2xpcFJlY3RzQ29udGV4dCwgY2xp
cFJlY3RzKTsKIAogICAgIGlmICghbV9jbGlwUmVjdHNDYWNoZSkKLSAgICAgICAgbV9jbGlwUmVj
dHNDYWNoZSA9IGFkb3B0UHRyKG5ldyBDbGlwUmVjdHNDYWNoZSk7CisgICAgICAgIG1fY2xpcFJl
Y3RzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOwogCiAgICAgaWYg
KHBhcmVudExheWVyICYmIHBhcmVudExheWVyLT5jbGlwUmVjdHMoY2xpcFJlY3RzQ29udGV4dCkg
JiYgY2xpcFJlY3RzID09ICpwYXJlbnRMYXllci0+Y2xpcFJlY3RzKGNsaXBSZWN0c0NvbnRleHQp
KQogICAgICAgICBtX2NsaXBSZWN0c0NhY2hlLT5zZXRDbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSwg
Y2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZsb3dDbGlwLCBwYXJlbnRMYXllci0+Y2xpcFJl
Y3RzKGNsaXBSZWN0c0NvbnRleHQpKTsKQEAgLTU5MzIsNyArNTkzMiw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWMKIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVy
TGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5nKSB7Ci0gICAgICAg
IG1fYmFja2luZyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJMYXllckJhY2tpbmcoKnRoaXMpKTsKKyAg
ICAgICAgbV9iYWNraW5nID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0
aGlzKTsKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7
CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC01OTQ5LDcgKzU5NDksNyBAQCB2b2lkIFJl
bmRlckxheWVyOjpjbGVhckJhY2tpbmcoYm9vbCBsYXllCiB7CiAgICAgaWYgKG1fYmFja2luZyAm
JiAhcmVuZGVyZXIoKS5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIGNvbXBvc2l0
b3IoKS5sYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoKnRoaXMpOwotICAgIG1fYmFja2luZy5jbGVh
cigpOworICAgIG1fYmFja2luZyA9IG51bGxwdHI7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiAgICAgaWYgKCFsYXllckJlaW5nRGVzdHJveWVkKQpAQCAtNjEyMyw3ICs2MTIzLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICBtX3pPcmRlckxpc3RzRGly
dHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKENv
bGxlY3RMYXllcnNCZWhhdmlvciBiZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
PiYgcG9zWk9yZGVyTGlzdCwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgbmVnWk9yZGVy
TGlzdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJz
QmVoYXZpb3IgYmVoYXZpb3IsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4m
IHBvc1pPcmRlckxpc3QsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5l
Z1pPcmRlckxpc3QpCiB7CiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzID0gY29tcG9zaXRv
cigpLmluQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQpAQCAtNjE0
OSw3ICs2MTQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQog
ICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAg
ICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICghbV9yZWZsZWN0aW9uIHx8
IHJlZmxlY3Rpb25MYXllcigpICE9IGNoaWxkKSkgewogICAgICAgICAgICAgaWYgKCFtX25vcm1h
bEZsb3dMaXN0KQotICAgICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPFJlbmRlckxheWVyKj4pOworICAgICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICAg
ICAgbV9ub3JtYWxGbG93TGlzdC0+YXBwZW5kKGNoaWxkKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTYxNTcsNyArNjE1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0
KCkKICAgICBtX25vcm1hbEZsb3dMaXN0RGlydHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXll
cnNCZWhhdmlvciBiZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgcG9zQnVm
ZmVyLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBuZWdCdWZmZXIpCit2b2lkIFJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgQ29sbGVjdExh
eWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVy
Kj4+JiBwb3NCdWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIG5l
Z0J1ZmZlcikKIHsKICAgICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIApAQCAt
NjE2NiwxMSArNjE2NiwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wg
aW5jCiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXIgPSBpbmNsdWRlSGlkZGVuTGF5ZXJzIHx8
IChtX2hhc1Zpc2libGVDb250ZW50IHx8IChtX2hhc1Zpc2libGVEZXNjZW5kYW50ICYmIGlzU3Rh
Y2tpbmcpKTsKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYmICFpc05vcm1hbEZsb3dPbmx5
KCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGJ1ZmZlciB0aGUgY2hpbGQgc2hvdWxk
IGJlIGluLgotICAgICAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBidWZmZXIgPSAo
ekluZGV4KCkgPj0gMCkgPyBwb3NCdWZmZXIgOiBuZWdCdWZmZXI7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIGJ1ZmZlciA9ICh6SW5kZXgoKSA+PSAwKSA/
IHBvc0J1ZmZlciA6IG5lZ0J1ZmZlcjsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGJ1ZmZlciBp
ZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4KICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAg
ICBidWZmZXIgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlbmRlckxheWVyKj4pOworICAgICAgICAg
ICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEFwcGVuZCBvdXJzZWx2ZXMgYXQgdGhlIGVuZCBvZiB0aGUgYXBw
cm9wcmlhdGUgYnVmZmVyLgogICAgICAgICBidWZmZXItPmFwcGVuZCh0aGlzKTsKQEAgLTY1NTks
MTEgKzY1NTksMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZgog
CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPTUFSUVVFRSAmJiBy
ZW5kZXJlcigpLnN0eWxlKCkubWFycXVlZUJlaGF2aW9yKCkgIT0gTU5PTkUgJiYgcmVuZGVyZXIo
KS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJx
dWVlID0gYWRvcHRQdHIobmV3IFJlbmRlck1hcnF1ZWUodGhpcykpOworICAgICAgICAgICAgbV9t
YXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKICAgICAgICAg
bV9tYXJxdWVlLT51cGRhdGVNYXJxdWVlU3R5bGUoKTsKICAgICB9CiAgICAgZWxzZSBpZiAobV9t
YXJxdWVlKSB7Ci0gICAgICAgIG1fbWFycXVlZS5jbGVhcigpOworICAgICAgICBtX21hcnF1ZWUg
PSBudWxscHRyOwogICAgIH0KIAogICAgIHVwZGF0ZVNjcm9sbGJhcnNBZnRlclN0eWxlQ2hhbmdl
KG9sZFN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShy
ZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCi0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC05MDIsNyArOTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRl
Wk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwotICAgIHZvaWQg
cmVidWlsZFpPcmRlckxpc3RzKENvbGxlY3RMYXllcnNCZWhhdmlvciwgT3duUHRyPFZlY3RvcjxS
ZW5kZXJMYXllcio+PiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mKTsKKyAgICB2b2lk
IHJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4+Jik7CiAgICAgdm9pZCBjbGVhclpPcmRlckxpc3RzKCk7CiAKICAgICB2b2lkIHVwZGF0
ZU5vcm1hbEZsb3dMaXN0KCk7CkBAIC05NzAsNyArOTcwLDcgQEAgcHJpdmF0ZToKIAogICAgIExh
eW91dFBvaW50IHJlbmRlckJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5p
c0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkubG9jYXRpb24oKSA6IExheW91dFBvaW50
KCk7IH0KIAotICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMs
IENvbGxlY3RMYXllcnNCZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYsIE93
blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mKTsKKyAgICB2b2lkIGNvbGxlY3RMYXllcnMoYm9v
bCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBDb2xsZWN0TGF5ZXJzQmVoYXZpb3IsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lm
TmVlZGVkKCk7CiAKQEAgLTk5OCw3ICs5OTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0dXBG
b250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgZGlkUXVhbnRp
emVGb250cyk7CiAgICAgYm9vbCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldEZyb21Sb290LCBM
YXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0Nv
bXB1dGVkKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgUGFzc093blB0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCosIExheWVy
UGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0
RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0
aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCosIExheWVyUGFpbnRpbmdJ
bmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0RnJvbVJvb3Qs
IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRz
Q29tcHV0ZWQpOwogICAgIEdyYXBoaWNzQ29udGV4dCogYXBwbHlGaWx0ZXJzKEZpbHRlckVmZmVj
dFJlbmRlcmVySGVscGVyKiwgR3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVy
UGFpbnRpbmdJbmZvJiwgTGF5ZXJGcmFnbWVudHMmKTsKICNlbmRpZgogCkBAIC0xMzI1LDI0ICsx
MzI1LDI0IEBAIHByaXZhdGU6CiAgICAgLy8gZGVzY2VuZGFudCBsYXllcnMgd2l0aGluIHRoZSBz
dGFja2luZyBjb250ZXh0IHRoYXQgaGF2ZSB6LWluZGljZXMgb2YgMCBvciBncmVhdGVyCiAgICAg
Ly8gKGF1dG8gd2lsbCBjb3VudCBhcyAwKS4gIG1fbmVnWk9yZGVyTGlzdCBob2xkcyBkZXNjZW5k
YW50cyB3aXRoaW4gb3VyIHN0YWNraW5nIGNvbnRleHQgd2l0aCBuZWdhdGl2ZQogICAgIC8vIHot
aW5kaWNlcy4KLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fcG9zWk9yZGVyTGlz
dDsKLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fbmVnWk9yZGVyTGlzdDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fcG9zWk9yZGVyTGlzdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fbmVnWk9yZGVyTGlz
dDsKIAogICAgIC8vIFRoaXMgbGlzdCBjb250YWlucyBjaGlsZCBsYXllcnMgdGhhdCBjYW5ub3Qg
Y3JlYXRlIHN0YWNraW5nIGNvbnRleHRzLiAgRm9yIG5vdyBpdCBpcyBqdXN0CiAgICAgLy8gb3Zl
cmZsb3cgbGF5ZXJzLCBidXQgdGhhdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuCi0gICAgT3du
UHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiBtX25vcm1hbEZsb3dMaXN0OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4gbV9ub3JtYWxGbG93TGlzdDsKIAotICAgIE93
blB0cjxDbGlwUmVjdHNDYWNoZT4gbV9jbGlwUmVjdHNDYWNoZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2xpcFJlY3RzQ2FjaGU+IG1fY2xpcFJlY3RzQ2FjaGU7CiAgICAgCiAgICAgSW50UG9pbnQg
bV9jYWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0OwogCi0gICAgT3duUHRyPFJlbmRlck1hcnF1
ZWU+IG1fbWFycXVlZTsgLy8gVXNlZCBieSBsYXllcnMgd2l0aCBvdmVyZmxvdzptYXJxdWVlCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlck1hcnF1ZWU+IG1fbWFycXVlZTsgLy8gVXNlZCBieSBs
YXllcnMgd2l0aCBvdmVyZmxvdzptYXJxdWVlCiAgICAgCiAgICAgLy8gQ2FjaGVkIG5vcm1hbCBm
bG93IHZhbHVlcyBmb3IgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cyB3aXRoIHN0YXRpYyBs
ZWZ0L3RvcCB2YWx1ZXMuCiAgICAgTGF5b3V0VW5pdCBtX3N0YXRpY0lubGluZVBvc2l0aW9uOwog
ICAgIExheW91dFVuaXQgbV9zdGF0aWNCbG9ja1Bvc2l0aW9uOwogCi0gICAgT3duUHRyPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PiBtX3RyYW5zZm9ybTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNm
b3JtYXRpb25NYXRyaXg+IG1fdHJhbnNmb3JtOwogICAgIAogICAgIC8vIE1heSB1bHRpbWF0ZWx5
IGJlIGV4dGVuZGVkIHRvIG1hbnkgcmVwbGljYXMgKHdpdGggdGhlaXIgb3duIHBhaW50IG9yZGVy
KS4KICAgICBSZW5kZXJQdHI8UmVuZGVyUmVwbGljYT4gbV9yZWZsZWN0aW9uOwpAQCAtMTM1Niw3
ICsxMzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFJlY3QgbV9ibG9ja1NlbGVjdGlvbkdhcHNC
b3VuZHM7CiAKLSAgICBPd25QdHI8UmVuZGVyTGF5ZXJCYWNraW5nPiBtX2JhY2tpbmc7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheWVyQmFja2luZz4gbV9iYWNraW5nOwogCiAgICAgY2xh
c3MgRmlsdGVySW5mbzsKIH07CkBAIC0xMzY1LDggKzEzNjUsOCBAQCBpbmxpbmUgdm9pZCBSZW5k
ZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0CiB7CiAgICAgQVNTRVJUKCFpc1N0YWNraW5nQ29udGFp
bmVyKCkpOwogCi0gICAgbV9wb3NaT3JkZXJMaXN0LmNsZWFyKCk7Ci0gICAgbV9uZWdaT3JkZXJM
aXN0LmNsZWFyKCk7CisgICAgbV9wb3NaT3JkZXJMaXN0ID0gbnVsbHB0cjsKKyAgICBtX25lZ1pP
cmRlckxpc3QgPSBudWxscHRyOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
Wk9yZGVyTGlzdHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNo
QgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKICAgICAgICAgICAgIGRp
c3BsYXlJRCA9IHBhZ2UtPmNocm9tZSgpLmRpc3BsYXlJRCgpOwogCi0gICAgICAgIG1fbGF5ZXJV
cGRhdGVyID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzTGF5ZXJVcGRhdGVyKHRoaXMsIGRpc3BsYXlJ
RCkpOworICAgICAgICBtX2xheWVyVXBkYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NM
YXllclVwZGF0ZXI+KHRoaXMsIGRpc3BsYXlJRCk7CiAgICAgfQogICAgIAogICAgIG1fbGF5ZXJV
cGRhdGVyLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMzUzNiw3ICszNTM2LDcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmRldGFjaFNjcm9sbAogfQogCiAjaWYgUExBVEZPUk0oSU9TKQot
dHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtTGF5ZXIqLCBPd25QdHI8Vmlld3BvcnRDb25zdHJhaW50
cz4+IExheWVyTWFwOwordHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OnVuaXF1
ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW50cz4+IExheWVyTWFwOwogdHlwZWRlZiBIYXNoTWFwPFBs
YXRmb3JtTGF5ZXIqLCBQbGF0Zm9ybUxheWVyKj4gU3RpY2t5Q29udGFpbmVyTWFwOwogCiB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzKCkKQEAgLTM1NjgsNyArMzU2OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZWdpc3RlckFsbFYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgbGF5ZXJNYXAuYWRkKGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCksIGFkb3B0UHRyKGNvbnN0cmFpbnRzLnJlbGVhc2UoKSkpOworICAgICAgICBsYXll
ck1hcC5hZGQobGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIo
KSwgc3RkOjptb3ZlKGNvbnN0cmFpbnRzKSk7CiAgICAgfQogICAgIAogICAgIGlmIChDaHJvbWVD
bGllbnQqIGNsaWVudCA9IHRoaXMtPmNocm9tZUNsaWVudCgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMTY2
MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvckZvb3RlcjsKICNlbmRpZgogCi0gICAg
T3duUHRyPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPiBtX2xheWVyVXBkYXRlcjsgLy8gVXBkYXRlcyB0
aWxlZCBsYXllciB2aXNpYmxlIGFyZWEgcGVyaW9kaWNhbGx5IHdoaWxlIGFuaW1hdGlvbnMgYXJl
IHJ1bm5pbmcuCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPiBtX2xh
eWVyVXBkYXRlcjsgLy8gVXBkYXRlcyB0aWxlZCBsYXllciB2aXNpYmxlIGFyZWEgcGVyaW9kaWNh
bGx5IHdoaWxlIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCiAKICAgICBUaW1lcjxSZW5kZXJMYXll
ckNvbXBvc2l0b3I+IG1fbGF5ZXJGbHVzaFRpbWVyOwogICAgIGJvb2wgbV9sYXllckZsdXNoVGhy
b3R0bGluZ0VuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDkgKzQzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoTWFwPGNvbnN0
IFJlbmRlckxheWVyKiwgT3duUHRyPFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvPj4mIFJlbmRlckxh
eWVyOjpGaWx0ZXJJbmZvOjptYXAoKQorSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJMYXllcjo6RmlsdGVySW5mbz4+JiBSZW5kZXJMYXllcjo6RmlsdGVy
SW5mbzo6bWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBS
ZW5kZXJMYXllciosIE93blB0cjxGaWx0ZXJJbmZvPj4+IG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJJbmZvPj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC02MCw5ICs2MCw5IEBAIFJl
bmRlckxheWVyOjpGaWx0ZXJJbmZvJiBSZW5kZXJMYXllcjo6RmkKIHsKICAgICBBU1NFUlQobGF5
ZXIubV9oYXNGaWx0ZXJJbmZvID09IG1hcCgpLmNvbnRhaW5zKCZsYXllcikpOwogCi0gICAgT3du
UHRyPEZpbHRlckluZm8+JiBpbmZvID0gbWFwKCkuYWRkKCZsYXllciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOworICAgIGF1dG8mIGluZm8gPSBtYXAoKS5hZGQoJmxheWVyLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFpbmZvKSB7Ci0gICAgICAgIGluZm8gPSBhZG9wdFB0
cihuZXcgRmlsdGVySW5mbyhsYXllcikpOworICAgICAgICBpbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxGaWx0ZXJJbmZvPihsYXllcik7CiAgICAgICAgIGxheWVyLm1faGFzRmlsdGVySW5mbyA9IHRy
dWU7CiAgICAgfQogICAgIHJldHVybiAqaW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgJKHJldmlzaW9uIDE2NjI0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OCw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmlsdGVySW5mbyogZ2V0SWZFeGlz
dHMoY29uc3QgUmVuZGVyTGF5ZXImKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmUoUmVuZGVyTGF5
ZXImKTsKIAorICAgIGV4cGxpY2l0IEZpbHRlckluZm8oUmVuZGVyTGF5ZXImKTsKKyAgICB+Rmls
dGVySW5mbygpOworCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlTb3VyY2VSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9kaXJ0eVNvdXJjZVJlY3Q7IH0KICAgICB2b2lkIGV4cGFuZERpcnR5U291
cmNlUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1fZGlydHlTb3VyY2VSZWN0LnVuaXRl
KHJlY3QpOyB9CiAgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJj
ZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KQEAgLTU5LDE2ICs2MywxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZW1vdmVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRmlsdGVySW5mbyhSZW5kZXJMYXllciYpOwotICAgIH5GaWx0ZXJJbmZvKCk7Ci0KICAg
ICBFbGVtZW50KiBsYXllckVsZW1lbnQoKSBjb25zdDsKIAogICAgIGZyaWVuZCB2b2lkIFdURjo6
ZGVsZXRlT3duZWRQdHI8RmlsdGVySW5mbz4oRmlsdGVySW5mbyopOwogCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0
aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIE93blB0cjxGaWx0ZXJJbmZvPj4mIG1hcCgp
OworICAgIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgc3RkOjp1bmlxdWVfcHRy
PEZpbHRlckluZm8+PiYgbWFwKCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcHVzaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTEgKzMzNCwxMSBAQCBSZW5k
ZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJSZWdpb246OnNldFJlCiB7CiAgICAgQVNTRVJUKGlzVmFs
aWQoKSk7CiAKLSAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3Jl
bmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgYWRvcHRQdHIobmV3IFJlbmRlckJveFJlZ2lvbklu
Zm8obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0No
YWluSXNJbnNldCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gs
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQm94UmVnaW9uSW5mbz4obG9naWNhbExlZnRJbnNldCwg
bG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICByZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIAotT3duUHRyPFJlbmRlckJv
eFJlZ2lvbkluZm8+IFJlbmRlclJlZ2lvbjo6dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oY29uc3Qg
UmVuZGVyQm94KiBib3gpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gUmVu
ZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqIGJveCkK
IHsKICAgICByZXR1cm4gbV9yZW5kZXJCb3hSZWdpb25JbmZvLnRha2UoYm94KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgJKHJldmlzaW9uIDE2NjI0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogI2luY2x1
ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCw3ICs3MSw3
IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiByZW5kZXJCb3hSZWdpb25JbmZv
KGNvbnN0IFJlbmRlckJveCopIGNvbnN0OwogICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIHNldFJl
bmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dEluc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEluc2V0LAogICAgICAgICBib29sIGNvbnRh
aW5pbmdCbG9ja0NoYWluSXNJbnNldCk7Ci0gICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+
IHRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJCb3hSZWdpb25JbmZvPiB0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25z
dCBSZW5kZXJCb3gqKTsKICAgICB2b2lkIHJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oY29uc3Qg
UmVuZGVyQm94Kik7CiAKICAgICB2b2lkIGRlbGV0ZUFsbFJlbmRlckJveFJlZ2lvbkluZm8oKTsK
QEAgLTE3Miw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIC8vIEEgUmVuZGVyQm94UmVnaW9uSW5m
byogdGVsbHMgdXMgYWJvdXQgYW55IGxheW91dCBpbmZvcm1hdGlvbiBmb3IgYSBSZW5kZXJCb3gg
dGhhdAogICAgIC8vIGlzIHVuaXF1ZSB0byB0aGUgcmVnaW9uLiBGb3Igbm93IGl0IGp1c3QgaG9s
ZHMgbG9naWNhbCB3aWR0aCBpbmZvcm1hdGlvbiBmb3IgUmVuZGVyQmxvY2tzLCBidXQgZXZlbnR1
YWxseQogICAgIC8vIGl0IHdpbGwgYWxzbyBob2xkIGEgY3VzdG9tIHN0eWxlIGZvciBhbnkgYm94
IChmb3IgcmVnaW9uIHN0eWxpbmcpLgotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJC
b3gqLCBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4+IFJlbmRlckJveFJlZ2lvbkluZm9NYXA7
CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJCb3hSZWdpb25JbmZvPj4gUmVuZGVyQm94UmVnaW9uSW5mb01hcDsKICAgICBSZW5kZXJC
b3hSZWdpb25JbmZvTWFwIG1fcmVuZGVyQm94UmVnaW9uSW5mbzsKIAogICAgIGJvb2wgbV9pc1Zh
bGlkIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAko
cmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6
OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1My
IHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8g
ZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1w
bGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQo
KSA9PSBURklYRUQgJiYgIXN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAg
ICAgICBtX3RhYmxlTGF5b3V0ID0gYWRvcHRQdHIobmV3IEZpeGVkVGFibGVMYXlvdXQodGhpcykp
OworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJs
ZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQg
PSBhZG9wdFB0cihuZXcgQXV0b1RhYmxlTGF5b3V0KHRoaXMpKTsKKyAgICAgICAgICAgIG1fdGFi
bGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAg
fQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBi
b3JkZXJzIGNhY2hlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJ
KHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgogI2luY2x1ZGUgIkNvbGxhcHNlZEJvcmRlclZhbHVlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM0MCw3ICszNDEsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgUmVuZGVyVGFibGVTZWN0aW9uKiBtX2Zvb3Q7CiAgICAgbXV0YWJsZSBS
ZW5kZXJUYWJsZVNlY3Rpb24qIG1fZmlyc3RCb2R5OwogCi0gICAgT3duUHRyPFRhYmxlTGF5b3V0
PiBtX3RhYmxlTGF5b3V0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxUYWJsZUxheW91dD4gbV90YWJs
ZUxheW91dDsKIAogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlcyBtX2NvbGxhcHNlZEJvcmRlcnM7
CiAgICAgY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUqIG1fY3VycmVudEJvcmRlcjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDE2NjI0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQWZ0ZXJQ
b3NpdGkKIAogSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCkgY29uc3QKIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0
KiwgT3duUHRyPFJlbmRlclNlbGVjdGlvbkluZm8+PiBTZWxlY3Rpb25NYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25J
bmZvPj4gU2VsZWN0aW9uTWFwOwogICAgIFNlbGVjdGlvbk1hcCBzZWxlY3RlZE9iamVjdHM7CiAK
ICAgICBSZW5kZXJPYmplY3QqIG9zID0gbV9zZWxlY3Rpb25TdGFydDsKQEAgLTY2NywxMyArNjY3
LDEzIEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wKICAgICB3aGls
ZSAob3MgJiYgb3MgIT0gc3RvcCkgewogICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlvbkxl
YWYoKSB8fCBvcyA9PSBtX3NlbGVjdGlvblN0YXJ0IHx8IG9zID09IG1fc2VsZWN0aW9uRW5kKSAm
JiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAv
LyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdp
biBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHNlbGVj
dGVkT2JqZWN0cy5zZXQob3MsIGFkb3B0UHRyKG5ldyBSZW5kZXJTZWxlY3Rpb25JbmZvKG9zLCBj
bGlwVG9WaXNpYmxlQ29udGVudCkpKTsKKyAgICAgICAgICAgIHNlbGVjdGVkT2JqZWN0cy5zZXQo
b3MsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4ob3MsIGNsaXBUb1Zpc2li
bGVDb250ZW50KSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvcy0+Y29udGFpbmlu
Z0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSkg
ewotICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZv
ID0gc2VsZWN0ZWRPYmplY3RzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJ
bmZvID0gc2VsZWN0ZWRPYmplY3RzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTZWxlY3Rp
b25JbmZvKGNiLCBjbGlwVG9WaXNpYmxlQ29udGVudCkpOworICAgICAgICAgICAgICAgIGJsb2Nr
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oY2IsIGNsaXBUb1Zp
c2libGVDb250ZW50KTsKICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2so
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzczLDE0ICs3NzMsMTQgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZQogICAgIGludCBvbGRFbmRQb3MgPSBt
X3NlbGVjdGlvbkVuZFBvczsKIAogICAgIC8vIE9iamVjdHMgZWFjaCBoYXZlIGEgc2luZ2xlIHNl
bGVjdGlvbiByZWN0IHRvIGV4YW1pbmUuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVj
dCosIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxl
Y3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7CiAgICAgU2VsZWN0ZWRPYmplY3RNYXAgb2xk
U2VsZWN0ZWRPYmplY3RzOwogICAgIFNlbGVjdGVkT2JqZWN0TWFwIG5ld1NlbGVjdGVkT2JqZWN0
czsKIAogICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9iamVjdHMgYW5kIGZpbGwgZ2Fw
cyBiZXR3ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmlnaHQsIG9yIGluIGJldHdlZW4g
bGluZXMgYW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBnZXQgdGhlIHJlcGFpbnQgcmVj
dCByaWdodCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRsZSwgYW5kIHJpZ2h0IHJlY3Rz
IGluZGl2aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8gdGhlIHVuaW9uIG9mIHRob3Nl
IHJlY3RzIG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4gY2hhbmdlcyBoYXZlIG9jY3Vy
cmVkLgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJCbG9jayosIE93blB0cjxSZW5kZXJCbG9j
a1NlbGVjdGlvbkluZm8+PiBTZWxlY3RlZEJsb2NrTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+PiBT
ZWxlY3RlZEJsb2NrTWFwOwogICAgIFNlbGVjdGVkQmxvY2tNYXAgb2xkU2VsZWN0ZWRCbG9ja3M7
CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBuZXdTZWxlY3RlZEJsb2NrczsKIApAQCAtNzkxLDE0ICs3
OTEsMTQgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZQogICAgIHdo
aWxlIChjb250aW51ZUV4cGxvcmluZykgewogICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlv
bkxlYWYoKSB8fCBvcyA9PSBtX3NlbGVjdGlvblN0YXJ0IHx8IG9zID09IG1fc2VsZWN0aW9uRW5k
KSAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAg
ICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1h
cmdpbiBnYXBzLiAgVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBv
bGRTZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0aW9uSW5m
byhvcywgdHJ1ZSkpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4ob3MsIHRydWUpKTsKICAgICAgICAg
ICAgIGlmIChibG9ja1JlcGFpbnRNb2RlID09IFJlcGFpbnROZXdYT1JPbGQpIHsKICAgICAgICAg
ICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAg
ICAgICAgICAgd2hpbGUgKGNiICYmICFjYi0+aXNSZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG9s
ZFNlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYg
YmxvY2tJbmZvID0gb2xkU2VsZWN0ZWRCbG9ja3MuYWRkKGNiLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQ
dHIobmV3IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyhjYikpOworICAgICAgICAgICAgICAgICAg
ICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4o
Y2IpOwogICAgICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04NDcsMTMgKzg0NywxMyBAQCB2b2lk
IFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplCiAgICAgY29udGludWVFeHBsb3Jp
bmcgPSBvICYmIChvICE9IHN0b3ApOwogICAgIHdoaWxlIChjb250aW51ZUV4cGxvcmluZykgewog
ICAgICAgICBpZiAoKG8tPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG8gPT0gc3RhcnQgfHwgbyA9
PSBlbmQpICYmIG8tPnNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewotICAgICAg
ICAgICAgbmV3U2VsZWN0ZWRPYmplY3RzLnNldChvLCBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0
aW9uSW5mbyhvLCB0cnVlKSkpOworICAgICAgICAgICAgbmV3U2VsZWN0ZWRPYmplY3RzLnNldChv
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KG8sIHRydWUpKTsKICAgICAg
ICAgICAgIFJlbmRlckJsb2NrKiBjYiA9IG8tPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAg
ICAgd2hpbGUgKGNiICYmICFjYi0+aXNSZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBP
d25QdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRC
bG9ja3MuYWRkKGNiLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5l
d1NlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAg
ICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGJsb2NrSW5mbyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJCbG9ja1NlbGVjdGlv
bkluZm8oY2IpKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oY2IpOwogICAgICAgICAgICAgICAgIGNiID0gY2It
PmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDkyLDcg
KzEwOTIsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5k
ZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICgh
bV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yKCp0aGlzKSk7CisgICAgICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1f
Y29tcG9zaXRvcjsKIH0KQEAgLTExMjMsNyArMTEyMyw3IEBAIGJvb2wgUmVuZGVyVmlldzo6Y2hl
Y2tUd29QYXNzTGF5b3V0Rm9yQXUKIEZsb3dUaHJlYWRDb250cm9sbGVyJiBSZW5kZXJWaWV3Ojpm
bG93VGhyZWFkQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Zsb3dUaHJlYWRDb250cm9sbGVy
KQotICAgICAgICBtX2Zsb3dUaHJlYWRDb250cm9sbGVyID0gRmxvd1RocmVhZENvbnRyb2xsZXI6
OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9mbG93VGhyZWFkQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rmxvd1RocmVhZENvbnRyb2xsZXI+KHRoaXMpOwogCiAgICAgcmV0dXJuICptX2Zs
b3dUaHJlYWRDb250cm9sbGVyOwogfQpAQCAtMTE2Miw3ICsxMTYyLDcgQEAgSW50ZXJ2YWxBcmVu
YSogUmVuZGVyVmlldzo6aW50ZXJ2YWxBcmVuYQogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVu
ZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IEltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIG1faW1hZ2VRdWFsaXR5
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDggKzI3LDggQEAKICNpbmNsdWRlICJQT0RGcmVlTGlzdEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMyNiwxMyArMzI2LDEzIEBAIHByaXZhdGU6CiAKICAgICBi
b29sIHNob3VsZFVzZVByaW50aW5nTGF5b3V0KCkgY29uc3Q7CiAKLSAgICBPd25QdHI8SW1hZ2VR
dWFsaXR5Q29udHJvbGxlcj4gbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7
CiAgICAgTGF5b3V0VW5pdCBtX3BhZ2VMb2dpY2FsSGVpZ2h0OwogICAgIGJvb2wgbV9wYWdlTG9n
aWNhbEhlaWdodENoYW5nZWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dFN0YXRlPiBtX2xh
eW91dFN0YXRlOwogICAgIHVuc2lnbmVkIG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQ7Ci0gICAg
T3duUHRyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwotICAgIE93blB0cjxG
bG93VGhyZWFkQ29udHJvbGxlcj4gbV9mbG93VGhyZWFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dUaHJlYWRDb250cm9sbGVyPiBtX2Zsb3dUaHJlYWRDb250cm9sbGVyOwog
ICAgIFJlZlB0cjxJbnRlcnZhbEFyZW5hPiBtX2ludGVydmFsQXJlbmE7CiAKICAgICBSZW5kZXJR
dW90ZSogbV9yZW5kZXJRdW90ZUhlYWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBl
bmQoJmZsb2F0aW5nQm94KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFJlbmRlckJveCo+KDEsICZmbG9hdGluZ0JveCkpOworICAgICAg
ICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJCb3gqPj4oMSwg
JmZsb2F0aW5nQm94KTsKICAgICB9CiAKICAgICBWZWN0b3I8UmVuZGVyQm94Kj4qIGZsb2F0c1B0
cigpIHsgQVNTRVJUKCFpc0RpcnR5KCkpOyByZXR1cm4gbV9mbG9hdHMuZ2V0KCk7IH0KQEAgLTIx
OSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRmxvYXRzIGhhbmdpbmcgb2ZmIHRoZSBs
aW5lIGFyZSBwdXNoZWQgaW50byB0aGlzIHZlY3RvciBkdXJpbmcgbGF5b3V0LiBJdCBpcyBvbmx5
CiAgICAgLy8gZ29vZCBmb3IgYXMgbG9uZyBhcyB0aGUgbGluZSBoYXMgbm90IGJlZW4gbWFya2Vk
IGRpcnR5LgotICAgIE93blB0cjxWZWN0b3I8UmVuZGVyQm94Kj4+IG1fZmxvYXRzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyQm94Kj4+IG1fZmxvYXRzOwogfTsKIAogSU5MSU5F
X0JPWF9PQkpFQ1RfVFlQRV9DQVNUUyhSb290SW5saW5lQm94LCBpc1Jvb3RJbmxpbmVCb3goKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaAkocmV2aXNpb24g
MTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCShy
ZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHln
b25TaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw5ICsxMzYsOSBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgc25hcFZlcnRpY2VzVG9MYXlvdXRVCiAgICAgICAgIHZlcnRpY2VzW2ldLnNldChM
YXlvdXRVbml0KHZlcnRpY2VzW2ldLngoKSkudG9GbG9hdCgpLCBMYXlvdXRVbml0KHZlcnRpY2Vz
W2ldLnkoKSkudG9GbG9hdCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0
UG9seWdvbj4gY29tcHV0ZVNoYXBlUGFkZGluZ0JvdW5kcyhjb25zdCBGbG9hdFBvbHlnb24mIHBv
bHlnb24sIGZsb2F0IHBhZGRpbmcsIFdpbmRSdWxlIGZpbGxSdWxlKQorc3RhdGljIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNv
bnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgcGFkZGluZywgV2luZFJ1bGUgZmlsbFJ1
bGUpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gcGFkZGVkVmVydGljZXMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPEZsb2F0UG9pbnQ+KCkpOworICAgIGF1dG8gcGFkZGVkVmVydGlj
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4oKTsKICAgICBGbG9hdFBv
aW50IGludGVyc2VjdGlvbjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2x5Z29u
Lm51bWJlck9mRWRnZXMoKTsgKytpKSB7CkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBzdGF0aWMgaW5s
aW5lIFBhc3NPd25QdHI8RmxvYXRQb2x5Z29uPiBjCiAgICAgfQogCiAgICAgc25hcFZlcnRpY2Vz
VG9MYXlvdXRVbml0R3JpZCgqcGFkZGVkVmVydGljZXMpOwotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRmxvYXRQb2x5Z29uKHBhZGRlZFZlcnRpY2VzLnJlbGVhc2UoKSwgZmlsbFJ1bGUpKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvbHlnb24+KHN0ZDo6bW92ZShwYWRkZWRW
ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0
UG9seWdvbj4gY29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9s
eWdvbiwgZmxvYXQgbWFyZ2luLCBXaW5kUnVsZSBmaWxsUnVsZSkKK3N0YXRpYyBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPEZsb2F0UG9seWdvbj4gY29tcHV0ZVNoYXBlTWFyZ2luQm91bmRzKGNvbnN0
IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgbWFyZ2luLCBXaW5kUnVsZSBmaWxsUnVsZSkK
IHsKLSAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtYXJnaW5WZXJ0aWNlcyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4oKSk7CisgICAgYXV0byBtYXJnaW5WZXJ0aWNlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+PigpOwogICAgIEZsb2F0UG9pbnQg
aW50ZXJzZWN0aW9uOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvbHlnb24ubnVt
YmVyT2ZFZGdlcygpOyArK2kpIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgaW5saW5lIFBh
c3NPd25QdHI8RmxvYXRQb2x5Z29uPiBjCiAgICAgfQogCiAgICAgc25hcFZlcnRpY2VzVG9MYXlv
dXRVbml0R3JpZCgqbWFyZ2luVmVydGljZXMpOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmxv
YXRQb2x5Z29uKG1hcmdpblZlcnRpY2VzLnJlbGVhc2UoKSwgZmlsbFJ1bGUpKTsKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvbHlnb24+KHN0ZDo6bW92ZShtYXJnaW5WZXJ0aWNl
cyksIGZpbGxSdWxlKTsKIH0KIAogY29uc3QgRmxvYXRQb2x5Z29uJiBQb2x5Z29uU2hhcGU6OnNo
YXBlUGFkZGluZ0JvdW5kcygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1BvbHlnb25TaGFwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDggKzgyLDggQEAgcHJpdmF0ZToKIGNsYXNzIFBvbHlnb25TaGFwZSA6IHB1YmxpYyBTaGFw
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9seWdvblNoYXBlKTsKIHB1YmxpYzoKLSAg
ICBQb2x5Z29uU2hhcGUoUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBX
aW5kUnVsZSBmaWxsUnVsZSkKLSAgICAgICAgOiBtX3BvbHlnb24odmVydGljZXMsIGZpbGxSdWxl
KQorICAgIFBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2
ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCisgICAgICAgIDogbV9wb2x5Z29uKHN0ZDo6bW92
ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKQogICAgICAgICAsIG1fbWFyZ2luQm91bmRzKG51bGxwdHIp
CiAgICAgICAgICwgbV9wYWRkaW5nQm91bmRzKG51bGxwdHIpCiAgICAgewpAQCAtMTAzLDggKzEw
Myw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRmxvYXRQb2x5Z29uJiBzaGFwZVBhZGRpbmdCb3Vu
ZHMoKSBjb25zdDsKIAogICAgIEZsb2F0UG9seWdvbiBtX3BvbHlnb247Ci0gICAgbXV0YWJsZSBP
d25QdHI8RmxvYXRQb2x5Z29uPiBtX21hcmdpbkJvdW5kczsKLSAgICBtdXRhYmxlIE93blB0cjxG
bG9hdFBvbHlnb24+IG1fcGFkZGluZ0JvdW5kczsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxGbG9hdFBvbHlnb24+IG1fbWFyZ2luQm91bmRzOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVf
cHRyPEZsb2F0UG9seWdvbj4gbV9wYWRkaW5nQm91bmRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsMTAgKzIxNSwx
MCBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRFeGNsdWRlZEluCiAgICAgfQogfQog
Ci1QYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKK3N0ZDo6
dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNv
bXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0CiB7CiAgICAg
aW50IG1hcmdpbkludGVydmFsc1NpemUgPSAob2Zmc2V0KCkgPiBzaGFwZU1hcmdpbikgPyBzaXpl
KCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIgKyBzaGFwZU1hcmdpbiAqIDI7Ci0gICAgT3duUHRy
PFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJ
bnRlcnZhbHMobWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNl
dCgpKSkpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUlu
dGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNl
dCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJv
dW5kcygpLm1heFkoKTsgKyt5KSB7CkBAIC0yNDUsNyArMjQ1LDcgQEAgUGFzc093blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gUmFzdGVyUwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBSYXN0ZXJT
aGFwZUludGVydmFsczo6YnVpbGRCb3VuZHNQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCShyZXZpc2lv
biAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1
bHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIs
IEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgZmlyc3RJbmNsdWRl
ZEludGVydmFsWShpbnQgbWluWSwgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5pdCYg
cmVzdWx0KSBjb25zdDsKLSAgICBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBjb21w
dXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGNvbXB1dGVTaGFwZU1hcmdpbkludGVy
dmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0OwogCiAgICAgdm9pZCBidWlsZEJvdW5kc1BhdGgo
UGF0aCYpIGNvbnN0OwogCkBAIC05Miw4ICs5Miw4IEBAIHByaXZhdGU6CiBjbGFzcyBSYXN0ZXJT
aGFwZSA6IHB1YmxpYyBTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hh
cGUpOwogcHVibGljOgotICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgbWFyZ2luUmVjdFNpemUpCi0gICAgICAg
IDogbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIFJhc3RlclNoYXBlKHN0ZDo6dW5pcXVlX3B0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzLCBjb25zdCBJbnRTaXplJiBtYXJnaW5S
ZWN0U2l6ZSkKKyAgICAgICAgOiBtX2ludGVydmFscyhzdGQ6Om1vdmUoaW50ZXJ2YWxzKSkKICAg
ICAgICAgLCBtX21hcmdpblJlY3RTaXplKG1hcmdpblJlY3RTaXplKQogICAgIHsKICAgICB9CkBA
IC0xMTYsOCArMTE2LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFs
cyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29uc3Q7CiAgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZh
bHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKIAotICAgIE93blB0cjxSYXN0ZXJTaGFwZUlu
dGVydmFscz4gbV9pbnRlcnZhbHM7Ci0gICAgbXV0YWJsZSBPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IG1fbWFyZ2luSW50ZXJ2YWxzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFw
ZUludGVydmFscz4gbV9pbnRlcnZhbHM7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+IG1fbWFyZ2luSW50ZXJ2YWxzOwogICAgIEludFNpemUgbV9tYXJn
aW5SZWN0U2l6ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMzIgKzQxLDMwIEBACiAjaW5j
bHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NPd25Q
dHI8U2hhcGU+IGNyZWF0ZUluc2V0U2hhcGUoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgYm91bmRz
KQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lk
dGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBCb3hTaGFwZShib3VuZHMpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0
ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQorc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQ
b2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlY3RhbmdsZVNoYXBlKEZsb2F0UmVjdChjZW50ZXIu
eCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBG
bG9hdFNpemUocmFkaXVzLCByYWRpdXMpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgp
IC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMp
KTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25z
dCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYg
Y2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0
aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBSZWN0YW5nbGVTaGFwZShGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNl
bnRlci55KCkgLSByYWRpaS5oZWlnaHQoKSwgcmFkaWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQo
KSoyKSwgcmFkaWkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFw
ZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFk
aWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsK
IH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShQYXNzT3du
UHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQorc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBvbHlnb25TaGFwZSh2ZXJ0aWNlcywgZmlsbFJ1bGUp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KHN0ZDo6bW92ZSh2
ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2lj
YWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhl
aWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC05NCwxNCArOTIsMTQgQEAgc3RhdGlj
IGlubGluZSBGbG9hdFNpemUgcGh5c2ljYWxTaXplVG9MbwogICAgIHJldHVybiBzaXplLnRyYW5z
cG9zZWRTaXplKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShj
b25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94
U2l6ZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRk
aW5nKQorc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFz
aWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZykKIHsK
ICAgICBBU1NFUlQoYmFzaWNTaGFwZSk7CiAKICAgICBib29sIGhvcml6b250YWxXcml0aW5nTW9k
ZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsKICAgICBmbG9hdCBib3hX
aWR0aCA9IGhvcml6b250YWxXcml0aW5nTW9kZSA/IGxvZ2ljYWxCb3hTaXplLndpZHRoKCkgOiBs
b2dpY2FsQm94U2l6ZS5oZWlnaHQoKTsKICAgICBmbG9hdCBib3hIZWlnaHQgPSBob3Jpem9udGFs
V3JpdGluZ01vZGUgPyBsb2dpY2FsQm94U2l6ZS5oZWlnaHQoKSA6IGxvZ2ljYWxCb3hTaXplLndp
ZHRoKCk7Ci0gICAgT3duUHRyPFNoYXBlPiBzaGFwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IHNoYXBlOwogCiAgICAgc3dpdGNoIChiYXNpY1NoYXBlLT50eXBlKCkpIHsKIApAQCAtMTMz
LDcgKzEzMSw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb24KICAg
ICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAg
ICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJU
KCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4g
dmVydGljZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPEZsb2F0UG9pbnQ+KHZhbHVlc1NpemUgLyAy
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewog
ICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1
ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE0MSw3ICsxMzksNyBAQCBQ
YXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uCiAgICAgICAgICAgICAoKnZl
cnRpY2VzKVtpIC8gMl0gPSBwaHlzaWNhbFBvaW50VG9Mb2dpY2FsKHZlcnRleCwgbG9naWNhbEJv
eFNpemUuaGVpZ2h0KCksIHdyaXRpbmdNb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIHNoYXBl
ID0gY3JlYXRlUG9seWdvblNoYXBlKHZlcnRpY2VzLnJlbGVhc2UoKSwgcG9seWdvbi53aW5kUnVs
ZSgpKTsKKyAgICAgICAgc2hhcGUgPSBjcmVhdGVQb2x5Z29uU2hhcGUoc3RkOjptb3ZlKHZlcnRp
Y2VzKSwgcG9seWdvbi53aW5kUnVsZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0x
NzYsMTQgKzE3NCwxNCBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29u
CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOwog
ICAgIHNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOwog
Ci0gICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBh
c3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZs
b2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VSLCBjb25zdCBMYXlvdXRSZWN0
JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3Ro
IHBhZGRpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VS
LCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVu
Z3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCiB7CiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGltYWdlUik7CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZh
bHM+IGludGVydmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhtYXJnaW5S
ZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpKTsKKyAgICBhdXRvIGludGVydmFscyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCks
IC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSk7CiAKICAgICBp
ZiAoaW1hZ2VCdWZmZXIpIHsKQEAgLTIxNSwyNSArMjEzLDI1IEBAIFBhc3NPd25QdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGEKICAgICAgICAgfQogICAgIH0KIAotICAgIE93blB0cjxS
YXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2
YWxzLnJlbGVhc2UoKSwgbWFyZ2luUmVjdC5zaXplKCkpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZT4oc3RkOjptb3ZlKGludGVydmFscyksIG1h
cmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRp
bmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgo
bWFyZ2luLCAwKTsKICAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChwYWRkaW5nLCAwKTsKLSAgICByZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFzZSgpOworICAg
IHJldHVybiBzdGQ6Om1vdmUocmFzdGVyU2hhcGUpOwogfQogCi1QYXNzT3duUHRyPFNoYXBlPiBT
aGFwZTo6Y3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCitzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVCb3hTaGFwZShjb25zdCBSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZykKIHsKICAgICBBU1NFUlQocm91bmRlZFJlY3QucmVjdCgpLndpZHRoKCkg
Pj0gMCAmJiByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7CiAKICAgICBGbG9hdFJl
Y3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVj
dCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVk
UmVjdC5yYWRpaSgpKTsKLSAgICBPd25QdHI8U2hhcGU+IHNoYXBlID0gYWRvcHRQdHIobmV3IEJv
eFNoYXBlKGJvdW5kcykpOworICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNo
YXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAg
ICAgc2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOwogICAg
IHNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOwogCi0g
ICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKHNoYXBlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVk
ZSAiV3JpdGluZ01vZGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBQYXRoIG1hcmdpblNoYXBlOwogICAg
IH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgQmFz
aWNTaGFwZSosIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwg
TGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNo
YXBlPiBjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5
b3V0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SZWN0LCBXcml0aW5n
TW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFNoYXBlPiBjcmVhdGVCb3hTaGFwZShjb25zdCBSb3VuZGVkUmVjdCYsIFdyaXRpbmdNb2Rl
LCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSosIGNvbnN0IExheW91dFNp
emUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBh
ZGRpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVJhc3RlclNo
YXBlKEltYWdlKiwgZmxvYXQgdGhyZXNob2xkLCBjb25zdCBMYXlvdXRSZWN0JiBpbWFnZVJlY3Qs
IGNvbnN0IExheW91dFJlY3QmIG1hcmdpblJlY3QsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2lu
LCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3Jl
YXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdp
biwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oCShyZXZpc2lvbiAx
NjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
ICNpbmNsdWRlICJTaGFwZS5oIgogI2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgbGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSBjb25zdCA9IDA7CiAKLSAgICB2
b2lkIG1hcmtTaGFwZUFzRGlydHkoKSB7IG1fc2hhcGUuY2xlYXIoKTsgfQotICAgIGJvb2wgaXNT
aGFwZURpcnR5KCkgeyByZXR1cm4gIW1fc2hhcGUuZ2V0KCk7IH0KKyAgICB2b2lkIG1hcmtTaGFw
ZUFzRGlydHkoKSB7IG1fc2hhcGUgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc1NoYXBlRGlydHko
KSB7IHJldHVybiAhbV9zaGFwZTsgfQogICAgIGNvbnN0IFJlbmRlclR5cGUmIG93bmVyKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQogICAgIExheW91dFNpemUgcmVmZXJlbmNlQm94TG9n
aWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplOyB9CiAK
QEAgLTE0OCw3ICsxNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgUmVuZGVyVHlwZSYgbV9y
ZW5kZXJlcjsKIAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIE93blB0cjxTaGFwZT4gbV9zaGFwZTsK
KyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gbV9zaGFwZTsKICAgICBMYXlvdXRT
aXplIG1fcmVmZXJlbmNlQm94TG9naWNhbFNpemU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmgJKHJldmlzaW9uIDE2
NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQVBF
UykgJiYgRU5BQkxFKENTU19TSEFQRV9JTlNJREUpCiAKICNpbmNsdWRlICJTaGFwZUluZm8uaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvbnRlbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbnRlbnREYXRhLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUHRyLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b3VudGVyRGlyZWN0aXZlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ291bnRlckRpcmVjdGl2ZXMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMzLDExICszMiwxMSBAQCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ291bnRlckRpcmVjdGl2ZXMmCiAgICAgICAmJiBhLnJlc2V0VmFsdWUoKSA9PSBiLnJl
c2V0VmFsdWUoKTsKIH0KIAotUGFzc093blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShj
b25zdCBDb3VudGVyRGlyZWN0aXZlTWFwJiBjb3VudGVyRGlyZWN0aXZlcykKK3N0ZDo6dW5pcXVl
X3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFw
JiBjb3VudGVyRGlyZWN0aXZlcykKIHsKLSAgICBPd25QdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4g
cmVzdWx0ID0gYWRvcHRQdHIobmV3IENvdW50ZXJEaXJlY3RpdmVNYXApOworICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgICpyZXN1
bHQgPSBjb3VudGVyRGlyZWN0aXZlczsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGly
ZWN0aXZlcy5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogI2lmbmRlZiBDb3VudGVyRGlyZWN0aXZlc19oCiAjZGVmaW5lIENvdW50ZXJEaXJlY3RpdmVz
X2gKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTA0LDcg
KzEwNSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRlckRpcmUKIAogdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgQ291bnRlckRpcmVjdGl2ZXM+IENvdW50ZXJEaXJl
Y3RpdmVNYXA7CiAKLVBhc3NPd25QdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY2xvbmUoY29uc3Qg
Q291bnRlckRpcmVjdGl2ZU1hcCYpOworc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJEaXJlY3RpdmVN
YXA+IGNsb25lKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3Jk
aW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZENvb3JkaW5hdGUuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYg
QEAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxMSArNDQsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAvLyBzcGFuIHNob3VsZCBpbmNsdWRlIGJvdGggfGluaXRpYWxQb3NpdGlv
bkluZGV4fCBhbmQgfGZpbmFsUG9zaXRpb25JbmRleHwgdG8gYmUgY29ycmVjdC4KIGNsYXNzIEdy
aWRTcGFuIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxHcmlkU3Bhbj4gY3JlYXRl
KHNpemVfdCBpbml0aWFsUG9zaXRpb24sIHNpemVfdCBmaW5hbFBvc2l0aW9uKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmlkU3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFs
UG9zaXRpb24pKTsKLSAgICB9Ci0KICAgICBHcmlkU3BhbihzaXplX3QgaW5pdGlhbFBvc2l0aW9u
LCBzaXplX3QgZmluYWxQb3NpdGlvbikKICAgICAgICAgOiBpbml0aWFsUG9zaXRpb25JbmRleChp
bml0aWFsUG9zaXRpb24pCiAgICAgICAgICwgZmluYWxQb3NpdGlvbkluZGV4KGZpbmFsUG9zaXRp
b24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBSZW5k
ZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkCiAgICAgUmVuZGVyU3R5bGUqIHJl
c3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0g
ICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gYWRvcHRQdHIobmV3IFBzZXVkb1N0eWxlQ2Fj
aGUpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNl
dWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hcHBlbmQocHNl
dWRvKTsKIApAQCAtMTExMyw5ICsxMTEzLDkgQEAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCog
UmVuZGVyU3R5bGU6OgogCiBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNz
Q291bnRlckRpcmVjdGl2ZXMoKQogewotICAgIE93blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiYg
bWFwID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY291bnRlckRpcmVjdGl2ZXM7
CisgICAgYXV0byYgbWFwID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY291bnRl
ckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IGFkb3B0UHRyKG5ldyBD
b3VudGVyRGlyZWN0aXZlTWFwKTsKKyAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb3Vu
dGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xMjY5LDE0ICsx
MjY5LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlv
bkxpc3QqIFJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMpCi0gICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBhZG9wdFB0cihuZXcgQW5pbWF0
aW9uTGlzdCgpKTsKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5p
bWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYW5pbWF0aW9ucy5nZXQoKTsKIH0KIAogQW5pbWF0aW9u
TGlzdCogUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zKQotICAgICAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IGFkb3B0UHRyKG5ldyBBbmlt
YXRpb25MaXN0KCkpOworICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90
cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNpdGlvbnMuZ2V0KCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lv
biAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsOCBAQAogI2luY2x1ZGUgIlRoZW1lVHlwZXMu
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiVW5pY29kZUJp
ZGkuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHByb3RlY3RlZDoKICAgICBEYXRhUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gaW5o
ZXJpdGVkOwogCiAgICAgLy8gbGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKLSAgICBP
d25QdHI8UHNldWRvU3R5bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRvU3R5bGVzOwogCiAgICAg
RGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9zdmdTdHlsZTsKIApAQCAtMTQxOSwxNiArMTQxOSwx
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQW5pbWF0aW9ucygpCiAgICAgewotICAgICAg
ICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9hbmltYXRpb25zLmNsZWFyKCk7Cisg
ICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FuaW1hdGlvbnMgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJUcmFuc2l0aW9ucygpCiAgICAgewotICAgICAg
ICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucy5jbGVhcigpOwor
ICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2l0aW9ucyA9IG51
bGxwdHI7CiAgICAgfQogCi0gICAgdm9pZCBpbmhlcml0QW5pbWF0aW9ucyhjb25zdCBBbmltYXRp
b25MaXN0KiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0
aW9ucyA9IHBhcmVudCA/IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCpwYXJlbnQpKSA6IG51
bGxwdHI7IH0KLSAgICB2b2lkIGluaGVyaXRUcmFuc2l0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0
KiBwYXJlbnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNpdGlvbnMg
PSBwYXJlbnQgPyBhZG9wdFB0cihuZXcgQW5pbWF0aW9uTGlzdCgqcGFyZW50KSkgOiBudWxscHRy
OyB9CisgICAgdm9pZCBpbmhlcml0QW5pbWF0aW9ucyhjb25zdCBBbmltYXRpb25MaXN0KiBwYXJl
bnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYW5pbWF0aW9ucyA9IHBhcmVu
dCA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKnBhcmVudCkgOiBudWxscHRyOyB9
CisgICAgdm9pZCBpbmhlcml0VHJhbnNpdGlvbnMoY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50
KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zaXRpb25zID0gcGFyZW50
ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigqcGFyZW50KSA6IG51bGxwdHI7IH0K
ICAgICB2b2lkIGFkanVzdEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIGFkanVzdFRyYW5zaXRpb25z
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDggKzEyNiw4IEBAIGlubGluZSBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpTdHlsZVIKICAgICAsIG1fY291bnRlckRpcmVjdGl2ZXMoby5tX2Nv
dW50ZXJEaXJlY3RpdmVzID8gY2xvbmUoKm8ubV9jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRy
KQogICAgICwgbV9ib3hTaGFkb3coby5tX2JveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hh
ZG93RGF0YT4oKm8ubV9ib3hTaGFkb3cpIDogbnVsbHB0cikKICAgICAsIG1fYm94UmVmbGVjdChv
Lm1fYm94UmVmbGVjdCkKLSAgICAsIG1fYW5pbWF0aW9ucyhvLm1fYW5pbWF0aW9ucyA/IGFkb3B0
UHRyKG5ldyBBbmltYXRpb25MaXN0KCpvLm1fYW5pbWF0aW9ucykpIDogbnVsbHB0cikKLSAgICAs
IG1fdHJhbnNpdGlvbnMoby5tX3RyYW5zaXRpb25zID8gYWRvcHRQdHIobmV3IEFuaW1hdGlvbkxp
c3QoKm8ubV90cmFuc2l0aW9ucykpIDogbnVsbHB0cikKKyAgICAsIG1fYW5pbWF0aW9ucyhvLm1f
YW5pbWF0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8ubV9hbmltYXRp
b25zKSA6IG51bGxwdHIpCisgICAgLCBtX3RyYW5zaXRpb25zKG8ubV90cmFuc2l0aW9ucyA/IHN0
ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8ubV90cmFuc2l0aW9ucykgOiBudWxscHRy
KQogICAgICwgbV9tYXNrKG8ubV9tYXNrKQogICAgICwgbV9tYXNrQm94SW1hZ2Uoby5tX21hc2tC
b3hJbWFnZSkKICAgICAsIG1fcGFnZVNpemUoby5tX3BhZ2VTaXplKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGll
Y2VJbWFnZS5oIgogI2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMjUsMTUgKzEyNSwxNSBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gbV9jb250ZW50OwotICAgIE93
blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJlY3RpdmVzOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBtX2NvdW50ZXJEaXJlY3RpdmVzOwogICAg
IFN0cmluZyBtX2FsdFRleHQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9i
b3hTaGFkb3c7IC8vIEZvciBib3gtc2hhZG93IGRlY29yYXRpb25zLgogICAgIAogICAgIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IG1fYm94UmVmbGVjdDsKIAotICAgIE93blB0cjxBbmltYXRpb25M
aXN0PiBtX2FuaW1hdGlvbnM7Ci0gICAgT3duUHRyPEFuaW1hdGlvbkxpc3Q+IG1fdHJhbnNpdGlv
bnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkxpc3Q+IG1fYW5pbWF0aW9uczsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uTGlzdD4gbV90cmFuc2l0aW9uczsKIAogICAgIEZp
bGxMYXllciBtX21hc2s7CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94SW1hZ2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMCw5ICsxMjAsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFw
cGx5UmVzCiAgICAgaWYgKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGll
bnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRl
cmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCi0g
ICAgICAgIGdyYWRpZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERhdGEpOworICAgICAg
ICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKIAogICAg
IGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUgJiBBcHBseVRvVGV4dE1vZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1l
bnQuaCIKLQorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICBib29sIG1fc2hvdWxkQ29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyA6IDE7Ci0gICAg
SGFzaE1hcDxSZW5kZXJPYmplY3QqLCBPd25QdHI8R3JhZGllbnREYXRhPj4gbV9ncmFkaWVudE1h
cDsKKyAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudERh
dGE+PiBtX2dyYWRpZW50TWFwOwogCiAjaWYgVVNFKENHKQogICAgIEdyYXBoaWNzQ29udGV4dCog
bV9zYXZlZENvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAxNjYyNDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBQYXR0ZXJuRGF0YSogUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpiCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQnVp
bGQgcGF0dGVybi4KLSAgICBPd25QdHI8UGF0dGVybkRhdGE+IHBhdHRlcm5EYXRhID0gYWRvcHRQ
dHIobmV3IFBhdHRlcm5EYXRhKTsKKyAgICBhdXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46
OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRl
cm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCkBAIC0xMjksNyArMTI5LDcgQEAgUGF0dGVybkRhdGEq
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YgogICAgIC8vIFZhcmlvdXMgY2FsbHMgYWJvdmUg
bWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNlcyAoSW1hZ2VCdWZm
ZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1hZ2UgY2FjaGUgZm9y
IGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRlbGV0ZWQgYnkKICAg
ICAvLyByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKCksIHdlIG9ubHkgbWFrZSBpdCB2aXNpYmxl
IGluIHRoZSBjYWNoZSBhdCB0aGUgdmVyeSBlbmQuCi0gICAgcmV0dXJuIG1fcGF0dGVybk1hcC5z
ZXQob2JqZWN0LCBwYXR0ZXJuRGF0YS5yZWxlYXNlKCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
KyAgICByZXR1cm4gbV9wYXR0ZXJuTWFwLnNldChvYmplY3QsIHN0ZDo6bW92ZShwYXR0ZXJuRGF0
YSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgdW5zaWduZWQgc2hvcnQg
cmVzb3VyY2VNb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1VuaXRUeXBlcy5oIgotCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMgOiAxOwogICAgIFBh
dHRlcm5BdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKLSAgICBIYXNoTWFwPFJlbmRlck9iamVjdCos
IE93blB0cjxQYXR0ZXJuRGF0YT4+IG1fcGF0dGVybk1hcDsKKyAgICBIYXNoTWFwPFJlbmRlck9i
amVjdCosIHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuRGF0YT4+IG1fcGF0dGVybk1hcDsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNyBAQCBSZW5k
ZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6dXBk
YXRlU2hhcGVGcm9tRWxlbWVudCgpCiB7Ci0gICAgbV9wYXRoLmNsZWFyKCk7Ci0gICAgbV9wYXRo
ID0gYWRvcHRQdHIobmV3IFBhdGgpOworICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0
aD4oKTsKICAgICBBU1NFUlQoUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSk7CiAKICAgICB1cGRh
dGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCksIHBhdGgoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCShy
ZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJTVkdNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR01hcmtlckRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVwYWludEJv
dW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1No
YWRvdzsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKLSAgICBPd25QdHI8
UGF0aD4gbV9wYXRoOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXRoPiBtX3BhdGg7CiAgICAgVmVj
dG9yPE1hcmtlclBvc2l0aW9uPiBtX21hcmtlclBvc2l0aW9uczsKIAogICAgIGJvb2wgbV9uZWVk
c0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDYs
NyArNDQ2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIoUmVuZGVyU1ZHUgogICAg
IEFTU0VSVChjbGlwcGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBDbGlwcGVyUmVzb3VyY2VUeXBlKTsK
IAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSA9IENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBl
ckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5j
bGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBi
b29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1JlCiAgICAgQVNTRVJUKGZpbHRl
ci0+cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSA9IENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRh
dGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC00OTAsNyArNDkwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6
OnNldE1hcmtlclN0YXJ0KFJlbmRlcgogICAgIEFTU0VSVChtYXJrZXJTdGFydC0+cmVzb3VyY2VU
eXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQot
ICAgICAgICBtX21hcmtlckRhdGEgPSBNYXJrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9t
YXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJr
ZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAt
NTExLDcgKzUxMSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1YK
ICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5
cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IE1h
cmtlckRhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtl
ck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFNWR1Jlc291
cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3Vy
Y2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRh
KQotICAgICAgICBtX21hcmtlckRhdGEgPSBNYXJrZXJEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAg
bV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9t
YXJrZXJEYXRhLT5tYXJrZXJFbmQgPSBtYXJrZXJFbmQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01
NTMsNyArNTUzLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hc2tlcihSZW5kZXJTVkdSZQog
ICAgIEFTU0VSVChtYXNrZXItPnJlc291cmNlVHlwZSgpID09IE1hc2tlclJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEgPSBDbGlwcGVyRmlsdGVyTWFza2VyRGF0YTo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
bWFza2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTc2LDcgKzU3Niw3IEBAIGJv
b2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc28KICAgICAgICAgICAgfHwgZmls
bC0+cmVzb3VyY2VUeXBlKCkgPT0gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGUpOwogCiAgICAg
aWYgKCFtX2ZpbGxTdHJva2VEYXRhKQotICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gRmlsbFN0
cm9rZURhdGE6OmNyZWF0ZSgpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwg
PSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTk5LDcgKzU5OSw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmUKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNv
dXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1f
ZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBGaWxsU3Ryb2tlRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ry
b2tlOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlcy5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMCArMjAs
OSBAQAogI2lmbmRlZiBTVkdSZXNvdXJjZXNfaAogI2RlZmluZSBTVkdSZXNvdXJjZXNfaAogCisj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0LDExICsxMjMsNiBA
QCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4gY3JlYXRlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbGlwcGVyRmlsdGVyTWFza2VyRGF0YSk7Ci0gICAg
ICAgIH0KLQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXI7CiAjaWYg
RU5BQkxFKEZJTFRFUlMpCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXI7
CkBAIC0xNDgsMTEgKzE0Miw2IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1hcmtlckRhdGE+IGNyZWF0ZSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFya2VyRGF0YSk7Ci0gICAgICAgIH0K
LQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQ7CiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQ7CiAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlTWFya2VyKiBtYXJrZXJFbmQ7CkBAIC0xNzEsMTggKzE2MCwxMyBAQCBwcml2YXRlOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxGaWxsU3Ry
b2tlRGF0YT4gY3JlYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBGaWxsU3Ryb2tlRGF0YSk7Ci0gICAgICAgIH0KLQogICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciogZmlsbDsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
IHN0cm9rZTsKICAgICB9OwogCi0gICAgT3duUHRyPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPiBt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhOwotICAgIE93blB0cjxNYXJrZXJEYXRhPiBtX21hcmtl
ckRhdGE7Ci0gICAgT3duUHRyPEZpbGxTdHJva2VEYXRhPiBtX2ZpbGxTdHJva2VEYXRhOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4gbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyRGF0YT4gbV9tYXJrZXJEYXRh
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxsU3Ryb2tlRGF0YT4gbV9maWxsU3Ryb2tlRGF0YTsK
ICAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogbV9saW5rZWRSZXNvdXJjZTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
Q2FjaGUuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDEy
IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb20KICAgICBjb25zdCBT
VkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwogCiAgICAgLy8gQnVp
bGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVu
ZGVyT2JqZWN0Ci0gICAgT3duUHRyPFNWR1Jlc291cmNlcz4gbmV3UmVzb3VyY2VzID0gYWRvcHRQ
dHIobmV3IFNWR1Jlc291cmNlcyk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNo
ZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN2Z1N0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gUHV0IG9iamVjdCBpbiBjYWNoZS4KLSAgICBTVkdSZXNvdXJjZXMmIHJlc291cmNlcyA9ICpt
X2NhY2hlLmFkZCgmcmVuZGVyZXIsIG5ld1Jlc291cmNlcy5yZWxlYXNlKCkpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBTVkdSZXNvdXJjZXMmIHJlc291cmNlcyA9ICptX2NhY2hlLmFkZCgmcmVuZGVy
ZXIsIHN0ZDo6bW92ZShuZXdSZXNvdXJjZXMpKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyBS
dW4gY3ljbGUtZGV0ZWN0aW9uIF9hZnRlcndhcmRzXywgc28gc2VsZi1yZWZlcmVuY2VzIGNhbiBi
ZSBjYXVnaHQgYXMgd2VsbC4KICAgICBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlciBzb2x2ZXIocmVu
ZGVyZXIsIHJlc291cmNlcyk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmFkZFJlc291cmNlc0Zyb20KIAogdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVz
b3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIE93blB0
cjxTVkdSZXNvdXJjZXM+IHJlc291cmNlcyA9IG1fY2FjaGUudGFrZSgmcmVuZGVyZXIpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdSZXNvdXJjZXM+IHJlc291cmNlcyA9IG1fY2FjaGUudGFrZSgm
cmVuZGVyZXIpOwogICAgIGlmICghcmVzb3VyY2VzKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgJ
KHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOSBAQAogI2RlZmluZSBT
VkdSZXNvdXJjZXNDYWNoZV9oCiAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRSZXNvdXJj
ZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAg
dm9pZCByZW1vdmVSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYpOwogCi0gICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93blB0cjxTVkdSZXNvdXJjZXM+
PiBDYWNoZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0Kiwgc3Rk
Ojp1bmlxdWVfcHRyPFNWR1Jlc291cmNlcz4+IENhY2hlTWFwOwogICAgIENhY2hlTWFwIG1fY2Fj
aGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5p
dGlhbGl6ZU1lCiAgICAgbV9pc0NvbXBsZXhUZXh0ID0gc2NhbGVkRm9udC5jb2RlUGF0aChtX3J1
bikgPT0gRm9udDo6Q29tcGxleDsKIAogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCi0gICAgICAg
IG1fc2ltcGxlV2lkdGhJdGVyYXRvci5jbGVhcigpOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRl
cmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9y
ID0gYWRvcHRQdHIobmV3IFdpZHRoSXRlcmF0b3IoJnNjYWxlZEZvbnQsIG1fcnVuKSk7CisgICAg
ICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRv
cj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKIH0KIAogc3RydWN0IE1lYXN1cmVUZXh0RGF0YSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmgJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3RvdGFsV2lkdGg7CiAKICAgICAvLyBTaW1wbGUg
dGV4dCBvbmx5LgotICAgIE93blB0cjxXaWR0aEl0ZXJhdG9yPiBtX3NpbXBsZVdpZHRoSXRlcmF0
b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdpZHRoSXRlcmF0b3I+IG1fc2ltcGxlV2lkdGhJdGVy
YXRvcjsKIAogICAgIC8vIENvbXBsZXggdGV4dCBvbmx5LgogICAgIFNWR1RleHRNZXRyaWNzIG1f
Y29tcGxleFN0YXJ0VG9DdXJyZW50TWV0cmljczsK
</data>
<flag name="review"
          id="252026"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>