<?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>44872</bug_id>
          
          <creation_ts>2010-08-30 09:10:56 -0700</creation_ts>
          <short_desc>Make SVG constructors private to make sure callers all use create</short_desc>
          <delta_ts>2010-08-30 11:44:30 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271456</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 09:10:56 -0700</bug_when>
    <thetext>Make SVG constructors private to make sure callers all use create</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271467</commentid>
    <comment_count>1</comment_count>
      <attachid>65923</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 09:39:05 -0700</bug_when>
    <thetext>Created attachment 65923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271526</commentid>
    <comment_count>2</comment_count>
      <attachid>65923</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 11:44:26 -0700</bug_when>
    <thetext>Comment on attachment 65923
Patch

Clearing flags on attachment: 65923

Committed r66397: &lt;http://trac.webkit.org/changeset/66397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271527</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 11:44:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65923</attachid>
            <date>2010-08-30 09:39:05 -0700</date>
            <delta_ts>2010-08-30 11:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44872-20100830093903.patch</filename>
            <type>text/plain</type>
            <size>244483</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzY4IEBACisyMDEwLTA4LTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IFNWRyBjb25zdHJ1Y3RvcnMgcHJpdmF0ZSB0byBtYWtlIHN1cmUgY2FsbGVycyBhbGwgdXNlIGNy
ZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4
NzIKKworICAgICAgICBNYWRlIGFzIG1hbnkgbWVtYmVycyBwcml2YXRlIGFuZCBwcm90ZWN0ZWQg
YXMgcG9zc2libGUsIGFuZCBnb3QgcmlkIG9mIG1hbnkKKyAgICAgICAgdW5uZWVkZWQgZW1wdHkg
Y29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgZGVmaW5pdGlvbnMsIGluIHNvbWUgY2FzZXMgY2hh
bmdpbmcKKyAgICAgICAgYSBjbGFzcyB0byBiZSBub24tcG9seW1vcnBoaWMuIE1hZGUgc29tZSBm
dW5jdGlvbnMgaW5saW5lLiBVc2VkIHRoZSB3b3JkIGRvY3VtZW50CisgICAgICAgIGluc3RlYWQg
b2YgdGhlIGFiYnJldmlhdGlvbiBkb2MuIFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgYmFzZSBj
bGFzcworICAgICAgICBpbml0aWFsaXphdGlvbiBpbiBjYXNlcyB3aGVyZSBpdCBpcyBubyBkaWZm
ZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKworICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIp
OgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpTVkdB
bHRHbHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVDb2xvckVsZW1lbnQ6OlNWR0FuaW1hdGVDb2xvckVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpTVkdB
bmltYXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpTVkdBbmltYXRlTW90aW9uRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50OjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkUGF0aERhdGEuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBhdGhEYXRhLmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUG9pbnRzLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRQb2ludHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6
OlNWR0NpcmNsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDbGlwUGF0aEVsZW1lbnQ6OlNWR0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5jcHA6CisgICAgICAg
ICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vy
c29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVzY0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRGVzY0VsZW1lbnQ6OlNWR0Rlc2NFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdE
b2N1bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNp
b25zOjpyZXBvcnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVwb3J0RXJyb3IpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
SW5zdGFuY2VMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNW
R0ZFQ29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OlNWR0ZFRGlzdGFudExpZ2h0RWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZs
b29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29k
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUZ1bmNBRWxlbWVudDo6U1ZHRkVGdW5jQUVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUZ1bmNBRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNCRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZ1bmNCRWxlbWVudDo6U1ZHRkVGdW5j
QkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNCRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZ1bmNH
RWxlbWVudDo6U1ZHRkVGdW5jR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNHRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUZ1bmNSRWxlbWVudDo6U1ZHRkVGdW5jUkVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUZ1bmNSRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OlNWR0ZFSW1hZ2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZF
TGlnaHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
ZXJnZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJn
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
b3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZz
ZXRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVQb2ludExpZ2h0RWxlbWVudDo6U1ZHRkVQb2ludExpZ2h0RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSk6CisgICAgICAgICog
c3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNw
b3RMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcG90TGlnaHRFbGVt
ZW50OjpTVkdGRVNwb3RMaWdodEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdo
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgICogc3ZnL1NWR0Zp
dFRvVmlld0JveC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RGF0YS5jcHA6CisgICAgICAgICog
c3ZnL1NWR0ZvbnREYXRhLmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpTVkdGb250RWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OlNWR0ZvbnRGYWNl
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9udEZhY2VGb3JtYXRFbGVtZW50OjpTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9u
dEZhY2VOYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZU5hbWVF
bGVtZW50OjpTVkdGb250RmFjZU5hbWVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZh
Y2VOYW1lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VTcmNFbGVtZW50OjpTVkdGb250RmFjZVNy
Y0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZvbnRGYWNlVXJpRWxlbWVudDo6U1ZHRm9udEZhY2VVcmlFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0dFbGVtZW50OjpTVkdHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0dFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHbHlwaEVsZW1lbnQ6OlNWR0dseXBoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
SEtlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hLZXJuRWxlbWVudDo6U1ZH
SEtlcm5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5FbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVs
ZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUxvYWRlci5jcHA6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlTG9hZGVyLmg6CisgICAgICAgICogc3ZnL1NWR0xhbmdTcGFjZS5jcHA6CisgICAgICAgICog
c3ZnL1NWR0xhbmdTcGFjZS5oOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTG9jYXRhYmxlLmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHTG9jYXRhYmxlLmg6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OlNWR01QYXRoRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
OlNWR01hcmtlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
c2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNZXRhZGF0YUVsZW1lbnQ6OlNWR01ldGFkYXRhRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR01ldGFkYXRhRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OlNW
R01pc3NpbmdHbHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdNaXNzaW5nR2x5cGhFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdOdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdlbmVyaWNQYXJzZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZU51bWJlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aEJsZW5kZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmg6CisgICAgICAgICogc3Zn
L1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aENvbnN1bWVyLmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVt
ZW50OjpTVkdQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFy
c2VyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWcuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU2VnLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdBcmMuaDoKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFNlZ0Nsb3NlUGF0aC5jcHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdDbG9zZVBh
dGguaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmg6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaW5ldG8uaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaDoKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNl
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ01vdmV0by5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU291cmNlLmg6Cisg
ICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5j
cHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaDoKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUG9p
bnRMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R1BvbHlFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BvbHlnb25FbGVtZW50OjpTVkdQb2x5Z29uRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1BvbHlnb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BvbHls
aW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5bGluZUVsZW1lbnQ6OlNW
R1BvbHlsaW5lRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKiBzdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Nj
cmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU2V0RWxlbWVudDo6U1ZHU2V0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Nl
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdC5jcHA6CisgICAg
ICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGFibGUuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdTdHlsYWJsZS5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50OjpTVkdTdHlsZUVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
OjpTVkdTdHlsZWRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTd2l0Y2hFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpTVkdUUmVm
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1RTcGFuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUU3BhbkVsZW1lbnQ6
OlNWR1RTcGFuRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRl
bnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRF
bGVtZW50OjpTVkdUZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6
OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OlNWR1RpdGxlRWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybS5jcHA6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5oOgor
ICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHVHJh
bnNmb3JtYWJsZS5oOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5bWJvbEVsZW1lbnRzSW5TaGFk
b3dUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6U1ZH
Vmlld1NwZWMpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2Zy9T
Vkdab29tQW5kUGFuLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAg
ICAqIHN2Zy9TVkdab29tRXZlbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdab29tRXZlbnQuaDoK
KwogMjAxMC0wOC0zMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LiBBZGQgdGhlIG5ldyBmaWxlYXBpIGRpcmVjdG9yeSB0byB0aGUg
SURMIHZwYXRoLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpCi0gICAgOiBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBTVkdVUklSZWZlcmVuY2Uo
KQotICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5saW5lIFNWR0FFbGVtZW50OjpTVkdBRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApA
QCAtNTksMTAgKzU1LDYgQEAgUGFzc1JlZlB0cjxTVkdBRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNy
ZQogICAgIHJldHVybiBuZXcgU1ZHQUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1T
VkdBRWxlbWVudDo6flNWR0FFbGVtZW50KCkKLXsKLX0KLQogU3RyaW5nIFNWR0FFbGVtZW50Ojp0
aXRsZSgpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHhsaW5rOnRpdGxlIGlzIHNldCAobm9uLWVt
cHR5IHN0cmluZyksIHVzZSBpdC4KQEAgLTIyNyw3ICsyMTksNyBAQCBib29sIFNWR0FFbGVtZW50
OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlCiAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjphVGFnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChwYXJlbnQoKSAmJiBw
YXJlbnQoKS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdF
bGVtZW50Kj4ocGFyZW50KCkpLT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKKyAg
ICAgICAgcmV0dXJuIHBhcmVudCgpLT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsK
IAogICAgIHJldHVybiBTVkdFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxk
KTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICAgICAg
dmlydHVhbCB+U1ZHQUVsZW1lbnQoKTsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR0FFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdBbHRHbHlwaEVs
ZW1lbnQ6OlNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogfQogCkBAIC00MywxMCArNDMsNiBAQCBQYXNzUmVmUHRyPFNWR0Fs
dEdseXBoRWxlbWVudD4gU1ZHQWx0R2x5CiAgICAgcmV0dXJuIG5ldyBTVkdBbHRHbHlwaEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdBbHRHbHlwaEVsZW1lbnQ6On5TVkdBbHRH
bHlwaEVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0FsdEdseXBoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCi0gICAgICAgIHZpcnR1YWwgflNWR0FsdEdseXBoRWxlbWVudCgpOwotCiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZ2x5cGhSZWYoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRH
bHlwaFJlZihjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybWF0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdB
bmdsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMjUgKzM0LDExIEBAIFNWR0FuZ2xlOjpTVkdBbmdsZSgpCiB7CiB9CiAKLVNWR0FuZ2xlOjp+
U1ZHQW5nbGUoKQotewotfQotCi1TVkdBbmdsZTo6U1ZHQW5nbGVUeXBlIFNWR0FuZ2xlOjp1bml0
VHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdW5pdFR5cGU7Ci19Ci0KIHZvaWQgU1ZHQW5n
bGU6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQogewogICAgIG1fdmFsdWUgPSB2YWx1ZTsKIH0KIAot
ZmxvYXQgU1ZHQW5nbGU6OnZhbHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92YWx1ZTsKLX0K
LQogLy8gY2FsYyBtX3ZhbHVlCiB2b2lkIFNWR0FuZ2xlOjpjYWxjdWxhdGUoKQogewpAQCAtNzAs
MTEgKzU2LDYgQEAgdm9pZCBTVkdBbmdsZTo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKAogICAg
IGNhbGN1bGF0ZSgpOwogfQogCi1mbG9hdCBTVkdBbmdsZTo6dmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci19Ci0KIHZv
aWQgU1ZHQW5nbGU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogewogICAgIG1f
dmFsdWVBc1N0cmluZyA9IHM7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29y
ZS9zdmcvU1ZHQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHQW5nbGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
U1ZHQW5nbGUoKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHQW5nbGUoKTsKIAogICAgICAgICBlbnVt
IFNWR0FuZ2xlVHlwZSB7CiAgICAgICAgICAgICBTVkdfQU5HTEVUWVBFX1VOS05PV04gICAgICAg
ICAgID0gMCwKQEAgLTM5LDEzICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBTVkdfQU5HTEVUWVBFX0dSQUQgICAgICAgICAgICAgID0gNAogICAgICAgICB9OwogCi0g
ICAgICAgIFNWR0FuZ2xlVHlwZSB1bml0VHlwZSgpIGNvbnN0OworICAgICAgICBTVkdBbmdsZVR5
cGUgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VuaXRUeXBlOyB9CiAKICAgICAgICAgdm9p
ZCBzZXRWYWx1ZShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHZhbHVlKCkgY29uc3Q7IAorICAgICAg
ICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgICAgICB2b2lk
IHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwot
ICAgICAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdDsKKyAgICAgICAgZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHM7IH0KIAogICAgICAgICB2b2lkIHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAgICAgICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCAr
MjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1TVkdBbmltYXRlQ29sb3JFbGVt
ZW50OjpTVkdBbmltYXRlQ29sb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdBbmltYXRlRWxlbWVudCh0YWdOYW1lLCBkb2MpCitp
bmxpbmUgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudDo6U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdB
bmltYXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVDb2xvckVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB9OwogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1hdGVFbGVt
ZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2MpCitTVkdB
bmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fcHJvcGVydHlUeXBlKFN0cmluZ1Byb3BlcnR5KQogICAg
ICwgbV9mcm9tTnVtYmVyKDApCiAgICAgLCBtX3RvTnVtYmVyKDApCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0xp
c3Q7CiAgICAgY2xhc3MgU1ZHUG9pbnRMaXN0OwogCkBAIC0zNywxMCArMzgsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
QW5pbWF0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgICAgICBTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZUVsZW1lbnQoKTsKLSAgICAKKwogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNldFRvQmFzZVZh
bHVlKGNvbnN0IFN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFu
ZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
Zyk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBT
VkdOYW1lczsKIAotU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBT
VkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fYmFzZUluZGV4SW5UcmFuc2Zvcm1MaXN0KDApCiAgICAg
LCBtX2FuZ2xlKDApCiB7CkBAIC01MiwxMCArNTIsNiBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50PiBTVkdBCiAgICAgcmV0dXJuIG5ldyBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp+U1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQoKQotewotfQotCiBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjpoYXNWYWxpZFRhcmdldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFTVkdBbmltYXRpb25FbGVt
ZW50OjpoYXNWYWxpZFRhcmdldCgpKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRl
TW90aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
CisgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkVGFyZ2V0KCkgY29u
c3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgICAgICAKLSAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRU
b0Jhc2VWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0
ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVz
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jKQotICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0Fu
aW1hdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU1ZHVHJhbnNm
b3JtOjpTVkdfVFJBTlNGT1JNX1VOS05PV04pCiAgICAgLCBtX2Jhc2VJbmRleEluVHJhbnNmb3Jt
TGlzdCgwKQogewpAQCAtNTgsMTAgKzU4LDYgQEAgUGFzc1JlZlB0cjxTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudD4gUwogICAgIHJldHVybiBuZXcgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6flNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KCkKLXsKLX0KLQogYm9vbCBTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudDo6aGFzVmFsaWRUYXJnZXQoKSBjb25zdAogewogICAgIFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQg
KzM2LDEzIEBAIGNsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IDogcHVibGkKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCitwcml2YXRlOgogICAgIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwotICAgIHZpcnR1YWwgflNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KCk7CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGhhc1ZhbGlkVGFyZ2V0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKLXByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29s
IGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlW
YWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQwICsxIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVNWR0FuaW1hdGVkUGF0aERhdGE6OlNWR0FuaW1hdGVkUGF0aERh
dGEoKQotewotfQotCi1TVkdBbmltYXRlZFBhdGhEYXRhOjp+U1ZHQW5pbWF0ZWRQYXRoRGF0YSgp
Ci17Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQK
Ky8vIFRoaXMgZmlsZSBpcyBub3cgaW50ZW50aW9uYWxseSBlbXB0eS4gRGVsZXRlIGl0IGFmdGVy
IHJlbW92aW5nIGl0IGZyb20gYWxsIHRoZSBidWlsZCBzeXN0ZW1zIGFuZCBwcm9qZWN0IGZpbGVz
LgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaAkocmV2aXNpb24gNjYzOTEpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGhEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE0
ICsyNCwxMyBAQAogI2lmIEVOQUJMRShTVkcpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAg
IGNsYXNzIFNWR1BhdGhTZWdMaXN0OwogCiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBTVkdBbmltYXRlZFBhdGhEYXRhKCk7Ci0gICAgICAgIHZp
cnR1YWwgflNWR0FuaW1hdGVkUGF0aERhdGEoKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZWRQYXRoRGF0YSgpIHsgfQogCi0gICAgICAgIC8vICdTVkdBbmltYXRlZFBhdGhEYXRhJyBmdW5j
dGlvbnMKICAgICAgICAgdmlydHVhbCBTVkdQYXRoU2VnTGlzdCogcGF0aFNlZ0xpc3QoKSBjb25z
dCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU1ZHUGF0aFNlZ0xpc3QqIG5vcm1hbGl6ZWRQYXRoU2Vn
TGlzdCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBTVkdQYXRoU2VnTGlzdCogYW5pbWF0
ZWRQYXRoU2VnTGlzdCgpIGNvbnN0ID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50cy5j
cHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICsxIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRQb2ludHMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZFBvaW50czo6
U1ZHQW5pbWF0ZWRQb2ludHMoKQotewotfQotCi1TVkdBbmltYXRlZFBvaW50czo6flNWR0FuaW1h
dGVkUG9pbnRzKCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmlt
OnRzPTQ6bm9ldAorLy8gVGhpcyBmaWxlIGlzIG5vdyBpbnRlbnRpb25hbGx5IGVtcHR5LiBEZWxl
dGUgaXQgYWZ0ZXIgcmVtb3ZpbmcgaXQgZnJvbSBhbGwgdGhlIGJ1aWxkIHN5c3RlbXMgYW5kIHBy
b2plY3QgZmlsZXMuCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRzLmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQsMTIgKzI0LDEyIEBACiAjaWYgRU5BQkxFKFNWRykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgY2xhc3MgU1ZHUG9pbnRMaXN0OwogCiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludHMg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHQW5pbWF0ZWRQb2ludHMoKTsKLSAgICAgICAgdmly
dHVhbCB+U1ZHQW5pbWF0ZWRQb2ludHMoKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQ
b2ludHMoKSB7IH0KIAogICAgICAgICAvLyAnU1ZHQW5pbWF0ZWRQb2ludHMnIGZ1bmN0aW9ucwog
ICAgICAgICB2aXJ0dWFsIFNWR1BvaW50TGlzdCogcG9pbnRzKCkgY29uc3QgPSAwOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDE4ICs1
MiwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ci1TVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdTTUlMRWxlbWVudCh0YWdO
YW1lLCBkb2MpCi0gICAgLCBTVkdUZXN0cygpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkgCitTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR1NN
SUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9hbmltYXRpb25WYWxpZChmYWxz
ZSkKIHsKIH0KIAotU1ZHQW5pbWF0aW9uRWxlbWVudDo6flNWR0FuaW1hdGlvbkVsZW1lbnQoKQot
ewotfQotCiBzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZl
Y3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKIHsKICAgICByZXN1bHQuY2xl
YXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRWxlbWVudFRpbWVDb250cm9sIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGlvbkVsZW1lbnQoKTsKLQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJl
c2VydmVEZWNscyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLQogICAgICAgICAvLyBTVkdBbmltYXRpb25FbGVtZW50CiAg
ICAgICAgIGZsb2F0IGdldFN0YXJ0VGltZSgpIGNvbnN0OwogICAgICAgICBmbG9hdCBnZXRDdXJy
ZW50VGltZSgpIGNvbnN0OwpAQCAtNjUsNiArNTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVJc0NTUyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZU5hbWUpOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBTVkdBbmltYXRpb25FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKwogICAgICAgICBlbnVtIENhbGNNb2Rl
IHsgQ2FsY01vZGVEaXNjcmV0ZSwgQ2FsY01vZGVMaW5lYXIsIENhbGNNb2RlUGFjZWQsIENhbGNN
b2RlU3BsaW5lIH07CiAgICAgICAgIENhbGNNb2RlIGNhbGNNb2RlKCkgY29uc3Q7CiAgICAgICAg
IApAQCAtOTMsNiArOTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBlbmRlZEFjdGl2ZUludGVydmFsKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2Vy
dmVEZWNscyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFu
ZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
ZykgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KSA9IDA7CkBA
IC0xMDUsNyArMTA1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGN1cnJl
bnRWYWx1ZXNGcm9tS2V5UG9pbnRzKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJj
ZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYgdG8pIGNvbnN0OwogICAgICAgICBmbG9hdCBjYWxj
dWxhdGVQZXJjZW50Rm9yU3BsaW5lKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHNwbGluZUluZGV4
KSBjb25zdDsKICAgICAgICAgCi0gICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
QW5pbWF0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisr
KyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTEgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdDaXJjbGVFbGVtZW50OjpT
VkdDaXJjbGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2MpCi0gICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0g
ICAgLCBTVkdUZXN0cygpCi0gICAgLCBTVkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpCitpbmxpbmUgU1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIG1fY3goTGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV9jeShMZW5ndGhNb2RlSGVpZ2h0KQog
ICAgICwgbV9yKExlbmd0aE1vZGVPdGhlcikKQEAgLTQ4LDEwICs0NSw2IEBAIFBhc3NSZWZQdHI8
U1ZHQ2lyY2xlRWxlbWVudD4gU1ZHQ2lyY2xlRWwKICAgICByZXR1cm4gbmV3IFNWR0NpcmNsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdDaXJjbGVFbGVtZW50Ojp+U1ZHQ2ly
Y2xlRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmN4QXR0cikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR0NpcmNsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHByaXZhdGU6CiAgICAgICAgIFNWR0NpcmNsZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNW
R0NpcmNsZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIApAQCAtNDcsNyArNDcsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25z
dDsKIAotICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Q7CiAKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdD
aXJjbGVFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBTVkdMZW5ndGgsIEN4LCBjeCkKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xp
cFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2Mp
Ci0gICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAg
LCBTVkdUZXN0cygpCi0gICAgLCBTVkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpCitpbmxpbmUgU1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAg
ICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFD
RU9OVVNFKQogewogfQpAQCAtNDgsMTAgKzQ1LDYgQEAgUGFzc1JlZlB0cjxTVkdDbGlwUGF0aEVs
ZW1lbnQ+IFNWR0NsaXBQYQogICAgIHJldHVybiBuZXcgU1ZHQ2xpcFBhdGhFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHQ2xpcFBhdGhFbGVtZW50Ojp+U1ZHQ2xpcFBhdGhFbGVt
ZW50KCkKLXsKLX0KLQogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpjbGlwUGF0aFVuaXRzQXR0cikgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgU1ZHQ2xpcFBhdGhFbGVtZW50IDogcHVi
bGljIFNWR1N0eQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0NsaXBQYXRoRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCitwcml2YXRl
OgogICAgIFNWR0NsaXBQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLSAgICB2aXJ0dWFsIH5TVkdDbGlwUGF0aEVsZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAotcHJp
dmF0ZToKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0NsaXBQYXRoRWxlbWVudCwg
U1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBpbnQsIENsaXBQYXRoVW5pdHMsIGNsaXBQYXRo
VW5pdHMpCiAKICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
Y3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTYgKzUwLDYgQEAgU1ZHQ29sb3I6OlNWR0NvbG9yKGNvbnN0IENvbG9y
JiBjKQogewogfQogCi0KLVNWR0NvbG9yOjp+U1ZHQ29sb3IoKQotewotfQotCi11bnNpZ25lZCBz
aG9ydCBTVkdDb2xvcjo6Y29sb3JUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb2xvclR5
cGU7Ci19Ci0KIFBhc3NSZWZQdHI8UkdCQ29sb3I+IFNWR0NvbG9yOjpyZ2JDb2xvcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUobV9jb2xvci5yZ2IoKSk7CkBAIC0xMDMs
MTEgKzkzLDYgQEAgU3RyaW5nIFNWR0NvbG9yOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLWNvbnN0IENvbG9yJiBTVkdDb2xvcjo6Y29sb3IoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NvbG9yOwotfQotCiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
aAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdDb2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgflNWR0NvbG9yKCk7Ci0KICAgICAgICAgZW51
bSBTVkdDb2xvclR5cGUgewogICAgICAgICAgICAgU1ZHX0NPTE9SVFlQRV9VTktOT1dOICAgICAg
ICAgICAgICAgICAgID0gMCwKICAgICAgICAgICAgIFNWR19DT0xPUlRZUEVfUkdCQ09MT1IgICAg
ICAgICAgICAgICAgICA9IDEsCkBAIC01NSw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgfTsKIAogICAgICAgICAvLyAnU1ZHQ29sb3InIGZ1bmN0aW9ucwotICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjb2xvclR5cGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y29sb3JUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclR5cGU7IH0KIAogICAgICAgICBQYXNz
UmVmUHRyPFJHQkNvbG9yPiByZ2JDb2xvcigpIGNvbnN0OwogCkBAIC02NiwxNiArNjQsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFJHQkNvbG9ySUNDQ29sb3IoY29u
c3QgU3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICB2b2lkIHNldENvbG9yKHVuc2lnbmVkIHNob3J0IGNvbG9yVHlwZSwgY29u
c3QgU3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLQotICAgICAg
ICAvLyBIZWxwZXJzCi0gICAgICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0OworICAgICAg
ICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIFNWR0NvbG9yKCk7CiAgICAgICAgIFNWR0NvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IpOwogICAgICAgICBTVkdDb2xvcihjb25zdCBDb2xvciYpOwogCisgICAgICAg
IHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IFNWR0NvbG9yKFNWR0NvbG9yVHlwZSk7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKLSAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQorU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoRkVDT01QT05FTlRUUkFO
U0ZFUl9UWVBFX1VOS05PV04pCiAgICAgLCBtX3RhYmxlVmFsdWVzKFNWR051bWJlckxpc3Q6OmNy
ZWF0ZShTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSkKLSAgICAsIG1fc2xvcGUoMS4wZikKLSAg
ICAsIG1fYW1wbGl0dWRlKDEuMGYpCi0gICAgLCBtX2V4cG9uZW50KDEuMGYpCi17Ci19Ci0KLVNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp+U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQoKQorICAgICwgbV9zbG9wZSgxKQorICAgICwgbV9hbXBsaXR1ZGUoMSkK
KyAgICAsIG1fZXhwb25lbnQoMSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDE0ICszMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVt
ZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJh
bnNmZXJGdW5jdGlvbigpIGNvbnN0OworCisgICAgcHJvdGVjdGVkOgogICAgICAgICBTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICAgICAgCi0gICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBpbnQsIFR5cGUsIHR5cGUpCiAgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNW
R05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFNWR051bWJlckxpc3QqLCBUYWJsZVZhbHVlcywgdGFi
bGVWYWx1ZXMpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEp
CisrKyBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTEgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdDdXJzb3JFbGVtZW50
OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCi0gICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIFNWR1Rlc3RzKCkK
LSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgU1ZHVVJJUmVmZXJl
bmNlKCkKK2lubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQogICAgICwg
bV95KExlbmd0aE1vZGVIZWlnaHQpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZp
c2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTIgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0N1cnNvckVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICBTVkdDdXJzb3JFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdD
dXJzb3JFbGVtZW50KCk7CiAKICAgICAgICAgdm9pZCBhZGRDbGllbnQoU1ZHRWxlbWVudCopOwog
ICAgICAgICB2b2lkIHJlbW92ZUNsaWVudChTVkdFbGVtZW50Kik7CiAKKyAgICBwcml2YXRlOgor
ICAgICAgICBTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKQEAgLTUxLDcgKzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKIAotICAgIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBTVkdMZW5n
dGgsIFgsIHgpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdEZWZz
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1Nw
YWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5saW5lIFNWR0Rl
ZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtNDAsMTAgKzM3LDYgQEAgUGFzc1JlZlB0cjxT
VkdEZWZzRWxlbWVudD4gU1ZHRGVmc0VsZW1lbgogICAgIHJldHVybiBuZXcgU1ZHRGVmc0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdEZWZzRWxlbWVudDo6flNWR0RlZnNFbGVt
ZW50KCkKLXsKLX0KLQogYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEZWZz
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTUgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RlZnNFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdE
ZWZzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmly
dHVhbCB+U1ZHRGVmc0VsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgp
IGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHByaXZhdGU6CiAgICAg
ICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUWShTVkdEZWZzRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQsOSArMjQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0Rlc2NF
bGVtZW50OjpTVkdEZXNjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCAqZG9jKQotICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBT
VkdMYW5nU3BhY2UoKQoraW5saW5lIFNWR0Rlc2NFbGVtZW50OjpTVkdEZXNjRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdT
dHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCkBAIC0zNSwxMCArMzQsNiBA
QCBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVtZW50PiBTVkdEZXNjRWxlbWVuCiAgICAgcmV0dXJuIG5l
dyBTVkdEZXNjRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0Rlc2NFbGVtZW50
Ojp+U1ZHRGVzY0VsZW1lbnQoKQotewotfQotCiBTdHJpbmcgU1ZHRGVzY0VsZW1lbnQ6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gdGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRl
U3BhY2UoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHRGVzY0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAotICAgICAgICBTVkdEZXNjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRGVzY0VsZW1lbnQoKTsKLQogICAgICAgICBT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAorICAgIHByaXZhdGU6CisgICAgICAgIFNWR0Rl
c2NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCiAgICAgICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDYg
QEAgU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgYwogewogfQogCi1TVkdE
b2N1bWVudDo6flNWR0RvY3VtZW50KCkKLXsKLX0KLQogU1ZHU1ZHRWxlbWVudCogU1ZHRG9jdW1l
bnQ6OnJvb3RFbGVtZW50KCkgY29uc3QKIHsKICAgICBFbGVtZW50KiBlbGVtID0gZG9jdW1lbnRF
bGVtZW50KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50
KGZyYW1lLCB1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgflNWR0RvY3VtZW50
KCk7Ci0gICAgICAgIAogICAgICAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCgpIGNvbnN0
OwogICAgICAgICAKICAgICAgICAgdm9pZCBkaXNwYXRjaFpvb21FdmVudChmbG9hdCBwcmV2U2Nh
bGUsIGZsb2F0IG5ld1NjYWxlKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9j
dW1lbnQqIGRvYykKLSAgICA6IG1fZG9jKGRvYykKK1NWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCiAgICAgLCBtX3Jlc291cmNlc0NhY2hlKG5ldyBTVkdSZXNvdXJjZXNDYWNoZSkK
IHsKIH0KQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJlcG9ydE1lc3NhZ2UoRG9j
dW1lbnQqIGRvY3UKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmco
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJlcG9ydE1lc3NhZ2UobV9kb2MsIFdhcm5p
bmdNZXNzYWdlTGV2ZWwsICJXYXJuaW5nOiAiICsgbWVzc2FnZSk7CisgICAgcmVwb3J0TWVzc2Fn
ZShtX2RvY3VtZW50LCBXYXJuaW5nTWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2Up
OwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIHJlcG9ydE1lc3NhZ2UobV9kb2MsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3I6ICIgKyBtZXNzYWdlKTsKKyAgICByZXBvcnRNZXNzYWdlKG1fZG9jdW1lbnQs
IEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3I6ICIgKyBtZXNzYWdlKTsKIH0KIAogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcm
IGlkLCBTVkdTdHlsZWRFbGVtZW50KiBvYmopCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU1ZH
UmVzb3VyY2VzQ2FjaGUqIHJlc291cmNlc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZXNDYWNoZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIERvY3VtZW50KiBtX2RvYzsgLy8gd2Vh
ayByZWZlcmVuY2UKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsgLy8gd2VhayByZWZlcmVuY2UK
ICAgICBIYXNoU2V0PFNWR1NWR0VsZW1lbnQqPiBtX3RpbWVDb250YWluZXJzOyAvLyBGb3IgU1ZH
IDEuMiBzdXBwb3J0IHRoaXMgd2lsbCBuZWVkIHRvIGJlIG1hZGUgbW9yZSBnZW5lcmFsLgogICAg
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcio+IG1fcmVz
b3VyY2VzOwogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBIYXNoU2V0PFNWR1N0eWxlZEVsZW1l
bnQqPio+IG1fcGVuZGluZ1Jlc291cmNlczsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTVkdEb2N1bWVudEV4dGVuc2lv
bnMqIGFjY2Vzc0RvY3VtZW50U1ZHRXh0ZW5zaW9ucygpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTdHlsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkTG9jYXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTYyLDkgKzYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBGb3IgU1ZHVGVzdHMKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Ci0KICAgICAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9
CiAKQEAgLTg0LDkgKzc5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIFNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwor
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNl
KTsKKyAgICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OwogCiAgICAgICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogcmFyZVNWR0RhdGEoKSBjb25z
dDsKICAgICAgICAgU1ZHRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVSYXJlU1ZHRGF0YSgpOwpAQCAt
OTQsNiArOTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAg
ICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0lt
cGwqIHZlcnNpb24pIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogZXZl
bnRQYXJlbnROb2RlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2VMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oCShy
ZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdF
bGVtZW50SW5zdGFuY2VMaXN0PiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdFbGVtZW50SW5zdGFuY2VMaXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxTVkdFbGVtZW50
SW5zdGFuY2U+IHJvb3RJbnN0YW5jZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0VsZW1lbnRJ
bnN0YW5jZUxpc3Qocm9vdEluc3RhbmNlKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRWxlbWVudEluc3RhbmNlTGlzdD4gY3JlYXRlKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3Rh
bmNlPiByb290KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRWxlbWVudEluc3RhbmNlTGlzdChy
b290KSk7IH0KICAgICAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlTGlzdCgpOwogCiAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgICAgICBTVkdFbGVtZW50SW5zdGFu
Y2UqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHRWxl
bWVudEluc3RhbmNlTGlzdChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gcm9vdEluc3Rh
bmNlKTsKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlTGlzdChQYXNzUmVmUHRyPFNWR0VsZW1l
bnRJbnN0YW5jZT4pOworCiAgICAgICAgIFJlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IG1fcm9v
dEluc3RhbmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkK
LSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5saW5lIFNWR0VsbGlwc2VF
bGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fY3goTGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV9j
eShMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9yeChMZW5ndGhNb2RlV2lkdGgpCkBAIC00OSwx
MCArNDYsNiBAQCBQYXNzUmVmUHRyPFNWR0VsbGlwc2VFbGVtZW50PiBTVkdFbGxpcHNlCiAgICAg
cmV0dXJuIG5ldyBTVkdFbGxpcHNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNW
R0VsbGlwc2VFbGVtZW50Ojp+U1ZHRWxsaXBzZUVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRWxsaXBzZUVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHBy
aXZhdGU6CiAgICAgICAgIFNWR0VsbGlwc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwotICAgICAgICB2aXJ0dWFsIH5TVkdFbGxpcHNlRWxlbWVudCgpOwogICAgICAg
ICAKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0
czo6aXNWYWxpZCgpOyB9CiAKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKLSAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Owog
CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R05hbWVzOjpjeEF0dHIsIFNWR0xlbmd0aCwgQ3gsIGN4KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDE5ICsyNCw5IEBACiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotewotfQotCi1T
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCi17Ci19Ci0KIGJvb2wgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyKSB7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOCArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gRklYTUU6IFdo
ZW4gaW1wbGVtZW50aW5nIGFuaW1WYWwgc3VwcG9ydCwgbWFrZSBzdXJlIHRoYXQgYW5pbVZhbD09
YmFzZVZhbCBmb3IgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAogICAgIGNsYXNzIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQgewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICB2aXJ0dWFsIH5TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7CisgICAgICAgIHZpcnR1YWwgflNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKSB7IH0KIAogICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVC
bGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
LSAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2Mp
CitpbmxpbmUgU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxlbmRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fbW9k
ZShGRUJMRU5EX01PREVfTk9STUFMKQogewogfQpAQCAtMzgsMTAgKzM4LDYgQEAgUGFzc1JlZlB0
cjxTVkdGRUJsZW5kRWxlbWVudD4gU1ZHRkVCbGVuZAogICAgIHJldHVybiBuZXcgU1ZHRkVCbGVu
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdGRUJsZW5kRWxlbWVudDo6flNW
R0ZFQmxlbmRFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFs
dWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDE0ICszMCwxMyBAQCBjbGFzcyBTVkdGRUJsZW5kRWxlbWVudCA6IHB1YmxpYyBT
VkdGaWx0CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVCbGVuZEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorcHJpdmF0ZToKICAg
ICBTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAg
ICB2aXJ0dWFsIH5TVkdGRUJsZW5kRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKik7CiAKLXByaXZhdGU6CiAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6Omlu
QXR0ciwgU3RyaW5nLCBJbjEsIGluMSkKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgU3RyaW5nLCBJbjIsIGluMikKICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6
bW9kZUF0dHIsIGludCwgTW9kZSwgbW9kZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2Mp
Ci0gICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
KQoraW5saW5lIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04pCiAgICAgLCBtX3ZhbHVl
cyhTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKQogewpAQCAtNDEs
MTAgKzQxLDYgQEAgUGFzc1JlZlB0cjxTVkdGRUNvbG9yTWF0cml4RWxlbWVudD4gU1ZHRgogICAg
IHJldHVybiBuZXcgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwog
fQogCi1TVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6flNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCkK
LXsKLX0KLQogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52
YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDE0ICszMiwxMyBAQCBjbGFzcyBTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dCA6IHB1YmxpYyBTCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAor
cHJpdmF0ZToKICAgICBTVkdGRUNvbG9yTWF0cml4RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGRUNvbG9yTWF0cml4RWxlbWVudCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKik7CiAKLXByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRUNv
bG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgU3RyaW5nLCBJbjEsIGluMSkKICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6dHlwZUF0dHIsIGludCwgVHlwZSwgdHlwZSkKICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dmFsdWVzQXR0ciwgU1ZH
TnVtYmVyTGlzdCosIFZhbHVlcywgdmFsdWVzKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAt
NDMsMTAgKzQzLDYgQEAgUGFzc1JlZlB0cjxTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudAog
ICAgIHJldHVybiBuZXcgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpOwogfQogCi1TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6flNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNv
bnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDE0ICszMSwxMyBAQCBjbGFzcyBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IHB1
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorcHJpdmF0
ZToKICAgICBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKik7CiAKLXByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgU3RyaW5nLCBJ
bjEsIGluMSkKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVDT01Q
T1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKIH0KQEAgLTM5LDEwICszOSw2IEBAIFBhc3NSZWZQdHI8
U1ZHRkVDb21wb3NpdGVFbGVtZW50PiBTVkdGRUMKICAgICByZXR1cm4gbmV3IFNWR0ZFQ29tcG9z
aXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6flNWR0ZFQ29tcG9zaXRlRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29u
c3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTQgKzMxLDEzIEBAIGNsYXNzIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudCA6IHB1YmxpYyBTVkcKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAorcHJpdmF0ZToKICAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVDb21wb3Np
dGVFbGVtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqKTsKIAotcHJpdmF0ZToKICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgU3RyaW5nLCBJ
bjEsIGluMSkKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29tcG9zaXRlRWxl
bWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIFN0cmluZywgSW4yLCBpbjIpCiAgICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRv
ckF0dHIsIGludCwgX29wZXJhdG9yLCBfb3BlcmF0b3IpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
OCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhY
QXR0cklkZW50aWZpZXJbXSA9ICJTVkdLZXJuZWxVbml0TGVuZ3RoWEF0dHIiOwogY2hhciBTVkdL
ZXJuZWxVbml0TGVuZ3RoWUF0dHJJZGVudGlmaWVyW10gPSAiU1ZHS2VybmVsVW5pdExlbmd0aFlB
dHRyIjsKIAotU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQoraW5s
aW5lIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiAgICAgLCBtX2tlcm5lbE1hdHJpeChTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6Omtl
cm5lbE1hdHJpeEF0dHIpKQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7
CkBAIC01MCwxMCArNTAsNiBAQCBQYXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
PiBTCiAgICAgcmV0dXJuIG5ldyBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCk7CiB9CiAKLVNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojp+U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDE1IEBA
IGNsYXNzIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogcHVibGkKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQoKTsKLQogICAgIHZvaWQgc2V0T3JkZXIoZmxvYXQgb3Jk
ZXJYLCBmbG9hdCBvcmRlclkpOwogICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFkpOwogCitwcml2YXRlOgor
ICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqKTsKIAotcHJpdmF0ZToKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwg
aW4xKQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQsIFNWR05hbWVzOjpvcmRlclhBdHRyLCBsb25nLCBPcmRlclgsIG9yZGVyWCkKICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6b3JkZXJZQXR0ciwgbG9uZywgT3JkZXJZLCBvcmRlclkpCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTAgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNoYXIgU1ZHS2VybmVs
VW5pdExlbmd0aFhJZGVudGlmaWVyW10gPSAiU1ZHS2VybmVsVW5pdExlbmd0aFgiOwogY2hhciBT
VkdLZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXJbXSA9ICJTVkdLZXJuZWxVbml0TGVuZ3RoWSI7
CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwg
bV9kaWZmdXNlQ29uc3RhbnQoMS4wZikKLSAgICAsIG1fc3VyZmFjZVNjYWxlKDEuMGYpCitpbmxp
bmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50
KQorICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoMSkKKyAgICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7
CiB9CiAKQEAgLTQ3LDEwICs0Nyw2IEBAIFBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50PiAKICAgICByZXR1cm4gbmV3IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6flNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MTUgKzM4LDE0IEBAIGNsYXNzIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IHB1YmwKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorcHJpdmF0ZToKICAg
ICBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKik7CiAKLXByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIFN0cmluZywgSW4xLCBpbjEp
CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBmbG9hdCwgRGlmZnVzZUNvbnN0YW50
LCBkaWZmdXNlQ29uc3RhbnQpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBmbG9hdCwg
U3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feENoYW5uZWxTZWxlY3RvcihD
SEFOTkVMX0EpCiAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQogewpAQCAtMzgs
MTAgKzM4LDYgQEAgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IAogICAg
IHJldHVybiBuZXcgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KTsKIH0KIAotU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojp+U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50KCkKLXsKLX0KLQogQ2hhbm5lbFNlbGVjdG9yVHlwZSBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBp
ZiAoa2V5ID09ICJSIikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNiArMzAsMTUgQEAgY2xhc3MgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogcHVibAogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KCk7Ci0gICAgCiAgICAgc3RhdGljIENoYW5uZWxTZWxl
Y3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOwogICAgIAorcHJpdmF0ZToK
KyAgICBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqKTsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqKTsKICAgICAKLXByaXZhdGU6CiAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIFN0cmluZywgSW4xLCBpbjEpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjppbjJBdHRyLCBTdHJpbmcs
IEluMiwgaW4yKQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIGludCwgWENoYW5u
ZWxTZWxlY3RvciwgeENoYW5uZWxTZWxlY3RvcikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpTVkdG
RURpc3RhbnRMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYykKLSAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBT
VkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OlNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdGRUxp
Z2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtMzUsMTAgKzM1LDYgQEAg
UGFzc1JlZlB0cjxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+IFNWRwogICAgIHJldHVybiBuZXcg
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHRkVE
aXN0YW50TGlnaHRFbGVtZW50Ojp+U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KCkKLXsKLX0KLQog
UGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNv
dXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERpc3RhbnRMaWdodFNvdXJjZTo6Y3JlYXRlKGF6
aW11dGgoKSwgZWxldmF0aW9uKCkpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGln
aHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRF
bGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGln
aHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR0ZFRGlzdGFu
dExpZ2h0RWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMaWdodFNvdXJj
ZT4gbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVG
bG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHRkVGbG9vZEVsZW1l
bnQ6OlNWR0ZFRmxvb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtMzksMTAgKzM5LDYgQEAgUGFzc1JlZlB0
cjxTVkdGRUZsb29kRWxlbWVudD4gU1ZHRkVGbG9vZAogICAgIHJldHVybiBuZXcgU1ZHRkVGbG9v
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdGRUZsb29kRWxlbWVudDo6flNW
R0ZFRmxvb2RFbGVtZW50KCkKLXsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Rmxvb2RFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKikKIHsKICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IGZpbHRlclN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpOwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAgY2xhc3MgU1ZHRkVG
bG9vZEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0ZFRmxvb2RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKK3ByaXZhdGU6CiAgICAgU1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqKTsKIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5
MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRnVuY0FFbGVt
ZW50OjpTVkdGRUZ1bmNBRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQodGFn
TmFtZSwgZG9jKQoraW5saW5lIFNWR0ZFRnVuY0FFbGVtZW50OjpTVkdGRUZ1bmNBRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
IH0KIApAQCAtMzUsMTAgKzM1LDYgQEAgUGFzc1JlZlB0cjxTVkdGRUZ1bmNBRWxlbWVudD4gU1ZH
RkVGdW5jQQogICAgIHJldHVybiBuZXcgU1ZHRkVGdW5jQUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOwogfQogCi1TVkdGRUZ1bmNBRWxlbWVudDo6flNWR0ZFRnVuY0FFbGVtZW50KCkKLXsKLX0K
LQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVu
Y0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQu
aAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVuY0FFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBwcml2YXRlOgogICAg
ICAgICBTVkdGRUZ1bmNBRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LSAgICAgICAgdmlydHVhbCB+U1ZHRkVGdW5jQUVsZW1lbnQoKTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3BwCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFRnVu
Y0JFbGVtZW50OjpTVkdGRUZ1bmNCRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCAqZG9jKQotICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQodGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZFRnVuY0JFbGVtZW50OjpTVkdGRUZ1bmNCRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKIH0KIApAQCAtMzUsMTAgKzM1LDYgQEAgUGFzc1JlZlB0cjxTVkdGRUZ1bmNCRWxlbWVu
dD4gU1ZHRkVGdW5jQgogICAgIHJldHVybiBuZXcgU1ZHRkVGdW5jQkVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOwogfQogCi1TVkdGRUZ1bmNCRWxlbWVudDo6flNWR0ZFRnVuY0JFbGVtZW50KCkK
LXsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFRnVuY0JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVs
ZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVuY0JFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBwcml2YXRl
OgogICAgICAgICBTVkdGRUZ1bmNCRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRkVGdW5jQkVsZW1lbnQoKTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R0ZFRnVuY0dFbGVtZW50OjpTVkdGRUZ1bmNHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQodGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZFRnVuY0dFbGVtZW50OjpTVkdGRUZ1
bmNHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKIH0KIApAQCAtMzUsMTAgKzM1LDYgQEAgUGFzc1JlZlB0cjxTVkdGRUZ1bmNH
RWxlbWVudD4gU1ZHRkVGdW5jRwogICAgIHJldHVybiBuZXcgU1ZHRkVGdW5jR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdGRUZ1bmNHRWxlbWVudDo6flNWR0ZFRnVuY0dFbGVt
ZW50KCkKLXsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVG
dW5jR0VsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNH
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVuY0dF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBw
cml2YXRlOgogICAgICAgICBTVkdGRUZ1bmNHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRkVGdW5jR0VsZW1lbnQoKTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNS
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNWR0ZFRnVuY1JFbGVtZW50OjpTVkdGRUZ1bmNSRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZFRnVuY1JFbGVtZW50OjpT
VkdGRUZ1bmNSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCisgICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtMzUsMTAgKzM1LDYgQEAgUGFzc1JlZlB0cjxTVkdG
RUZ1bmNSRWxlbWVudD4gU1ZHRkVGdW5jUgogICAgIHJldHVybiBuZXcgU1ZHRkVGdW5jUkVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdGRUZ1bmNSRWxlbWVudDo6flNWR0ZFRnVu
Y1JFbGVtZW50KCkKLXsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jUkVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RUZ1bmNSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZF
RnVuY1JFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
KyAgICBwcml2YXRlOgogICAgICAgICBTVkdGRUZ1bmNSRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRkVGdW5jUkVsZW1lbnQoKTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjaGFyIFNWR1N0ZERldmlhdGlvblhBdHRySWRlbnRp
ZmllcltdID0gIlNWR1N0ZERldmlhdGlvblhBdHRyIjsKIGNoYXIgU1ZHU3RkRGV2aWF0aW9uWUF0
dHJJZGVudGlmaWVyW10gPSAiU1ZHU3RkRGV2aWF0aW9uWUF0dHIiOwogCi1TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTQyLDEwICs0Miw2IEBAIFBh
c3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50PiBTVkcKICAgICByZXR1cm4gbmV3IFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6flNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCgpCi17Ci19Ci0KIHZv
aWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQsIGZsb2F0
KQogewogICAgIC8vIEZJWE1FOiBOZWVkcyBhbiBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
NiArMzQsMTUgQEAgY2xhc3MgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogcHVibGljIAogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1
YWwgflNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCgpOwotCiAgICAgdm9pZCBzZXRTdGREZXZpYXRp
b24oZmxvYXQgc3RkRGV2aWF0aW9uWCwgZmxvYXQgc3RkRGV2aWF0aW9uWSk7CiAKK3ByaXZhdGU6
CisgICAgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKik7CiAKLXByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIFN0cmluZywgSW4x
LCBpbjEpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVSUyhT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBTVkdT
dGREZXZpYXRpb25YQXR0cklkZW50aWZpZXIsIGZsb2F0LCBTdGREZXZpYXRpb25YLCBzdGREZXZp
YXRpb25YKQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMo
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgU1ZH
U3RkRGV2aWF0aW9uWUF0dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2
aWF0aW9uWSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxMSArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFSW1hZ2VFbGVt
ZW50OjpTVkdGRUltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvYykKLSAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdMYW5nU3BhY2Uo
KQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCitpbmxpbmUgU1ZHRkVJbWFn
ZUVsZW1lbnQ6OlNWR0ZFSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDExIEBAIGNsYXNzIFNWR0ZFSW1hZ2VFbGVt
ZW50IDogcHVibGljIFNWR0ZpbHQKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RUltYWdlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgU1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAgICAgdmlydHVhbCB+U1ZHRkVJbWFnZUVsZW1lbnQoKTsKIAorcHJpdmF0ZToKKyAgICBTVkdG
RUltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CkBAIC01Miw3ICs1NCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciopOwogCi1wcml2YXRlOgogICAgIHZvaWQg
cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKIAogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFko
U1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMyArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFTGlnaHRFbGVtZW50
OjpTVkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jKQotICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3NwZWN1bGFy
RXhwb25lbnQoMS4wZikKLXsKLX0KLQotU1ZHRkVMaWdodEVsZW1lbnQ6On5TVkdGRUxpZ2h0RWxl
bWVudCgpCitTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fc3BlY3VsYXJFeHBvbmVudCgxKQogewogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRkVMaWdodEVsZW1lbnQgOiBwdWJsaWMg
U1ZHRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgU1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVMaWdodEVsZW1lbnQoKTsK
LSAgICAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJj
ZSgpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIFNWR0ZFTGlnaHRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSog
YmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERl
bHRhID0gMCk7CiAKLXByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBmbG9hdCwgQXppbXV0aCwgYXpp
bXV0aCkKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFTGlnaHRFbGVtZW50LCBT
VkdOYW1lczo6ZWxldmF0aW9uQXR0ciwgZmxvYXQsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQogICAg
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgZmxvYXQsIFgsIHgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZF
TWVyZ2VFbGVtZW50OjpTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdGRU1lcmdlRWxlbWVudDo6U1ZHRkVNZXJn
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRv
Y3VtZW50KQogewogfQogCkBAIC0zNywxMCArMzcsNiBAQCBQYXNzUmVmUHRyPFNWR0ZFTWVyZ2VF
bGVtZW50PiBTVkdGRU1lcmdlCiAgICAgcmV0dXJuIG5ldyBTVkdGRU1lcmdlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFTWVyZ2VFbGVtZW50Ojp+U1ZHRkVNZXJnZUVsZW1l
bnQoKQotewotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIpCiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbWVyZ2VJbnB1dHM7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQCBjbGFzcyBTVkdGRU1lcmdlRWxlbWVu
dCA6IHB1YmxpYyBTVkdGaWx0CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVN
ZXJnZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAor
cHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGRU1lcmdlRWxlbWVudCgpOwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciopOwogfTsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw4ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQoraW5s
aW5lIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTM3LDEwICszNyw2IEBAIFBhc3NSZWZQ
dHI8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PiBTVkdGRU0KICAgICByZXR1cm4gbmV3IFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6flNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZFTWVyZ2VOb2RlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgICAgICB2aXJ0dWFsIH5TVkdGRU1lcmdl
Tm9kZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRy
LCBTdHJpbmcsIEluMSwgaW4xKQogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNoYXIgU1ZHUmFkaXVzWEF0dHJJZGVudGlmaWVyW10gPSAiU1ZHUmFk
aXVzWEF0dHIiOwogY2hhciBTVkdSYWRpdXNZQXR0cklkZW50aWZpZXJbXSA9ICJTVkdSYWRpdXNZ
QXR0ciI7CiAKLVNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5l
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9f
b3BlcmF0b3IoRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFKQogewpAQCAtNDIsMTAgKzQyLDYg
QEAgUGFzc1JlZlB0cjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRQogICAgIHJldHVybiBu
ZXcgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ6On5TVkdGRU1vcnBob2xvZ3lFbGVtZW50KCkKLXsKLX0KLQogdm9p
ZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQsIGZsb2F0KQogewogICAg
IC8vIEZJWE1FOiBOZWVkcyBhbiBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsMTUgQEAgY2xh
c3MgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IHB1YmxpYyBTVgogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudCgpOwotCiAgICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFk
aXVzWSk7CiAKK3ByaXZhdGU6CisgICAgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciopOwogCi1wcml2YXRlOgogICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgU3RyaW5nLCBJbjEsIGluMSkKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIGludCwgX29wZXJhdG9y
LCBfb3BlcmF0b3IpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQ
UEVSUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6cmFkaXVzQXR0ciwgU1ZHUmFk
aXVzWEF0dHJJZGVudGlmaWVyLCBmbG9hdCwgUmFkaXVzWCwgcmFkaXVzWCkKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNldEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCitpbmxp
bmUgU1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCkBAIC0zNywx
MCArMzcsNiBAQCBQYXNzUmVmUHRyPFNWR0ZFT2Zmc2V0RWxlbWVudD4gU1ZHRkVPZmZzCiAgICAg
cmV0dXJuIG5ldyBTVkdGRU9mZnNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1T
VkdGRU9mZnNldEVsZW1lbnQ6On5TVkdGRU9mZnNldEVsZW1lbnQoKQotewotfQotCiB2b2lkIFNW
R0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICszMSwxNCBAQCBjbGFzcyBT
VkdGRU9mZnNldEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHRkVPZmZzZXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKK3ByaXZhdGU6CiAgICAgU1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1YWwgflNWR0ZFT2Zmc2V0RWxlbWVu
dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciopOwogCi1wcml2YXRlOgogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFkoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwgaW4x
KQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdO
YW1lczo6ZHhBdHRyLCBmbG9hdCwgRHgsIGR4KQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFkoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBmbG9hdCwgRHksIGR5KQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDggKzI1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRVBvaW50
TGlnaHRFbGVtZW50OjpTVkdGRVBvaW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdGRUxpZ2h0RWxlbWVudCh0YWdOYW1l
LCBkb2MpCitpbmxpbmUgU1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6U1ZHRkVQb2ludExpZ2h0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBTVkdGRUxpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtMzUs
MTQgKzM1LDkgQEAgUGFzc1JlZlB0cjxTVkdGRVBvaW50TGlnaHRFbGVtZW50PiBTVkdGRQogICAg
IHJldHVybiBuZXcgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9
CiAKLVNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6On5TVkdGRVBvaW50TGlnaHRFbGVtZW50KCkKLXsK
LX0KLQogUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6bGln
aHRTb3VyY2UoKSBjb25zdAogewotICAgIEZsb2F0UG9pbnQzRCBwb3MoeCgpLCB5KCksIHooKSk7
Ci0gICAgcmV0dXJuIFBvaW50TGlnaHRTb3VyY2U6OmNyZWF0ZShwb3MpOworICAgIHJldHVybiBQ
b2ludExpZ2h0U291cmNlOjpjcmVhdGUoRmxvYXRQb2ludDNEKHgoKSwgeSgpLCB6KCkpKTsKIH0K
IAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gNjYz
OTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgcHJpdmF0ZToKICAgICAgICAg
U1ZHRkVQb2ludExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LSAgICAgICAgdmlydHVhbCB+U1ZHRkVQb2ludExpZ2h0RWxlbWVudCgpOwogCiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKLSAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2MpCi0gICAgLCBtX3NwZWN1bGFyQ29uc3RhbnQoMS4wZikKLSAgICAsIG1fc3BlY3VsYXJFeHBv
bmVudCgxLjBmKQotICAgICwgbV9zdXJmYWNlU2NhbGUoMS4wZikKK2lubGluZSBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1f
c3BlY3VsYXJDb25zdGFudCgxKQorICAgICwgbV9zcGVjdWxhckV4cG9uZW50KDEpCisgICAgLCBt
X3N1cmZhY2VTY2FsZSgxKQogewogfQogCkBAIC00NSwxMCArNDUsNiBAQCBQYXNzUmVmUHRyPFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+CiAgICAgcmV0dXJuIG5ldyBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6flNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKQotewotfQotCiB2
b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsgICAgCiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZh
bHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDEzIEBAIGNsYXNzIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQgOiBwdWIKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAKK3ByaXZhdGU6CiAgICAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKik7CiAKLXByaXZhdGU6CiAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBT
VkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwgaW4xKQogICAgIERFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVFkoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFy
Q29uc3RhbnRBdHRyLCBmbG9hdCwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkK
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgZmxvYXQsIFNwZWN1bGFyRXhwb25l
bnQsIHNwZWN1bGFyRXhwb25lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6U1ZHRkVTcG90TGlnaHRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdGRUxp
Z2h0RWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpT
VkdGRVNwb3RMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogU1ZHRkVMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiB9CiAKQEAgLTM1LDEwICszNSw2IEBAIFBhc3NSZWZQdHI8U1ZHRkVTcG90TGlnaHRFbGVt
ZW50PiBTVkdGRVMKICAgICByZXR1cm4gbmV3IFNWR0ZFU3BvdExpZ2h0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6flNWR0ZFU3BvdExpZ2h0
RWxlbWVudCgpCi17Ci19Ci0KIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IFNWR0ZFU3BvdExpZ2h0
RWxlbWVudDo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIEZsb2F0UG9pbnQzRCBwb3MoeCgp
LCB5KCksIHooKSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVNwb3RMaWdodEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHByaXZhdGU6CiAgICAg
ICAgIFNWR0ZFU3BvdExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRkVTcG90TGlnaHRFbGVtZW50KCk7CiAKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSgpIGNvbnN0OwogICAg
IH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCAr
MjgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZF
VGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
LSAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2Mp
CitpbmxpbmUgU1ZHRkVUaWxlRWxlbWVudDo6U1ZHRkVUaWxlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTM4
LDEwICszOCw2IEBAIFBhc3NSZWZQdHI8U1ZHRkVUaWxlRWxlbWVudD4gU1ZHRkVUaWxlRWwKICAg
ICByZXR1cm4gbmV3IFNWR0ZFVGlsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1T
VkdGRVRpbGVFbGVtZW50Ojp+U1ZHRkVUaWxlRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHRkVU
aWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxMyBAQCBjbGFzcyBTVkdGRVRpbGVFbGVt
ZW50IDogcHVibGljIFNWR0ZpbHRlCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
RkVUaWxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Citwcml2YXRlOgogICAgIFNWR0ZFVGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0gICAgdmlydHVhbCB+U1ZHRkVUaWxlRWxlbWVudCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKik7CiAKLXBy
aXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGRVRpbGVFbGVtZW50LCBT
VkdOYW1lczo6aW5BdHRyLCBTdHJpbmcsIEluMSwgaW4xKQogfTsKIApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2hhciBTVkdCYXNlRnJlcXVlbmN5WElkZW50aWZp
ZXJbXSA9ICJTVkdCYXNlRnJlcXVlbmN5WCI7CiBjaGFyIFNWR0Jhc2VGcmVxdWVuY3lZSWRlbnRp
ZmllcltdID0gIlNWR0Jhc2VGcmVxdWVuY3lZIjsKIAotU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
U1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvYykKK2lubGluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2N1bWVudCkKICAgICAsIG1fbnVtT2N0YXZlcygxKQogICAgICwgbV9zdGl0Y2hUaWxlcyhTVkdf
U1RJVENIVFlQRV9OT1NUSVRDSCkKICAgICAsIG1fdHlwZShGRVRVUkJVTEVOQ0VfVFlQRV9UVVJC
VUxFTkNFKQpAQCAtNDQsMTAgKzQ0LDYgQEAgUGFzc1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50PiBTVkdGRQogICAgIHJldHVybiBuZXcgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CiB9CiAKLVNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6On5TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1
ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTQgKzQwLDEzIEBAIGNsYXNzIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQgOiBwdWJsaWMgU1YKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKK3ByaXZhdGU6CiAgICAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqKTsKIAotcHJpdmF0ZToKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01V
TFRJUExFX1dSQVBQRVJTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJl
cXVlbmN5QXR0ciwgU1ZHQmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyLCBmbG9hdCwgQmFzZUZyZXF1
ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTVVM
VElQTEVfV1JBUFBFUlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmJhc2VGcmVx
dWVuY3lBdHRyLCBTVkdCYXNlRnJlcXVlbmN5WUlkZW50aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVl
bmN5WSwgYmFzZUZyZXF1ZW5jeVkpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIsIGxvbmcsIE51bU9j
dGF2ZXMsIG51bU9jdGF2ZXMpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjaGFyIFNWR0ZpbHRl
clJlc1hJZGVudGlmaWVyW10gPSAiU1ZHRmlsdGVyUmVzWCI7CiBjaGFyIFNWR0ZpbHRlclJlc1lJ
ZGVudGlmaWVyW10gPSAiU1ZHRmlsdGVyUmVzWSI7CiAKLVNWR0ZpbHRlckVsZW1lbnQ6OlNWR0Zp
bHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
LSAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZpbHRlckVs
ZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCkBAIC02MywxMCArNjMsNiBAQCBQYXNzUmVm
UHRyPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsCiAgICAgcmV0dXJuIG5ldyBTVkdGaWx0
ZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHRmlsdGVyRWxlbWVudDo6flNW
R0ZpbHRlckVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnNldEZpbHRl
clJlcyh1bnNpZ25lZCBsb25nIGZpbHRlclJlc1gsIHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVzWSkK
IHsKICAgICBzZXRGaWx0ZXJSZXNYQmFzZVZhbHVlKGZpbHRlclJlc1gpOwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIxICs0Miw5IEBAIGNsYXNzIFNWR0ZpbHRl
ckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdGaWx0ZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKLSAgICBTVkdGaWx0ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwotICAgIHZpcnR1YWwgflNWR0ZpbHRlckVsZW1lbnQoKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LQogICAgIHZvaWQgc2V0RmlsdGVyUmVzKHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVzWCwgdW5zaWdu
ZWQgbG9uZyBmaWx0ZXJSZXNZKTsKICAgICBGbG9hdFJlY3QgZmlsdGVyQm91bmRpbmdCb3goY29u
c3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAs
IE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwotCi0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKLQogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGaWx0ZXIoU1ZHRWxlbWVudCog
ZWxlbWVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChlbGVtZW50KTsKQEAgLTc0LDYgKzYyLDE3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgU1ZHRmlsdGVyRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1Bl
bmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxz
ZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hp
bGRDb3VudERlbHRhID0gMCk7CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworCiAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFkoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgaW50LCBG
aWx0ZXJVbml0cywgZmlsdGVyVW5pdHMpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCi0gICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykKK1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVu
Z3RoTW9kZVdpZHRoLCAiMCUiKQogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQsICIwJSIpCiAg
ICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKQpAQCAtNDQsMTAgKzQ0LDYgQEAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVgogICAgIC8vIFNwZWM6IElm
IHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiB9CiAKLVNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6flNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcygpCi17Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjIgKzM1LDIzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVi
bGljIFNWR1N0eWxlZEVsZW1lbnQgewogcHVibGljOgorICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKGJvb2wsIEZpbHRlckVmZmVjdCopIGNvbnN0OworCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciopID0gMDsKKworcHJvdGVj
dGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMoKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWx0ZXJFZmZl
Y3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIGZhbHNlOyB9Citwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRl
ckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgc2V0U3RhbmRhcmRB
dHRyaWJ1dGVzKGJvb2wsIEZpbHRlckVmZmVjdCopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAotcHJpdmF0
ZToKICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRyLCBTVkdMZW5ndGgsIFgsIHgpCiAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3RoLCBZLCB5KQogICAgIERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1l
czo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0ZpdFRvVmlld0JveDo6U1ZHRml0VG9WaWV3Qm94KCkKLXsKLX0KLQotU1ZH
Rml0VG9WaWV3Qm94Ojp+U1ZHRml0VG9WaWV3Qm94KCkKLXsKLX0KLQogYm9vbCBTVkdGaXRUb1Zp
ZXdCb3g6OnBhcnNlVmlld0JveChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIHMsIEZsb2F0
UmVjdCYgdmlld0JveCkKIHsKICAgICBjb25zdCBVQ2hhciogYyA9IHMuY2hhcmFjdGVycygpOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDcgQEAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogCiBjbGFzcyBTVkdGaXRUb1ZpZXdCb3ggewogcHVibGljOgotICAg
IFNWR0ZpdFRvVmlld0JveCgpOwotICAgIHZpcnR1YWwgflNWR0ZpdFRvVmlld0JveCgpOworICAg
IHZpcnR1YWwgflNWR0ZpdFRvVmlld0JveCgpIHsgfQogCiAgICAgYm9vbCBwYXJzZVZpZXdCb3go
RG9jdW1lbnQqLCBjb25zdCBVQ2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBGbG9hdFJl
Y3QmIHZpZXdCb3gsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKICAgICBzdGF0aWMgQWZmaW5lVHJh
bnNmb3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oY29uc3QgRmxvYXRSZWN0JiB2aWV3Qm94UmVj
dCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYsIGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQg
dmlld0hlaWdodCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYg
QEAgU1ZHRm9udERhdGE6OlNWR0ZvbnREYXRhKFNWR0ZvbnRGYWNlRWxlbQogICAgIEFTU0VSVF9B
UkcoZm9udEZhY2VFbGVtZW50LCBmb250RmFjZUVsZW1lbnQpOwogfQogCi1TVkdGb250RGF0YTo6
flNWR0ZvbnREYXRhKCkKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRm9udERhdGEuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb250
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNWR0ZvbnREYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAg
ICBTVkdGb250RGF0YShTVkdGb250RmFjZUVsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIH5TVkdGb250
RGF0YSgpOworICAgIHZpcnR1YWwgflNWR0ZvbnREYXRhKCkgeyB9CiAKICAgICBTVkdGb250RmFj
ZUVsZW1lbnQqIHN2Z0ZvbnRGYWNlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRm9udEZh
Y2VFbGVtZW50OyB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05h
bWVzOwogCi1TVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFt
ZSwgZG9jKSAKK2lubGluZSBTVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVk
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkgCiAgICAgLCBtX2lzR2x5cGhDYWNoZVZhbGlkKGZh
bHNlKQogewogfQpAQCAtNTEsMTAgKzUxLDYgQEAgUGFzc1JlZlB0cjxTVkdGb250RWxlbWVudD4g
U1ZHRm9udEVsZW1lbgogICAgIHJldHVybiBuZXcgU1ZHRm9udEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpOwogfQogCi1TVkdGb250RWxlbWVudDo6flNWR0ZvbnRFbGVtZW50KCkKLXsKLX0KLQog
dm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiAr
NTYsNiBAQCBjbGFzcyBTVkdGb250RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFCiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1YWwgflNWR0ZvbnRFbGVtZW50KCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfSAgICAKLQogICAgIHZvaWQgaW52YWxpZGF0ZUdseXBoQ2FjaGUoKTsKIAog
ICAgIHZvaWQgZ2V0R2x5cGhJZGVudGlmaWVyc0ZvclN0cmluZyhjb25zdCBTdHJpbmcmLCBWZWN0
b3I8U1ZHR2x5cGhJZGVudGlmaWVyPiYpIGNvbnN0OwpAQCAtNzIsMTEgKzY2LDE2IEBAIHB1Ymxp
YzoKICAgICBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KiBmaXJzdE1pc3NpbmdHbHlwaEVsZW1lbnQo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGb250RWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFNWR0ZvbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0gICAgCiAKICAg
ICB2b2lkIGVuc3VyZUdseXBoQ2FjaGUoKSBjb25zdDsKIAorICAgIC8vIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQKKyAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0ZvbnRFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisKICAgICBt
dXRhYmxlIEtlcm5pbmdQYWlyVmVjdG9yIG1faG9yaXpvbnRhbEtlcm5pbmdQYWlyczsKICAgICBt
dXRhYmxlIEtlcm5pbmdQYWlyVmVjdG9yIG1fdmVydGljYWxLZXJuaW5nUGFpcnM7CiAgICAgbXV0
YWJsZSBTVkdHbHlwaE1hcCBtX2dseXBoTWFwOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotU1ZHRm9udEZhY2VFbGVtZW50OjpT
VkdGb250RmFjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKLSAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQoraW5saW5lIFNWR0ZvbnRGYWNl
RWxlbWVudDo6U1ZHRm9udEZhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiAgICAgLCBtX2ZvbnRGYWNlUnVsZShDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZSgpKQogICAgICwg
bV9zdHlsZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKSkK
IHsKLSAgICBtX3N0eWxlRGVjbGFyYXRpb24tPnNldFBhcmVudChkb2N1bWVudCgpLT5tYXBwZWRF
bGVtZW50U2hlZXQoKSk7CisgICAgbV9zdHlsZURlY2xhcmF0aW9uLT5zZXRQYXJlbnQoZG9jdW1l
bnQtPm1hcHBlZEVsZW1lbnRTaGVldCgpKTsKICAgICBtX3N0eWxlRGVjbGFyYXRpb24tPnNldFN0
cmljdFBhcnNpbmcodHJ1ZSk7CiAgICAgbV9mb250RmFjZVJ1bGUtPnNldERlY2xhcmF0aW9uKG1f
c3R5bGVEZWNsYXJhdGlvbi5nZXQoKSk7CiB9CkBAIC02MSwxMCArNjEsNiBAQCBQYXNzUmVmUHRy
PFNWR0ZvbnRGYWNlRWxlbWVudD4gU1ZHRm9udEZhCiAgICAgcmV0dXJuIG5ldyBTVkdGb250RmFj
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdGb250RmFjZUVsZW1lbnQ6On5T
VkdGb250RmFjZUVsZW1lbnQoKQotewotfQotCiBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SWRGb3JT
VkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
ICghYXR0ck5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGb250RmFjZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICAg
ICAgU1ZHRm9udEZhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwot
ICAgICAgICB2aXJ0dWFsIH5TVkdGb250RmFjZUVsZW1lbnQoKTsKLQotICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0KICAgICAgICAg
dW5zaWduZWQgdW5pdHNQZXJFbSgpIGNvbnN0OwogICAgICAgICBpbnQgeEhlaWdodCgpIGNvbnN0
OwogICAgICAgICBmbG9hdCBob3Jpem9udGFsT3JpZ2luWCgpIGNvbnN0OwpAQCAtNjEsNiArNTIs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlbW92ZUZyb21NYXBwZWRF
bGVtZW50U2hlZXQoKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIFNWR0ZvbnRGYWNlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CisKICAgICAgICAgUmVm
UHRyPENTU0ZvbnRGYWNlUnVsZT4gbV9mb250RmFjZVJ1bGU7CiAgICAgICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZURlY2xhcmF0aW9uOwogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysg
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3Bh
Y2UgU1ZHTmFtZXM7CiAgICAgCi1TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ6OlNWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
KQotICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHRm9udEZhY2VGb3Jt
YXRFbGVtZW50OjpTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50
LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgY2xhc3MgU1ZHRm9udEZhY2VG
b3JtYXRFbGVtZW50IDogcHVibGljIAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZvbnRGYWNlRm9ybWF0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogCitwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0g
MCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsOCArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1TVkdGb250RmFj
ZU5hbWVFbGVtZW50OjpTVkdGb250RmFjZU5hbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykK
K2lubGluZSBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpTVkdGb250RmFjZU5hbWVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlTmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250
RmFjZU5hbWVFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VOYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgOiBwdWJs
aWMgU1ZHRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdGb250RmFjZU5hbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7Ci0KLSAgICAgICAgU1ZHRm9udEZhY2VOYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTRm9udEZh
Y2VTcmNWYWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNW
R0ZvbnRGYWNlTmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VTcmNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZVNyY0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlU3JjRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogICAgIAotU1ZH
Rm9udEZhY2VTcmNFbGVtZW50OjpTVkdGb250RmFjZVNyY0VsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwg
ZG9jKQoraW5saW5lIFNWR0ZvbnRGYWNlU3JjRWxlbWVudDo6U1ZHRm9udEZhY2VTcmNFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6
IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlU3JjRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlU3JjRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQsMTggQEAKICNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNz
IENTU1ZhbHVlTGlzdDsKKwogICAgIGNsYXNzIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCA6IHB1Ymxp
YyBTVkdFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZvbnRGYWNlU3JjRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCi0gICAgICAgIFNWR0ZvbnRGYWNlU3JjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLSAgICAgICAgCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBzcmNWYWx1ZSgpIGNvbnN0OwogICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBTVkdG
b250RmFjZVNyY0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAg
ICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdl
ID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsK
ICAgICAKLVNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6U1ZHRm9udEZhY2VVcmlFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OlNWR0ZvbnRGYWNl
VXJpRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR0ZvbnRGYWNlVXJpRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCi0gICAgICAgIFNWR0ZvbnRGYWNlVXJpRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRm9udEZhY2VV
cmlFbGVtZW50KCk7Ci0gICAgICAgIAorCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTRm9udEZhY2VT
cmNWYWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKIAorICAgIHByaXZhdGU6CisgICAgICAgIFNWR0Zv
bnRGYWNlVXJpRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9
IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CiAKLSAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGxvYWRGb250
KCk7CiAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9jYWNoZWRG
b250OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDExICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpCi0gICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBTVkdUZXN0cygpCi0gICAgLCBT
VkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCitTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVuZ3RoTW9k
ZVdpZHRoKQogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX3dpZHRoKExlbmd0
aE1vZGVXaWR0aCkKQEAgLTUwLDEwICs0Nyw2IEBAIFBhc3NSZWZQdHI8U1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ+IFNWR0YKICAgICByZXR1cm4gbmV3IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6On5TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpAQCAtNDgsNyArNDgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKIAotICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7CiAKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBTVkdMZW5ndGgsIFgsIHgpCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRh
Z05hbWUsIGRvYykKLSAgICAsIFNWR1Rlc3RzKCkKLSAgICAsIFNWR0xhbmdTcGFjZSgpCi0gICAg
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKK1NWR0dFbGVtZW50OjpTVkdHRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0K
IApAQCAtNDIsMTAgKzM5LDYgQEAgUGFzc1JlZlB0cjxTVkdHRWxlbWVudD4gU1ZHR0VsZW1lbnQ6
OmNyZQogICAgIHJldHVybiBuZXcgU1ZHR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQog
Ci1TVkdHRWxlbWVudDo6flNWR0dFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdHRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChTVkdUZXN0
czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9u
IDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTAgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzU2hhZG93VHJlZUNvbnRh
aW5lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgcHJvdGVjdGVkOgog
ICAgICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAg
ICAgICAgdmlydHVhbCB+U1ZHR0VsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
aGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CisKKyAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CkBAIC00Nyw5ICs1MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogCi0gICAgcHJpdmF0ZToKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0dFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCi1TVkdHbHlwaEVs
ZW1lbnQ6OlNWR0dseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUg
U1ZHR2x5cGhFbGVtZW50OjpTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKIH0KIApAQCAtNDcsMTAgKzQ3LDYgQEAgUGFzc1JlZlB0cjxTVkdHbHlw
aEVsZW1lbnQ+IFNWR0dseXBoRWxlbQogICAgIHJldHVybiBuZXcgU1ZHR2x5cGhFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHR2x5cGhFbGVtZW50Ojp+U1ZHR2x5cGhFbGVtZW50
KCkKLXsKLX0KLQogdm9pZCBTVkdHbHlwaEVsZW1lbnQ6OmludmFsaWRhdGVHbHlwaENhY2hlKCkK
IHsKICAgICBOb2RlKiBmb250Tm9kZSA9IHBhcmVudE5vZGUoKTsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0dseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxl
bWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTYgKzEwNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0dseXBoRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgICAgIFNWR0ds
eXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmly
dHVhbCB+U1ZHR2x5cGhFbGVtZW50KCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KikgeyByZXR1cm4gZmFsc2U7IH0KLQogICAgICAgICBTVkdHbHlwaElkZW50aWZpZXIgYnVpbGRH
bHlwaElkZW50aWZpZXIoKSBjb25zdDsKIAogICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNl
ZCBieSBTVkdGb250CkBAIC0xMjMsNyArMTEzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gc2hhcmVkIGJldHdlZW4gU1ZHR2x5cGhFbGVtZW50
ICYgU1ZHTWlzc2luZ0dseXBoRWxlbWVudAogICAgICAgICBzdGF0aWMgU1ZHR2x5cGhJZGVudGlm
aWVyIGJ1aWxkR2VuZXJpY0dseXBoSWRlbnRpZmllcihjb25zdCBTVkdFbGVtZW50Kik7CisKICAg
ICBwcml2YXRlOgorICAgICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCisgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgICAgICB2b2lkIGludmFsaWRhdGVHbHlwaENhY2hlKCk7CiAgICAgfTsK
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDE5ICszOCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0dyYWRpZW50RWxlbWVu
dDo6U1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCi0gICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIFNW
R1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKK1NW
R0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9ncmFkaWVudFRyYW5zZm9ybShT
VkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikp
CiB7CiB9CiAKLVNWR0dyYWRpZW50RWxlbWVudDo6flNWR0dyYWRpZW50RWxlbWVudCgpCi17Ci19
Ci0KIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Z3JhZGllbnRV
bml0c0F0dHIpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA2NjM5
MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwyMCArMzQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogICAgIHB1
YmxpYzoKKyAgICAgICAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IGJ1aWxkU3RvcHMoKTsK
KyAKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHR3JhZGllbnRFbGVt
ZW50KCk7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBwcml2
YXRlOgorICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAot
ICAgICAgICBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gYnVpbGRTdG9wcygpOwotIAotICAg
IHByb3RlY3RlZDoKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdHcmFkaWVu
dEVsZW1lbnQsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBpbnQsIFNwcmVhZE1ldGhvZCwg
c3ByZWFkTWV0aG9kKQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0dyYWRp
ZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBpbnQsIEdyYWRpZW50VW5p
dHMsIGdyYWRpZW50VW5pdHMpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
R3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCBTVkdUcmFu
c2Zvcm1MaXN0KiwgR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNmb3JtKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdIS2VybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0hLZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVNWR0hLZXJuRWxl
bWVudDo6U1ZHSEtlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCi0gICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdIS2Vy
bkVsZW1lbnQ6OlNWR0hLZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogfQogCkBAIC00NSwxMCArNDUsNiBAQCBQYXNzUmVmUHRyPFNWR0hLZXJuRWxlbWVudD4gU1ZH
SEtlcm5FbGVtCiAgICAgcmV0dXJuIG5ldyBTVkdIS2VybkVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOwogfQogCi1TVkdIS2VybkVsZW1lbnQ6On5TVkdIS2VybkVsZW1lbnQoKQotewotfQotCiB2
b2lkIFNWR0hLZXJuRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIE5vZGUq
IGZvbnROb2RlID0gcGFyZW50Tm9kZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgJKHJldmlz
aW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDI5ICsyNCwyMiBAQAogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICNpbmNsdWRl
ICJTVkdGb250RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi0j
aW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdG
b250RGF0YTsKLQogICAgIGNsYXNzIFNWR0hLZXJuRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0hLZXJuRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgICAgIHZv
aWQgYnVpbGRIb3Jpem9udGFsS2VybmluZ1BhaXIoS2VybmluZ1BhaXJWZWN0b3ImKTsKKworICAg
IHByaXZhdGU6CiAgICAgICAgIFNWR0hLZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHSEtlcm5FbGVtZW50KCk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICAgIHZv
aWQgYnVpbGRIb3Jpem9udGFsS2VybmluZ1BhaXIoS2VybmluZ1BhaXJWZWN0b3ImKTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
VkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQo
dGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkKLSAg
ICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgU1ZHVVJJUmVmZXJlbmNl
KCkKK2lubGluZSBTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5ndGhNb2Rl
V2lkdGgpCiAgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fd2lkdGgoTGVuZ3Ro
TW9kZVdpZHRoKQpAQCAtNTUsMTAgKzUxLDYgQEAgUGFzc1JlZlB0cjxTVkdJbWFnZUVsZW1lbnQ+
IFNWR0ltYWdlRWxlbQogICAgIHJldHVybiBuZXcgU1ZHSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KTsKIH0KIAotU1ZHSW1hZ2VFbGVtZW50Ojp+U1ZHSW1hZ2VFbGVtZW50KCkKLXsKLX0K
LQogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ltYWdl
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAg
cHJpdmF0ZToKICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwotICAgICAgICB2aXJ0dWFsIH5TVkdJbWFnZUVsZW1lbnQoKTsKICAgICAgICAg
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQogCkBAIC01OSwxMCArNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVO
YW1lKCkgY29uc3Q7ICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKLSAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKIAot
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1
LDYgQEAgU1ZHSW1hZ2VMb2FkZXI6OlNWR0ltYWdlTG9hZGVyKFNWR0ltYWdlRQogewogfQogCi1T
VkdJbWFnZUxvYWRlcjo6flNWR0ltYWdlTG9hZGVyKCkKLXsKLX0KLQogdm9pZCBTVkdJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIGlmIChpbWFnZSgpLT5lcnJvck9jY3Vy
cmVkKCkpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHSW1hZ2VMb2FkZXIgOiBwdWJsaWMgSW1h
Z2VMb2FkZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHSW1hZ2VMb2FkZXIoU1ZHSW1hZ2VF
bGVtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR0ltYWdlTG9hZGVyKCk7CiAKKyAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICAgICAg
dmlydHVhbCBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogICAg
IH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9z
dmcvU1ZHTGFuZ1NwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTkgKzMwLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdMYW5nU3BhY2U6OlNWR0xhbmdTcGFjZSgpCi17Ci19
Ci0KLVNWR0xhbmdTcGFjZTo6flNWR0xhbmdTcGFjZSgpCi17Ci19Ci0KLWNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHTGFuZ1NwYWNlOjp4bWxsYW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYW5n
OwotfQotCiB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJpbmcm
IHhtbExhbmcpCiB7CiAgICAgbV9sYW5nID0geG1sTGFuZzsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0xhbmdTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oCShy
ZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxMCArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBT
VkdMYW5nU3BhY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHTGFuZ1NwYWNlKCk7Ci0gICAg
ICAgIHZpcnR1YWwgflNWR0xhbmdTcGFjZSgpOwotCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgeG1sbGFuZygpIGNvbnN0OworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHhtbGxhbmco
KSBjb25zdCB7IHJldHVybiBtX2xhbmc7IH0KICAgICAgICAgdm9pZCBzZXRYbWxsYW5nKGNvbnN0
IEF0b21pY1N0cmluZyYgeG1sTGFuZyk7CiAKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4
bWxzcGFjZSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDEwICszMiw2IEBAIFNWR0xlbmd0aExpc3Q6OlNWR0xlbmd0aExpc3QoY29uc3QgUXVhbGkKIHsK
IH0KIAotU1ZHTGVuZ3RoTGlzdDo6flNWR0xlbmd0aExpc3QoKQotewotfQotCiB2b2lkIFNWR0xl
bmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSkK
IHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xlbmd0
aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJldmlz
aW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw5ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdMZW5n
dGhMaXN0IDogcHVibGljIFNWR1BPRExpc3Q8U1ZHTGVuZ3RoPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdMZW5ndGhMaXN0PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0xlbmd0aExp
c3QoYXR0cmlidXRlTmFtZSkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflNWR0xlbmd0aExpc3QoKTsK
IAotICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUg
bW9kZSk7CisgICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3Ro
TW9kZSk7CiAgCiAgICAgICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwg
U1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5s
aW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feDEoTGVuZ3RoTW9kZVdpZHRoKQog
ICAgICwgbV95MShMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV94MihMZW5ndGhNb2RlV2lkdGgp
CkBAIC00OSwxMCArNDYsNiBAQCBQYXNzUmVmUHRyPFNWR0xpbmVFbGVtZW50PiBTVkdMaW5lRWxl
bWVuCiAgICAgcmV0dXJuIG5ldyBTVkdMaW5lRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9
CiAKLVNWR0xpbmVFbGVtZW50Ojp+U1ZHTGluZUVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0xp
bmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTGluZUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHByaXZhdGU6CiAgICAgICAg
IFNWR0xpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgICAg
ICB2aXJ0dWFsIH5TVkdMaW5lRWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKQEAg
LTUxLDcgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Owog
CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTGluZUVsZW1lbnQsIFNWR05h
bWVzOjp4MUF0dHIsIFNWR0xlbmd0aCwgWDEsIHgxKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNW
R0xpbmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jKQotICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGlu
ZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdH
cmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3gxKExlbmd0aE1vZGVX
aWR0aCkKICAgICAsIG1feTEoTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1feDIoTGVuZ3RoTW9k
ZVdpZHRoLCAiMTAwJSIpCkBAIC01NCwxMCArNTQsNiBAQCBQYXNzUmVmUHRyPFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudD4gU1ZHCiAgICAgcmV0dXJuIG5ldyBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6On5T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoKQotewotfQotCiB2b2lkIFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMywxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAorICAgICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgY29sbGVj
dEdyYWRpZW50UHJvcGVydGllcygpOworICAgICAgICB2b2lkIGNhbGN1bGF0ZVN0YXJ0RW5kUG9p
bnRzKGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYsIEZsb2F0UG9pbnQmIHN0YXJ0UG9p
bnQsIEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKKworICAgIHByaXZhdGU6CiAgICAgICAgIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAg
ICAgICAgdmlydHVhbCB+U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KCk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC00
MiwxMCArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAot
ICAgICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgY29sbGVjdEdyYWRpZW50UHJvcGVydGll
cygpOwotICAgICAgICB2b2lkIGNhbGN1bGF0ZVN0YXJ0RW5kUG9pbnRzKGNvbnN0IExpbmVhckdy
YWRpZW50QXR0cmlidXRlcyYsIEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZsb2F0UG9pbnQmIGVu
ZFBvaW50KTsKLQotICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFNWR0xlbmd0aCwg
WDEsIHgxKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHTG9jYXRhYmxlOjpTVkdMb2NhdGFibGUoKQot
ewotfQotCi1TVkdMb2NhdGFibGU6On5TVkdMb2NhdGFibGUoKQotewotfQotCiBzdGF0aWMgYm9v
bCBpc1ZpZXdwb3J0RWxlbWVudChOb2RlKiBub2RlKQogewogICAgIHJldHVybiAobm9kZS0+aGFz
VGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmgJKHJldmlzaW9uIDY2
MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIAogY2xhc3MgU1ZHTG9jYXRhYmxlIHsKIHB1
YmxpYzoKLSAgICBTVkdMb2NhdGFibGUoKTsKLSAgICB2aXJ0dWFsIH5TVkdMb2NhdGFibGUoKTsK
KyAgICB2aXJ0dWFsIH5TVkdMb2NhdGFibGUoKSB7IH0KIAogICAgIC8vICdTVkdMb2NhdGFibGUn
IGZ1bmN0aW9ucwogICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVu
dCgpIGNvbnN0ID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNjYz
OTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw4ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHTVBhdGhFbGVtZW50
OjpTVkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcW5hbWUsIERvY3VtZW50KiBk
b2MpCi0gICAgOiBTVkdFbGVtZW50KHFuYW1lLCBkb2MpCitpbmxpbmUgU1ZHTVBhdGhFbGVtZW50
OjpTVkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApA
QCAtMzcsMTAgKzM3LDYgQEAgUGFzc1JlZlB0cjxTVkdNUGF0aEVsZW1lbnQ+IFNWR01QYXRoRWxl
bQogICAgIHJldHVybiBuZXcgU1ZHTVBhdGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0K
IAotU1ZHTVBhdGhFbGVtZW50Ojp+U1ZHTVBhdGhFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdN
UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTVBh
dGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAg
ICAgICAgU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KCk7CisgICAgICAgIAorICAgIHByaXZh
dGU6CiAgICAgICAgIFNWR01QYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHTVBhdGhFbGVtZW50KCk7CiAgICAgICAgIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICAgICAgCi0gICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRoRWxlbWVudCgpOwotICAg
ICAgICAKLSAgICBwcml2YXRlOgogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKICAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdNUGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
aGFyIFNWR09yaWVudFR5cGVBdHRySWRlbnRpZmllcltdID0gIlNWR09yaWVudFR5cGVBdHRyIjsK
IGNoYXIgU1ZHT3JpZW50QW5nbGVBdHRySWRlbnRpZmllcltdID0gIlNWR09yaWVudEFuZ2xlQXR0
ciI7CiAKLVNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKQotICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKK1NWR01hcmtlckVsZW1lbnQ6
OlNWR01hcmtlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIG1fcmVmWChMZW5ndGhNb2RlV2lkdGgpCiAgICAgLCBtX3JlZlkoTGVuZ3RoTW9kZUhlaWdo
dCkKICAgICAsIG1fbWFya2VyV2lkdGgoTGVuZ3RoTW9kZVdpZHRoLCAiMyIpCkBAIC01OCwxMCAr
NTUsNiBAQCBQYXNzUmVmUHRyPFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVsCiAgICAgcmV0
dXJuIG5ldyBTVkdNYXJrZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHTWFy
a2VyRWxlbWVudDo6flNWR01hcmtlckVsZW1lbnQoKQotewotfQotCiBBZmZpbmVUcmFuc2Zvcm0g
U1ZHTWFya2VyRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgs
IGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR0ZpdFRvVmlld0JveDo6
dmlld0JveFRvVmlld1RyYW5zZm9ybSh2aWV3Qm94KCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSwg
dmlld1dpZHRoLCB2aWV3SGVpZ2h0KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlz
aW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxNiArNTUsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHTWFya2VyRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCi0gICAgU1ZHTWFya2VyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLSAgICB2aXJ0dWFsIH5TVkdNYXJrZXJFbGVtZW50KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0K
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lk
dGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8o
KTsKICAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUmKTsKIAorcHJpdmF0
ZToKKyAgICBTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OworCisgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAKLXByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdDsKIAogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6OnJlZlhBdHRyLCBTVkdMZW5ndGgsIFJlZlgsIHJlZlgpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDggQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdNYXNrRWxlbWVudDo6
U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKLSAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwg
U1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKQoraW5saW5lIFNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9tYXNrVW5p
dHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwg
bV9tYXNrQ29udGVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VP
TlVTRSkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgsICItMTAlIikKQEAgLTU5LDEwICs1Niw2
IEBAIFBhc3NSZWZQdHI8U1ZHTWFza0VsZW1lbnQ+IFNWR01hc2tFbGVtZW4KICAgICByZXR1cm4g
bmV3IFNWR01hc2tFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHTWFza0VsZW1l
bnQ6On5TVkdNYXNrRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMTMgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR01hc2tFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICAgICAgRmxvYXRSZWN0IG1hc2tCb3Vu
ZGluZ0JveChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKworICAgIHByaXZhdGU6CiAgICAgICAg
IFNWR01hc2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgICAg
ICB2aXJ0dWFsIH5TVkdNYXNrRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICAgICAgRmxvYXRSZWN0IG1hc2tCb3VuZGluZ0JveChjb25zdCBGbG9hdFJl
Y3QmKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKQEAgLTUyLDcgKzUzLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKLSAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVW5pdHNB
dHRyLCBpbnQsIE1hc2tVbml0cywgbWFza1VuaXRzKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWV0
YWRhdGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNZXRhZGF0YUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwxMCBAQAogI2lmIEVOQUJMRShT
VkcpCiAjaW5jbHVkZSAiU1ZHTWV0YWRhdGFFbGVtZW50LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdNZXRhZGF0YUVsZW1lbnQ6OlNWR01l
dGFkYXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9j
KQotOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdNZXRhZGF0YUVsZW1lbnQ6
OlNWR01ldGFkYXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQog
CkBAIC0zNCw4ICszNCw2IEBAIFBhc3NSZWZQdHI8U1ZHTWV0YWRhdGFFbGVtZW50PiBTVkdNZXRh
ZGEKICAgICByZXR1cm4gbmV3IFNWR01ldGFkYXRhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7
CiB9CiAKLVNWR01ldGFkYXRhRWxlbWVudDo6flNWR01ldGFkYXRhRWxlbWVudCgpCi17CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmgJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTWV0YWRhdGFFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBwcml2YXRlOgogICAgICAg
ICBTVkdNZXRhZGF0YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0g
ICAgICAgIHZpcnR1YWwgflNWR01ldGFkYXRhRWxlbWVudCgpOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1ZHTWlzc2luZ0dseXBoRWxlbWVudDo6U1ZHTWlzc2luZ0dseXBoRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVk
RWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHTWlzc2luZ0dseXBoRWxlbWVudDo6U1ZH
TWlzc2luZ0dseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCShyZXZpc2lvbiA2
NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsMTAgKzI0LDEyIEBACiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdNaXNzaW5nR2x5cGhFbGVtZW50
IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHTWlzc2luZ0dseXBoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHTWlzc2luZ0ds
eXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDYgQEAg
U1ZHTnVtYmVyTGlzdDo6U1ZHTnVtYmVyTGlzdChjb25zdCBRdWFsaQogewogfQogCi1TVkdOdW1i
ZXJMaXN0Ojp+U1ZHTnVtYmVyTGlzdCgpCi17Ci19Ci0KIHZvaWQgU1ZHTnVtYmVyTGlzdDo6cGFy
c2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdOdW1iZXJMaXN0LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHTnVt
YmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTVkdOdW1iZXJMaXN0IDogcHVibGljIFNWR1BPRExpc3Q8ZmxvYXQ+
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR051bWJlckxpc3Q+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHTnVtYmVyTGlzdChhdHRyaWJ1dGVOYW1lKSk7IH0KLSAgICAgICAgdmlydHVh
bCB+U1ZHTnVtYmVyTGlzdCgpOwogCiAgICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiAgCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTAgKzYzLDYgQEAgU1ZHUGFpbnQ6
OlNWR1BhaW50KGNvbnN0IFN0cmluZyYgdXJpLCBjbwogICAgIHNldFVyaSh1cmkpOwogfQogCi1T
VkdQYWludDo6flNWR1BhaW50KCkKLXsKLX0KLQogU1ZHUGFpbnQqIFNWR1BhaW50OjpkZWZhdWx0
RmlsbCgpCiB7CiAgICAgc3RhdGljIFNWR1BhaW50KiBzdGF0aWNEZWZhdWx0RmlsbCA9IGNyZWF0
ZShDb2xvcjo6YmxhY2spLnJlbGVhc2VSZWYoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAkocmV2aXNpb24gNjYzOTEp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYWludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNiArNjQs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdQYWludCh1cmksIGNvbG9yKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5T
VkdQYWludCgpOwotCiAgICAgICAgIC8vICdTVkdQYWludCcgZnVuY3Rpb25zCiAgICAgICAgIFNW
R1BhaW50VHlwZSBwYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3BhaW50VHlwZTsgfQogICAg
ICAgICBTdHJpbmcgdXJpKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRVcmkoY29uc3QgU3Ry
aW5nJik7CiAgICAgICAgIHZvaWQgc2V0UGFpbnQoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVyaSwgY29uc3QgU3RyaW5nJiByZ2JQYWludCwgY29uc3QgU3RyaW5nJiBpY2NQYWludCwgRXhj
ZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBTVkdQYWludCogZGVmYXVsdEZpbGwoKTsKICAgICAg
ICAgc3RhdGljIFNWR1BhaW50KiBkZWZhdWx0U3Ryb2tlKCk7CkBAIC05MCw2ICs4Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdQYWludCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3Q7CisKICAgICAgICAgU1ZHUGFpbnRUeXBlIG1fcGFpbnRUeXBlOwogICAgICAgICBTdHJp
bmcgbV91cmk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2
aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
KiBXZSB1c2UgdGhpcyBnZW5lcmljIF9wYXJzZU51bWJlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUg
UGF0aCBwYXJzaW5nIGNvZGUgdG8gd29yayAKLSAqIGF0IGEgaGlnaGVyIHByZWNpc2lvbiBpbnRl
cm5hbGx5LCB3aXRob3V0IGFueSB1bm5lY2Vzc2FyeSBydW50aW1lIGNvc3Qgb3IgY29kZQotICog
Y29tcGxleGl0eQotICovICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0VHlwZT4gc3RhdGlj
IGJvb2wgX3BhcnNlTnVtYmVyKGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hhciogZW5kLCBG
bG9hdFR5cGUmIG51bWJlciwgYm9vbCBza2lwKQorLy8gV2UgdXNlIHRoaXMgZ2VuZXJpYyBwYXJz
ZU51bWJlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUgUGF0aCBwYXJzaW5nIGNvZGUgdG8gd29yayAK
Ky8vIGF0IGEgaGlnaGVyIHByZWNpc2lvbiBpbnRlcm5hbGx5LCB3aXRob3V0IGFueSB1bm5lY2Vz
c2FyeSBydW50aW1lIGNvc3Qgb3IgY29kZQorLy8gY29tcGxleGl0eS4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBGbG9hdFR5cGU+IHN0YXRpYyBib29sIGdlbmVyaWNQYXJzZU51bWJlcihjb25zdCBVQ2hh
ciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgRmxvYXRUeXBlJiBudW1iZXIsIGJvb2wgc2tpcCkK
IHsKICAgICBpbnQgZXhwb25lbnQ7CiAgICAgRmxvYXRUeXBlIGludGVnZXIsIGRlY2ltYWwsIGZy
YWM7CkBAIC0xMjcsNyArMTI2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZsb2F0VHlwZT4gc3Rh
dGljIGJvbwogCiBib29sIHBhcnNlTnVtYmVyKGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hh
ciogZW5kLCBmbG9hdCYgbnVtYmVyLCBib29sIHNraXApIAogewotICAgIHJldHVybiBfcGFyc2VO
dW1iZXIocHRyLCBlbmQsIG51bWJlciwgc2tpcCk7CisgICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51
bWJlcihwdHIsIGVuZCwgbnVtYmVyLCBza2lwKTsKIH0KIAogLy8gb25seSB1c2VkIHRvIHBhcnNl
IGxhcmdlQXJjRmxhZyBhbmQgc3dlZXBGbGFnIHdoaWNoIG11c3QgYmUgYSAiMCIgb3IgIjEiCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhdGhCbGVuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDYgQEAgU1ZH
UGF0aEJsZW5kZXI6OlNWR1BhdGhCbGVuZGVyKCkKIHsKIH0KIAotU1ZHUGF0aEJsZW5kZXI6On5T
VkdQYXRoQmxlbmRlcigpCi17Ci19Ci0KIGZsb2F0IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1h
dGVkRmxvYXQoZmxvYXQgZnJvbSwgZmxvYXQgdG8pCiB7CiAgICAgcmV0dXJuICh0byAtIGZyb20p
ICogbV9wcm9ncmVzcyArIGZyb207CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmgJKHJldmlzaW9uIDY2
MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTVkdQYXRoQmxlbmRlciA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgU1ZHUGF0aEJsZW5kZXIoKTsKLSAg
ICB+U1ZHUGF0aEJsZW5kZXIoKTsKIAogICAgIGJvb2wgYmxlbmRBbmltYXRlZFBhdGgoZmxvYXQs
IFNWR1BhdGhTb3VyY2UqLCBTVkdQYXRoU291cmNlKiwgU1ZHUGF0aENvbnN1bWVyKik7CiAgICAg
dm9pZCBjbGVhbnVwKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmgJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTgg
KzM2LDE4IEBAIHB1YmxpYzoKICAgICBTVkdQYXRoQnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRD
dXJyZW50UGF0aChQYXRoKiBwYXRoKSB7IG1fcGF0aCA9IHBhdGg7IH0KKworcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYW51cCgpIHsgbV9wYXRoID0gMDsgfQogCi1wcml2YXRlOgogICAgIC8vIFVzZWQg
aW4gVW5hbHRlcmVkUGFyaXNuZy9Ob3JtYWxpemVkUGFyc2luZyBtb2Rlcy4KICAgICB2aXJ0dWFs
IHZvaWQgbW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5h
dGVNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRo
Q29vcmRpbmF0ZU1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3Jk
aW5hdGVNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYXRoKCk7CiAKLXByaXZhdGU6CiAg
ICAgLy8gT25seSB1c2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcgbW9kZS4KICAgICB2aXJ0dWFsIHZv
aWQgbGluZVRvSG9yaXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
OCArMzQsMTggQEAgcHVibGljOgogICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcigpOwogCiAg
ICAgdm9pZCBzZXRDdXJyZW50Qnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogYnl0ZVN0cmVh
bSkgeyBtX2J5dGVTdHJlYW0gPSBieXRlU3RyZWFtOyB9CisKK3ByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y29udGludWVDb25zdW1pbmcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFudXAoKSB7IG1fYnl0ZVN0cmVhbSA9IDA7IH0KIAotcHJpdmF0ZToKICAgICAvLyBVc2VkIGlu
IFVuYWx0ZXJlZFBhcnNpbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2
b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRl
TW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiwgUGF0aENv
b3JkaW5hdGVNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb0N1YmljKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGlu
YXRlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGF0aCgpOwogCi1wcml2YXRlOgogICAg
IC8vIE9ubHkgdXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nIG1vZGUuCiAgICAgdmlydHVhbCB2b2lk
IGxpbmVUb0hvcml6b250YWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSk7CiAgICAgdmlydHVh
bCB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwpAQCAtNTQs
NyArNTQsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21v
b3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogICAgIHZpcnR1YWwg
dm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBz
d2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwogCi1wcml2
YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVUeXBlPgogICAgIHZvaWQgd3JpdGVUeXBl
KGNvbnN0IEJ5dGVUeXBlJiB0eXBlKQogICAgIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhC
eXRlU3RyZWFtU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoQnl0
ZVN0cmVhbVNvdXJjZS5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsNiBAQCBT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6U1ZHUGF0aEJ5dGVTdHJlCiAgICAgbV9zdHJlYW1FbmQg
PSBzdHJlYW0tPmVuZCgpOwogfQogCi1TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6flNWR1BhdGhC
eXRlU3RyZWFtU291cmNlKCkKLXsKLX0KLQogYm9vbCBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6
aGFzTW9yZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0cmVhbUN1cnJlbnQgPCBtX3N0
cmVhbUVuZDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZShzdHJlYW0pKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIH5TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZSgpOworcHJpdmF0ZToKKyAgICBTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZShTVkdQYXRoQnl0ZVN0cmVhbSopOwogCiAgICAgdmlydHVhbCBib29s
IGhhc01vcmVEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigp
IHsgcmV0dXJuIHRydWU7IH0KQEAgLTUyLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KEZsb2F0UG9pbnQmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0Jiwg
Ym9vbCYsIGJvb2wmLCBGbG9hdFBvaW50Jik7CiAKLXByaXZhdGU6Ci0gICAgU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UoU1ZHUGF0aEJ5dGVTdHJlYW0qKTsKLQogI2lmIENPTVBJTEVSKE1TVkMpCiAj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMSkKICNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUGF0aENvbnN1bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1
bWVyLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkg
PSAwOwogCi1wdWJsaWM6CiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25nL05vcm1hbGl6
ZWRQYXJzaW5nIG1vZGVzLgogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2lu
dCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgbGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVBhdGgoKSA9IDA7CiAKLXB1YmxpYzoKICAgICAvLyBPbmx5IHVz
ZWQgaW4gVW5hbHRlcmVkUGFyc2luZyBtb2RlLgogICAgIHZpcnR1YWwgdm9pZCBsaW5lVG9Ib3Jp
em9udGFsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGluZVRvVmVydGljYWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwpAQCAtNjMsNyAr
NjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYs
IFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHUGF0aENvbnN1
bWVyKCkgeyB9CiAgICAgdmlydHVhbCB+U1ZHUGF0aENvbnN1bWVyKCkgeyB9CiB9OwogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIFNWR1Rlc3RzKCkKLSAgICAs
IFNWR0xhbmdTcGFjZSgpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKK2lu
bGluZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTU3LDEwICs1NCw2IEBAIFBh
c3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW4KICAgICByZXR1cm4gbmV3IFNW
R1BhdGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHUGF0aEVsZW1lbnQ6On5T
VkdQYXRoRWxlbWVudCgpCi17Ci19Ci0KIGZsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExl
bmd0aCgpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgbWF5IHdpc2ggdG8gdXNlIHRoZSBwYXRoU2Vn
TGlzdCBpbnN0ZWFkIG9mIHRoZSBwYXRoZGF0YSBpZiB0aGF0J3MgY2hlYXBlciB0byBidWlsZCAo
b3IgY2FjaGVkKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhSZWw7CiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM7
CiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw7CisKICAgICBj
bGFzcyBTVkdQYXRoRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCkBAIC01NywxMSArNTgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHQW5pbWF0ZWRQYXRoRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwotCi0gICAgICAgIFNWR1BhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoRWxlbWVudCgpOwogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNW
YWxpZCgpOyB9CiAgICAgICAgIGZsb2F0IGdldFRvdGFsTGVuZ3RoKCk7CiAgICAgICAgIEZsb2F0
UG9pbnQgZ2V0UG9pbnRBdExlbmd0aChmbG9hdCBkaXN0YW5jZSk7CiAgICAgICAgIHVuc2lnbmVk
IGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsKQEAgLTkyLDE1ICs4OSwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU1ZHUGF0aFNlZ0xpc3Qq
IGFuaW1hdGVkUGF0aFNlZ0xpc3QoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdQYXRoU2Vn
TGlzdCogYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKSBjb25zdDsKIAorICAgICAgICB2
aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICAg
ICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxp
ZCgpOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0
YSgpIGNvbnN0OwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2VnTGlzdDsKIAogICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIGZs
b2F0LCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEwICszOCw2IEBAIFNWR1BhdGhQYXJzZXI6OlNWR1BhdGhQYXJzZXIoKQog
ewogfQogCi1TVkdQYXRoUGFyc2VyOjp+U1ZHUGF0aFBhcnNlcigpCi17Ci19Ci0KIHZvaWQgU1ZH
UGF0aFBhcnNlcjo6cGFyc2VDbG9zZVBhdGhTZWdtZW50KCkKIHsKICAgICAvLyBSZXNldCBtX2N1
cnJlbnRQb2ludCBmb3IgdGhlIG5leHQgcGF0aC4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgJKHJldmlz
aW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNWR1BhdGhQYXJz
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIFNWR1BhdGhQYXJzZXIoKTsK
LSAgICB+U1ZHUGF0aFBhcnNlcigpOwogCiAgICAgYm9vbCBwYXJzZVBhdGhEYXRhRnJvbVNvdXJj
ZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlKTsKICAgICB2b2lkIHNldEN1cnJlbnRD
b25zdW1lcihTVkdQYXRoQ29uc3VtZXIqIGNvbnN1bWVyKSB7IG1fY29uc3VtZXIgPSBjb25zdW1l
cjsgfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZy5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIwICszMSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFNlZzo6flNWR1BhdGhTZWcoKQotewotfQotCi11bnNp
Z25lZCBzaG9ydCBTVkdQYXRoU2VnOjpwYXRoU2VnVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFBBVEhTRUdfVU5LTk9XTjsKLX0KLQotU3RyaW5nIFNWR1BhdGhTZWc6OnBhdGhTZWdUeXBlQXNM
ZXR0ZXIoKSBjb25zdAotewotICAgIHJldHVybiAiIjsKLX0KLQogY29uc3QgUXVhbGlmaWVkTmFt
ZSYgU1ZHUGF0aFNlZzo6YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdOYW1lczo6ZEF0dHI7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDEx
IEBAIGVudW0gU1ZHUGF0aFNlZ1R5cGUgewogICAgIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21v
b3RoUmVsID0gMTkKIH07CiAKLWNsYXNzIFNWR1BhdGhFbGVtZW50OwotY2xhc3MgU1ZHU3R5bGVk
RWxlbWVudDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKIGNsYXNzIFNWR1BhdGhTZWcgOiBwdWJs
aWMgUmVmQ291bnRlZDxTVkdQYXRoU2VnPiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U1ZHUGF0
aFNlZygpOworICAgIHZpcnR1YWwgflNWR1BhdGhTZWcoKSB7IH0KIAogICAgIC8vIEZvcndhcmQg
ZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2Vu
ZXJhdGlvbgogICAgIGVudW0gewpAQCAtODMsMjkgKzgxLDI3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0OworICAgIHZpcnR1YWwg
dW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0ID0gMDsKIAogICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7Ci0gICAgCi1wcm90ZWN0ZWQ6
Ci0gICAgU1ZHUGF0aFNlZygpIHsgfQogfTsKIAogY2xhc3MgU1ZHUGF0aFNlZ1NpbmdsZUNvb3Jk
IDogcHVibGljIFNWR1BhdGhTZWcgeyAKIHB1YmxpYzoKLSAgICBTVkdQYXRoU2VnU2luZ2xlQ29v
cmQoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiBtX3goeCkKLSAgICAgICAgLCBtX3koeSkK
LSAgICB7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQogICAg
IGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KIAogICAgIHZvaWQgc2V0WShmbG9hdCB5
KSB7IG1feSA9IHk7IH0KICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAKK3By
b3RlY3RlZDoKKyAgICBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoZmxvYXQgeCwgZmxvYXQgeSkKKyAg
ICAgICAgOiBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICB7CisgICAgfQorCiBwcml2YXRl
OgogICAgIGZsb2F0IG1feDsKICAgICBmbG9hdCBtX3k7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnQXJjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5oCShy
ZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdBcmMuaAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTEgKzgwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0FyY0Ficyh4LCB5LCByMSwgcjIsIGFuZ2xl
LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZykpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQVJD
X0FCUzsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29u
c3QgeyByZXR1cm4gIkEiOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBTVkdQYXRoU2VnQXJj
QWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJv
b2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZyk7CisKKyAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQVJDX0FCUzsg
fQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyBy
ZXR1cm4gIkEiOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFNWR1BhdGhTZWdBcmNSZWwgOiBwdWJs
aWMgU1ZHUGF0aFNlZ0FyYyB7CkBAIC05NCwxMSArOTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQXJjUmVsKHgsIHks
IHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1
cm4gUEFUSFNFR19BUkNfUkVMOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBl
QXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiYSI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAg
IFNWR1BhdGhTZWdBcmNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBm
bG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKTsKKworICAgICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFU
SFNFR19BUkNfUkVMOyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0
ZXIoKSBjb25zdCB7IHJldHVybiAiYSI7IH0KICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmNwcAkocmV2aXNpb24gNjYzOTEp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw0MSArMSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR1BhdGhTZWdDbG9zZVBhdGguaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdQYXRoU2VnQ2xvc2VQYXRoOjpTVkdQYXRoU2VnQ2xv
c2VQYXRoKCkKLSAgICA6IFNWR1BhdGhTZWcoKQotewotfQotCi1TVkdQYXRoU2VnQ2xvc2VQYXRo
Ojp+U1ZHUGF0aFNlZ0Nsb3NlUGF0aCgpCi17Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShT
VkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKKy8vIFRoaXMgZmlsZSBpcyBub3cgaW50ZW50aW9uYWxs
eSBlbXB0eS4gRGVsZXRlIGl0IGFmdGVyIHJlbW92aW5nIGl0IGZyb20gYWxsIHRoZSBidWlsZCBz
eXN0ZW1zIGFuZCBwcm9qZWN0IGZpbGVzLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0Ns
b3NlUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGgu
aAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcHVibGljIFNWR1BhdGhTZWcgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDbG9zZVBhdGg+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ2xvc2VQYXRoKTsgfQotICAgIHZpcnR1YWwgflNW
R1BhdGhTZWdDbG9zZVBhdGgoKTsKKworcHJpdmF0ZToKKyAgICBTVkdQYXRoU2VnQ2xvc2VQYXRo
KCkgeyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUEFUSFNFR19DTE9TRVBBVEg7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2Vn
VHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIloiOyB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZH
UGF0aFNlZ0Nsb3NlUGF0aCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpYyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCiAgICAgcHVibGljOgotICAgICAgICBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwg
ZmxvYXQgeDIsIGZsb2F0IHkyKSA6IFNWR1BhdGhTZWcoKSAsIG1feCh4KSAsIG1feSh5KSAsIG1f
eDEoeDEpICwgbV95MSh5MSkgLCBtX3gyKHgyKSAsIG1feTIoeTIpIHt9CisgICAgICAgIFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCB4MiwgZmxvYXQgeTIpIDogbV94KHgpLCBtX3koeSksIG1feDEoeDEpLCBtX3kxKHkxKSwg
bV94Mih4MiksIG1feTIoeTIpIHsgfQogCiAgICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1f
eCA9IHg7IH0KICAgICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQpAQCAtNjYs
MTEgKzY2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyh4LCB5LCB4MSwgeTEsIHgyLCB5Mikp
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlM7IH0KLSAgICAgICAg
dmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJDIjsg
fQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyhmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5Mik7CisK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlM7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcg
cGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJDIjsgfQogICAgIH07CiAKICAg
ICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWMgeyAKQEAgLTgwLDExICs4MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwoeCwg
eSwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdW5zaWdu
ZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VC
SUNfUkVMOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBj
b25zdCB7IHJldHVybiAiYyI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9h
dCB4MiwgZmxvYXQgeTIpOworCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNl
Z1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMOyB9CisgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAi
YyI7IH0KICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGguaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU1ZHUGF0aFNlZyB7CiAgICAgcHVibGljOgog
ICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHgyLCBmbG9hdCB5MikKLSAgICAgICAgOiBtX3goeCksIG1feSh5KSwgbV94Mih4MiksIG1f
eTIoeTIpIHsgfQorICAgICAgICAgICAgOiBtX3goeCkKKyAgICAgICAgICAgICwgbV95KHkpCisg
ICAgICAgICAgICAsIG1feDIoeDIpCisgICAgICAgICAgICAsIG1feTIoeTIpCisgICAgICAgIHsK
KyAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KICAg
ICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQpAQCAtNTYsMjIgKzYxLDIyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzKHgsIHksIHgyLCB5MikpOyB9CiAKLSAgICAgICAgdmlydHVh
bCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VS
VkVUT19DVUJJQ19TTU9PVEhfQUJTOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdU
eXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiUyI7IH0KLQogICAgIHByaXZhdGU6CiAgICAg
ICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDIsIGZsb2F0IHkyKTsKKworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhT
ZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlM7
IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsg
cmV0dXJuICJTIjsgfQogICAgIH07CiAKICAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggeyAKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhSZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKHgsIHks
IHgyLCB5MikpOyB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMOyB9Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVy
biAicyI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKTsKKworICAgICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFU
SFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUw7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcg
cGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJzIjsgfQogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWMuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgOiBwdWJs
aWMgU1ZHUGF0aFNlZyB7IAogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKQotICAgICAgICA6
IFNWR1BhdGhTZWcoKSwgbV94KHgpLCBtX3koeSksIG1feDEoeDEpLCBtX3kxKHkxKSB7fQorICAg
ICAgICAgICAgOiBtX3goeCkKKyAgICAgICAgICAgICwgbV95KHkpCisgICAgICAgICAgICAsIG1f
eDEoeDEpCisgICAgICAgICAgICAsIG1feTEoeTEpCisgICAgICAgIHsKKyAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KICAgICAgICAgZmxvYXQgeCgp
IGNvbnN0IHsgcmV0dXJuIG1feDsgfQpAQCAtNTYsMjIgKzYxLDIyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZs
b2F0IHkxKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNB
YnMoeCwgeSwgeDEsIHkxKSk7IH0KIAotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBh
dGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM7
IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsg
cmV0dXJuICJRIjsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKKworICAg
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4g
UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcg
cGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJRIjsgfQogICAgIH07CiAKICAg
ICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6IHB1YmxpYyBTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpYyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHgxLCBmbG9hdCB5MSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljUmVsKHgsIHksIHgxLCB5MSkpOyB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19R
VUFEUkFUSUNfUkVMOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0
ZXIoKSBjb25zdCB7IHJldHVybiAicSI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9h
dCB5MSk7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMOyB9CisgICAgICAgIHZp
cnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAicSI7IH0K
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgJKHJldmlzaW9uIDY2MzkxKQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMjIgKzMyLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHgsIHkpKTsgfQogCi0gICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlM7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcg
cGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJUIjsgfQotCiAgICAgcHJpdmF0
ZToKICAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwg
ZmxvYXQgeSk7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzsgfQor
ICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1
cm4gIlQiOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoUmVsIDogcHVibGljIFNWR1BhdGhTZWdTaW5nbGVDb29yZCB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aFJlbD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh4LCB5KSk7IH0KIAotICAgICAgICB2aXJ0
dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19D
VVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBh
dGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAidCI7IH0KLQogICAgIHByaXZhdGU6
CiAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKGZsb2F0IHgsIGZs
b2F0IHkpOworCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBj
b25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUw7IH0KKyAg
ICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJu
ICJ0IjsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaW5ldG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGluZXRvLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
bmV0by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsMjcgQEAKICNpbmNsdWRlICJTVkdQ
YXRoU2VnLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR1BhdGhTZWdM
aW5ldG9BYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkIHsgCiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvQWJzPiBjcmVhdGUoZmxv
YXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdMaW5ldG9BYnMo
eCwgeSkpOyB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTElORVRPX0FCUzsgfQotICAgICAgICB2aXJ0dWFsIFN0
cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIkwiOyB9Ci0KICAgICBw
cml2YXRlOgogICAgICAgICBTVkdQYXRoU2VnTGluZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHkpOwor
CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJl
dHVybiBQQVRIU0VHX0xJTkVUT19BQlM7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNl
Z1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJMIjsgfQogICAgIH07CiAKICAgICBjbGFz
cyBTVkdQYXRoU2VnTGluZXRvUmVsIDogcHVibGljIFNWR1BhdGhTZWdTaW5nbGVDb29yZCB7IAog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1Jl
bD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRo
U2VnTGluZXRvUmVsKHgsIHkpKTsgfQogCisgICAgcHJpdmF0ZToKKyAgICAgICAgU1ZHUGF0aFNl
Z0xpbmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5KTsKIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9fUkVMOyB9
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiAibCI7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdMaW5ldG9SZWwo
ZmxvYXQgeCwgZmxvYXQgeSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oCShyZXZpc2lvbiA2NjM5
MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDIyICs0MywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFi
cz4gY3JlYXRlKGZsb2F0IHgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbEFicyh4KSk7IH0KIAotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBh
dGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlM7
IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsg
cmV0dXJuICJIIjsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0hv
cml6b250YWxBYnMoZmxvYXQgeCk7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBw
YXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJT
OyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7
IHJldHVybiAiSCI7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWxSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxS
ZWw+IGNyZWF0ZShmbG9hdCB4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxSZWwoeCkpOyB9CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBw
YXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVM
OyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7
IHJldHVybiAiaCI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsUmVsKGZsb2F0IHgpOworCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQg
cGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JF
TDsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qg
eyByZXR1cm4gImgiOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgJKHJldmlzaW9uIDY2MzkxKQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDIyICs0MywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnM+IGNyZWF0ZShm
bG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJz
KHkpKTsgfQogCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBj
b25zdCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM7IH0KLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJWIjsgfQot
CiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzKGZsb2F0
IHkpOworCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25z
dCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM7IH0KKyAgICAgICAgdmlydHVh
bCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJWIjsgfQogICAg
IH07CiAKICAgICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBwdWJsaWMgU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRlKGZsb2F0IHkpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoeSkpOyB9CiAKLSAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBw
YXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gInYiOyB9Ci0KICAgICBwcml2YXRl
OgogICAgICAgICBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoZmxvYXQgeSk7CisKKyAgICAg
ICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBB
VEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRo
U2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gInYiOyB9CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAkocmV2aXNpb24gNjYz
OTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEwICszMiw2IEBAIFNWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlzdChjb25zdCBRdWEK
IHsKIH0KIAotU1ZHUGF0aFNlZ0xpc3Q6On5TVkdQYXRoU2VnTGlzdCgpCi17Ci19Ci0KIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDY2
MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNiBAQCBjbGFzcyBTVkdFbGVtZW50OwogY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBw
dWJsaWMgU1ZHTGlzdDxSZWZQdHI8U1ZHUGF0aFNlZz4gPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpc3QoYXR0cmli
dXRlTmFtZSkpOyB9Ci0gICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpc3QoKTsKIAogcHJpdmF0ZToK
ICAgICBTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJik7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTggKzM2LDE4IEBA
IHB1YmxpYzoKICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoKTsKIAogICAgIHZvaWQgc2V0Q3Vy
cmVudFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdMaXN0KiBwYXRoU2VnTGlzdCkgeyBtX3BhdGhT
ZWdMaXN0ID0gcGF0aFNlZ0xpc3Q7IH0KKworcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5j
cmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNv
bnN1bWluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIHsg
bV9wYXRoU2VnTGlzdCA9IDA7IH0KIAotcHJpdmF0ZToKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJl
ZFBhcmlzbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVU
byhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVN
b2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSk7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGF0aCgpOwogCi1wcml2YXRlOgogICAgIC8vIE9ubHkg
dXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nIG1vZGUuCiAgICAgdmlydHVhbCB2b2lkIGxpbmVUb0hv
cml6b250YWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGxp
bmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpOwpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBA
IFNWR1BhdGhTZWdMaXN0U291cmNlOjpTVkdQYXRoU2VnTGlzdFNvdXIKICAgICBtX2l0ZW1FbmQg
PSBtX3BhdGhTZWdMaXN0LT5udW1iZXJPZkl0ZW1zKCk7CiB9CiAKLVNWR1BhdGhTZWdMaXN0U291
cmNlOjp+U1ZHUGF0aFNlZ0xpc3RTb3VyY2UoKQotewotfQotCiBib29sIFNWR1BhdGhTZWdMaXN0
U291cmNlOjpoYXNNb3JlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXRlbUN1cnJlbnQg
PCBtX2l0ZW1FbmQ7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgJKHJldmlzaW9u
IDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UocGF0aFNlZ0xpc3QpKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5TVkdQYXRoU2VnTGlzdFNvdXJjZSgpOworcHJpdmF0ZToKKyAgICBTVkdQYXRoU2VnTGlz
dFNvdXJjZShTVkdQYXRoU2VnTGlzdCopOwogCiAgICAgdmlydHVhbCBib29sIGhhc01vcmVEYXRh
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigpIHsgcmV0dXJuIHRy
dWU7IH0KQEAgLTU0LDkgKzU1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwYXJzZUN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIGJv
b2wgcGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0JiwgYm9vbCYsIGJvb2wm
LCBGbG9hdFBvaW50Jik7CiAKLXByaXZhdGU6Ci0gICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UoU1ZH
UGF0aFNlZ0xpc3QqKTsKLQogICAgIFNWR1BhdGhTZWdMaXN0KiBtX3BhdGhTZWdMaXN0OwogICAg
IFJlZlB0cjxTVkdQYXRoU2VnPiBtX3NlZ21lbnQ7CiAgICAgaW50IG1faXRlbUN1cnJlbnQ7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTW92ZXRvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ01vdmV0by5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdNb3ZldG8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjIgKzMxLDIyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR1BhdGhTZWdNb3ZldG9BYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ01vdmV0b0Ficyh4LCB5KSk7IH0KIAotICAgICAgICB2aXJ0
dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19N
T1ZFVE9fQUJTOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIo
KSBjb25zdCB7IHJldHVybiAiTSI7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhT
ZWdNb3ZldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSk7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25l
ZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTU9WRVRPX0FCUzsg
fQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyBy
ZXR1cm4gIk0iOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFNWR1BhdGhTZWdNb3ZldG9SZWwgOiBw
dWJsaWMgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkIHsgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTW92ZXRvUmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQg
eSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdNb3ZldG9SZWwoeCwgeSkpOyB9CiAK
LSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFBBVEhTRUdfTU9WRVRPX1JFTDsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2Vn
VHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIm0iOyB9Ci0KICAgICBwcml2YXRlOgogICAg
ICAgICBTVkdQYXRoU2VnTW92ZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHkpOworCisgICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VH
X01PVkVUT19SRUw7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRl
cigpIGNvbnN0IHsgcmV0dXJuICJtIjsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdQYXRoU291cmNlLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHUGF0aFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudChGbG9hdFBvaW50
JiwgRmxvYXRQb2ludCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoU2VnbWVudChGbG9hdFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwYXJz
ZUFyY1RvU2VnbWVudChmbG9hdCYsIGZsb2F0JiwgZmxvYXQmLCBib29sJiwgYm9vbCYsIEZsb2F0
UG9pbnQmKSA9IDA7Ci0KLXB1YmxpYzoKLSAgICBTVkdQYXRoU291cmNlKCkgeyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
Y3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTAgKzI0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdQYXRoU3RyaW5nQnVpbGRlcjo6U1ZHUGF0aFN0cmluZ0J1aWxkZXIoKQotewot
fQotCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmICht
b2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU3Ry
aW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWls
ZGVyLmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjEgKzI5LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU1ZHUGF0aFN0cmluZ0J1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVy
IHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoU3RyaW5nQnVpbGRlcigpOworICAgIFN0cmluZyByZXN1
bHQoKSB7IHJldHVybiBtX3N0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29uY2F0QWRkaW5nU3BhY2Vz
QmV0d2VlbkluZGl2aWR1YWxTdHJpbmdzKTsgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1aWxkZXIuY2xlYXIoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBpbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGNvbnRp
bnVlQ29uc3VtaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0cmluZyByZXN1bHQoKSB7IHJl
dHVybiBtX3N0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29uY2F0QWRkaW5nU3BhY2VzQmV0d2Vlbklu
ZGl2aWR1YWxTdHJpbmdzKTsgfQogCi1wcml2YXRlOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVk
UGFyc2luZy9Ob3JtYWxpemVkUGFyc2luZyBtb2Rlcy4KICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRv
KGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgbGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYXRoKCk7CiAKLXByaXZhdGU6CiAgICAgLy8gT25seSB1
c2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcgbW9kZS4KICAgICB2aXJ0dWFsIHZvaWQgbGluZVRvSG9y
aXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGlu
ZVRvVmVydGljYWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSk7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nU291cmNlLmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDYgQEAgU1ZH
UGF0aFN0cmluZ1NvdXJjZTo6U1ZHUGF0aFN0cmluZ1NvdXJjZQogICAgIEFTU0VSVCghc3RyaW5n
LmlzRW1wdHkoKSk7CiB9CiAKLVNWR1BhdGhTdHJpbmdTb3VyY2U6On5TVkdQYXRoU3RyaW5nU291
cmNlKCkKLXsKLX0KLQogYm9vbCBTVkdQYXRoU3RyaW5nU291cmNlOjpoYXNNb3JlRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fY3VycmVudCA8IG1fZW5kOwpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUGF0aFN0cmluZ1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
dHJpbmdTb3VyY2UuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR1BhdGhTdHJpbmdTb3VyY2Uoc3RyaW5nKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB+U1ZHUGF0aFN0cmluZ1NvdXJjZSgpOworcHJpdmF0ZToKKyAg
ICBTVkdQYXRoU3RyaW5nU291cmNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBib29s
IGhhc01vcmVEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigp
OwpAQCAtNTIsOCArNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhcnNlQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9vbCBw
YXJzZUFyY1RvU2VnbWVudChmbG9hdCYsIGZsb2F0JiwgZmxvYXQmLCBib29sJiwgYm9vbCYsIEZs
b2F0UG9pbnQmKTsKIAotcHJpdmF0ZToKLSAgICBTVkdQYXRoU3RyaW5nU291cmNlKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBtX3N0cmluZzsKIAogICAgIGNvbnN0IFVDaGFyKiBtX2N1cnJl
bnQ7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
MTMgKzQ5LDggQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFt
ZSwgZG9jKQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIFNWR1Rlc3RzKCkKLSAgICAs
IFNWR0xhbmdTcGFjZSgpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAg
ICAsIFNWR0ZpdFRvVmlld0JveCgpCitpbmxpbmUgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRl
cm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3go
TGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX3dp
ZHRoKExlbmd0aE1vZGVXaWR0aCkKQEAgLTcxLDEwICs2Niw2IEBAIFBhc3NSZWZQdHI8U1ZHUGF0
dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm4KICAgICByZXR1cm4gbmV3IFNWR1BhdHRlcm5FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQYXR0ZXJu
RWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpwYXR0ZXJuVW5pdHNBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJl
dmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsOCArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0dGVybkVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgICAgICBQYXR0ZXJuQXR0cmli
dXRlcyBjb2xsZWN0UGF0dGVyblByb3BlcnRpZXMoKSBjb25zdDsKKworICAgIHByaXZhdGU6CiAg
ICAgICAgIFNWR1BhdHRlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwotICAgICAgICB2aXJ0dWFsIH5TVkdQYXR0ZXJuRWxlbWVudCgpOwogICAgICAgICAKICAgICAg
ICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxp
ZCgpOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5n
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU4LDkgKzYwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKLSAgICAgICAgUGF0dGVybkF0dHJpYnV0ZXMg
Y29sbGVjdFBhdHRlcm5Qcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgU1ZHTGVuZ3RoLCBYLCB4KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCShyZXZpc2lvbiA2
NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEwICszMiw2IEBAIFNWR1BvaW50TGlzdDo6U1ZHUG9pbnRMaXN0KGNvbnN0IFF1YWxpZmkK
IHsKIH0KIAotU1ZHUG9pbnRMaXN0Ojp+U1ZHUG9pbnRMaXN0KCkKLXsKLX0KLQogU3RyaW5nIFNW
R1BvaW50TGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdDsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1BvaW50TGlzdC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Bv
aW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTVkdQb2ludExpc3QgOiBwdWJsaWMgU1ZHUE9ETGlzdDxGbG9hdFBv
aW50PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQb2ludExp
c3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHUG9pbnRMaXN0KGF0dHJpYnV0ZU5hbWUpKTsgfQotICAgICAgICB2aXJ0
dWFsIH5TVkdQb2ludExpc3QoKTsKIAogICAgICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNv
bnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTYgKzM0
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIFNWR1Rl
c3RzKCkKLSAgICAsIFNWR0xhbmdTcGFjZSgpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkKLSAgICAsIFNWR0FuaW1hdGVkUG9pbnRzKCkKLXsKLX0KLQotU1ZHUG9seUVsZW1l
bnQ6On5TVkdQb2x5RWxlbWVudCgpCitTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
b2x5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMSArMzYsMjEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdBbmltYXRlZFBvaW50cyB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdQb2x5RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHUG9s
eUVsZW1lbnQoKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotCiAgICAgICAgIHZpcnR1YWwgU1ZH
UG9pbnRMaXN0KiBwb2ludHMoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdQb2ludExpc3Qq
IGFuaW1hdGVkUG9pbnRzKCkgY29uc3Q7CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFNWR1Bv
bHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0
czo6aXNWYWxpZCgpOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOyAKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHByaXZhdGU6
CiAgICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKICAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR1BvbHlnb25FbGVtZW50OjpTVkdQb2x5Z29uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHUG9seUVsZW1lbnQodGFnTmFtZSwg
ZG9jKQoraW5saW5lIFNWR1BvbHlnb25FbGVtZW50OjpTVkdQb2x5Z29uRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdQb2x5
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtMzcsMTAgKzM3LDYgQEAgUGFz
c1JlZlB0cjxTVkdQb2x5Z29uRWxlbWVudD4gU1ZHUG9seWdvbgogICAgIHJldHVybiBuZXcgU1ZH
UG9seWdvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdQb2x5Z29uRWxlbWVu
dDo6flNWR1BvbHlnb25FbGVtZW50KCkKLXsKLX0KLQogUGF0aCBTVkdQb2x5Z29uRWxlbWVudDo6
dG9QYXRoRGF0YSgpIGNvbnN0CiB7CiAgICAgUGF0aCBwb2x5RGF0YTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BvbHlnb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9s
eWdvbkVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29u
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BvbHlnb25F
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBw
cml2YXRlOgogICAgICAgICBTVkdQb2x5Z29uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHUG9seWdvbkVsZW1lbnQoKTsKIAogICAg
ICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogICAgIH07CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1BvbHlsaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcv
U1ZHUG9seWxpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BvbHlsaW5lRWxlbWVudDo6U1ZHUG9seWxpbmVF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAg
OiBTVkdQb2x5RWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHUG9seWxpbmVFbGVtZW50
OjpTVkdQb2x5bGluZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogU1ZHUG9seUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiB9CiAKQEAgLTM3LDEwICszNyw2IEBAIFBhc3NSZWZQdHI8U1ZHUG9seWxpbmVFbGVtZW50PiBT
VkdQb2x5bGkKICAgICByZXR1cm4gbmV3IFNWR1BvbHlsaW5lRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCk7CiB9CiAKLVNWR1BvbHlsaW5lRWxlbWVudDo6flNWR1BvbHlsaW5lRWxlbWVudCgpCi17
Ci19Ci0KIFBhdGggU1ZHUG9seWxpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKICAg
ICBQYXRoIHBvbHlEYXRhOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgJKHJldmlzaW9u
IDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUG9seWxpbmVFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdQ
b2x5bGluZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAg
IHZpcnR1YWwgflNWR1BvbHlsaW5lRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgUGF0aCB0
b1BhdGhEYXRhKCkgY29uc3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZl
QXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8uY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZl
QXNwZWN0UmF0aW8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsNiBAQCBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpTVkdQcmVzZXJ2ZUFzcGVjCiAgICAgLy8gRklYTUU6IFNob3VsZCB0
aGUgdHdvIHZhbHVlcyBkZWZhdWx0IHRvIFVOS05PV04gaW5zdGVhZD8KIH0KIAotU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6flNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKQotewotfQotCiB2b2lkIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OnNldEFsaWduKHVuc2lnbmVkIHNob3J0IGFsaWduKQogewog
ICAgIG1fYWxpZ24gPSBhbGlnbjsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgfTsKIAogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAg
IHZpcnR1YWwgflNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsKIAogICAgICAgICB2b2lkIHNldEFs
aWduKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgYWxpZ24oKSBjb25z
dDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IFNWR0dyYWRpZW50
RWxlbWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogICAgICwgbV9jeChMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQogICAgICwgbV9jeShMZW5n
dGhNb2RlSGVpZ2h0LCAiNTAlIikKICAgICAsIG1fcihMZW5ndGhNb2RlT3RoZXIsICI1MCUiKQpA
QCAtNTYsMTAgKzU2LDYgQEAgUGFzc1JlZlB0cjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IFNW
RwogICAgIHJldHVybiBuZXcgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKIH0KIAotU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojp+U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpjeEF0dHIpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
KyAgICAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIGNvbGxlY3RHcmFkaWVudFByb3BlcnRp
ZXMoKTsKKyAgICAgICAgdm9pZCBjYWxjdWxhdGVGb2NhbENlbnRlclBvaW50c0FuZFJhZGl1cyhj
b25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBmb2NhbFBvaW50LCBG
bG9hdFBvaW50JiBjZW50ZXJQb2ludCwgZmxvYXQmIHJhZGl1cyk7CisKKyAgICBwcml2YXRlOgog
ICAgICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCgpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwpAQCAtNDIsMTAgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAKLSAgICAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIGNvbGxlY3RHcmFk
aWVudFByb3BlcnRpZXMoKTsKLSAgICAgICAgdm9pZCBjYWxjdWxhdGVGb2NhbENlbnRlclBvaW50
c0FuZFJhZGl1cyhjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBm
b2NhbFBvaW50LCBGbG9hdFBvaW50JiBjZW50ZXJQb2ludCwgZmxvYXQmIHJhZGl1cyk7Ci0KLSAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0OwogCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBTVkdMZW5ndGgsIEN4LCBjeCkKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQotICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwg
U1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5s
aW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCiAg
ICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRo
KQpAQCAtNTAsMTAgKzQ3LDYgQEAgUGFzc1JlZlB0cjxTVkdSZWN0RWxlbWVudD4gU1ZHUmVjdEVs
ZW1lbgogICAgIHJldHVybiBuZXcgU1ZHUmVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwog
fQogCi1TVkdSZWN0RWxlbWVudDo6flNWR1JlY3RFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdS
ZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUmVjdEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHByaXZhdGU6CiAgICAgICAg
IFNWR1JlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgICAg
ICB2aXJ0dWFsIH5TVkdSZWN0RWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKQEAg
LTQ3LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGF0
aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFkoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVuZ3Ro
LCBYLCB4KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR1NWR0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgICAgICBTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwotICAgICAgICB2aXJ0dWFsIH5TVkdTVkdFbGVtZW50KCk7Ci0KLSAgICAgICAgdmlydHVhbCBi
b29sIGlzU1ZHKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAKICAgICAgICAgdmly
dHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9
CiAKICAgICAgICAgLy8gJ1NWR1NWR0VsZW1lbnQnIGZ1bmN0aW9ucwpAQCAtMTE0LDYgKzEwOSwy
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0gY3Jl
YXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAorICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZs
b2F0IHZpZXdIZWlnaHQpIGNvbnN0OworCisgICAgICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1
dGVzKFNWR1ZpZXdFbGVtZW50Kik7CisKKyAgICAgICAgYm9vbCBpc091dGVybW9zdFNWRygpIGNv
bnN0OworCisgICAgICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU1ZHU1ZHRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAgICAgdmlydHVhbCB+U1ZHU1ZHRWxlbWVu
dCgpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NWRygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOyB9CkBAIC0xMjUsMTUgKzEzNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zv
cm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKLQotICAgICAgICB2
b2lkIGluaGVyaXRWaWV3QXR0cmlidXRlcyhTVkdWaWV3RWxlbWVudCopOwotCi0gICAgICAgIGJv
b2wgaXNPdXRlcm1vc3RTVkcoKSBjb25zdDsKLQotICAgICAgICBFbGVtZW50KiBnZXRFbGVtZW50
QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLQotICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKICAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIs
IFNWR0xlbmd0aCwgWCwgeCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxMCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1Njcmlw
dEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK2lubGluZSBTVkdTY3Jp
cHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBTVkdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgbV9kYXRhKHRoaXMsIHRoaXMpCiB7
CiAgICAgbV9kYXRhLnNldENyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpOwpAQCAtNDUs
MTAgKzQzLDYgQEAgUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBTVkdTY3JpcHRFbAogICAg
IHJldHVybiBuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5
UGFyc2VyKTsKIH0KIAotU1ZHU2NyaXB0RWxlbWVudDo6flNWR1NjcmlwdEVsZW1lbnQoKQotewot
fQotCiBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZGF0YS5zY3JpcHRDb250ZW50KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVu
dC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHU2NyaXB0RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKIAorICAgICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFR5cGUo
Y29uc3QgU3RyaW5nJik7CisKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdTY3JpcHRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsK
LSAgICAgICAgdmlydHVhbCB+U1ZHU2NyaXB0RWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIHNjcmlwdENvbnRlbnQoKSBjb25zdDsKIApAQCAtNTEsMTYgKzU0LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJp
YnV0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCk7CiAKLSAgICAgICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRUeXBl
KGNvbnN0IFN0cmluZyYpOwotCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNjcmlwdENoYXJzZXQo
KSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdDsKIAotICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCiAgICAgICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CkBAIC03NSwxNCAr
NzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hMb2FkRXZlbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgp
OwogCi0gICAgcHJpdmF0ZToKICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCiAgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHU2NyaXB0RWxlbWVudCwgWExpbmtOYW1lczo6aHJl
ZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKIAogICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHU2NyaXB0
RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0g
ICAgcHJpdmF0ZToKICAgICAgICAgU2NyaXB0RWxlbWVudERhdGEgbV9kYXRhOwogICAgICAgICBT
dHJpbmcgbV90eXBlOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAkocmV2aXNpb24g
NjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1TVkdTZXRFbGVt
ZW50OjpTVkdTZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKK2lubGluZSBTVkdTZXRFbGVtZW50OjpTVkdTZXRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0FuaW1h
dGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
U2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuaAko
cmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHU2V0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR1N0b3BFbGVtZW50OjpTVkdTdG9wRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkRWxl
bWVudCh0YWdOYW1lLCBkb2MpCitpbmxpbmUgU1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6
IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX29mZnNldCgwKQog
ewogfQpAQCAtNDMsMTAgKzQzLDYgQEAgUGFzc1JlZlB0cjxTVkdTdG9wRWxlbWVudD4gU1ZHU3Rv
cEVsZW1lbgogICAgIHJldHVybiBuZXcgU1ZHU3RvcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
OwogfQogCi1TVkdTdG9wRWxlbWVudDo6flNWR1N0b3BFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBT
VkdTdG9wRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHU3RvcEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgICAgICBD
b2xvciBzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgog
ICAgICAgICBTVkdTdG9wRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LSAgICAgICAgdmlydHVhbCB+U1ZHU3RvcEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0g
ICAgICAgIENvbG9yIHN0b3BDb2xvckluY2x1ZGluZ09wYWNpdHkoKSBjb25zdDsKLQotICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dyYWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3Ry
aW5nTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5jcHAJ
KHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDEwICszMiw2IEBAIFNWR1N0cmluZ0xpc3Q6OlNWR1N0cmluZ0xpc3Qo
Y29uc3QgUXVhbGkKIHsKIH0KIAotU1ZHU3RyaW5nTGlzdDo6flNWR1N0cmluZ0xpc3QoKQotewot
fQotCiB2b2lkIFNWR1N0cmluZ0xpc3Q6OnJlc2V0KGNvbnN0IFN0cmluZyYgc3RyKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24gNjYz
OTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1N0cmluZ0xpc3Qg
OiBwdWJsaWMgU1ZHTGlzdDxTdHJpbmc+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU3RyaW5nTGlzdChhdHRyaWJ1dGVO
YW1lKSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHU3RyaW5nTGlzdCgpOwogCiAgICAgICAgIHZv
aWQgcmVzZXQoY29uc3QgU3RyaW5nJiBzdHIpOwogICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyID0gJywnKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1N0eWxhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsYWJsZS5jcHAJ
KHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDM4ICsxIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHU3R5bGFibGUuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdTdHlsYWJsZTo6U1ZHU3R5bGFibGUoKQotewotfQot
Ci1TVkdTdHlsYWJsZTo6flNWR1N0eWxhYmxlKCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykKKy8vIFRoaXMgZmlsZSBpcyBub3cgaW50ZW50aW9uYWxseSBlbXB0eS4gRGVsZXRl
IGl0IGFmdGVyIHJlbW92aW5nIGl0IGZyb20gYWxsIHRoZSBidWlsZCBzeXN0ZW1zIGFuZCBwcm9q
ZWN0IGZpbGVzLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTdHlsYWJsZS5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUv
c3ZnL1NWR1N0eWxhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDU1NWYWx1ZTsKICAgICBjbGFzcyBDU1NTdHls
ZURlY2xhcmF0aW9uOwotICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKICAgICBjbGFzcyBTVkdT
dHlsYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdTdHlsYWJsZSgpOwotICAgICAgICB2
aXJ0dWFsIH5TVkdTdHlsYWJsZSgpOworICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsYWJsZSgpIHsg
fQogCiAgICAgICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYpID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkocmV2
aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHU3R5
bGVFbGVtZW50OjpTVkdTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK2lubGluZSBTVkdTdHls
ZUVsZW1lbnQ6OlNWR1N0eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogU1ZHRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIFN0eWxlRWxlbWVudChkb2N1bWVudCwgY3JlYXRl
ZEJ5UGFyc2VyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQor
KysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDE4IEBAIGNsYXNzIFNWR1N0eWxlRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW4KIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdTdHlsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKKyAgICBT
dHlsZVNoZWV0KiBzaGVldCgpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRNZWRpYShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGl0
bGUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgogICAg
IFNWR1N0eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CkBAIC00NSwxNyArNTcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gU3R5bGVFbGVtZW50Ojppc0xvYWRpbmcoKTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpIHsgcmV0dXJuIFN0eWxlRWxlbWVudDo6
c2hlZXRMb2FkZWQoZG9jdW1lbnQoKSk7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRp
YSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TWVkaWEoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwotCi0gICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIFN0
eWxlU2hlZXQqIHNoZWV0KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDggQEAgdm9p
ZCBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QQogICAgIHByb3BlcnR5TmFtZVRv
SWRNYXAtPnNldChhdHRyTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIHByb3BlcnR5SWQpOwogfQog
Ci1TVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykK
LXsKLX0KLQotU1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0eWxlZEVsZW1lbnQoKQorU1ZHU3R5bGVk
RWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjEgKzM1
LDI5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50IDog
cHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdTdHlsYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRF
bGVtZW50KCk7Ci0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAogICAg
ICAgICBib29sIGhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuICFtX2VsZW1lbnRz
V2l0aFJlbGF0aXZlTGVuZ3Rocy5pc0VtcHR5KCk7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTdHlsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgbmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUo
KSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpzdHlsZSgpOyB9CiAKICAgICAgICAgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgICAgICAvLyBDZW50cmFs
aXplZCBwbGFjZSB0byBmb3JjZSBhIG1hbnVhbCBzdHlsZSByZXNvbHV0aW9uLiBIYWNreSBidXQg
bmVlZGVkIGZvciBub3cuCisgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVT
dHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOworCisgICAgICAgIGJvb2wgaW5zdGFuY2VV
cGRhdGVzQmxvY2tlZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldEluc3RhbmNlVXBkYXRlc0Js
b2NrZWQoYm9vbCk7CisKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29y
ZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7CisKKyAg
ICAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnN0eWxlKCk7IH0KKworICAgIHByb3RlY3RlZDogCisgICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKICAgICAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRl
RW50cnkmKSBjb25zdDsKQEAgLTYyLDE1ICs3MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAotICAgICAgICAvLyBDZW50cmFsaXplZCBwbGFjZSB0byBmb3JjZSBhIG1h
bnVhbCBzdHlsZSByZXNvbHV0aW9uLiBIYWNreSBidXQgbmVlZGVkIGZvciBub3cuCi0gICAgICAg
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOwotCi0gICAgICAgIGJvb2wgaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoYm9vbCk7Ci0KLSAgICAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZH
TG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7Ci0KLSAgICBwcm90ZWN0ZWQ6IAogICAgICAgICBz
dGF0aWMgaW50IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICAgICAgdm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigp
IHsgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpLCB0aGlzKTsgfQogICAgICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0
aW9uKGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdTdHlsZWRFbGVtZW50Kik7CkBAIC03OCw3
ICs3NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKwogICAgICAgICBIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiBtX2VsZW1lbnRzV2l0aFJl
bGF0aXZlTGVuZ3RoczsKKwogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1N0
eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBTdHJpbmcsIENsYXNzTmFtZSwgY2xh
c3NOYW1lKQogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OlNWR1N0eWxlZExv
Y2F0YWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKLSAgICA6IFNWR0xvY2F0YWJsZSgpCi0gICAgLCBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUs
IGRvYykKLXsKLX0KLQotU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6flNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQoKQorU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6U1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5
MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTEgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNW
R1N0eWxlZExvY2F0YWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRh
YmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQoKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0
eWxlZExvY2F0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgICAgICB2aXJ0dWFs
IFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC00
NSw2ICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGdldFNjcmVlbkNUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVw
ZGF0ZSkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29y
ZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSBtb2RlKSBjb25zdCB7
IHJldHVybiBTVkdMb2NhdGFibGU6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKG1vZGUp
OyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRMb2NhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDE3ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBTVkdUcmFuc2Zvcm1hYmxlKCkK
K1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwg
bV90cmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1B
dHRyKSkKIHsKIH0KIAotU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6On5TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCgpCi17Ci19Ci0KIEFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRh
dGVTdHJhdGVneSkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RN
KHRoaXMsIFNWR0xvY2F0YWJsZTo6TmVhcmVzdFZpZXdwb3J0U2NvcGUsIHN0eWxlVXBkYXRlU3Ry
YXRlZ3kpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMyw2IEBAIGNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKIHB1YmxpYzoKLSAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LSAgICB2aXJ0dWFsIH5TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpOwotICAgIAotICAg
IHZpcnR1YWwgYm9vbCBpc1N0eWxlZFRyYW5zZm9ybWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oU3R5bGVVcGRhdGVTdHJh
dGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGNvbnN0OwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIGdldFNjcmVlbkNUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkg
Y29uc3Q7CkBAIC00OSw4ICs0NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IGdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAg
Ly8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVy
IGFzIHBhdGhzCkBAIC01OSw5ICs1MiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogcHJv
dGVjdGVkOgorICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBTVkdU
cmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAKIHByaXZhdGU6CisgICAgdmly
dHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KwogICAgIC8vIFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+CiAgICAgT3duUHRyPEFmZmluZVRyYW5z
Zm9ybT4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm07CiB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
U3dpdGNoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFu
Z1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQoraW5saW5lIFNW
R1N3aXRjaEVsZW1lbnQ6OlNWR1N3aXRjaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAKQEAgLTQwLDEyICszNywxMSBAQCBQYXNz
UmVmUHRyPFNWR1N3aXRjaEVsZW1lbnQ+IFNWR1N3aXRjaEVsCiAgICAgcmV0dXJuIG5ldyBTVkdT
d2l0Y2hFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHU3dpdGNoRWxlbWVudDo6
flNWR1N3aXRjaEVsZW1lbnQoKQotewotfQotCiBib29sIFNWR1N3aXRjaEVsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6
IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZG8gd2hhdCB0aGUgY29tbWVudCBiZWxvdyBpbXBsaWVz
IGl0IGRvZXMuCisgICAgLy8gSXQgd2lsbCBjcmVhdGUgYSByZW5kZXJlciBmb3IgYW55IHZhbGlk
IFNWRyBlbGVtZW50IGNoaWxkcmVuLCBub3QganVzdCB0aGUgZmlyc3Qgb25lLgorCiAgICAgZm9y
IChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICAgICAgU1ZHRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTd2l0
Y2hFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1N3aXRjaEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHByaXZh
dGU6CiAgICAgICAgIFNWR1N3aXRjaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR1N3aXRjaEVsZW1lbnQoKTsKICAgICAgICAgCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6Omlz
VmFsaWQoKTsgfQogCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgcHJpdmF0ZToKICAgICAgICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R1N3aXRjaEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
Ym9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDExICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHU3ltYm9sRWxlbWVu
dDo6U1ZHU3ltYm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jKQotICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBTVkdM
YW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBT
VkdGaXRUb1ZpZXdCb3goKQoraW5saW5lIFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIApAQCAtNDAsMTAg
KzM3LDYgQEAgUGFzc1JlZlB0cjxTVkdTeW1ib2xFbGVtZW50PiBTVkdTeW1ib2xFbAogICAgIHJl
dHVybiBuZXcgU1ZHU3ltYm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR1N5
bWJvbEVsZW1lbnQ6On5TVkdTeW1ib2xFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdTeW1ib2xF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYg
KFNWR0xhbmdTcGFjZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N5bWJvbEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1N5bWJvbEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHBy
aXZhdGU6CiAgICAgICAgIFNWR1N5bWJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgflNWR1N5bWJvbEVsZW1lbnQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlzaW9u
IDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw5ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHVFJlZkVsZW1l
bnQ6OlNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCi0gICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAg
ICAsIFNWR1VSSVJlZmVyZW5jZSgpCitpbmxpbmUgU1ZHVFJlZkVsZW1lbnQ6OlNWR1RSZWZFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAg
ICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAK
QEAgLTQzLDEwICs0Miw2IEBAIFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RSZWZFbGVt
ZW4KICAgICByZXR1cm4gbmV3IFNWR1RSZWZFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0K
IAotU1ZHVFJlZkVsZW1lbnQ6On5TVkdUUmVmRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQg
PSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCho
cmVmKCkpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1RSZWZFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKKyAgICBwcml2YXRlOgogICAgICAgICBTVkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHVFJlZkVsZW1lbnQoKTsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKQEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihO
b2RlKikgY29uc3Q7CiAKLSAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHVwZGF0ZVJlZmVyZW5j
ZWRUZXh0KCk7CiAKICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RTcGFu
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR1RTcGFuRWxlbWVudDo6U1ZHVFNwYW5FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50KHRhZ05hbWUsIGRvYykKK2lubGluZSBTVkdUU3BhbkVsZW1lbnQ6OlNWR1RTcGFuRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDYgQEAgU1ZHU3RyaW5nTGlzdCogU1ZH
VGVzdHM6OnN5c3RlbUxhbmd1YWdlKAogICAgIHJldHVybiBtX3N5c3RlbUxhbmd1YWdlLmdldCgp
OwogfQogCi1ib29sIFNWR1Rlc3RzOjpoYXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25z
dAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXN0cy5oCShyZXZpc2lvbiA2NjM5
MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDIwICsz
MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTVkdUZXN0cyB7CiAgICAg
cHVibGljOgotICAgICAgICBTVkdUZXN0cygpOwotICAgICAgICB2aXJ0dWFsIH5TVkdUZXN0cygp
OwotCiAgICAgICAgIFNWR1N0cmluZ0xpc3QqIHJlcXVpcmVkRmVhdHVyZXMoKSBjb25zdDsKICAg
ICAgICAgU1ZHU3RyaW5nTGlzdCogcmVxdWlyZWRFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgICAg
IFNWR1N0cmluZ0xpc3QqIHN5c3RlbUxhbmd1YWdlKCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBo
YXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICBTVkdUZXN0cygpOwor
ICAgICAgICB+U1ZHVGVzdHMoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVm
UHRyPFNWR1N0cmluZ0xpc3Q+IG1fZmVhdHVyZXM7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNW
R1N0cmluZ0xpc3Q+IG1fZXh0ZW5zaW9uczsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMCArMzIsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDog
U1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBTVkdUZXN0cygpCi0gICAgLCBT
VkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCitTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdTdHlsZWRFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV90ZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikK
ICAgICAsIG1fbGVuZ3RoQWRqdXN0KExFTkdUSEFESlVTVF9TUEFDSU5HKQogewogfQogCi1TVkdU
ZXh0Q29udGVudEVsZW1lbnQ6On5TVkdUZXh0Q29udGVudEVsZW1lbnQoKQotewotfQotCiB1bnNp
Z25lZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldE51bWJlck9mQ2hhcnMoKSBjb25zdAogewog
ICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDY2MzkxKQorKysg
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDExICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExFTkdUSEFESlVT
VF9TUEFDSU5HQU5ER0xZUEhTICAgPSAyCiAgICAgICAgIH07CiAKLSAgICAgICAgdmlydHVhbCB+
U1ZHVGV4dENvbnRlbnRFbGVtZW50KCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KLSAgICAgICAg
dmlydHVhbCBib29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICAgICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZDaGFycygpIGNvbnN0OwogICAgICAgICBmbG9hdCBn
ZXRDb21wdXRlZFRleHRMZW5ndGgoKSBjb25zdDsKICAgICAgICAgZmxvYXQgZ2V0U3ViU3RyaW5n
TGVuZ3RoKHVuc2lnbmVkIGNoYXJudW0sIHVuc2lnbmVkIG5jaGFycywgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwpAQCAtNTcsMTcgKzUyLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
aW50IGdldENoYXJOdW1BdFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZWxlY3RTdWJTdHJpbmcodW5zaWduZWQgY2hhcm51bSwgdW5zaWduZWQgbmNoYXJz
LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0KICAgICAgICAgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFtZXM6
OnRleHRMZW5ndGhBdHRyLCBTVkdMZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdO
YW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgaW50LCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCkK
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdUZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKK2lubGluZSBTVkdU
ZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwg
ZG9jKQogICAgICwgU1ZHVHJhbnNmb3JtYWJsZSgpCiAgICAgLCBtX3RyYW5zZm9ybShTVkdUcmFu
c2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpKQpAQCAtNDcsMTAgKzQ3
LDYgQEAgUGFzc1JlZlB0cjxTVkdUZXh0RWxlbWVudD4gU1ZHVGV4dEVsZW1lbgogICAgIHJldHVy
biBuZXcgU1ZHVGV4dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwogfQogCi1TVkdUZXh0RWxl
bWVudDo6flNWR1RleHRFbGVtZW50KCkKLXsKLX0KLQogdm9pZCBTVkdUZXh0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChTVkdUcmFuc2Zv
cm1hYmxlOjppc0tub3duQXR0cmlidXRlKGF0dHItPm5hbWUoKSkpIHsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dEVs
ZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCB+
U1ZHVGV4dEVsZW1lbnQoKTsKLQogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RW
aWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0
aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC00NCw2ICs0Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1RleHRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAgICAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKK2lubGlu
ZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KExlbmd0aE1vZGVP
dGhlcikKICAgICAsIG1fbWV0aG9kKFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOKQogICAg
ICwgbV9zcGFjaW5nKFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCkKQEAgLTQ4LDEwICs0
Nyw2IEBAIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50PiBTVkdUZXh0UGEKICAgICByZXR1
cm4gbmV3IFNWR1RleHRQYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CiB9CiAKLVNWR1Rl
eHRQYXRoRWxlbWVudDo6flNWR1RleHRQYXRoRWxlbWVudCgpCi17Ci19Ci0KIHZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBh
dGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAg
ICAgICAgdmlydHVhbCB+U1ZHVGV4dFBhdGhFbGVtZW50KCk7CiAgCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgU1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlz
aW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdUZXh0
Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQorU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBtX3goU1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp4QXR0
cikpCiAgICAgLCBtX3koU1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp5QXR0cikpCiAg
ICAgLCBtX2R4KFNWR0xlbmd0aExpc3Q6OmNyZWF0ZShTVkdOYW1lczo6ZHhBdHRyKSkKQEAgLTQy
LDEwICs0Miw2IEBAIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGkKIHsK
IH0KIAotU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6flNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQoKQotewotfQotCiB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp4QXR0cikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNiArMjksMTMgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZH
VGV4dENvbnRlbnRFbGVtZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQoKTsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQogICAgICAgICBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RpdGxl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR1RpdGxlRWxlbWVudDo6U1ZHVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCi0gICAgOiBTVkdTdHlsZWRFbGVtZW50KHRh
Z05hbWUsIGRvYykKK2lubGluZSBTVkdUaXRsZUVsZW1lbnQ6OlNWR1RpdGxlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTVkdT
dHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bS5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTAgKzUyLDYgQEAgU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zv
cm0oY29uc3QgQWZmaW5lVAogewogfQogCi1TVkdUcmFuc2Zvcm06On5TVkdUcmFuc2Zvcm0oKQot
ewotfQotCiBib29sIFNWR1RyYW5zZm9ybTo6aXNWYWxpZCgpCiB7CiAgICAgcmV0dXJuIChtX3R5
cGUgIT0gU1ZHX1RSQU5TRk9STV9VTktOT1dOKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw4ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHVHJhbnNmb3Jt
KCk7CiAgICAgICAgIFNWR1RyYW5zZm9ybShTVkdUcmFuc2Zvcm1UeXBlKTsKICAgICAgICAgZXhw
bGljaXQgU1ZHVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgICAgICB2aXJ0
dWFsIH5TVkdUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAgICAgIAorCiAgICAgICAgIFNWR1RyYW5z
Zm9ybVR5cGUgdHlwZSgpIGNvbnN0OwogCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXgo
KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZpc2lvbiA2NjM5MSkK
KysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNSArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1RyYW5zZm9ybWFibGU6
OlNWR1RyYW5zZm9ybWFibGUoKQotICAgIDogU1ZHTG9jYXRhYmxlKCkKLXsKLX0KLQotU1ZHVHJh
bnNmb3JtYWJsZTo6flNWR1RyYW5zZm9ybWFibGUoKQotewotfQotCiBzdGF0aWMgaW50IHBhcnNl
VHJhbnNmb3JtUGFyYW1MaXN0KGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hhciogZW5kLCBm
bG9hdCogdmFsdWVzLCBpbnQgcmVxdWlyZWQsIGludCBvcHRpb25hbCkKIHsKICAgICBpbnQgb3B0
aW9uYWxQYXJhbXMgPSAwLCByZXF1aXJlZFBhcmFtcyA9IDA7CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
YWJsZS5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsNiBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwog
CiBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDogdmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsK
IHB1YmxpYzoKLSAgICBTVkdUcmFuc2Zvcm1hYmxlKCk7Ci0gICAgdmlydHVhbCB+U1ZHVHJhbnNm
b3JtYWJsZSgpOwotCiAgICAgZW51bSBUcmFuc2Zvcm1QYXJzaW5nTW9kZSB7CiAgICAgICAgIENs
ZWFyTGlzdCwKICAgICAgICAgRG9Ob3RDbGVhckxpc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNl
LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNWR1VSSVJlZmVyZW5jZTo6U1ZHVVJJUmVmZXJlbmNlKCkKLXsKLX0KLQotU1ZHVVJJUmVm
ZXJlbmNlOjp+U1ZHVVJJUmVmZXJlbmNlKCkKLXsKLX0KLQogYm9vbCBTVkdVUklSZWZlcmVuY2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+
bmFtZSgpLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpKSB7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdVUklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBTVkdVUklSZWZlcmVuY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHVVJJ
UmVmZXJlbmNlKCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR1VSSVJlZmVyZW5jZSgpOworICAgICAg
ICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKSB7IH0KIAogICAgICAgICBib29sIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDEyICs1NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHVXNlRWxlbWVu
dDo6U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jKQotICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQot
ICAgICwgU1ZHVGVzdHMoKQotICAgICwgU1ZHTGFuZ1NwYWNlKCkKLSAgICAsIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKK2lubGluZSBTVkdV
c2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKICAgICAsIG1feShM
ZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgpCkBAIC03NSwx
MCArNzEsNiBAQCBQYXNzUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6CiAgICAg
cmV0dXJuIG5ldyBTVkdVc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKIH0KIAotU1ZHVXNl
RWxlbWVudDo6flNWR1VzZUVsZW1lbnQoKQotewotfQotCiBTVkdFbGVtZW50SW5zdGFuY2UqIFNW
R1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gZWxlbWVudCBpbnN0YW5jZSB0cmVlLCBmb3JjZSBpbW1lZGlhdGUgU1ZHRWxlbWVudEluc3Rh
bmNlIHRyZWUKQEAgLTg1Myw3ICs4NDUsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5
bWJvbEVsZW1lbnRzCiAgICAgICAgIC8vIGhlaWdodCBhcmUgcHJvdmlkZWQgb24gdGhlICd1c2Un
IGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcyB3aWxsIGJlIHRyYW5zZmVycmVkIHRvCiAg
ICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29y
IGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwgdGhlIGdlbmVyYXRlZAogICAgICAgICAvLyAnc3Zn
JyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZvciB0aGVzZSBhdHRyaWJ1dGVzLgot
ICAgICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVudCA9IG5ldyBTVkdTVkdFbGVt
ZW50KFNWR05hbWVzOjpzdmdUYWcsIGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8U1ZHU1ZH
RWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShTVkdOYW1lczo6c3Zn
VGFnLCBkb2N1bWVudCgpKTsKIAogICAgICAgICAvLyBUcmFuc2ZlciBhbGwgYXR0cmlidXRlcyBm
cm9tIDxzeW1ib2w+IHRvIHRoZSBuZXcgPHN2Zz4gZWxlbWVudAogICAgICAgICBzdmdFbGVtZW50
LT5hdHRyaWJ1dGVzKCktPnNldEF0dHJpYnV0ZXMoKmVsZW1lbnQtPmF0dHJpYnV0ZXMoKSk7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdVc2VFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICAgICAg
dmlydHVhbCB+U1ZHVXNlRWxlbWVudCgpOwotCiAgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSog
aW5zdGFuY2VSb290KCkgY29uc3Q7CiAgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogYW5pbWF0
ZWRJbnN0YW5jZVJvb3QoKSBjb25zdDsKICAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0
YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KE5vZGUqKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxl
bWVudC5jcHAJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQotICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2MpCi0gICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIFNWR0Zp
dFRvVmlld0JveCgpCi0gICAgLCBTVkdab29tQW5kUGFuKCkKK2lubGluZSBTVkdWaWV3RWxlbWVu
dDo6U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
IH0KIApAQCAtNDUsMTAgKzQyLDYgQEAgUGFzc1JlZlB0cjxTVkdWaWV3RWxlbWVudD4gU1ZHVmll
d0VsZW1lbgogICAgIHJldHVybiBuZXcgU1ZHVmlld0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
OwogfQogCi1TVkdWaWV3RWxlbWVudDo6flNWR1ZpZXdFbGVtZW50KCkKLXsKLX0KLQogU1ZHU3Ry
aW5nTGlzdCogU1ZHVmlld0VsZW1lbnQ6OnZpZXdUYXJnZXQoKSBjb25zdAogewogICAgIGlmICgh
bV92aWV3VGFyZ2V0KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHVmlld0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKIAotICAgICAgICB2aXJ0dWFsIH5TVkdWaWV3RWxlbWVudCgpOwotCiAgICAgICAg
IFNWR1N0cmluZ0xpc3QqIHZpZXdUYXJnZXQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdT
cGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDExIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyhjb25zdCBTVkdTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKLSAgICA6IFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBTVkdab29tQW5k
UGFuKCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAgOiBtX2Nv
bnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogICAgICwgbV90cmFuc2Zvcm0oU1ZHVHJhbnNm
b3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKIHsKIH0KIAotU1ZHVmll
d1NwZWM6On5TVkdWaWV3U3BlYygpCi17Ci19Ci0KIHZvaWQgU1ZHVmlld1NwZWM6OnNldFRyYW5z
Zm9ybShjb25zdCBTdHJpbmcmIHRyYW5zZm9ybSkKIHsKICAgICBTVkdUcmFuc2Zvcm1hYmxlOjpw
YXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShtX3RyYW5zZm9ybS5nZXQoKSwgdHJhbnNmb3JtKTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuaAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdWaWV3U3Bl
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdWaWV3U3BlYyhjb25zdCBTVkdTVkdFbGVtZW50Kik7Ci0gICAgICAgIHZp
cnR1YWwgflNWR1ZpZXdTcGVjKCk7CiAKICAgICAgICAgYm9vbCBwYXJzZVZpZXdTcGVjKGNvbnN0
IFN0cmluZyYpOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkocmV2aXNpb24gNjYzOTEpCisr
KyBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMjAg
KzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdab29tQW5kUGFuOjpTVkdab29t
QW5kUGFuKCkKLSAgICA6IG1fem9vbUFuZFBhbihTVkdfWk9PTUFORFBBTl9NQUdOSUZZKQotewot
fQotCi1TVkdab29tQW5kUGFuOjp+U1ZHWm9vbUFuZFBhbigpCi17Ci19Ci0KLXVuc2lnbmVkIHNo
b3J0IFNWR1pvb21BbmRQYW46Onpvb21BbmRQYW4oKSBjb25zdAotewotICAgIHJldHVybiBtX3pv
b21BbmRQYW47Ci19Ci0KIHZvaWQgU1ZHWm9vbUFuZFBhbjo6c2V0Wm9vbUFuZFBhbih1bnNpZ25l
ZCBzaG9ydCB6b29tQW5kUGFuKQogewogICAgIG1fem9vbUFuZFBhbiA9IHpvb21BbmRQYW47Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHWm9vbUFuZFBhbi5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1pv
b21BbmRQYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsOCBAQAogI2RlZmluZSBTVkda
b29tQW5kUGFuX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKworI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNywxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgU1ZHX1pPT01BTkRQQU5fTUFHTklGWSA9IDIKICAgICAgICAgfTsKIAotICAgICAgICBTVkda
b29tQW5kUGFuKCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR1pvb21BbmRQYW4oKTsKKyAgICAgICAg
U1ZHWm9vbUFuZFBhbigpIDogbV96b29tQW5kUGFuKFNWR19aT09NQU5EUEFOX01BR05JRlkpIHsg
fQorICAgICAgICB2aXJ0dWFsIH5TVkdab29tQW5kUGFuKCkgeyB9CiAKLSAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgem9vbUFuZFBhbigpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBzaG9ydCB6b29t
QW5kUGFuKCkgY29uc3QgeyByZXR1cm4gbV96b29tQW5kUGFuOyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4pOwogCiAgICAgICAg
IGJvb2wgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CkBAIC01NSw0ICs1Niw1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCisKICNlbmRpZiAvLyBTVkdab29tQW5kUGFuX2gKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1pvb21FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHWm9vbUV2
ZW50LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsNiBAQCBTVkdab29tRXZlbnQ6OlNWR1pvb21F
dmVudCgpCiB7CiB9CiAKLVNWR1pvb21FdmVudDo6flNWR1pvb21FdmVudCgpCi17Ci19Ci0KIEZs
b2F0UmVjdCBTVkdab29tRXZlbnQ6Onpvb21SZWN0U2NyZWVuKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV96b29tUmVjdFNjcmVlbjsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCShyZXZpc2lvbiA2NjM5MSkK
KysrIFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdab29tRXZlbnQgOiBwdWJs
aWMgVUlFdmVudCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkda
b29tRXZlbnQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdab29tRXZlbnQpOyB9
Ci0gICAgICAgIHZpcnR1YWwgflNWR1pvb21FdmVudCgpOwogCiAgICAgICAgIC8vICdTVkdab29t
RXZlbnQnIGZ1bmN0aW9ucwogICAgICAgICBGbG9hdFJlY3Qgem9vbVJlY3RTY3JlZW4oKSBjb25z
dDsKQEAgLTQ2LDExICs0NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRmxv
YXRQb2ludCBuZXdUcmFuc2xhdGUoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
Vkdab29tRXZlbnQoKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1pvb21FdmVu
dCgpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NWR1pvb21FdmVudCgpIGNvbnN0OworCiAg
ICAgICAgIGZsb2F0IG1fbmV3U2NhbGU7CiAgICAgICAgIGZsb2F0IG1fcHJldmlvdXNTY2FsZTsK
ICAgICAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>